Author: raintang Date: 2009-09-14 05:10:44 +0200 (Mon, 14 Sep 2009) New Revision: 38576
Modified: CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository.properties CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository_nl.properties CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository_zh.properties CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/AssetElementUtil.java CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/forms/AssetUploadAction.java CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/assetupload.jsp CMSContainer/trunk/CMSContainer/cmsc/utilities/src/java/com/finalist/util/http/BulkUploadUtil.java Log: CMSC-1518 Improved messages for asset upload problems Modified: CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository.properties =================================================================== --- CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository.properties 2009-09-12 23:08:59 UTC (rev 38575) +++ CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository.properties 2009-09-14 03:10:44 UTC (rev 38576) @@ -431,7 +431,11 @@ assets.upload.submit=Upload assets.upload.results=Uploaded assets -assets.upload.error=Upload Failed. Possible reasons: <ol><li>the asset(s) are too big (max 16MB), even though it is zipped in a ZIP-file that is smaller then the limit.</li><li>the ZIP-file does not contain files.</li><li>the ZIP-file is secured with a password.</li><li>the ZIP-file is damaged.</li><li>some files already exist in the system.</li></ol> +assets.upload.error.big=The asset you are trying to upload is too large. The maximum allowed file size is {0} MB +assets.upload.error.exsit=The asset you are trying to upload already exists in the repository. You can find this file in the +assets.upload.error.exsit.channel= {0} +assets.upload.error.exsit.filename=The existing file is called: {0} +assets.upload.error.multiple=Upload Failed. Possible reasons: <ol><li>the asset(s) are too big (max 16MB), even though it is zipped in a ZIP-file that is smaller then the limit.</li><li>the ZIP-file does not contain files.</li><li>the ZIP-file is secured with a password.</li><li>the ZIP-file is damaged.</li><li>some files already exist in the system.</li></ol> asset.upload.explanation=Upload local files to this channel. Also ZIP files are supported to upload multiple file uploads. asset.title=Asset @@ -505,8 +509,8 @@ asset.search.attachment = attachment asset.search.image = image -asset.upload.failed.results=Failed Attachments and Images: -asset.upload.uploaded.results=Uploaded Attachments and Images: +asset.upload.failed.results=Failed Attachments or Images: +asset.upload.uploaded.results=Uploaded Attachments or Images: asset.upload.size.zero=Empty file! simple.editor.title = Simple Editor Modified: CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository_nl.properties =================================================================== --- CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository_nl.properties 2009-09-12 23:08:59 UTC (rev 38575) +++ CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository_nl.properties 2009-09-14 03:10:44 UTC (rev 38576) @@ -428,7 +428,11 @@ assets.upload.submit=Upload assets.upload.results=Ge-uploade assets -assets.upload.error=Niet alles geupload. Mogelijke oorzaken:<ol><li>de bijlage(s) kunnen te groot zijn (max 16MB), ook al is deze ingepakt in een ZIP-bestand dat kleiner is.</li><li>het ZIP-bestand bevat geen bijlagen</li><li>het ZIP-bestand is beveiligd met een wachtwoord</li><li>het ZIP-bestand is beschadigd</li><li>bestanden staan al in het CMS.</li></ol> +assets.upload.error.big=The asset you are trying to upload is too large. The maximum allowed file size is {0} MB +assets.upload.error.exsit=The asset you are trying to upload already exists in the repository. You can find this file in the +assets.upload.error.exsit.channel= <{0}> +assets.upload.error.exsit.filename=The existing file is called: {0} +assets.upload.error.multiple=Niet alles geupload. Mogelijke oorzaken:<ol><li>de bijlage(s) kunnen te groot zijn (max 16MB), ook al is deze ingepakt in een ZIP-bestand dat kleiner is.</li><li>het ZIP-bestand bevat geen bijlagen</li><li>het ZIP-bestand is beveiligd met een wachtwoord</li><li>het ZIP-bestand is beschadigd</li><li>bestanden staan al in het CMS.</li></ol> asset.upload.explanation=Selecteer een lokaal asset bestand, of een ZIP-bestand dat meerdere assets kan bevatten. asset.title=Asset Modified: CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository_zh.properties =================================================================== --- CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository_zh.properties 2009-09-12 23:08:59 UTC (rev 38575) +++ CMSContainer/trunk/CMSContainer/cmsc/contentrepository/resources/cmsc-repository_zh.properties 2009-09-14 03:10:44 UTC (rev 38576) @@ -79,7 +79,7 @@ content.create=建立 content.existing=引用存在的内容 content.reorder=定置内容顺序 -content.content=频道内的内容 +content.content=<< {0} >>频道内的内容 content.type=类型 <b> {0} </b>: content.showchannels=显示这些item被那里引用. content.preview.title=打开浏览这些element的预览. @@ -429,14 +429,18 @@ assets.upload.submit=上传 assets.upload.results=上传资源 -assets.upload.error=上传失败.可能的失败原因:<ol><li>文件过大(默认 16MB), 即使是ZIP包中的文件也应小于该限制.</li><li>该zip文件被密码保护.</li><li>该zip文件没有包含资源文件.</li><li>该zip文件可能损坏.</li><li>某些上传文件已在系统中存在.</li></ol> +assets.upload.error.big=您要上传的文件太大. 最大允许上传的文件大小为 {0} MB +assets.upload.error.exsit=您要上传的文件文件已经在仓库中存在.你能在以下频道找到 +assets.upload.error.exsit.channel= <{0}> +assets.upload.error.exsit.filename=已存在文件的文件名: {0} +assets.upload.error.multiple=上传失败.可能的失败原因: <ol><li>文件过大(默认 16MB), 即使是ZIP包中的文件也应小于该限制.</li><li>该zip文件被密码保护.</li><li>该zip文件没有包含资源文件.</li><li>该zip文件可能损坏.</li><li>某些上传文件已在系统中存在.</li></ol> asset.upload.explanation=选择一个本地的资源文件或者包含若干资源文件的zip文件 asset.title=资源 asset.channel=频道 <b> {0} </b>. asset.new=新建链接 asset.create= 创建 -asset.asset=频道内的资源 +asset.asset=<< {0} >>频道内的资源 asset.type=类型 <b> {0} </b>: asset.preview.title=打开浏览这些element的预览. asset.info=信息 @@ -506,8 +510,8 @@ asset.search.attachment = 附件 asset.search.image = 图片 -asset.upload.failed.results=上传失败的附件和图片: -asset.upload.uploaded.results=上传成功的附件和图片: +asset.upload.failed.results=上传失败的附件或图片: +asset.upload.uploaded.results=上传成功的附件或图片: asset.upload.size.zero=空文件! simple.editor.title = 简单编辑器 Modified: CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/AssetElementUtil.java =================================================================== --- CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/AssetElementUtil.java 2009-09-12 23:08:59 UTC (rev 38575) +++ CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/AssetElementUtil.java 2009-09-14 03:10:44 UTC (rev 38576) @@ -337,6 +337,16 @@ * @return */ public static boolean isNewFile(FormFile file, NodeManager manager) { + NodeList assets = getAssetNode(file, manager); + return (assets.size() == 0); + } + + /** + * @param file + * @param manager + * @return + */ + private static NodeList getAssetNode(FormFile file, NodeManager manager) { ChecksumFactory checksumFactory = new ChecksumFactory(); ByteToCharTransformer transformer = (ByteToCharTransformer) checksumFactory.createTransformer(checksumFactory .createParameters()); @@ -352,9 +362,22 @@ NodeQuery query = manager.createQuery(); SearchUtil.addEqualConstraint(query, manager.getField("checksum"), checkSum); NodeList assets = query.getList(); - return (assets.size() == 0); + return assets; } + public static String getPathForAsset(FormFile file, NodeManager manager) { + NodeList assets = getAssetNode(file, manager); + Node assetNode = assets.get(0); + NodeList channelNodes = assetNode.getRelatedNodes("contentchannel", "creationrel", "destination"); + Node channelNode = channelNodes.get(0); + return RepositoryUtil.getPathToRootString(channelNode); + } + + public static String getTitleFromExsitAsset(FormFile file, NodeManager manager){ + NodeList assets = getAssetNode(file, manager); + Node assetNode = assets.get(0); + return assetNode.getStringValue("title"); + } /** * * @param nodes Modified: CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/forms/AssetUploadAction.java =================================================================== --- CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/forms/AssetUploadAction.java 2009-09-12 23:08:59 UTC (rev 38575) +++ CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/java/com/finalist/cmsc/repository/forms/AssetUploadAction.java 2009-09-14 03:10:44 UTC (rev 38576) @@ -15,6 +15,7 @@ import org.mmbase.bridge.NodeManager; import com.finalist.cmsc.repository.AssetElementUtil; +import com.finalist.cmsc.repository.RepositoryUtil; import com.finalist.cmsc.struts.MMBaseAction; import com.finalist.util.http.BulkUploadUtil; @@ -28,14 +29,20 @@ String parentchannel = assetUploadForm.getParentchannel(); FormFile file = assetUploadForm.getFile(); + String big = ""; + String exsit = ""; + String exsitChannel = ""; + String exsitChannelId = ""; + String exsitAssetTitle = ""; + String isZip = ""; List<String> notUploadedFiles = new ArrayList<String>(); List<String> uploadedFiles = new ArrayList<String>(); - if (isValidFile(file)) { + if (notEmptyFile(file)) { String assetType = AssetElementUtil.judgeAssetType(file.getFileName()); NodeManager manager = cloud.getNodeManager(assetType); - - if (AssetElementUtil.isNewFile(file, manager)) { + if (BulkUploadUtil.isZipFile(file.getContentType(), file.getFileName())) { + isZip = "isZip"; List<Integer> nodes = BulkUploadUtil.store(cloud, manager, parentchannel, file, notUploadedFiles, uploadedFiles); // to archive the upload asset @@ -43,7 +50,25 @@ AssetElementUtil.addRelationsForNodes(nodes, cloud); } } else { - notUploadedFiles.add(file.getFileName()); + if (BulkUploadUtil.maxFileSizeBiggerThan(file.getFileSize())) { + if (AssetElementUtil.isNewFile(file, manager)) { + List<Integer> nodes = BulkUploadUtil.store(cloud, manager, parentchannel, file, notUploadedFiles, + uploadedFiles); + // to archive the upload asset + if (nodes != null) { + AssetElementUtil.addRelationsForNodes(nodes, cloud); + } + } else { + exsit = "exsit"; + exsitChannel = AssetElementUtil.getPathForAsset(file, manager); + exsitChannelId = RepositoryUtil.getChannelFromPath(cloud, exsitChannel).getStringValue("number"); + exsitAssetTitle = AssetElementUtil.getTitleFromExsitAsset(file, manager); + notUploadedFiles.add(file.getFileName()); + } + } else { + big = "big"; + notUploadedFiles.add(file.getFileName()); + } } } addToSession(request, "notUploadedFiles", notUploadedFiles); @@ -51,15 +76,15 @@ addToSession(request, "uploadingDone", "yes"); String url = mapping.findForward(SUCCESS).getPath() + "?type=asset&direction=down" + "&parentchannel=" - + parentchannel + "&failed=" + notUploadedFiles.size() + "&uploaded=" + uploadedFiles.size(); + + parentchannel + "&failed=" + notUploadedFiles.size() + "&uploaded=" + uploadedFiles.size() + "&isZip=" + + isZip + "&big=" + big + "&exsit=" + exsit + "&exsitChannel=" + exsitChannel + "&exsitChannelId=" + + exsitChannelId + "&exsitAssetTitle=" + exsitAssetTitle + "&maxAllowFileSize=" + BulkUploadUtil.getMaxAllowFileSize()/(1024*1024); return new ActionForward(url, true); } - private boolean isValidFile(FormFile file) { - return (BulkUploadUtil.maxFileSizeBiggerThan(file.getFileSize()) || BulkUploadUtil.isZipFile(file - .getContentType(), file.getFileName())) - && file.getFileSize() != 0 && StringUtils.isNotEmpty(file.getFileName()); + private boolean notEmptyFile(FormFile file) { + return (file.getFileSize() != 0 && StringUtils.isNotEmpty(file.getFileName())); } private void addToSession(HttpServletRequest request, String name, Object value) { Modified: CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/assetupload.jsp =================================================================== --- CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/assetupload.jsp 2009-09-12 23:08:59 UTC (rev 38575) +++ CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/assetupload.jsp 2009-09-14 03:10:44 UTC (rev 38576) @@ -28,12 +28,30 @@ <div> <c:if test="${uploadingDone eq 'yes'}"> <c:if test="${param.failed ne '0'}" > - <span style="color:#cc0000"><fmt:message key="assets.upload.error"/></span> + <c:if test="${param.isZip eq 'isZip'}"> + <span style="color:#cc0000"><fmt:message key="assets.upload.error.multiple"/></span> <fmt:message key="asset.upload.failed.results"/> ${param.failed} <br/> <c:forEach var="fileName" items="${notUploadedFiles}" varStatus="fileAmount"> ${fileName} </c:forEach> + </c:if> + <c:if test="${param.isZip ne 'isZip'}"> + <fmt:message key="asset.upload.failed.results"/> + <c:forEach var="fileName" items="${notUploadedFiles}" varStatus="fileAmount"> + ${fileName}<br/> + </c:forEach> + <c:if test="${param.big eq 'big'}"> + <span style="color:#cc0000"><fmt:message key="assets.upload.error.big"><fmt:param>${param.maxAllowFileSize}</fmt:param></fmt:message></span> + </c:if> + <c:if test="${param.exsit eq 'exsit'}"> + <span style="color:#cc0000"><fmt:message key="assets.upload.error.exsit"/></span><br/> + <a href="../repository/Asset.do?type=asset&parentchannel=${param.exsitChannelId}&direction=down"> + ${param.exsitChannel} + </a> + <fmt:message key="assets.upload.error.exsit.filename"><fmt:param>${param.exsitAssetTitle}</fmt:param></fmt:message> + </c:if> + </c:if> <c:remove var="notUploadedFiles" scope="session"/> <br/><br/> </c:if> Modified: CMSContainer/trunk/CMSContainer/cmsc/utilities/src/java/com/finalist/util/http/BulkUploadUtil.java =================================================================== --- CMSContainer/trunk/CMSContainer/cmsc/utilities/src/java/com/finalist/util/http/BulkUploadUtil.java 2009-09-12 23:08:59 UTC (rev 38575) +++ CMSContainer/trunk/CMSContainer/cmsc/utilities/src/java/com/finalist/util/http/BulkUploadUtil.java 2009-09-14 03:10:44 UTC (rev 38576) @@ -364,6 +364,10 @@ } public static boolean maxFileSizeBiggerThan(long fileSize) { + return (fileSize <= getMaxAllowFileSize()); + } + + public static int getMaxAllowFileSize() { int maxFileSize = MAXSIZE; if (PropertiesUtil.getProperty(UPLOADED_FILE_MAX_SIZE) != null) { try { @@ -377,7 +381,7 @@ log.warn("System property '" + UPLOADED_FILE_MAX_SIZE + "' is not set. Please add it (units = MB)."); } } - return (fileSize <= maxFileSize); + return maxFileSize; } public static void main(String[] args) { _______________________________________________ Cvs mailing list Cvs@lists.mmbase.org http://lists.mmbase.org/mailman/listinfo/cvs