Skip to content
This repository has been archived by the owner on Nov 25, 2020. It is now read-only.

Commit

Permalink
Implement font-based mime icons.
Browse files Browse the repository at this point in the history
  • Loading branch information
cdujeu committed Jul 5, 2016
1 parent 0678397 commit a46b0e5
Show file tree
Hide file tree
Showing 18 changed files with 198 additions and 69 deletions.
8 changes: 4 additions & 4 deletions core/src/core/classes/class.AJXP_Utils.php
Expand Up @@ -497,10 +497,10 @@ public static function mimetype($fileName, $mode, $isDir)
if (!isSet($mime)) {
$mime = $EXTENSIONS["ajxp_empty"];
}
if (is_numeric($mime[2]) || array_key_exists($mime[2], $mess)) {
$mime[2] = $mess[$mime[2]];
if (is_numeric($mime[3]) || array_key_exists($mime[3], $mess)) {
$mime[3] = $mess[$mime[3]];
}
return (($mode == "image" ? $mime[1] : $mime[2]));
return (($mode == "image" ? $mime[1] : $mime[3]));
}

public static $registeredExtensions;
Expand All @@ -524,7 +524,7 @@ public static function mimeData($fileName, $isDir)
if (!isSet($mime)) {
$mime = self::$registeredExtensions["ajxp_empty"];
}
return array($mime[2], $mime[1]);
return array($mime[3], $mime[1], $mime[2]);

}

Expand Down
7 changes: 6 additions & 1 deletion core/src/core/classes/class.ConfService.php
Expand Up @@ -1368,7 +1368,12 @@ public function getRegisteredExtensionsInst()
$nodes = AJXP_PluginsService::getInstance()->searchAllManifests("//extensions/extension", "nodes", true);
$res = array();
foreach ($nodes as $node) {
$res[$node->getAttribute("mime")] = array($node->getAttribute("mime"), $node->getAttribute("icon"), $node->getAttribute("messageId"));
$res[$node->getAttribute("mime")] = array(
$node->getAttribute("mime"),
$node->getAttribute("icon"),
$node->getAttribute("font"),
$node->getAttribute("messageId")
);
}
if (count($res)) {
$EXTENSIONS = array_merge($EXTENSIONS, $res);
Expand Down
4 changes: 4 additions & 0 deletions core/src/plugins/access.fs/class.fsAccessDriver.php
Expand Up @@ -1231,13 +1231,17 @@ public function loadNodeInfo(&$ajxpNode, $parentNode = false, $details = false)
if (RecycleBinManager::recycleEnabled() && $ajxpNode->getPath() == RecycleBinManager::getRelativeRecycle()) {
$recycleIcon = ($this->countFiles($ajxpNode->getUrl(), false, true)>0?"trashcan_full.png":"trashcan.png");
$metaData["icon"] = $recycleIcon;
$metaData["fonticon"] = "delete";
$metaData["mimestring"] = $mess[122];
$ajxpNode->setLabel($mess[122]);
$metaData["ajxp_mime"] = "ajxp_recycle";
} else {
$mimeData = AJXP_Utils::mimeData($ajxpNode->getUrl(), !$isLeaf);
$metaData["mimestring_id"] = $mimeData[0]; //AJXP_Utils::mimetype($ajxpNode->getUrl(), "type", !$isLeaf);
$metaData["icon"] = $mimeData[1]; //AJXP_Utils::mimetype($nodeName, "image", !$isLeaf);
if(!empty($mimeData[2])){
$metaData["fonticon"] = $mimeData[2];
}
if ($metaData["icon"] == "folder.png") {
$metaData["openicon"] = "folder_open.png";
}
Expand Down
4 changes: 2 additions & 2 deletions core/src/plugins/action.compression/manifest.xml
Expand Up @@ -11,8 +11,8 @@

<registry_contributions>
<extensions>
<extension mime="tar" icon="archive.png" messageId="61"/>
<extension mime="bz2" icon="archive.png" messageId="61"/>
<extension mime="tar" font="archive" icon="archive.png" messageId="61"/>
<extension mime="bz2" font="archive" icon="archive.png" messageId="61"/>
</extensions>
<actions>
<action name="compression">
Expand Down
2 changes: 1 addition & 1 deletion core/src/plugins/action.timestamp/manifest.xml
Expand Up @@ -79,7 +79,7 @@

</actions>
<extensions>
<extension icon="timestamp_images/mimes/ICON_SIZE/horo.png" messageId="CONF_MESSAGE[timestamp]" mime="ers"/>
<extension icon="timestamp_images/mimes/ICON_SIZE/horo.png" font="timer" messageId="CONF_MESSAGE[timestamp]" mime="ers"/>
</extensions>
</registry_contributions>
<dependencies>
Expand Down
1 change: 1 addition & 0 deletions core/src/plugins/core.ajaxplorer/ajxp_registry.xsd
Expand Up @@ -512,6 +512,7 @@
<xs:attribute name="mime" use="required" type="xs:NCName"/>
<xs:attribute name="messageId" use="required" type="xs:all"/>
<xs:attribute name="icon" use="required"/>
<xs:attribute name="font" type="xs:all"/>
</xs:complexType>
</xs:element>
<xs:element name="processing">
Expand Down
4 changes: 2 additions & 2 deletions core/src/plugins/editor.browser/manifest.xml
Expand Up @@ -77,8 +77,8 @@
</action>
</actions>
<extensions>
<extension icon="openbrowser_images/mimes/ICON_SIZE/earth.png" messageId="openbrowser.7" mime="url"/>
<extension icon="openbrowser_images/mimes/ICON_SIZE/earth.png" messageId="openbrowser.7" mime="website"/>
<extension icon="openbrowser_images/mimes/ICON_SIZE/earth.png" font="link" messageId="openbrowser.7" mime="url"/>
<extension icon="openbrowser_images/mimes/ICON_SIZE/earth.png" font="web" messageId="openbrowser.7" mime="website"/>
</extensions>
</registry_contributions>
</editor>
2 changes: 1 addition & 1 deletion core/src/plugins/editor.etherpad/manifest.xml
Expand Up @@ -120,7 +120,7 @@
</action>
</actions>
<extensions>
<extension icon="etherpad/discussion.png" messageId="etherpad.1" mime="pad"/>
<extension icon="etherpad/discussion.png" messageId="etherpad.1" font="comment-multiple-outline" mime="pad"/>
</extensions>
<hooks>
<!--<serverCallback methodName="hideExtension" hookName="node.info"/>-->
Expand Down
Binary file modified core/src/plugins/editor.soundmanager/player_bg_icon.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion core/src/plugins/editor.video/class.VideoPreviewer.js
Expand Up @@ -236,7 +236,7 @@ preload="auto" width="#{WIDTH}" height="#{HEIGHT}" data-setup="{}">\n\
}
return div;
}else{
return new Element('img', {src:resolveImageSource(ajxpNode.getIcon(),'/images/mimes/ICON_SIZE',64)});
return AbstractEditor.prototype.getPreview(ajxpNode);
}
},

Expand Down
30 changes: 15 additions & 15 deletions core/src/plugins/editor.zoho/manifest.xml
Expand Up @@ -39,21 +39,21 @@
</action>
</actions>
<extensions>
<extension icon="zoho_img/mimes/ICON_SIZE/word.png" messageId="zoho_editor.3" mime="doc"/>
<extension icon="zoho_img/mimes/ICON_SIZE/word.png" messageId="zoho_editor.3" mime="docx"/>
<extension icon="zoho_img/mimes/ICON_SIZE/word.png" messageId="zoho_editor.3" mime="odt"/>
<extension icon="zoho_img/mimes/ICON_SIZE/word.png" messageId="zoho_editor.3" mime="sxw"/>
<extension icon="zoho_img/mimes/ICON_SIZE/word.png" messageId="zoho_editor.3" mime="rtf"/>
<extension icon="zoho_img/mimes/ICON_SIZE/spreadsheet.png" messageId="zoho_editor.5" mime="xls"/>
<extension icon="zoho_img/mimes/ICON_SIZE/spreadsheet.png" messageId="zoho_editor.5" mime="xlsx"/>
<extension icon="zoho_img/mimes/ICON_SIZE/spreadsheet.png" messageId="zoho_editor.5" mime="ods"/>
<extension icon="zoho_img/mimes/ICON_SIZE/spreadsheet.png" messageId="zoho_editor.5" mime="sxc"/>
<extension icon="zoho_img/mimes/ICON_SIZE/spreadsheet.png" messageId="zoho_editor.5" mime="csv"/>
<extension icon="zoho_img/mimes/ICON_SIZE/spreadsheet.png" messageId="zoho_editor.5" mime="tsv"/>
<extension icon="zoho_img/mimes/ICON_SIZE/presentation.png" messageId="zoho_editor.4" mime="ppt"/>
<extension icon="zoho_img/mimes/ICON_SIZE/presentation.png" messageId="zoho_editor.4" mime="pps"/>
<extension icon="zoho_img/mimes/ICON_SIZE/presentation.png" messageId="zoho_editor.4" mime="odp"/>
<extension icon="zoho_img/mimes/ICON_SIZE/presentation.png" messageId="zoho_editor.4" mime="sxi"/>
<extension icon="zoho_img/mimes/ICON_SIZE/word.png" font="file-word" messageId="zoho_editor.3" mime="doc"/>
<extension icon="zoho_img/mimes/ICON_SIZE/word.png" font="file-word" messageId="zoho_editor.3" mime="docx"/>
<extension icon="zoho_img/mimes/ICON_SIZE/word.png" font="file-word" messageId="zoho_editor.3" mime="odt"/>
<extension icon="zoho_img/mimes/ICON_SIZE/word.png" font="file-word" messageId="zoho_editor.3" mime="sxw"/>
<extension icon="zoho_img/mimes/ICON_SIZE/word.png" font="file-word" messageId="zoho_editor.3" mime="rtf"/>
<extension icon="zoho_img/mimes/ICON_SIZE/spreadsheet.png" font="file-excel" messageId="zoho_editor.5" mime="xls"/>
<extension icon="zoho_img/mimes/ICON_SIZE/spreadsheet.png" font="file-excel" messageId="zoho_editor.5" mime="xlsx"/>
<extension icon="zoho_img/mimes/ICON_SIZE/spreadsheet.png" font="file-excel" messageId="zoho_editor.5" mime="ods"/>
<extension icon="zoho_img/mimes/ICON_SIZE/spreadsheet.png" font="file-excel" messageId="zoho_editor.5" mime="sxc"/>
<extension icon="zoho_img/mimes/ICON_SIZE/spreadsheet.png" font="file-excel" messageId="zoho_editor.5" mime="csv"/>
<extension icon="zoho_img/mimes/ICON_SIZE/spreadsheet.png" font="file-excel" messageId="zoho_editor.5" mime="tsv"/>
<extension icon="zoho_img/mimes/ICON_SIZE/presentation.png" font="file-powerpoint" messageId="zoho_editor.4" mime="ppt"/>
<extension icon="zoho_img/mimes/ICON_SIZE/presentation.png" font="file-powerpoint" messageId="zoho_editor.4" mime="pps"/>
<extension icon="zoho_img/mimes/ICON_SIZE/presentation.png" font="file-powerpoint" messageId="zoho_editor.4" mime="odp"/>
<extension icon="zoho_img/mimes/ICON_SIZE/presentation.png" font="file-powerpoint" messageId="zoho_editor.4" mime="sxi"/>
</extensions>
</registry_contributions>
<dependencies>
Expand Down
Expand Up @@ -488,7 +488,13 @@ Class.create("AbstractEditor" , {
if(!ajxpNode.isLeaf()) src = resolveImageSource('folder.png', "/images/mimes/ICON_SIZE", 64);
else src = resolveImageSource('mime_empty.png', "/images/mimes/ICON_SIZE", 64);
}
var imgObject = new Element("img", {src:src, width:64, height:64, align:'absmiddle', border:0});
var svg = AbstractEditor.prototype.getSvgSource(ajxpNode);
var imgObject;
if(svg){
imgObject = new Element("div", {className:"mimefont mdi mdi-"+svg, style:"font-size:28px;", "data-is_loaded": "true"});
}else{
imgObject = new Element("img", {src:src, width:28, height:28, align:'absmiddle', border:0});
}
imgObject.resizePreviewElement = function(dimensionObject){
dimensionObject.maxWidth = dimensionObject.maxHeight = 64;
var styleObject = fitRectangleToDimension({width:64,height:64},dimensionObject);
Expand All @@ -497,8 +503,15 @@ Class.create("AbstractEditor" , {
var mT = parseInt((dimensionObject.width - 64)/2) + dimensionObject.margin;
var mB = dimensionObject.width+(dimensionObject.margin*2)-newHeight-mT-1;
styleObject.marginTop = mT + "px";
styleObject.marginBottom = mB + "px";
}
styleObject.marginBottom = mB + "px";
if(svg){
styleObject.fontSize = styleObject.height;
styleObject.lineHeight = "50px";
}
}else if(svg){
styleObject.fontSize = styleObject.height;
styleObject.lineHeight = styleObject.height;
}
this.setStyle(styleObject);
}.bind(imgObject);
return imgObject;
Expand All @@ -511,6 +524,15 @@ Class.create("AbstractEditor" , {
*/
getThumbnailSource : function(ajxpNode){
return resolveImageSource(ajxpNode.getIcon(), "/images/mimes/ICON_SIZE", 64);
}
},

/**
* Return SVG Icon if it exists
* @param ajxpNode
* @returns {V}
*/
getSvgSource: function(ajxpNode){
return svg = ajxpNode.getMetadata().get("fonticon");
}

});
69 changes: 37 additions & 32 deletions core/src/plugins/gui.ajax/res/js/ui/prototype/class.FilesList.js
Expand Up @@ -1785,40 +1785,45 @@ Class.create("FilesList", SelectableElements, {
className :'text_label'+fullview
}).update(metaData.get('text'));

