forked from extern/egroupware
161 lines
4.2 KiB
JavaScript
161 lines
4.2 KiB
JavaScript
/**
|
|
* EGroupware clientside API object
|
|
*
|
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
|
* @package etemplate
|
|
* @subpackage api
|
|
* @link http://www.egroupware.org
|
|
* @author Andreas Stöckel (as AT stylite.de)
|
|
* @author Ralf Becker <RalfBecker@outdoor-training.de>
|
|
* @version $Id$
|
|
*/
|
|
|
|
"use strict";
|
|
|
|
/*egw:uses
|
|
egw_core;
|
|
*/
|
|
|
|
egw.extend('images', egw.MODULE_GLOBAL, function() {
|
|
|
|
/**
|
|
* Map to serverside available images for users template-set
|
|
*
|
|
* @access: private, use egw.image(_name, _app)
|
|
*/
|
|
var images = {};
|
|
|
|
return {
|
|
/**
|
|
* Set imagemap, called from /phpgwapi/images.php
|
|
*
|
|
* @param array/object _images
|
|
*/
|
|
set_images: function (_images)
|
|
{
|
|
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 current app of window
|
|
* @return string with URL of image
|
|
*/
|
|
image: function (_name, _app)
|
|
{
|
|
// For logging all paths tried
|
|
var tries = {};
|
|
|
|
if (typeof _app === 'undefined')
|
|
{
|
|
// If the application name is not given, set it to the name of
|
|
// current application
|
|
_app = this.getAppName();
|
|
|
|
// Handle images in appname/imagename format
|
|
if(_name.indexOf('/') > 0)
|
|
{
|
|
var split = _name.split('/',2);
|
|
// dhtmlxtree and egw_action are subdirs in image dir, not applications
|
|
if (split[0] !== 'dhtmlxtree' && split[0] !== 'egw_action')
|
|
{
|
|
_app = split[0];
|
|
_name = split[1];
|
|
}
|
|
}
|
|
}
|
|
|
|
// own instance specific images in vfs have highest precedence
|
|
tries['vfs']=_name;
|
|
if (typeof images['vfs'] != 'undefined' && typeof images['vfs'][_name] != 'undefined')
|
|
{
|
|
return this.webserverUrl+images['vfs'][_name];
|
|
}
|
|
tries[_app + (_app == 'phpgwapi' ? " (current app)" : "")] = _name;
|
|
if (typeof images[_app] != 'undefined' && typeof images[_app][_name] != 'undefined')
|
|
{
|
|
return this.webserverUrl+images[_app][_name];
|
|
}
|
|
tries['phpgwapi'] = _name;
|
|
if (typeof images['phpgwapi'] != 'undefined' && typeof images['phpgwapi'][_name] != 'undefined')
|
|
{
|
|
return this.webserverUrl+images['phpgwapi'][_name];
|
|
}
|
|
// if no match, check if it might contain an extension
|
|
var matches = [];
|
|
if (matches = _name.match(/\.(png|gif|jpg)$/i))
|
|
{
|
|
return this.image(_name.replace(/.(png|gif|jpg)$/i,''), _app);
|
|
}
|
|
if(matches != null) tries[_app + " (matched)"]= matches;
|
|
egw.debug("log",'egw.image("'+_name+'", "'+_app+'") image NOT found! Tried ', tries);
|
|
return null;
|
|
},
|
|
|
|
/**
|
|
* Get image url for a given mime-type and option file
|
|
*
|
|
* @param _mime
|
|
* @param _path vfs path to generate thumbnails for images
|
|
* @param _size defaults to 16 (only supported size currently)
|
|
* @returns url of image
|
|
*/
|
|
mime_icon: function(_mime, _path, _size)
|
|
{
|
|
if (typeof _size == 'undefined') _size = 16;
|
|
if (!_mime) _mime = 'unknown';
|
|
if (_mime == 'httpd/unix-directory') _mime = 'directory';
|
|
|
|
var type = _mime.toLowerCase().split('/');
|
|
var image;
|
|
|
|
if (type[0] == 'egw' && (image = this.image('navbar',type[1])))
|
|
{
|
|
|
|
}
|
|
else if (typeof _path == 'string' && type[0] == 'image' && type[1].match(/^(png|jpe?g|gif|bmp)$/))
|
|
{
|
|
var thsize = this.config('link_list_thumbnail') || 32;
|
|
image = this.link('/etemplate/thumbnail.php',{ 'path': _path, 'thsize': thsize});
|
|
}
|
|
else
|
|
{
|
|
if ((typeof type[1] == 'undefined' || !(image = this.image('mime'+_size+'_'+type[0]+'_'+type[1], 'etemplate'))) &&
|
|
!(image = this.image('mime'+_size+'_'+type[0], 'etemplate')))
|
|
{
|
|
image = this.image('mime'+_size+'_unknown', 'etemplate');
|
|
}
|
|
}
|
|
return image;
|
|
},
|
|
|
|
/**
|
|
* Create DOM img or svn element depending on url
|
|
*
|
|
* @param {string} _url source url
|
|
* @param {string} _alt alt attribute for img tag
|
|
* @returns DOM node
|
|
*/
|
|
image_element: function(_url, _alt)
|
|
{
|
|
var icon;
|
|
if (typeof _url == 'string' && _url.match(/\.svg$/))
|
|
{
|
|
icon = document.createElement('object');
|
|
icon.type = 'image/svg+xml';
|
|
icon.data = _url;
|
|
}
|
|
else
|
|
{
|
|
icon = document.createElement('img');
|
|
if (_url) icon.src = _url;
|
|
if (_alt) icon.alt = _alt;
|
|
}
|
|
return icon;
|
|
}
|
|
}
|
|
});
|
|
|