1 31 32 package org.opencms.workplace.tools.accounts; 33 34 import org.opencms.file.CmsGroup; 35 import org.opencms.file.CmsUser; 36 import org.opencms.i18n.CmsMessageContainer; 37 import org.opencms.jsp.CmsJspActionElement; 38 import org.opencms.main.CmsException; 39 import org.opencms.main.CmsRuntimeException; 40 import org.opencms.util.CmsUUID; 41 import org.opencms.workplace.CmsDialog; 42 import org.opencms.workplace.list.A_CmsListDialog; 43 import org.opencms.workplace.list.CmsListColumnAlignEnum; 44 import org.opencms.workplace.list.CmsListColumnDefinition; 45 import org.opencms.workplace.list.CmsListDateMacroFormatter; 46 import org.opencms.workplace.list.CmsListDefaultAction; 47 import org.opencms.workplace.list.CmsListDirectAction; 48 import org.opencms.workplace.list.CmsListItem; 49 import org.opencms.workplace.list.CmsListItemActionIconComparator; 50 import org.opencms.workplace.list.CmsListItemDetails; 51 import org.opencms.workplace.list.CmsListItemDetailsFormatter; 52 import org.opencms.workplace.list.CmsListMetadata; 53 import org.opencms.workplace.list.CmsListMultiAction; 54 import org.opencms.workplace.list.CmsListOrderEnum; 55 import org.opencms.workplace.list.CmsListSearchAction; 56 57 import java.io.IOException ; 58 import java.util.ArrayList ; 59 import java.util.Date ; 60 import java.util.HashMap ; 61 import java.util.HashSet ; 62 import java.util.Iterator ; 63 import java.util.List ; 64 import java.util.Map ; 65 import java.util.Set ; 66 67 import javax.servlet.ServletException ; 68 69 78 public abstract class A_CmsUsersList extends A_CmsListDialog { 79 80 81 public static final String LIST_ACTION_ACTIVATE = "aa"; 82 83 84 public static final String LIST_ACTION_DEACTIVATE = "ac"; 85 86 87 public static final String LIST_ACTION_DELETE = "ad"; 88 89 90 public static final String LIST_ACTION_EDIT = "ae"; 91 92 93 public static final String LIST_ACTION_GROUPS = "ag"; 94 95 96 public static final String LIST_ACTION_ROLES = "ar"; 97 98 99 public static final String LIST_COLUMN_ACTIVATE = "ca"; 100 101 102 public static final String LIST_COLUMN_DELETE = "cd"; 103 104 105 public static final String LIST_COLUMN_EDIT = "ce"; 106 107 108 public static final String LIST_COLUMN_EMAIL = "cm"; 109 110 111 public static final String LIST_COLUMN_GROUPS = "cg"; 112 113 114 public static final String LIST_COLUMN_LASTLOGIN = "cl"; 115 116 117 public static final String LIST_COLUMN_LOGIN = "ci"; 118 119 120 public static final String LIST_COLUMN_NAME = "cn"; 121 122 123 public static final String LIST_COLUMN_ROLES = "cr"; 124 125 126 public static final String LIST_DEFACTION_EDIT = "de"; 127 128 129 public static final String LIST_DETAIL_ADDRESS = "da"; 130 131 132 public static final String LIST_DETAIL_GROUPS = "dg"; 133 134 135 public static final String LIST_DETAIL_ROLES = "dr"; 136 137 138 public static final String LIST_MACTION_ACTIVATE = "ma"; 139 140 141 public static final String LIST_MACTION_DEACTIVATE = "mc"; 142 143 144 public static final String LIST_MACTION_DELETE = "md"; 145 146 147 public static final String PATH_BUTTONS = "tools/accounts/buttons/"; 148 149 150 private static Set m_deleteActionIds = new HashSet (); 151 152 153 private static Set m_editActionIds = new HashSet (); 154 155 162 public A_CmsUsersList(CmsJspActionElement jsp, String listId, CmsMessageContainer listName) { 163 164 super(jsp, listId, listName, LIST_COLUMN_LOGIN, CmsListOrderEnum.ORDER_ASCENDING, null); 165 } 166 167 175 public void executeListMultiActions() throws CmsRuntimeException { 176 177 if (getParamListAction().equals(LIST_MACTION_DELETE)) { 178 Map params = new HashMap (); 180 params.put(A_CmsEditUserDialog.PARAM_USERID, getParamSelItems()); 181 params.put(CmsDialog.PARAM_ACTION, CmsDialog.DIALOG_INITIAL); 183 184 try { 185 getToolManager().jspForwardTool(this, getCurrentToolPath() + "/delete", params); 186 } catch (Exception e) { 187 throw new CmsRuntimeException(Messages.get().container(Messages.ERR_DELETE_SELECTED_USERS_0), e); 188 } 189 } else if (getParamListAction().equals(LIST_MACTION_ACTIVATE)) { 190 try { 192 Iterator itItems = getSelectedItems().iterator(); 193 while (itItems.hasNext()) { 194 CmsListItem listItem = (CmsListItem)itItems.next(); 195 String usrName = listItem.get(LIST_COLUMN_LOGIN).toString(); 196 CmsUser user = readUser(usrName); 197 if (!user.isEnabled()) { 198 user.setEnabled(true); 199 getCms().writeUser(user); 200 } 201 } 202 } catch (CmsException e) { 203 throw new CmsRuntimeException(Messages.get().container(Messages.ERR_ACTIVATE_SELECTED_USERS_0), e); 204 } 205 } else if (getParamListAction().equals(LIST_MACTION_DEACTIVATE)) { 207 try { 209 Iterator itItems = getSelectedItems().iterator(); 210 while (itItems.hasNext()) { 211 CmsListItem listItem = (CmsListItem)itItems.next(); 212 String usrName = listItem.get(LIST_COLUMN_LOGIN).toString(); 213 CmsUser user = readUser(usrName); 214 if (user.isEnabled()) { 215 user.setEnabled(false); 216 getCms().writeUser(user); 217 } 218 } 219 } catch (CmsException e) { 220 throw new CmsRuntimeException(Messages.get().container(Messages.ERR_DEACTIVATE_SELECTED_USERS_0), e); 221 } 222 } else { 224 throwListUnsupportedActionException(); 225 } 226 listSave(); 227 } 228 229 232 public void executeListSingleActions() throws IOException , ServletException { 233 234 String userId = getSelectedItem().getId(); 235 String userName = getSelectedItem().get(LIST_COLUMN_LOGIN).toString(); 236 237 Map params = new HashMap (); 238 params.put(A_CmsEditUserDialog.PARAM_USERID, userId); 239 params.put(CmsDialog.PARAM_ACTION, CmsDialog.DIALOG_INITIAL); 241 242 if (getParamListAction().equals(LIST_DEFACTION_EDIT)) { 243 getToolManager().jspForwardTool(this, getCurrentToolPath() + "/edit", params); 245 } else if (m_editActionIds.contains(getParamListAction())) { 246 getToolManager().jspForwardTool(this, getCurrentToolPath() + "/edit/user", params); 247 } else if (getParamListAction().equals(LIST_ACTION_GROUPS)) { 248 getToolManager().jspForwardTool(this, getCurrentToolPath() + "/edit/groups", params); 249 } else if (getParamListAction().equals(LIST_ACTION_ROLES)) { 250 getToolManager().jspForwardTool(this, getCurrentToolPath() + "/edit/roles", params); 251 } else if (m_deleteActionIds.contains(getParamListAction())) { 252 getToolManager().jspForwardTool(this, getCurrentToolPath() + "/edit/delete", params); 253 } else if (getParamListAction().equals(LIST_ACTION_ACTIVATE)) { 254 try { 256 CmsUser user = readUser(userName); 257 user.setEnabled(true); 258 getCms().writeUser(user); 259 } catch (CmsException e) { 260 throw new CmsRuntimeException(Messages.get().container(Messages.ERR_ACTIVATE_USER_1, userName), e); 261 } 262 } else if (getParamListAction().equals(LIST_ACTION_DEACTIVATE)) { 263 try { 265 CmsUser user = readUser(userName); 266 user.setEnabled(false); 267 getCms().writeUser(user); 268 } catch (CmsException e) { 269 throw new CmsRuntimeException(Messages.get().container(Messages.ERR_DEACTIVATE_USER_1, userName), e); 270 } 271 } else { 272 throwListUnsupportedActionException(); 273 } 274 listSave(); 275 } 276 277 280 protected void fillDetails(String detailId) { 281 282 List users = getList().getAllContent(); 284 Iterator itUsers = users.iterator(); 285 while (itUsers.hasNext()) { 286 CmsListItem item = (CmsListItem)itUsers.next(); 287 String userName = item.get(LIST_COLUMN_LOGIN).toString(); 288 StringBuffer html = new StringBuffer (512); 289 try { 290 if (detailId.equals(LIST_DETAIL_ADDRESS)) { 291 CmsUser user = readUser(userName); 292 html.append(user.getAddress()); 294 if (user.getCity() != null) { 295 html.append("<br>"); 296 if (user.getZipcode() != null) { 297 html.append(user.getZipcode()); 298 html.append(" "); 299 } 300 html.append(user.getCity()); 301 } 302 if (user.getCountry() != null) { 303 html.append("<br>"); 304 html.append(user.getCountry()); 305 } 306 } else if (detailId.equals(LIST_DETAIL_GROUPS)) { 307 Iterator itGroups = getCms().getGroupsOfUser(userName).iterator(); 309 while (itGroups.hasNext()) { 310 html.append(((CmsGroup)itGroups.next()).getName()); 311 if (itGroups.hasNext()) { 312 html.append("<br>"); 313 } 314 html.append("\n"); 315 } 316 } else { 317 continue; 318 } 319 } catch (Exception e) { 320 } 322 item.set(detailId, html.toString()); 323 } 324 } 325 326 331 protected abstract String getGroupIcon(); 332 333 336 protected List getListItems() throws CmsException { 337 338 List ret = new ArrayList (); 339 List users = getUsers(); 341 Iterator itUsers = users.iterator(); 342 while (itUsers.hasNext()) { 343 CmsUser user = (CmsUser)itUsers.next(); 344 CmsListItem item = getList().newItem(user.getId().toString()); 345 item.set(LIST_COLUMN_LOGIN, user.getName()); 346 item.set(LIST_COLUMN_NAME, user.getFullName()); 347 item.set(LIST_COLUMN_EMAIL, user.getEmail()); 348 item.set(LIST_COLUMN_LASTLOGIN, new Date (user.getLastlogin())); 349 ret.add(item); 350 } 351 return ret; 352 } 353 354 361 protected abstract List getUsers() throws CmsException; 362 363 366 protected void initMessages() { 367 368 addMessages(Messages.get().getBundleName()); 370 super.initMessages(); 372 } 373 374 383 protected abstract CmsUser readUser(String name) throws CmsException; 384 385 388 protected void setColumns(CmsListMetadata metadata) { 389 390 CmsListColumnDefinition editCol = new CmsListColumnDefinition(LIST_COLUMN_EDIT); 392 editCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_EDIT_0)); 393 editCol.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_COLS_EDIT_HELP_0)); 394 editCol.setWidth("20"); 395 editCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER); 396 editCol.setSorteable(false); 397 398 setEditAction(editCol); 400 m_editActionIds.addAll(editCol.getDirectActionIds()); 401 metadata.addColumn(editCol); 403 404 CmsListColumnDefinition groupCol = new CmsListColumnDefinition(LIST_COLUMN_GROUPS); 406 groupCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_GROUPS_0)); 407 groupCol.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_COLS_GROUPS_HELP_0)); 408 groupCol.setWidth("20"); 409 groupCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER); 410 groupCol.setSorteable(false); 411 CmsListDirectAction groupAction = new CmsListDirectAction(LIST_ACTION_GROUPS); 413 groupAction.setName(Messages.get().container(Messages.GUI_USERS_LIST_ACTION_GROUPS_NAME_0)); 414 groupAction.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_ACTION_GROUPS_HELP_0)); 415 groupAction.setIconPath(getGroupIcon()); 416 groupCol.addDirectAction(groupAction); 417 metadata.addColumn(groupCol); 419 420 CmsListColumnDefinition actCol = new CmsListColumnDefinition(LIST_COLUMN_ACTIVATE); 422 actCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_ACTIVATE_0)); 423 actCol.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_COLS_ACTIVATE_HELP_0)); 424 actCol.setWidth("20"); 425 actCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER); 426 actCol.setListItemComparator(new CmsListItemActionIconComparator()); 427 428 CmsListDirectAction actAction = new CmsListDirectAction(LIST_ACTION_ACTIVATE) { 430 431 434 public boolean isVisible() { 435 436 if (getItem() != null) { 437 String usrId = getItem().getId(); 438 try { 439 return !getCms().readUser(new CmsUUID(usrId)).isEnabled(); 440 } catch (CmsException e) { 441 return false; 442 } 443 } 444 return super.isVisible(); 445 } 446 }; 447 actAction.setName(Messages.get().container(Messages.GUI_USERS_LIST_ACTION_ACTIVATE_NAME_0)); 448 actAction.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_ACTION_ACTIVATE_HELP_0)); 449 actAction.setConfirmationMessage(Messages.get().container(Messages.GUI_USERS_LIST_ACTION_ACTIVATE_CONF_0)); 450 actAction.setIconPath(ICON_INACTIVE); 451 actCol.addDirectAction(actAction); 452 453 CmsListDirectAction deactAction = new CmsListDirectAction(LIST_ACTION_DEACTIVATE) { 455 456 459 public boolean isVisible() { 460 461 if (getItem() != null) { 462 String usrId = getItem().getId(); 463 try { 464 return getCms().readUser(new CmsUUID(usrId)).isEnabled(); 465 } catch (CmsException e) { 466 return false; 467 } 468 } 469 return super.isVisible(); 470 } 471 }; 472 deactAction.setName(Messages.get().container(Messages.GUI_USERS_LIST_ACTION_DEACTIVATE_NAME_0)); 473 deactAction.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_ACTION_DEACTIVATE_HELP_0)); 474 deactAction.setConfirmationMessage(Messages.get().container(Messages.GUI_USERS_LIST_ACTION_DEACTIVATE_CONF_0)); 475 deactAction.setIconPath(ICON_ACTIVE); 476 actCol.addDirectAction(deactAction); 477 478 metadata.addColumn(actCol); 480 481 CmsListColumnDefinition deleteCol = new CmsListColumnDefinition(LIST_COLUMN_DELETE); 483 deleteCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_DELETE_0)); 484 deleteCol.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_COLS_DELETE_HELP_0)); 485 deleteCol.setWidth("20"); 486 deleteCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER); 487 deleteCol.setSorteable(false); 488 setDeleteAction(deleteCol); 490 m_deleteActionIds.addAll(deleteCol.getDirectActionIds()); 491 492 metadata.addColumn(deleteCol); 494 495 CmsListColumnDefinition loginCol = new CmsListColumnDefinition(LIST_COLUMN_LOGIN); 497 loginCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_LOGIN_0)); 498 loginCol.setWidth("20%"); 499 500 CmsListDefaultAction defEditAction = new CmsListDefaultAction(LIST_DEFACTION_EDIT); 502 defEditAction.setName(Messages.get().container(Messages.GUI_USERS_LIST_DEFACTION_EDIT_NAME_0)); 503 defEditAction.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_DEFACTION_EDIT_HELP_0)); 504 loginCol.addDefaultAction(defEditAction); 505 506 metadata.addColumn(loginCol); 508 509 CmsListColumnDefinition nameCol = new CmsListColumnDefinition(LIST_COLUMN_NAME); 511 nameCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_USERNAME_0)); 512 nameCol.setWidth("30%"); 513 metadata.addColumn(nameCol); 514 515 CmsListColumnDefinition emailCol = new CmsListColumnDefinition(LIST_COLUMN_EMAIL); 517 emailCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_EMAIL_0)); 518 emailCol.setWidth("30%"); 519 metadata.addColumn(emailCol); 520 521 CmsListColumnDefinition lastLoginCol = new CmsListColumnDefinition(LIST_COLUMN_LASTLOGIN); 523 lastLoginCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_LASTLOGIN_0)); 524 lastLoginCol.setWidth("20%"); 525 lastLoginCol.setFormatter(CmsListDateMacroFormatter.getDefaultDateFormatter()); 526 metadata.addColumn(lastLoginCol); 527 } 528 529 534 protected abstract void setDeleteAction(CmsListColumnDefinition deleteCol); 535 536 541 protected abstract void setEditAction(CmsListColumnDefinition editCol); 542 543 546 protected void setIndependentActions(CmsListMetadata metadata) { 547 548 CmsListItemDetails userAddressDetails = new CmsListItemDetails(LIST_DETAIL_ADDRESS); 550 userAddressDetails.setAtColumn(LIST_COLUMN_LOGIN); 551 userAddressDetails.setVisible(false); 552 userAddressDetails.setShowActionName(Messages.get().container(Messages.GUI_USERS_DETAIL_SHOW_ADDRESS_NAME_0)); 553 userAddressDetails.setShowActionHelpText(Messages.get().container(Messages.GUI_USERS_DETAIL_SHOW_ADDRESS_HELP_0)); 554 userAddressDetails.setHideActionName(Messages.get().container(Messages.GUI_USERS_DETAIL_HIDE_ADDRESS_NAME_0)); 555 userAddressDetails.setHideActionHelpText(Messages.get().container(Messages.GUI_USERS_DETAIL_HIDE_ADDRESS_HELP_0)); 556 userAddressDetails.setName(Messages.get().container(Messages.GUI_USERS_DETAIL_ADDRESS_NAME_0)); 557 userAddressDetails.setFormatter(new CmsListItemDetailsFormatter(Messages.get().container( 558 Messages.GUI_USERS_DETAIL_ADDRESS_NAME_0))); 559 metadata.addItemDetails(userAddressDetails); 560 561 CmsListItemDetails userGroupsDetails = new CmsListItemDetails(LIST_DETAIL_GROUPS); 563 userGroupsDetails.setAtColumn(LIST_COLUMN_LOGIN); 564 userGroupsDetails.setVisible(false); 565 userGroupsDetails.setShowActionName(Messages.get().container(Messages.GUI_USERS_DETAIL_SHOW_GROUPS_NAME_0)); 566 userGroupsDetails.setShowActionHelpText(Messages.get().container(Messages.GUI_USERS_DETAIL_SHOW_GROUPS_HELP_0)); 567 userGroupsDetails.setHideActionName(Messages.get().container(Messages.GUI_USERS_DETAIL_HIDE_GROUPS_NAME_0)); 568 userGroupsDetails.setHideActionHelpText(Messages.get().container(Messages.GUI_USERS_DETAIL_HIDE_GROUPS_HELP_0)); 569 userGroupsDetails.setName(Messages.get().container(Messages.GUI_USERS_DETAIL_GROUPS_NAME_0)); 570 userGroupsDetails.setFormatter(new CmsListItemDetailsFormatter(Messages.get().container( 571 Messages.GUI_USERS_DETAIL_GROUPS_NAME_0))); 572 metadata.addItemDetails(userGroupsDetails); 573 574 CmsListSearchAction searchAction = new CmsListSearchAction(metadata.getColumnDefinition(LIST_COLUMN_LOGIN)); 576 searchAction.addColumn(metadata.getColumnDefinition(LIST_COLUMN_NAME)); 577 metadata.setSearchAction(searchAction); 578 } 579 580 583 protected void setMultiActions(CmsListMetadata metadata) { 584 585 CmsListMultiAction deleteMultiAction = new CmsListMultiAction(LIST_MACTION_DELETE); 587 deleteMultiAction.setName(Messages.get().container(Messages.GUI_USERS_LIST_MACTION_DELETE_NAME_0)); 588 deleteMultiAction.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_MACTION_DELETE_HELP_0)); 589 deleteMultiAction.setConfirmationMessage(Messages.get().container(Messages.GUI_USERS_LIST_MACTION_DELETE_CONF_0)); 590 deleteMultiAction.setIconPath(ICON_MULTI_DELETE); 591 metadata.addMultiAction(deleteMultiAction); 592 593 CmsListMultiAction activateUser = new CmsListMultiAction(LIST_MACTION_ACTIVATE); 595 activateUser.setName(Messages.get().container(Messages.GUI_USERS_LIST_MACTION_ACTIVATE_NAME_0)); 596 activateUser.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_MACTION_ACTIVATE_HELP_0)); 597 activateUser.setConfirmationMessage(Messages.get().container(Messages.GUI_USERS_LIST_MACTION_ACTIVATE_CONF_0)); 598 activateUser.setIconPath(ICON_MULTI_ACTIVATE); 599 metadata.addMultiAction(activateUser); 600 601 CmsListMultiAction deactivateUser = new CmsListMultiAction(LIST_MACTION_DEACTIVATE); 603 deactivateUser.setName(Messages.get().container(Messages.GUI_USERS_LIST_MACTION_DEACTIVATE_NAME_0)); 604 deactivateUser.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_MACTION_DEACTIVATE_HELP_0)); 605 deactivateUser.setConfirmationMessage(Messages.get().container( 606 Messages.GUI_USERS_LIST_MACTION_DEACTIVATE_CONF_0)); 607 deactivateUser.setIconPath(ICON_MULTI_DEACTIVATE); 608 metadata.addMultiAction(deactivateUser); 609 } 610 } | Popular Tags |