1 31 32 package org.opencms.workplace.tools.accounts; 33 34 import org.opencms.file.CmsGroup; 35 import org.opencms.jsp.CmsJspActionElement; 36 import org.opencms.main.CmsException; 37 import org.opencms.main.CmsIllegalArgumentException; 38 import org.opencms.security.I_CmsPrincipal; 39 import org.opencms.util.CmsStringUtil; 40 import org.opencms.util.CmsUUID; 41 import org.opencms.widgets.CmsCheckboxWidget; 42 import org.opencms.widgets.CmsDisplayWidget; 43 import org.opencms.widgets.CmsInputWidget; 44 import org.opencms.widgets.CmsSelectWidget; 45 import org.opencms.widgets.CmsSelectWidgetOption; 46 import org.opencms.widgets.CmsTextareaWidget; 47 import org.opencms.workplace.CmsDialog; 48 import org.opencms.workplace.CmsWidgetDialog; 49 import org.opencms.workplace.CmsWidgetDialogParameter; 50 import org.opencms.workplace.CmsWorkplaceSettings; 51 import org.opencms.workplace.tools.CmsToolManager; 52 53 import java.util.ArrayList ; 54 import java.util.HashMap ; 55 import java.util.Iterator ; 56 import java.util.List ; 57 import java.util.Map ; 58 59 import javax.servlet.http.HttpServletRequest ; 60 61 70 public abstract class A_CmsEditGroupDialog extends CmsWidgetDialog { 71 72 73 public static final String KEY_PREFIX = "group"; 74 75 76 public static final String [] PAGES = {"page1"}; 77 78 79 public static final String PARAM_GROUPID = "groupid"; 80 81 82 protected CmsGroup m_group; 83 84 85 private String m_paramGroupid; 86 87 88 private String m_parentGroup; 89 90 95 public A_CmsEditGroupDialog(CmsJspActionElement jsp) { 96 97 super(jsp); 98 } 99 100 105 protected abstract String getListClass(); 106 107 112 protected abstract String getListRootPath(); 113 114 117 public void actionCommit() { 118 119 List errors = new ArrayList (); 120 121 try { 122 if (m_group.getId() == null) { 124 CmsGroup newGroup = getCms().createGroup( 125 m_group.getName(), 126 m_group.getDescription(), 127 m_group.isEnabled() ? I_CmsPrincipal.FLAG_ENABLED : I_CmsPrincipal.FLAG_DISABLED, 128 getParentGroup()); 129 newGroup.setProjectManager(m_group.getProjectManager()); 130 newGroup.setProjectCoWorker(m_group.getProjectCoWorker()); 131 newGroup.setRole(m_group.getRole()); 132 m_group = newGroup; 133 } else { 134 if (getParentGroup() != null) { 135 m_group.setParentId(getCms().readGroup(getParentGroup()).getId()); 136 } else { 137 m_group.setParentId(CmsUUID.getNullUUID()); 138 } 139 } 140 getCms().writeGroup(m_group); 142 Map objects = (Map )getSettings().getListObject(); 144 if (objects != null) { 145 objects.remove(getListClass()); 146 objects.remove(A_CmsUsersList.class.getName()); 147 } 148 } catch (Throwable t) { 149 errors.add(t); 150 } 151 152 if (errors.isEmpty() && isNewGroup()) { 153 if (getParamCloseLink() != null && getParamCloseLink().indexOf("path=" + getListRootPath()) > -1) { 154 Map argMap = new HashMap (); 156 argMap.put("groupid", m_group.getId()); 157 argMap.put("groupname", m_group.getName()); 158 setParamCloseLink(CmsToolManager.linkForToolPath(getJsp(), getListRootPath() + "/edit", argMap)); 159 } 160 } 161 setCommitErrors(errors); 163 } 164 165 170 public String getParamGroupid() { 171 172 return m_paramGroupid; 173 } 174 175 180 public String getParentGroup() { 181 182 return m_parentGroup; 183 } 184 185 190 public void setParamGroupid(String userId) { 191 192 m_paramGroupid = userId; 193 } 194 195 200 public void setParentGroup(String parentGroup) { 201 202 if (CmsStringUtil.isEmpty(parentGroup) || parentGroup.equals("null") || parentGroup.equals("none")) { 203 parentGroup = null; 204 } 205 if (parentGroup != null) { 206 try { 207 getCms().readGroup(parentGroup); 208 } catch (CmsException e) { 209 throw new CmsIllegalArgumentException(e.getMessageContainer()); 210 } 211 } 212 m_parentGroup = parentGroup; 213 } 214 215 223 protected String createDialogHtml(String dialog) { 224 225 StringBuffer result = new StringBuffer (1024); 226 227 result.append(createWidgetTableStart()); 228 result.append(createWidgetErrorHeader()); 230 231 if (dialog.equals(PAGES[0])) { 232 result.append(dialogBlockStart(key(Messages.GUI_GROUP_EDITOR_LABEL_IDENTIFICATION_BLOCK_0))); 234 result.append(createWidgetTableStart()); 235 result.append(createDialogRowsHtml(0, 3)); 236 result.append(createWidgetTableEnd()); 237 result.append(dialogBlockEnd()); 238 result.append(dialogBlockStart(key(Messages.GUI_GROUP_EDITOR_LABEL_FLAGS_BLOCK_0))); 239 result.append(createWidgetTableStart()); 240 result.append(createDialogRowsHtml(4, 6)); 241 result.append(createWidgetTableEnd()); 242 result.append(dialogBlockEnd()); 243 } 244 245 result.append(createWidgetTableEnd()); 246 return result.toString(); 247 } 248 249 252 protected void defineWidgets() { 253 254 initGroupObject(); 256 257 setKeyPrefix(KEY_PREFIX); 258 259 if (m_group.getId() == null && isEditable(m_group)) { 261 addWidget(new CmsWidgetDialogParameter(m_group, "name", PAGES[0], new CmsInputWidget())); 262 } else { 263 addWidget(new CmsWidgetDialogParameter(m_group, "name", PAGES[0], new CmsDisplayWidget())); 264 } 265 if (isEditable(m_group)) { 266 addWidget(new CmsWidgetDialogParameter(m_group, "description", PAGES[0], new CmsTextareaWidget())); 267 addWidget(new CmsWidgetDialogParameter(this, "parentGroup", PAGES[0], new CmsSelectWidget(getSelectGroups()))); 268 addWidget(new CmsWidgetDialogParameter(m_group, "enabled", PAGES[0], new CmsCheckboxWidget())); 269 addWidget(new CmsWidgetDialogParameter(m_group, "role", PAGES[0], new CmsCheckboxWidget())); 270 addWidget(new CmsWidgetDialogParameter(m_group, "projectManager", PAGES[0], new CmsCheckboxWidget())); 271 addWidget(new CmsWidgetDialogParameter(m_group, "projectCoWorker", PAGES[0], new CmsCheckboxWidget())); 272 } else { 273 addWidget(new CmsWidgetDialogParameter(m_group, "description", PAGES[0], new CmsDisplayWidget())); 274 addWidget(new CmsWidgetDialogParameter(this, "parentGroup", PAGES[0], new CmsDisplayWidget())); 275 addWidget(new CmsWidgetDialogParameter(m_group, "enabled", PAGES[0], new CmsDisplayWidget())); 276 addWidget(new CmsWidgetDialogParameter(m_group, "role", PAGES[0], new CmsDisplayWidget())); 277 addWidget(new CmsWidgetDialogParameter(m_group, "projectManager", PAGES[0], new CmsDisplayWidget())); 278 addWidget(new CmsWidgetDialogParameter(m_group, "projectCoWorker", PAGES[0], new CmsDisplayWidget())); 279 } 280 } 281 282 285 protected String [] getPageArray() { 286 287 return PAGES; 288 } 289 290 301 protected void initGroupObject() { 302 303 Object o = null; 304 305 try { 306 if (CmsStringUtil.isEmpty(getParamAction()) || CmsDialog.DIALOG_INITIAL.equals(getParamAction())) { 307 m_group = getCms().readGroup(new CmsUUID(getParamGroupid())); 309 } else { 310 o = getDialogObject(); 312 m_group = (CmsGroup)o; 313 m_group.getId(); 315 } 316 if (m_group.getParentId() != null && !m_group.getParentId().isNullUUID()) { 317 setParentGroup(getCms().getParent(m_group.getName()).getName()); 318 } 319 } catch (Exception e) { 320 m_group = new CmsGroup(); 322 setParentGroup(null); 323 } 324 } 325 326 329 protected void initMessages() { 330 331 addMessages(Messages.get().getBundleName()); 333 super.initMessages(); 335 } 336 337 340 protected void initWorkplaceRequestValues(CmsWorkplaceSettings settings, HttpServletRequest request) { 341 342 super.initWorkplaceRequestValues(settings, request); 344 345 setDialogObject(m_group); 347 } 348 349 352 protected void validateParamaters() throws Exception { 353 354 if (!isNewGroup()) { 355 getCms().readGroup(new CmsUUID(getParamGroupid())).getName(); 357 358 } 359 } 360 361 366 private List getSelectGroups() { 367 368 List retVal = new ArrayList (); 369 retVal.add(new CmsSelectWidgetOption("none", true)); 370 try { 371 Iterator itGroups = getCms().getGroups().iterator(); 372 while (itGroups.hasNext()) { 373 CmsGroup group = (CmsGroup)itGroups.next(); 374 if (group.getId().equals(m_group.getId())) { 375 continue; 376 } 377 retVal.add(new CmsSelectWidgetOption(group.getName())); 378 } 379 } catch (Exception e) { 380 } 382 return retVal; 383 } 384 385 390 private boolean isNewGroup() { 391 392 return getCurrentToolPath().equals(getListRootPath() + "/new"); 393 } 394 395 404 protected abstract boolean isEditable(CmsGroup group); 405 406 } | Popular Tags |