Multiple directory option
This commit is contained in:
1 parent
1f4b94f53b
commit
17a08077c1
2 files changed
+105
No files matched your search
@@ -677,6 +677,93 @@ Option.Directory = new Class({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Option.Directories = new Class({
|
||||||
|
|
||||||
|
Extends: Option.String,
|
||||||
|
|
||||||
|
directories: [],
|
||||||
|
delimiter: '::',
|
||||||
|
|
||||||
|
afterInject: function(){
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
self.el.hide();
|
||||||
|
|
||||||
|
self.directories = [];
|
||||||
|
self.getValue().split(self.delimiter).each(function(value){
|
||||||
|
self.addDirectory(value);
|
||||||
|
});
|
||||||
|
self.addDirectory();
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
addDirectory: function(value){
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
var has_empty = false;
|
||||||
|
self.directories.each(function(dir){
|
||||||
|
if(!dir.getValue())
|
||||||
|
has_empty = true;
|
||||||
|
});
|
||||||
|
if(has_empty) return;
|
||||||
|
|
||||||
|
var dir = new Option.Directory(self.section, self.name, value || '', self.options);
|
||||||
|
$(dir).inject(self.el.getParent('fieldset'));
|
||||||
|
|
||||||
|
// Replace some properties
|
||||||
|
dir.save = self.saveItems.bind(self);
|
||||||
|
$(dir).getElement('label').set('text', 'Movie Folder');
|
||||||
|
$(dir).getElement('.formHint').destroy();
|
||||||
|
$(dir).addClass('multi_directory');
|
||||||
|
|
||||||
|
if(!value)
|
||||||
|
$(dir).addClass('is_empty');
|
||||||
|
|
||||||
|
// Add remove button
|
||||||
|
new Element('a.icon.delete', {
|
||||||
|
'events': {
|
||||||
|
'click': self.delItem.bind(self, dir)
|
||||||
|
}
|
||||||
|
}).inject(dir);
|
||||||
|
|
||||||
|
self.directories.include(dir);
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
delItem: function(dir){
|
||||||
|
var self = this;
|
||||||
|
self.directories.erase(dir);
|
||||||
|
|
||||||
|
$(dir).destroy();
|
||||||
|
|
||||||
|
self.addDirectory();
|
||||||
|
},
|
||||||
|
|
||||||
|
saveItems: function(){
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
var dirs = []
|
||||||
|
self.directories.each(function(dir){
|
||||||
|
if(dir.getValue()){
|
||||||
|
$(dir).removeClass('is_empty');
|
||||||
|
dirs.include(dir.getValue());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
$(dir).addClass('is_empty');
|
||||||
|
});
|
||||||
|
|
||||||
|
self.input.set('value', dirs.join(self.delimiter));
|
||||||
|
self.input.fireEvent('change');
|
||||||
|
|
||||||
|
self.addDirectory();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
Option.Choice = new Class({
|
Option.Choice = new Class({
|
||||||
Extends: Option.String,
|
Extends: Option.String,
|
||||||
|
|
||||||
|
|||||||
@@ -297,6 +297,24 @@
|
|||||||
.page .directory_list .actions:last-child > .save {
|
.page .directory_list .actions:last-child > .save {
|
||||||
background: #9dc156;
|
background: #9dc156;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.page .multi_directory.is_empty .delete {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page .multi_directory .delete {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.page .multi_directory:hover .delete {
|
||||||
|
display: inline-block;
|
||||||
|
width: 22px;
|
||||||
|
height: 24px;
|
||||||
|
vertical-align: top;
|
||||||
|
background-position: center;
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
.page .tag_input select {
|
.page .tag_input select {
|
||||||
width: 20%;
|
width: 20%;
|
||||||
|
|||||||
Reference in new issue
Block a user