var backgroundPosition = this.options.iconBgPosition || '4px 2px';
var backgroundImage = 'url("'+resolveImageSource(metaData.get('icon'), "/images/mimes/ICON_SIZE", 16)+'")';
if(metaData.get('overlay_class') && ajaxplorer.currentThemeUsesIconFonts){
metaData.get('overlay_class').split(',').each(function(c){
textLabel.insert(new Element('span', {className:c+' overlay-class-span'}));
});
}else if(metaData.get('overlay_icon') && Modernizr.multiplebgs){
var ovIcs = metaData.get('overlay_icon').split(',');
switch(ovIcs.length){
case 1:
backgroundPosition = '14px 11px, ' + backgroundPosition;
backgroundImage = 'url("'+resolveImageSource(ovIcs[0], "/images/overlays/ICON_SIZE", 8)+'"), url("'+resolveImageSource(metaData.get('icon'), "/images/mimes/ICON_SIZE", 16)+'")';
break;
case 2:
backgroundPosition = '2px 11px, 14px 11px, ' + backgroundPosition;
backgroundImage = 'url("'+resolveImageSource(ovIcs[0], "/images/overlays/ICON_SIZE", 8)+'"), url("'+resolveImageSource(ovIcs[1], "/images/overlays/ICON_SIZE", 8)+'"), url("'+resolveImageSource(metaData.get('icon'), "/images/mimes/ICON_SIZE", 16)+'")';
break;
case 3:
backgroundPosition = '14px 2px, 2px 11px, 14px 11px, ' + backgroundPosition;
backgroundImage = 'url("'+resolveImageSource(ovIcs[0], "/images/overlays/ICON_SIZE", 8)+'"), url("'+resolveImageSource(ovIcs[1], "/images/overlays/ICON_SIZE", 8)+'"), url("'+resolveImageSource(ovIcs[2], "/images/overlays/ICON_SIZE", 8)+'"), url("'+resolveImageSource(metaData.get('icon'), "/images/mimes/ICON_SIZE", 16)+'")';
break;
case 4:
default:
backgroundPosition = '2px 2px, 14px 2px, 2px 11px, 14px 11px, ' + backgroundPosition;
backgroundImage = 'url("'+resolveImageSource(ovIcs[0], "/images/overlays/ICON_SIZE", 8)+'"), url("'+resolveImageSource(ovIcs[1], "/images/overlays/ICON_SIZE", 8)+'"), url("'+resolveImageSource(ovIcs[2], "/images/overlays/ICON_SIZE", 8)+'"), url("'+resolveImageSource(ovIcs[3], "/images/overlays/ICON_SIZE", 8)+'"), url("'+resolveImageSource(metaData.get('icon'), "/images/mimes/ICON_SIZE", 16)+'")';
break;
if(metaData.get('fonticon') && pydio.currentThemeUsesIconFonts){
textLabel.insert({top: new Element('span', {className: 'mimefont mdi mdi-' + metaData.get('fonticon')})});
if(metaData.get('overlay_class')){
metaData.get('overlay_class').split(',').each(function(c){
textLabel.insert(new Element('span', {className:c+' overlay-class-span'}));
});
}
}else{
var backgroundPosition = this.options.iconBgPosition || '4px 2px';
var backgroundImage = 'url("'+resolveImageSource(metaData.get('icon'), "/images/mimes/ICON_SIZE", 16)+'")';
if(metaData.get('overlay_icon') && Modernizr.multiplebgs){
var ovIcs = metaData.get('overlay_icon').split(',');
switch(ovIcs.length){
case 1:
backgroundPosition = '14px 11px, ' + backgroundPosition;
backgroundImage = 'url("'+resolveImageSource(ovIcs[0], "/images/overlays/ICON_SIZE", 8)+'"), url("'+resolveImageSource(metaData.get('icon'), "/images/mimes/ICON_SIZE", 16)+'")';
break;
case 2:
backgroundPosition = '2px 11px, 14px 11px, ' + backgroundPosition;
backgroundImage = 'url("'+resolveImageSource(ovIcs[0], "/images/overlays/ICON_SIZE", 8)+'"), url("'+resolveImageSource(ovIcs[1], "/images/overlays/ICON_SIZE", 8)+'"), url("'+resolveImageSource(metaData.get('icon'), "/images/mimes/ICON_SIZE", 16)+'")';
break;
case 3:
backgroundPosition = '14px 2px, 2px 11px, 14px 11px, ' + backgroundPosition;
backgroundImage = 'url("'+resolveImageSource(ovIcs[0], "/images/overlays/ICON_SIZE", 8)+'"), url("'+resolveImageSource(ovIcs[1], "/images/overlays/ICON_SIZE", 8)+'"), url("'+resolveImageSource(ovIcs[2], "/images/overlays/ICON_SIZE", 8)+'"), url("'+resolveImageSource(metaData.get('icon'), "/images/mimes/ICON_SIZE", 16)+'")';
break;
case 4:
default:
backgroundPosition = '2px 2px, 14px 2px, 2px 11px, 14px 11px, ' + backgroundPosition;
backgroundImage = 'url("'+resolveImageSource(ovIcs[0], "/images/overlays/ICON_SIZE", 8)+'"), url("'+resolveImageSource(ovIcs[1], "/images/overlays/ICON_SIZE", 8)+'"), url("'+resolveImageSource(ovIcs[2], "/images/overlays/ICON_SIZE", 8)+'"), url("'+resolveImageSource(ovIcs[3], "/images/overlays/ICON_SIZE", 8)+'"), url("'+resolveImageSource(metaData.get('icon'), "/images/mimes/ICON_SIZE", 16)+'")';
break;
}
}
textLabel.setStyle({
paddingLeft:'24px',
backgroundRepeat:'no-repeat',
backgroundPosition:backgroundPosition,
backgroundImage:backgroundImage
});
}
textLabel.setStyle({
paddingLeft:'24px',
backgroundRepeat:'no-repeat',
backgroundPosition:backgroundPosition,
backgroundImage:backgroundImage
});

var innerSpan = new Element("span", {
className:"list_selectable_span",
Expand Down
Expand Up @@ -605,7 +605,7 @@ Class.create("InfoPanel", AjxpPane, {
}
}
}
return '<img src="' + resolveImageSource(ajxpNode.getIcon(), '/images/mimes/ICON_SIZE',64) + '" height="64" width="64">';
return AbstractEditor.prototype.getPreview(ajxpNode).outerHTML; // '<img src="' + resolveImageSource(ajxpNode.getIcon(), '/images/mimes/ICON_SIZE',64) + '" height="64" width="64">';
},
/**
* Parses config node
Expand Down
Expand Up @@ -144,7 +144,7 @@ Class.create("PreviewFactory", {
var thumbSize = this._thumbSize;
var defaultMargin = 5;
var tW, tH, mT, mB;
if(element.resizePreviewElement && element.getAttribute("data-is_loaded") == "true")
if(element.resizePreviewElement /*&& element.getAttribute("data-is_loaded") == "true"*/)
{
element.resizePreviewElement({width:thumbSize, height:thumbSize, margin:defaultMargin});
}
Expand Down
2 changes: 1 addition & 1 deletion core/src/plugins/gui.ajax/res/themes/orbit/css/allz.css

Large diffs are not rendered by default.

Expand Up @@ -66,4 +66,96 @@

.mdi-close-circle-outline:before {
content: "\f250";
}
}

