* Etemplate: Fix issue expose view gets opened for not supported mime-type (eg. image/pdf)

This commit is contained in:
Hadi Nategh 2015-10-20 16:23:21 +00:00
parent d4e415598f
commit 1155f0c5e3
5 changed files with 27 additions and 3 deletions

View File

@ -1360,7 +1360,7 @@ var et2_link_string = expose(et2_valueWidget.extend([et2_IDetachedDOM],
{
var base_url = egw.webserverUrl.match(/^\//,'ig')?egw(window).window.location.origin + egw.webserverUrl : egw.webserverUrl;
var mediaContent = [];
if (_value && typeof _value.type !='undefined' && _value.type.match(/video\/|audio\//,'ig'))
if (_value && typeof _value.type !='undefined' && _value.type.match(/video\//,'ig'))
{
mediaContent = [{
title: _value.id,

View File

@ -341,7 +341,7 @@ var et2_vfsMime = expose(et2_valueWidget.extend([et2_IDetachedDOM],
mediaContent[0].download_href = mediaContent[0].href + '?download';
}
}
if (_value && _value.mime && _value.mime.match(/video\/|audio\//,'ig'))
if (_value && _value.mime && _value.mime.match(/video\//,'ig'))
{
mediaContent[0].thumbnail = this.egw().mime_icon(_value.mime, _value.path, undefined, _value.mtime);
}

View File

@ -48,7 +48,10 @@ function expose (widget)
};
// For filtering to only show things we can handle
var mime_regex = new RegExp(/(video\/)|(image\/:*(?!tif|x-xcf))|(audio\/)/);
var mime_regex = new RegExp(/(video\/(mp4|ogg|webm))|(image\/:*(?!tif|x-xcf|pdf))/);
// IE only supports video/mp4 mime type
if (navigator.userAgent.match(/(MSIE|Trident)/)) mime_regex.compile(/(video\/mp4)|(image\/:*(?!tif|x-xcf|pdf))/);
// Only one gallery
var gallery = null;

View File

@ -1515,6 +1515,9 @@ egw_LAB.wait(function() {
*/
public static function safe_content_header(&$content, $path, &$mime='', &$length=0, $nocache=true, $force_download=true, $no_content_type=false)
{
// change old/aliased mime-types to new one, eg. image/pdf to application/pdf
$mime = mime_magic::fix_mime_type($mime);
// mitigate risk of serving javascript or css via webdav from our domain,
// which will get around same origin policy and CSP
list($type, $subtype) = explode('/', strtolower($mime));

View File

@ -123,6 +123,23 @@ class mime_magic
return $key;
}
/**
* Fix old / aliased mime-types by returning valid/default mime-type
*
* @param string $_alias
* @return string new type, of $alias, if there is no alias defined for it
*/
public static function fix_mime_type($_alias)
{
$alias = strtolower($_alias);
if (isset(self::$mime_alias_map[$alias]))
{
return self::$mime_alias_map[$alias];
}
return $alias;
}
/**
* Uses variants of the UNIX "file" command to attempt to determine the
* MIME type of an unknown file.
@ -1671,6 +1688,7 @@ class mime_magic
'application/x-javascript' => 'application/javascript',
'application/x-troff' => 'text/troff',
'application/x-egroupware-etemplate' => 'application/xml',
'image/pdf' => 'application/pdf',
);
/**