PHP Classes

File: vendor/jackbooted/html/JS.php

Recommend this page to a friend!
  Classes of Brett Dutton   JackBooted PHP Framework   vendor/jackbooted/html/JS.php   Download  
File: vendor/jackbooted/html/JS.php
Role: Class source
Content type: text/plain
Description: Class source
Class: JackBooted PHP Framework
Web application framework using simplified MVC
Author: By
Last change:
Date: 8 years ago
Size: 6,514 bytes
 

Contents

Class file image Download
<?php
namespace Jackbooted\Html;

use \
Jackbooted\Config\Cfg;
/** Javascript.php - methods for generating Javascript related html
 *
 * @copyright Confidential and copyright (c) 2016 Jackbooted Software. All rights reserved.
 *
 * Written by Brett Dutton of Jackbooted Software
 * brett at brettdutton dot com
 *
 * This software is written and distributed under the GNU General Public
 * License which means that its source code is freely-distributed and
 * available to the general public.
 *
 */

class JS extends \Jackbooted\Util\JB {
    const
JQUERY = 'jquery.min.js';
    const
JQUERY_MOB = 'jquery.mobile.min.js';
    const
JQUERY_UI = 'jquery-ui.min.js';
    const
JQUERY_UI_DATETIME = 'jquery-ui-timepicker-addon.js';
    const
JQUERY_UI_CSS = 'jquery-ui.min.css';
    const
PHPLIVEX = 'phplivex.js';
    const
FACEBOX = 'facebox.js';
    const
JQUERY_TIPTIP = 'jquery.tipTip.minified.js';
    const
JQUERY_BUBBLEPOPUP = 'jquery.bubblepopup.min.js';

    private static
$JS_DEPEND = [ self::JQUERY_UI => [ 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 ( );" );
    }
}