Index: main/plugin-web/plugin.xml =================================================================== --- main/plugin-web/plugin.xml (revision 27170) +++ main/plugin-web/plugin.xml (working copy) @@ -2555,7 +2555,7 @@ + class="org.ametys.runtime.ui.impl.StaticContextualClientSideElement"> org.ametys.web.tool.page.Add.act @@ -2572,6 +2572,11 @@ content 2 + PLUGINS_WEB_CREATEPAGE_ACTIONS_NEWPAGE + page + org.ametys.web.default.Content.article + org.ametys.web.service.FilteredContentsService + Web_Rights_Page_AddContent Web_Rights_Page_AddService Web_Rights_Page_Templates @@ -2583,6 +2588,11 @@ js/org/ametys/web/tool/page/Actions.i18n.js + js/org/ametys/web/tool/page/AddPageWizzard-TagsCard.i18n.js + js/org/ametys/web/tool/page/AddPageWizzard-PageTypeCard.i18n.js + js/org/ametys/web/tool/page/AddPageWizzard-PageContentCard.i18n.js + js/org/ametys/web/tool/page/AddPageWizzard-CreatePageCard.i18n.js + js/org/ametys/web/tool/page/AddPageWizzard-Cards.i18n.js js/org/ametys/web/tool/page/AddPageWizzard.i18n.js js/org/ametys/ribbon/control/button/SitemapOrModifiablePageActionButton.js js/org/ametys/web/page/TemplatesMenu.i18n.js Index: main/plugin-web/resources/css/pages/addpage.css =================================================================== --- main/plugin-web/resources/css/pages/addpage.css (revision 27165) +++ main/plugin-web/resources/css/pages/addpage.css (working copy) @@ -13,8 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + +.add-page .x-window-mc { + background-color: #FFFFFF; +} -.add-page-card-panel label { +.add-page label { font-family: Arial, sans-serif !important; color:#404040 !important; font-size:0.9em; @@ -22,7 +26,7 @@ font-weight: bold; } -.add-page-card-panel input { +.add-page input { background-color:#FFFFFF !important; background-image:none !important; border:1px solid #C8CDD0 !important; @@ -31,26 +35,30 @@ margin-top: 0px !important; } -.add-page-card-panel .x-form-check-wrap input { +.add-page .x-form-check-wrap input { padding: 0 !important; } -.add-page-card-panel .hint { +.add-page .hint { padding-bottom: 10px; background-color: #FFF; color:#404040; } -.add-page-card-panel .hint-tags { +.add-page .hint-tags { padding: 5px; } -.add-page .add-page-templates, .add-page .add-page-contents, .add-page .add-page-services +.add-page .add-page-templates, +.add-page .add-page-contents, +.add-page .add-page-services { margin: 0 5px 0 5px; display: block; } -.add-page .add-page-templates .add-page-templates-title, .add-page .add-page-contents .add-page-contents-title, .add-page .add-page-services .add-page-services-title +.add-page .add-page-templates .add-page-templates-title, +.add-page .add-page-contents .add-page-contents-title, +.add-page .add-page-services .add-page-services-title { display: block; font-weight: bold; @@ -61,12 +69,16 @@ font-weight: normal; } -.add-page .add-page-templates .add-page-templates-description, .add-page .add-page-contents .add-page-contents-description, .add-page .add-page-services .add-page-services-description +.add-page .add-page-templates .add-page-templates-description, +.add-page .add-page-contents .add-page-contents-description, +.add-page .add-page-services .add-page-services-description { white-space: normal; } -.add-page .add-page-templates img, .add-page .add-page-contents img, .add-page .add-page-services img +.add-page .add-page-templates img, +.add-page .add-page-contents img, +.add-page .add-page-services img { float: left; height: 32px; Index: main/plugin-web/resources/js/org/ametys/web/helper/ChoosePageInSitemap.i18n.js =================================================================== --- main/plugin-web/resources/js/org/ametys/web/helper/ChoosePageInSitemap.i18n.js (revision 27165) +++ main/plugin-web/resources/js/org/ametys/web/helper/ChoosePageInSitemap.i18n.js (working copy) @@ -279,10 +279,9 @@ selectedNodeId = org.ametys.web.helper.ChoosePageInSitemap._tree.getSelectionModel().getSelectedNode().attributes['id']; } - org.ametys.web.tool.page.Add.internalAdd( + org.ametys.web.tool.page.Add.do( selectedNodeId, - org.ametys.web.helper.ChoosePageInSitemap._createPageCallback, - 'web' + org.ametys.web.helper.ChoosePageInSitemap._createPageCallback ); } Index: main/plugin-web/resources/js/org/ametys/web/page/LinkPage.i18n.js =================================================================== --- main/plugin-web/resources/js/org/ametys/web/page/LinkPage.i18n.js (revision 27165) +++ main/plugin-web/resources/js/org/ametys/web/page/LinkPage.i18n.js (working copy) @@ -293,11 +293,11 @@ } } } - var serverMessage = new org.ametys.servercomm.ServerMessage("web", 'page/set-link.xml', { pages: this._targetPagesId, url: url, "url-type": urlType }, org.ametys.servercomm.ServerComm.PRIORITY_MAJOR, this._actionCallback, this, { pagesIds: this._targetPagesId, pagesTitles: this._targetPagesTitle }, "xml"); + var serverMessage = new org.ametys.servercomm.ServerMessage("web", 'page/set-link.xml', { pages: this._targetPagesId, url: url, "url-type": urlType }, org.ametys.servercomm.ServerComm.PRIORITY_MAJOR, org.ametys.web.page.LinkPage._actionCallback, this, { pagesIds: this._targetPagesId, pagesTitles: this._targetPagesTitle }, "xml"); org.ametys.servercomm.ServerComm.getInstance().send(serverMessage); } -org.ametys.web.page.LinkPage.prototype._actionCallback = function(response, args) +org.ametys.web.page.LinkPage._actionCallback = function(response, args) { var pageIds = args["pagesIds"]; var pageTitles = args["pagesTitles"]; Index: main/plugin-web/resources/js/org/ametys/web/tool/page/AddPageWizzard-Cards.i18n.js =================================================================== --- main/plugin-web/resources/js/org/ametys/web/tool/page/AddPageWizzard-Cards.i18n.js (revision 0) +++ main/plugin-web/resources/js/org/ametys/web/tool/page/AddPageWizzard-Cards.i18n.js (revision 0) @@ -0,0 +1,213 @@ +/* + * Copyright 2014 Anyware Services + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +Ext.namespace('org.ametys.web.tool.page.Add.ui'); + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +org.ametys.web.tool.page.Add.showDialog = function () +{ + org.ametys.web.tool.page.Add.ui._initialize(); + + Ext.each(org.ametys.web.tool.page.Add.ui._cards, function(card, index, array) { + card.resetModel(); + }); + + org.ametys.web.tool.page.Add.ui.box.show(); + + org.ametys.web.tool.page.Add._showCard(0); + + var fieldsInFirstCard = org.ametys.web.tool.page.Add.ui.box.items.get(0).findByType('field'); + if (fieldsInFirstCard && fieldsInFirstCard.length > 0) + { + window.setTimeout(function () { fieldsInFirstCard[0].focus(true); }, 1); + } +} + +org.ametys.web.tool.page.Add.hideDialog = function () +{ + org.ametys.web.tool.page.Add.ui.box.hide(); +} + +org.ametys.web.tool.page.Add.getModel = function () +{ + var model = org.ametys.web.tool.page.Add.getAdditionnalModel(); + + var currentCardIndex = org.ametys.web.tool.page.Add.ui.box.items.indexOf(org.ametys.web.tool.page.Add.ui.box.getLayout().activeItem); + Ext.each(org.ametys.web.tool.page.Add.ui._cards, function(card, index, array) { + if (index <= currentCardIndex) + { + Ext.apply(model, card.getModel()); + } + }); + + return model; +} + +org.ametys.web.tool.page.Add.getCurrentCard = function() +{ + var currentCardIndex = org.ametys.web.tool.page.Add.ui.box.items.indexOf(org.ametys.web.tool.page.Add.ui.box.getLayout().activeItem); + return org.ametys.web.tool.page.Add.ui._cards[currentCardIndex]; +} + +org.ametys.web.tool.page.Add.goToPreviousCard = function() +{ + var fullModel = org.ametys.web.tool.page.Add.getModel(); + var previousCardIndex = org.ametys.web.tool.page.Add.ui._getPreviousCardIndex(fullModel); + + org.ametys.web.tool.page.Add.getCurrentCard().onLeave(); + org.ametys.web.tool.page.Add._showCard(previousCardIndex); +} +org.ametys.web.tool.page.Add.goToNextCard = function() +{ + var fullModel = org.ametys.web.tool.page.Add.getModel(); + var nextCardIndex = org.ametys.web.tool.page.Add.ui._getNextCardIndex(fullModel); + + org.ametys.web.tool.page.Add.getCurrentCard().onLeave(); + org.ametys.web.tool.page.Add._showCard(nextCardIndex); +} + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +org.ametys.web.tool.page.Add.ui._cards = [org.ametys.web.tool.page.Add.createpage, org.ametys.web.tool.page.Add.pagetype, org.ametys.web.tool.page.Add.pagecontent, org.ametys.web.tool.page.Add.tags] + +org.ametys.web.tool.page.Add.ui._initialize = function () +{ + if (org.ametys.web.tool.page.Add.ui._initialized) + { + return true; + } + + var cardPanels = []; + Ext.each(org.ametys.web.tool.page.Add.ui._cards, function(card, index, array) { + cardPanels.push(card.create()); + }); + + var fieldsInFirstCard = cardPanels[0].findByType('field'); + + org.ametys.web.tool.page.Add.ui.box = new org.ametys.DialogBox({ + title :"", + icon : getPluginResourcesUrl(org.ametys.web.tool.page.Add.pluginName) + "/img/actions/page_add_16.png", + + cls: 'add-page', + + width :530, + height: 325, + autoScroll: true, + + activeItem: 0, // index or id + layout:'card', + layoutConfig: { + layoutOnCardChange: true + }, + + defaultButton: fieldsInFirstCard && fieldsInFirstCard.length > 0 ? fieldsInFirstCard[0] : null, + closeAction: 'hide', + + items: cardPanels, + + buttons : [ + { + id: 'add-page-wizzard-button-previous', + text: "", + handler: org.ametys.web.tool.page.Add.previous + }, + { + id: 'add-page-wizzard-button-next', + text: "", + handler: org.ametys.web.tool.page.Add.next + }, + { + id: 'add-page-wizzard-button-ok', + text: "", + handler : org.ametys.web.tool.page.Add.ok + }, + { + id: 'add-page-wizzard-button-cancel', + text: "", + handler : org.ametys.web.tool.page.Add.cancel + } + ] + }); + + org.ametys.web.tool.page.Add.ui._initialized = true; + + return true; +} + +org.ametys.web.tool.page.Add._showCard = function(index) +{ + org.ametys.web.tool.page.Add.ui.box.getLayout().setActiveItem(index); + org.ametys.web.tool.page.Add.getCurrentCard().onEnter(); + org.ametys.web.tool.page.Add.getCurrentCard().updateUI(); + org.ametys.web.tool.page.Add.ui._updateButtons(); +} + +org.ametys.web.tool.page.Add.ui._updateButtons = function() +{ + var fullModel = org.ametys.web.tool.page.Add.getModel(); + + // PREVIOUS BUTTON + var hasAPreviousCard = org.ametys.web.tool.page.Add.ui._getPreviousCardIndex(fullModel) != -1; + + // OK BUTTON + var isCurrentCardOk = org.ametys.web.tool.page.Add.getCurrentCard().isModelOk(fullModel); + + // NEXT BUTTON + var hasANextCard = isCurrentCardOk && org.ametys.web.tool.page.Add.ui._getNextCardIndex(fullModel) != -1; + + // APPLY + Ext.getCmp('add-page-wizzard-button-previous').setDisabled(!hasAPreviousCard); + Ext.getCmp('add-page-wizzard-button-next').setDisabled(!hasANextCard); + Ext.getCmp('add-page-wizzard-button-ok').setDisabled(!isCurrentCardOk); +} + +org.ametys.web.tool.page.Add.ui._getPreviousCardIndex = function(fullModel) +{ + var currentCardIndex = org.ametys.web.tool.page.Add.ui.box.items.indexOf(org.ametys.web.tool.page.Add.ui.box.getLayout().activeItem); + for (var i = currentCardIndex - 1; i >= 0; i--) + { + var cardI = org.ametys.web.tool.page.Add.ui._cards[i]; + if (cardI.isAvailable(fullModel)) + { + return i; + } + } + return -1; +} +org.ametys.web.tool.page.Add.ui._getNextCardIndex = function(fullModel) +{ + var currentCardIndex = org.ametys.web.tool.page.Add.ui.box.items.indexOf(org.ametys.web.tool.page.Add.ui.box.getLayout().activeItem); + for (var i = currentCardIndex + 1; i < org.ametys.web.tool.page.Add.ui._cards.length; i++) + { + var cardI = org.ametys.web.tool.page.Add.ui._cards[i]; + if (cardI.isAvailable(fullModel)) + { + return i; + } + } + return -1; +} + +org.ametys.web.tool.page.Add.ui._onChange = function() +{ + org.ametys.web.tool.page.Add.getCurrentCard().updateModel(); + org.ametys.web.tool.page.Add.ui._updateButtons(); +} Index: main/plugin-web/resources/js/org/ametys/web/tool/page/AddPageWizzard-CreatePageCard.i18n.js =================================================================== --- main/plugin-web/resources/js/org/ametys/web/tool/page/AddPageWizzard-CreatePageCard.i18n.js (revision 0) +++ main/plugin-web/resources/js/org/ametys/web/tool/page/AddPageWizzard-CreatePageCard.i18n.js (revision 0) @@ -0,0 +1,179 @@ +/* + * Copyright 2014 Anyware Services + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +Ext.namespace('org.ametys.web.tool.page.Add.createpage'); + +// Creates the UI and the MODEL. Called once then #resetModel is called. +org.ametys.web.tool.page.Add.createpage.create = function() +{ + org.ametys.web.tool.page.Add.createpage._model = {}; + org.ametys.web.tool.page.Add.createpage._model["wizzard"] = true; + + return new Ext.Panel ({ + id: 'add-page-createpage-card', + + border: false, + layout: 'form', + labelWidth :130, + labelAlign: 'top', + style: { + padding: '10px' + }, + items: [ + new org.ametys.HtmlContainer ({cls: 'hint', html: ""}), + + { + xtype: 'textfield', + + id: 'add-page-title', + + fieldLabel : "", + width: 200, + + allowBlank: false, + msgTarget: 'side', + + enableKeyEvents: true, + listeners: { + 'change': org.ametys.web.tool.page.Add.ui._onChange, + 'keyup': org.ametys.web.tool.page.Add.ui._onChange + } + }, + + new org.ametys.HtmlContainer ({cls: 'hint', html: ""}), + + { + xtype: 'textfield', + + id: 'add-page-title-long', + + fieldLabel : "", + width: 470, + + allowBlank: true, + msgTarget: 'side' + }, + + new org.ametys.HtmlContainer ({cls: 'hint', html: ""}), + + { + xtype: 'checkbox', + + id: 'add-page-wizzard', + + checked: true, + cls: 'checkbox-wizard', + + boxLabel: "", + hideLabel: true, + + listeners: { + 'check': function() { + org.ametys.web.tool.page.Add.ui._onChange(); + org.ametys.web.tool.page.Add.createpage._OKorNextButton(); + } + } + } + ] + }); +} + +// Reset MODEL. Called before dialog is used or reused. +org.ametys.web.tool.page.Add.createpage.resetModel = function() +{ + org.ametys.web.tool.page.Add.createpage._model["title"] = org.ametys.web.tool.page.Add.configuration["default-page-title"]; + org.ametys.web.tool.page.Add.createpage._model["title-long"] = ""; + // we do not reset the "wizzard" to remember it +} + +org.ametys.web.tool.page.Add.createpage.getUI = function() +{ + return Ext.getCmp("add-page-createpage-card"); +} + +org.ametys.web.tool.page.Add.createpage.getModel = function() +{ + return org.ametys.web.tool.page.Add.createpage._model; +} + +// Update the model to reflect the UI +org.ametys.web.tool.page.Add.createpage.updateModel = function() +{ + org.ametys.web.tool.page.Add.createpage._model["title"] = Ext.getCmp("add-page-title").getValue(); + org.ametys.web.tool.page.Add.createpage._model["title-long"] = Ext.getCmp("add-page-title-long").getValue(); + org.ametys.web.tool.page.Add.createpage._model["wizzard"] = Ext.getCmp("add-page-wizzard").getValue(); +} + +// Adapt the UI to reflect the model +org.ametys.web.tool.page.Add.createpage.updateUI = function() +{ + Ext.getCmp("add-page-title").setValue(org.ametys.web.tool.page.Add.createpage._model["title"]); + Ext.getCmp("add-page-title-long").setValue(org.ametys.web.tool.page.Add.createpage._model["title-long"]); + Ext.getCmp("add-page-wizzard").setValue(org.ametys.web.tool.page.Add.createpage._model["wizzard"]); +} + +//Can this screen be leaved? +org.ametys.web.tool.page.Add.createpage.isModelOk = function(fullModel) +{ + return fullModel["title"] && fullModel["title"] != ''; +} + +// Decide if this screen is available +org.ametys.web.tool.page.Add.createpage.isAvailable = function(fullModel) +{ + return false; +} + +org.ametys.web.tool.page.Add.createpage._OKorNextButton = function() +{ + Ext.getCmp('add-page-wizzard-button-next')[org.ametys.web.tool.page.Add.createpage._model["wizzard"] ? 'show' : 'hide'](); + Ext.getCmp('add-page-wizzard-button-ok')[org.ametys.web.tool.page.Add.createpage._model["wizzard"] ? 'hide' : 'show'](); +} + +org.ametys.web.tool.page.Add.createpage.onEnter = function() +{ + Ext.getCmp('add-page-wizzard-button-previous').hide(); + Ext.getCmp('add-page-wizzard-button-next').hide(); + + var nextButton = Ext.getCmp('add-page-wizzard-button-next'); + nextButton.autoWidth = false; + window.setTimeout("Ext.getCmp('add-page-wizzard-button-next').setWidth(156);", 1); + nextButton.setText(""); + + var terminateButton = Ext.getCmp('add-page-wizzard-button-ok'); + terminateButton.autoWidth = false; + window.setTimeout("Ext.getCmp('add-page-wizzard-button-ok').setWidth(156);", 1); + terminateButton.setText(""); + + org.ametys.web.tool.page.Add.createpage._OKorNextButton(); +} + +org.ametys.web.tool.page.Add.createpage.onLeave = function() +{ + Ext.getCmp('add-page-wizzard-button-previous').show(); + Ext.getCmp('add-page-wizzard-button-next').show(); + Ext.getCmp('add-page-wizzard-button-ok').show(); + + var nextButton = Ext.getCmp('add-page-wizzard-button-next'); + nextButton.autoWidth = true; + nextButton.setWidth(""); + nextButton.setText(nextButton.initialConfig.text); + + var terminateButton = Ext.getCmp('add-page-wizzard-button-ok'); + terminateButton.autoWidth = true; + terminateButton.setWidth(""); + terminateButton.setText(terminateButton.initialConfig.text); +} Index: main/plugin-web/resources/js/org/ametys/web/tool/page/AddPageWizzard-PageContentCard.i18n.js =================================================================== --- main/plugin-web/resources/js/org/ametys/web/tool/page/AddPageWizzard-PageContentCard.i18n.js (revision 0) +++ main/plugin-web/resources/js/org/ametys/web/tool/page/AddPageWizzard-PageContentCard.i18n.js (revision 0) @@ -0,0 +1,346 @@ +/* + * Copyright 2014 Anyware Services + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +Ext.namespace('org.ametys.web.tool.page.Add.pagecontent'); + +// Creates the UI and the MODEL. Called once then #resetModel is called. +org.ametys.web.tool.page.Add.pagecontent.create = function() +{ + org.ametys.web.tool.page.Add.pagecontent._model = {}; + + // Accordion with 2 panel : the multiselect contents Panel and the multiselect services Panel + return new Ext.Panel({ + id: 'add-page-pagecontent-card', + + layout:'accordion', + padding: 0, + border: false, + cls: 'add-page-content', + style: { + padding: '10px' + }, + + defaults: { + xtype: 'panel', + layout: 'form', + + cls: "ametys-fieldset", + border: false, + padding: "0 0 0 33px", + + labelWidth :130, + labelAlign: 'top', + + listeners: { + beforecollapse: org.ametys.web.tool.page.Add.pagecontent._onBeforeCollapse, + beforeexpand: org.ametys.web.tool.page.Add.pagecontent._onBeforeExpand, + // FIXME expand: org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep3 + }, + }, + items: [ + org.ametys.web.tool.page.Add.pagecontent._createContentTypesPanel4PageContentCard(), + org.ametys.web.tool.page.Add.pagecontent._createServicesPanel4PageContentCard() + ] + }); +} + +// Reset MODEL. Called before dialog is used or reused. +org.ametys.web.tool.page.Add.pagecontent.resetModel = function() +{ + org.ametys.web.tool.page.Add.pagecontent._model = {}; + + org.ametys.web.tool.page.Add.pagecontent._model["pagecontent-type"] = "contenttype"; + org.ametys.web.tool.page.Add.pagecontent._model["contenttype"] = org.ametys.web.tool.page.Add.configuration['default-contenttype']; + org.ametys.web.tool.page.Add.pagecontent._model["service"] = org.ametys.web.tool.page.Add.configuration['default-service']; +} + +org.ametys.web.tool.page.Add.pagecontent.getUI = function() +{ + return Ext.getCmp("add-page-pagecontent-card"); +} + +org.ametys.web.tool.page.Add.pagecontent.getModel = function() +{ + return org.ametys.web.tool.page.Add.pagecontent._model; +} + +// Update the model to reflect the UI +org.ametys.web.tool.page.Add.pagecontent.updateModel = function() +{ + org.ametys.web.tool.page.Add.pagecontent.resetModel(); + + if (Ext.getCmp("add-page-pagecontent-contenttype").collapsed == false) + { + org.ametys.web.tool.page.Add.pagecontent._model["pagecontent-type"] = "contenttype"; + org.ametys.web.tool.page.Add.pagecontent._model["contenttype"] = Ext.getCmp("add-page-pagecontent-contenttype-field").getValue(); + } + else + { + org.ametys.web.tool.page.Add.pagecontent._model["pagecontent-type"] = "service"; + org.ametys.web.tool.page.Add.pagecontent._model["service"] = Ext.getCmp("add-page-pagecontent-service-field").getValue(); + } +} + +// Adapt the UI to reflect the model +org.ametys.web.tool.page.Add.pagecontent.updateUI = function() +{ + Ext.getCmp("add-page-pagecontent-" + org.ametys.web.tool.page.Add.pagecontent._model["pagecontent-type"]).expand(); + + var fullModel = org.ametys.web.tool.page.Add.getModel(); + + var contentTypeField = Ext.getCmp("add-page-pagecontent-contenttype-field"); + var serviceField = Ext.getCmp("add-page-pagecontent-service-field"); + + if (org.ametys.web.tool.page.Add.pagecontent._displayingValuesForPageId == fullModel["page-id"]) + { + contentTypeField.setValue(fullModel["contenttype"]); + if (!contentTypeField.getValue()) + { + contentTypeField.setValue(contentTypeField.store.getAt(0).get('id')); + } + + serviceField.setValue(fullModel["service"]); + if (!serviceField.getValue()) + { + serviceField.setValue(serviceField.store.getAt(0).get('id')); + } + } + else + { + org.ametys.web.tool.page.Add.pagecontent._displayingValuesForPageId = fullModel["page-id"]; + + contentTypeField.store.removeAll(); + serviceField.store.removeAll(); + + var serverMessage = new org.ametys.servercomm.ServerMessage(org.ametys.web.tool.page.Add.pluginName, '/repository/page-contents-services', params, org.ametys.servercomm.ServerComm.PRIORITY_MAJOR, org.ametys.web.tool.page.Add.pagecontent._contenttypeAndServiceCB4updateUI, this, []); + org.ametys.servercomm.ServerComm.getInstance().send(serverMessage); + + org.ametys.web.tool.page.Add.ui.box.showWaitMsg(""); + } +} +org.ametys.web.tool.page.Add.pagecontent._contenttypeAndServiceCB4updateUI = function(response, args) +{ + org.ametys.web.tool.page.Add.ui.box.hideWaitMsg(); + + if (org.ametys.servercomm.ServerComm.handleBadResponse("", response, "org.ametys.web.tool.page.Add")) + { + return; + } + + // CONTENT TYPE + var contentTypeField = Ext.getCmp("add-page-pagecontent-contenttype-field"); + + var currentContentType = org.ametys.web.tool.page.Add.pagetype._model["contenttype"]; + org.ametys.web.tool.page.Add.pagetype._model["contenttype"] = ""; + + var contenttypes = response.selectNodes('*/contents/content'); + for (var i=0; i < contenttypes.length; i++) + { + var contenttype = new contentTypeField.store.recordType({ + 'id': contenttypes[i].getAttribute('id'), + 'label': contenttypes[i].selectSingleNode('label')[org.ametys.servercomm.ServerComm.xmlTextContent], + 'description': contenttypes[i].selectSingleNode('description')[org.ametys.servercomm.ServerComm.xmlTextContent], + 'smallIcon': contenttypes[i].selectSingleNode('icon-small')[org.ametys.servercomm.ServerComm.xmlTextContent], + 'mediumIcon': contenttypes[i].selectSingleNode('icon-medium')[org.ametys.servercomm.ServerComm.xmlTextContent], + 'largeIcon': contenttypes[i].selectSingleNode('icon-large')[org.ametys.servercomm.ServerComm.xmlTextContent] + }) + contentTypeField.store.addSorted(contenttype); + + if (i == 0 || contenttype.get('id') == currentContentType) + { + contentTypeField.setValue(contenttype.get('id')); + } + } + + // SERVICE + var serviceField = Ext.getCmp("add-page-pagecontent-service-field"); + + var currentService = org.ametys.web.tool.page.Add.pagetype._model["service"]; + org.ametys.web.tool.page.Add.pagetype._model["service"] = ""; + + var services = response.selectNodes('*/services/service'); + for (var i=0; i < services.length; i++) + { + var service = new serviceField.store.recordType({ + 'id': services[i].getAttribute('id'), + 'label': services[i].selectSingleNode('label')[org.ametys.servercomm.ServerComm.xmlTextContent], + 'description': services[i].selectSingleNode('description')[org.ametys.servercomm.ServerComm.xmlTextContent], + 'smallIcon': services[i].selectSingleNode('icon-small')[org.ametys.servercomm.ServerComm.xmlTextContent], + 'mediumIcon': services[i].selectSingleNode('icon-medium')[org.ametys.servercomm.ServerComm.xmlTextContent], + 'largeIcon': services[i].selectSingleNode('icon-large')[org.ametys.servercomm.ServerComm.xmlTextContent] + }) + serviceField.store.addSorted(service); + + if (i == 0 || service.get('id') == currentService) + { + serviceField.setValue(service.get('id')); + } + } + + org.ametys.web.tool.page.Add.ui._onChange(); +} + +//Can this screen be leaved? +org.ametys.web.tool.page.Add.pagecontent.isModelOk = function(fullModel) +{ + return fullModel[fullModel["pagecontent-type"]] && !fullModel[fullModel["pagecontent-type"]].contains(","); +} + +//Decide if this screen is available +org.ametys.web.tool.page.Add.pagecontent.isAvailable = function(fullModel) +{ + return fullModel["page-type"] == "template" + && (fullModel["right-content"] || fullModel["right-service"]); +} + + +org.ametys.web.tool.page.Add.pagecontent.onEnter = function() +{ + var fullModel = org.ametys.web.tool.page.Add.getModel(); + + Ext.getCmp("add-page-pagecontent-contenttype").setDisabled(!fullModel["right-contenttype"]); + Ext.getCmp("add-page-pagecontent-service").setDisabled(!fullModel["right-service"]); + + if (org.ametys.web.tool.page.Add.pagetype._model["pagecontent-type"] == "contenttype" && !fullModel["right-contenttype"]) + { + org.ametys.web.tool.page.Add.pagetype._model["pagecontent-type"] = "service"; + } +} + +org.ametys.web.tool.page.Add.pagecontent.onLeave = function() +{ +} + +//------------------------------------------------------------------------------------------------ +org.ametys.web.tool.page.Add.pagecontent._createContentTypesPanel4PageContentCard = function () +{ + // Panel with the Multiselect contents and hint + return { + id: "add-page-pagecontent-contenttype", + + title: "<b></b>", + + items: [ + new org.ametys.HtmlContainer ({cls: 'hint', html: ""}), + new org.ametys.form.MultiSelectField({ + id: "add-page-pagecontent-contenttype-field", + + lazyRender:true, + + width: 454, + height: 154, + + allowBlank: false, + hideLabel: true, + + mode: 'local', + minSelections: 1, + maxSelections: 1, + valueField: 'id', + displayField: 'text', + store: new Ext.data.ArrayStore({ + id: 0, + fields: [ + 'id', + 'text', + 'smallIcon', + 'description', + 'defaultTitle' + ], + sortInfo: { + field: 'text', + direction: 'ASC' + }, + data: [] + }), + + listeners: { + // FIXME change: org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep3 + }, + + tpl: "<div class='add-page-contents'><img src='{context.contextPath}{smallIcon}'/><span class='add-page-contents-title'>{text}</span><span class='add-page-contents-description'>{description}</span><div class='x-clear'></div></div>" + }) + ] + }; +} +//------------------------------------------------------------------------------------------------ +org.ametys.web.tool.page.Add.pagecontent._createServicesPanel4PageContentCard = function () +{ + // Panel with the Multiselect services and hint + return { + id: "add-page-pagecontent-service", + + title: "<b></b>", + + items: [ + new org.ametys.HtmlContainer ({cls: 'hint', html: ""}), + new org.ametys.form.MultiSelectField({ + id: "add-page-pagecontent-service-field", + + lazyRender:true, + + allowBlank: false, + hideLabel: true, + + width: 454, + height: 154, + + mode: 'local', + minSelections: 1, + maxSelections: 1, + valueField: 'id', + displayField: 'text', + store: new Ext.data.ArrayStore({ + id: 0, + fields: [ + 'id', + 'text', + 'smallIcon', + 'description', + 'parametersAction' + ], + sortInfo: { + field: 'text', + direction: 'ASC' + }, + data: [] + }), + + listeners: { + // FIXME change: org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep3 + }, + + tpl: "<div class='add-page-services'><img src='{context.contextPath}{smallIcon}'/><span class='add-page-services-title'>{text}</span><span class='add-page-services-description'>{description}</span><div class='x-clear'></div></div>" + }) + ] + }; +} + +// ------------------------------------------------------------------------------------------------ +org.ametys.web.tool.page.Add.pagecontent._lastExpandedPanel = 'add-page-pagecontent-contenttype'; + +// Remember last expanded panel +org.ametys.web.tool.page.Add.pagecontent._onBeforeExpand = function (panel) +{ + org.ametys.web.tool.page.Add.pagetype._lastExpandedPanel = panel.id; +} +org.ametys.web.tool.page.Add.pagecontent._onBeforeCollapse = function (panel) +{ + if (org.ametys.web.tool.page.Add.pagetype._lastExpandedPanel == panel.id) + { + return false; + } +} Index: main/plugin-web/resources/js/org/ametys/web/tool/page/AddPageWizzard-PageTypeCard.i18n.js =================================================================== --- main/plugin-web/resources/js/org/ametys/web/tool/page/AddPageWizzard-PageTypeCard.i18n.js (revision 0) +++ main/plugin-web/resources/js/org/ametys/web/tool/page/AddPageWizzard-PageTypeCard.i18n.js (revision 0) @@ -0,0 +1,355 @@ +/* + * Copyright 2014 Anyware Services + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +Ext.namespace('org.ametys.web.tool.page.Add.pagetype'); + +// Creates the UI and the MODEL. Called once then #resetModel is called. +org.ametys.web.tool.page.Add.pagetype.create = function() +{ + org.ametys.web.tool.page.Add.pagetype._model = {}; + + // Accordion with 3 panel : the multiselect templates Panel, the external + // link Panel and the simple page Panel + return new Ext.Panel({ + id: 'add-page-pagetype-card', + + layout:'accordion', + padding: 0, + border: false, + style: { + padding: '10px' + }, + + defaults: { + border: false, + cls: "ametys-fieldset", + labelWidth :130, + labelAlign: 'top', + layout: 'form', + xtype: 'panel', + padding: "0 0 0 33px", + listeners: { + beforecollapse: org.ametys.web.tool.page.Add.pagetype._onBeforeCollapse, + beforeexpand: org.ametys.web.tool.page.Add.pagetype._onBeforeExpand, + expand: org.ametys.web.tool.page.Add.ui._onChange + } + }, + + items: [ + org.ametys.web.tool.page.Add.pagetype._createSelectTemplatePanel4SelectPageTypeCard(), + org.ametys.web.tool.page.Add.pagetype._createSitemapRedirection4SelectPageTypeCard(), + org.ametys.web.tool.page.Add.pagetype._createExternalLinkRedirectionPanel4SelectPageTypeCard(), + org.ametys.web.tool.page.Add.pagetype._createBlankPagePanel4SelectPageTypeCard() + ] + }); +} + +// Reset MODEL. Called before dialog is used or reused. +org.ametys.web.tool.page.Add.pagetype.resetModel = function() +{ + org.ametys.web.tool.page.Add.pagetype._model = {}; + org.ametys.web.tool.page.Add.pagetype._model["page-type"] = "template"; + org.ametys.web.tool.page.Add.pagetype._model["template"] = org.ametys.web.tool.page.Add.configuration['default-template']; + org.ametys.web.tool.page.Add.pagetype._model["redirection-http"] = "http://"; + org.ametys.web.tool.page.Add.pagetype._model["redirection-cms"] = ""; +} + +org.ametys.web.tool.page.Add.pagetype.getModel = function() +{ + return org.ametys.web.tool.page.Add.pagetype._model; +} + +org.ametys.web.tool.page.Add.pagetype.getUI = function() +{ + return Ext.getCmp("add-page-pagetype-card"); +} + +// Update the model to reflect the UI +org.ametys.web.tool.page.Add.pagetype.updateModel = function() +{ + org.ametys.web.tool.page.Add.pagetype.resetModel(); + + if (Ext.getCmp("add-page-pagetype-template").collapsed == false) + { + org.ametys.web.tool.page.Add.pagetype._model["page-type"] = "template"; + org.ametys.web.tool.page.Add.pagetype._model["template"] = Ext.getCmp("add-page-pagetype-template-field").getValue(); + } + else if (Ext.getCmp("add-page-pagetype-redirection-http").collapsed == false) + { + org.ametys.web.tool.page.Add.pagetype._model["page-type"] = "redirection-http"; + org.ametys.web.tool.page.Add.pagetype._model["redirection-http"] = Ext.getCmp("add-page-pagetype-redirection-http-field").getValue(); + } + else if (Ext.getCmp("add-page-pagetype-redirection-cms").collapsed == false) + { + org.ametys.web.tool.page.Add.pagetype._model["page-type"] = "redirection-cms"; + org.ametys.web.tool.page.Add.pagetype._model["redirection-cms"] = Ext.getCmp("add-page-pagetype-redirection-cms-field").getValue(); + } + else + { + org.ametys.web.tool.page.Add.pagetype._model["page-type"] = "blank"; + } +} + +// Adapt the UI to reflect the model +org.ametys.web.tool.page.Add.pagetype.updateUI = function() +{ + Ext.getCmp("add-page-pagetype-" + org.ametys.web.tool.page.Add.pagetype._model["page-type"]).expand(); + + var fullModel = org.ametys.web.tool.page.Add.getModel(); + + var templateField = Ext.getCmp("add-page-pagetype-template-field"); + // is store loaded for the right page? + if (org.ametys.web.tool.page.Add.pagetype._displayingValuesForPageId == fullModel["page-id"]) + { + templateField.setValue(fullModel["template"]); + if (!templateField.getValue()) + { + templateField.setValue(templateField.store.getAt(0).get('id')); + } + } + else + { + org.ametys.web.tool.page.Add.pagetype._displayingValuesForPageId = fullModel["page-id"]; + templateField.store.removeAll(); + org.ametys.servercomm.ServerComm.getInstance().send(new org.ametys.servercomm.ServerMessage(org.ametys.web.tool.page.Add.pluginName, 'repository/page-templates', {pageId: templateField._pageId}, org.ametys.servercomm.ServerComm.PRIORITY_MAJOR, org.ametys.web.tool.page.Add.pagetype._templateCB4updateUI, this, [])); + + org.ametys.web.tool.page.Add.ui.box.showWaitMsg(""); + } + + Ext.getCmp("add-page-pagetype-redirection-http-field").setValue(org.ametys.web.tool.page.Add.pagetype._model["redirection-http"]); + Ext.getCmp("add-page-pagetype-redirection-cms-field").setValue(org.ametys.web.tool.page.Add.pagetype._model["redirection-cms"], true); +} + +org.ametys.web.tool.page.Add.pagetype._templateCB4updateUI = function(response, args) +{ + org.ametys.web.tool.page.Add.ui.box.hideWaitMsg(); + + if (org.ametys.servercomm.ServerComm.handleBadResponse("", response, "org.ametys.web.tool.page.Add")) + { + return; + } + + var templateField = Ext.getCmp("add-page-pagetype-template-field"); + var store = templateField.store; + + var currentTemplate = org.ametys.web.tool.page.Add.pagetype._model["template"]; + org.ametys.web.tool.page.Add.pagetype._model["template"] = ""; + + var templates = response.selectNodes('templates/template'); + for (var i=0; i < templates.length; i++) + { + var template = new store.recordType({ + 'id': templates[i].getAttribute('id'), + 'label': templates[i].selectSingleNode('label')[org.ametys.servercomm.ServerComm.xmlTextContent], + 'description': templates[i].selectSingleNode('description')[org.ametys.servercomm.ServerComm.xmlTextContent], + 'smallIcon': templates[i].selectSingleNode('icon-small')[org.ametys.servercomm.ServerComm.xmlTextContent], + 'mediumIcon': templates[i].selectSingleNode('icon-medium')[org.ametys.servercomm.ServerComm.xmlTextContent], + 'largeIcon': templates[i].selectSingleNode('icon-large')[org.ametys.servercomm.ServerComm.xmlTextContent] + }) + store.addSorted(template); + + if (i == 0 || template.get('id') == currentTemplate) + { + templateField.setValue(template.get('id')); + } + } + + org.ametys.web.tool.page.Add.ui._onChange(); +} + +//Can this screen be leaved? +org.ametys.web.tool.page.Add.pagetype.isModelOk = function(fullModel) +{ + return (fullModel["page-type"] == "template" && fullModel["template"] && !fullModel["template"].contains(",")) + || (fullModel["page-type"] == "redirection-http" && fullModel["redirection-http"]) + || (fullModel["page-type"] == "redirection-cms" && fullModel["redirection-cms"]) + || fullModel["page-type"] == "blank"; +} + +//Decide if this screen is available +org.ametys.web.tool.page.Add.pagetype.isAvailable = function(fullModel) +{ + return true; +} + +org.ametys.web.tool.page.Add.pagetype.onEnter = function() +{ + var fullModel = org.ametys.web.tool.page.Add.getModel(); + + Ext.getCmp("add-page-pagetype-template").setDisabled(!fullModel["right-template"]); + Ext.getCmp("add-page-pagetype-redirection-cms").setDisabled(!fullModel["right-link"]); + Ext.getCmp("add-page-pagetype-redirection-http").setDisabled(!fullModel["right-link"]); + + if (org.ametys.web.tool.page.Add.pagetype._model["page-type"] == "template" && !fullModel["right-template"]) + { + org.ametys.web.tool.page.Add.pagetype._model["page-type"] = "redirection-cms"; + } + if (org.ametys.web.tool.page.Add.pagetype._model["page-type"] == "redirection-cms" && !fullModel["right-link"]) + { + org.ametys.web.tool.page.Add.pagetype._model["page-type"] = "blank"; + } +} + +org.ametys.web.tool.page.Add.pagetype.onLeave = function() +{ +} + +//------------------------------------------------------------------------------------------------ +org.ametys.web.tool.page.Add.pagetype._createSelectTemplatePanel4SelectPageTypeCard = function () +{ + // Panel with the Multiselect templates + return { + id: 'add-page-pagetype-template', + title: "<b></b>", + + items: [ + new org.ametys.HtmlContainer ({cls: 'hint', html: ""}), + new org.ametys.form.MultiSelectField({ + id: 'add-page-pagetype-template-field', + + width: 454, + height: 102, + + minSelections: 1, + maxSelections: 1, + + hideLabel: true, + + allowBlank: false, + + mode: 'local', + store: new Ext.data.ArrayStore({ + id: 0, + fields: [ + 'id', + 'label', + 'description', + 'smallIcon', + 'mediumIcon', + 'largeIcon' + ], + sortInfo: { + field: 'label', + direction: 'ASC' + } + }), + + valueField: 'id', + displayField: 'label', + + tpl: "<div class='add-page-templates'><img src='{context.contextPath}{mediumIcon}'/><span class='add-page-templates-title'>{label}</span><span class='add-page-templates-description'>{description}</span><div class='x-clear'></div></div>", + + listeners: { + change: org.ametys.web.tool.page.Add.ui._onChange + } + }) + ] + }; +} + +// ------------------------------------------------------------------------------------------------ +org.ametys.web.tool.page.Add.pagetype._createSitemapRedirection4SelectPageTypeCard = function () +{ + // Widget to select the redirection to a CMS page + var sitemapWidgetCmsPage = new org.ametys.cms.widgets.SitemapWidget ({ + id : "add-page-pagetype-redirection-cms-field", + + width: 420, + hideLabel: true + }); + + // Override the setValue method to add a listener + sitemapWidgetCmsPage.originalSetValue = sitemapWidgetCmsPage.setValue; + sitemapWidgetCmsPage.setValue = function(v, noListener) + { + sitemapWidgetCmsPage.originalSetValue(v); + if (!noListener) + { + org.ametys.web.tool.page.Add.ui._onChange(); + } + }; + + // Container with the widget + return { + id: 'add-page-pagetype-redirection-cms', + title: "<b></b>", + items: [ + new org.ametys.HtmlContainer ({cls: 'hint', html: ""}), + sitemapWidgetCmsPage + ] + }; +} + +// ------------------------------------------------------------------------------------------------ +org.ametys.web.tool.page.Add.pagetype._createExternalLinkRedirectionPanel4SelectPageTypeCard = function () +{ + // Container with the text which sets the address of the redirection to an external page + return { + id: "add-page-pagetype-redirection-http", + title: "<b></b>", + + items: [ + new org.ametys.HtmlContainer ({cls: 'hint', html: ""}), + new org.ametys.HtmlContainer ({tag: 'label', cls: "x-form-item-label", html: ""}), + new org.ametys.form.TextField ({ + id: "add-page-pagetype-redirection-http-field", + + allowBlank: false, + hideLabel: true, + msgTarget: 'side', + + width: 420, + + enableKeyEvents: true, + listeners: { + keyup: org.ametys.web.tool.page.Add.ui._onChange, + change: org.ametys.web.tool.page.Add.ui._onChange + } + }), + new org.ametys.HtmlContainer ({cls: 'hint', html: ""}), + ] + }; +} + +// ------------------------------------------------------------------------------------------------ +org.ametys.web.tool.page.Add.pagetype._createBlankPagePanel4SelectPageTypeCard = function () +{ + // Panel which represents an simple page + return { + id: "add-page-pagetype-blank", + title: "<b></b>", + + items: [ + new org.ametys.HtmlContainer ({cls: 'ametys', html: ""}) + ] + }; +} + +//------------------------------------------------------------------------------------------------ +org.ametys.web.tool.page.Add.pagetype._lastExpandedPanel = 'add-page-pagetype-template'; + +// Remember last expanded panel +org.ametys.web.tool.page.Add.pagetype._onBeforeExpand = function (panel) +{ + org.ametys.web.tool.page.Add.pagetype._lastExpandedPanel = panel.id; +} +org.ametys.web.tool.page.Add.pagetype._onBeforeCollapse = function (panel) +{ + if (org.ametys.web.tool.page.Add.pagetype._lastExpandedPanel == panel.id) + { + return false; + } +} Index: main/plugin-web/resources/js/org/ametys/web/tool/page/AddPageWizzard-TagsCard.i18n.js =================================================================== --- main/plugin-web/resources/js/org/ametys/web/tool/page/AddPageWizzard-TagsCard.i18n.js (revision 0) +++ main/plugin-web/resources/js/org/ametys/web/tool/page/AddPageWizzard-TagsCard.i18n.js (revision 0) @@ -0,0 +1,67 @@ +/* + * Copyright 2014 Anyware Services + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +Ext.namespace('org.ametys.web.tool.page.Add.tags'); + +// Creates the UI and the MODEL. Called once then #resetModel is called. +org.ametys.web.tool.page.Add.tags.create = function() +{ + this._model = {}; + + return new Ext.Panel({ + id: 'add-page-tags-card', + + layout:'vbox', + padding: 0, + border: false, + cls: 'add-page-content', + items: [ + new org.ametys.HtmlContainer ({cls: 'hint hint-tags', style: { padding: '5' }, html: ""}), + new Ext.Spacer ({ flex: 1 }) // The real tag tree will be inserted later + ] + }); +} + +// Reset MODEL. Called before dialog is used or reused. +org.ametys.web.tool.page.Add.tags.resetModel = function() +{ +} + +org.ametys.web.tool.page.Add.tags.getUI = function() +{ + return Ext.getCmp("add-page-tags-card"); +} + +org.ametys.web.tool.page.Add.tags.getModel = function() +{ + return this._model; +} + +// Update the model to reflect the UI +org.ametys.web.tool.page.Add.tags.updateModel = function() +{ +} + +// Adapt the UI to reflect the model +org.ametys.web.tool.page.Add.tags.updateUI = function() +{ +} + +//Decide if this screen is available +org.ametys.web.tool.page.Add.tags.isAvailable = function(fullModel) +{ + return false; +} Index: main/plugin-web/resources/js/org/ametys/web/tool/page/AddPageWizzard.i18n.js =================================================================== --- main/plugin-web/resources/js/org/ametys/web/tool/page/AddPageWizzard.i18n.js (revision 27165) +++ main/plugin-web/resources/js/org/ametys/web/tool/page/AddPageWizzard.i18n.js (working copy) @@ -15,14 +15,7 @@ */ Ext.namespace('org.ametys.web.tool.page.Add'); - -/* ******************************************************************************************************************** */ -/* ******************************************************************************************************************** */ -/* ******************************************* CREATION OF THE CARD PANEL ********************************************* */ -/* ******************************************************************************************************************** */ -/* ******************************************************************************************************************** */ - -org.ametys.web.tool.page.Add.DEFAULT_CONTENT_TYPE = "org.ametys.web.default.Content.article"; +Ext.namespace('org.ametys.web.tool.page.Add.dao'); /** * Add a new page @@ -36,658 +29,221 @@ var parentId = null; var currentTargets = org.ametys.ribbon.RibbonManager.getInstance().getCurrentSelectionTargets(); var target = org.ametys.messagebus.message.MessageTargetHelper.findFirst(currentTargets, function(target) { return target.getType() == 'page' || target.getType() == 'sitemap'}); - if (target != null) { parentId = target.getParameters().id; } - - org.ametys.web.tool.page.Add._controlId = controlId; - org.ametys.web.tool.page.Add.internalAdd (parentId, null, pluginName); + org.ametys.web.tool.page.Add.do(parentId, null); } /** * Add a new page: no-control version (can be called from another dialog or * tool). * - * @param parentId - * the parent page or sitemap ID. - * @param callback - * a callback function. - * @param pluginName - * the plugin name (must be web). + * @param parentId the parent page or sitemap ID. + * @param configuration A map with : default-template, default-contentype, default-service, default-page-title + * @param callback a callback function. */ -org.ametys.web.tool.page.Add.internalAdd = function(parentId, callback, pluginName) +org.ametys.web.tool.page.Add.do = function(parentId, callback) { - org.ametys.web.tool.page.Add.pluginName = pluginName || 'web'; + org.ametys.web.tool.page.Add.parentPage = parentId; + org.ametys.web.tool.page.Add.configuration = org.ametys.ribbon.RibbonManager.getInstance().getControls()["org.ametys.web.userinterface.AddPage"]._configuration; + org.ametys.web.tool.page.Add.pluginName = "web"; org.ametys.web.tool.page.Add.callback = callback; - if (!org.ametys.web.tool.page.Add.delayedInitialize()) - { - return; - } - // The selected page. - org.ametys.web.tool.page.Add._selectedPage = parentId; - - if (org.ametys.web.tool.page.Add._selectedPage == null) + if (org.ametys.web.tool.page.Add.parentPage == null) { new org.ametys.msg.ErrorDialog("", "", "org.ametys.ribbon.RibbonManager.getInstance().getCurrentSelectionTargets() returns no result of type 'page' or 'sitemap'.", "org.ametys.web.tool.page.Add"); throw "Wrong selection"; } - org.ametys.web.tool.page.Add.box.show(); - var f = Ext.getCmp("add-page-title"); - f.setValue(''); - f.focus(true); - - org.ametys.web.tool.page.Add._initialized = false; - org.ametys.web.helper.ChooseTag._values = null; - - org.ametys.web.tool.page.Add._pageId = null; - org.ametys.web.tool.page.Add._pageLang = null; - org.ametys.web.tool.page.Add._zoneName = null; - org.ametys.web.tool.page.Add._longTitleField.setValue(''); - - org.ametys.web.tool.page.Add._serviceAndContentDisable = false; - org.ametys.web.tool.page.Add._multiSelectTemplate.store.removeAll(); - org.ametys.web.tool.page.Add._panelTextExternalLink.items.get(2).setValue("http://"); - org.ametys.web.tool.page.Add._sitemapWidgetCmsPage.setValue(""); - - org.ametys.web.tool.page.Add._multiSelectContent.store.removeAll(); - org.ametys.web.tool.page.Add._multiSelectService.store.removeAll(); - - org.ametys.web.tool.page.Add._wizard.getLayout().setActiveItem(0); - org.ametys.web.tool.page.Add._navHandler(0); - + org.ametys.web.tool.page.Add._model = {}; + org.ametys.web.tool.page.Add.showDialog(); } -org.ametys.web.tool.page.Add.delayedInitialize = function () +org.ametys.web.tool.page.Add.getAdditionnalModel = function() { - if (org.ametys.web.tool.page.Add.initialized) - return true; - - var items = []; - items.push(org.ametys.web.tool.page.Add._firstStep()); - items.push(org.ametys.web.tool.page.Add._secondStep()); - items.push(org.ametys.web.tool.page.Add._thirdStep()); - items.push(org.ametys.web.tool.page.Add._fourthStep()); - - org.ametys.web.tool.page.Add._wizard = new Ext.Panel ({ - layout:'card', - cls: 'add-page-card-panel', - border: false, - height: 260, - - activeItem: 0, // index or id - items: items - }); - - org.ametys.web.tool.page.Add.box = new org.ametys.DialogBox({ - title :"", - icon : getPluginResourcesUrl(org.ametys.web.tool.page.Add.pluginName) + "/img/actions/page_add_16.png", - - cls: 'add-page', - - width :530, - height: 325, - autoScroll: true, - - items : [ org.ametys.web.tool.page.Add._wizard ], - - defaultButton: 'add-page-title', - closeAction: 'hide', - - buttons : [ - { - text: "", - handler: org.ametys.web.tool.page.Add._navHandler.createDelegate(this, [-1]), - }, - { - text: "", - handler: org.ametys.web.tool.page.Add._navHandler.createDelegate(this, [1]) - }, - { - text: "", - handler : org.ametys.web.tool.page.Add._terminate - }, - { - text: "", - width: 156, - handler : org.ametys.web.tool.page.Add._advancedParamAction - }, - { - text: "", - handler : org.ametys.web.tool.page.Add.cancel - } - ] - }); - - org.ametys.web.tool.page.Add.initialized = true; - - return true; + return Ext.apply({}, org.ametys.web.tool.page.Add._model); } -org.ametys.web.tool.page.Add._BUTTON_PREVIOUS_INDEX = 0; -org.ametys.web.tool.page.Add._BUTTON_NEXT_INDEX = 1; -org.ametys.web.tool.page.Add._BUTTON_TERMINATE_INDEX = 2; -org.ametys.web.tool.page.Add._BUTTON_OK_INDEX = 3; -org.ametys.web.tool.page.Add._BUTTON_CANCEL_INDEX = 4; - +// ---------------------------------------------------------------------------------------------------- -org.ametys.web.tool.page.Add._step0ButtonName = function() +org.ametys.web.tool.page.Add.previous = function() { - var okB = org.ametys.web.tool.page.Add.box.buttons[org.ametys.web.tool.page.Add._BUTTON_OK_INDEX]; - if (org.ametys.web.tool.page.Add._panelInfoPage.items.get(5).getValue()) - { - okB.setText("") - } - else - { - okB.setText("") - } -} + var currentCard = org.ametys.web.tool.page.Add.getCurrentCard(); + currentCard.updateModel(); -org.ametys.web.tool.page.Add._advancedParamAction = function () -{ - if (org.ametys.web.tool.page.Add._panelInfoPage.items.get(5).getValue()) - { - org.ametys.web.tool.page.Add._navHandler(1); - } - else - { - org.ametys.web.tool.page.Add._terminate(); - } + org.ametys.web.tool.page.Add.goToPreviousCard(); } -/* ******************************************************************************************************************** */ -/* ******************************************************************************************************************** */ - -/* ******************************************************************************************************************** */ -/* ******************************************************************************************************************** */ -/* ************************************************* LISTENERS PANEL ************************************************** */ -/* ******************************************************************************************************************** */ -/* ******************************************************************************************************************** */ - -/* ********************* */ -/* Listeners first panel */ -/* ********************* */ - -org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep1 = function () +org.ametys.web.tool.page.Add.next = function() { - var endB = org.ametys.web.tool.page.Add.box.buttons[org.ametys.web.tool.page.Add._BUTTON_TERMINATE_INDEX]; - - if (org.ametys.web.tool.page.Add._titleField.getValue() == "") + var currentCard = org.ametys.web.tool.page.Add.getCurrentCard(); + currentCard.updateModel(); + + if (currentCard == org.ametys.web.tool.page.Add.createpage) { - endB.disable(); + // When "next" is press on the first card ; we do create the page and go to next if this is successfull + org.ametys.web.tool.page.Add.dao.createPage(function(success) { + if (success) + { + org.ametys.web.tool.page.Add.goToNextCard(); + } + }); } else { - endB.enable(); + // When "next" is press on any card (except the first one) we go to next + org.ametys.web.tool.page.Add.goToNextCard(); } } -/* ********************** */ -/* Listeners second panel */ -/* ********************** */ - -// Check all items of the accordion are not close -org.ametys.web.tool.page.Add.panelIdAccordionExpandStep2 = Ext.id(); - -org.ametys.web.tool.page.Add._onBeforeExpandPanelStep2 = function (panel) +org.ametys.web.tool.page.Add.cancel = function() { - org.ametys.web.tool.page.Add.panelIdAccordionExpandStep2 = panel.id; + org.ametys.web.tool.page.Add.hideDialog(); } -org.ametys.web.tool.page.Add._onBeforeCollapsePanelStep2 = function (panel) +org.ametys.web.tool.page.Add.ok = function() { - if (org.ametys.web.tool.page.Add.panelIdAccordionExpandStep2 == panel.id) - { - return false; - } -} + var currentCard = org.ametys.web.tool.page.Add.getCurrentCard(); + currentCard.updateModel(); -// Check if the form's values are correct to continue or terminate -org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep2= function () -{ - var idPanel = org.ametys.web.tool.page.Add._accordionPanelTemplate.items.keys.indexOf(org.ametys.web.tool.page.Add.panelIdAccordionExpandStep2); - var nextB = org.ametys.web.tool.page.Add.box.buttons[org.ametys.web.tool.page.Add._BUTTON_NEXT_INDEX]; - var endB = org.ametys.web.tool.page.Add.box.buttons[org.ametys.web.tool.page.Add._BUTTON_TERMINATE_INDEX]; - switch (idPanel) + // If OK is pressed on first step + if (currentCard == org.ametys.web.tool.page.Add.createpage) { - case 0: - var valueC = org.ametys.web.tool.page.Add._multiSelectTemplate.getValue(); - if (valueC == "" || valueC.search(',') != -1 ) - { - nextB.disable(); - endB.disable(); - } - else - { - nextB.enable(); - if (!org.ametys.web.tool.page.Add._serviceRight && !org.ametys.web.tool.page.Add._contentRight && !org.ametys.web.tool.page.Add._tagRight) - { - nextB.disable(); - } - endB.enable(); - } - break; - case 1: - if (org.ametys.web.tool.page.Add._sitemapWidgetCmsPage.getValue() != "") - { - nextB.disable(); - if (org.ametys.web.tool.page.Add._tagRight) - { - nextB.enable(); - } - endB.enable(); - } - else - { - nextB.disable(); - endB.disable(); - } - break; - case 2: - if (org.ametys.web.tool.page.Add._panelTextExternalLink.items.get(2).getValue() != "") - { - nextB.disable(); - if (org.ametys.web.tool.page.Add._tagRight) - { - nextB.enable(); - } - endB.enable(); - } - else - { - nextB.disable(); - endB.disable(); - } - break; - case 3: - nextB.disable(); - if (org.ametys.web.tool.page.Add._tagRight) + // When "next" is press on the first card ; we do create the page and go to next if this is successfull + org.ametys.web.tool.page.Add.dao.createPage(function(success) { + if (success) { - nextB.enable(); + org.ametys.web.tool.page.Add.hideDialog(); } - endB.enable(); - break; - default: - nextB.disable(); - endB.disable(); - break; - } -} - -// Show the widget if the radio is checked. -org.ametys.web.tool.page.Add.radioTemplateSelectCmsPageCheck = function(radio) -{ - if (!radio.checked) { - org.ametys.web.tool.page.Add._panelSitemapWidgetCmsPage.hide(); - } else { - org.ametys.web.tool.page.Add._panelSitemapWidgetCmsPage.show(); - } - org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep2(); -} - -// Show the textField if the radio is checked. -org.ametys.web.tool.page.Add.radioTemplateSelectExternalLinkCheck = function(radio) -{ - if (!radio.checked) { - org.ametys.web.tool.page.Add._panelTextExternalLink.hide(); - } else { - org.ametys.web.tool.page.Add._panelTextExternalLink.show(); + }); } - org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep2(); -} - -/* ********************* */ -/* Listeners third panel */ -/* ********************* */ - -// Check all items of the accordion are not close -org.ametys.web.tool.page.Add.panelIdAccordionExpandStep3 = Ext.id(); - -org.ametys.web.tool.page.Add._onBeforeExpandPanelStep3 = function (panel) -{ - org.ametys.web.tool.page.Add.panelIdAccordionExpandStep3 = panel.id; -} - -org.ametys.web.tool.page.Add._onBeforeCollapsePanelStep3 = function (panel) -{ - if (org.ametys.web.tool.page.Add.panelIdAccordionExpandStep3 == panel.id) - { - return false; - } -} - -// Check if the form's values are correct to continue or terminate -org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep3 = function () -{ - var idPanel = org.ametys.web.tool.page.Add._accordionPanelContentAndService.items.keys.indexOf(org.ametys.web.tool.page.Add.panelIdAccordionExpandStep3); - var nextB = org.ametys.web.tool.page.Add.box.buttons[org.ametys.web.tool.page.Add._BUTTON_NEXT_INDEX]; - var endB = org.ametys.web.tool.page.Add.box.buttons[org.ametys.web.tool.page.Add._BUTTON_TERMINATE_INDEX]; - switch (idPanel) + else { - case 0: - var valueC = org.ametys.web.tool.page.Add._multiSelectContent.getValue(); - if (valueC == "" || valueC.search(',') != -1 ) - { - nextB.disable(); - endB.disable(); - } - else + // On any other step, the page is already created + + // Apply second step + org.ametys.web.tool.page.Add._applySecondStep(function (success) { + if (success) { - nextB.enable(); - if (!org.ametys.web.tool.page.Add._tagRight) + if (currentCard == org.ametys.web.tool.page.Add.pagetype) { - nextB.disable(); + org.ametys.web.tool.page.Add.hideDialog(); } - endB.enable(); - } - break; - case 1: - var valueC = org.ametys.web.tool.page.Add._multiSelectService.getValue(); - if (valueC == "" || valueC.search(',') != -1 ) - { - nextB.disable(); - endB.disable(); - } - else - { - nextB.enable(); - if (!org.ametys.web.tool.page.Add._tagRight) + else { - nextB.disable(); + // Apply third step + org.ametys.web.tool.page.Add._applyThirdStep(function (success) { + if (success) + { + if (currentCard == org.ametys.web.tool.page.Add.pagecontent) + { + org.ametys.web.tool.page.Add.hideDialog(); + } + else + { + // Apply fourth step + org.ametys.web.tool.page.Add._applyFourthStep(function (success) { + if (success) + { + org.ametys.web.tool.page.Add.hideDialog(); + } + }); + } + } + }); } - endB.enable(); } - break; - default: - nextB.disable(); - endB.disable(); - break; + }); } } -/* ********************** */ -/* Listeners fourth panel */ -/* ********************** */ - -// Check if the form's values are correct to continue or terminate -org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep4 = function () -{ - org.ametys.web.tool.page.Add.box.buttons[org.ametys.web.tool.page.Add._BUTTON_TERMINATE_INDEX].enable(); -} - -/* ***************** */ -/* Listeners Buttons */ -/* ***************** */ - -// Change the card of the cardPanel and do actions depends of the step -org.ametys.web.tool.page.Add._navHandler = function (direction) +org.ametys.web.tool.page.Add._applySecondStep = function(callback) { - var wizard = org.ametys.web.tool.page.Add._wizard; - var cardLayout = wizard.getLayout(); + var fullModel = org.ametys.web.tool.page.Add.getModel(); - var prevB = org.ametys.web.tool.page.Add.box.buttons[org.ametys.web.tool.page.Add._BUTTON_PREVIOUS_INDEX]; - var nextB = org.ametys.web.tool.page.Add.box.buttons[org.ametys.web.tool.page.Add._BUTTON_NEXT_INDEX]; - var endB = org.ametys.web.tool.page.Add.box.buttons[org.ametys.web.tool.page.Add._BUTTON_TERMINATE_INDEX]; - var okB = org.ametys.web.tool.page.Add.box.buttons[org.ametys.web.tool.page.Add._BUTTON_OK_INDEX]; - var index = wizard.items.indexOf(cardLayout.activeItem); - var next = index + direction; - - - if (next == 2 && org.ametys.web.tool.page.Add._tagRight) + if (fullModel["page-type"] == "template") { - var idPanel = org.ametys.web.tool.page.Add._accordionPanelTemplate.items.keys.indexOf(org.ametys.web.tool.page.Add.panelIdAccordionExpandStep2); - if (idPanel != 0 || !org.ametys.web.tool.page.Add._serviceRight && !org.ametys.web.tool.page.Add._contentRight) - { - next += direction; - } + org.ametys.web.tool.page.Add.dao.applyTemplate(callback); } - - switch (next) - { - case 0: - nextB.hide(); - nextB.disable(); - prevB.hide(); - prevB.disable(); - - endB.hide(); - endB.disable(); - - okB.show(); - okB.enable(); - org.ametys.web.tool.page.Add._step0ButtonName(); - - org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep1(); - break; - case 1: - if (okB.isVisible()) - { - org.ametys.web.tool.page.Add._createPage(function () { - if (org.ametys.web.tool.page.Add._pageId != null) - { - nextB.show(); - nextB.enable(); - prevB.show(); - prevB.disable(); - endB.show(); - endB.enable(); - - okB.hide(); - okB.disable(); - - cardLayout.setActiveItem(next); - org.ametys.web.tool.page.Add._wizard.doLayout(); - - org.ametys.web.tool.page.Add._multiSelectTemplate.store.removeAll(); - org.ametys.web.tool.page.Add._setTemplatesMultiSelect(org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep2); - - org.ametys.web.tool.page.Add._showPage(); - } - }); - return; - } - else - { - nextB.show(); - nextB.enable(); - prevB.show(); - prevB.disable(); - - org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep2(); - } - break; - case 2: - prevB.enable(); - org.ametys.web.tool.page.Add._multiSelectContent.store.removeAll(); - org.ametys.web.tool.page.Add._multiSelectService.store.removeAll(); - org.ametys.web.tool.page.Add._setTemplateAndGetContentAndService(org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep3); - break; - case 3: - prevB.enable(); - nextB.disable(); - - var idPanelT = org.ametys.web.tool.page.Add._accordionPanelTemplate.items.keys.indexOf(org.ametys.web.tool.page.Add.panelIdAccordionExpandStep2); - var idPanelC = org.ametys.web.tool.page.Add._accordionPanelContentAndService.items.keys.indexOf(org.ametys.web.tool.page.Add.panelIdAccordionExpandStep3); - - var targetType = null; - var contentFilter = null; - if (idPanelC == 0 && idPanelT == 0 && org.ametys.web.tool.page.Add._tagRightPrivateContent) - { - // enable all tags - contentFilter = ""; - } - else if (idPanelC == 0 && idPanelT == 0 && org.ametys.web.tool.page.Add._tagRightContent) - { - // enable pages and public contents - contentFilter = "CONTENT_PRIVATE"; - } - else if (idPanelC == 0 && idPanelT == 0) - { - // enable pages only (private and public authorizations are handled on server side - contentFilter = "CONTENT"; - } - else - { - // show pages only (private and public authorizations are handled on server side - targetType = "PAGE"; - } - - - var index = org.ametys.web.tool.page.Add._wizard.items.get(3).items.indexOf(org.ametys.web.tool.page.Add._treeTagPanel); - org.ametys.web.tool.page.Add._wizard.items.get(3).remove(org.ametys.web.tool.page.Add._treeTagPanel); - org.ametys.web.tool.page.Add._treeTagPanel = new org.ametys.web.tree.TagsTreePanel ({ - width: '100%', - flex: 1, - - checkMode: true, - filterTarget: contentFilter, - targetType: targetType, - siteName: context.parameters.siteName, - page: org.ametys.web.tool.page.Add._pageId - - }) - org.ametys.web.tool.page.Add._wizard.items.get(3).insert(index,org.ametys.web.tool.page.Add._treeTagPanel); - org.ametys.web.tool.page.Add._firstLoad = false; - - - org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep4(); - break; - default: - prevB.disable(); - nextB.disable(); - endB.disable(); - break; + else if (fullModel["page-type"] == "redirection-http" || fullModel["page-type"] == "redirection-cms") + { + org.ametys.web.tool.page.Add.dao.setRedirectionPage(callback); } - - cardLayout.setActiveItem(next); - org.ametys.web.tool.page.Add._wizard.doLayout(); -} - -// Do Action depend on the step and close the windows -org.ametys.web.tool.page.Add._terminate = function() -{ - var wizard = org.ametys.web.tool.page.Add._wizard; - var cardLayout = wizard.getLayout(); - - switch (wizard.items.indexOf(cardLayout.activeItem)) + else { - case 0: - org.ametys.web.tool.page.Add._createPage(function () - { - if (org.ametys.web.tool.page.Add._pageId != null) - { - org.ametys.web.tool.page.Add._showPage(function() - { - org.ametys.web.tool.page.Add.box.hide(); - }); - } - }); - break; - case 1: - org.ametys.web.tool.page.Add._step1Over(function() - { - org.ametys.web.tool.page.Add.box.hide(); - }); - break; - case 2: - org.ametys.web.tool.page.Add._step1Over(function() - { - org.ametys.web.tool.page.Add._step2Over(function() - { - org.ametys.web.tool.page.Add.box.hide(); - }); - }); - break; - case 3: - var idPanel = org.ametys.web.tool.page.Add._accordionPanelContentAndService.items.keys.indexOf(org.ametys.web.tool.page.Add.panelIdAccordionExpandStep3); - if (idPanel == 0) - { - org.ametys.web.tool.page.Add._step1Over(function() - { - org.ametys.web.tool.page.Add._step2Over(function() - { - org.ametys.web.tool.page.Add._step3Over(function() - { - org.ametys.web.tool.page.Add.box.hide(); - }); - }); - }); - } - else - { - org.ametys.web.tool.page.Add._step1Over(function() - { - org.ametys.web.tool.page.Add._step3Over(function() - { - org.ametys.web.tool.page.Add.box.hide(); - org.ametys.web.tool.page.Add._step2Over(); - }); - }); - } - break; - default: - break; + // Blank page + callback(true); } } -// Close the windows -org.ametys.web.tool.page.Add.cancel = function () +org.ametys.web.tool.page.Add._applyThirdStep = function(callback) { - org.ametys.web.tool.page.Add.box.hide(); + if (!org.ametys.web.tool.page.Add.pagecontent.isAvailable()) + { + callback(true); + return; + } + + var fullModel = org.ametys.web.tool.page.Add.getModel(); + + // FIXME + console.info("content or service") + + callback(true); } -/* ******************************************************************************************************************** */ -/* ******************************************************************************************************************** */ - -/* ******************************************************************************************************************** */ -/* ******************************************************************************************************************** */ -/* ******************************************** PAGE ACTION AND CALLBACK ********************************************** */ -/* ******************************************************************************************************************** */ -/* ******************************************************************************************************************** */ - -// id of the page created -org.ametys.web.tool.page.Add._pageId; -// Creation of an empty page -org.ametys.web.tool.page.Add._createPage = function (callback) +org.ametys.web.tool.page.Add._applyFourthStep = function(callback) { - var titleField = Ext.getCmp('add-page-title'); - if (!titleField.isValid()) + if (!org.ametys.web.tool.page.Add.tags.isAvailable()) { + callback(true); return; } + + + var fullModel = org.ametys.web.tool.page.Add.getModel(); + + // FIXME + console.info("tag") + + callback(true); +} - var longTitleField = Ext.getCmp('add-page-title-long'); +// ---------------------------------------------------------------------------------------------------- +// ---------------------------------------------------------------------------------------------------- +// ---------------------------------------------------------------------------------------------------- - // Parameters +org.ametys.web.tool.page.Add.dao.createPage = function(callback) +{ + var fullModel = org.ametys.web.tool.page.Add.getModel(); + + //Parameters var params = {}; - params.title = titleField.getValue(); - params.longTitle = longTitleField.getValue(); - params.parentId = org.ametys.web.tool.page.Add._selectedPage; + params.title = fullModel['title']; + params.longTitle = fullModel['title-long']; + params.parentId = org.ametys.web.tool.page.Add.parentPage; // Send message - var serverMessage = new org.ametys.servercomm.ServerMessage(org.ametys.web.tool.page.Add.pluginName, '/repository/create-page', params, org.ametys.servercomm.ServerComm.PRIORITY_MAJOR, org.ametys.web.tool.page.Add._createPageCB, this, [callback]); + var serverMessage = new org.ametys.servercomm.ServerMessage(org.ametys.web.tool.page.Add.pluginName, '/repository/create-page', params, org.ametys.servercomm.ServerComm.PRIORITY_MAJOR, org.ametys.web.tool.page.Add.dao._createPageCB, this, [callback]); org.ametys.servercomm.ServerComm.getInstance().send(serverMessage); - org.ametys.web.tool.page.Add.box.showWaitMsg(""); + org.ametys.web.tool.page.Add.ui.box.showWaitMsg(""); } - // callback of the page creation -org.ametys.web.tool.page.Add._createPageCB = function (response, args) +org.ametys.web.tool.page.Add.dao._createPageCB = function (response, args) { var callback = args[0]; - org.ametys.web.tool.page.Add.box.hideWaitMsg(); + org.ametys.web.tool.page.Add.ui.box.hideWaitMsg(); if (org.ametys.servercomm.ServerComm.handleBadResponse("", response, "org.ametys.web.tool.page.Add")) { - callback(null); + callback(false); return; } @@ -700,28 +256,31 @@ buttons: Ext.Msg.OK, icon: Ext.MessageBox.ERROR }); - callback(); + callback(false); return; } - org.ametys.web.tool.page.Add._pageId = response.selectSingleNode("*/id")[org.ametys.servercomm.ServerComm.xmlTextContent]; - org.ametys.web.tool.page.Add._pageLang = response.selectSingleNode("*/lang")[org.ametys.servercomm.ServerComm.xmlTextContent]; - - callback(); -} - -//Action to do when all the other finished. Close the windows -org.ametys.web.tool.page.Add._showPage = function(callback) -{ - var wizard = org.ametys.web.tool.page.Add._wizard; - var cardLayout = wizard.getLayout(); - - var target = org.ametys.messagebus.bus.MessageBuilder.getInstance().createTarget("page", {'id': org.ametys.web.tool.page.Add._pageId}); + // get info + var pageId = response.selectSingleNode("*/id")[org.ametys.servercomm.ServerComm.xmlTextContent]; + var target = org.ametys.messagebus.bus.MessageBuilder.getInstance().createTarget("page", {'id': pageId}); + + // update model for all cards + org.ametys.web.tool.page.Add._model["page-id"] = pageId + org.ametys.web.tool.page.Add._model["page-lang"] = response.selectSingleNode("*/lang")[org.ametys.servercomm.ServerComm.xmlTextContent]; - org.ametys.web.tool.page.Add._setRights(target); - org.ametys.web.tool.page.Add._handleRightTemplate(); - org.ametys.web.tool.page.Add._handleRightServiceAndContent(); + org.ametys.web.tool.page.Add._model["right-template"] = target.getParameters().rights.indexOf(org.ametys.web.tool.page.Add.configuration["right-settemplate"]) >= 0; + org.ametys.web.tool.page.Add._model["right-link"] = target.getParameters().rights.indexOf(org.ametys.web.tool.page.Add.configuration["right-setlinkpage"]) >= 0; + org.ametys.web.tool.page.Add._model["right-contenttype"] = target.getParameters().rights.indexOf(org.ametys.web.tool.page.Add.configuration["right-addcontent"]) >= 0; + org.ametys.web.tool.page.Add._model["right-service"] = target.getParameters().rights.indexOf(org.ametys.web.tool.page.Add.configuration["right-addservice"]) >= 0; + + org.ametys.web.tool.page.Add._model["right-tag-page"] = target.getParameters().rights.indexOf(org.ametys.web.tool.page.Add.configuration["right-tag-page"]) >= 0; + org.ametys.web.tool.page.Add._model["right-tag-page-private"] = target.getParameters().rights.indexOf(org.ametys.web.tool.page.Add.configuration["right-tagprivate-page"]) >= 0; + org.ametys.web.tool.page.Add._model["right-tag-content"] = target.getParameters().rights.indexOf(org.ametys.web.tool.page.Add.configuration["right-tag-content"]) >= 0; + org.ametys.web.tool.page.Add._model["right-tag-content-private"] = target.getParameters().rights.indexOf(org.ametys.web.tool.page.Add.configuration["right-tagprivate-content"]) >= 0; + org.ametys.web.tool.page.Add._model["right-tag"] = org.ametys.web.tool.page.Add._model["right-tag-page"] || org.ametys.web.tool.page.Add._model["right-tag-page-private"] || org.ametys.web.tool.page.Add._model["right-tag-content"] || org.ametys.web.tool.page.Add._model["right-tag-content-private"]; + + // Send event on bus var events = []; events.push(org.ametys.messagebus.bus.MessageBuilder.getInstance().createMessage(org.ametys.ribbon.RibbonManager.EVENTTYPE_CREATED, null, [target])); org.ametys.messagebus.MessageBus.getInstance().fireMessages(events); @@ -731,124 +290,230 @@ if (org.ametys.web.tool.page.Add.callback == null) { // In that case, open the tool on the newly created page. - org.ametys.uitool.ToolsManager.getInstance().openTool("uitool-page", {id: org.ametys.web.tool.page.Add._pageId}); + org.ametys.uitool.ToolsManager.getInstance().openTool("uitool-page", {id: pageId}); } else { // In a callback is present, trigger the callback, providing the newly // created page ID and the parent ID. - org.ametys.web.tool.page.Add.callback(org.ametys.web.tool.page.Add._pageId, org.ametys.web.tool.page.Add._selectedPage); - } + org.ametys.web.tool.page.Add.callback(pageId, org.ametys.web.tool.page.Add.parentPage); + } - if (Ext.isFunction(callback)) + callback(true); +} + +// ---------------------------------------------------------------------------------------------------- +org.ametys.web.tool.page.Add.dao.applyTemplate = function(callback) +{ + var fullModel = org.ametys.web.tool.page.Add.getModel(); + + var pageId = fullModel["page-id"]; + var template = fullModel["template"]; + + // set template 'template' on page pageId + var serverMessage = new org.ametys.servercomm.ServerMessage(org.ametys.web.tool.page.Add.pluginName, "page/apply-template.xml", { pages: [pageId], template: template }, org.ametys.servercomm.ServerComm.PRIORITY_MAJOR, org.ametys.web.tool.page.Add.dao._applyTemplateCB, this, [callback]); + org.ametys.servercomm.ServerComm.getInstance().send(serverMessage); + + org.ametys.web.tool.page.Add.ui.box.showWaitMsg(""); +} +org.ametys.web.tool.page.Add.dao._applyTemplateCB = function (response, args) +{ + var callback = args[0]; + + org.ametys.web.tool.page.Add.ui.box.hideWaitMsg(); + + if (org.ametys.servercomm.ServerComm.handleBadResponse("", response, "org.ametys.web.tool.page.Add._step1OverCB")) { - callback(); + callback(false); + return; } -} + + var fullModel = org.ametys.web.tool.page.Add.getModel(); + // Call the TemplatesMenu to avoid to duplicate code + org.ametys.web.page.TemplatesMenu.affectCallback(response, [fullModel["page-id"]]); + + callback(true); +} -// Action to do to the end of the step 1 -org.ametys.web.tool.page.Add._step1Over = function (callBack) +//---------------------------------------------------------------------------------------------------- +org.ametys.web.tool.page.Add.dao.setRedirectionPage = function(callback) { - var pageId = org.ametys.web.tool.page.Add._pageId; - - var idPanel = org.ametys.web.tool.page.Add._accordionPanelTemplate.items.keys.indexOf(org.ametys.web.tool.page.Add.panelIdAccordionExpandStep2); - switch (idPanel) + var fullModel = org.ametys.web.tool.page.Add.getModel(); + + var redirectionType = fullModel["page-type"] == "redirection-cms" ? "PAGE" : "WEB"; + var redirectTo = fullModel[fullModel["page-type"]]; + + if (redirectionType == "PAGE" && fullModel["page-id"] == redirectTo) { - default: - case 0: - var template = org.ametys.web.tool.page.Add._multiSelectTemplate.getValue(); - - // set template 'template' on page pageId - var serverMessage = new org.ametys.servercomm.ServerMessage(org.ametys.web.tool.page.Add.pluginName, "page/apply-template.xml", { pages: [pageId], template: template }, org.ametys.servercomm.ServerComm.PRIORITY_MAJOR, org.ametys.web.tool.page.Add._step1OverCB, this, [callBack, 0, pageId]); - org.ametys.servercomm.ServerComm.getInstance().send(serverMessage); - - org.ametys.web.tool.page.Add.box.showWaitMsg(""); + Ext.Msg.show({ + title: "", + msg: "", + buttons: Ext.Msg.OK, + icon: Ext.MessageBox.ERROR + }); + callback(false); + return; + } + + var serverMessage = new org.ametys.servercomm.ServerMessage(org.ametys.web.tool.page.Add.pluginName, "page/set-link.xml", { pages: [fullModel["page-id"]], url: redirectTo, "url-type": redirectionType }, org.ametys.servercomm.ServerComm.PRIORITY_MAJOR, org.ametys.web.tool.page.Add.dao._setRedirectionPageCB, this, [callback]); + org.ametys.servercomm.ServerComm.getInstance().send(serverMessage); + + org.ametys.web.tool.page.Add.ui.box.showWaitMsg(""); + + callback(true); +} +org.ametys.web.tool.page.Add.dao._setRedirectionPageCB = function(response, args) +{ + var callback = args[0]; + + org.ametys.web.tool.page.Add.ui.box.hideWaitMsg(); + + + if (org.ametys.servercomm.ServerComm.handleBadResponse("", response, "org.ametys.web.page.LinkPage")) + { + // Handle error + callback(false); + return; + } + + var fullModel = org.ametys.web.tool.page.Add.getModel(); + org.ametys.web.page.LinkPage._actionCallback(response,{"pagesIds": [fullModel["page-id"]], "pageTitles": [fullModel["title"]]}); + + callback(true); +} + +//---------------------------------------------------------------------------------------------------- +org.ametys.web.tool.page.Add.dao.createContent = function(callback) +{ + var fullModel = org.ametys.web.tool.page.Add.getModel(); + + // FIXME + console.info("createContent") + + callback(true); +} + +//---------------------------------------------------------------------------------------------------- +org.ametys.web.tool.page.Add.dao.createService = function(callback) +{ + var fullModel = org.ametys.web.tool.page.Add.getModel(); + + // FIXME + console.info("createService") + + callback(true); +} + +//---------------------------------------------------------------------------------------------------- +org.ametys.web.tool.page.Add.dao.tags = function(callback) +{ + var fullModel = org.ametys.web.tool.page.Add.getModel(); + + // FIXME + console.info("tags") + + callback(true); +} + + + + + + + + +/* ******************************************************************************************************************** */ +/* ******************************************************************************************************************** */ + +/* ******************************************************************************************************************** */ +/* ******************************************************************************************************************** */ +/* ************************************************* LISTENERS PANEL ************************************************** */ +/* ******************************************************************************************************************** */ +/* ******************************************************************************************************************** */ + + + +/* ***************** */ +/* Listeners Buttons */ +/* ***************** */ + +// Change the card of the cardPanel and do actions depends of the step +org.ametys.web.tool.page.Add._navHandler = function (direction) +{ + switch (next) + { + case 2: + prevB.enable(); + org.ametys.web.tool.page.Add._multiSelectContent.store.removeAll(); + org.ametys.web.tool.page.Add._multiSelectService.store.removeAll(); + org.ametys.web.tool.page.Add._setTemplateAndGetContentAndService(org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep3); break; - case 1: - org.ametys.web.tool.page.Add._serviceAndContentDisable = true; - - var cmsRedirection = org.ametys.web.tool.page.Add._sitemapWidgetCmsPage.getValue(); + case 3: + prevB.enable(); + nextB.disable(); - if (pageId == cmsRedirection) + var idPanelT = org.ametys.web.tool.page.Add._accordionPanelTemplate.items.keys.indexOf(org.ametys.web.tool.page.Add.panelIdAccordionExpandStep2); + var idPanelC = org.ametys.web.tool.page.Add._accordionPanelContentAndService.items.keys.indexOf(org.ametys.web.tool.page.Add.panelIdAccordionExpandStep3); + + var targetType = null; + var contentFilter = null; + if (idPanelC == 0 && idPanelT == 0 && org.ametys.web.tool.page.Add._tagRightPrivateContent) + { + // enable all tags + contentFilter = ""; + } + else if (idPanelC == 0 && idPanelT == 0 && org.ametys.web.tool.page.Add._tagRightContent) { - Ext.Msg.show({ - title: "", - msg: "", - buttons: Ext.Msg.OK, - icon: Ext.MessageBox.ERROR - }); - return; + // enable pages and public contents + contentFilter = "CONTENT_PRIVATE"; } - - var serverMessage = new org.ametys.servercomm.ServerMessage(org.ametys.web.tool.page.Add.pluginName, "page/set-link.xml", { pages: [pageId], url: cmsRedirection, "url-type": "PAGE" }, org.ametys.servercomm.ServerComm.PRIORITY_MAJOR, org.ametys.web.tool.page.Add._step1OverCB, this, [callBack, 1, pageId]); - org.ametys.servercomm.ServerComm.getInstance().send(serverMessage); - org.ametys.web.tool.page.Add.box.showWaitMsg(""); - break; - case 2: - org.ametys.web.tool.page.Add._serviceAndContentDisable = true; - - var externalRedirection = org.ametys.web.tool.page.Add._panelTextExternalLink.items.get(2).getValue(); - - var serverMessage = new org.ametys.servercomm.ServerMessage(org.ametys.web.tool.page.Add.pluginName, "page/set-link.xml", { pages: [pageId], url: externalRedirection, "url-type": "WEB" }, org.ametys.servercomm.ServerComm.PRIORITY_MAJOR, org.ametys.web.tool.page.Add._step1OverCB, this, [callBack, 1, pageId]); - org.ametys.servercomm.ServerComm.getInstance().send(serverMessage); - org.ametys.web.tool.page.Add.box.showWaitMsg(""); - - break; - case 3: - org.ametys.web.tool.page.Add._serviceAndContentDisable = true; - if (Ext.isFunction(callBack)) + else if (idPanelC == 0 && idPanelT == 0) { - callBack(); + // enable pages only (private and public authorizations are handled on server side + contentFilter = "CONTENT"; } - break; - } - -} - -// Callback of the _step1Over function -org.ametys.web.tool.page.Add._step1OverCB = function (response, args) -{ - var callback = args[0]; - var pageType = args[1]; - var pageId = args[2]; - var pageTitle = Ext.getCmp('add-page-title').getValue(); - - switch (pageType) - { - default: - case 0: - if (org.ametys.servercomm.ServerComm.handleBadResponse("", response, "org.ametys.web.tool.page.Add._step1OverCB")) + else { - org.ametys.web.tool.page.Add.box.hideWaitMsg(); - return; + // show pages only (private and public authorizations are handled on server side + targetType = "PAGE"; } - org.ametys.web.page.TemplatesMenu.affectCallback(response, [pageId]); - org.ametys.web.tool.page.Add.box.hideWaitMsg(); - - break; - case 1: - if (org.ametys.servercomm.ServerComm.handleBadResponse("", response, "org.ametys.web.page.LinkPage")) - { - // Handle error - org.ametys.web.tool.page.Add.box.hideWaitMsg(); - return; - } + + var index = org.ametys.web.tool.page.Add._wizard.items.get(3).items.indexOf(org.ametys.web.tool.page.Add._treeTagPanel); + org.ametys.web.tool.page.Add._wizard.items.get(3).remove(org.ametys.web.tool.page.Add._treeTagPanel); + org.ametys.web.tool.page.Add._treeTagPanel = new org.ametys.web.tree.TagsTreePanel ({ + width: '100%', + flex: 1, + + checkMode: true, + filterTarget: contentFilter, + targetType: targetType, + siteName: context.parameters.siteName, + page: org.ametys.web.tool.page.Add._pageId + + }) + org.ametys.web.tool.page.Add._wizard.items.get(3).insert(index,org.ametys.web.tool.page.Add._treeTagPanel); + org.ametys.web.tool.page.Add._firstLoad = false; - //FIXME - org.ametys.web.page.LinkPage.prototype._actionCallback(response,{"pagesIds": [pageId], "pageTitles": [pageTitle]}); - org.ametys.web.tool.page.Add.box.hideWaitMsg(); + org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep4(); break; } - if (Ext.isFunction(callback)) - { - callback(); - } } +/* ******************************************************************************************************************** */ +/* ******************************************************************************************************************** */ + +/* ******************************************************************************************************************** */ +/* ******************************************************************************************************************** */ +/* ******************************************** PAGE ACTION AND CALLBACK ********************************************** */ +/* ******************************************************************************************************************** */ +/* ******************************************************************************************************************** */ + + + // Action to do to the end of the step 2 org.ametys.web.tool.page.Add._step2Over = function (callback) { @@ -885,7 +550,7 @@ params[c] = controlInstance._configuration[c]; } } - org.ametys.web.tool.page.Add.box.showWaitMsg(""); + org.ametys.web.tool.page.Add.ui.box.showWaitMsg(""); var serverMessage = new org.ametys.servercomm.ServerMessage("cms", 'init-workflow/' + actionId, params, org.ametys.servercomm.ServerComm.PRIORITY_MAJOR, org.ametys.web.tool.page.Add._step2OverContentCB.createDelegate(this, [callback], true), this, [actionIdEdit]); org.ametys.servercomm.ServerComm.getInstance().send(serverMessage); @@ -924,7 +589,7 @@ { if (org.ametys.servercomm.ServerComm.handleBadResponse("", response, "org.ametys.web.content.AddContentAction")) { - org.ametys.web.tool.page.Add.box.hideWaitMsg(); + org.ametys.web.tool.page.Add.ui.box.hideWaitMsg(); return; } @@ -941,7 +606,7 @@ org.ametys.messagebus.bus.MessageBuilder.getInstance().createMessage(org.ametys.ribbon.RibbonManager.EVENTTYPE_SELECTIONCHANGED, {"creation": "content"}, targets3)]; org.ametys.messagebus.MessageBus.getInstance().fireMessages(events); - org.ametys.web.tool.page.Add.box.hideWaitMsg(); + org.ametys.web.tool.page.Add.ui.box.hideWaitMsg(); // callback inbetween because it can be "tag the content", so the content should not be locked yet if (Ext.isFunction(callback)) @@ -988,7 +653,7 @@ return; } - org.ametys.web.tool.page.Add.box.showWaitMsg(""); + org.ametys.web.tool.page.Add.ui.box.showWaitMsg(""); var serverMessage = new org.ametys.servercomm.ServerMessage(org.ametys.web.tool.page.Add.pluginName, '/repository/tag', params, org.ametys.servercomm.ServerComm.PRIORITY_MAJOR, org.ametys.web.tool.page.Add._step3OverCB, this, [callback]); org.ametys.servercomm.ServerComm.getInstance().send(serverMessage); @@ -999,7 +664,7 @@ { if (org.ametys.servercomm.ServerComm.handleBadResponse("", response, "org.ametys.web.tool.page.Add")) { - org.ametys.web.tool.page.Add.box.hideWaitMsg(); + org.ametys.web.tool.page.Add.ui.box.hideWaitMsg(); return; } @@ -1015,7 +680,7 @@ org.ametys.messagebus.MessageBus.getInstance().fireMessages(messages); - org.ametys.web.tool.page.Add.box.hideWaitMsg(); + org.ametys.web.tool.page.Add.ui.box.hideWaitMsg(); var callback = args[0]; if (Ext.isFunction(callback)) @@ -1023,735 +688,3 @@ callback(); } } - -//Get services and contents available depends on the page, the template and the zone -org.ametys.web.tool.page.Add._setTemplateAndGetContentAndService = function (callback) -{ - var params = {}; - params.pageId = org.ametys.web.tool.page.Add._pageId; - params.template = org.ametys.web.tool.page.Add._multiSelectTemplate.getValue(); - - // Send message - var serverMessage = new org.ametys.servercomm.ServerMessage(org.ametys.web.tool.page.Add.pluginName, '/repository/page-contents-services', params, org.ametys.servercomm.ServerComm.PRIORITY_MAJOR, org.ametys.web.tool.page.Add._setTemplateAndGetContentAndServiceCB, this, [callback]); - org.ametys.servercomm.ServerComm.getInstance().send(serverMessage); - - org.ametys.web.tool.page.Add.box.showWaitMsg(""); -} - -// Get services and contents callback -org.ametys.web.tool.page.Add._setTemplateAndGetContentAndServiceCB = function (response, args) -{ - var callBack = args[0]; - - if (org.ametys.servercomm.ServerComm.handleBadResponse("", response, "org.ametys.web.tool.page.Add")) - { - org.ametys.web.tool.page.Add.box.hideWaitMsg(); - return; - } - - org.ametys.web.tool.page.Add._zoneName = response.selectSingleNode('*').getAttribute("zone"); - - var contents = response.selectNodes('*/contents/content'); - - var listIdContents = []; - for (var i=0; i < contents.length; i++) - { - var id = contents[i].getAttribute('id'); - listIdContents[i] = id; - } - - var services = response.selectNodes('*/services/service'); - - var listIdServices = []; - for (var i=0; i < services.length; i++) - { - var id = services[i].getAttribute('id'); - listIdServices[i] = id; - } - - var controlInstance = org.ametys.ribbon.RibbonManager.getInstance().getControls()[org.ametys.web.tool.page.Add._controlId]; - - org.ametys.web.tool.page.Add._sortAndSetListContent(listIdContents, controlInstance) - org.ametys.web.tool.page.Add._sortAndSetListService(listIdServices, controlInstance) - - org.ametys.web.tool.page.Add.box.hideWaitMsg(); - callBack(); -} - -// Set all the templates available associated to the page -org.ametys.web.tool.page.Add._setTemplatesMultiSelect = function(callback) -{ - // Send message - var serverMessage = new org.ametys.servercomm.ServerMessage(org.ametys.web.tool.page.Add.pluginName, 'repository/page-templates', {pageId: org.ametys.web.tool.page.Add._pageId}, org.ametys.servercomm.ServerComm.PRIORITY_MAJOR, org.ametys.web.tool.page.Add._setTemplatesMultiSelectCB, this, [callback]); - org.ametys.servercomm.ServerComm.getInstance().send(serverMessage); - - org.ametys.web.tool.page.Add.box.showWaitMsg(""); -} - -// Callback when we get the templates -org.ametys.web.tool.page.Add._setTemplatesMultiSelectCB = function(response, args) -{ - var callBack = args[0]; - - if (org.ametys.servercomm.ServerComm.handleBadResponse("", response, "org.ametys.web.tool.page.Add")) - { - org.ametys.web.tool.page.Add.box.hideWaitMsg(); - return; - } - - var templates = response.selectNodes('templates/template'); - - var listIdTemplates = []; - for (var i=0; i < templates.length; i++) - { - var id = templates[i].getAttribute('id'); - listIdTemplates[i] = id; - } - - var controlInstance = org.ametys.ribbon.RibbonManager.getInstance().getControls()[org.ametys.web.tool.page.Add._controlId]; - org.ametys.web.tool.page.Add._sortAndSetListTemplate(listIdTemplates, controlInstance); - - org.ametys.web.tool.page.Add.box.hideWaitMsg(); - if (Ext.isFunction(callBack)) - { - callBack(); - } -} - - -/* ******************************************************************************************************************** */ -/* ******************************************************************************************************************** */ - -/* ******************************************************************************************************************** */ -/* ******************************************************************************************************************** */ -/* ****************************************************** RIGTHS ******************************************************* */ -/* ******************************************************************************************************************** */ -/* ******************************************************************************************************************** */ - -org.ametys.web.tool.page.Add._serviceRight; -org.ametys.web.tool.page.Add._contentRight; -org.ametys.web.tool.page.Add._templateRight; -org.ametys.web.tool.page.Add._linkRight; -org.ametys.web.tool.page.Add._tagRight; - -// set user rights -org.ametys.web.tool.page.Add._setRights = function(target) -{ - var listRights = target.getParameters().rights; - var controlInstance = org.ametys.ribbon.RibbonManager.getInstance().getControls()[org.ametys.web.tool.page.Add._controlId]; - - org.ametys.web.tool.page.Add._serviceRight = org.ametys.web.tool.page.Add._in_array(controlInstance._configuration["right-addservice"], listRights); - org.ametys.web.tool.page.Add._contentRight = org.ametys.web.tool.page.Add._in_array(controlInstance._configuration["right-addcontent"], listRights); - org.ametys.web.tool.page.Add._templateRight = org.ametys.web.tool.page.Add._in_array(controlInstance._configuration["right-settemplate"], listRights); - org.ametys.web.tool.page.Add._linkRight = org.ametys.web.tool.page.Add._in_array(controlInstance._configuration["right-setlinkpage"], listRights); - - org.ametys.web.tool.page.Add._tagRightPage = org.ametys.web.tool.page.Add._in_array(controlInstance._configuration["right-tag-page"], listRights); - org.ametys.web.tool.page.Add._tagRightPrivatePage = org.ametys.web.tool.page.Add._in_array(controlInstance._configuration["right-tagprivate-page"], listRights); - org.ametys.web.tool.page.Add._tagRightContent = org.ametys.web.tool.page.Add._in_array(controlInstance._configuration["right-tag-content"], listRights); - org.ametys.web.tool.page.Add._tagRightPrivateContent = org.ametys.web.tool.page.Add._in_array(controlInstance._configuration["right-tagprivate-content"], listRights); - org.ametys.web.tool.page.Add._tagRight = org.ametys.web.tool.page.Add._tagRightPage || org.ametys.web.tool.page.Add._tagRightPrivatePage || org.ametys.web.tool.page.Add._tagRightContent || org.ametys.web.tool.page.Add._tagRightPrivateContent; -} - -org.ametys.web.tool.page.Add._serviceAndContentDisable; - -// active/desactive panel depend on the rights -org.ametys.web.tool.page.Add._handleRightServiceAndContent = function() -{ - var activeItemId = 0; - if (!org.ametys.web.tool.page.Add._contentRight) - { - org.ametys.web.tool.page.Add._panelMultiSelectContent.disable(); - activeItemId = 1; - } - else - { - org.ametys.web.tool.page.Add._panelMultiSelectContent.enable(); - } - - if (!org.ametys.web.tool.page.Add._serviceRight) - { - org.ametys.web.tool.page.Add._panelMultiSelectService.disable(); - if (activeItemId == 1) - { - org.ametys.web.tool.page.Add._serviceAndContentDisable = true; - } - } - else - { - org.ametys.web.tool.page.Add._panelMultiSelectService.enable(); - } - - - org.ametys.web.tool.page.Add._accordionPanelContentAndService.getLayout().setActiveItem(activeItemId); -} - -//active/desactive panel depend on the rights -org.ametys.web.tool.page.Add._handleRightTemplate = function() -{ - var activeItemId = 0; - if (!org.ametys.web.tool.page.Add._templateRight) - { - org.ametys.web.tool.page.Add._panelMultiSelectTemplate.disable(); - if (activeItemId == 0) - { - activeItemId = 1; - } - } - else - { - org.ametys.web.tool.page.Add._panelMultiSelectTemplate.enable(); - } - - if (!org.ametys.web.tool.page.Add._linkRight) - { - org.ametys.web.tool.page.Add._panelSitemapWidgetCmsPage.disable(); - org.ametys.web.tool.page.Add._panelTextExternalLink.disable(); - if (activeItemId == 1) - { - activeItemId = 3; - } - } - else - { - org.ametys.web.tool.page.Add._panelSitemapWidgetCmsPage.enable(); - org.ametys.web.tool.page.Add._panelTextExternalLink.enable(); - } - - org.ametys.web.tool.page.Add._accordionPanelTemplate.getLayout().setActiveItem(activeItemId); -} - -/* ******************************************************************************************************************** */ -/* ******************************************************************************************************************** */ - -/* ******************************************************************************************************************** */ -/* ******************************************************************************************************************** */ -/* ****************************************************** OTHER ******************************************************* */ -/* ******************************************************************************************************************** */ -/* ******************************************************************************************************************** */ - -//Sort (alphabetic order) and put the contents in the store -org.ametys.web.tool.page.Add._sortAndSetListContent = function(listIdContents, controlInstance) -{ - var sizeContents = controlInstance._configuration["contents-size"]; - var store = org.ametys.web.tool.page.Add._multiSelectContent.store; - - var idContentToSelect = ""; - for (var i = 0; i < sizeContents; i++) - { - var idContent = controlInstance._configuration['content-' + i + '-id']; - if (org.ametys.web.tool.page.Add._in_array(idContent, listIdContents)) - { - if (idContent == org.ametys.web.tool.page.Add.DEFAULT_CONTENT_TYPE) - { - idContentToSelect = idContent; - } - - var reT = new store.recordType({id: idContent, - text: controlInstance._configuration['content-' + i + '-label'], - smallIcon: controlInstance._configuration['content-' + i + '-iconMedium'], - description: controlInstance._configuration['content-' + i + '-description'], - defaultTitle: controlInstance._configuration['content-' + i + '-defaultTitle']}); - store.addSorted(reT); - } - } - - if (idContentToSelect != "") - { - org.ametys.web.tool.page.Add._multiSelectContent.setValue(idContentToSelect); - } - else if (store.getCount() > 0) - { - org.ametys.web.tool.page.Add._multiSelectContent.setValue(store.getAt(0).data.id); - } -} - -//Sort (alphabetic order) and put the services in the store -org.ametys.web.tool.page.Add._sortAndSetListService = function(listIdServices, controlInstance) -{ - var sizeService = controlInstance._configuration["services-size"]; - var store = org.ametys.web.tool.page.Add._multiSelectService.store; - - var idServiceToSelect = ""; - for (var i = 0; i < sizeService; i++) - { - var idService = controlInstance._configuration['service-' + i + '-id']; - if (org.ametys.web.tool.page.Add._in_array(idService, listIdServices)) - { - var reT = new store.recordType({id: idService, - text: controlInstance._configuration['service-' + i + '-label'], - smallIcon: controlInstance._configuration['service-' + i + '-iconMedium'], - description: controlInstance._configuration['service-' + i + '-description'], - parametersAction: controlInstance._configuration['service-' + i + '-parameters-action']}); - store.addSorted(reT); - } - } - - if (idServiceToSelect != "") - { - org.ametys.web.tool.page.Add._multiSelectService.setValue(idServiceToSelect); - } - else if (store.getCount() > 0) - { - org.ametys.web.tool.page.Add._multiSelectService.setValue(store.getAt(0).data.id); - } -} - -//Sort (alphabetic order) and put the templates in the store -org.ametys.web.tool.page.Add._sortAndSetListTemplate = function(listIdTemplates, controlInstance) -{ - var sizeTemplate = controlInstance._configuration["templates-size"]; - var store = org.ametys.web.tool.page.Add._multiSelectTemplate.store; - - var idTemplateToSelect = ""; - for (var i = 0; i < sizeTemplate; i++) - { - var idTemplate = controlInstance._configuration['template-' + i + '-id']; - if (org.ametys.web.tool.page.Add._in_array(idTemplate, listIdTemplates)) - { - if (idTemplate == "page") - { - idTemplateToSelect = idTemplate; - } - - var reT = new store.recordType({id: idTemplate, - text: controlInstance._configuration['template-' + i + '-label'], - smallIcon: controlInstance._configuration['template-' + i + '-iconMedium'], - description: controlInstance._configuration['template-' + i + '-description']}); - store.addSorted(reT); - } - } - - if (idTemplateToSelect != "") - { - org.ametys.web.tool.page.Add._multiSelectTemplate.setValue(idTemplateToSelect); - } - else if (store.getCount() > 0) - { - org.ametys.web.tool.page.Add._multiSelectTemplate.setValue(store.getAt(0).data.id); - } -} - -// True if the table contains the element -org.ametys.web.tool.page.Add._in_array = function(element, table) -{ - var inArray = false; - - for (var i=0; i < table.length; i++) - { - if (table[i] == element) - { - inArray = true; - break; - } - } - - return inArray; -} - - -/* ******************************************************************************************************************** */ -/* ******************************************************************************************************************** */ - -/* ******************************************************************************************************************** */ -/* ******************************************************************************************************************** */ -/* *************************************************** CARDS PANEL **************************************************** */ -/* ******************************************************************************************************************** */ -/* ******************************************************************************************************************** */ - -/* ********************************************* */ -/* First Panel : choose the name of the new page */ -/* ********************************************* */ - -org.ametys.web.tool.page.Add._firstStep = function () -{ - org.ametys.web.tool.page.Add._longTitleField = new Ext.form.TextField ({ - fieldLabel : "", - name: 'title-long', - id: 'add-page-title-long', - allowBlank: true, - msgTarget: 'side', - width: 470 - }); - - org.ametys.web.tool.page.Add._titleField = new Ext.form.TextField ({ - fieldLabel : "", - name: 'title', - id: 'add-page-title', - allowBlank: false, - msgTarget: 'side', - enableKeyEvents: true, - listeners: { - keyup: org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep1 - }, - width: 200 - }); - - org.ametys.web.tool.page.Add._panelInfoPage = new Ext.Panel ({ - id: 'new-page-card-0', - - border: false, - layout: 'form', - labelWidth :130, - labelAlign: 'top', - style: { - padding: '10px' - }, - items: [ - new org.ametys.HtmlContainer ({cls: 'hint', html: ""}), - org.ametys.web.tool.page.Add._titleField, - new org.ametys.HtmlContainer ({cls: 'hint', html: ""}), - org.ametys.web.tool.page.Add._longTitleField, - new org.ametys.HtmlContainer ({cls: 'hint', html: ""}), - { - xtype: 'checkbox', - cls: 'checkbox-wizard', - checked: true, - hideLabel: true, - boxLabel: "", - listeners: { - 'check': org.ametys.web.tool.page.Add._step0ButtonName - } - } - ] - }); - - return org.ametys.web.tool.page.Add._panelInfoPage; -} - -/* ********************************** */ -/* Second Panel : select the template */ -/* ********************************** */ - -org.ametys.web.tool.page.Add._secondStep = function () -{ - // Multiselect of all templates of the page - org.ametys.web.tool.page.Add._multiSelectTemplate = new org.ametys.form.MultiSelectField({ - typeAhead: true, - width: 454, - height: 102, - lazyRender:true, - mode: 'local', - minSelections: 1, - maxSelections: 1, - allowBlank: false, - hideLabel: true, - value: '1', - listeners: { - change: org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep2 - }, - store: new Ext.data.ArrayStore({ - id: 0, - fields: [ - 'id', - 'text', - 'smallIcon', - 'description' - ], - sortInfo: { - field: 'text', - direction: 'ASC' - } - }), - valueField: 'id', - displayField: 'text', - tpl: "<div class='add-page-templates'><img src='{context.contextPath}{smallIcon}'/><span class='add-page-templates-title'>{text}</span><span class='add-page-templates-description'>{description}</span><div class='x-clear'></div></div>" - }); - - // Panel with the Multiselect templates and hint - org.ametys.web.tool.page.Add._panelMultiSelectTemplate = new Ext.Panel ({ - id: org.ametys.web.tool.page.Add.panelIdAccordionExpandStep2, - title: "<b></b>", - border: false, - layout: 'form', - labelWidth :130, - labelAlign: 'top', - padding: "0 0 0 33px", - listeners: { - beforecollapse: org.ametys.web.tool.page.Add._onBeforeCollapsePanelStep2, - beforeexpand: org.ametys.web.tool.page.Add._onBeforeExpandPanelStep2, - expand: org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep2 - }, - items: [ - new org.ametys.HtmlContainer ({cls: 'hint', html: ""}), - org.ametys.web.tool.page.Add._multiSelectTemplate - ] - }); - - // Container with the text which sets the adress of the redirection to an - // external page - org.ametys.web.tool.page.Add._panelTextExternalLink = new Ext.Panel ({ - title: "<b></b>", - border: false, - layout: 'form', - listeners: { - beforecollapse: org.ametys.web.tool.page.Add._onBeforeCollapsePanelStep2, - beforeexpand: org.ametys.web.tool.page.Add._onBeforeExpandPanelStep2, - expand: org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep2 - }, - collapsed: true, - defaults: { - hideLabel: true - }, - padding: "0 0 0 33px", - items: [ - new org.ametys.HtmlContainer ({cls: 'hint', html: ""}), - new org.ametys.HtmlContainer ({tag: 'label', cls: "x-form-item-label", html: ""}), - new org.ametys.form.TextField ({ - value: 'http://', - allowBlank: false, - msgTarget: 'side', - width: 420, - hideLabel: true, - enableKeyEvents: true, - listeners: { - keyup: org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep2 - } - }), - new org.ametys.HtmlContainer ({cls: 'hint', html: ""}), - ] - }); - - // Widget to select the redirection to a CMS page - org.ametys.web.tool.page.Add._sitemapWidgetCmsPage = new org.ametys.cms.widgets.SitemapWidget ({ - width: 420, - hideLabel: true - }); - - org.ametys.web.tool.page.Add._sitemapWidgetCmsPage.originalSetValue = org.ametys.web.tool.page.Add._sitemapWidgetCmsPage.setValue; - org.ametys.web.tool.page.Add._sitemapWidgetCmsPage.setValue = function(v) - { - org.ametys.web.tool.page.Add._sitemapWidgetCmsPage.originalSetValue(v); - org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep2(); - }; - - // Container with the widget - org.ametys.web.tool.page.Add._panelSitemapWidgetCmsPage = new Ext.Panel ({ - title: "<b></b>", - border: false, - layout: 'form', - listeners: { - beforecollapse: org.ametys.web.tool.page.Add._onBeforeCollapsePanelStep2, - beforeexpand: org.ametys.web.tool.page.Add._onBeforeExpandPanelStep2, - expand: org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep2 - }, - collapsed: true, - defaults: { - hideLabel: true - }, - padding: "0 0 0 33px", - items: [ - new org.ametys.HtmlContainer ({cls: 'hint', html: ""}), - org.ametys.web.tool.page.Add._sitemapWidgetCmsPage - ] - }); - - // Panel which represents an simple page - org.ametys.web.tool.page.Add._panelSimplePage = new Ext.Panel ({ - title: "<b></b>", - border: false, - collapsed: true, - padding: "0 0 0 33px", - listeners: { - beforecollapse: org.ametys.web.tool.page.Add._onBeforeCollapsePanelStep2, - beforeexpand: org.ametys.web.tool.page.Add._onBeforeExpandPanelStep2, - expand: org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep2 - }, - items: [ - new org.ametys.HtmlContainer ({cls: 'ametys', html: ""}) - ] - }); - - // Accordion with 3 panel : the multiselect templates Panel, the external - // link Panel and the simple page Panel - org.ametys.web.tool.page.Add._accordionPanelTemplate = new Ext.Panel({ - id: 'new-page-card-1', - - layout:'accordion', - padding: 0, - border: false, - style: { - padding: '10px' - }, - defaults: { - cls: "ametys-fieldset" - }, - layoutConfig: { - }, - items: [ - org.ametys.web.tool.page.Add._panelMultiSelectTemplate, - org.ametys.web.tool.page.Add._panelSitemapWidgetCmsPage, - org.ametys.web.tool.page.Add._panelTextExternalLink, - org.ametys.web.tool.page.Add._panelSimplePage - ] - }); - - return org.ametys.web.tool.page.Add._accordionPanelTemplate; -} - -/* *********************************************** */ -/* Third Panel : select the content or the service */ -/* *********************************************** */ - -org.ametys.web.tool.page.Add._thirdStep = function () -{ - // Multiselect of all contents - org.ametys.web.tool.page.Add._multiSelectContent = new org.ametys.form.MultiSelectField({ - typeAhead: true, - width: 454, - height: 154, - lazyRender:true, - mode: 'local', - minSelections: 1, - maxSelections: 1, - allowBlank: false, - hideLabel: true, - value: '1', - listeners: { - change: org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep3 - }, - store: new Ext.data.ArrayStore({ - id: 0, - fields: [ - 'id', - 'text', - 'smallIcon', - 'description', - 'defaultTitle' - ], - sortInfo: { - field: 'text', - direction: 'ASC' - }, - data: [] - }), - valueField: 'id', - displayField: 'text', - tpl: "<div class='add-page-contents'><img src='{context.contextPath}{smallIcon}'/><span class='add-page-contents-title'>{text}</span><span class='add-page-contents-description'>{description}</span><div class='x-clear'></div></div>" - }); - - // Panel with the Multiselect contents and hint - org.ametys.web.tool.page.Add._panelMultiSelectContent = new Ext.Panel ({ - id: org.ametys.web.tool.page.Add.panelIdAccordionExpandStep3, - title: "<b></b>", - border: false, - layout: 'form', - labelWidth :130, - labelAlign: 'top', - padding: "0 0 0 33px", - listeners: { - beforecollapse: org.ametys.web.tool.page.Add._onBeforeCollapsePanelStep3, - beforeexpand: org.ametys.web.tool.page.Add._onBeforeExpandPanelStep3, - expand: org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep3 - }, - items: [ - new org.ametys.HtmlContainer ({cls: 'hint', html: ""}), - org.ametys.web.tool.page.Add._multiSelectContent - ] - }); - - // Multiselect of all services - org.ametys.web.tool.page.Add._multiSelectService = new org.ametys.form.MultiSelectField({ - typeAhead: true, - width: 454, - height: 154, - lazyRender:true, - mode: 'local', - minSelections: 1, - maxSelections: 1, - allowBlank: false, - hideLabel: true, - value: '1', - listeners: { - change: org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep3 - }, - store: new Ext.data.ArrayStore({ - id: 0, - fields: [ - 'id', - 'text', - 'smallIcon', - 'description', - 'parametersAction' - ], - sortInfo: { - field: 'text', - direction: 'ASC' - }, - data: [] - }), - valueField: 'id', - displayField: 'text', - tpl: "<div class='add-page-services'><img src='{context.contextPath}{smallIcon}'/><span class='add-page-services-title'>{text}</span><span class='add-page-services-description'>{description}</span><div class='x-clear'></div></div>" - }); - - // Panel with the Multiselect services and hint - org.ametys.web.tool.page.Add._panelMultiSelectService = new Ext.Panel ({ - title: "<b></b>", - border: false, - layout: 'form', - labelWidth :130, - labelAlign: 'top', - padding: "0 0 0 33px", - listeners: { - beforecollapse: org.ametys.web.tool.page.Add._onBeforeCollapsePanelStep3, - beforeexpand: org.ametys.web.tool.page.Add._onBeforeExpandPanelStep3, - expand: org.ametys.web.tool.page.Add._checkValueToContinueOrTerminateStep3 - }, - items: [ - new org.ametys.HtmlContainer ({cls: 'hint', html: ""}), - org.ametys.web.tool.page.Add._multiSelectService - ] - }); - - // Accordion with 2 panel : the multiselect contents Panel and the - // multiselect services Panel - org.ametys.web.tool.page.Add._accordionPanelContentAndService = new Ext.Panel({ - id: 'new-page-card-2', - - layout:'accordion', - padding: 0, - border: false, - cls: 'add-page-content', - defaults: { - cls: "ametys-fieldset" - }, - layoutConfig: { - }, - style: { - padding: '10px' - }, - items: [ - org.ametys.web.tool.page.Add._panelMultiSelectContent, - org.ametys.web.tool.page.Add._panelMultiSelectService - ] - }); - - return org.ametys.web.tool.page.Add._accordionPanelContentAndService; -} - -/* ***************************************** */ -/* Fourth Panel : select the tag of the page */ -/* ***************************************** */ - -org.ametys.web.tool.page.Add._fourthStep = function () -{ - org.ametys.web.tool.page.Add._treeTagPanel = new Ext.Spacer ({ flex: 1 }); - - org.ametys.web.tool.page.Add._tagTreePanelCard = new Ext.Panel({ - id: 'new-page-card-3', - - layout:'vbox', - padding: 0, - border: false, - cls: 'add-page-content', - items: [ - new org.ametys.HtmlContainer ({cls: 'hint hint-tags', style: { padding: '5' }, html: ""}), - org.ametys.web.tool.page.Add._treeTagPanel - ] - }); - - return org.ametys.web.tool.page.Add._tagTreePanelCard; -} - -/* ******************************************************************************************************************** */ -/* ******************************************************************************************************************** */ \ No newline at end of file Index: main/plugin-web/sitemap-back.xmap =================================================================== --- main/plugin-web/sitemap-back.xmap (revision 27165) +++ main/plugin-web/sitemap-back.xmap (working copy) @@ -471,11 +471,17 @@ - + + + + + + + Index: main/plugin-web/src/org/ametys/web/clientsideelement/AddPageClientSideElement.java =================================================================== --- main/plugin-web/src/org/ametys/web/clientsideelement/AddPageClientSideElement.java (revision 27165) +++ main/plugin-web/src/org/ametys/web/clientsideelement/AddPageClientSideElement.java (working copy) @@ -1,199 +0,0 @@ -/* - * Copyright 2014 Anyware Services - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.ametys.web.clientsideelement; - -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -import org.apache.avalon.framework.service.ServiceException; -import org.apache.avalon.framework.service.ServiceManager; -import org.apache.commons.lang.StringUtils; - -import org.ametys.cms.contenttype.ContentType; -import org.ametys.cms.contenttype.ContentTypeExtensionPoint; -import org.ametys.plugins.repository.AmetysObjectResolver; -import org.ametys.runtime.right.RightsManager.RightResult; -import org.ametys.runtime.ui.impl.StaticContextualClientSideElement; -import org.ametys.runtime.util.I18nizableText; -import org.ametys.web.repository.page.Page; -import org.ametys.web.repository.site.Site; -import org.ametys.web.repository.site.SiteManager; -import org.ametys.web.service.Service; -import org.ametys.web.service.ServiceExtensionPoint; -import org.ametys.web.skin.Skin; -import org.ametys.web.skin.SkinTemplate; -import org.ametys.web.skin.SkinsManager; - - -/** - * Get all templates, contents, services - * - */ -public class AddPageClientSideElement extends StaticContextualClientSideElement -{ - /** The content type extension point. */ - protected ContentTypeExtensionPoint _contentTypeExtensionPoint; - /** The service extension point. */ - protected ServiceExtensionPoint _serviceExtensionPoint; - /** The skins manager */ - protected SkinsManager _skinsManager; - /** The site manager */ - protected SiteManager _siteManager; - /** The Ametys resolver */ - protected AmetysObjectResolver _resolver; - - @Override - public void service(ServiceManager smanager) throws ServiceException - { - super.service(smanager); - _contentTypeExtensionPoint = (ContentTypeExtensionPoint) smanager.lookup(ContentTypeExtensionPoint.ROLE); - _serviceExtensionPoint = (ServiceExtensionPoint) smanager.lookup(ServiceExtensionPoint.ROLE); - _skinsManager = (SkinsManager) smanager.lookup(SkinsManager.ROLE); - _siteManager = (SiteManager) smanager.lookup(SiteManager.ROLE); - _resolver = (AmetysObjectResolver) smanager.lookup(AmetysObjectResolver.ROLE); - } - - @Override - public Map getParameters(Map contextualParameters) - { - Map parameters = new HashMap(); - parameters.putAll(_initialParameters); - parameters.putAll(_getTemplatesParameter(contextualParameters)); - parameters.putAll(_getContentsParameter()); - parameters.putAll(_getServicesParameter()); - - return parameters; - - } - - // get all templates - private Map _getTemplatesParameter(Map contextualParameters) - { - Map parameters = new HashMap(); - - String siteName = (String) contextualParameters.get("site"); - Site site = _siteManager.getSite(siteName); - String skinId = site.getSkinId(); - Skin skin = _skinsManager.getSkin(skinId); - Set templatesId = skin.getTemplates(); - - parameters.put("templates-size", new I18nizableText(Integer.toString(templatesId.size()))); - - int i = 0; - for (String templateId : templatesId) - { - SkinTemplate template = skin.getTemplate(templateId); - - parameters.put("template-" + i + "-id", new I18nizableText(templateId)); - parameters.put("template-" + i + "-label", template.getLabel()); - parameters.put("template-" + i + "-description", template.getDescription()); - parameters.put("template-" + i + "-iconSmall", new I18nizableText(template.getSmallImage())); - parameters.put("template-" + i + "-iconMedium", new I18nizableText(template.getMediumImage())); - parameters.put("template-" + i + "-iconLarge", new I18nizableText(template.getLargeImage())); - - i++; - } - - return parameters; - } - - // get all contents - private Map _getContentsParameter() - { - Map parameters = new HashMap(); - - Set contentTypesIds = _contentTypeExtensionPoint.getExtensionsIds(); - - int i = 0; - for (String contentTypeId : contentTypesIds) - { - ContentType contentType = _contentTypeExtensionPoint.getExtension(contentTypeId); - - parameters.put("content-" + i + "-id", new I18nizableText(contentTypeId)); - parameters.put("content-" + i + "-label", contentType.getLabel()); - parameters.put("content-" + i + "-defaultTitle", contentType.getDefaultTitle()); - parameters.put("content-" + i + "-description", contentType.getDescription()); - parameters.put("content-" + i + "-iconSmall", new I18nizableText(contentType.getSmallIcon())); - parameters.put("content-" + i + "-iconMedium", new I18nizableText(contentType.getMediumIcon())); - parameters.put("content-" + i + "-iconLarge", new I18nizableText(contentType.getLargeIcon())); - - i++; - } - - parameters.put("contents-size", new I18nizableText(Integer.toString(i))); - - return parameters; - } - - // get all services - private Map _getServicesParameter() - { - Map parameters = new HashMap(); - - Set serviceIds = _serviceExtensionPoint.getExtensionsIds(); - - int i = 0; - for (String serviceId : serviceIds) - { - Service service = _serviceExtensionPoint.getExtension(serviceId); - - parameters.put("service-" + i + "-id", new I18nizableText(serviceId)); - parameters.put("service-" + i + "-parameters-action", new I18nizableText(service.getParametersScript().getScriptClassname())); - parameters.put("service-" + i + "-label", service.getLabel()); - parameters.put("service-" + i + "-description", service.getDescription()); - parameters.put("service-" + i + "-iconSmall", new I18nizableText(service.getSmallIcon())); - parameters.put("service-" + i + "-iconMedium", new I18nizableText(service.getMediumIcon())); - parameters.put("service-" + i + "-iconLarge", new I18nizableText(service.getLargeIcon())); - - i++; - } - - parameters.put("services-size", new I18nizableText(Integer.toString(i))); - - return parameters; - } - - @Override - public Map getCurrentParameters(Map parameters) - { - String pageId = (String) parameters.get("pageId"); - Page page = _resolver.resolveById(pageId); - - Map result = new HashMap(); - - for (String key : _initialParameters.keySet()) - { - if (key.startsWith("right-")) - { - String right = _initialParameters.get(key).getLabel(); - - boolean hasRight = true; - if (StringUtils.isNotBlank(right)) - { - String context = "/pages/" + page.getSitemapName() + "/" + page.getPathInSitemap(); - hasRight = _rightsManager.hasRight(_currentUserProvider.getUser(), right, context) == RightResult.RIGHT_OK; - } - - result.put(key, new I18nizableText(hasRight ? "true" : "false")); - } - } - - return result; - } - - -} Index: main/plugin-web/src/org/ametys/web/repository/page/generators/AvailableContentsAndServicesGenerator.java =================================================================== --- main/plugin-web/src/org/ametys/web/repository/page/generators/AvailableContentsAndServicesGenerator.java (revision 27165) +++ main/plugin-web/src/org/ametys/web/repository/page/generators/AvailableContentsAndServicesGenerator.java (working copy) @@ -149,7 +149,10 @@ { AttributesImpl attrsC = new AttributesImpl(); attrsC.addCDATAAttribute("id", nameC); - XMLUtils.createElement(contentHandler, "content", attrsC); + + XMLUtils.startElement(contentHandler, "content", attrsC); + // FIXME saxmore (label, description, icon-small, icon-medium, icon-large) + XMLUtils.endElement(contentHandler, "content"); } } @@ -166,7 +169,10 @@ { AttributesImpl attrsS = new AttributesImpl(); attrsS.addCDATAAttribute("id", nameS); - XMLUtils.createElement(contentHandler, "service", attrsS); + + XMLUtils.startElement(contentHandler, "service", attrsS); + // FIXME saxmore (label, description, icon-small, icon-medium, icon-large) + XMLUtils.endElement(contentHandler, "service"); } } Index: main/plugin-web/src/org/ametys/web/repository/page/generators/PageTemplatesGenerator.java =================================================================== --- main/plugin-web/src/org/ametys/web/repository/page/generators/PageTemplatesGenerator.java (revision 27165) +++ main/plugin-web/src/org/ametys/web/repository/page/generators/PageTemplatesGenerator.java (working copy) @@ -30,6 +30,9 @@ import org.ametys.plugins.repository.AmetysObjectResolver; import org.ametys.web.repository.page.Page; +import org.ametys.web.skin.Skin; +import org.ametys.web.skin.SkinTemplate; +import org.ametys.web.skin.SkinsManager; import org.ametys.web.skin.TemplatesAssignmentHandler; /** @@ -42,6 +45,8 @@ protected TemplatesAssignmentHandler _templatesAssignmentHandler; /** The ametys object resolver */ protected AmetysObjectResolver _resolver; + /** The skins manager */ + protected SkinsManager _skinsManager; @Override public void service(ServiceManager smanager) throws ServiceException @@ -49,6 +54,7 @@ super.service(smanager); _templatesAssignmentHandler = (TemplatesAssignmentHandler) smanager.lookup(TemplatesAssignmentHandler.ROLE); _resolver = (AmetysObjectResolver) smanager.lookup(AmetysObjectResolver.ROLE); + _skinsManager = (SkinsManager) smanager.lookup(SkinsManager.ROLE); } @Override @@ -60,19 +66,31 @@ Page page = _resolver.resolveById(pageId); Set availablesTemplates = _templatesAssignmentHandler.getAvailablesTemplates(page); + String skinId = page.getSite().getSkinId(); + Skin skin = _skinsManager.getSkin(skinId); + contentHandler.startDocument(); XMLUtils.startElement(contentHandler, "templates"); - for (String name : availablesTemplates) + for (String templateName : availablesTemplates) { + SkinTemplate template = skin.getTemplate(templateName); + AttributesImpl attrs = new AttributesImpl(); - attrs.addCDATAAttribute("id", name); - XMLUtils.createElement(contentHandler, "template", attrs); + attrs.addCDATAAttribute("id", templateName); + XMLUtils.startElement(contentHandler, "template", attrs); + + template.getLabel().toSAX(contentHandler, "label"); + template.getDescription().toSAX(contentHandler, "description"); + XMLUtils.createElement(contentHandler, "icon-small", template.getSmallImage()); + XMLUtils.createElement(contentHandler, "icon-medium", template.getMediumImage()); + XMLUtils.createElement(contentHandler, "icon-large", template.getLargeImage()); + + XMLUtils.endElement(contentHandler, "template"); } XMLUtils.endElement(contentHandler, "templates"); contentHandler.endDocument(); } - }