Navigation Menu

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

Commit

Permalink
Handle multiple selection in InfoPanel : display simple elements prev…
Browse files Browse the repository at this point in the history
…iews, plus the standard action bar inc. Download button. Fix #653
  • Loading branch information
cdujeu committed Oct 15, 2014
1 parent 0f7fa34 commit 8f520b3
Show file tree
Hide file tree
Showing 6 changed files with 89 additions and 18 deletions.
21 changes: 15 additions & 6 deletions core/src/plugins/access.fs/fsActions.xml
Expand Up @@ -1130,18 +1130,27 @@
</div>
]]></html>
</infoPanel>
<infoPanel mime="ajxp_root_node" attributes="icon,formated_date,ajxp_description" theme="orbit">
<messages>
<message key="name_string" id="133"/>
<message key="modif_string" id="138"/>
<message key="header_string" id="342"/>
</messages>
<infoPanel mime="ajxp_root_node" attributes="" theme="orbit">
<html><![CDATA[
<div class="infoPanelAllMetadata">
<div id="info_panel_primary"></div>
</div>
]]></html>
</infoPanel>
<infoPanel mime="generic_multiple" attributes="preview_simple" theme="orbit">
<html><![CDATA[
<div class="infoPanelAllMetadata">
<div id="info_panel_primary" class="info_panel_primary_multiple">
<center><i>#{selectedCountSentence}</i></center>
<div style="margin-top:10px;">
#{preview_simple}
</div>
<br style="clear:left;">
<div class="toolbar_placeholder" data-toolbarId="info_panel" style="margin-top: 15px; width:89%; text-align:center;"></div>
</div>
</div>
]]></html>
</infoPanel>
</component_config>
</client_configs>
</registry_contributions>
1 change: 1 addition & 0 deletions core/src/plugins/core.ajaxplorer/ajxp_registry.xsd
Expand Up @@ -469,6 +469,7 @@
</xs:sequence>
<xs:attribute name="attributes" use="required"/>
<xs:attribute name="mime" use="required" type="xs:NCName"/>
<xs:attribute name="theme" type="xs:NCName"/>
</xs:complexType>
</xs:element>
<xs:element name="template">
Expand Down
2 changes: 1 addition & 1 deletion core/src/plugins/gui.ajax/res/js/ajaxplorer.js

Large diffs are not rendered by default.

46 changes: 36 additions & 10 deletions core/src/plugins/gui.ajax/res/js/ajaxplorer/class.InfoPanel.js
Expand Up @@ -216,7 +216,12 @@ Class.create("InfoPanel", AjxpPane, {
}
if(!passedNode && !userSelection.isUnique())
{
this.setContent('<br><br><center><i>'+ userSelection.getFileNames().length + ' '+MessageHash[128]+'</i></center><br><br>');
if(this.registeredMimes.get('generic_multiple')){
this.evalTemplateForMime('generic_multiple', null, {
selectedCountSentence:userSelection.getFileNames().length + ' '+MessageHash[128]
}, userSelection.getSelectedNodes());
}
//this.setContent('<br><br><center><i>'+ userSelection.getFileNames().length + ' '+MessageHash[128]+'</i></center><br><br>');
this.addActions('multiple');
if(this.scrollbar) this.scrollbar.recalculateLayout();
disableTextSelection(this.contentContainer);
Expand Down Expand Up @@ -366,7 +371,7 @@ Class.create("InfoPanel", AjxpPane, {
* @param fileNode AjxpNode
* @param tArgs Object
*/
evalTemplateForMime: function(mimeType, fileNode, tArgs){
evalTemplateForMime: function(mimeType, fileNode, tArgs, multipleNodes){
if(!this.htmlElement) return;
if(!this.registeredMimes.get(mimeType)) return;
var registeredTemplates = this.registeredMimes.get(mimeType);
Expand Down Expand Up @@ -395,13 +400,18 @@ Class.create("InfoPanel", AjxpPane, {
var tModifier = templateData[3];
var tPosition = templateData[4];
if(!tArgs){
tArgs = new Object();
tArgs = {};
}
var panelWidth = this.htmlElement.getWidth();
var oThis = this;
if(fileNode){
var metadata = fileNode.getMetadata();
tAttributes.each(function(attName){
if(fileNode || multipleNodes){
var metadata;
if(fileNode){
metadata = fileNode.getMetadata();
}else{
metadata = $H();
}
tAttributes.each(function(attName){
if(attName == 'basename' && metadata.get('filename')){
this[attName] = getBaseName(metadata.get('filename'));
} else if(attName == 'compute_image_dimensions'){
Expand All @@ -418,7 +428,22 @@ Class.create("InfoPanel", AjxpPane, {
}
this[attName] = dimAttr;
} else if(attName == 'preview_rich'){
this[attName] = oThis.getPreviewElement(fileNode, true);
this[attName] = oThis.getPreviewElement(fileNode, true, true);
} else if(attName == 'preview_simple'){
if(multipleNodes){
var s ='';
var simpleTpl = new Template('<div class="info_panel_multiple_tile"><div class="tile_preview">#{preview}</div><div class="tile_label">#{label}</div></div>');
multipleNodes.each(function(n){
var p = oThis.getPreviewElement(n, false, false);
var args = {label:getBaseName(n.getMetadata().get('filename'))};
if(Object.isString(p)) args['preview']=p;
else if(Object.isElement(p) && p.outerHTML) args['preview']= p.outerHTML;
s += simpleTpl.evaluate(args);
});
this[attName] = s;
}else{
this[attName] = oThis.getPreviewElement(fileNode, false, false);
}
} else if(attName == 'encoded_filename' && metadata.get('filename')){
this[attName] = encodeURIComponent(metadata.get('filename'));
} else if(attName == 'escaped_filename' && metadata.get('filename')){
Expand Down Expand Up @@ -524,9 +549,11 @@ Class.create("InfoPanel", AjxpPane, {
* Use editors extensions to find a preview element for the current node
* @param ajxpNode AjxpNode
* @param getTemplateElement Boolean If true, will return a fake div that can be inserted in template and replaced later
* @param rich will be set to true by default
* @returns String
*/
getPreviewElement : function(ajxpNode, getTemplateElement){
getPreviewElement : function(ajxpNode, getTemplateElement, rich){
if(rich == undefined) rich = true;
var editors = ajaxplorer.findEditorsForMime(ajxpNode.getAjxpMime(), true);
if(editors && editors.length)
{
Expand All @@ -537,8 +564,7 @@ Class.create("InfoPanel", AjxpPane, {
if(getTemplateElement){
return '<div id="preview_rich_fake_element"></div>';
}else{
var element = editorClass.prototype.getPreview(ajxpNode, true);
return element;
return editorClass.prototype.getPreview(ajxpNode, rich);
}
}
}
Expand Down
35 changes: 35 additions & 0 deletions core/src/plugins/gui.ajax/res/themes/orbit/css/ajaxplorer.css
Expand Up @@ -3931,6 +3931,41 @@ div.infoPanelLabel{
padding: 1px;
}

div.info_panel_primary_multiple{
margin: 6px 2px 6px 3px !important;
}

.info_panel_multiple_tile {
width: 27%;
height: 76px;
float: left;
padding: 7px 2%;
background-color: white;
margin: 0 1% 6px;
border-radius: 4px;
position: relative;
text-align: center;
box-shadow: 0 0 2px rgba(211, 211, 211, 0.6);
}

.info_panel_multiple_tile div.tile_preview img {
max-width: 90%;
max-height: 60px;
}

.info_panel_multiple_tile div.tile_label {
position: absolute;
bottom: 1px;
font-size: 0.7em;
overflow: hidden;
width: 89%;
text-overflow: ellipsis;
padding: 2px 2px 0;
text-align: center;
color: #646464;
white-space: nowrap;
}

.panelContent div.panelHeader{
font-size: 1.3em;
padding: 24px 0 8px 0;
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.

0 comments on commit 8f520b3

Please sign in to comment.