mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-22 07:53:39 +01:00
New method egw_framework::include_css_js_response to add javascript and
CSS included via egw_framework::validate_file or egw_framework::includeCSS to an ajax response. Fixed jscalendar to use that service and sitemgr to include it manually.
This commit is contained in:
parent
48bc5c8119
commit
8e98f6cea3
@ -1,16 +1,17 @@
|
|||||||
<?php
|
<?php
|
||||||
/**************************************************************************\
|
/**
|
||||||
* eGroupWare SiteMgr - Web Content Management *
|
* eGroupWare - Calendar planner block for sitemgr
|
||||||
* http://www.egroupware.org *
|
*
|
||||||
* -------------------------------------------- *
|
* @link http://www.egroupware.org
|
||||||
* This program is free software; you can redistribute it and/or modify it *
|
* @package calendar
|
||||||
* under the terms of the GNU General Public License as published by the *
|
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
* Free Software Foundation; either version 2 of the License, or (at your *
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
* option) any later version. *
|
* @version $Id$
|
||||||
\**************************************************************************/
|
*/
|
||||||
|
|
||||||
/* $Id$ */
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calendar day selection for sitemgr
|
||||||
|
*/
|
||||||
class module_calendar extends Module
|
class module_calendar extends Module
|
||||||
{
|
{
|
||||||
function module_calendar()
|
function module_calendar()
|
||||||
@ -28,12 +29,10 @@ class module_calendar extends Module
|
|||||||
|
|
||||||
function get_content(&$arguments,$properties)
|
function get_content(&$arguments,$properties)
|
||||||
{
|
{
|
||||||
if (!is_object($GLOBALS['egw']->jscalendar))
|
|
||||||
{
|
|
||||||
$GLOBALS['egw']->jscalendar =& CreateObject('phpgwapi.jscalendar');
|
|
||||||
}
|
|
||||||
$date = (int) (strtotime(get_var('date',array('POST','GET'))));
|
$date = (int) (strtotime(get_var('date',array('POST','GET'))));
|
||||||
$redirect = $arguments['redirect'] ? $arguments['redirect'] : '#';
|
$redirect = $arguments['redirect'] ? $arguments['redirect'] : '#';
|
||||||
return $GLOBALS['egw']->jscalendar->flat($redirect,$date);
|
|
||||||
|
return $GLOBALS['egw']->jscalendar->get_javascript().
|
||||||
|
$GLOBALS['egw']->jscalendar->flat($redirect,$date);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1048,9 +1048,15 @@ abstract class egw_framework
|
|||||||
/**
|
/**
|
||||||
* Checks to make sure a valid package and file name is provided
|
* Checks to make sure a valid package and file name is provided
|
||||||
*
|
*
|
||||||
* @param string $package package to be included
|
* Example call syntax:
|
||||||
* @param string $file file to be included - no ".js" on the end
|
* a) egw_framework::validate_file('jscalendar','calendar')
|
||||||
* @param string $app application directory to search - default = phpgwapi
|
* --> /phpgwapi/js/jscalendar/calendar.js
|
||||||
|
* b) egw_framework::validate_file('/phpgwapi/inc/calendar-setup.js',array('lang'=>'de'))
|
||||||
|
* --> /phpgwapi/inc/calendar-setup.js?lang=de
|
||||||
|
*
|
||||||
|
* @param string $package package or complete path (relative to EGW_SERVER_ROOT) to be included
|
||||||
|
* @param string|array $file=null file to be included - no ".js" on the end or array with get params
|
||||||
|
* @param string $app='phpgwapi' application directory to search - default = phpgwapi
|
||||||
* @param boolean $append=true should the file be added
|
* @param boolean $append=true should the file be added
|
||||||
*
|
*
|
||||||
* @discuss The browser specific option loads the file which is in the correct
|
* @discuss The browser specific option loads the file which is in the correct
|
||||||
@ -1058,18 +1064,28 @@ abstract class egw_framework
|
|||||||
*
|
*
|
||||||
* @returns bool was the file found?
|
* @returns bool was the file found?
|
||||||
*/
|
*/
|
||||||
static function validate_file($package, $file, $app='phpgwapi')
|
static function validate_file($package, $file=null, $app='phpgwapi')
|
||||||
{
|
{
|
||||||
//echo "<p>".__METHOD__."($package,$file,$app) --> ".EGW_INCLUDE_ROOT ."/$app/js/$package/$file.js</p>\n";
|
//echo "<p>".__METHOD__."($package,$file,$app) --> ".EGW_INCLUDE_ROOT ."/$app/js/$package/$file.js</p>\n";
|
||||||
if (is_readable(EGW_INCLUDE_ROOT.($path="/$app/js/$package/$file.js")) ||
|
if ($package[0] == '/' && is_readable(EGW_SERVER_ROOT.($path = $package)) ||
|
||||||
$app != 'phpgwapi' && is_readable(EGW_INCLUDE_ROOT.($path="/phpgwapi/js/$package/$file.js")))
|
is_readable(EGW_SERVER_ROOT.($path="/$app/js/$package/$file.js")) ||
|
||||||
|
$app != 'phpgwapi' && is_readable(EGW_SERVER_ROOT.($path="/phpgwapi/js/$package/$file.js")))
|
||||||
{
|
{
|
||||||
|
if (is_array($file))
|
||||||
|
{
|
||||||
|
foreach($file as $name => $val)
|
||||||
|
{
|
||||||
|
$args .= (empty($args) ? '?' : '&').$name.'='.urlencode($val);
|
||||||
|
}
|
||||||
|
$path .= $args;
|
||||||
|
}
|
||||||
if (!self::$js_include_files || !in_array($path,self::$js_include_files))
|
if (!self::$js_include_files || !in_array($path,self::$js_include_files))
|
||||||
{
|
{
|
||||||
self::$js_include_files[] = $path;
|
self::$js_include_files[] = $path;
|
||||||
}
|
}
|
||||||
return True;
|
return True;
|
||||||
}
|
}
|
||||||
|
error_log(__METHOD__."($package,$file,$app) $path NOT found!");
|
||||||
return False;
|
return False;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1103,7 +1119,8 @@ abstract class egw_framework
|
|||||||
{
|
{
|
||||||
foreach(self::$js_include_files as $file)
|
foreach(self::$js_include_files as $file)
|
||||||
{
|
{
|
||||||
$file .= '?'. filectime(EGW_INCLUDE_ROOT.$file);
|
list($file,$params) = explode('?',$file,2);
|
||||||
|
$file .= '?'. filectime(EGW_INCLUDE_ROOT.$file).($params ? '&'.$params : '');
|
||||||
$links .= '<script type="text/javascript" src="'. $GLOBALS['egw_info']['server']['webserver_url']. $file.'">'."</script>\n";
|
$links .= '<script type="text/javascript" src="'. $GLOBALS['egw_info']['server']['webserver_url']. $file.'">'."</script>\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1120,23 +1137,27 @@ abstract class egw_framework
|
|||||||
/**
|
/**
|
||||||
* Include a css file, either speicified by it's path (relative to EGW_SERVER_ROOT) or appname and css file name
|
* Include a css file, either speicified by it's path (relative to EGW_SERVER_ROOT) or appname and css file name
|
||||||
*
|
*
|
||||||
* @param string $path path (relative to EGW_SERVER_ROOT) or appname (if !is_null($name))
|
* @param string $app path (relative to EGW_SERVER_ROOT) or appname (if !is_null($name))
|
||||||
* @param string $name=null name of css file in $app/templates/{default|$this->template}/$name.css
|
* @param string $name=null name of css file in $app/templates/{default|$this->template}/$name.css
|
||||||
* @return boolean false: css file not found, true: file found
|
* @return boolean false: css file not found, true: file found
|
||||||
*/
|
*/
|
||||||
public static function includeCSS($path,$name=null)
|
public static function includeCSS($app,$name=null)
|
||||||
{
|
{
|
||||||
if (!is_null($name))
|
if (!is_null($name))
|
||||||
{
|
{
|
||||||
$app = basename($path);
|
|
||||||
$path = '/'.$app.'/templates/'.$GLOBALS['egw_info']['server']['template_set'].'/'.$name.'.css';
|
$path = '/'.$app.'/templates/'.$GLOBALS['egw_info']['server']['template_set'].'/'.$name.'.css';
|
||||||
if (!file_exists(EGW_SERVER_ROOT.$path))
|
if (!file_exists(EGW_SERVER_ROOT.$path))
|
||||||
{
|
{
|
||||||
$path = '/'.$app.'/templates/default/'.$name.'.css';
|
$path = '/'.$app.'/templates/default/'.$name.'.css';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$path = $app;
|
||||||
|
}
|
||||||
if (!file_exists(EGW_SERVER_ROOT.$path))
|
if (!file_exists(EGW_SERVER_ROOT.$path))
|
||||||
{
|
{
|
||||||
|
error_log(__METHOD__."($app,$name) $path NOT found!");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!in_array($path,self::$css_include_files))
|
if (!in_array($path,self::$css_include_files))
|
||||||
@ -1145,6 +1166,33 @@ abstract class egw_framework
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add registered CSS and javascript to ajax response
|
||||||
|
*/
|
||||||
|
public static function include_css_js_response()
|
||||||
|
{
|
||||||
|
$response = egw_json_response::get();
|
||||||
|
$app = $GLOBALS['egw_info']['flags']['currentapp'];
|
||||||
|
|
||||||
|
// try to add app specific css file
|
||||||
|
self::includeCSS($app,'app');
|
||||||
|
|
||||||
|
// add all css files from egw_framework::includeCSS()
|
||||||
|
foreach(self::$css_include_files as $path)
|
||||||
|
{
|
||||||
|
$response->includeCSS($GLOBALS['egw_info']['server']['webserver_url'].$path);
|
||||||
|
}
|
||||||
|
|
||||||
|
// try to add app specific js file
|
||||||
|
self::validate_file('.', 'app', $app);
|
||||||
|
|
||||||
|
// add all js files from egw_framework::validate_file()
|
||||||
|
foreach(self::$js_include_files as $path)
|
||||||
|
{
|
||||||
|
$response->includeScript($GLOBALS['egw_info']['server']['webserver_url'].$path);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -51,24 +51,29 @@ class jscalendar
|
|||||||
{
|
{
|
||||||
$args['app'] = 'home'; // home can be granted to anyone.
|
$args['app'] = 'home'; // home can be granted to anyone.
|
||||||
}
|
}
|
||||||
if ($do_header && (strpos($GLOBALS['egw_info']['flags']['java_script'],'jscalendar')===false))
|
if ($do_header)
|
||||||
{
|
{
|
||||||
$GLOBALS['egw_info']['flags']['java_script'] .= $this->get_javascript();
|
egw_framework::includeCSS('/phpgwapi/js/jscalendar/calendar-blue.css');
|
||||||
|
egw_framework::validate_file('jscalendar','calendar');
|
||||||
|
$args = array_intersect_key($GLOBALS['egw_info']['user']['preferences']['common'],array('lang'=>1,'dateformat'=>1));
|
||||||
|
egw_framework::validate_file('/phpgwapi/inc/jscalendar-setup.php',$args);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* return javascript needed for jscalendar
|
* return javascript needed for jscalendar
|
||||||
*
|
*
|
||||||
* @return string
|
* Only needed if jscalendar runs outside of egw_framework, eg. in sitemgr
|
||||||
*/
|
*
|
||||||
function get_javascript()
|
* @return string
|
||||||
{
|
*/
|
||||||
$args = array_intersect_key($GLOBALS['egw_info']['user']['preferences']['common'],array('lang'=>1,'dateformat'=>1));
|
function get_javascript()
|
||||||
return
|
{
|
||||||
'<link rel="stylesheet" type="text/css" media="all" href="'.$this->jscalendar_url.'/calendar-blue.css" title="blue" />
|
$args = array_intersect_key($GLOBALS['egw_info']['user']['preferences']['common'],array('lang'=>1,'dateformat'=>1));
|
||||||
<script type="text/javascript" src="'.$this->jscalendar_url.'/calendar.js"></script>
|
return
|
||||||
<script type="text/javascript" src="'.egw::link('/phpgwapi/inc/jscalendar-setup.php',$args,false).'"></script>
|
'<link rel="stylesheet" type="text/css" media="all" href="'.$this->jscalendar_url.'/calendar-blue.css" title="blue" />
|
||||||
|
<script type="text/javascript" src="'.$this->jscalendar_url.'/calendar.js"></script>
|
||||||
|
<script type="text/javascript" src="'.egw::link('/phpgwapi/inc/jscalendar-setup.php',$args,false).'"></script>
|
||||||
';
|
';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -161,10 +166,6 @@ class jscalendar
|
|||||||
*/
|
*/
|
||||||
function flat($url,$date=null,$weekUrl='',$weekTTip='',$monthUrl='',$monthTTip='',$id='calendar-container')
|
function flat($url,$date=null,$weekUrl='',$weekTTip='',$monthUrl='',$monthTTip='',$id='calendar-container')
|
||||||
{
|
{
|
||||||
if (strpos($GLOBALS['egw_info']['flags']['java_script'],'jscalendar') === false)
|
|
||||||
{
|
|
||||||
$javascript = $this->get_javascript();
|
|
||||||
}
|
|
||||||
if ($date) // string if format YYYYmmdd or timestamp
|
if ($date) // string if format YYYYmmdd or timestamp
|
||||||
{
|
{
|
||||||
$date = is_int($date) ? adodb_date('m/d/Y',$date) :
|
$date = is_int($date) ? adodb_date('m/d/Y',$date) :
|
||||||
@ -172,7 +173,6 @@ class jscalendar
|
|||||||
}
|
}
|
||||||
return '
|
return '
|
||||||
<div id="'.$id.'"></div>
|
<div id="'.$id.'"></div>
|
||||||
'.$javascript.'
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function dateChanged(calendar) {
|
function dateChanged(calendar) {
|
||||||
'. // Beware that this function is called even if the end-user only
|
'. // Beware that this function is called even if the end-user only
|
||||||
|
Loading…
Reference in New Issue
Block a user