Skip to content

Commit 7ced1e2

Browse files
committed
avoid counting view ticket refresh as a new view
1 parent 4ae4888 commit 7ced1e2

File tree

7 files changed

+40
-35
lines changed

7 files changed

+40
-35
lines changed

logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/document/TicketDialog.java

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,11 @@
3131
*/
3232
public class TicketDialog extends Window {
3333

34-
private static final String ACTION2 = "action";
34+
private static final String MAXVIEWS = "maxviews";
3535

36-
private static final String MAXDOWNLOADS2 = "maxdownloads";
36+
private static final String ACTION = "action";
37+
38+
private static final String MAXDOWNLOADS = "maxdownloads";
3739

3840
private static final String CONTENT = "content";
3941

@@ -67,19 +69,6 @@ public TicketDialog(GUIDocument document) {
6769
layout.addMember(form);
6870
layout.addMember(save);
6971

70-
addCloseClickHandler(event -> DocumentService.Instance.get().cleanUploadedFileFolder(new AsyncCallback<Void>() {
71-
72-
@Override
73-
public void onFailure(Throwable caught) {
74-
GuiLog.serverError(caught);
75-
}
76-
77-
@Override
78-
public void onSuccess(Void result) {
79-
destroy();
80-
}
81-
}));
82-
8372
addItem(layout);
8473
}
8574

@@ -101,7 +90,7 @@ private void prepareForm() {
10190
date.setColSpan(4);
10291
date.setWrapTitle(false);
10392

104-
SpinnerItem maxDownloads = ItemFactory.newSpinnerItem(MAXDOWNLOADS2, (Integer) null);
93+
SpinnerItem maxDownloads = ItemFactory.newSpinnerItem(MAXDOWNLOADS, (Integer) null);
10594
maxDownloads.setEndRow(true);
10695
maxDownloads.setColSpan(4);
10796
maxDownloads.setWrapTitle(false);
@@ -119,7 +108,7 @@ private void prepareForm() {
119108
duedateTime.setValueMap(map);
120109
duedateTime.setValue("hour");
121110

122-
SelectItem action = ItemFactory.newSelectItem(ACTION2);
111+
SelectItem action = ItemFactory.newSelectItem(ACTION);
123112
action.setEndRow(true);
124113
action.setColSpan(4);
125114
action.setWrapTitle(false);
@@ -130,13 +119,13 @@ private void prepareForm() {
130119
action.setValue("0");
131120
action.setVisible(Feature.enabled(Feature.VIEW_TICKET));
132121

133-
SpinnerItem maxViews = ItemFactory.newSpinnerItem("maxviews", (Integer) null);
122+
SpinnerItem maxViews = ItemFactory.newSpinnerItem(MAXVIEWS, (Integer) null);
134123
maxViews.setEndRow(true);
135124
maxViews.setColSpan(4);
136125
maxViews.setWrapTitle(false);
137126
maxViews.setRequired(false);
138127
maxViews.setMin(0);
139-
maxViews.setVisibleWhen(new AdvancedCriteria(ACTION2, OperatorId.EQUALS, "2"));
128+
maxViews.setVisibleWhen(new AdvancedCriteria(ACTION, OperatorId.EQUALS, "2"));
140129

141130
form.setItems(action, docOrPdfConversion, duedateTimeItem, duedateTime, date, maxDownloads, maxViews);
142131
}
@@ -158,17 +147,17 @@ public void onSave() {
158147
SC.warn(I18N.message("providexepinfo"));
159148

160149
Integer maxDownloads = null;
161-
String val = form.getValueAsString(MAXDOWNLOADS2);
150+
String val = form.getValueAsString(MAXDOWNLOADS);
162151
if (val != null && !val.trim().isEmpty())
163152
maxDownloads = Integer.parseInt(val.trim());
164153

165154
Integer maxViews = null;
166-
val = form.getValueAsString(MAXDOWNLOADS2);
155+
val = form.getValueAsString(MAXVIEWS);
167156
if (val != null && !val.trim().isEmpty())
168157
maxViews = Integer.parseInt(val.trim());
169158

170159
DocumentService.Instance.get().createDownloadTicket(document.getId(),
171-
Integer.parseInt(form.getValueAsString(ACTION2)), suffix, expireHours, date, maxDownloads, maxViews,
160+
Integer.parseInt(form.getValueAsString(ACTION)), suffix, expireHours, date, maxDownloads, maxViews,
172161
new AsyncCallback<String[]>() {
173162

174163
@Override

logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/reports/TicketsReport.java

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717
import com.logicaldoc.gui.common.client.widgets.grid.RefreshableListGrid;
1818
import com.logicaldoc.gui.common.client.widgets.preview.PreviewPopup;
1919
import com.logicaldoc.gui.frontend.client.document.DocumentsPanel;
20+
import com.logicaldoc.gui.frontend.client.document.TicketDisplay;
2021
import com.logicaldoc.gui.frontend.client.services.DocumentService;
2122
import com.smartgwt.client.types.Alignment;
2223
import com.smartgwt.client.types.ListGridFieldType;
23-
import com.smartgwt.client.util.SC;
2424
import com.smartgwt.client.widgets.form.fields.SpinnerItem;
2525
import com.smartgwt.client.widgets.grid.ListGridField;
2626
import com.smartgwt.client.widgets.grid.ListGridRecord;
@@ -187,17 +187,10 @@ public void onSuccess(GUIDocument doc) {
187187
ticketURL.setTitle(I18N.message("ticketurl"));
188188
ticketURL.addClickHandler((MenuItemClickEvent event) -> {
189189
String ticketId = rec.getAttributeAsString("ticketId");
190+
String type = rec.getAttributeAsString("type");
190191

191-
String url = Session.get().getConfig("server.url");
192-
if (!url.endsWith("/"))
193-
url += "/";
194-
if ("2".equals(rec.getAttributeAsString("type")))
195-
url += "view/" + ticketId;
196-
else
197-
url += "download-ticket?ticketId=" + ticketId;
198-
199-
SC.confirm(I18N.message("downloadticket") + " - " + ticketId,
200-
"<a href='" + url + "' target='_blank'>" + url + "</a>", null);
192+
new TicketDisplay(ticketId, sampleTicketUrl(Session.get().getConfig("server.url"), ticketId, type),
193+
sampleTicketUrl(Util.contextPath(), ticketId, type)).show();
201194
});
202195

203196
MenuItem openInFolder = new MenuItem();
@@ -276,4 +269,14 @@ public void onSuccess(Void result) {
276269
contextMenu.setItems(enable, ticketURL, download, preview, openInFolder, delete);
277270
contextMenu.showContextMenu();
278271
}
272+
273+
private String sampleTicketUrl(String urlBase, String ticketId, String type) {
274+
if (!urlBase.endsWith("/"))
275+
urlBase += "/";
276+
if ("2".equals(type))
277+
urlBase += "view/" + ticketId;
278+
else
279+
urlBase += "download-ticket?ticketId=" + ticketId;
280+
return urlBase;
281+
}
279282
}

logicaldoc-gui/war/prev/index.jsp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
if(request.getParameter("path")!=null)
5555
path = request.getParameter("path");
5656
if(ticket!=null)
57-
path = "download-ticket";
57+
path = "download-ticket";
5858
5959
String query = request.getQueryString();
6060
if(previewCheck!=null)

logicaldoc-i18n/src/main/resources/i18n/messages.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2965,6 +2965,7 @@ indexable = Indexable
29652965
metadata = metadata
29662966
all = all
29672967
view = View
2968+
views = Views
29682969
maxviews = Max views
29692970
tickets = Tickets
29702971
thisticketdisabled = This ticket has been disabled

logicaldoc-i18n/src/main/resources/i18n/messages_en.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2965,6 +2965,7 @@ indexable = Indexable
29652965
metadata = metadata
29662966
all = all
29672967
view = View
2968+
views = Views
29682969
maxviews = Max views
29692970
tickets = Tickets
29702971
thisticketdisabled = This ticket has been disabled

logicaldoc-i18n/src/main/resources/i18n/messages_en_US.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2965,6 +2965,7 @@ indexable = Indexable
29652965
metadata = metadata
29662966
all = all
29672967
view = View
2968+
views = Views
29682969
maxviews = Max views
29692970
tickets = Tickets
29702971
thisticketdisabled = This ticket has been disabled

logicaldoc-webapp/src/main/java/com/logicaldoc/web/TicketDownload.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,17 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) {
8181

8282
if (isPreviewDownload(ticketId, request, document)) {
8383
request.getSession().removeAttribute(getPreviewAttributeName(ticketId));
84-
ticket.setViews(ticket.getViews() + 1);
84+
85+
/**
86+
* The user may resize the view panel that will trigger a reload
87+
* so we must mark the read in the session and count it just the
88+
* first time
89+
*/
90+
String viewMarker = "ticketviewed-" + ticketId;
91+
if (request.getSession().getAttribute(viewMarker) == null) {
92+
ticket.setViews(ticket.getViews() + 1);
93+
request.getSession().setAttribute(viewMarker, true);
94+
}
8595
if (isHtml(document))
8696
suffix = "safe.html";
8797
} else {

0 commit comments

Comments
 (0)