diff --git a/config/alfresco/messages/webclient.properties b/config/alfresco/messages/webclient.properties index cecc7a5a27..688d0382b4 100644 --- a/config/alfresco/messages/webclient.properties +++ b/config/alfresco/messages/webclient.properties @@ -284,6 +284,8 @@ today=Today reset=Reset label=Label edit_doc_offline=Edit offline +upload_new_version=Upload new version +done_editing_file=I am done editing this file # Properties username=User Name diff --git a/config/alfresco/web-client-config-actions.xml b/config/alfresco/web-client-config-actions.xml index a5a93d8741..ee65ae081d 100644 --- a/config/alfresco/web-client-config-actions.xml +++ b/config/alfresco/web-client-config-actions.xml @@ -225,6 +225,22 @@ #{actionContext.id} + + + + + Write + + org.alfresco.web.action.evaluator.UpdateDocEvaluator + upload_new_version + /images/icons/update.gif + #{CheckinCheckoutDialog.setupContentAction} + dialog:uploadVersion + + #{actionContext.id} + + + @@ -928,6 +944,7 @@ false inlineAction + diff --git a/config/alfresco/web-client-config-dialogs.xml b/config/alfresco/web-client-config-dialogs.xml index 3f90ac84a5..e68c62281b 100644 --- a/config/alfresco/web-client-config-dialogs.xml +++ b/config/alfresco/web-client-config-dialogs.xml @@ -550,7 +550,10 @@ - + + + diff --git a/source/java/org/alfresco/web/bean/coci/UploadNewVersionDialog.java b/source/java/org/alfresco/web/bean/coci/UploadNewVersionDialog.java new file mode 100644 index 0000000000..0ca6e0e4e1 --- /dev/null +++ b/source/java/org/alfresco/web/bean/coci/UploadNewVersionDialog.java @@ -0,0 +1,98 @@ +package org.alfresco.web.bean.coci; + +import java.io.Serializable; +import java.util.Map; +import java.util.StringTokenizer; + +import javax.faces.context.FacesContext; + +import org.alfresco.model.ContentModel; +import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.version.Version; +import org.alfresco.service.namespace.QName; +import org.alfresco.web.app.Application; + +public class UploadNewVersionDialog extends CheckinCheckoutDialog +{ + + private final static String MSG_DONE = "done"; + private final static String MSG_UPLOAD_NEW_VERSION = "upload_new_version"; + private final static String MSG_OF = "of"; + + private boolean finishedEditing; + + public void setFinishedEditing(boolean finished) + { + this.finishedEditing = finished; + } + + public boolean isFinishedEditing() + { + return finishedEditing; + } + + /** + * @return Returns label for new version with major changes + */ + public String getMajorNewVersionLabel() + { + String label = getCurrentVersionLabel(); + StringTokenizer st = new StringTokenizer(label, "."); + return (Integer.valueOf(st.nextToken()) + 1) + ".0"; + } + + /** + * @return Returns label for new version with minor changes + */ + public String getMinorNewVersionLabel() + { + String label = getCurrentVersionLabel(); + StringTokenizer st = new StringTokenizer(label, "."); + return st.nextToken() + "." + (Integer.valueOf(st.nextToken()) + 1); + } + + /** + * @return version label for source node for working copy. + */ + private String getCurrentVersionLabel() + { + NodeRef workingCopyNodeRef = property.getDocument().getNodeRef(); + if (this.nodeService.hasAspect(workingCopyNodeRef, ContentModel.ASPECT_COPIEDFROM) == true) + { + Map workingCopyProperties = nodeService.getProperties(workingCopyNodeRef); + NodeRef nodeRef = (NodeRef) workingCopyProperties.get(ContentModel.PROP_COPY_REFERENCE); + + Version curVersion = property.getVersionQueryService().getCurrentVersion(nodeRef); + return curVersion.getVersionLabel(); + } + + return null; + } + + @Override + public boolean getFinishButtonDisabled() + { + return property.getFile() == null; + } + + @Override + public String getFinishButtonLabel() + { + return Application.getMessage(FacesContext.getCurrentInstance(), MSG_DONE); + } + + @Override + public String getContainerTitle() + { + return Application.getMessage(FacesContext.getCurrentInstance(), MSG_UPLOAD_NEW_VERSION) + " " + Application.getMessage(FacesContext.getCurrentInstance(), MSG_OF) + " '" + + property.getDocument().getName() + "'"; + } + + @Override + protected String finishImpl(FacesContext context, String outcome) throws Exception + { + property.setKeepCheckedOut(!finishedEditing); + return checkinFileOK(context, outcome); + } + +} diff --git a/source/web/jsp/content/upload-new-version.jsp b/source/web/jsp/content/upload-new-version.jsp new file mode 100644 index 0000000000..d6634ac84f --- /dev/null +++ b/source/web/jsp/content/upload-new-version.jsp @@ -0,0 +1,155 @@ +<%-- + * Copyright (C) 2005-2007 Alfresco Software Limited. + + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + * As a special exception to the terms and conditions of version 2.0 of + * the GPL, you may redistribute this Program in connection with Free/Libre + * and Open Source Software ("FLOSS") applications as described in Alfresco's + * FLOSS exception. You should have recieved a copy of the text describing + * the FLOSS exception, and it is also available here: + * http://www.alfresco.com/legal/licensing" +--%> +<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%> +<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> +<%@ taglib uri="/WEB-INF/alfresco.tld" prefix="a"%> +<%@ taglib uri="/WEB-INF/repo.tld" prefix="r"%> + +<%@ page import="org.alfresco.web.ui.common.PanelGenerator"%> +<%@ page import="org.alfresco.web.bean.coci.UploadNewVersionDialog"%> +<%@ page import="org.alfresco.web.app.servlet.FacesHelper"%> +<%@ page import="javax.faces.context.FacesContext"%> +<%@ page buffer="32kb" contentType="text/html;charset=UTF-8"%> + + +<% + boolean fileUploaded = false; + + UploadNewVersionDialog dialog = (UploadNewVersionDialog) FacesHelper.getManagedBean(FacesContext.getCurrentInstance(), "UploadNewVersionDialog"); + if (dialog != null && dialog.getFileName() != null) + { + fileUploaded = true; + } +%> + + + +<% +if (fileUploaded) +{ + PanelGenerator.generatePanelStart(out, request.getContextPath(), "yellowInner", "#ffffcc"); + out.write("  "); + out.write(dialog.getFileUploadSuccessMsg()); + PanelGenerator.generatePanelEnd(out, request.getContextPath(), "yellowInner"); + out.write("
"); +} +%> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ + + + + + +
+
+ +
+ +
+
+ + +
+ + + +
+