📄 filemanager_engine.java
字号:
//// ____.// __/\ ______| |__/\. _______// __ .____| | \ | +----+ \// _______| /--| | | - \ _ | : - \_________// \\______: :---| : : | : | \________>// |__\---\_____________:______: :____|____:_____\// /_____|//// . . . i n j a h i a w e t r u s t . . .////// Filemanger_Engine// NK 10.02.2001////package org.jahia.engines.filemanager;import java.io.*;import java.util.*; // HashMapimport javax.servlet.*; // ServletContextimport javax.servlet.http.*; // HttpServletRequestimport org.jahia.tools.files.*; // FileUploadimport org.jahia.exceptions.*; // JahiaExceptionimport org.jahia.exceptions.JahiaSessionExpirationException;import org.jahia.utils.*; // JahiaConsoleimport org.jahia.data.*; // JahiaDataimport org.jahia.services.pages.JahiaPage;import org.jahia.data.fields.*; // JahiaField, FieldTypesimport org.jahia.data.files.*; // JahiaFile, JahiaFileFieldimport org.jahia.data.containers.*; // JahiaContainerimport org.jahia.params.*; // ParamBeanimport org.jahia.registries.*; // ServicesRegistryimport org.jahia.engines.*; // JahiaEngine interfaceimport org.jahia.engines.shared.*; // SmallText, BigText, etc.import org.jahia.data.events.*; // JahiaEventimport org.jahia.engines.rights.*; // ViewRightsimport org.jahia.services.acl.*;import org.jahia.services.filemanager.*;/** * Handle file upload, download, virtual folder structure * * @author Khue ng * @version 1.0 */public class Filemanager_Engine implements JahiaEngine { private static final String CLASS_NAME = "Filemanager_Engine"; private static Filemanager_Engine m_Instance = null; private static String engineName = "filemanager"; private EngineToolBox toolBox; private static final String TEMPLATE_JSP = "filemanager"; private static final String FILEUPLOAD_JSP = "filemanager_fileupload"; private static final String FILEDELETE_JSP = "filemanager_filedelete"; private static final String RELOADPAGE_JSP = "filemanager_reloadpage"; private static final String ERROR_JSP = "filemanager_error"; private static final String CLOSE_JSP = "filemanager_close"; /** The requested action **/ private final String ACTION_REQ = "actionreq"; private final String SUB_ACTION = "subAction"; private final String ACTION_FM_CREATE = "actionFilemanagerCreate"; private final String ACTION_FOLDER_OPEN = "actionFolderOpen"; private final String ACTION_FILE_UPLOAD = "actionFileUpload"; private final String ACTION_FILE_DOWNLOAD = "actionFileDownload"; private final String ACTION_FILE_DELETE = "actionFileDelete"; private final String ACTION_FILE_MOVE = "actionFileMove"; private final String ACTION_FILE_EDIT = "actionFileEdit"; private final String ACTION_FILE_EDITSAVE = "actionFileEditSave"; private final String ACTION_FILE_COPY = "actionFileCopy"; private final String ACTION_FOLDER_CREATE = "actionFolderCreate"; private final String ACTION_FOLDER_DELETE = "actionFolderDelete"; private final String ACTION_FOLDER_MOVE = "actionFolderMove"; private final String ACTION_FOLDER_RENAME = "actionFolderRename"; /** form parameter name for folder id **/ private final String FORM_FOLDERID = "active_folder_id"; /** form parameter name for new folder name **/ private final String FORM_NEWFOLDERNAME = "foldername"; /** form parameter name for files list **/ private final String FORM_FILESLIST = "filesList"; /** form parameter name for a file item **/ private final String FORM_FILE_ITEM = "fileItem"; /** form parameter file url **/ private final String FORM_FILE_FILENAME = "filename"; /** form parameter file title **/ private final String FORM_FILE_TITLE = "fileTitle"; /** form parameter file edit action **/ private final String FORM_FILE_EDIT_ACTION = "editAction"; /** form parameter file move action **/ private final String FORM_FILE_MOVE_ACTION = "moveAction"; /** form parameter folder sub action **/ private final String FORM_FOLDER_SUB_ACTION = "subAction"; /** form parameter folder move action **/ private final String FORM_FOLDER_MOVE_ACTION = "moveAction"; /** form parameter name for file move destination folder **/ private final String FORM_FILE_MOVE_DESTINATION_FOLDER = "fileMoveDestinationFolder"; /** form parameter name for folder move destination folder **/ private final String FORM_FOLDER_MOVE_DESTINATION_FOLDER = "folderMoveDestinationFolder"; /** display all folder's children **/ private final String DEPLOY_ALL_BRANCH = "allBranch"; /** display only children folders for active folder branch **/ private final String DEPLOY_ONLY_ONE_BRANCH = " oneBranch"; /*** * constructor * */ protected Filemanager_Engine() { // JahiaConsole.println( "Engine", // "***** Starting Filemanager Engine *****" ); toolBox = EngineToolBox.getInstance(); } // end constructor /*** * returns a single instance of the object * */ public static synchronized Filemanager_Engine getInstance() { if (m_Instance == null) { m_Instance = new Filemanager_Engine(); } return m_Instance; } // end getInstance /*** * authoriseRender * */ public boolean authoriseRender( ParamBean jParams ) { return toolBox.authoriseRender( jParams ); } // end authoriseRender /*** * renderLink * */ public String renderLink( ParamBean jParams, Object theObj ) throws JahiaException {// String params = "&mode=display"; String params = "?mode=display"; Vector datas = (Vector)theObj; if ( datas != null ){ String action = (String)datas.get(0); if ( action != null && (action.length()>0) ){ if ( action.equals("actionFileDownload") ){ params = ""; //JahiaConsole.println("FileManager_Engine.renderLink"," action is fileDownload"); JahiaField theField = (JahiaField)datas.get(1); if ( theField != null ){ JahiaFileField fField = (JahiaFileField)theField.getObject(); if ( fField != null ){ int fileID = fField.getFileID(); JahiaFile f = ServicesRegistry.getInstance().getJahiaFilemanagerService().getFileDB(fileID); if ( f != null ){ String escapedFileName = java.net.URLEncoder.encode(f.getRealName()); // this next line is an ugly hack required because // of the evolution of the use of RFC 1738 to // encoding spaces with %20. escapedFileName = JahiaTools.replacePattern(escapedFileName, "+", "%20"); params = "/" + escapedFileName + params; action += "&fid=" + theField.getID(); } else { action = ""; } } else { action =""; } } } if ( action != null & action.length()>0 ){ params += "?" + ACTION_REQ + "=" + action; } } } String theUrl = ""; if ( jParams != null ){ theUrl = jParams.composeEngineUrl( engineName, params ); } return theUrl ; } // end renderLink /*** * needsJahiaData * */ public boolean needsJahiaData( ParamBean jParams ) { return false; } // end needsJahiaData /*** * handdles the engine actions * * @param jParams a ParamBean object * @param jData a JahiaData object (not mandatory) * */ public void handleActions( ParamBean jParams, JahiaData jData ) throws JahiaException { HashMap engineMap = initEngineMap( jParams ); boolean displayScreen = true; String action = jParams.getParameter(ACTION_REQ); //JahiaConsole.println("FilemanagerEngine.handleActions","actionreq= " + action); if ( action != null ){ if ( action.equals(ACTION_FILE_UPLOAD) ){ handleFileUpload(jParams,engineMap); } else if ( action.equals(ACTION_FILE_DOWNLOAD) ){ if ( handleFileDownload(jParams,engineMap) ){ displayScreen = false; } } else if ( action.equals(ACTION_FILE_DELETE) ){ handleFileDelete(jParams,engineMap); } else { // the files list for a gived page and all files made public Vector v = ServicesRegistry.getInstance() .getJahiaFilemanagerService() .getFilesByPage(jParams.getSiteID(),jParams.getPageID(),true); Vector filesList = new Vector(); if ( jParams.getUser().isAdminMember(jParams.getSiteID()) ){ filesList = v; } else { int size = v.size(); JahiaFile jf = null; for (int i=0 ; i<size ; i++){ jf = (JahiaFile)v.get(i); if ( jf.getUploadUser().equals(jParams.getUser().getName()) ){ filesList.add(jf); } } } engineMap.put( "filesList", filesList.elements() ); // undefined action engineMap.put("fmMsg",""); engineMap.put( "jspSource", TEMPLATE_JSP ); } } else {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -