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

Commit b8bddd7

Browse files
committed
Fix various metadata handling (search form for css labels & stars rating fields)
1 parent bc181ac commit b8bddd7

File tree

5 files changed

+144
-115
lines changed

5 files changed

+144
-115
lines changed

core/src/plugins/gui.ajax/res/js/ajaxplorer.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/src/plugins/gui.ajax/res/js/ajaxplorer/class.FilesList.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2110,7 +2110,7 @@ Class.create("FilesList", SelectableElements, {
21102110

21112111
this._htmlElement.insert(largeRow);
21122112

2113-
this.getFromCache("columns").each(function(pair){
2113+
this.getFromCache("hiddenColumns").each(function(pair){
21142114
if(pair.value.modifierFunc){
21152115
pair.value.modifierFunc(largeRow, ajxpNode, 'detail', pair.value);
21162116
}

core/src/plugins/gui.ajax/res/js/ajaxplorer/class.SearchEngine.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,8 @@ Class.create("SearchEngine", AjxpPane, {
270270
formPanel.select('input,select,span.c3.selected').each(function(el){
271271
if(el.tagName.toLowerCase() == 'input' || el.tagName.toLowerCase() == 'select'){
272272
if(!el.getValue() || el.disabled) return;
273-
metadata.set(el.id, el.getValue());
273+
var name = el.id || el.name;
274+
if(name) metadata.set(name, el.getValue());
274275
}else{
275276
if(el.id == 'ajxp_folder'){
276277
metadata.set('ajxp_mime', 'ajxp_folder');
@@ -613,7 +614,7 @@ Class.create("SearchEngine", AjxpPane, {
613614
var input = advancedPanel.down('#'+fName);
614615
var func = eval(this._ajxpOptions.metaColumnsRenderers[optionValue]);
615616
if(Object.isFunction(func)){
616-
func(input);
617+
func(input, advancedPanel);
617618
}
618619
}
619620

core/src/plugins/meta.user/class.MetaCellRenderer.js

Lines changed: 136 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,9 @@ Class.create("MetaCellRenderer", {
6969
return configs;
7070
},
7171

72+
/*************/
7273
/* SELECTORS */
74+
/*************/
7375
selectorsFilter : function(element, ajxpNode, type, metadataDef, ajxpNodeObject){
7476
if(!metadataDef) return;
7577
if(!MetaCellRenderer.staticMetadataCache){
@@ -130,7 +132,9 @@ Class.create("MetaCellRenderer", {
130132
}
131133
},
132134

135+
/*****************/
133136
/* LABELS SYSTEM */
137+
/*****************/
134138
cssLabelsFilter : function(element, ajxpNode, type, metadataDef, ajxpNodeObject){
135139
var attName = metadataDef.attributeName;
136140
var content, obj, rule;
@@ -188,10 +192,15 @@ Class.create("MetaCellRenderer", {
188192
formPanelCssLabels: function(formElement, form){
189193
var value = formElement.value;
190194
var obj = new MetaCellRenderer();
191-
var hidden = new Element('input', {type:'hidden', name:formElement.name, value:formElement.value});
195+
var hidden = new Element('input', {
196+
type:'hidden',
197+
name:formElement.name,
198+
value:formElement.value,
199+
id: formElement.id
200+
});
192201
form.insert(hidden);
193202
var cssList = obj.cssList;
194-
var selector = new Element('select', {style:"width:56%;height:24px;"});
203+
var selector = new Element('select', {className:'select_meta_selector'});
195204
selector.insert(new Element('option', {
196205
name:'',
197206
value:'',
@@ -215,25 +224,31 @@ Class.create("MetaCellRenderer", {
215224
findCssRule : function(value){
216225
return this.cssList.get(value);
217226
},
218-
227+
228+
/*********************/
219229
/* STARS RATE SYSTEM */
230+
/*********************/
220231
starsRateFilter: function(element, ajxpNode, type, metadataDef, ajxpNodeObject){
221232
var attributeName = metadataDef.attributeName;
222233

223234
if(type == 'thumb') return;
224235
if(!element) return;
225236
var value = 0;
226237
try{
227-
var content = element.select('span')[0].innerHTML;
238+
var content = element.down('span').innerHTML;
228239
}catch(e){
229240
}
230241
if(content) value = parseInt(content);
242+
else{
243+
content = ajxpNode.getMetadata().get(attributeName);
244+
if(content) value = parseInt(content);
245+
}
231246
var obj = new MetaCellRenderer();
232247
if(element.down('span.text_label')){
233248
var div = obj.createStars(value, null, attributeName);
234249
div.setStyle({width:'70px'});
235250
if(type == 'detail') {
236-
div.setStyle({display:'inline'});
251+
div.setStyle({display:'inline-block'});
237252
}
238253
element.down('span.text_label').update(div);
239254
}else{
@@ -245,7 +260,122 @@ Class.create("MetaCellRenderer", {
245260
element.writeAttribute("data-"+attributeName+"-sorter_value", value);
246261
}
247262
},
248-
263+
264+
formPanelStars: function(formElement, form){
265+
var value = formElement.value;
266+
var name = formElement.name;
267+
var obj = new MetaCellRenderer();
268+
var div = obj.createStars(value, form, name);
269+
div.setStyle({paddingTop:3});
270+
formElement.replace(div);
271+
form.insert(new Element('input', {
272+
type:'hidden',
273+
name:name,
274+
value:value,
275+
id:formElement.id
276+
}));
277+
},
278+
279+
createStars : function(value, containingForm, elementName){
280+
var imgOff = 'plugins/meta.user/rating_off.png';
281+
var imgOn = 'plugins/meta.user/rating.png';
282+
var imgRemove = 'plugins/meta.user/rating_remove.png';
283+
var cont = new Element('div');
284+
var img;
285+
if(containingForm){
286+
img = new Element('img',{
287+
src:imgRemove,
288+
style:'float:left;cursor:pointer;margin-right:2px;padding-right:3px;border-right:1px solid #ccc;',
289+
note:0,
290+
title:MessageHash['meta.user.3']
291+
});
292+
cont.insert(img);
293+
}
294+
for(var i=1;i<6;i++){
295+
img = new Element('img',{
296+
src:(value>=i?imgOn:imgOff),
297+
style:'float:left;cursor:pointer;margin-right:2px;',
298+
note:i,
299+
title:i
300+
});
301+
cont.insert(img);
302+
}
303+
cont.select('img').invoke('observe', 'click', function(event){
304+
var note = Event.element(event).readAttribute('note');
305+
if(!containingForm){
306+
window.setTimeout(function(){
307+
var selectedNode = pydio.getUserSelection().getUniqueNode();
308+
var conn = new Connexion();
309+
conn.setParameters($H({
310+
get_action : 'edit_user_meta',
311+
file : selectedNode.getPath()
312+
}));
313+
conn.addParameter(elementName, note);
314+
conn.onComplete = function(transport){
315+
pydio.actionBar.parseXmlMessage(transport.responseXML);
316+
};
317+
conn.sendAsync();
318+
}, 500);
319+
}else{
320+
containingForm.down('input[name="'+elementName+'"]').setValue(note);
321+
var img = Event.element(event);
322+
img.previousSiblings('img[src="'+imgOff+'"]').each(function(i){if(i.src!=imgRemove){
323+
i.src = imgOn;
324+
}});
325+
img.nextSiblings('img[src="'+imgOn+'"]').each(function(i){i.src = imgOff;});
326+
img.src = imgOn;
327+
}
328+
});
329+
return cont;
330+
},
331+
332+
333+
/*******************/
334+
/* TAGS MODIFIERS */
335+
/*******************/
336+
formPanelTags: function(formElement, form){
337+
338+
var fieldName = formElement.name;
339+
var completer = new MetaTagsCompleter(formElement, fieldName);
340+
341+
},
342+
343+
displayTagsAsBlocks: function(element, value, ajxpNode){
344+
if(!value) return;
345+
var values = $A(value.split(",")).invoke("strip");
346+
element.update('');
347+
values.each(function(v){
348+
var tag = new Element('span', {className:"meta_user_tag_block"}).update(v + " <span class='icon-remove' style='cursor: pointer;'></span>");
349+
element.insert(tag);
350+
var remove = tag.down(".icon-remove");
351+
remove.observe("click", function(){
352+
var conn = new Connexion();
353+
conn.setParameters($H({
354+
get_action:"edit_user_meta",
355+
file: ajxpNode.getPath(),
356+
tags: values.without(v).join(", ")
357+
}));
358+
conn.onComplete = function(transport){
359+
pydio.actionBar.parseXmlMessage(transport.responseXML);
360+
};
361+
conn.sendAsync();
362+
});
363+
});
364+
},
365+
366+
/************/
367+
/* TEXTAREA */
368+
/************/
369+
formTextarea: function(formElement, form){
370+
var obj = new MetaCellRenderer();
371+
var cont = new Element('textarea', {name:formElement.name,style:'float: left;width: 161px;border-radius: 3px;padding: 2px;height:100px;'});
372+
cont.innerHTML = formElement.value;
373+
formElement.replace(cont);
374+
},
375+
376+
/********************/
377+
/* GENERIC METHODS */
378+
/********************/
249379
infoPanelModifier : function(htmlElement, ajxpNode){
250380
var obj = new MetaCellRenderer();
251381
htmlElement.select('[data-metatype]').each(function(td){
@@ -345,109 +475,6 @@ Class.create("MetaCellRenderer", {
345475
}, 500);
346476
});
347477

348-
},
349-
350-
formPanelStars: function(formElement, form){
351-
var value = formElement.value;
352-
var name = formElement.name;
353-
var obj = new MetaCellRenderer();
354-
var div = obj.createStars(value, form, name);
355-
div.setStyle({paddingTop:3});
356-
formElement.replace(div);
357-
form.insert(new Element('input', {type:'hidden',name:name,value:value}));
358-
},
359-
360-
createStars : function(value, containingForm, elementName){
361-
var imgOff = 'plugins/meta.user/rating_off.png';
362-
var imgOn = 'plugins/meta.user/rating.png';
363-
var imgRemove = 'plugins/meta.user/rating_remove.png';
364-
var cont = new Element('div');
365-
if(containingForm){
366-
var img = new Element('img',{
367-
src:imgRemove,
368-
style:'float:left;cursor:pointer;margin-right:2px;padding-right:3px;border-right:1px solid #ccc;',
369-
note:0,
370-
title:MessageHash['meta.user.3']
371-
});
372-
cont.insert(img);
373-
}
374-
for(var i=1;i<6;i++){
375-
var img = new Element('img',{
376-
src:(value>=i?imgOn:imgOff),
377-
style:'float:left;cursor:pointer;margin-right:2px;',
378-
note:i,
379-
title:i
380-
});
381-
cont.insert(img);
382-
}
383-
cont.select('img').invoke('observe', 'click', function(event){
384-
var note = Event.element(event).readAttribute('note');
385-
window.setTimeout(function(){
386-
var selectedNode = ajaxplorer.getUserSelection().getUniqueNode();
387-
var conn = new Connexion();
388-
var paramms = new Hash({
389-
get_action : 'edit_user_meta',
390-
file : selectedNode.getPath()
391-
});
392-
paramms.set(elementName, note);
393-
conn.setParameters(paramms);
394-
if(containingForm){
395-
containingForm.select('input').each(function(el){
396-
if(el.name != elementName){
397-
conn.addParameter(el.name, el.value);
398-
}
399-
});
400-
}
401-
conn.onComplete = function(){
402-
//ajaxplorer.getContextHolder().setPendingSelection(selectedNode.getPath());
403-
ajaxplorer.fireNodeRefresh(selectedNode);
404-
if(containingForm){
405-
hideLightBox(true);
406-
}
407-
};
408-
conn.sendAsync();
409-
}, 500);
410-
});
411-
return cont;
412-
},
413-
414-
// mod for textarea
415-
formTextarea: function(formElement, form){
416-
var obj = new MetaCellRenderer();
417-
var cont = new Element('textarea', {name:formElement.name,style:'float: left;width: 161px;border-radius: 3px;padding: 2px;height:100px;'});
418-
cont.innerHTML = formElement.value;
419-
formElement.replace(cont);
420-
},
421-
422-
423-
formPanelTags: function(formElement, form){
424-
425-
var fieldName = formElement.name;
426-
var completer = new MetaTagsCompleter(formElement, fieldName);
427-
428-
},
429-
430-
displayTagsAsBlocks: function(element, value, ajxpNode){
431-
if(!value) return;
432-
var values = $A(value.split(",")).invoke("strip");
433-
element.update('');
434-
values.each(function(v){
435-
var tag = new Element('span', {className:"meta_user_tag_block"}).update(v + " <span class='icon-remove' style='cursor: pointer;'></span>");
436-
element.insert(tag);
437-
var remove = tag.down(".icon-remove");
438-
remove.observe("click", function(){
439-
var conn = new Connexion();
440-
conn.setParameters($H({
441-
get_action:"edit_user_meta",
442-
file: ajxpNode.getPath(),
443-
tags: values.without(v).join(", ")
444-
}));
445-
conn.onComplete = function(transport){
446-
pydio.actionBar.parseXmlMessage(transport.responseXML);
447-
};
448-
conn.sendAsync();
449-
});
450-
});
451478
}
452479

453480
});

core/src/plugins/meta.user/class.UserMetaManager.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,13 +97,13 @@ public function initMeta($accessDriver)
9797
$col->setAttribute("modifier", "MetaCellRenderer.prototype.starsRateFilter");
9898
$col->setAttribute("sortType", "CellSorterValue");
9999
$searchables[$key] = $label;
100-
$searchablesRenderers[$key] = "MetaCellRenderer.prototype.starsRateFilter";
100+
$searchablesRenderers[$key] = "MetaCellRenderer.prototype.formPanelStars";
101101
break;
102102
case "css_label":
103103
$col->setAttribute("modifier", "MetaCellRenderer.prototype.cssLabelsFilter");
104104
$col->setAttribute("sortType", "CellSorterValue");
105105
$searchables[$key] = $label;
106-
$searchablesRenderers[$key] = "MetaCellRenderer.prototype.cssLabelsFilter";
106+
$searchablesRenderers[$key] = "MetaCellRenderer.prototype.formPanelCssLabels";
107107
break;
108108
case "textarea":
109109
$searchables[$key] = $label;
@@ -121,6 +121,7 @@ public function initMeta($accessDriver)
121121
case "tags":
122122
$searchables[$key] = $label;
123123
$searchablesRenderers[$key] = "MetaCellRenderer.prototype.formPanelTags";
124+
break;
124125
default:
125126
break;
126127
}

0 commit comments

Comments
 (0)