Skip to content

Commit 1231598

Browse files
author
Emmanuel Hugonnet
committed
feature #4609 : Changing state from the last version is now working.
No option is currently supported for changing the state from versioned to simple and back.
1 parent 25061e4 commit 1231598

File tree

5 files changed

+110
-88
lines changed

5 files changed

+110
-88
lines changed

lib-core/src/main/java/org/silverpeas/attachment/repository/DocumentRepository.java

Lines changed: 39 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,16 @@
2323
*/
2424
package org.silverpeas.attachment.repository;
2525

26-
import com.silverpeas.jcrutil.BasicDaoFactory;
27-
import com.silverpeas.util.FileUtil;
28-
import com.silverpeas.util.StringUtil;
29-
import com.silverpeas.util.i18n.I18NHelper;
30-
import com.stratelia.silverpeas.silvertrace.SilverTrace;
31-
import com.stratelia.webactiv.util.DateUtil;
32-
import com.stratelia.webactiv.util.FileRepositoryManager;
33-
import com.stratelia.webactiv.util.WAPrimaryKey;
34-
import org.apache.commons.io.FileUtils;
35-
import org.silverpeas.attachment.model.DocumentType;
36-
import org.silverpeas.attachment.model.HistorisedDocument;
37-
import org.silverpeas.attachment.model.SimpleAttachment;
38-
import org.silverpeas.attachment.model.SimpleDocument;
39-
import org.silverpeas.attachment.model.SimpleDocumentPK;
40-
import org.silverpeas.util.jcr.NodeIterable;
41-
import org.silverpeas.util.jcr.PropertyIterable;
26+
import java.io.BufferedInputStream;
27+
import java.io.File;
28+
import java.io.IOException;
29+
import java.io.InputStream;
30+
import java.util.Calendar;
31+
import java.util.Collections;
32+
import java.util.Date;
33+
import java.util.HashSet;
34+
import java.util.List;
35+
import java.util.Set;
4236

4337
import javax.inject.Named;
4438
import javax.jcr.ItemNotFoundException;
@@ -60,16 +54,26 @@
6054
import javax.jcr.version.VersionHistory;
6155
import javax.jcr.version.VersionIterator;
6256
import javax.jcr.version.VersionManager;
63-
import java.io.BufferedInputStream;
64-
import java.io.File;
65-
import java.io.IOException;
66-
import java.io.InputStream;
67-
import java.util.Calendar;
68-
import java.util.Collections;
69-
import java.util.Date;
70-
import java.util.HashSet;
71-
import java.util.List;
72-
import java.util.Set;
57+
58+
import org.silverpeas.attachment.model.DocumentType;
59+
import org.silverpeas.attachment.model.HistorisedDocument;
60+
import org.silverpeas.attachment.model.SimpleAttachment;
61+
import org.silverpeas.attachment.model.SimpleDocument;
62+
import org.silverpeas.attachment.model.SimpleDocumentPK;
63+
import org.silverpeas.util.jcr.NodeIterable;
64+
import org.silverpeas.util.jcr.PropertyIterable;
65+
66+
import com.silverpeas.jcrutil.BasicDaoFactory;
67+
import com.silverpeas.util.FileUtil;
68+
import com.silverpeas.util.StringUtil;
69+
import com.silverpeas.util.i18n.I18NHelper;
70+
71+
import com.stratelia.silverpeas.silvertrace.SilverTrace;
72+
import com.stratelia.webactiv.util.DateUtil;
73+
import com.stratelia.webactiv.util.FileRepositoryManager;
74+
import com.stratelia.webactiv.util.WAPrimaryKey;
75+
76+
import org.apache.commons.io.FileUtils;
7377