.mdi-archive:before {
content: "\f13a";
}

.mdi-drawing-box:before {
content: "\f2d4";
}

.mdi-delete:before {
content: "\f2b5";
}

.mdi-file-document:before {
content: "\f30e";
}

.mdi-file-excel:before {
content: "\f310";
}

.mdi-file-image:before {
content: "\f314";
}

.mdi-file-music:before {
content: "\f318";
}
.mdi-file-pdf:before {
content: "\f31a";
}

.mdi-file-powerpoint:before {
content: "\f31c";
}

.mdi-file-video:before {
content: "\f320";
}

.mdi-file-word:before {
content: "\f321";
}

.mdi-file-xml:before {
content: "\f323";
}

.mdi-language-css3:before {
content: "\f40e";
}

.mdi-language-html5:before {
content: "\f40f";
}

.mdi-language-javascript:before {
content: "\f410";
}

.mdi-language-php:before {
content: "\f411";
}

.mdi-movie:before {
content: "\f472";
}

.mdi-timer:before {
content: "\f609";
}

.mdi-link:before {
content: "\f429";
}

.mdi-web:before {
content: "\f68c";
}

.mdi-comment-multiple-outline:before {
content: "\f277";
}

.mdi-cloud-download:before {
content: "\f258";
}

.mdi-file-import:before {
content: "\f315";
}

0 comments on commit a46b0e5

Please sign in to comment.