/* * This library is part of OpenCms - * the Open Source Content Management System * * Copyright (c) Alkacon Software GmbH (http://www.alkacon.com) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * For further information about Alkacon Software GmbH, please see the * company website: http://www.alkacon.com * * For further information about OpenCms, please see the * project website: http://www.opencms.org * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package org.opencms.workplace.explorer; import org.opencms.db.CmsUserSettings; import org.opencms.file.types.I_CmsResourceType; import org.opencms.jsp.CmsJspActionElement; import org.opencms.main.OpenCms; import org.opencms.workplace.CmsWorkplace; import org.opencms.workplace.CmsWorkplaceSettings; import java.util.HashMap; import java.util.List; import java.util.Locale; import javax.servlet.http.HttpServletRequest; /** * Provides methods for building the top frame Javascript code for the Explorer view of the OpenCms Workplace.<p> * * The following files use this class: * <ul> * <li>/views/top_js.jsp * </ul> * <p> * * @since 6.2.0 */ public class CmsExplorerInit extends CmsWorkplace { /** Stores already generated javascript menu outputs with a Locale object as key. */ private HashMap<Locale, String> m_generatedScripts; /** * Public constructor.<p> * * @param jsp an initialized JSP action element */ public CmsExplorerInit(CmsJspActionElement jsp) { super(jsp); m_generatedScripts = new HashMap<Locale, String>(); } /** * Builds the Javascript for the Workplace context menus.<p> * * @return the Javascript for the Workplace context menus */ public String buildContextMenues() { // try to get the stored entries from the Map String entries = m_generatedScripts.get(getMessages().getLocale()); if (entries == null) { StringBuffer result = new StringBuffer(); // get all available resource types List<I_CmsResourceType> allResTypes = OpenCms.getResourceManager().getResourceTypesWithUnknown(); for (int i = 0; i < allResTypes.size(); i++) { // loop through all types I_CmsResourceType type = allResTypes.get(i); // get explorer type settings for current resource type CmsExplorerTypeSettings settings = OpenCms.getWorkplaceManager().getExplorerTypeSetting( type.getTypeName()); if (settings != null) { // append the context menu of the current resource type result.append(settings.getJSEntries(settings, type.getTypeId(), getMessages())); } } entries = result.toString(); // store the generated entries m_generatedScripts.put(getMessages().getLocale(), entries); } return entries; } /** * Returns the file settings for the Workplace explorer view.<p> * * @return the file settings for the Workplace explorer view */ public int getExplorerSettings() { CmsUserSettings settings = new CmsUserSettings(getCms()); int value = settings.getExplorerSettings(); return value; } /** * Returns the server name for initializing the explorer view.<p> * * @return the server name */ public String getServerName() { return getJsp().getRequest().getServerName(); } /** * Returns the server path for initializing the explorer view.<p> * * @return the server path */ public String getServerPath() { return OpenCms.getStaticExportManager().getVfsPrefix(); } /** * Returns the setting for the upload button for initializing the explorer view.<p> * * @return the setting for the upload button */ public String getShowFileUploadButtons() { return OpenCms.getWorkplaceManager().getDefaultUserSettings().getShowFileUploadButtonString(); } /** * Returns the name of the current user for initializing the explorer view.<p> * * @return the name of the user */ public String getUserName() { return getSettings().getUser().getName(); } /** * @see org.opencms.workplace.CmsWorkplace#initWorkplaceRequestValues(org.opencms.workplace.CmsWorkplaceSettings, javax.servlet.http.HttpServletRequest) */ @Override protected void initWorkplaceRequestValues(CmsWorkplaceSettings settings, HttpServletRequest request) { // nothing to do for JS creation } }