📄 file_field.java
字号:
//// ____.// __/\ ______| |__/\. _______// __ .____| | \ | +----+ \// _______| /--| | | - \ _ | : - \_________// \\______: :---| : : | : | \________>// |__\---\_____________:______: :____|____:_____\// /_____|//// . . . i n j a h i a w e t r u s t . . .////// File_Field// 21.01.2001 NK// 09.05.2001 NK Synchronize with rigth, logs screen//// handleField( mode, jParams )//package org.jahia.engines.shared;import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;import org.jahia.tools.files.*; // FileUploadimport org.jahia.exceptions.*; // JahiaExceptionimport org.jahia.utils.*; // JahiaConsoleimport org.jahia.data.*; // JahiaData, ConnectionTypesimport org.jahia.params.*; // ParamBeanimport org.jahia.engines.*; // JahiaEngine interfaceimport org.jahia.engines.filemanager.*; // Filemanager_Engineimport org.jahia.services.filemanager.*; // Filemanager, Folderimport org.jahia.data.fields.*; // JahiaField, FieldTypesimport org.jahia.data.files.*; // JahiaFile, JahiaFileFieldimport org.jahia.registries.*; // ServicesRegistryimport org.jahia.data.containers.*;import org.jahia.services.acl.*;public class File_Field{ private static File_Field theObject = null; private static final String JSP_FILE = "/jsp/jahia/engines/shared/file_field.jsp"; public static final String READONLY_JSP = "/jsp/jahia/engines/shared/readonly_file_field.jsp"; /*** * getInstance * NK 21.01.2001 * */ public static synchronized File_Field getInstance() { if (theObject == null) { theObject = new File_Field(); } return theObject; } // end getInstance /*** * handles the field actions * * @param jParams a ParamBean object * @param mode the mode, according to JahiaEngine * @return true if everything went okay, false if not * @see org.jahia.engines.JahiaEngine * */ public boolean handleField( ParamBean jParams, Integer modeInt, HashMap engineMap ) throws JahiaException { int mode = modeInt.intValue(); JahiaField theField = (JahiaField) engineMap.get( "theField" ); //JahiaConsole.println("File_Field::handleField() ", theField.getID() ); //JahiaConsole.println("File_Field::handleField() ", "mode is " + mode ); if ( mode != JahiaEngine.SAVE_MODE ){ String theScreen = jParams.getRequest().getParameter ("screen"); String lastScreen = jParams.getRequest().getParameter ("lastscreen"); if ( theScreen == null || lastScreen == null ){ mode = JahiaEngine.LOAD_MODE; } } switch (mode) { case (JahiaEngine.LOAD_MODE) : return composeEngineMap( jParams, engineMap, theField ); case (JahiaEngine.UPDATE_MODE) : return getFormData( jParams, engineMap, theField ); case (JahiaEngine.SAVE_MODE) : return saveData( jParams, engineMap, theField ); } return false; } // end handleField /*** * gets POST data from the form and saves it in session * * @param jParams a ParamBean object * @param engineMap the engine hashmap * @param theField the field we are working on * @return true if everything went okay, false if not * */ private boolean getFormData( ParamBean jParams, HashMap engineMap, JahiaField theField ) throws JahiaException { boolean out = true; //JahiaConsole.println("File_Field.getFormData","started"); JahiaFileField fField = composeFileField(jParams,engineMap,theField); String fileTitle = jParams.getRequest().getParameter("file_title"); if ( fileTitle == null ){ fileTitle = ""; } Integer fileID; try { fileID = new Integer( jParams.getRequest().getParameter("file_id") ); } catch (NumberFormatException nfe) { fileID = new Integer(-1); } if ( fField != null ){ fField.setFileID(fileID.intValue()); fField.setFileFieldTitle(fileTitle); } theField.setObject(fField); Integer activeFolderID; try { activeFolderID = new Integer( jParams.getRequest().getParameter("active_folder_id") ); } catch (NumberFormatException nfe) { activeFolderID = new Integer(-1); } //JahiaConsole.println("File_Field.getFormData","activefolderID=" + activeFolderID ); if ( activeFolderID == null || activeFolderID.intValue()==-1 ){ Folder activeFolder = ServicesRegistry.getInstance().getJahiaFilemanagerService().getFolderByFile( fileID.intValue() ); if ( activeFolder == null ){ Filemanager fmng = ServicesRegistry.getInstance().getJahiaFilemanagerService().getFilemanagerByOwner(jParams.getJahiaID()); if ( fmng == null ){ // throws exception } activeFolder = fmng.getRootFolder(); } activeFolderID = new Integer(activeFolder.getFolderID()); //JahiaConsole.println("File_Field.getFormData"," activeFolder name is " + activeFolder.getFolderName() ); } engineMap.put( "fileID", fileID ); engineMap.put( "activeFolderID", activeFolderID ); engineMap.put("fileTitle",fileTitle); //JahiaConsole.println("File_Field.getFormData","getFormData for " + jParams.getEngine() + " fileTitle is " + fileTitle); return out; } // end getFormData /*** * saves data in datasource * * @param jParams a ParamBean object * @param engineMap the engine hashmap * @param theField the field we are working on * @return true if everything went okay, false if not * */ private boolean saveData( ParamBean jParams, HashMap engineMap, JahiaField theField ) throws JahiaException { //JahiaConsole.println("File_Field.saveData","started "); theField.setValue( FormDataManager.getInstance().encode( theField.getValue() ) ); JahiaFileField fField = (JahiaFileField)theField.getObject(); if ( fField != null ){ //fField.setFileFieldTitle(fileTitle); //fField.setFileID(fileID); //theField.setObject(fField); // 0 for parentAclID in saveField, because field already exists // -> field already has an aclID // -> no need to create a new one //JahiaConsole.println("File_Field.saveData","fieldID= " + theField.getID()); fField.setFieldID(theField.getID()); ServicesRegistry.getInstance().getJahiaFieldService().saveField( theField, 0, jParams ); } engineMap.put( "engineOutputFile", JahiaEngine.CLOSE_JSP ); return true; } // end saveData /*** * composes engine hash map * * @param jParams a ParamBean object * @param engineMap the engine hashmap * @param theField the field we are working on * @return true if everything went okay, false if not * */ private boolean composeEngineMap( ParamBean jParams, HashMap engineMap, JahiaField theField ) throws JahiaException { boolean editable = false; JahiaContainer theContainer = (JahiaContainer)engineMap.get("theContainer"); if ( theContainer == null ){ // in case of a field , not a field in a container editable = true; } else if ( theContainer.getListID()!=0 ){ JahiaBaseACL acl = JahiaEngineTools.getCtnListFieldACL((HashMap)engineMap.get("ctnListFieldAcls"), theField.getID()); if ( acl != null ){ editable = acl.getPermission(jParams.getUser(),JahiaBaseACL.WRITE_RIGHTS, jParams.getSiteID()); } } else { editable = true; } String output = ""; //JahiaConsole.println("File_Field.composeEngineMap","composeEngineMap for " + jParams.getEngine() ); JahiaFileField fField = composeFileField(jParams,engineMap,theField); // set the object theField.setObject(fField); if ( editable ){ // 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.getPublic()>0) || jf.getUploadUser().equals(jParams.getUser().getName()) ){ filesList.add(jf); } } } engineMap.put( "filesList", filesList.elements() ); // the filemanager engine url Vector datas = new Vector(); datas.add(""); // action datas.add(theField); engineMap.put( "filemanagerUrl", Filemanager_Engine.getInstance().renderLink( jParams, datas ) ); theField.setValue( FormDataManager.getInstance().formDecode(theField.getValue()) ); output = ServicesRegistry.getInstance().getJahiaFetcherService().fetchServlet( jParams, JSP_FILE ); theField.setValue( FormDataManager.getInstance().decode(theField.getValue()) ); } else { output = ServicesRegistry.getInstance().getJahiaFetcherService().fetchServlet( jParams, READONLY_JSP ); } engineMap.put( "fieldForm", output ); return true; } // end composeEngineMap /*** * composes JahiaFileField object * * @param jParams a ParamBean object * @param engineMap the engine hashmap * @param theField the field we are working on * @return the page object * */ private JahiaFileField composeFileField( ParamBean jParams, HashMap engineMap, JahiaField theField ) throws JahiaException { JahiaFileField fField = null; if (theField.getObject() == null) { // get the active folder Folder activeFolder = null; Integer activeFolderID = null; Filemanager fmng = null; // set to root folder fmng = ServicesRegistry.getInstance().getJahiaFilemanagerService().getFilemanagerByOwner(jParams.getJahiaID()); if ( fmng == null ){ // throws exception } else { activeFolder = fmng.getRootFolder(); } activeFolderID = new Integer(activeFolder.getFolderID()); String fileTitle = ""; //JahiaConsole.println("File_Field.composeFileField","activefolderID=" + activeFolderID ); //JahiaConsole.println("File_Field.composeFileField","fileTitle=" + fileTitle ); engineMap.put( "fileID", new Integer(-1) ); engineMap.put( "activeFolderID", activeFolderID ); engineMap.put( "fileTitle", fileTitle ); fField = new JahiaFileField( theField.getID(), fmng.getFilemanagerID(), activeFolder.getFolderID(), "", // upload user "", // realname "", // storage name 0, // modif date 0, // size "", // type "", // title "" ); // descr fField.setFileID(-1); } else { fField = (JahiaFileField)theField.getObject(); //System.out.println(" composeFileField(), getObject not null and fField.getFieldID()=" + fField.getFieldID()); int fileID = fField.getFileID(); JahiaFile fileItem = ServicesRegistry.getInstance().getJahiaFilemanagerService().getFileDB(fileID); // get the active folder Folder activeFolder = null; Integer activeFolderID = null; if ( fileItem != null ) { // the active folder activeFolder = ServicesRegistry.getInstance().getJahiaFilemanagerService().getFolderByFile(fileItem.getFileID()); } else { // set to root folder Filemanager fmng = ServicesRegistry.getInstance().getJahiaFilemanagerService().getFilemanagerByOwner(jParams.getJahiaID()); if ( fmng == null ){ // throws exception } activeFolder = fmng.getRootFolder(); } activeFolderID = new Integer(activeFolder.getFolderID()); engineMap.put( "fileID", new Integer(fField.getFileID()) ); engineMap.put( "activeFolderID", activeFolderID ); engineMap.put( "fileTitle", fField.getFileFieldTitle() ); } return fField; } // end composePage} // end File_Field
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -