aboutsummaryrefslogtreecommitdiffstats
path: root/admin/themes/default/js
diff options
context:
space:
mode:
authormistic100 <mistic@piwigo.org>2014-05-28 19:04:40 +0000
committermistic100 <mistic@piwigo.org>2014-05-28 19:04:40 +0000
commit9a842dd86af254aa5d2212d0e3e4a10961aef492 (patch)
tree5271edfc6826b58b160d59c8d210af4d38247444 /admin/themes/default/js
parent7b3783c9814173d05d5efb216d5b383a4aa2a8fe (diff)
feature 3077 : fix addAlbum process when creating the first ever album, improve data API
git-svn-id: http://piwigo.org/svn/trunk@28555 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to 'admin/themes/default/js')
-rw-r--r--admin/themes/default/js/LocalStorageCache.js27
-rw-r--r--admin/themes/default/js/addAlbum.js74
2 files changed, 59 insertions, 42 deletions
diff --git a/admin/themes/default/js/LocalStorageCache.js b/admin/themes/default/js/LocalStorageCache.js
index b2712dadf..67e804062 100644
--- a/admin/themes/default/js/LocalStorageCache.js
+++ b/admin/themes/default/js/LocalStorageCache.js
@@ -84,17 +84,20 @@
/*
* Load Selectize with cache content
- * @param $target {jQuery}
+ * @param $target {jQuery} may have some data attributes (create, default, value)
* @param options {object}
+ * - value (optional) list of preselected items (ids, or objects with "id" attribute")
* - default (optional) default value which will be forced if the select is emptyed
+ * - create (optional) allow item user creation
* - filter (optional) function called for each select before applying the data
* takes two parameters: cache data, options
* must return new data
*/
- AbstractSelectizer.prototype._selectize = function($target, options) {
+ AbstractSelectizer.prototype._selectize = function($target, globalOptions) {
this.get(function(data) {
$target.each(function() {
- var filtered, value;
+ var filtered, value, defaultValue,
+ options = $.extend({}, globalOptions);
// apply filter function
if (options.filter != undefined) {
@@ -105,10 +108,11 @@
}
// active creation mode
- if (this.hasAttribute('data-selectize-create')) {
- this.selectize.settings.create = true;
+ if (this.hasAttribute('data-create')) {
+ options.create = true;
}
-
+ this.selectize.settings.create = !!options.create;
+
// load options
this.selectize.load(function(callback) {
if ($.isEmptyObject(this.options)) {
@@ -118,6 +122,9 @@
// load items
if ((value = $(this).data('value'))) {
+ options.value = value;
+ }
+ if (options.value != undefined) {
$.each(value, $.proxy(function(i, cat) {
if ($.isNumeric(cat))
this.selectize.addItem(cat);
@@ -126,6 +133,14 @@
}, this));
}
+ // set default
+ if ((defaultValue = $(this).data('default'))) {
+ options.default = defaultValue;
+ }
+ if (options.default == 'first') {
+ options.default = filtered[0] ? filtered[0].id : undefined;
+ }
+
if (options.default != undefined) {
// add default item
if (this.selectize.getValue() == '') {
diff --git a/admin/themes/default/js/addAlbum.js b/admin/themes/default/js/addAlbum.js
index 0efdd8c95..02fb25f0d 100644
--- a/admin/themes/default/js/addAlbum.js
+++ b/admin/themes/default/js/addAlbum.js
@@ -4,19 +4,23 @@ jQuery.fn.pwgAddAlbum = function(options) {
}
var $popup = jQuery('#addAlbumForm');
- if (!$popup.data('init')) {
- $popup.find('[name="category_parent"]').selectize({
- valueField: 'id',
- labelField: 'fullname',
- sortField: 'global_rank',
- searchField: ['fullname'],
- plugins: ['remove_button'],
- onInitialize: function() {
- this.on('dropdown_close', function() {
- if (this.getValue() == '') {
- this.setValue(0);
- }
+
+ function init() {
+ if ($popup.data('init')) {
+ return;
+ }
+ $popup.data('init', true);
+
+ options.cache.selectize($popup.find('[name="category_parent"]'), {
+ 'default': 0,
+ 'filter': function(categories) {
+ categories.push({
+ id: 0,
+ fullname: '------------',
+ global_rank: 0
});
+
+ return categories;
}
});
@@ -47,10 +51,12 @@ jQuery.fn.pwgAddAlbum = function(options) {
jQuery('[data-add-album="'+ target +'"]').colorbox.close();
var newAlbum = data.result.id,
- newAlbum_name = '';
+ newAlbum_name = '',
+ newAlbum_rank = '0';
if (parent_id != 0) {
newAlbum_name = albumParent[0].selectize.options[parent_id].fullname +' / ';
+ newAlbum_rank = albumParent[0].selectize.options[parent_id].global_rank +'.1';
}
newAlbum_name+= name;
@@ -74,12 +80,24 @@ jQuery.fn.pwgAddAlbum = function(options) {
}
// target is selectize
else {
- $albumSelect[0].selectize.addOption({
- id: newAlbum,
- fullname: newAlbum_name
- });
+ var selectize = $albumSelect[0].selectize;
- $albumSelect[0].selectize.setValue(newAlbum);
+ if (jQuery.isEmptyObject(selectize.options)) {
+ options.cache.clear();
+ options.cache.selectize($albumSelect, {
+ 'default': newAlbum,
+ 'value': newAlbum
+ });
+ }
+ else {
+ $albumSelect[0].selectize.addOption({
+ id: newAlbum,
+ fullname: newAlbum_name,
+ global_rank: newAlbum_rank
+ });
+
+ $albumSelect[0].selectize.setValue(newAlbum);
+ }
}
albumParent.val('');
@@ -98,25 +116,9 @@ jQuery.fn.pwgAddAlbum = function(options) {
href: '#addAlbumForm',
width: 350, height: 300,
onComplete: function() {
- var albumParent = $popup.find('[name="category_parent"]')[0];
-
+ init();
$popup.data('target', jQuery(this).data('addAlbum'));
-
- albumParent.selectize.clearOptions();
-
- options.cache.get(function(categories) {
- categories.push({
- id: 0,
- fullname: '------------',
- global_rank: 0
- });
-
- albumParent.selectize.load(function(callback) {
- callback(categories);
- });
-
- albumParent.selectize.setValue(0);
- });
+ $popup.find('[name=category_name]').focus();
}
});