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