Source for file function.pnajaxheader.php
Documentation is available at function.pnajaxheader.php
* Zikula Application Framework
* @copyright (c) 2004, Zikula Development Team
* @link http://www.zikula.org
* @version $Id: function.pnajaxheader.php 24342 2008-06-06 12:03:14Z markwest $
* @license GNU/GPL - http://www.gnu.org/copyleft/gpl.html
* @package Zikula_Template_Plugins
* Smarty function to insert the common ajax javascript files (prototype, scriptaculous, behaviour) in the page header using page vars
* All other jsvascript files have to added manually on demand using the PageUtil::addVar plugin
* - modname: define the module name in which to look for the base javascript file for the module (ajax.js), default to top level module
* when used in a block template, make sure this parameter is set correctly!
* - filename: (optional) filename to load (default ajax.js)
* - nobehaviour: (optional) does not include bahaviour.js if set
* - noscriptaculous: (optional) does not include scriptaculous.js if set
* - validation: (optional) includes validation.js if set
* - fabtabulous: (optional) includes fabtabulous.js if set
* - builder: (optional) includes builder.js if set. Only effective if noscriptaculous is set
* - effects: (optional) includes effects.js if set. Only effective if noscriptaculous is set
* - dragdrop: (optional) includes dragdrop.js if set. Only effective if noscriptaculous is set
* - controls: (optional) includes controls.js if set. Only effective if noscriptaculous is set
* - slider: (optional) includes slider.js if set. Only effective if noscriptaculous is set
* - lightbox: (optional) includes lightbox.js if set (loads scriptaculous effects if noscriptaculous is set)
* - assign: (optional) creates script tags and assign them if set
* If nobehaviour is not set (= should be included) then noscriptaculous will
* be ignored because of dependencies
* <!--[pnajaxheader modname=Example filename=example.js]-->
* <!--[pnajaxheader modname=Example nobehaviour=1]-->
* @author Frank Schummertz
* @param array $params All attributes passed to this function from the template
* @param object &$smarty Reference to the Smarty object
// use supplied modname or top level module
// define the default filename
$filename = (isset ($filename)) ? $filename : 'ajax.js';
$behaviour = (isset ($nobehaviour)) ? false : true;
$scriptaculous = (isset ($noscriptaculous)) ? false : true;
$validation = (isset ($validation)) ? true : false;
$fabtabulous = (isset ($fabtabulous)) ? true : false;
$lightbox = (isset ($lightbox)) ? true : false;
// script.aculo.us components
$builder = (isset ($builder)) ? true : false;
$effects = (isset ($effects)) ? true : false;
$dragdrop = (isset ($dragdrop)) ? true : false;
$controls = (isset ($controls)) ? true : false;
$slider = (isset ($slider)) ? true : false;
// create an empty return
$scripts = array('javascript/ajax/prototype.js', 'javascript/ajax/pnajax.js');
$scripts[] = 'javascript/ajax/scriptaculous.js';
$scripts[] = 'javascript/ajax/behaviour.js';
} else if ($scriptaculous == true) {
$scripts[] = 'javascript/ajax/scriptaculous.js';
$scripts[] = 'javascript/ajax/validation.js';
$scripts[] = 'javascript/ajax/fabtabulous.js';
// script.aculo.us components
if (!$scriptaculous && $builder) {
$scripts[] = 'javascript/ajax/scriptaculous.js?load=builder';
if (!$scriptaculous && ($effects || $lightbox)) {
$scripts[] = 'javascript/ajax/scriptaculous.js?load=effects';
if (!$scriptaculous && $dragdrop) {
$scripts[] = 'javascript/ajax/scriptaculous.js?load=dragdrop';
if (!$scriptaculous && $controls) {
$scripts[] = 'javascript/ajax/scriptaculous.js?load=controls';
if (!$scriptaculous && $slider) {
$scripts[] = 'javascript/ajax/scriptaculous.js?load=slider';
// lightbox needs at least the scriptaculous effects components....
$scripts[] = 'javascript/ajax/lightbox.js';
$return = '<link rel="stylesheet" href="javascript/ajax/lightbox/lightbox.css" type="text/css" media="screen" />';
PageUtil::addVar('stylesheet', 'javascript/ajax/lightbox/lightbox.css');
if (($modinfo['type'] == 3 && file_exists($file = "system/$osdirectory/pnjavascript/$osfilename")) ||
($modinfo['type'] == 2 && file_exists($file = "modules/$osdirectory/pnjavascript/$osfilename"))) {
// create script tags now
foreach($scripts as $script) {
$return .= '<script type="text/javascript" src="' . $script . '"></script' . "\n";
$smarty->assign($assign, $return);
|