From c010b47c80d1d65d0e0ac6bbfa092620bf4d32d6 Mon Sep 17 00:00:00 2001 From: Lars Kneschke Date: Sat, 30 Aug 2003 08:47:01 +0000 Subject: [PATCH] add the file including the javascript class --- phpgwapi/inc/class.javascript.inc.php | 211 ++++++++++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 phpgwapi/inc/class.javascript.inc.php diff --git a/phpgwapi/inc/class.javascript.inc.php b/phpgwapi/inc/class.javascript.inc.php new file mode 100644 index 0000000000..cf2f3842e1 --- /dev/null +++ b/phpgwapi/inc/class.javascript.inc.php @@ -0,0 +1,211 @@ + + * if(!@is_object($GLOBALS['phpgw']->js)) + * { + * $GLOBALS['phpgw']->js = CreateObject('phpgwapi.javascript'); + * } + * + * + * This way a theme can see if this is a defined object and include the data, + * while the is_object() wrapper prevents whiping out existing data held in + * this instance variables, primarily the $files variable. + * + * Note: The package arguement is the subdirectory of js - all js should live in subdirectories + * + * @package phpgwapi + * @subpackage sessions + * @abstract + * @author Dave Hall + * @copyright © 2003 Free Software Foundation + * @license GPL + * @uses template + * @link http://docs.phpgroupware.org/wiki/classJavaScript + */ + class javascript + { + /** + * @var array elements to be used for the on(Un)Load attributes of the body tag + */ + var $body; + + /** + * @var array list of validated files to be included in the head section of a page + */ + var $files; + + /** + * @var object used for holding an instance of the Template class + */ + var $t; + + /** + * Constructor + * + * Initialize the instance variables + */ + function javascript() + { + $this->t = CreateObject('phpgwapi.Template', 'phpgwapi'); + //not currently used, but will be soon - I hope :) + } + + + /** + * Returns the javascript required for displaying a popup message box + * + * @param string $msg the message to be displayed to user + * @returns string the javascript to be used for displaying the message + */ + function get_alert($msg) + { + return 'return alert("'.lang($msg).'");'; + } + + /** + * Adds on(Un)Load= attributes to the body tag of a page + * + * @returns string the attributes to be used + */ + function get_body_attribs() + { + $js = ($this->body['onLoad'] ? 'onLoad="' . $this->body['onLoad'] . '"' : ''); + $js .= ($this->body['onUnload'] ? 'onUnLoad="' . $this->body['onUnload'] . '"': ''); + return $js; + } + + /** + * Returns the javascript required for displaying a confirmation message box + * + * @param string $msg the message to be displayed to user + * @returns string the javascript to be used for displaying the message + */ + function get_confirm($msg) + { + return 'return confirm("'.lang($msg).'");'; + } + + /** + * Used for generating the list of external js files to be included in the head of a page + * + * NOTE: This method should only be called by the template class. + * The validation is done when the file is added so we don't have to worry now + * + * @returns string the html needed for importing the js into a page + */ + function get_script_links() + { + $links = ''; + if(!empty($this->files) && is_array($this->files)) + { + $links = "\n"; + foreach($this->files as $app => $packages) + { + if(!empty($packages) && is_array($packages)) + { + foreach($packages as $pkg => $files) + { + if(!empty($files) && is_array($files)) + { + foreach($files as $file) + { + $links .= '\n"; + } + } + } + } + } + } + return $links; + } + + /** + * Sets an onLoad action for a page + * + * @param string javascript to be used + */ + function set_onload($code) + { + $this->body['onLoad'] = $code; + } + + /** + * Sets an onUnload action for a page + * + * @param string javascript to be used + */ + function set_onunload($code) + { + $this->body['onUnload'] = $code; + } + + /** + * DO NOT USE - NOT SURE IF I AM GOING TO USE IT - ALSO IT NEEDS SOME CHANGES!!!! + * Used for removing a file or package of files to be included in the head section of a page + * + * @param string $app application to use + * @param string $package the name of the package to be removed + * @param string $file the name of a file in the package to be removed - if ommitted package is removed + */ + function unset_script_link($app, $package, $file=False) + { + /* THIS DOES NOTHING ATM :P + if($file !== False) + { + unset($this->files[$app][$package][$file]); + } + else + { + unset($this->files[$app][$package]); + } + */ + } + + /** + * Checks to make sure a valid package and file name is provided + * + * @param string $package package to be included + * @param string $file file to be included - no ".js" on the end + * @param string $app application directory to search - default = phpgwapi + * @returns bool was the file found? + */ + function validate_file($package, $file, $app='phpgwapi') + { + if(is_readable(PHPGW_INCLUDE_ROOT . "/$app/js/" . $package .'/'. $file . '.js')) + { + $this->files[$app][$package][$file] = $file; + return True; + } + elseif($app != 'phpgwapi') + { + if(is_readable(PHPGW_INCLUDE_ROOT . '/phpgwapi/js/' . $package .'/'. $file . '.js')) + { + $this->files['phpgwapi'][$package][$file] = $file; + return True; + } + return False; + } + } + } +?>