1 28 29 30 package com.opencms.workplace; 31 32 import org.opencms.file.CmsGroup; 33 import org.opencms.file.CmsObject; 34 import org.opencms.file.CmsRequestContext; 35 import org.opencms.file.CmsUser; 36 import org.opencms.main.CmsException; 37 import org.opencms.main.CmsLog; 38 import org.opencms.main.OpenCms; 39 40 import com.opencms.core.I_CmsSession; 41 import com.opencms.legacy.CmsLegacyException; 42 import com.opencms.legacy.CmsXmlTemplateLoader; 43 44 import java.util.Hashtable ; 45 import java.util.List ; 46 import java.util.Vector ; 47 48 58 59 public class CmsAdminGroups extends CmsWorkplaceDefault { 60 61 62 65 66 final static String C_NO_SUPERGROUP_SELECTED = "none_selected"; 68 69 80 81 public byte[] getContent(CmsObject cms, String templateFile, String elementName, 82 Hashtable parameters, String templateSelector) throws CmsException { 83 if(CmsLog.getLog(this).isDebugEnabled() && C_DEBUG) { 84 CmsLog.getLog(this).debug("Getting content of element " + ((elementName == null) ? "<root>" : elementName)); 85 CmsLog.getLog(this).debug("Template file is: " + templateFile); 86 CmsLog.getLog(this).debug("Selected template section is: " + ((templateSelector == null) ? "<default>" : templateSelector)); 87 } 88 I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true); 89 CmsRequestContext reqCont = cms.getRequestContext(); 90 CmsXmlWpTemplateFile xmlTemplateDocument = new CmsXmlWpTemplateFile(cms, templateFile); 91 boolean groupYetChanged = true; 92 boolean groupYetEstablished = true; 93 94 String perspective = (String )parameters.get("perspective"); 96 if(perspective != null && perspective.equals("group")) { 97 session.removeValue("ERROR"); 98 if(CmsXmlTemplateLoader.getRequest(reqCont).getParameter("CHANGE") != null) { 99 100 perspective = "changegroup"; 102 groupYetChanged = false; 103 } 104 else { 105 if(parameters.get("DELETE") != null) { 106 107 perspective = "deletegroup"; 109 } 110 else { 111 if(parameters.get("NEW") != null) { 112 113 perspective = "newgroup"; 115 groupYetEstablished = false; 116 } 117 } 118 } 119 } 120 if(perspective == null) { 121 122 perspective = new String ("group"); 124 } 125 if(perspective.equals("newgroup") || perspective.equals("changegroup")) { 126 127 String groupname, description, supergroup; 130 boolean projectManager, projectCoWorker, role; 131 if(session.getValue("ERROR") == null) { 132 groupname = (String )parameters.get("GROUPNAME"); 133 description = (String )parameters.get("GROUPDESC"); 134 supergroup = (String )parameters.get("SUPERGROUP"); 135 projectManager = (parameters.get("PROJECTMANAGER") != null); 136 projectCoWorker = (parameters.get("PROJECTCOWORKER") != null); 137 role = (parameters.get("ROLE") != null); 138 } 139 else { 140 141 groupname = (String )session.getValue("GROUPNAME"); 143 description = (String )session.getValue("GROUPDESC"); 144 supergroup = (String )session.getValue("SUPERGROUP"); 145 projectManager = (session.getValue("PROJECTMANAGER") != null); 146 projectCoWorker = (session.getValue("PROJECTCOWORKER") != null); 147 role = (session.getValue("ROLE") != null); 148 149 parameters.remove("ADD"); 151 parameters.remove("REMOVE"); 152 parameters.remove("OK"); 153 session.removeValue("ERROR"); 154 } 155 if(groupname == null) { 156 groupname = ""; 157 } 158 if(description == null) { 159 description = ""; 160 } 161 if(supergroup == null) { 162 supergroup = ""; 163 } 164 session.putValue("SUPERGROUP", supergroup); 165 166 Vector selectedUsers = (Vector )session.getValue("selectedUsers"); 168 Vector notSelectedUsers = (Vector )session.getValue("notSelectedUsers"); 169 if(perspective.equals("newgroup")) { 170 171 templateSelector = "newgroup"; 173 if(!groupYetEstablished) { 174 175 groupname = ""; 177 selectedUsers = new Vector (); 178 notSelectedUsers = new Vector (); 179 List users = cms.getUsers(); 180 for(int z = 0;z < users.size();z++) { 181 notSelectedUsers.addElement(((CmsUser)users.get(z)).getName()); 182 } 183 session.putValue("selectedUsers", selectedUsers); 184 session.putValue("notSelectedUsers", notSelectedUsers); 185 } 186 if(parameters.get("ADD") != null) { 187 188 String username = (String )parameters.get("NOTSELECTEDUSERS"); 190 if(username != null) { 191 selectedUsers.addElement(username); 192 notSelectedUsers.removeElement(username); 193 } 194 session.putValue("selectedUsers", selectedUsers); 195 session.putValue("notSelectedUsers", notSelectedUsers); 196 } 197 else { 198 if(parameters.get("REMOVE") != null) { 199 200 String username = (String )parameters.get("SELECTEDUSERS"); 203 if(username != null) { 204 notSelectedUsers.addElement(username); 205 selectedUsers.removeElement(username); 206 } 207 session.putValue("selectedUsers", selectedUsers); 208 session.putValue("notSelectedUsers", notSelectedUsers); 209 } 210 else { 211 if(parameters.get("OK") != null) { 212 213 try { 215 if(groupname == null || groupname.equals("")) { 216 throw new CmsLegacyException("no groupname", CmsLegacyException.C_NO_GROUP); 217 } 218 if(C_NO_SUPERGROUP_SELECTED.equals(supergroup)) { 219 supergroup = ""; } 221 CmsGroup newGroup = cms.createGroup(groupname, description, 0, supergroup); 222 newGroup.setProjectManager(projectManager); 223 newGroup.setProjectCoWorker(projectCoWorker); 224 newGroup.setRole(role); 225 cms.writeGroup(newGroup); 226 for(int z = 0;z < selectedUsers.size();z++) { 227 cms.addUserToGroup((String )selectedUsers.elementAt(z), groupname); 228 } 229 session.removeValue("selectedUsers"); 230 session.removeValue("notSelectedUsers"); 231 session.removeValue("SUPERGROUP"); 232 session.removeValue("PROJECTMANAGER"); 233 session.removeValue("PROJECTCOWORKER"); 234 session.removeValue("ROLE"); 235 session.removeValue("ERROR"); 236 templateSelector = ""; } 238 catch(CmsException e) { 239 240 session.putValue("ERROR", new String ("yes")); session.putValue("GROUPNAME", groupname); 243 session.putValue("GROUPDESC", description); 244 session.putValue("SUPERGROUP", supergroup); 245 if(projectManager) { 246 session.putValue("PROJECTMANAGER", "yes"); 247 } 248 else { 249 session.removeValue("PROJECTMANAGER"); 250 } 251 if(projectCoWorker) { 252 session.putValue("PROJECTCOWORKER", "yes"); 253 } 254 else { 255 session.removeValue("PROJECTCOWORKER"); 256 } 257 if(role) { 258 session.putValue("ROLE", "yes"); 259 } 260 else { 261 session.removeValue("ROLE"); 262 } 263 if ((e instanceof CmsLegacyException) && (((CmsLegacyException)e).getType() == CmsLegacyException.C_NO_GROUP) && e.getMessage().equals("no groupname")) { 264 templateSelector = "errordatamissing1"; 265 } 266 else { 267 throw e; } 269 } 270 } 271 } 272 } 273 } 274 else { 275 276 templateSelector = "changegroup"; 278 if(!groupYetChanged) { 279 280 282 CmsGroup theGroup = cms.readGroup(groupname); 284 if(theGroup == null) { 285 throw new CmsLegacyException("user does not exist"); 286 } 287 projectManager = theGroup.getProjectManager(); 288 projectCoWorker = theGroup.getProjectCoWorker(); 289 role = theGroup.getRole(); 290 description = theGroup.getDescription(); 291 CmsGroup parent = cms.getParent(groupname); 292 if(parent != null) { 293 supergroup = cms.getParent(groupname).getName(); 294 } 295 else { 296 supergroup = ""; 297 } 298 List users = cms.getUsersOfGroup(groupname); 299 if(users != null) { 300 selectedUsers = new Vector (); 301 for(int z = 0;z < users.size();z++) { 302 selectedUsers.addElement(((CmsUser)users.get(z)).getName()); 303 } 304 } 305 users = cms.getUsers(); 306 if(users != null) { 307 notSelectedUsers = new Vector (); 308 for(int z = 0;z < users.size();z++) { 309 String name = ((CmsUser)users.get(z)).getName(); 310 if(!selectedUsers.contains(name)) { 311 notSelectedUsers.addElement(name); 312 } 313 } 314 } 315 } 316 else { 317 if(parameters.get("ADD") != null) { 318 319 String username = (String )parameters.get("NOTSELECTEDUSERS"); 321 if(username != null) { 322 selectedUsers.addElement(username); 323 notSelectedUsers.removeElement(username); 324 } 325 } 326 else { 327 if(parameters.get("REMOVE") != null) { 328 329 String username = (String )parameters.get("SELECTEDUSERS"); 332 if(username != null) { 333 notSelectedUsers.addElement(username); 334 selectedUsers.removeElement(username); 335 } 336 } 337 else { 338 if(parameters.get("OK") != null) { 339 340 try { 342 CmsGroup theGroup = cms.readGroup(groupname); 343 if("".equals(supergroup) || supergroup.equals(C_NO_SUPERGROUP_SELECTED)) { 344 cms.setParentGroup(groupname, null); 345 } 346 else { 347 cms.setParentGroup(groupname, supergroup); 348 } 349 theGroup = cms.readGroup(groupname); 350 theGroup.setDescription(description); 351 theGroup.setProjectManager(projectManager); 352 theGroup.setProjectCoWorker(projectCoWorker); 353 theGroup.setRole(role); 354 cms.writeGroup(theGroup); 355 theGroup = cms.readGroup(groupname); 356 357 List allUsers = cms.getUsersOfGroup(groupname); 360 boolean defaultProblem = false; 361 Vector falseUsers = new Vector (); 362 for(int z = 0;z < allUsers.size();z++) { 363 String theUserName = ((CmsUser)allUsers.get(z)).getName(); 364 if(!selectedUsers.contains(theUserName)) { 365 cms.removeUserFromGroup(theUserName, groupname); 366 } 367 } 368 for(int z = 0;z < selectedUsers.size();z++) { 369 cms.addUserToGroup((String )selectedUsers.elementAt(z), groupname); 370 } 371 cms.writeGroup(theGroup); 372 session.removeValue("selectedUsers"); 373 session.removeValue("notSelectedUsers"); 374 session.removeValue("PROJECTMANAGER"); 375 session.removeValue("PROJECTCOWORKER"); 376 session.removeValue("ROLE"); 377 session.removeValue("ERROR"); 378 if(defaultProblem) { 379 xmlTemplateDocument.setData("RMDEFAULTDETAIL", "The following users which were to be removed had " + groupname + " as default group: " + falseUsers); 380 templateSelector = "errorremovedefault"; 381 } 382 else { 383 templateSelector = ""; } 385 } 386 catch(CmsException e) { 387 388 session.putValue("ERROR", new String ("yes")); 390 session.putValue("GROUPDESC", description); 391 session.putValue("SUPERGROUP", supergroup); 392 if ((e instanceof CmsLegacyException) && (((CmsLegacyException)e).getType() == CmsLegacyException.C_NO_GROUP)) { 393 templateSelector = "errornogroup2"; 394 } 395 else { 396 if ((e instanceof CmsLegacyException) && (((CmsLegacyException)e).getType() == CmsLegacyException.C_NO_USER && e.getMessage().equals("user data missing"))) { 397 templateSelector = "errordatamissing2"; 398 } 399 else { 400 throw e; } 402 } 403 } } } 406 } 407 } session.putValue("selectedUsers", selectedUsers); 409 session.putValue("notSelectedUsers", notSelectedUsers); 410 session.putValue("SUPERGROUP", supergroup); 411 } 412 413 if(groupname == null) { 416 groupname = ""; 417 } 418 if(description == null) { 419 description = ""; 420 } 421 if(supergroup == null) { 422 supergroup = ""; 423 } 424 xmlTemplateDocument.setData("GROUPNAME", groupname); 425 xmlTemplateDocument.setData("GROUPDESC", description); 426 xmlTemplateDocument.setData("SUPERGROUP", supergroup); 427 xmlTemplateDocument.setData("PCWCHECKED", projectCoWorker ? "checked" : ""); 428 xmlTemplateDocument.setData("PMCHECKED", projectManager ? "checked" : ""); 429 xmlTemplateDocument.setData("PRCHECKED", role ? "checked" : ""); 430 } else { 432 if(perspective.equals("deletegroup")) { 433 String groupname = (String )parameters.get("GROUPNAME"); 434 xmlTemplateDocument.setData("GROUPNAME", groupname); 435 templateSelector = "RUsureDelete"; 436 } 437 else { 438 if(perspective.equals("reallydeletegroup")) { 439 440 try { 442 String groupname = (String )parameters.get("GROUPNAME"); 443 cms.deleteGroup(groupname); 444 templateSelector = ""; 445 } 446 catch(Exception e) { 447 448 xmlTemplateDocument.setData("DELETEDETAILS", CmsException.getStackTraceAsString(e)); 450 templateSelector = "deleteerror"; 451 } 452 } 453 } 454 } 455 456 return startProcessing(cms, xmlTemplateDocument, elementName, parameters, templateSelector); 458 } 459 460 474 475 public Integer getGroups(CmsObject cms, CmsXmlLanguageFile lang, Vector names, 476 Vector values, Hashtable parameters) throws CmsException { 477 478 List groups = cms.getGroups(); 480 int retValue = 0; 481 482 for(int z = 0;z < groups.size();z++) { 484 String name = ((CmsGroup)groups.get(z)).getName(); 485 names.addElement(name); 486 values.addElement(name); 487 } 488 return new Integer (retValue); 489 } 490 491 505 506 public Integer getNotSelectedUsers(CmsObject cms, CmsXmlLanguageFile lang, 507 Vector names, Vector values, Hashtable parameters) throws CmsException { 508 I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true); 509 Vector notSelectedUsers = (Vector )session.getValue("notSelectedUsers"); 510 if(notSelectedUsers != null) { 511 for(int z = 0;z < notSelectedUsers.size();z++) { 512 String name = (String )notSelectedUsers.elementAt(z); 513 names.addElement(name); 514 values.addElement(name); 515 } 516 } 517 return new Integer (-1); } 519 520 534 535 public Integer getSelectedUsers(CmsObject cms, CmsXmlLanguageFile lang, Vector names, 536 Vector values, Hashtable parameters) throws CmsException { 537 I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true); 538 Vector selectedUsers = (Vector )session.getValue("selectedUsers"); 539 if(selectedUsers != null) { 540 for(int z = 0;z < selectedUsers.size();z++) { 541 String name = (String )selectedUsers.elementAt(z); 542 names.addElement(name); 543 values.addElement(name); 544 } 545 } 546 else { 547 selectedUsers = new Vector (); 548 } 549 return new Integer (-1); 550 } 551 552 566 567 public Integer getSuperGroups(CmsObject cms, CmsXmlLanguageFile lang, Vector names, 568 Vector values, Hashtable parameters) throws CmsException { 569 570 int retValue = -1; 571 I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true); 572 String actualGroup = (String )session.getValue("GROUPNAME"); 573 String temp = (String )parameters.get("GROUPNAME"); 574 if(temp != null) { 575 actualGroup = temp; 576 } 577 if(parameters.get("NEW") != null) { 578 actualGroup = ""; 580 } 581 String supergroup = (String )session.getValue("SUPERGROUP"); 582 temp = (String )parameters.get("SUPERGROUP"); 583 if(temp != null) { 584 supergroup = temp; 585 } 586 if(supergroup == null) { 587 supergroup = ""; 588 } 589 names.addElement(lang.getLanguageValue("input.none")); 590 values.addElement(C_NO_SUPERGROUP_SELECTED); 591 List groups = cms.getGroups(); 592 int selectedGroup = 0; 593 for(int z = 0;z < groups.size();z++) { 594 String name = ((CmsGroup)groups.get(z)).getName(); 595 if(name.equals(supergroup)) { 596 retValue = selectedGroup; 597 } 598 if(!name.equals(actualGroup)) { 599 names.addElement(name); 600 values.addElement(name); 601 selectedGroup++; 602 } 603 } 604 return new Integer (retValue + 1); 605 } 606 607 615 public Boolean isVisible(CmsObject cms, CmsXmlLanguageFile lang, Hashtable parameters) { 616 return new Boolean (OpenCms.getWorkplaceManager().showUserGroupIcon()); 617 } 618 619 629 630 public boolean isCacheable(CmsObject cms, String templateFile, String elementName, 631 Hashtable parameters, String templateSelector) { 632 return false; 633 } 634 } 635 | Popular Tags |