7478
import static com.silverpeas.jcrutil.JcrConstants.*;
7579
import static javax.jcr.nodetype.NodeType.MIX_SIMPLE_VERSIONABLE;
@@ -337,6 +341,15 @@ public void changeVersionState(Session session, SimpleDocumentPK documentPk) thr
337341
removeHistory(documentNode);
338342
documentNode.removeMixin(MIX_SIMPLE_VERSIONABLE);
339343
documentNode.setProperty(SLV_PROPERTY_VERSIONED, false);
344+
SimpleDocument target = converter.fillDocument(documentNode, I18NHelper.defaultLanguage);
345+
File currentDocumentDir = new File(target.getDirectoryPath(I18NHelper.defaultLanguage))
346+
.getParentFile();
347+
File[] contents = currentDocumentDir.getParentFile().listFiles();
348+
for (File versionDirectory : contents) {
349+
if (!versionDirectory.equals(currentDocumentDir)) {
350+
FileUtils.deleteDirectory(versionDirectory);
351+
}
352+
}
340353
} else {
341354
SimpleDocument origin = converter.fillDocument(documentNode, I18NHelper.defaultLanguage);
342355
documentNode.setProperty(SLV_PROPERTY_VERSIONED, true);

war-core/src/main/webapp/attachment/jsp/displayAttachedFiles.jsp

Lines changed: 55 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,6 @@
183183
</c:otherwise>
184184
</c:choose>
185185
<c:set var="componentId" value="${param.ComponentId}" />
186-
187186
<%
188187
List<SimpleDocument> attachments = AttachmentServiceFactory.getAttachmentService().
189188
listDocumentsByForeignKeyAndType(new ForeignPK(request.getParameter("Id"), request.getParameter("ComponentId")),
@@ -521,7 +520,14 @@
521520
pageMustBeReloadingAfterSorting = true;
522521
}
523522
524-
function checkin(id, oldId, webdav, forceRelease) {
523+
function checkin(id, oldId, webdav, forceRelease, isVersioned) {
524+
if(isVersioned === true) {
525+
$("#simple_fields_attachment-checkin").hide();
526+
$("#versioned_fields_attachment-checkin").show();
527+
}else {
528+
$("#versioned_fields_attachment-checkin").hide();
529+
$("#simple_fields_attachment-checkin").show();
530+
}
525531
$("#dialog-attachment-checkin").data("attachmentId", id).data("oldId", oldId).data("webdav", webdav).data("forceRelease", forceRelease).dialog("open");
526532
pageMustBeReloadingAfterSorting = true;
527533
}
@@ -915,7 +921,7 @@
915921
}
916922
});
917923
},
918-
close: function() {
924+
'<fmt:message key="GML.cancel"/>': function() {
919925
$(this).dialog("close");
920926
}
921927
}
@@ -996,12 +1002,22 @@
9961002
$('#fileName').text(attachment.fileName);
9971003
$('#fileTitle').val(attachment.title);
9981004
$('#fileDescription').val(attachment.description);
1005+
if(attachment.versioned === 'true') {
1006+
$('#fileName_label').text('<fmt:message key="attachment.version.actual" />');
1007+
$('#file_upload_label').text('<fmt:message key="attachment.version.new" />');
1008+
$('#versioned_fields_attachment-update').show();
1009+
} else {
1010+
$('#versioned_fields_attachment-update').hide();
1011+
$('#fileName_label').text('<fmt:message key="GML.file"/>')
1012+
$('#file_upload_label').text('<fmt:message key="fichierJoint" />');
1013+
}
9991014
}
10001015
10011016
function clearAttachment() {
10021017
$('#fileName').html('');
10031018
$('#fileTitle').val('');
10041019
$('#fileDescription').val('');
1020+
$('#versioned_fields_attachment-update').hide();
10051021
}
10061022
10071023
function clearCheckin() {
@@ -1053,41 +1069,30 @@
10531069
<div id="dialog-attachment-update" style="display:none">
10541070
<form name="update-attachment-form" id="update-attachment-form" method="post" enctype="multipart/form-data;charset=utf-8" accept-charset="UTF-8" target="iframe-post-form">
10551071
<input type="hidden" name="IdAttachment" id="attachmentId"/>
1056-
<c:choose>
1057-
<c:when test="${not isVersionActive}">
1058-
<c:if test="${silfn:isI18n() && not view:booleanValue(param.notI18n) }">
1059-
<label for="langCreate" class="label-ui-dialog"><fmt:message key="GML.language"/></label>
1060-
<span class="champ-ui-dialog"><view:langSelect elementName="fileLang" elementId="fileLang" langCode="${contentLanguage}" includeLabel="false" /></span>
1061-
</c:if>
1062-
<label for="fileName" class="label-ui-dialog"><fmt:message key="GML.file" /></label>
1063-
<span id="fileName" class="champ-ui-dialog"></span>
1064-
<label for="file_upload" class="label-ui-dialog"><fmt:message key="fichierJoint" /></label>
1065-
<span class="champ-ui-dialog"><input type="file" name="file_upload" size="50" id="file_upload" /></span>
1066-
1067-
<label for="fileTitle" class="label-ui-dialog"><fmt:message key="Title"/></label>
1068-
<span class="champ-ui-dialog"><input type="text" name="fileTitle" size="60" id="fileTitle" /></span>
1069-
<label for="fileDescription" class="label-ui-dialog"><fmt:message key="GML.description" /></label>
1070-
<span class="champ-ui-dialog"><textarea name="fileDescription" cols="60" rows="3" id="fileDescription"></textarea></span>
1071-
</c:when>
1072-
<c:otherwise>
1073-
<label for="fileName" class="label-ui-dialog"><fmt:message key="attachment.version.actual" /></label>
1074-
<span id="fileName" class="champ-ui-dialog"></span>
1075-
1076-
<label for="file_upload" class="label-ui-dialog"><fmt:message key="attachment.version.new" /></label>
1077-
<span class="champ-ui-dialog"><input type="file" name="file_upload" size="50" id="file_upload" /></span>
1078-
1079-
<label for="fileTitle" class="label-ui-dialog"><fmt:message key="Title"/></label>
1080-
<span class="champ-ui-dialog"><input type="text" name="fileTitle" size="60" id="fileTitle" /></span>
1081-
<label for="fileDescription" class="label-ui-dialog"><fmt:message key="GML.description" /></label>
1082-
<span class="champ-ui-dialog"><textarea name="fileDescription" cols="60" rows="3" id="fileDescription"></textarea></span>
1083-
1084-
<label for="versionType" class="label-ui-dialog"><fmt:message key="attachment.version.label"/></label>
1085-
<span class="champ-ui-dialog"><input value="0" type="radio" name="versionType" id="versionType" checked="checked"/><fmt:message key="attachment.version_public.label"/>
1086-
<input value="1" type="radio" name="versionType" id="versionType"/><fmt:message key="attachment.version_wip.label"/></span>
1087-
<label for="commentMessage" class="label-ui-dialog"><fmt:message key="attachment.dialog.comment"/></label>
1088-
<span class="champ-ui-dialog"><textarea name="commentMessage" cols="60" rows="3" id="commentMessage"></textarea></span>
1089-
</c:otherwise>
1090-
</c:choose>
1072+
<c:if test="${silfn:isI18n() && not view:booleanValue(param.notI18n) }">
1073+
<label for="langCreate" class="label-ui-dialog"><fmt:message key="GML.language"/></label>
1074+
<span class="champ-ui-dialog"><view:langSelect elementName="fileLang" elementId="fileLang" langCode="${contentLanguage}" includeLabel="false" /></span>
1075+
</c:if>
1076+
<label id="fileName_label" for="fileName" class="label-ui-dialog"><fmt:message key="GML.file" /></label>
1077+
<span id="fileName" class="champ-ui-dialog"></span>
1078+
1079+
<label id="file_upload_label" for="file_upload" class="label-ui-dialog"><fmt:message key="fichierJoint" /></label>
1080+
<span class="champ-ui-dialog"><input type="file" name="file_upload" size="50" id="file_upload" /></span>
1081+
1082+
<label for="fileTitle" class="label-ui-dialog"><fmt:message key="Title"/></label>
1083+
<span class="champ-ui-dialog"><input type="text" name="fileTitle" size="60" id="fileTitle" /></span>
1084+
1085+
<label for="fileDescription" class="label-ui-dialog"><fmt:message key="GML.description" /></label>
1086+
<span class="champ-ui-dialog"><textarea name="fileDescription" cols="60" rows="3" id="fileDescription"></textarea></span>
1087+
1088+
<div id="versioned_fields_attachment-update" style="display:none">
1089+
<label for="versionType" class="label-ui-dialog"><fmt:message key="attachment.version.label"/></label>
1090+
<span class="champ-ui-dialog"><input value="0" type="radio" name="versionType" id="versionType" checked="checked"/><fmt:message key="attachment.version_public.label"/>
1091+
<input value="1" type="radio" name="versionType" id="versionType"/><fmt:message key="attachment.version_wip.label"/></span>
1092+
1093+
<label for="commentMessage" class="label-ui-dialog"><fmt:message key="attachment.dialog.comment"/></label>
1094+
<span class="champ-ui-dialog"><textarea name="commentMessage" cols="60" rows="3" id="commentMessage"></textarea></span>
1095+
</div>
10911096
<input type="submit" value="Submit" style="display:none" />
10921097
</form>
10931098
</div>
@@ -1096,12 +1101,10 @@
10961101
<form name="add-attachment-form" id="add-attachment-form" method="post" enctype="multipart/form-data;charset=utf-8" accept-charset="UTF-8" target="iframe-post-form">
10971102
<input type="hidden" name="foreignId" id="foreignId" value="<c:out value="${sessionScope.Silverpeas_Attachment_ObjectId}" />" />
10981103
<input type="hidden" name="indexIt" id="indexIt" value="<c:out value="${indexIt}" />" />
1099-
11001104
<c:if test="${silfn:isI18n() && not isVersionActive && not view:booleanValue(param.notI18n)}">
11011105
<label for="langCreate" class="label-ui-dialog"><fmt:message key="GML.language"/></label>
11021106
<span class="champ-ui-dialog"><view:langSelect elementName="fileLang" elementId="langCreate" langCode="${contentLanguage}" includeLabel="false"/></span>
11031107
</c:if>
1104-
11051108
<label for="file_create" class="label-ui-dialog"><fmt:message key="fichierJoint"/></label>
11061109
<span class="champ-ui-dialog"><input type="file" name="file_upload" size="50" id="file_create" /></span>
11071110
<label for="fileTitleCreate" class="label-ui-dialog"><fmt:message key="Title"/></label>
@@ -1121,36 +1124,33 @@
11211124

11221125
<div id="dialog-attachment-delete" style="display:none">
11231126
<span id="attachment-delete-warning-message"><fmt:message key="attachment.suppressionConfirmation" /></span>
1124-
<c:if test="${silfn:isI18n() && not isVersionActive && not view:booleanValue(param.notI18n)}">
1127+
<c:if test="${silfn:isI18n() && not view:booleanValue(param.notI18n)}">
11251128
<div id="attachment-delete-select-lang" style="display:none">
11261129
<div id="languages">
11271130
<c:forEach items="<%=com.silverpeas.util.i18n.I18NHelper.getAllSupportedLanguages()%>" var="supportedLanguage">
11281131
<span id='delete-language-<c:out value="${supportedLanguage}"/>' style="display:none"><input type="checkbox" id='<c:out value="${supportedLanguage}"/>ToDelete' name="languagesToDelete" value='<c:out value="${supportedLanguage}"/>'/><c:out value="${silfn:i18nLanguageLabel(supportedLanguage, sessionScope.SilverSessionController.favoriteLanguage)}"/></span>
1129-
</c:forEach>
1132+
</c:forEach>data("isVersioned", isVersioned)
11301133
</div>
11311134
</div>
11321135
</c:if>
11331136
</div>
11341137

1135-
<div id="dialog-attachment-switch" style="display:none"></div>
1138+
<div id="dialog-attachment-switch" style="display:none"></div>
11361139

11371140
<div id="dialog-attachment-checkin" style="display:none">
11381141
<form name="checkin-attachment-form" id="checkin-attachment-form" method="post" accept-charset="UTF-8" target="iframe-post-form">
11391142
<input type="hidden" name="checkin_oldId" id="checkin_oldId" value="-1" />
11401143
<input type="hidden" name="force" id="force" value="false" />
11411144
<input type="hidden" name="webdav" id="webdav" value="false" />
1142-
<c:choose>
1143-
<c:when test="${isVersionActive}">
1144-
<label for="private" class="label-ui-dialog"><fmt:message key="attachment.version.label"/></label>
1145-
<span class="champ-ui-dialog"><input value="false" type="radio" name="private" id="private" checked="checked"/><fmt:message key="attachment.version_public.label"/>
1146-
<input value="true" type="radio" name="private" id="private"/><fmt:message key="attachment.version_wip.label"/></span>
1147-
<label for="comment" class="label-ui-dialog"><fmt:message key="attachment.dialog.comment" /></label>
1148-
<span class="champ-ui-dialog"><textarea name="comment" cols="60" rows="3" id="comment"></textarea></span>
1149-
</c:when>
1150-
<c:otherwise>
1151-
<fmt:message key="confirm.checkin.message" />
1152-
</c:otherwise>
1153-
</c:choose>
1145+
<div id="versioned_fields_attachment-checkin" style="display:none">
1146+
<label for="private" class="label-ui-dialog"><fmt:message key="attachment.version.label"/></label>
1147+
<span class="champ-ui-dialog"><input value="false" type="radio" name="private" id="private" checked="checked"/><fmt:message key="attachment.version_public.label"/>
1148+
<input value="true" type="radio" name="private" id="private"/><fmt:message key="attachment.version_wip.label"/></span>
1149+
1150+
<label for="comment" class="label-ui-dialog"><fmt:message key="attachment.dialog.comment" /></label>
1151+
<span class="champ-ui-dialog"><textarea name="comment" cols="60" rows="3" id="comment"></textarea></span>
1152+
</div>
1153+
<div id="simple_fields_attachment-checkin" style="display:none"><fmt:message key="confirm.checkin.message" /></div>
11541154
<input type="submit" value="Submit" style="display:none" />
11551155
</form>
11561156
</div>

web-core/src/main/java/org/silverpeas/attachment/tag/SimpleDocumentContextualMenu.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,8 @@ String prepareActions(SimpleDocument attachment, boolean useXMLForm,
144144
prepareMenuItem(builder, "checkoutAndEdit('" + attachment.getId() + "'," + attachmentId
145145
+ ");", resources.getString("attachment.checkOutAndEditOnline"));
146146
prepareMenuItem(builder, "checkin('" + attachment.getId() + "'," + attachmentId + ','
147-
+ attachment.isOpenOfficeCompatible() + ", false);", resources.getString("checkIn"));
147+
+ attachment.isOpenOfficeCompatible() + ", false ," + attachment.isVersioned() + ");",
148+
resources.getString("checkIn"));
148149
builder.append("</ul>").append(newline);
149150
builder.append("<ul>").append(newline);
150151
prepareMenuItem(builder, "updateAttachment('" + attachment.getId() + "','" + language + "');",
@@ -194,8 +195,8 @@ String prepareActions(SimpleDocument attachment, boolean useXMLForm,
194195
builder.append(configureCheckoutAndDownload(attachmentId, !isWorker(userId, attachment)));
195196
builder.append(configureCheckoutAndEdit(attachmentId, !isEditable(userId, attachment,
196197
useWebDAV)));
197-
builder.append(configureCheckin(attachmentId,
198-
!isWorker(userId, attachment) && !isAdmin(userId)));
198+
builder.append(configureCheckin(attachmentId, !isWorker(userId, attachment)
199+
&& !isAdmin(userId)));
199200
builder.append(configureUpdate(attachmentId, !isWorker(userId, attachment)));
200201
builder.append(configureDelete(attachmentId, useXMLForm, true));
201202
if (!userId.equals(attachment.getEditedBy())) {

web-core/src/main/java/org/silverpeas/attachment/web/SimpleDocumentEntity.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ public class SimpleDocumentEntity implements Exposable {
7676
private String downloadUrl;
7777
@XmlElement(defaultValue = "")
7878
private String comment;
79+
@XmlElement(defaultValue = "false")
80+
private String versioned;
7981

8082
public static SimpleDocumentEntity fromAttachment(SimpleDocument document) {
8183
SimpleDocumentEntity entity = new SimpleDocumentEntity();
@@ -103,6 +105,7 @@ public static SimpleDocumentEntity fromAttachment(SimpleDocument document) {
103105
entity.downloadUrl = document.getAttachmentURL();
104106
entity.lang = document.getLanguage();
105107
entity.comment = document.getComment();
108+
entity.versioned = String.valueOf(document.isVersioned());
106109
return entity;
107110
}
108111

@@ -185,4 +188,9 @@ public String getDownloadUrl() {
185188
public String getComment() {
186189
return comment;
187190
}
191+
192+
public String getVersioned() {
193+
return versioned;
194+
}
195+
188196
}

web-core/src/main/resources/META-INF/viewGenerator.tld

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1579,7 +1579,7 @@
15791579
<rtexprvalue>false</rtexprvalue>
15801580
</attribute>
15811581
</tag>
1582-
1582+
15831583
<tag>
15841584
<description>
15851585
Establishes a scoped variable that contains the value of the defined settings.
@@ -1593,7 +1593,7 @@
15931593
<required>true</required>
15941594
<rtexprvalue>true</rtexprvalue>
15951595
<type>java.lang.String</type>
1596-
</attribute>
1596+
</attribute>
15971597
<attribute>
15981598
<description>The key of the wanted settings.</description>
15991599
<name>key</name>
@@ -1607,7 +1607,7 @@
16071607
<required>false</required>
16081608
<rtexprvalue>true</rtexprvalue>
16091609
<type>java.lang.Object</type>
1610-
</attribute>
1610+
</attribute>
16111611
<attribute>
16121612
<description>The name of the scoped variable to create.</description>
16131613
<name>var</name>
@@ -1675,7 +1675,7 @@
16751675
<function-signature>
16761676
java.lang.Object getValue( java.lang.String )
16771677
</function-signature>
1678-
</function>
1678+
</function>
16791679
<function>
16801680
<description>Function that returns the boolean value of a String.</description>
16811681
<name>booleanValue</name>

0 commit comments

Comments
 (0)