1 31 32 package org.opencms.workplace.tools.projects; 33 34 import org.opencms.db.CmsUserSettings; 35 import org.opencms.file.CmsProject; 36 import org.opencms.jsp.CmsJspActionElement; 37 import org.opencms.security.I_CmsPrincipal; 38 import org.opencms.util.CmsFileUtil; 39 import org.opencms.util.CmsStringUtil; 40 import org.opencms.widgets.CmsCheckboxWidget; 41 import org.opencms.widgets.CmsDisplayWidget; 42 import org.opencms.widgets.CmsGroupWidget; 43 import org.opencms.widgets.CmsInputWidget; 44 import org.opencms.widgets.CmsTextareaWidget; 45 import org.opencms.widgets.CmsVfsFileWidget; 46 import org.opencms.workplace.CmsDialog; 47 import org.opencms.workplace.CmsWidgetDialogParameter; 48 import org.opencms.workplace.CmsWorkplaceSettings; 49 50 import java.util.ArrayList ; 51 import java.util.Iterator ; 52 import java.util.List ; 53 import java.util.Map ; 54 55 import javax.servlet.http.HttpServletRequest ; 56 import javax.servlet.http.HttpServletResponse ; 57 import javax.servlet.jsp.PageContext ; 58 59 68 public class CmsEditProjectDialog extends A_CmsProjectDialog { 69 70 71 public static final String KEY_PREFIX = "project"; 72 73 74 public static final String PARAM_PROJECTID = "projectid"; 75 76 77 public static final String PARAM_PROJECTNAME = "projectname"; 78 79 80 protected CmsProject m_project; 81 82 83 private String m_paramProjectid; 84 85 86 private List m_resources; 87 88 93 public CmsEditProjectDialog(CmsJspActionElement jsp) { 94 95 super(jsp); 96 } 97 98 105 public CmsEditProjectDialog(PageContext context, HttpServletRequest req, HttpServletResponse res) { 106 107 this(new CmsJspActionElement(context, req, res)); 108 } 109 110 115 protected void initWorkplaceMembers(CmsJspActionElement jsp) { 116 117 super.initWorkplaceMembers(jsp); 118 setOnlineHelpUriCustom("/projects/project_edit.jsp"); 119 } 120 121 124 public void actionCommit() { 125 126 List errors = new ArrayList (); 127 128 try { 129 if (m_project.getId() == 0) { 131 CmsProject newProject = getCms().createProject( 132 m_project.getName(), 133 m_project.getDescription(), 134 this.getUserGroup(), 135 this.getManagerGroup(), 136 m_project.getType()); 137 m_project = newProject; 138 } else { 139 m_project.setGroupId(getCms().readGroup(getUserGroup()).getId()); 140 m_project.setManagerGroupId(getCms().readGroup(getManagerGroup()).getId()); 141 getCms().writeProject(m_project); 142 } 143 CmsProject currentProject = getCms().getRequestContext().currentProject(); 145 getCms().getRequestContext().setCurrentProject(m_project); 147 String currentSite = getCms().getRequestContext().getSiteRoot(); 149 try { 151 getCms().getRequestContext().setSiteRoot(""); 153 154 Iterator itDel = getCms().readProjectResources(m_project).iterator(); 156 while (itDel.hasNext()) { 157 String resName = itDel.next().toString(); 158 if (!getResources().contains(resName)) { 159 getCms().removeResourceFromProject(resName); 160 } 161 } 162 List currentResNames = getCms().readProjectResources(m_project); 164 Iterator itAdd = getResources().iterator(); 166 while (itAdd.hasNext()) { 167 String resName = itAdd.next().toString(); 168 if (!currentResNames.contains(resName)) { 169 getCms().copyResourceToProject(resName); 170 } 171 } 172 } finally { 173 getCms().getRequestContext().setSiteRoot(currentSite); 175 getCms().getRequestContext().setCurrentProject(currentProject); 176 } 177 Map objects = (Map )getSettings().getListObject(); 179 if (objects != null) { 180 objects.remove(CmsProjectsList.class.getName()); 181 } 182 } catch (Throwable t) { 183 errors.add(t); 184 } 185 setCommitErrors(errors); 187 } 188 189 194 public String getParamProjectid() { 195 196 return m_paramProjectid; 197 } 198 199 204 public List getResources() { 205 206 return m_resources; 207 } 208 209 214 public void setParamProjectid(String projectId) { 215 216 m_paramProjectid = projectId; 217 } 218 219 224 public void setResources(List value) { 225 226 if (value == null) { 227 m_resources = new ArrayList (); 228 return; 229 } 230 m_resources = CmsFileUtil.removeRedundancies(value); 231 } 232 233 236 protected String createDialogHtml(String dialog) { 237 238 StringBuffer result = new StringBuffer (1024); 239 240 result.append(createWidgetTableStart()); 241 result.append(createWidgetErrorHeader()); 243 244 if (dialog.equals(PAGES[0])) { 245 result.append(dialogBlockStart(key(Messages.GUI_PROJECT_EDITOR_LABEL_IDENTIFICATION_BLOCK_0))); 247 result.append(createWidgetTableStart()); 248 result.append(createDialogRowsHtml(0, 4)); 249 result.append(createWidgetTableEnd()); 250 result.append(dialogBlockEnd()); 251 result.append(dialogBlockStart(key(Messages.GUI_PROJECT_EDITOR_LABEL_CONTENT_BLOCK_0))); 252 result.append(createWidgetTableStart()); 253 result.append(createDialogRowsHtml(5, 5)); 254 result.append(createWidgetTableEnd()); 255 result.append(dialogBlockEnd()); 256 } 257 258 result.append(createWidgetTableEnd()); 259 return result.toString(); 260 } 261 262 265 protected void defineWidgets() { 266 267 initProjectObject(); 269 270 setKeyPrefix(KEY_PREFIX); 271 272 if (isNewProject()) { 274 addWidget(new CmsWidgetDialogParameter(m_project, "name", PAGES[0], new CmsInputWidget())); 275 } else { 276 addWidget(new CmsWidgetDialogParameter(m_project, "name", PAGES[0], new CmsDisplayWidget())); 277 } 278 addWidget(new CmsWidgetDialogParameter(m_project, "description", "", PAGES[0], new CmsTextareaWidget(), 0, 1)); 279 addWidget(new CmsWidgetDialogParameter(this, "managerGroup", PAGES[0], new CmsGroupWidget(new Integer (I_CmsPrincipal.FLAG_GROUP_PROJECT_MANAGER), null))); 280 addWidget(new CmsWidgetDialogParameter(this, "userGroup", PAGES[0], new CmsGroupWidget(null, null))); 281 addWidget(new CmsWidgetDialogParameter(m_project, "deleteAfterPublishing", PAGES[0], new CmsCheckboxWidget())); 282 addWidget(new CmsWidgetDialogParameter(this, "resources", PAGES[0], new CmsVfsFileWidget(false, ""))); 283 } 284 285 294 protected void initProjectObject() { 295 296 Object o = null; 297 298 try { 299 if (CmsStringUtil.isEmpty(getParamAction()) || CmsDialog.DIALOG_INITIAL.equals(getParamAction())) { 300 m_project = getCms().readProject(new Integer (getParamProjectid()).intValue()); 302 } else { 303 o = getDialogObject(); 305 m_project = (CmsProject)o; 306 m_project.getId(); 308 } 309 } catch (Exception e) { 310 m_project = new CmsProject(); 312 } 313 try { 314 CmsUserSettings settings = new CmsUserSettings(getCms()); 315 m_project.setDeleteAfterPublishing(settings.getProjectSettings().isDeleteAfterPublishing()); 316 } catch (Exception e) { 317 } 319 try { 320 setManagerGroup(getCms().readManagerGroup(m_project).getName()); 321 } catch (Exception e) { 322 } 324 try { 325 setUserGroup(getCms().readGroup(m_project).getName()); 326 } catch (Exception e) { 327 } 329 try { 330 setResources(getCms().readProjectResources(m_project)); 331 } catch (Exception e) { 332 } 334 } 335 336 339 protected void initWorkplaceRequestValues(CmsWorkplaceSettings settings, HttpServletRequest request) { 340 341 super.initWorkplaceRequestValues(settings, request); 343 344 setDialogObject(m_project); 346 } 347 348 351 protected void validateParamaters() throws Exception { 352 353 if (!isNewProject()) { 354 getCms().readProject(new Integer (getParamProjectid()).intValue()).getName(); 356 } 357 358 } 359 360 365 private boolean isNewProject() { 366 367 return getCurrentToolPath().equals("/projects/new"); 368 } 369 } | Popular Tags |