1 31 32 package org.opencms.workplace.commons; 33 34 import org.opencms.db.CmsDbSqlException; 35 import org.opencms.file.CmsFile; 36 import org.opencms.file.CmsResource; 37 import org.opencms.file.CmsResourceFilter; 38 import org.opencms.jsp.CmsJspActionElement; 39 import org.opencms.main.CmsException; 40 import org.opencms.main.OpenCms; 41 import org.opencms.security.CmsPermissionSet; 42 import org.opencms.workplace.CmsDialog; 43 import org.opencms.workplace.CmsWorkplaceSettings; 44 45 import java.util.Iterator ; 46 47 import javax.servlet.http.HttpServletRequest ; 48 import javax.servlet.http.HttpServletResponse ; 49 import javax.servlet.jsp.JspException ; 50 import javax.servlet.jsp.PageContext ; 51 52 import org.apache.commons.fileupload.FileItem; 53 54 69 public class CmsReplace extends CmsDialog { 70 71 72 public static final String DIALOG_TYPE = "replace"; 73 74 75 public static final String PARAM_UPLOADFILE = "uploadfile"; 76 77 82 public CmsReplace(CmsJspActionElement jsp) { 83 84 super(jsp); 85 } 86 87 94 public CmsReplace(PageContext context, HttpServletRequest req, HttpServletResponse res) { 95 96 this(new CmsJspActionElement(context, req, res)); 97 } 98 99 104 public void actionReplace() throws JspException { 105 106 try { 107 Iterator i = getMultiPartFileItems().iterator(); 109 FileItem fi = null; 110 while (i.hasNext()) { 111 fi = (FileItem)i.next(); 112 if (fi.getName() != null) { 113 break; 115 } 116 } 117 118 if (fi != null) { 119 long size = fi.getSize(); 121 long maxFileSizeBytes = OpenCms.getWorkplaceManager().getFileBytesMaxUploadSize(getCms()); 122 if (maxFileSizeBytes > 0 && size > maxFileSizeBytes) { 124 throw new CmsException(Messages.get().container( 126 Messages.ERR_FILE_SIZE_TOO_LARGE_1, 127 new Long ((maxFileSizeBytes / 1024)))); 128 } 129 byte[] content = fi.get(); 130 fi.delete(); 131 132 CmsResource res = getCms().readResource(getParamResource(), CmsResourceFilter.IGNORE_EXPIRATION); 134 CmsFile file = CmsFile.upgrade(res, getCms()); 135 byte[] contents = file.getContents(); 136 int resTypeId = res.getTypeId(); 137 checkLock(getParamResource()); 139 try { 140 getCms().replaceResource(getParamResource(), resTypeId, content, null); 141 } catch (CmsDbSqlException sqlExc) { 142 file.setContents(contents); 144 getCms().writeFile(file); 145 throw sqlExc; 146 } 147 actionCloseDialog(); 149 } else { 150 throw new CmsException(Messages.get().container(Messages.ERR_UPLOAD_FILE_NOT_FOUND_0)); 151 } 152 } catch (Throwable e) { 153 includeErrorpage(this, e); 155 } 156 } 157 158 161 protected void initWorkplaceRequestValues(CmsWorkplaceSettings settings, HttpServletRequest request) { 162 163 fillParamValues(request); 165 166 if (! checkResourcePermissions(CmsPermissionSet.ACCESS_WRITE, false)) { 168 setParamAction(DIALOG_CANCEL); 170 } 171 172 setParamDialogtype(DIALOG_TYPE); 174 if (DIALOG_OK.equals(getParamAction())) { 176 setAction(ACTION_OK); 178 } else if (DIALOG_CANCEL.equals(getParamAction())) { 179 setAction(ACTION_CANCEL); 181 } else { 182 setAction(ACTION_DEFAULT); 184 setParamTitle(key(Messages.GUI_REPLACE_FILE_1, 186 new Object [] {CmsResource.getName(getParamResource())})); 187 } 188 } 189 190 } 191 | Popular Tags |