001
014
015 package com.liferay.portlet.documentlibrary.display.context;
016
017 import com.liferay.portal.kernel.bean.BeanParamUtil;
018 import com.liferay.portal.kernel.exception.PortalException;
019 import com.liferay.portal.kernel.exception.SystemException;
020 import com.liferay.portal.kernel.repository.model.FileEntry;
021 import com.liferay.portal.kernel.repository.model.FileVersion;
022 import com.liferay.portal.kernel.util.ParamUtil;
023 import com.liferay.portal.kernel.util.PrefsPropsUtil;
024 import com.liferay.portal.kernel.util.PropsKeys;
025 import com.liferay.portal.theme.ThemeDisplay;
026 import com.liferay.portal.util.WebKeys;
027 import com.liferay.portlet.documentlibrary.DLPortletInstanceSettings;
028 import com.liferay.portlet.documentlibrary.display.context.logic.FileEntryDisplayContextHelper;
029 import com.liferay.portlet.documentlibrary.display.context.logic.FileVersionDisplayContextHelper;
030 import com.liferay.portlet.documentlibrary.display.context.util.DLRequestHelper;
031 import com.liferay.portlet.documentlibrary.model.DLFileEntryType;
032 import com.liferay.portlet.documentlibrary.util.DLUtil;
033 import com.liferay.portlet.dynamicdatamapping.model.DDMStructure;
034
035 import java.util.UUID;
036
037 import javax.servlet.http.HttpServletRequest;
038 import javax.servlet.http.HttpServletResponse;
039
040
043 public class DefaultDLEditFileEntryDisplayContext
044 implements DLEditFileEntryDisplayContext {
045
046 public DefaultDLEditFileEntryDisplayContext(
047 HttpServletRequest request, HttpServletResponse response,
048 DLFileEntryType dlFileEntryType) {
049
050 this(request, dlFileEntryType, null);
051 }
052
053 public DefaultDLEditFileEntryDisplayContext(
054 HttpServletRequest request, HttpServletResponse response,
055 FileEntry fileEntry) {
056
057 this(request, (DLFileEntryType)null, fileEntry);
058 }
059
060 @Override
061 public DLFilePicker getDLFilePicker(String onFilePickCallback) {
062 return null;
063 }
064
065 @Override
066 public long getMaximumUploadSize() {
067 long fileMaxSize = PrefsPropsUtil.getLong(PropsKeys.DL_FILE_MAX_SIZE);
068
069 if (fileMaxSize == 0) {
070 fileMaxSize = PrefsPropsUtil.getLong(
071 PropsKeys.UPLOAD_SERVLET_REQUEST_IMPL_MAX_SIZE);
072 }
073
074 return fileMaxSize;
075 }
076
077 @Override
078 public String getPublishButtonLabel() {
079 String publishButtonLabel = "publish";
080
081 if (_hasFolderWorkflowDefinitionLink()) {
082 publishButtonLabel = "submit-for-publication";
083 }
084
085 DLPortletInstanceSettings dlPortletInstanceSettings =
086 _dlRequestHelper.getDLPortletInstanceSettings();
087
088 if (dlPortletInstanceSettings.isEnableFileEntryDrafts()) {
089 publishButtonLabel = "save";
090 }
091
092 return publishButtonLabel;
093 }
094
095 @Override
096 public String getSaveButtonLabel() {
097 String saveButtonLabel = "save";
098
099 if ((_fileVersion == null) ||
100 _fileVersionDisplayContextHelper.isApproved() ||
101 _fileVersionDisplayContextHelper.isDraft()) {
102
103 saveButtonLabel = "save-as-draft";
104 }
105
106 return saveButtonLabel;
107 }
108
109 @Override
110 public UUID getUuid() {
111 return _UUID;
112 }
113
114 @Override
115 public boolean isCancelCheckoutDocumentButtonDisabled() {
116 return false;
117 }
118
119 @Override
120 public boolean isCancelCheckoutDocumentButtonVisible()
121 throws PortalException {
122
123 return _fileEntryDisplayContextHelper.
124 isCancelCheckoutDocumentActionAvailable();
125 }
126
127 @Override
128 public boolean isCheckinButtonDisabled() {
129 return false;
130 }
131
132 @Override
133 public boolean isCheckinButtonVisible() throws PortalException {
134 return _fileEntryDisplayContextHelper.isCheckinActionAvailable();
135 }
136
137 @Override
138 public boolean isCheckoutDocumentButtonDisabled() {
139 return false;
140 }
141
142 @Override
143 public boolean isCheckoutDocumentButtonVisible() throws PortalException {
144 return
145 _fileEntryDisplayContextHelper.isCheckoutDocumentActionAvailable();
146 }
147
148 @Override
149 public boolean isDDMStructureVisible(DDMStructure ddmStructure) {
150 return true;
151 }
152
153 @Override
154 public boolean isFolderSelectionVisible() {
155 return _showSelectFolder;
156 }
157
158 @Override
159 public boolean isPublishButtonDisabled() {
160 DLPortletInstanceSettings dlPortletInstanceSettings =
161 _dlRequestHelper.getDLPortletInstanceSettings();
162
163 if (_fileEntryDisplayContextHelper.isCheckedOutByOther() ||
164 (_fileVersionDisplayContextHelper.isPending() &&
165 dlPortletInstanceSettings.isEnableFileEntryDrafts())) {
166
167 return true;
168 }
169
170 return false;
171 }
172
173 @Override
174 public boolean isPublishButtonVisible() {
175 return true;
176 }
177
178 @Override
179 public boolean isSaveButtonDisabled() {
180 if (_fileEntryDisplayContextHelper.isCheckedOutByOther()) {
181 return true;
182 }
183
184 return false;
185 }
186
187 @Override
188 public boolean isSaveButtonVisible() {
189 DLPortletInstanceSettings dlPortletInstanceSettings =
190 _dlRequestHelper.getDLPortletInstanceSettings();
191
192 return dlPortletInstanceSettings.isEnableFileEntryDrafts();
193 }
194
195 @Override
196 public boolean isVersionInfoVisible() {
197 return true;
198 }
199
200 private DefaultDLEditFileEntryDisplayContext(
201 HttpServletRequest request, DLFileEntryType dlFileEntryType,
202 FileEntry fileEntry) {
203
204 try {
205 _dlRequestHelper = new DLRequestHelper(request);
206 _fileEntry = fileEntry;
207
208 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
209 WebKeys.THEME_DISPLAY);
210
211 _fileEntryDisplayContextHelper = new FileEntryDisplayContextHelper(
212 themeDisplay.getPermissionChecker(), _fileEntry);
213
214 if ((dlFileEntryType == null) && (fileEntry != null)) {
215 _dlFileEntryType =
216 _fileEntryDisplayContextHelper.getDLFileEntryType();
217 }
218 else {
219 _dlFileEntryType = dlFileEntryType;
220 }
221
222 if (fileEntry != null) {
223 _fileVersion = fileEntry.getFileVersion();
224 }
225 else {
226 _fileVersion = null;
227 }
228
229 _fileVersionDisplayContextHelper =
230 new FileVersionDisplayContextHelper(_fileVersion);
231
232 _showSelectFolder = ParamUtil.getBoolean(
233 request, "showSelectFolder");
234 }
235 catch (PortalException pe) {
236 throw new SystemException(
237 "Unable to build DefaultDLEditFileEntryDisplayContext for " +
238 fileEntry,
239 pe);
240 }
241 }
242
243 private boolean _hasFolderWorkflowDefinitionLink() {
244 try {
245 if (_dlFileEntryType == null) {
246 return false;
247 }
248
249 long folderId = BeanParamUtil.getLong(
250 _fileEntry, _dlRequestHelper.getRequest(), "folderId");
251
252 return DLUtil.hasWorkflowDefinitionLink(
253 _dlRequestHelper.getCompanyId(),
254 _dlRequestHelper.getScopeGroupId(), folderId,
255 _dlFileEntryType.getFileEntryTypeId());
256 }
257 catch (Exception e) {
258 throw new SystemException(
259 "Unable to check if folder has workflow definition link", e);
260 }
261 }
262
263 private static final UUID _UUID = UUID.fromString(
264 "63326141-02F6-42B5-AE38-ABC73FA72BB5");
265
266 private final DLFileEntryType _dlFileEntryType;
267 private final DLRequestHelper _dlRequestHelper;
268 private final FileEntry _fileEntry;
269 private final FileEntryDisplayContextHelper _fileEntryDisplayContextHelper;
270 private final FileVersion _fileVersion;
271 private final FileVersionDisplayContextHelper
272 _fileVersionDisplayContextHelper;
273 private final boolean _showSelectFolder;
274
275 }