',
'
',
'
'
);
if(preg_match($patterns[0], $text)>0)
{
GPCCore::addHeaderJS('gpc.markup.tabs', GPC_PATH.'js/markup.tabs.js', array('jquery'));
GPCCore::addHeaderCSS('gpc.markup.tabs', GPC_PATH.'css/gpcTabs.css');
return(preg_replace($patterns, $replacements, $text));
}
return($text);
}
/**
* analyze and replace markups by their value, according to $conf parameted
* @param String $text: text to analyze
* @return String: analyzed text
*/
static public function applyMarkups($text)
{
global $conf;
if(isset($conf['gpc.markup.form']) && $conf['gpc.markup.form'])
{
$text=GPCCore::FormMailToHTML($text);
}
if(isset($conf['gpc.markup.tabs']) && $conf['gpc.markup.tabs'])
{
$text=GPCCore::TabsToHTML($text);
}
if(isset($conf['gpc.markup.var']) && $conf['gpc.markup.var'])
{
$text=GPCCore::VarToHTML($text);
}
if(isset($conf['gpc.markup.bb']) && $conf['gpc.markup.bb'])
{
$text=GPCCore::BBtoHTML($text);
}
return($text);
}
/**
* used to add a js or css directly in the header
* use 'raw' type to add any raw data in the header
*
* @param String $id : a unique id for the file
* @param String $file : the css file
* @param String $order: priority
*/
static public function addHeaderContent($type, $content)
{
global $template;
$null=null;
if(defined('AJAX_CALL')) return(false); // not needed for an ajax call
switch($type)
{
case 'css':
$template->block_html_style(null, $content, $null, $null);
break;
case 'js':
$template->block_html_head(null, '', $null, $null);
break;
case 'raw':
$template->block_html_head(null, $content);
break;
}
}
/**
* used to add a css file in the header
*
* @param String $id : a unique id for the file
* @param String $file : the css file
* @param String $order: priority
*/
static public function addHeaderCSS($id, $file, $order=0)
{
global $template;
if(defined('AJAX_CALL')) return(false); // no CSS needed for an ajax call
if(!array_key_exists($id, self::$headerItems['css']) and file_exists($file))
{
self::$headerItems['css'][$id]=$file;
$template->func_combine_css(array('path'=>$file, 'order'=>$order), $template->smarty);
}
}
/**
* used to add a js file in the header
*
* @param String $id : a unique id for the file
* @param String $file : the js file
* @param Array $require : list of required files
*/
static public function addHeaderJS($id, $file, $require=array())
{
global $template;
if(defined('AJAX_CALL')) return(false); // no JS needed for an ajax call
if(!array_key_exists($id, self::$headerItems['js']) and file_exists($file))
{
self::$headerItems['js'][$id]=$file;
$template->scriptLoader->add($id, 'header', $require, $file, 0);
}
}
/**
* add a ui component ; css & js dependencies are managed
*
* @param Array $list : possibles values are
* - categorySelector
* - dynamicTable
* - inputCheckbox
* - inputColorPicker
* - inputColorsFB
* - inputConsole
* - inputDate
* - inputDotArea
* - inputFilterBox
* - inputList
* - inputNum
* - inputPosition
* - inputRadio
* - inputSortBox
* - inputStatusBar
* - inputTag
* - inputText
*/
static public function addUI($list)
{
global $template, $lang_info;
if(is_string($list)) $list=explode(',', $list);
if(!is_array($list)) return(false);
if(defined('IN_ADMIN'))
{
$themeFile=GPC_PATH.'css/%s_'.$template->get_themeconf('name').'.css';
}
else
{
$themeFile='themes/'.$template->get_themeconf('name').'/css/GPC%s.css';
}
foreach($list as $ui)
{
switch($ui)
{
case 'gpcCSS':
$fileName='./plugins/'.basename(dirname(dirname(__FILE__))).'/css/gpc';
self::addHeaderCSS('gpc.css', $fileName.'.css', 10);
self::addHeaderCSS('gpc.cssT', $fileName.'_'.$template->get_themeconf('name').'.css', 15);
break;
case 'canvasDraw.graph':
self::addHeaderCSS('gpc.canvasDraw', GPC_PATH.'css/canvasDraw.css');
self::addHeaderCSS('gpc.canvasDrawT', sprintf($themeFile, 'canvasDraw'));
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('jquery.ui.mouse', 'themes/default/js/ui/jquery.ui.mouse.js', array('jquery.ui.widget'));
self::addHeaderJS('gpc.canvasDraw.commonClasses', GPC_PATH.'js/CanvasDraw.CommonClasses.js', array('jquery.ui.widget'));
self::addHeaderJS('gpc.canvasDraw.graphClasses', GPC_PATH.'js/CanvasDraw.GraphClasses.js', array('gpc.canvasDraw.commonClasses'));
self::addHeaderJS('gpc.canvasDraw.drawing', GPC_PATH.'js/CanvasDraw.Drawing.js', array('gpc.canvasDraw.graphClasses'));
self::addHeaderJS('gpc.canvasDraw', GPC_PATH.'js/canvasDraw.js', array('gpc.canvasDraw.drawing'));
self::addHeaderJS('gpc.canvasDraw.drawingGraph', GPC_PATH.'js/canvasDraw.ui.drawingGraph.js', array('gpc.canvasDraw'));
break;
case 'categorySelector':
self::addHeaderCSS('gpc.categorySelector', GPC_PATH.'css/categorySelector.css');
self::addHeaderCSS('gpc.categorySelectorT', sprintf($themeFile, 'categorySelector'));
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('jquery.ui.mouse', 'themes/default/js/ui/jquery.ui.mouse.js', array('jquery.ui.widget'));
self::addHeaderJS('gpc.categorySelector', GPC_PATH.'js/ui.categorySelector.js', array('jquery.ui.widget'));
break;
case 'inputCheckbox':
self::addHeaderCSS('gpc.inputCheckbox', GPC_PATH.'css/inputCheckbox.css');
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('gpc.inputCheckbox', GPC_PATH.'js/ui.inputCheckbox.js', array('jquery.ui'));
break;
case 'inputColorPicker':
self::addHeaderCSS('gpc.inputText', GPC_PATH.'css/inputText.css');
self::addHeaderCSS('gpc.inputNum', GPC_PATH.'css/inputNum.css');
self::addHeaderCSS('gpc.inputColorsFB', GPC_PATH.'css/inputColorsFB.css');
self::addHeaderCSS('gpc.inputDotArea', GPC_PATH.'css/inputDotArea.css');
self::addHeaderCSS('gpc.inputColorPicker', GPC_PATH.'css/inputColorPicker.css');
self::addHeaderCSS('gpc.inputTextT', sprintf($themeFile, 'inputText'));
self::addHeaderCSS('gpc.inputNumT', sprintf($themeFile, 'inputNum'));
self::addHeaderCSS('gpc.inputColorsFBT', sprintf($themeFile, 'inputColorsFB'));
self::addHeaderCSS('gpc.inputDotAreaT', sprintf($themeFile, 'inputDotArea'));
self::addHeaderCSS('gpc.inputColorPickerT', sprintf($themeFile, 'inputColorPicker'));
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('jquery.ui.mouse', 'themes/default/js/ui/jquery.ui.mouse.js', array('jquery.ui.widget'));
self::addHeaderJS('jquery.ui.position', 'themes/default/js/ui/jquery.ui.position.js', array('jquery.ui.widget'));
self::addHeaderJS('jquery.ui.draggable', 'themes/default/js/ui/jquery.ui.draggable.js', array('jquery.ui.widget'));
self::addHeaderJS('jquery.ui.dialog', 'themes/default/js/ui/jquery.ui.dialog.js', array('jquery.ui.widget'));
self::addHeaderJS('jquery.ui.slider', 'themes/default/js/ui/jquery.ui.slider.js', array('jquery.ui.widget'));
self::addHeaderJS('gpc.inputText', GPC_PATH.'js/ui.inputText.js', array('jquery.ui.widget'));
self::addHeaderJS('gpc.inputNum', GPC_PATH.'js/ui.inputNum.js', array('jquery.ui.widget'));
self::addHeaderJS('gpc.inputColorsFB', GPC_PATH.'js/ui.inputColorsFB.js', array('jquery.ui.widget'));
self::addHeaderJS('gpc.inputDotArea', GPC_PATH.'js/ui.inputDotArea.js', array('jquery.ui.widget'));
self::addHeaderJS('gpc.inputColorPicker', GPC_PATH.'js/ui.inputColorPicker.js', array('jquery.ui.slider','gpc.inputText','gpc.inputNum','gpc.inputColorsFB','gpc.inputDotArea'));
break;
case 'inputColorsFB':
self::addHeaderCSS('gpc.inputColorsFB', GPC_PATH.'css/inputColorsFB.css');
self::addHeaderCSS('gpc.inputColorsFBT', sprintf($themeFile, 'inputColorsFB'));
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('gpc.inputColorsFB', GPC_PATH.'js/ui.inputColorsFB.js', array('jquery.ui.widget'));
break;
case 'inputConsole':
self::addHeaderCSS('gpc.inputConsole', GPC_PATH.'css/inputConsole.css');
self::addHeaderCSS('gpc.inputConsoleT', sprintf($themeFile, 'inputConsole'));
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('gpc.inputConsole', GPC_PATH.'js/ui.inputConsole.js', array('jquery.ui.widget'));
break;
case 'inputDate':
self::addHeaderCSS('jquery.ui.datepicker', 'themes/default/js/ui/theme/jquery.ui.datepicker.css');
self::addHeaderCSS('gpc.inputDate', GPC_PATH.'css/inputDate.css');
self::addHeaderCSS('gpc.inputDateT', sprintf($themeFile, 'inputDate'));
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('jquery.ui.datepicker', 'themes/default/js/ui/jquery.ui.datepicker.js', array('jquery.ui.widget'));
self::addHeaderJS('jquery.ui.datepicker-'.$lang_info['code'], self::getPiwigoSystemPath().'themes/default/js/ui/i18n/jquery.ui.datepicker-'.$lang_info['code'].'.js');
self::addHeaderJS('gpc.inputDate', GPC_PATH.'js/ui.inputDate.js', array('jquery.ui.widget'));
break;
case 'inputDotArea':
self::addHeaderCSS('gpc.inputDotArea', GPC_PATH.'css/inputDotArea.css');
self::addHeaderCSS('gpc.inputDotAreaT', sprintf($themeFile, 'inputDotArea'));
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('gpc.inputDotArea', GPC_PATH.'js/ui.inputDotArea.js', array('jquery.ui.widget'));
break;
case 'inputExportBox':
self::addHeaderCSS('gpc.inputText', GPC_PATH.'css/inputText.css');
self::addHeaderCSS('gpc.inputTextT', sprintf($themeFile, 'inputText'));
self::addHeaderCSS('gpc.inputList', GPC_PATH.'css/inputList.css');
self::addHeaderCSS('gpc.inputListT', sprintf($themeFile, 'inputList'));
self::addHeaderCSS('gpc.inputExportBox', GPC_PATH.'css/inputExportBox.css');
self::addHeaderCSS('gpc.inputExportBoxT', sprintf($themeFile, 'inputExportBox'));
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('jquery.ui.mouse', 'themes/default/js/ui/jquery.ui.mouse.js', array('jquery.ui.widget'));
self::addHeaderJS('jquery.ui.position', 'themes/default/js/ui/jquery.ui.position.js', array('jquery.ui.mouse'));
self::addHeaderJS('jquery.ui.resizable', 'themes/default/js/ui/jquery.ui.resizable.js', array('jquery.ui.position'));
self::addHeaderJS('jquery.ui.draggable', 'themes/default/js/ui/jquery.ui.draggable.js', array('jquery.ui.resizable'));
self::addHeaderJS('jquery.ui.sortable', 'themes/default/js/ui/jquery.ui.sortable.js', array('jquery.ui.draggable'));
self::addHeaderJS('jquery.ui.dialog', 'themes/default/js/ui/jquery.ui.dialog.js', array('jquery.ui.sortable'));
self::addHeaderJS('gpc.inputText', GPC_PATH.'js/ui.inputText.js', array('jquery.ui.dialog'));
self::addHeaderJS('gpc.inputList', GPC_PATH.'js/ui.inputList.js', array('jquery.ui.dialog'));
self::addHeaderJS('gpc.inputExportBox', GPC_PATH.'js/ui.inputExportBox.js', array('jquery.ui.dialog'));
break;
case 'inputFilterBox':
self::addHeaderCSS('jquery.ui.datepicker', 'themes/default/js/ui/theme/jquery.ui.datepicker.css');
self::addHeaderCSS('gpc.inputNum', GPC_PATH.'css/inputNum.css');
self::addHeaderCSS('gpc.inputNumT', sprintf($themeFile, 'inputNum'));
self::addHeaderCSS('gpc.inputDate', GPC_PATH.'css/inputDate.css');
self::addHeaderCSS('gpc.inputDateT', sprintf($themeFile, 'inputDate'));
self::addHeaderCSS('gpc.inputText', GPC_PATH.'css/inputText.css');
self::addHeaderCSS('gpc.inputTextT', sprintf($themeFile, 'inputText'));
self::addHeaderCSS('gpc.inputList', GPC_PATH.'css/inputList.css');
self::addHeaderCSS('gpc.inputListT', sprintf($themeFile, 'inputList'));
self::addHeaderCSS('gpc.inputFilterBox', GPC_PATH.'css/inputFilterBox.css');
self::addHeaderCSS('gpc.inputFilterBoxT', sprintf($themeFile, 'inputFilterBox'));
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('jquery.ui.mouse', 'themes/default/js/ui/jquery.ui.mouse.js', array('jquery.ui.widget'));
self::addHeaderJS('jquery.ui.position', 'themes/default/js/ui/jquery.ui.position.js', array('jquery.ui.mouse'));
self::addHeaderJS('jquery.ui.resizable', 'themes/default/js/ui/jquery.ui.resizable.js', array('jquery.ui.position'));
self::addHeaderJS('jquery.ui.draggable', 'themes/default/js/ui/jquery.ui.draggable.js', array('jquery.ui.resizable'));
self::addHeaderJS('jquery.ui.sortable', 'themes/default/js/ui/jquery.ui.sortable.js', array('jquery.ui.draggable'));
self::addHeaderJS('jquery.ui.dialog', 'themes/default/js/ui/jquery.ui.dialog.js', array('jquery.ui.sortable'));
self::addHeaderJS('jquery.ui.datepicker', 'themes/default/js/ui/jquery.ui.datepicker.js', array('jquery.ui.widget'));
self::addHeaderJS('jquery.ui.datepicker-'.$lang_info['code'], self::getPiwigoSystemPath().'themes/default/js/ui/i18n/jquery.ui.datepicker-'.$lang_info['code'].'.js');
self::addHeaderJS('gpc.inputNum', GPC_PATH.'js/ui.inputNum.js', array('jquery.ui.dialog'));
self::addHeaderJS('gpc.inputList', GPC_PATH.'js/ui.inputList.js', array('jquery.ui.dialog'));
self::addHeaderJS('gpc.inputText', GPC_PATH.'js/ui.inputText.js', array('jquery.ui.dialog'));
self::addHeaderJS('gpc.inputDate', GPC_PATH.'js/ui.inputDate.js', array('jquery.ui.dialog'));
self::addHeaderJS('gpc.inputFilterBox', GPC_PATH.'js/ui.inputFilterBox.js', array('jquery.ui.dialog'));
break;
case 'inputList':
self::addHeaderCSS('gpc.inputList', GPC_PATH.'css/inputList.css');
self::addHeaderCSS('gpc.inputListT', sprintf($themeFile, 'inputList'));
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('jquery.ui.button', 'themes/default/js/ui/jquery.ui.button.js', array('jquery.ui'));
self::addHeaderJS('gpc.inputList', GPC_PATH.'js/ui.inputList.js', array('jquery.ui.widget'));
break;
case 'inputNum':
self::addHeaderCSS('gpc.inputNum', GPC_PATH.'css/inputNum.css');
self::addHeaderCSS('gpc.inputNumT', sprintf($themeFile, 'inputNum'));
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('jquery.ui.mouse', 'themes/default/js/ui/jquery.ui.mouse.js', array('jquery.ui.widget'));
self::addHeaderJS('jquery.ui.slider', 'themes/default/js/ui/jquery.ui.slider.js', array('jquery.ui.widget'));
self::addHeaderJS('gpc.inputNum', GPC_PATH.'js/ui.inputNum.js', array('jquery','jquery.ui.slider'));
break;
case 'inputPages':
self::addHeaderCSS('gpc.inputPages', GPC_PATH.'css/inputPages.css');
self::addHeaderCSS('gpc.inputPagesT', sprintf($themeFile, 'inputPages'));
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('gpc.inputPages', GPC_PATH.'js/ui.inputPages.js', array('jquery','jquery.ui.widget'));
break;
case 'inputPath':
self::addHeaderCSS('gpc.inputPath', GPC_PATH.'css/inputPath.css');
self::addHeaderCSS('gpc.inputPathT', sprintf($themeFile, 'inputPath'));
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('gpc.inputPath', GPC_PATH.'js/ui.inputPath.js', array('jquery','jquery.ui.widget'));
break;
case 'inputPosition':
self::addHeaderCSS('gpc.inputPosition', GPC_PATH.'css/inputPosition.css');
self::addHeaderCSS('gpc.inputPositionT', sprintf($themeFile, 'inputPosition'));
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('gpc.inputPosition', GPC_PATH.'js/ui.inputPosition.js', array('jquery.ui.widget'));
break;
case 'inputRadio':
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('gpc.inputRadio', GPC_PATH.'js/ui.inputRadio.js', array('jquery.ui.widget'));
break;
case 'inputSortBox':
self::addHeaderCSS('gpc.inputSortBox', GPC_PATH.'css/inputSortBox.css');
self::addHeaderCSS('gpc.inputSortBoxT', sprintf($themeFile, 'inputSortBox'));
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('jquery.ui.mouse', 'themes/default/js/ui/jquery.ui.mouse.js', array('jquery.ui.widget'));
self::addHeaderJS('jquery.ui.position', 'themes/default/js/ui/jquery.ui.position.js', array('jquery.ui.mouse'));
self::addHeaderJS('jquery.ui.draggable', 'themes/default/js/ui/jquery.ui.draggable.js', array('jquery.ui.position'));
self::addHeaderJS('jquery.ui.sortable', 'themes/default/js/ui/jquery.ui.sortable.js', array('jquery.ui.draggable'));
self::addHeaderJS('jquery.ui.dialog', 'themes/default/js/ui/jquery.ui.dialog.js', array('jquery.ui.sortable'));
self::addHeaderJS('gpc.inputSortBox', GPC_PATH.'js/ui.inputSortBox.js', array('jquery.ui.dialog'));
break;
case 'inputStatusBar':
self::addHeaderCSS('gpc.inputStatusBar', GPC_PATH.'css/inputStatusBar.css');
self::addHeaderCSS('gpc.inputStatusBarT', sprintf($themeFile, 'inputStatusBar'));
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('gpc.inputStatusBar', GPC_PATH.'js/ui.inputStatusBar.js', array('jquery.ui.widget'));
break;
case 'inputSwitchButton':
self::addHeaderCSS('gpc.inputSwitchButton', GPC_PATH.'css/inputSwitchButton.css');
self::addHeaderCSS('gpc.inputSwitchButtonT', sprintf($themeFile, 'inputSwitchButton'));
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('gpc.inputSwitchButton', GPC_PATH.'js/ui.inputSwitchButton.js', array('jquery.ui.widget'));
break;
case 'inputTag':
self::addHeaderCSS('gpc.inputTag', GPC_PATH.'css/inputTag.css');
self::addHeaderCSS('gpc.inputTagT', sprintf($themeFile, 'inputTag'));
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('gpc.inputTag', GPC_PATH.'js/ui.inputTag.js', array('jquery.ui.widget'));
break;
case 'inputText':
self::addHeaderCSS('gpc.inputText', GPC_PATH.'css/inputText.css');
self::addHeaderCSS('gpc.inputTextT', sprintf($themeFile, 'inputText'));
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('gpc.inputText', GPC_PATH.'js/ui.inputText.js', array('jquery.ui.widget'));
break;
case 'inputTreeList':
self::addHeaderCSS('gpc.inputTreeList', GPC_PATH.'css/inputTreeList.css');
self::addHeaderCSS('gpc.inputTreeListT', sprintf($themeFile, 'inputTreeList'));
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('gpc.inputTreeList', GPC_PATH.'js/ui.inputTreeList.js', array('jquery.ui.widget'));
break;
case 'simpleTip':
self::addHeaderCSS('gpc.simpleTip', GPC_PATH.'css/simpleTip.css');
self::addHeaderCSS('gpc.simpleTipT', sprintf($themeFile, 'simpleTip'));
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('gpc.simpleTip', GPC_PATH.'js/simpleTip.js', array('jquery.ui.widget'));
break;
case 'download':
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('gpc.download', GPC_PATH.'js/ui.download.js', array('jquery'));
break;
case 'dynamicTable':
self::addHeaderCSS('jquery.ui.datepicker', 'themes/default/js/ui/theme/jquery.ui.datepicker.css');
self::addHeaderCSS('gpc.inputNum', GPC_PATH.'css/inputNum.css');
self::addHeaderCSS('gpc.inputNumT', sprintf($themeFile, 'inputNum'));
self::addHeaderCSS('gpc.inputDate', GPC_PATH.'css/inputDate.css');
self::addHeaderCSS('gpc.inputDateT', sprintf($themeFile, 'inputDate'));
self::addHeaderCSS('gpc.inputText', GPC_PATH.'css/inputText.css');
self::addHeaderCSS('gpc.inputTextT', sprintf($themeFile, 'inputText'));
self::addHeaderCSS('gpc.inputList', GPC_PATH.'css/inputList.css');
self::addHeaderCSS('gpc.inputListT', sprintf($themeFile, 'inputList'));
self::addHeaderCSS('gpc.inputSortBox', GPC_PATH.'css/inputSortBox.css');
self::addHeaderCSS('gpc.inputSortBoxT', sprintf($themeFile, 'inputSortBox'));
self::addHeaderCSS('gpc.inputFilterBox', GPC_PATH.'css/inputFilterBox.css');
self::addHeaderCSS('gpc.inputFilterBoxT', sprintf($themeFile, 'inputFilterBox'));
self::addHeaderCSS('gpc.inputPages', GPC_PATH.'css/inputPages.css');
self::addHeaderCSS('gpc.inputPagesT', sprintf($themeFile, 'inputPages'));
self::addHeaderCSS('gpc.dynamicTable', GPC_PATH.'css/dynamicTable.css');
self::addHeaderCSS('gpc.dynamicTableT', sprintf($themeFile, 'dynamicTable'));
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('jquery.ui.mouse', 'themes/default/js/ui/jquery.ui.mouse.js', array('jquery.ui.widget'));
self::addHeaderJS('jquery.ui.position', 'themes/default/js/ui/jquery.ui.position.js', array('jquery.ui.mouse'));
self::addHeaderJS('jquery.ui.resizable', 'themes/default/js/ui/jquery.ui.resizable.js', array('jquery.ui.position'));
self::addHeaderJS('jquery.ui.draggable', 'themes/default/js/ui/jquery.ui.draggable.js', array('jquery.ui.resizable'));
self::addHeaderJS('jquery.ui.sortable', 'themes/default/js/ui/jquery.ui.sortable.js', array('jquery.ui.draggable'));
self::addHeaderJS('jquery.ui.dialog', 'themes/default/js/ui/jquery.ui.dialog.js', array('jquery.ui.sortable'));
self::addHeaderJS('jquery.ui.datepicker', 'themes/default/js/ui/jquery.ui.datepicker.js', array('jquery.ui.widget'));
self::addHeaderJS('jquery.ui.datepicker-'.$lang_info['code'], self::getPiwigoSystemPath().'themes/default/js/ui/i18n/jquery.ui.datepicker-'.$lang_info['code'].'.js');
self::addHeaderJS('gpc.inputNum', GPC_PATH.'js/ui.inputNum.js', array('jquery.ui.dialog'));
self::addHeaderJS('gpc.inputList', GPC_PATH.'js/ui.inputList.js', array('jquery.ui.dialog'));
self::addHeaderJS('gpc.inputText', GPC_PATH.'js/ui.inputText.js', array('jquery.ui.dialog'));
self::addHeaderJS('gpc.inputDate', GPC_PATH.'js/ui.inputDate.js', array('jquery.ui.dialog'));
self::addHeaderJS('gpc.inputFilterBox', GPC_PATH.'js/ui.inputFilterBox.js', array('jquery.ui.dialog'));
self::addHeaderJS('gpc.inputSortBox', GPC_PATH.'js/ui.inputSortBox.js', array('jquery.ui.dialog'));
self::addHeaderJS('gpc.inputPages', GPC_PATH.'js/ui.inputPages.js', array('jquery.ui.dialog'));
self::addHeaderJS('gpc.dynamicTable', GPC_PATH.'js/ui.dynamicTable.js', array('jquery.ui.dialog'));
break;
case 'progressArea':
self::addHeaderCSS('gpc.progressArea', GPC_PATH.'css/progressArea.css');
self::addHeaderCSS('gpc.progressAreaT', sprintf($themeFile, 'progressArea'));
self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
self::addHeaderJS('jquery.ui.mouse', 'themes/default/js/ui/jquery.ui.mouse.js', array('jquery.ui.widget'));
self::addHeaderJS('jquery.ui.position', 'themes/default/js/ui/jquery.ui.position.js', array('jquery.ui.mouse'));
self::addHeaderJS('jquery.ui.draggable', 'themes/default/js/ui/jquery.ui.draggable.js', array('jquery.ui.position'));
self::addHeaderJS('jquery.ui.sortable', 'themes/default/js/ui/jquery.ui.sortable.js', array('jquery.ui.draggable'));
self::addHeaderJS('jquery.ui.dialog', 'themes/default/js/ui/jquery.ui.dialog.js', array('jquery.ui.sortable'));
self::addHeaderJS('gpc.progressArea', GPC_PATH.'js/ui.progressArea.js', array('jquery.ui.dialog'));
break;
case 'timer':
self::addHeaderJS('gpc.timer', GPC_PATH.'js/ui.timer.js', array('jquery'));
break;
}
}
}
/**
* build an url from given properties
*
* @param String $urlType: type of url to build
* @param Array $properties: properties used to build url
* @return String: url, or empty string if not possible to build it
*/
static public function urlBuild($type, $properties=array())
{
$returned='';
switch($type)
{
case 'admin.picture':
if(isset($properties['pictureId']))
{
$returned='./admin.php?page=photo-'.$properties['pictureId'];
}
break;
case 'admin.category':
case 'admin.album':
if(isset($properties['categoryId']))
{
$returned='./admin.php?page=album-'.$properties['categoryId'];
}
break;
}
return($returned);
}
/**
* use the extended description get_user_language_desc() function if exist
* otherwise returns the value
*
* @param String $value : value to translate
* @return String : translated value
*/
static public function getUserLanguageDesc($value)
{
if(function_exists('get_user_language_desc'))
{
return(get_user_language_desc($value));
}
else
{
return($value);
}
}
/**
* remove a path recursively
*
* @param String $directory : directory to remove
* @param Bool $removePath : if set to true, remove the path himself, if set
* to false, remove only file & sub-directories
* @return Bool : true if directory was succesfully removed, otherwise false
*/
static public function rmDir($directory, $removePath=true)
{
$directory=rtrim($directory, '\/').'/';
$returned=true;
if(file_exists($directory) and is_dir($directory) and $directory!='./' and $directory!='../')
{
$dhandle=scandir($directory);
foreach($dhandle as $file)
{
if($file!='.' and $file!='..' )
{
if(is_dir($directory.$file))
{
$returned=self::rmDir($directory.$file, true) & $returned;
}
else
{
$returned=unlink($directory.$file) & $returned;
}
}
}
if($returned and $removePath) $returned=rmdir($directory);
}
return($returned);
}
/**
* returns the piwigo system path
* @return String
*/
static public function getPiwigoSystemPath()
{
return(self::$piwigoSystemPath);
}
/**
* formats a file size into a human readable size
*
* @param String $format : "A" : auto
* "Ai" : auto (io)
* "O" : o
* "K" : Ko
* "M" : Mo
* "G" : Go
* "Ki" : Kio
* "Mi" : Mio
* "Gi" : Gio
* @param String $thsep : thousand separator
* @param Integer $prec : number of decimals
* @param Bool $visible : display or not the unit
* @return String : a formatted file size
*/
static public function formatOctet($octets, $format="Ai", $thsep="", $prec=2, $visible=true)
{
if($format=="Ai")
{
if($octets<1024)
{ $format="O"; }
elseif($octets<1024000)
{ $format="Ki"; }
elseif($octets<1024000000)
{ $format="Mi"; }
else
{ $format="Gi"; }
}
elseif($format=="A")
{
if($octets<1000)
{ $format="O"; }
elseif($octets<1000000)
{ $format="Ki"; }
elseif($octets<1000000000)
{ $format="Mi"; }
else
{ $format="Gi"; }
}
switch($format)
{
case "O":
$unit="o"; $div=1;
break;
case "K":
$unit="Ko"; $div=1000;
break;
case "M":
$unit="Mo"; $div=1000000;
break;
case "G":
$unit="Go"; $div=1000000000;
break;
case "Ki":
$unit="Kio"; $div=1024;
break;
case "Mi":
$unit="Mio"; $div=1024000;
break;
case "Gi":
$unit="Gio"; $div=1024000000;
break;
}
$returned=number_format($octets/$div, $prec, '.', $thsep);
if($visible) $returned.=' '.$unit;
return($returned);
} //function formatOctet
/**
* affect a valid token in a template var {$token}
*/
static public function setTemplateToken()
{
global $template;
$template->assign('token', get_pwg_token());
}
} //class
GPCCore::init();
?>