forked from extern/egroupware
new clientside image-name to url map: egw.image(_name, _app="phpgwapi")
eg. egw.image('favicon') returns '/egroupware/phpgwapi/templates/default/favicon.ico' --> pondon to serverside common::image($app,$name) method
This commit is contained in:
parent
dce02a03cb
commit
ea7ad6318d
45
phpgwapi/images.php
Normal file
45
phpgwapi/images.php
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* API: loading available images by application and image-name (without extension)
|
||||||
|
*
|
||||||
|
* Usage: /egroupware/phpgwapi/images.php?template=idots
|
||||||
|
*
|
||||||
|
* @link www.egroupware.org
|
||||||
|
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||||
|
* @package phpgwapi
|
||||||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
$GLOBALS['egw_info'] = array(
|
||||||
|
'flags' => array(
|
||||||
|
'currentapp' => 'home',
|
||||||
|
'noheader' => true,
|
||||||
|
'nocachecontrol' => true,
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
include '../header.inc.php';
|
||||||
|
|
||||||
|
$image_map = common::image_map(preg_match('/^[a-z0-9_-]+$/i',$_GET['template']) ? $_GET['template'] : null);
|
||||||
|
|
||||||
|
// use an etag over the image mapp
|
||||||
|
$etag = '"'.md5(serialize($image_map)).'"';
|
||||||
|
|
||||||
|
// headers to allow caching
|
||||||
|
Header('Content-Type: text/javascript; charset=utf-8');
|
||||||
|
Header('Cache-Control: public, no-transform');
|
||||||
|
Header('Pragma: cache');
|
||||||
|
Header('ETag: '.$etag);
|
||||||
|
|
||||||
|
// if servers send a If-None-Match header, response with 304 Not Modified, if etag matches
|
||||||
|
if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && $_SERVER['HTTP_IF_NONE_MATCH'] == $etag)
|
||||||
|
{
|
||||||
|
header("HTTP/1.1 304 Not Modified");
|
||||||
|
common::egw_exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
echo 'egw.set_images('.json_encode($image_map).");\n";
|
||||||
|
|
||||||
|
// Content-Lenght header is important, otherwise browsers dont cache!
|
||||||
|
Header('Content-Length: '.ob_get_length());
|
@ -768,6 +768,7 @@ abstract class egw_framework
|
|||||||
if ($GLOBALS['egw_info']['flags']['js_link_registry'])
|
if ($GLOBALS['egw_info']['flags']['js_link_registry'])
|
||||||
{
|
{
|
||||||
self::validate_file('/phpgwapi/config.php');
|
self::validate_file('/phpgwapi/config.php');
|
||||||
|
self::validate_file('/phpgwapi/images.php',array('template' => $GLOBALS['egw_info']['user']['preferences']['common']['template_set']));
|
||||||
}
|
}
|
||||||
$java_script .= self::get_script_links();
|
$java_script .= self::get_script_links();
|
||||||
|
|
||||||
|
@ -308,6 +308,49 @@ else
|
|||||||
set_configs: function(_configs)
|
set_configs: function(_configs)
|
||||||
{
|
{
|
||||||
this.configs = _configs;
|
this.configs = _configs;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Map to serverside available images for users template-set
|
||||||
|
*/
|
||||||
|
images: {},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set imagemap, called from /phpgwapi/images.php
|
||||||
|
*
|
||||||
|
* @param array/object _images
|
||||||
|
*/
|
||||||
|
set_images: function (_images)
|
||||||
|
{
|
||||||
|
this.images = _images;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get image URL for a given image-name and application
|
||||||
|
*
|
||||||
|
* @param string _name image-name without extension
|
||||||
|
* @param string _app application name, default phpgwapi
|
||||||
|
* @return string with URL of image
|
||||||
|
*/
|
||||||
|
image: function (_name, _app)
|
||||||
|
{
|
||||||
|
if (typeof _app == 'undefined') _app = 'phpgwapi';
|
||||||
|
|
||||||
|
// own instance specific images in vfs have highest precedence
|
||||||
|
if (typeof this.images['vfs'] != 'undefined' && typeof this.images['vfs'][_name] != 'undefined')
|
||||||
|
{
|
||||||
|
return this.webserverUrl+this.images['vfs'][_name];
|
||||||
|
}
|
||||||
|
if (typeof this.images[_app] != 'undefined' && typeof this.images[_app][_name] != 'undefined')
|
||||||
|
{
|
||||||
|
return this.webserverUrl+this.images[_app][_name];
|
||||||
|
}
|
||||||
|
if (typeof this.images['phpgwapi'] != 'undefined' && typeof this.images['phpgwapi'][_name] != 'undefined')
|
||||||
|
{
|
||||||
|
return this.webserverUrl+this.images['vfs'][_name];
|
||||||
|
}
|
||||||
|
console.log('egw.image("'+_name+'", "'+_app+'") image NOT found!');
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -164,6 +164,7 @@ class idots_framework extends egw_framework
|
|||||||
if (!isset($GLOBALS['egw_info']['flags']['js_link_registry']))
|
if (!isset($GLOBALS['egw_info']['flags']['js_link_registry']))
|
||||||
{
|
{
|
||||||
self::validate_file('/phpgwapi/config.php');
|
self::validate_file('/phpgwapi/config.php');
|
||||||
|
self::validate_file('/phpgwapi/images.php',array('template' => $GLOBALS['egw_info']['user']['preferences']['common']['template_set']));
|
||||||
$content .= '<script type="text/javascript">
|
$content .= '<script type="text/javascript">
|
||||||
egw.set_preferences('.json_encode($GLOBALS['egw_info']['user']['preferences']['common']).', "common");
|
egw.set_preferences('.json_encode($GLOBALS['egw_info']['user']['preferences']['common']).', "common");
|
||||||
</script>'."\n";
|
</script>'."\n";
|
||||||
|
Loading…
Reference in New Issue
Block a user