[ self::JQUERY, self::JQUERY_UI_CSS, 'jquery-ui.custom.css' ], self::JQUERY_UI_DATETIME => [ self::JQUERY_UI, 'jquery-ui-timepicker-addon.css' ], self::FACEBOX => [ 'facebox.css', self::JQUERY ], self::JQUERY_TIPTIP => [ 'tipTip.css', self::JQUERY ], self::JQUERY_BUBBLEPOPUP => [ 'jquery.bubblepopup.css', self::JQUERY ], self::JQUERY_MOB => [ 'jquery.mobile.min.css', 'jquery-1.8.2.min.js' ], ]; private static $LF = "\n"; /** * Ensures that there are no frames for this window * @return string the javascrip[t to ensure that there is no frame */ public static function noFrames() { return self::javaScript ( 'if (parent.frames.length > 0) parent.location.href = self.document.location;' ); } /** * Sets the linefeed on or off. During development it is good to have it on. * @param boolean $flag true means want line feeds */ public static function setLineFeed ( $flag ) { self::$LF = ( $flag ) ? "\n" : ''; } /** Adds the HTML Script tags to the provided javascript string and returns * the resulting HTML * @param $str The javascript string * @returns var The resulting HTML * @public */ static function javaScript ( $str ) { return Tag::hTag ( 'script', [ 'type' => 'text/javascript', 'language' => 'JavaScript' ] ) . self::$LF . $str . self::$LF . Tag::_hTag ( 'script' ) . self::$LF; } /** * Creates CSS for the passed string * @param type $str the CSS data * @return type The resulting HTML */ static function css ( $str ) { return Tag::hTag ( 'style', [ 'type' => 'text/css' ] ) . self::$LF . $str . self::$LF . Tag::_hTag ( 'style' ) . self::$LF; } /** * Returns a javascript library to load up, and ensures that it is only loaded once * @param string $lib the library to load up * @param boolean force If set to true, will ignore previous included libraries * @return string html needed to include this javascript library */ private static $displayedLibraries = []; static function library ( $lib, $force=false ) { if ( ! $force && isset ( self::$displayedLibraries[$lib] ) ) return ''; self::$displayedLibraries[$lib] = true; if ( ! preg_match ( '/^http(s)?:\/\/.*$/i', $lib ) ) { $lib = Cfg::get ( 'js_url' ) . '/' . $lib; } if ( preg_match ( '/^.*\.js$/i', $lib ) || preg_match ( '/^.*\jsapi$/i', $lib ) ) { return Tag::hTag ( 'script', [ 'type' => 'text/javascript', 'src' => $lib ] ) . Tag::_hTag ( 'script' ) . self::$LF; } else if ( preg_match ( '/^.*\.css$/i', $lib ) ) { $attribs = [ 'type' => 'text/css', 'href' => $lib, 'rel' => 'stylesheet' ]; if ( preg_match ( '/^.*\.print\.css$/i', $lib ) ) $attribs['media'] = 'print'; return Tag::hTag ( 'link', $attribs ) . Tag::_hTag ( 'link' ) . self::$LF; } else { return ''; } } static function libraryWithDependancies ( $lib ) { $html = ''; if ( isset ( self::$JS_DEPEND[$lib] ) ) { foreach ( self::$JS_DEPEND[$lib] as $dLib ) { $html .= self::libraryWithDependancies ( $dLib ); } } $html .= self::library ( $lib ); return $html; } /** * Encodes the provided Javascript string into ASCII * @param $str The javascript string * @returns var The Encoded Javascript * @public */ public static function javaScriptEncode ( $s ) { $str = ''; $cnt = strlen ( $s ); for ( $i=0; $i<$cnt; $i++ ) { if ( $i > 0 ) $str .= ","; $str .= ord ( substr ( $s, $i, $i+1 ) ); } return self::javascript ( 'document.write ( String.fromCharCode ( ' . $str . ' ) );' ); } /** * Creates and returns a Javascript block to display ( alert ) the * provided Error msg * @param $str The error message to display * @returns var The resulting HTML * @public */ public static function showError ( $str ) { return self::javascript ( "alert ( '$str' )" ); } /** * Creates and returns a Javascript block to display ( alert ) the * provided Error msg and return to the previous page * @param $str The error message to display * @returns var The resulting HTML * @public */ public static function showErrorBack ( $str ) { return self::javascript ( "alert ( '$str' ); window.history.back ( );" ); } }