001
014
015 package com.liferay.portlet.documentlibrary.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.PrefsPropsUtil;
023 import com.liferay.portal.kernel.util.PropsKeys;
024 import com.liferay.portal.theme.PortletDisplay;
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.context.helper.FileEntryDisplayContextHelper;
029 import com.liferay.portlet.documentlibrary.context.helper.FileVersionDisplayContextHelper;
030 import com.liferay.portlet.documentlibrary.model.DLFileEntryType;
031 import com.liferay.portlet.documentlibrary.util.DLUtil;
032 import com.liferay.portlet.dynamicdatamapping.model.DDMStructure;
033
034 import java.util.UUID;
035
036 import javax.servlet.http.HttpServletRequest;
037 import javax.servlet.http.HttpServletResponse;
038
039
042 public class DefaultDLEditFileEntryDisplayContext
043 implements DLEditFileEntryDisplayContext {
044
045 public DefaultDLEditFileEntryDisplayContext(
046 HttpServletRequest request, HttpServletResponse response,
047 DLFileEntryType dlFileEntryType)
048 throws PortalException {
049
050 _init(request, dlFileEntryType, null);
051 }
052
053 public DefaultDLEditFileEntryDisplayContext(
054 HttpServletRequest request, HttpServletResponse response,
055 FileEntry fileEntry)
056 throws PortalException {
057
058 _init(request, null, fileEntry);
059 }
060
061 @Override
062 public long getMaximumUploadSize() {
063 long fileMaxSize = PrefsPropsUtil.getLong(PropsKeys.DL_FILE_MAX_SIZE);
064
065 if (fileMaxSize == 0) {
066 fileMaxSize = PrefsPropsUtil.getLong(
067 PropsKeys.UPLOAD_SERVLET_REQUEST_IMPL_MAX_SIZE);
068 }
069
070 return fileMaxSize;
071 }
072
073 @Override
074 public String getPublishButtonLabel() {
075 String publishButtonLabel = "publish";
076
077 if (_hasFolderWorkflowDefinitionLink()) {
078 publishButtonLabel = "submit-for-publication";
079 }
080
081 if (_dlPortletInstanceSettings.isEnableFileEntryDrafts()) {
082 publishButtonLabel = "save";
083 }
084
085 return publishButtonLabel;
086 }
087
088 @Override
089 public String getSaveButtonLabel() {
090 String saveButtonLabel = "save";
091
092 if ((_fileVersion == null) ||
093 _fileVersionDisplayContextHelper.isApproved() ||
094 _fileVersionDisplayContextHelper.isDraft()) {
095
096 saveButtonLabel = "save-as-draft";
097 }
098
099 return saveButtonLabel;
100 }
101
102 @Override
103 public UUID getUuid() {
104 return _UUID;
105 }
106
107 @Override
108 public boolean isCancelCheckoutDocumentButtonDisabled() {
109 return false;
110 }
111
112 @Override
113 public boolean isCancelCheckoutDocumentButtonVisible()
114 throws PortalException {
115
116 return _fileEntryDisplayContextHelper.
117 isCancelCheckoutDocumentButtonVisible();
118 }
119
120 @Override
121 public boolean isCheckinButtonDisabled() {
122 return false;
123 }
124
125 @Override
126 public boolean isCheckinButtonVisible() throws PortalException {
127 return _fileEntryDisplayContextHelper.isCheckinButtonVisible();
128 }
129
130 @Override
131 public boolean isCheckoutDocumentButtonDisabled() {
132 return false;
133 }
134
135 @Override
136 public boolean isCheckoutDocumentButtonVisible() throws PortalException {
137 return _fileEntryDisplayContextHelper.isCheckoutDocumentButtonVisible();
138 }
139
140 @Override
141 public boolean isDDMStructureVisible(DDMStructure ddmStructure) {
142 return true;
143 }
144
145 @Override
146 public boolean isPublishButtonDisabled() {
147 if (_fileEntryDisplayContextHelper.isCheckedOutByMe() ||
148 (_fileVersionDisplayContextHelper.isPending() &&
149 _dlPortletInstanceSettings.isEnableFileEntryDrafts())) {
150
151 return true;
152 }
153
154 return false;
155 }
156
157 @Override
158 public boolean isPublishButtonVisible() {
159 return true;
160 }
161
162 @Override
163 public boolean isSaveButtonDisabled() {
164 if (_fileEntryDisplayContextHelper.isCheckedOutByOther()) {
165 return true;
166 }
167
168 return false;
169 }
170
171 @Override
172 public boolean isSaveButtonVisible() {
173 return _dlPortletInstanceSettings.isEnableFileEntryDrafts();
174 }
175
176 private boolean _hasFolderWorkflowDefinitionLink() {
177 try {
178 if (_dlFileEntryType == null) {
179 return false;
180 }
181
182 ThemeDisplay themeDisplay = (ThemeDisplay)_request.getAttribute(
183 WebKeys.THEME_DISPLAY);
184
185 long folderId = BeanParamUtil.getLong(
186 _fileEntry, _request, "folderId");
187
188 return DLUtil.hasWorkflowDefinitionLink(
189 themeDisplay.getCompanyId(), themeDisplay.getScopeGroupId(),
190 folderId, _dlFileEntryType.getFileEntryTypeId());
191 }
192 catch (Exception e) {
193 throw new SystemException(
194 "Unable to check if folder has workflow definition link", e);
195 }
196 }
197
198 private void _init(
199 HttpServletRequest request, DLFileEntryType dlFileEntryType,
200 FileEntry fileEntry)
201 throws PortalException {
202
203 _request = request;
204 _dlFileEntryType = dlFileEntryType;
205 _fileEntry = fileEntry;
206
207 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
208 WebKeys.THEME_DISPLAY);
209
210 PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();
211
212 _dlPortletInstanceSettings = DLPortletInstanceSettings.getInstance(
213 themeDisplay.getLayout(), portletDisplay.getId());
214 _fileEntryDisplayContextHelper = new FileEntryDisplayContextHelper(
215 themeDisplay.getPermissionChecker(), _fileEntry);
216
217 if ((_dlFileEntryType == null) && (_fileEntry != null)) {
218 _dlFileEntryType =
219 _fileEntryDisplayContextHelper.getDLFileEntryType();
220 }
221
222 if (fileEntry != null) {
223 _fileVersion = fileEntry.getFileVersion();
224 }
225
226 _fileVersionDisplayContextHelper = new FileVersionDisplayContextHelper(
227 _fileVersion);
228 }
229
230 private static final UUID _UUID = UUID.fromString(
231 "63326141-02F6-42B5-AE38-ABC73FA72BB5");
232
233 private DLFileEntryType _dlFileEntryType;
234 private DLPortletInstanceSettings _dlPortletInstanceSettings;
235 private FileEntry _fileEntry;
236 private FileEntryDisplayContextHelper _fileEntryDisplayContextHelper;
237 private FileVersion _fileVersion;
238 private FileVersionDisplayContextHelper _fileVersionDisplayContextHelper;
239 private HttpServletRequest _request;
240
241 }