diff --git a/bin/Area.js b/bin/Area.js index f1e84942a01993079106fa9787b8405894f10552..3878ff614d6527424ee4142602089f7129dd4713 100644 --- a/bin/Area.js +++ b/bin/Area.js @@ -5,14 +5,6 @@ * @module package/quiqqer/bricks/bin/BrickAreas * @author www.pcsg.de (Henning Leutz) * - * @require qui/QUI - * @require qui/controls/Control - * @require qui/controls/buttons/Button - * @require package/quiqqer/bricks/bin/AreaWindow - * @require Ajax - * @require Locale - * @require css!package/quiqqer/bricks/bin/Area.css - * * @event onLoaded [ this ] */ define('package/quiqqer/bricks/bin/Area', [ @@ -61,12 +53,12 @@ define('package/quiqqer/bricks/bin/Area', [ this.$Elm = new Element('div', { 'class': 'quiqqer-bricks-area smooth', html : '<div class="quiqqer-bricks-area-icon">' + - '<span class="fa fa-list-alt"></span>' + - '</div>' + - '<div class="quiqqer-bricks-area-content">' + - '<div class="quiqqer-bricks-area-content-title"></div>' + - '<div class="quiqqer-bricks-area-content-description"></div>' + - '</div>', + '<span class="fa fa-list-alt"></span>' + + '</div>' + + '<div class="quiqqer-bricks-area-content">' + + '<div class="quiqqer-bricks-area-content-title"></div>' + + '<div class="quiqqer-bricks-area-content-description"></div>' + + '</div>', events : { click: this.toggle } diff --git a/bin/AreaWindow.js b/bin/AreaWindow.js index 2aae032ae668b2d4ec570a2366f57550009421fc..e8b1a4a8cb0ed15baee49d2898cae0097e8fb1dc 100644 --- a/bin/AreaWindow.js +++ b/bin/AreaWindow.js @@ -5,12 +5,6 @@ * @module package/quiqqer/bricks/bin/AreaWindow * @author www.pcsg.de (Henning Leutz) * - * @require qui/QUI - * @require qui/controls/windows/Confirm - * @require package/quiqqer/bricks/bin/Area - * @require Ajax - * @require Locale - * * @event onSubmit [ this, areas ] */ define('package/quiqqer/bricks/bin/AreaWindow', [ @@ -93,6 +87,8 @@ define('package/quiqqer/bricks/bin/AreaWindow', [ * @param {Function} callback */ getList: function (callback) { + require(['']); + Ajax.get('package_quiqqer_bricks_ajax_project_getAreas', callback, { 'package': 'quiqqer/brick', project : JSON.encode({ diff --git a/bin/Areas.js b/bin/Areas.js new file mode 100644 index 0000000000000000000000000000000000000000..dbd8d12301fde728c7709012186ba06da4af7c4f --- /dev/null +++ b/bin/Areas.js @@ -0,0 +1,12 @@ +/** + * Main areas handler + * + * @module package/quiqqer/bricks/bin/Areas + * @author www.pcsg.de (Henning Leutz) + */ +define('package/quiqqer/bricks/bin/Areas', [ + 'package/quiqqer/bricks/bin/classes/Areas' +], function (Areas) { + "use strict"; + return new Areas(); +}); \ No newline at end of file diff --git a/bin/BrickAreas.js b/bin/BrickAreas.js index 83a12972e4713b54633aab39a979b80f6182a5c2..bb03b6682a671b9fae5acabd6bdb1d1f68333f72 100644 --- a/bin/BrickAreas.js +++ b/bin/BrickAreas.js @@ -1,4 +1,3 @@ - /** * BrickAreas Control * Edit and change the areas for the brick @@ -6,14 +5,6 @@ * @module package/quiqqer/bricks/bin/BrickAreas * @author www.pcsg.de (Henning Leutz) * - * @require qui/QUI - * @require qui/controls/Control - * @require qui/controls/buttons/Button - * @require package/quiqqer/bricks/bin/AreaWindow - * @require Ajax - * @require Locale - * @require css!package/quiqqer/bricks/bin/BrickAreas.css - * * @event onLoaded [ this ] */ define('package/quiqqer/bricks/bin/BrickAreas', [ @@ -22,32 +13,33 @@ define('package/quiqqer/bricks/bin/BrickAreas', [ 'qui/controls/Control', 'qui/controls/buttons/Button', 'package/quiqqer/bricks/bin/AreaWindow', + 'package/quiqqer/bricks/bin/Areas', 'Ajax', 'Locale', 'css!package/quiqqer/bricks/bin/BrickAreas.css' -], function (QUI, QUIControl, QUIButton, AreaWindow, Ajax, QUILocale) { +], function (QUI, QUIControl, QUIButton, AreaWindow, Areas, Ajax, QUILocale) { "use strict"; return new Class({ - Extends : QUIControl, - Type : 'package/quiqqer/bricks/bin/BrickAreas', + Extends: QUIControl, + Type : 'package/quiqqer/bricks/bin/BrickAreas', - Binds : [ + Binds: [ '$onDestroy' ], - options : { - brickId : false, // brickId - styles : false, - projectName : false, - projectLang : false, - areas : false + options: { + brickId : false, // brickId + styles : false, + projectName: false, + projectLang: false, + areas : false }, - initialize : function (options) { + initialize: function (options) { this.parent(options); this.$areas = {}; @@ -58,13 +50,13 @@ define('package/quiqqer/bricks/bin/BrickAreas', [ * * @return {HTMLElement} */ - create : function () { + create: function () { var self = this; this.$Elm = new Element('div', { - 'class' : 'quiqqer-bricks-brickareas', - html : '<div class="quiqqer-bricks-brickareas-container"></div>' + - '<div class="quiqqer-bricks-brickareas-buttons"></div>' + 'class': 'quiqqer-bricks-brickareas', + html : '<div class="quiqqer-bricks-brickareas-container"></div>' + + '<div class="quiqqer-bricks-brickareas-buttons"></div>' }); if (this.getAttribute('styles')) { @@ -75,21 +67,19 @@ define('package/quiqqer/bricks/bin/BrickAreas', [ this.$Buttons = this.$Elm.getElement('.quiqqer-bricks-brickareas-buttons'); new QUIButton({ - text : QUILocale.get('quiqqer/bricks', 'brick.edit.area.add'), - styles : { - width : '100%' + text : QUILocale.get('quiqqer/bricks', 'brick.edit.area.add'), + styles: { + width: '100%' }, - events : - { - onClick : function () { + events: { + onClick: function () { new AreaWindow({ - projectName : self.getAttribute('projectName'), - projectLang : self.getAttribute('projectLang'), - events : - { - onSubmit : function (Win, areas) { + projectName: self.getAttribute('projectName'), + projectLang: self.getAttribute('projectLang'), + events : { + onSubmit: function (Win, areas) { for (var i = 0, len = areas.length; i < len; i++) { - self.addArea(areas[ i ]); + self.addArea(areas[i]); } } } @@ -113,36 +103,66 @@ define('package/quiqqer/bricks/bin/BrickAreas', [ /** * Add an area + * * @param {String} area - name of the area */ - addArea : function (area) { + addArea: function (area) { if (area in this.$areas) { return; } var self = this; - this.$areas[ area ] = true; + this.$areas[area] = true; var BrickNode = new Element('div', { - 'class' : 'quiqqer-bricks-brickareas-area', - html : area, - 'data-area' : area + 'class' : 'quiqqer-bricks-brickareas-area', + html : '<span class="fa fa-spinner fa-spin"></span>', + 'data-area': area }).inject(this.$Container); + + Areas.getList( + this.getAttribute('projectName'), + this.getAttribute('projectLang') + ).then(function (list) { + var name = this.get('data-area'); + + var title = list.filter(function (Entry) { + return Entry.name === name; + }).map(function (Entry) { + return Entry.title; + }); + + if ("group" in title[0]) { + title = QUILocale.get( + title[0].group, + title[0].var + ); + } else { + title = title[0]; + } + + var Loader = this.getElement('.fa'); + + Loader.removeClass('fa'); + Loader.removeClass('fa-spinner'); + Loader.removeClass('fa-spin'); + Loader.set('html', title); + }.bind(BrickNode)); + new Element('span', { - 'class' : 'fa fa-times', - styles : { - cursor: 'pointer', + 'class': 'fa fa-times', + styles : { + cursor : 'pointer', marginLeft: 10 }, - events : - { - click : function () { + events : { + click: function () { var area = BrickNode.get('data-area'); - if (self.$areas[ area ]) { - delete self.$areas[ area ]; + if (self.$areas[area]) { + delete self.$areas[area]; } BrickNode.destroy(); @@ -156,7 +176,7 @@ define('package/quiqqer/bricks/bin/BrickAreas', [ * * @return {Array} */ - getAreas : function () { + getAreas: function () { var result = []; for (var area in this.$areas) { diff --git a/bin/Manager.js b/bin/Manager.js index ff2e0affa79348d8a1caf9d375029e6114b6894e..3fd66e5bd5269459b8733649c217b9c73d5bc1c2 100644 --- a/bin/Manager.js +++ b/bin/Manager.js @@ -3,18 +3,6 @@ * * @module package/quiqqer/bricks/bin/Manager * @author www.pcsg.de (Henning Leutz) - * - * @require qui/QUI - * @require qui/controls/desktop/Panel - * @require qui/controls/buttons/Select - * @require qui/controls/buttons/Button - * @require qui/controls/buttons/Separator - * @require qui/controls/windows/Confirm - * @require controls/grid/Grid - * @require Locale - * @require Projects - * @require Ajax - * @require css!package/quiqqer/bricks/bin/Manager.css */ define('package/quiqqer/bricks/bin/Manager', [ diff --git a/bin/classes/Areas.js b/bin/classes/Areas.js new file mode 100644 index 0000000000000000000000000000000000000000..280cfb3dc5e3bf653f17d9b52e5069a5159dd2c0 --- /dev/null +++ b/bin/classes/Areas.js @@ -0,0 +1,49 @@ +define('package/quiqqer/bricks/bin/classes/Areas', [ + + 'qui/QUI', + 'qui/classes/DOM', + 'Ajax' + +], function (QUI, QDOM, QUIAjax) { + "use strict"; + + return new Class({ + + Extends: QDOM, + Type : 'classes/editor/Manager', + + initialize: function (options) { + this.parent(options); + + this.$areas = null; + }, + + /** + * Return the area list + * + * @param project + * @param lang + * @return {Promise|*} + */ + getList: function (project, lang) { + if (this.$areas) { + return Promise.resolve(this.$areas); + } + + var self = this; + + return new Promise(function (resolve) { + QUIAjax.get('package_quiqqer_bricks_ajax_project_getAreas', function (result) { + self.$areas = result; + resolve(self.$areas); + }, { + 'package': 'quiqqer/brick', + project : JSON.encode({ + name: project, + lang: lang + }) + }); + }); + } + }); +});