Skip to content
Code-Schnipsel Gruppen Projekte
Manager.js 20,8 KiB
Newer Older
  • Learn to ignore specific revisions
  • Henning Leutz's avatar
    Henning Leutz committed
     * Brick manager
    
    Henning Leutz's avatar
    Henning Leutz committed
     * @module package/quiqqer/bricks/bin/Manager
    
     * @author www.pcsg.de (Henning Leutz)
     */
    
    Henning Leutz's avatar
    Henning Leutz committed
    define('package/quiqqer/bricks/bin/Manager', [
    
    
        'qui/QUI',
        'qui/controls/desktop/Panel',
    
    Henning Leutz's avatar
    Henning Leutz committed
        'qui/controls/buttons/Select',
        'qui/controls/buttons/Button',
    
        'qui/controls/buttons/Separator',
    
    Henning Leutz's avatar
    Henning Leutz committed
        'qui/controls/windows/Confirm',
    
    Henning Leutz's avatar
    Henning Leutz committed
        'controls/grid/Grid',
        'Locale',
        'Projects',
    
    Henning Leutz's avatar
    Henning Leutz committed
        'Ajax',
    
        'package/quiqqer/bricks/bin/Bricks',
    
        'Mustache',
    
        'text!package/quiqqer/bricks/bin/Manager.Copy.html',
        'css!package/quiqqer/bricks/bin/Manager.Copy.css',
    
    Henning Leutz's avatar
    Henning Leutz committed
        'css!package/quiqqer/bricks/bin/Manager.css'
    
    Henning Leutz's avatar
    Henning Leutz committed
    
    
    ], function (QUI, QUIPanel, QUISelect, QUIButton, QUISeparator, QUIConfirm, Grid, QUILocale, Projects, Ajax,
    
                 Bricks, Mustache, templateCopy) {
    
        "use strict";
    
    
    Henning Leutz's avatar
    Henning Leutz committed
        var lg = 'quiqqer/bricks';
    
    
        return new Class({
    
    
    Henning Leutz's avatar
    Henning Leutz committed
            Extends: QUIPanel,
            Type   : 'package/quiqqer/bricks/bin/Manager',
    
    Henning Leutz's avatar
    Henning Leutz committed
            Binds: [
    
    Henning Leutz's avatar
    Henning Leutz committed
                'loadBricksFromProject',
    
    Henning Leutz's avatar
    Henning Leutz committed
                'refresh',
    
                '$refreshProjectLanguages',
    
    Henning Leutz's avatar
    Henning Leutz committed
                '$onCreate',
    
    Henning Leutz's avatar
    Henning Leutz committed
                '$onResize',
                '$openCreateDialog',
    
                '$openCopyDialog',
    
    Henning Leutz's avatar
    Henning Leutz committed
                '$openDeleteDialog',
                '$onDblClick',
    
                '$onClick',
                '$onInject',
                '$onDestroy'
    
    Henning Leutz's avatar
    Henning Leutz committed
            options: {
                title: QUILocale.get(lg, 'menu.bricks.text')
    
    Henning Leutz's avatar
    Henning Leutz committed
            initialize: function (options) {
                this.parent(options);
    
                this.$Grid          = false;
                this.$ProjectSelect = false;
                this.$ProjectLangs  = false;
    
                this.addEvents({
    
                    onCreate : this.$onCreate,
                    onResize : this.$onResize,
                    onInject : this.$onInject,
                    onDestroy: this.$onDestroy
    
    Henning Leutz's avatar
    Henning Leutz committed
            /**
             * Refresh the panel data
    
    Henning Leutz's avatar
    Henning Leutz committed
             *
             * @param {Function} [callback] - callback function
    
    Henning Leutz's avatar
    Henning Leutz committed
            refresh: function (callback) {
    
    Henning Leutz's avatar
    Henning Leutz committed
                if (!this.$Elm) {
    
                var self    = this,
                    project = this.$ProjectSelect.getValue(),
                    lang    = this.$ProjectLangs.getValue();
    
    Henning Leutz's avatar
    Henning Leutz committed
    
                this.Loader.show();
    
    
                Bricks.getBricksFromProject(project, lang).then(function (result) {
    
    Henning Leutz's avatar
    Henning Leutz committed
                    if (typeof callback === 'function') {
    
    Henning Leutz's avatar
    Henning Leutz committed
                        callback();
                    }
    
                    var options = self.$Grid.options,
                        page    = parseInt(options.page),
                        perPage = parseInt(options.perPage),
    
    Henning Leutz's avatar
    Henning Leutz committed
                        start   = (page - 1) * perPage;
    
    Henning Leutz's avatar
    Henning Leutz committed
                    self.$Grid.setData({
    
    Henning Leutz's avatar
    Henning Leutz committed
                        data : result.slice(start, start + perPage),
                        page : page,
                        total: result.length
    
    Henning Leutz's avatar
    Henning Leutz committed
                    });
    
    Henning Leutz's avatar
    Henning Leutz committed
                    self.refreshButtons();
    
    Henning Leutz's avatar
    Henning Leutz committed
                    self.Loader.hide();
                });
            },
    
    
    Henning Leutz's avatar
    Henning Leutz committed
            /**
             * Refresh the buttons status
             */
    
    Henning Leutz's avatar
    Henning Leutz committed
            refreshButtons: function () {
    
                var selected   = this.$Grid.getSelectedData(),
                    AddButton  = this.getButtons('brick-add'),
                    EditButton = this.getButtons('brick-edit'),
    
                    CopyButton = this.getButtons('brick-copy'),
    
                    DelButton  = this.getButtons('brick-delete');
    
    Henning Leutz's avatar
    Henning Leutz committed
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                if (!selected.length) {
    
    Henning Leutz's avatar
    Henning Leutz committed
                    AddButton.enable();
                    DelButton.disable();
    
                    CopyButton.disable();
    
                    EditButton.disable();
    
    Henning Leutz's avatar
    Henning Leutz committed
                    return;
                }
    
                AddButton.enable();
                DelButton.enable();
    
    
                if (selected.length === 1) {
    
                    EditButton.enable();
    
                    CopyButton.enable();
    
    Henning Leutz's avatar
    Henning Leutz committed
                if (selected.length > 1) {
    
                    EditButton.disable();
                    CopyButton.disable();
    
    Henning Leutz's avatar
    Henning Leutz committed
                }
            },
    
    
            /**
             * event : on create
             */
    
    Henning Leutz's avatar
    Henning Leutz committed
            $onCreate: function () {
    
    Henning Leutz's avatar
    Henning Leutz committed
                var self = this;
    
                // Buttons
                this.$ProjectSelect = new QUISelect({
    
    Henning Leutz's avatar
    Henning Leutz committed
                    name  : 'projects-name',
                    events: {
                        onChange: this.$refreshProjectLanguages
    
                    }
                });
    
                this.$ProjectLangs = new QUISelect({
    
    Henning Leutz's avatar
    Henning Leutz committed
                    name  : 'projects-langs',
                    events: {
                        onChange: this.refresh
    
    Henning Leutz's avatar
    Henning Leutz committed
                    styles: {
                        width: 80
    
    Henning Leutz's avatar
    Henning Leutz committed
                this.addButton(this.$ProjectSelect);
                this.addButton(this.$ProjectLangs);
    
                this.addButton(new QUISeparator());
    
    Henning Leutz's avatar
    Henning Leutz committed
    
                this.addButton(
                    new QUIButton({
    
                        textimage: 'fa fa-plus',
                        text     : QUILocale.get(lg, 'manager.button.add'),
                        title    : QUILocale.get(lg, 'manager.button.add'),
                        name     : 'brick-add',
                        disabled : true,
                        events   : {
    
    Henning Leutz's avatar
    Henning Leutz committed
                            onClick: this.$openCreateDialog
    
    Henning Leutz's avatar
    Henning Leutz committed
                        }
    
                this.addButton(new QUISeparator());
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                this.addButton(
                    new QUIButton({
    
                        textimage: 'fa fa-edit',
    
                        text     : QUILocale.get(lg, 'manager.button.edit.text'),
                        title    : QUILocale.get(lg, 'manager.button.edit.title'),
    
                        name     : 'brick-edit',
                        disabled : true,
                        events   : {
                            onClick: function () {
    
                                self.editBrick(
                                    self.$Grid.getSelectedData()[0].id
    
                            }
                        }
                    })
                );
    
                this.addButton(
                    new QUIButton({
                        textimage: 'fa fa-copy',
                        text     : QUILocale.get(lg, 'manager.button.copy.text'),
                        title    : QUILocale.get(lg, 'manager.button.copy.title'),
                        name     : 'brick-copy',
                        disabled : true,
                        events   : {
                            onClick: function () {
                                var data = self.$Grid.getSelectedData();
    
                                if (data.length === 1) {
                                    self.$openCopyDialog(data[0].id);
                                }
                            }
    
                        }
                    })
                );
    
                this.addButton(
                    new QUIButton({
                        icon    : 'fa fa-trash',
                        title   : QUILocale.get(lg, 'manager.button.delete'),
    
    Henning Leutz's avatar
    Henning Leutz committed
                        name    : 'brick-delete',
                        disabled: true,
    
                        styles  : {
                            'float': 'right'
                        },
    
    Henning Leutz's avatar
    Henning Leutz committed
                        events  : {
                            onClick: this.$openDeleteDialog
    
    Henning Leutz's avatar
    Henning Leutz committed
                // Grid
                var Container = new Element('div').inject(
                    this.getContent()
                );
    
    
                this.$Grid = new Grid(Container, {
    
    Henning Leutz's avatar
    Henning Leutz committed
                    columnModel      : [{
    
                        header   : QUILocale.get('quiqqer/quiqqer', 'id'),
    
    Henning Leutz's avatar
    Henning Leutz committed
                        dataIndex: 'id',
                        dataType : 'integer',
                        width    : 40
    
    Henning Leutz's avatar
    Henning Leutz committed
                    }, {
    
                        header   : QUILocale.get('quiqqer/quiqqer', 'title'),
    
    Henning Leutz's avatar
    Henning Leutz committed
                        dataIndex: 'title',
                        dataType : 'string',
                        width    : 140
    
    Henning Leutz's avatar
    Henning Leutz committed
                    }, {
    
                        header   : QUILocale.get('quiqqer/quiqqer', 'description'),
    
    Henning Leutz's avatar
    Henning Leutz committed
                        dataIndex: 'description',
                        dataType : 'string',
                        width    : 300
    
    Henning Leutz's avatar
    Henning Leutz committed
                    }, {
    
    Henning Leutz's avatar
    Henning Leutz committed
                        header   : QUILocale.get(lg, 'brick.type'),
                        dataIndex: 'type',
                        dataType : 'string',
                        width    : 200
    
    Henning Leutz's avatar
    Henning Leutz committed
                    }],
    
    Henning Leutz's avatar
    Henning Leutz committed
                    multipleSelection: true,
                    pagination       : true
    
    Henning Leutz's avatar
    Henning Leutz committed
                });
    
    Henning Leutz's avatar
    Henning Leutz committed
                this.$Grid.addEvents({
    
    Henning Leutz's avatar
    Henning Leutz committed
                    onRefresh : this.refresh,
                    onDblClick: this.$onDblClick,
                    onClick   : this.$onClick
    
    Henning Leutz's avatar
    Henning Leutz committed
                });
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                this.Loader.show();
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                Projects.getList(function (projects) {
                    for (var project in projects) {
    
    Henning Leutz's avatar
    Henning Leutz committed
                        if (!projects.hasOwnProperty(project)) {
    
    Henning Leutz's avatar
    Henning Leutz committed
                            continue;
                        }
    
                        self.$ProjectSelect.appendChild(
    
    Henning Leutz's avatar
    Henning Leutz committed
                            project, project, 'fa fa-home'
    
    Henning Leutz's avatar
    Henning Leutz committed
                        );
                    }
    
                    self.$ProjectSelect.setValue(
    
    Henning Leutz's avatar
    Henning Leutz committed
                        self.$ProjectSelect.firstChild().getAttribute('value')
    
            /**
             * event: on inject
             */
            $onInject: function () {
                Bricks.addEvents({
                    onBrickDelete: this.refresh,
                    onBrickSave  : this.refresh,
                    onBrickCopy  : this.refresh,
                    onBrickCreate: this.refresh
                });
            },
    
            /**
             * event: on destroy
             */
            $onDestroy: function () {
                Bricks.removeEvents({
                    onBrickDelete: this.refresh,
                    onBrickSave  : this.refresh,
                    onBrickCopy  : this.refresh,
                    onBrickCreate: this.refresh
                });
            },
    
    
    Henning Leutz's avatar
    Henning Leutz committed
            /**
             * event : on resize
             */
    
    Henning Leutz's avatar
    Henning Leutz committed
            $onResize: function () {
                if (!this.$Grid) {
    
    Henning Leutz's avatar
    Henning Leutz committed
                    return;
                }
    
                var Body = this.getContent();
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                if (!Body) {
    
    Henning Leutz's avatar
    Henning Leutz committed
                    return;
                }
    
    
                var size = Body.getSize();
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                this.$Grid.setHeight(size.y - 40);
                this.$Grid.setWidth(size.x - 40);
    
    Henning Leutz's avatar
    Henning Leutz committed
            /**
             * event : dbl click
             */
    
    Henning Leutz's avatar
    Henning Leutz committed
            $onDblClick: function () {
    
    Henning Leutz's avatar
    Henning Leutz committed
                this.editBrick(
    
    Henning Leutz's avatar
    Henning Leutz committed
                    this.$Grid.getSelectedData()[0].id
                );
            },
    
    
    Henning Leutz's avatar
    Henning Leutz committed
            /**
             * event : click
             */
    
    Henning Leutz's avatar
    Henning Leutz committed
            $onClick: function () {
    
    Henning Leutz's avatar
    Henning Leutz committed
                this.refreshButtons();
            },
    
    
             * Refresh the project language DropDown
    
    Henning Leutz's avatar
    Henning Leutz committed
            $refreshProjectLanguages: function () {
    
                var self          = this,
                    activeProject = this.$ProjectSelect.getValue();
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                Projects.getList(function (projects) {
                    for (var project in projects) {
                        if (!projects.hasOwnProperty(project)) {
    
                        if (activeProject !== project) {
    
    Henning Leutz's avatar
    Henning Leutz committed
                        var langs = projects[project].langs;
                        langs     = langs.split(',');
    
    
                        self.$ProjectLangs.clear();
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                        for (var i = 0, len = langs.length; i < len; i++) {
    
                            self.$ProjectLangs.appendChild(
    
    Henning Leutz's avatar
    Henning Leutz committed
                                langs[i], langs[i], 'fa fa-home'
    
                            );
                        }
    
                        self.$ProjectLangs.setValue(
    
    Henning Leutz's avatar
    Henning Leutz committed
                            self.$ProjectLangs.firstChild().getAttribute('value')
    
    Henning Leutz's avatar
    Henning Leutz committed
            /**
    
    Henning Leutz's avatar
    Henning Leutz committed
             * Opens the brick creation dialog
    
    Henning Leutz's avatar
    Henning Leutz committed
             */
    
    Henning Leutz's avatar
    Henning Leutz committed
            $openCreateDialog: function () {
    
    Henning Leutz's avatar
    Henning Leutz committed
                var self = this;
    
                new QUIConfirm({
    
    Henning Leutz's avatar
    Henning Leutz committed
                    title    : QUILocale.get(lg, 'manager.window.create.title'),
    
    Henning Leutz's avatar
    Henning Leutz committed
                    icon     : 'fa fa-th',
    
    Henning Leutz's avatar
    Henning Leutz committed
                    maxHeight: 300,
                    maxWidth : 400,
                    autoclose: false,
                    events   : {
                        onOpen: function (Win) {
    
    Henning Leutz's avatar
    Henning Leutz committed
                            var Body = Win.getContent();
    
                            Win.Loader.show();
    
    Henning Leutz's avatar
    Henning Leutz committed
                            Body.addClass('quiqqer-bricks-create');
    
    Henning Leutz's avatar
    Henning Leutz committed
    
                            Body.set(
                                'html',
    
                                '<label>' +
    
    Henning Leutz's avatar
    Henning Leutz committed
                                '   <span class="quiqqer-bricks-create-label-text">' +
    
    Henning Leutz's avatar
    Henning Leutz committed
                                QUILocale.get(lg, 'manager.window.create.label.title') +
    
    Henning Leutz's avatar
    Henning Leutz committed
                                '   </span>' +
    
                                '   <input type="text" name="title" required="required" />' +
    
    Henning Leutz's avatar
    Henning Leutz committed
                                '</label>' +
                                '<label>' +
    
    Henning Leutz's avatar
    Henning Leutz committed
                                '   <span class="quiqqer-bricks-create-label-text">' +
    
    Henning Leutz's avatar
    Henning Leutz committed
                                QUILocale.get(lg, 'manager.window.create.label.type') +
    
    Henning Leutz's avatar
    Henning Leutz committed
                                '   </span>' +
                                '   <select name="type"></select>' +
                                '</label>'
                            );
    
    
                            Bricks.getAvailableBricks().then(function (bricklist) {
    
    Henning Leutz's avatar
    Henning Leutz committed
                                if (!Body) {
    
    Henning Leutz's avatar
    Henning Leutz committed
                                    return;
                                }
    
    
                                var i, len, group, title, val;
    
    Henning Leutz's avatar
    Henning Leutz committed
                                var Select = Body.getElement('select'),
                                    Title  = Body.getElement('[name="title"]');
    
    Henning Leutz's avatar
    Henning Leutz committed
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                                for (i = 0, len = bricklist.length; i < len; i++) {
                                    title = bricklist[i].title;
    
    Henning Leutz's avatar
    Henning Leutz committed
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                                    if ('group' in title) {
    
                                        group = title.group;
                                        val   = title.var;
    
    Henning Leutz's avatar
    Henning Leutz committed
                                    } else {
                                        group = title[0];
                                        val   = title[1];
    
    Henning Leutz's avatar
    Henning Leutz committed
                                    new Element('option', {
    
    Henning Leutz's avatar
    Henning Leutz committed
                                        value: bricklist[i].control,
                                        html : QUILocale.get(group, val)
                                    }).inject(Select);
    
    Henning Leutz's avatar
    Henning Leutz committed
                                }
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                                Title.focus.delay(500, Title);
    
    Henning Leutz's avatar
    Henning Leutz committed
    
                                Win.Loader.hide();
                            });
                        },
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                        onSubmit: function (Win) {
    
    Henning Leutz's avatar
    Henning Leutz committed
                            Win.Loader.show();
    
                            var Body  = Win.getContent(),
    
    Henning Leutz's avatar
    Henning Leutz committed
                                Title = Body.getElement('[name="title"]'),
                                Type  = Body.getElement('[name="type"]');
    
    Henning Leutz's avatar
    Henning Leutz committed
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                            if (Title.value === '') {
                                QUI.getMessageHandler(function (MH) {
    
    Henning Leutz's avatar
    Henning Leutz committed
                                        QUILocale.get(lg, 'exception.brick.has.no.title'),
    
    Henning Leutz's avatar
    Henning Leutz committed
                                return;
                            }
    
    
                            var project = self.$ProjectSelect.getValue(),
    
                                lang    = self.$ProjectLangs.getValue(),
                                data    = {
                                    title: Title.value,
                                    type : Type.value
                                };
    
                            Bricks.createBrick(project, lang, data).then(function (brickId) {
    
    Henning Leutz's avatar
    Henning Leutz committed
                                Win.close();
    
                                self.editBrick(brickId);
    
    Henning Leutz's avatar
    Henning Leutz committed
                            });
                        }
                    }
                }).open();
            },
    
            /**
    
    Henning Leutz's avatar
    Henning Leutz committed
             * Opens the delete brick dialog
    
    Henning Leutz's avatar
    Henning Leutz committed
             */
    
    Henning Leutz's avatar
    Henning Leutz committed
            $openDeleteDialog: function () {
    
    Henning Leutz's avatar
    Henning Leutz committed
                var self     = this,
    
    Henning Leutz's avatar
    Henning Leutz committed
                    brickIds = this.$Grid.getSelectedData().map(function (brick) {
    
    Henning Leutz's avatar
    Henning Leutz committed
                        return brick.id;
    
    Henning Leutz's avatar
    Henning Leutz committed
                    });
    
                new QUIConfirm({
    
    Henning Leutz's avatar
    Henning Leutz committed
                    maxHeight: 300,
                    maxWidth : 600,
                    autoclose: false,
                    title    : QUILocale.get(lg, 'manager.window.delete.title'),
                    events   : {
                        onOpen: function (Win) {
    
    Henning Leutz's avatar
    Henning Leutz committed
                            var Content = Win.getContent(),
                                lists   = '<ul>';
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                            self.$Grid.getSelectedData().each(function (brick) {
                                lists = lists + '<li>' + brick.id + ' - ' + brick.title + '</li>';
    
    Henning Leutz's avatar
    Henning Leutz committed
                            });
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                            lists = lists + '</ul>';
    
    Henning Leutz's avatar
    Henning Leutz committed
    
                            Content.set(
                                'html',
    
    Henning Leutz's avatar
    Henning Leutz committed
                                QUILocale.get(lg, 'manager.window.delete.information', {
                                    list: lists
    
    Henning Leutz's avatar
    Henning Leutz committed
                                })
    
    Henning Leutz's avatar
    Henning Leutz committed
                            );
                        },
    
    
    Henning Leutz's avatar
    Henning Leutz committed
                        onSubmit: function (Win) {
    
    Henning Leutz's avatar
    Henning Leutz committed
                            Win.Loader.show();
    
    
                            Bricks.deleteBricks(brickIds).then(function () {
    
    Henning Leutz's avatar
    Henning Leutz committed
                                Win.close();
                            });
                        }
                    }
                }).open();
            },
    
    
            /**
             * opens the copy dialog
             */
            $openCopyDialog: function (brickId) {
                var self = this;
    
                new QUIConfirm({
                    title    : QUILocale.get(lg, 'dialog.copy.title', {
                        id: brickId
                    }),
                    icon     : 'fa fa-copy',
                    maxHeight: 600,
                    maxWidth : 800,
                    autoclose: false,
    
                    events: {
                        onOpen: function (Win) {
                            Win.Loader.show();
    
                            var Content = Win.getContent(),
                                project = self.$ProjectSelect.getValue(),
                                lang    = self.$ProjectLangs.getValue(),
                                Project = Projects.get(project);
    
                            Content.set('html', Mustache.render(templateCopy, {
                                text: QUILocale.get(lg, 'dialog.copy.message')
                            }));
    
                            Project.getConfig().then(function (config) {
                                var Select = new QUISelect({
                                    name: 'language-select'
                                });
    
                                var langs = config.langs.split(',');
    
                                for (var i = 0, len = langs.length; i < len; i++) {
                                    Select.appendChild(
                                        QUILocale.get('quiqqer/system', 'language.' + langs[i]),
                                        langs[i],
                                        URL_BIN_DIR + '16x16/flags/' + langs[i] + '.png'
                                    );
                                }
    
                                Select.inject(Content.getElement('.dialog-bricks-copy-languages'));
                                Select.getElm().setStyle('width', '100%');
                                Select.getElm().setStyle('border', 0);
    
                                Select.setValue(lang);
    
    
                                Bricks.getBrick(brickId).then(function (data) {
    
                                    var Form = Content.getElement('form');
    
                                    Form.elements.title.value       = data.attributes.title;
                                    Form.elements.description.value = data.attributes.description;
    
                                    Win.Loader.hide();
                                });
                            });
                        },
    
                        onSubmit: function (Win) {
                            Win.Loader.show();
    
                            var Content = Win.getContent(),
                                Form    = Content.getElement('form');
    
                            var Select   = Content.getElement('.dialog-bricks-copy-languages [data-quiid]');
                            var Language = QUI.Controls.getById(Select.get('data-quiid'));
    
    
                            Bricks.copyBrick(brickId, {
                                'lang'       : Language.getValue(),
                                'title'      : Form.elements.title.value,
                                'description': Form.elements.description.value
                            }).then(function (data) {
    
                                Win.close();
    
                                self.editBrick(data.id);
    
    Henning Leutz's avatar
    Henning Leutz committed
            /**
    
             * Opens the brick panel
    
    Henning Leutz's avatar
    Henning Leutz committed
             *
    
             * @param {Number} brickId
    
    Henning Leutz's avatar
    Henning Leutz committed
             */
    
    Henning Leutz's avatar
    Henning Leutz committed
            editBrick: function (brickId) {
    
                require([
                    'package/quiqqer/bricks/bin/BrickEdit',
                    'utils/Panels'
    
    Henning Leutz's avatar
    Henning Leutz committed
                ], function (BrickEdit, PanelUtils) {
    
                    PanelUtils.openPanelInTasks(
                        new BrickEdit({
    
    Michael's avatar
    Michael committed
                            '#id'      : 'brick-edit-' + brickId,
    
    Henning Leutz's avatar
    Henning Leutz committed
                            id         : brickId,
                            projectName: this.$ProjectSelect.getValue(),
    
                            projectLang: this.$ProjectLangs.getValue()