/* * Copyright (C) 2003-2007 eXo Platform SAS. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License * as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see<http://www.gnu.org/licenses/>. */ package org.exoplatform.ecm.webui.component.admin.script; import java.util.ArrayList; import java.util.List; import javax.jcr.Node; import javax.jcr.NodeIterator; import org.exoplatform.ecm.webui.component.admin.script.UIScriptList.ScriptData; import org.exoplatform.ecm.webui.utils.Utils; import org.exoplatform.services.cms.scripts.ScriptService; import org.exoplatform.services.wcm.utils.WCMCoreUtils; import org.exoplatform.webui.config.annotation.ComponentConfig; import org.exoplatform.webui.core.UIContainer; import org.exoplatform.webui.core.UIPopupWindow; import org.exoplatform.webui.core.lifecycle.UIContainerLifecycle; import org.exoplatform.webui.core.model.SelectItemOption; /** * Created by The eXo Platform SARL * Author : pham tuan * phamtuanchip@yahoo.de * September 27, 2006 * 09:22:15 AM */ @ComponentConfig(lifecycle = UIContainerLifecycle.class) public class UIECMScripts extends UIContainer { public static String SCRIPTLIST_NAME = "ecmScriptList" ; public static String SCRIPTFORM_NAME = "ecmScriptForm" ; public static String SCRIPT_PAGE = "PageIterator" ; public UIECMScripts() throws Exception { addChild(UIECMFilterForm.class, null, null) ; UIScriptList list = addChild(UIScriptList.class, null, SCRIPTLIST_NAME) ; list.getUIPageIterator().setId(SCRIPTLIST_NAME + SCRIPT_PAGE) ; } private List<SelectItemOption<String>> getECMCategoryOptions() throws Exception { List<SelectItemOption<String>> ecmOptions = new ArrayList<SelectItemOption<String>>() ; Node ecmScriptHome = getApplicationComponent(ScriptService.class).getECMScriptHome(WCMCoreUtils.getSystemSessionProvider()); NodeIterator categories = ecmScriptHome.getNodes() ; while(categories.hasNext()) { Node script = categories.nextNode() ; ecmOptions.add(new SelectItemOption<String>(script.getName(),script.getName())) ; } return ecmOptions ; } public void refresh(int currentPage) throws Exception { UIECMFilterForm ecmFilterForm = getChild(UIECMFilterForm.class) ; String categoryName = ecmFilterForm.getUIFormSelectBox(UIECMFilterForm.FIELD_SELECT_SCRIPT).getValue() ; if (categoryName == null) { ecmFilterForm.setOptions(getECMCategoryOptions()) ; categoryName = ecmFilterForm.getUIFormSelectBox(UIECMFilterForm.FIELD_SELECT_SCRIPT).getValue() ; } UIScriptList uiScriptList = getChildById(SCRIPTLIST_NAME); uiScriptList.updateGrid(getECMScript(categoryName), currentPage); } public List<ScriptData> getECMScript(String name) throws Exception { List <ScriptData> scriptData = new ArrayList <ScriptData>() ; List<Node> scripts = new ArrayList<Node> () ; if(name.equals("action")) { scripts = getApplicationComponent(ScriptService.class).getECMActionScripts(WCMCoreUtils.getSystemSessionProvider()); }else if(name.equals("widget")){ scripts = getApplicationComponent(ScriptService.class).getECMWidgetScripts(WCMCoreUtils.getUserSessionProvider()); }else if(name.equals("interceptor")) { scripts = getApplicationComponent(ScriptService.class).getECMInterceptorScripts(WCMCoreUtils.getSystemSessionProvider()); } for(Node scriptNode : scripts) { String version = "" ; if(scriptNode.isNodeType(Utils.MIX_VERSIONABLE) && !scriptNode.isNodeType(Utils.NT_FROZEN)){ version = scriptNode.getBaseVersion().getName(); } scriptData.add(new ScriptData(scriptNode.getName(), scriptNode.getPath(), version)) ; } return scriptData ; } public void initFormPopup(String id) throws Exception { removeChildById(id); UIPopupWindow uiPopup = addChild(UIPopupWindow.class, null, id); uiPopup.setShowMask(true); uiPopup.setWindowSize(600, 250); UIScriptForm uiForm = createUIComponent(UIScriptForm.class, null, null); uiPopup.setUIComponent(uiForm); uiPopup.setRendered(true); uiPopup.setShow(true); uiPopup.setResizable(true); } }