📄 managetemplates.java
字号:
PropertiesManager properties = new PropertiesManager( Jahia.getJahiaPropertiesFileName() ); request.setAttribute("warningMsg",""); JahiaSite site = (JahiaSite)request.getAttribute("site"); String subAction = (String)request.getParameter("subaction"); String templName = (String)request.getParameter("templName"); String rootFolder = (String)request.getParameter("rootFolder"); if ( rootFolder == null ){ rootFolder = File.separator; } String fileName = (String)request.getParameter("fileName"); String isAvailable = (String)request.getParameter("isAvailable"); request.setAttribute("templName",JahiaTools.replaceNullString(templName,"")); request.setAttribute("rootFolder",JahiaTools.replaceNullString(rootFolder,"")); request.setAttribute("fileName",JahiaTools.replaceNullString(fileName,"")); if ( isAvailable != null ){ request.setAttribute("isAvailable",new Integer(1)); } else { request.setAttribute("isAvailable",new Integer(0)); } if ( subAction != null && subAction.equals("save") && canAddNew ){ if ( templName == null || (templName.length()<=0) || fileName == null || (fileName.length()<=0) ) { request.setAttribute("warningMsg","Please complete requested informations (*)"); } else { // save definition in db String path = this.context.getRealPath(properties.getProperty("jahiaTemplatesDiskPath") ); while ( rootFolder.startsWith("/") || rootFolder.startsWith("\\") || rootFolder.startsWith(".") ){ rootFolder = rootFolder.substring(1,rootFolder.length()); } while ( rootFolder.endsWith("/") || rootFolder.endsWith("\\") ){ rootFolder = rootFolder.substring(0,rootFolder.length()-1); } // check if the file really exist StringBuffer tempFullPath = new StringBuffer (1024); tempFullPath.append(path); tempFullPath.append(File.separator); tempFullPath.append(site.getSiteKey()); tempFullPath.append(File.separator); tempFullPath.append(rootFolder); tempFullPath.append(File.separator) ; tempFullPath.append(fileName) ; if ( !JahiaTools.checkFileNameCaseSensitive(tempFullPath.toString()) ){ request.setAttribute("warningMsg","Jahia cannot find the file " + fileName + " in the folder " + rootFolder); } else if ( rootFolder.startsWith(".") ){ request.setAttribute("warningMsg","The template folder is not valid "); } else { StringBuffer buff = new StringBuffer (1024); buff.append(properties.getProperty("jahiaTemplatesDiskPath")); buff.append(site.getSiteKey()); buff.append("/") ; if ( !rootFolder.equals("") ){ buff.append(rootFolder); buff.append("/") ; } buff.append(fileName) ; String sourcePath = JahiaTools.replacePattern(buff.toString(),"\\","/"); JahiaPageDefinition def = pageTempServ.getPageTemplateBySourcePath(site.getID(),sourcePath); if ( def == null || !def.getSourcePath().equals(sourcePath) ){ pageTempServ.createPageTemplate ( site.getID(), templName, sourcePath, (isAvailable != null), "", // no image site.getAclID() ); request.setAttribute("warningMsg","The template " + fileName + " has been successfully added in Jahia"); } else { request.setAttribute("warningMsg", "This template is already registered in Jahia"); } } } } JahiaAdministration.doRedirect(request,response,session,JSP_PATH + "template_add.jsp"); } catch ( JahiaException je ){ request.setAttribute("jahiaDisplayMessage", "An error occured while processing your request"); JahiaAdministration.doRedirect( request, response, session, JSP_PATH + "menu.jsp" ); } } // end addTemplate protected String getTemplatesContext(HttpSession session){ String templatesContext = null; // try to get from session templatesContext = (String)session.getAttribute(CLASS_NAME + "jahiaTemplatesDiskPath"); if ( templatesContext == null ){ PropertiesManager props = new PropertiesManager( Jahia.getJahiaPropertiesFileName() ); if ( props!= null ){ templatesContext = (String)props.getProperty("jahiaTemplatesDiskPath"); if ( templatesContext != null ){ session.setAttribute(CLASS_NAME + "jahiaTemplatesDiskPath", templatesContext); } } } return templatesContext; } /** * Display a custom version of the pages settings view, using doRedirect(). * This form prompts the user to choose an alternative template for any pages * currently referenced. * * @author Alexandre Kraft * @author Mikha雔 Janson * * @param request Servlet request. * @param response Servlet response. * @param session Servlet session for the current user. * @param criticalPages an <code>List</code> of <code>JahiaPage</code> objects referencing the template we want to delete. * @param templ a reference to the template we want to delete. */ private void displaySwap( HttpServletRequest request, HttpServletResponse response, HttpSession session, List criticalPages, JahiaPageDefinition templ ) throws IOException, ServletException { try { // get all pages id... JahiaPageBaseService pageService = JahiaPageBaseService.getInstance(); // get all pages infos... Vector allPagesInfosVector = new Vector(); Vector allTemplatesVector = new Vector(); for (int i=0; i<criticalPages.size(); i++) { JahiaPage page = (JahiaPage) criticalPages.get(i); allPagesInfosVector.add (page); } // get homepage id for the current site... Integer homePageID = new Integer( site.getHomePageID() ); // retrieve previous form values... Integer basePageID = (Integer) request.getAttribute(CLASS_NAME + "basePageID"); Integer baseTemplateID = (Integer) request.getAttribute(CLASS_NAME + "baseTemplateID"); // get only visible templates Enumeration completeTemplatesEnumeration = ServicesRegistry.getInstance().getJahiaPageTemplateService().getPageTemplates (site.getID(), true); // exclude the template we want to delete... while (completeTemplatesEnumeration.hasMoreElements()) { JahiaPageDefinition template = (JahiaPageDefinition) completeTemplatesEnumeration.nextElement(); if(template.getID() != templ.getID()) { allTemplatesVector.add (template); } } Enumeration allTemplatesEnumeration = allTemplatesVector.elements(); // set default values... if(basePageID == null) { basePageID = new Integer(0); } if(baseTemplateID == null) { baseTemplateID = new Integer(0); } if(homePageID == null) { homePageID = new Integer(0); } // set all pages infos into an enumeration and redirect... request.setAttribute("homePageID", homePageID); request.setAttribute("basePageID", basePageID); request.setAttribute("baseTemplateID", baseTemplateID); request.setAttribute("allTemplatesEnumeration", allTemplatesEnumeration); request.setAttribute("allPagesInfosEnumeration", allPagesInfosVector.elements()); request.setAttribute("totalCriticalPages", new Integer(criticalPages.size())); request.setAttribute("templ", templ); JahiaAdministration.doRedirect( request, response, session, JSP_PATH + "template_cleanpages.jsp" ); // reset message... session.setAttribute(CLASS_NAME + "jahiaDisplayMessage", Jahia.COPYRIGHT); } catch (JahiaException je) { } } // end displaySwap /** * Process requested template swapping to remove references * to a given template from a page before deleteing the template. * * @author Mikha雔 Janson * * @param request Servlet request. * @param response Servlet response. * @param session Servlet session for the current user. */ protected void processSwap( HttpServletRequest request, HttpServletResponse response, HttpSession session ) throws Throwable { int idPage = 0; int idTemplate = 0; String idPageString = ""; String idTemplateString = (String) request.getParameter("templateid").trim(); String[] pageIDs = request.getParameterValues( "pageids" ); List errors = new ArrayList(); JahiaPage page = null; boolean valid = true; // check form validity... if ((pageIDs == null) || (pageIDs.length < 1)) { valid = false; errors.add("Please choose at least one page."); } if (idTemplateString.equals("0")) { valid = false; errors.add("Please choose a template."); } if (!valid) { request.setAttribute("manageTemplatesErrors", errors); idTemplate = 0; } else { try { idTemplate = Integer.parseInt(idTemplateString); } catch (NumberFormatException nfe) { // FIXME - Mik : TEMPORARY... session.setAttribute(CLASS_NAME + "jahiaDisplayMessage", "Invalid template reference."); } } // get form values... if (pageIDs != null) { String titlePage = ""; for (int i = 0; i < pageIDs.length; i++) { idPageString = pageIDs[i]; try { idPage = Integer.parseInt(idPageString); if (!swapTemplate(idPage, idTemplate)) { titlePage = sReg.getJahiaPageService().lookupPage(idPage).getTitle(); errors.add("Couldn't change templates for page "+ titlePage); } } catch (Exception e) { // } } } request.setAttribute("processedSwap", new Integer(1)); editTemplate (request, response, session); } // end processSwap /** * Perform a template swap on a page * * @author Mikhael Janson * * @param idPage the ID of the page we want to update * @param idTemplate the ID of the template we want to assign this page */ private boolean swapTemplate( int idPage, int idTemplate ) { boolean out = false; JahiaPage page = null; try { JahiaPageService pageServ = ServicesRegistry.getInstance() .getJahiaPageService(); if ( idPage != 0 && idTemplate != 0 ){ page = pageServ.lookupPage(idPage); if ( page != null ){ // set new settings for this JahiaPage... page.setPageTemplateID (idTemplate); page.commitChanges (true); // FIXME - mik : CHECK IF THE PAGE HAS CHANGED TEMPLATES, AND THE TEMPLATE IS VALID... out = true; } } } catch ( JahiaException je ){ // } return out; } // end swapTemplate} // end ManageTemplates
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -