1 31 32 package org.opencms.workplace.demos.list; 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.CmsListIndependentAction; 49 import org.opencms.workplace.list.CmsListItem; 50 import org.opencms.workplace.list.CmsListItemActionIconComparator; 51 import org.opencms.workplace.list.CmsListItemDetails; 52 import org.opencms.workplace.list.CmsListItemDetailsFormatter; 53 import org.opencms.workplace.list.CmsListMetadata; 54 import org.opencms.workplace.list.CmsListMultiAction; 55 import org.opencms.workplace.list.CmsListSearchAction; 56 import org.opencms.workplace.tools.accounts.Messages; 57 58 import java.util.ArrayList ; 59 import java.util.Date ; 60 import java.util.HashMap ; 61 import java.util.Iterator ; 62 import java.util.List ; 63 import java.util.Map ; 64 65 import javax.servlet.http.HttpServletRequest ; 66 import javax.servlet.http.HttpServletResponse ; 67 import javax.servlet.jsp.PageContext ; 68 69 78 public class CmsListDemo15b 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_COLUMN_ACTIVATE = "ca"; 91 92 93 public static final String LIST_COLUMN_DELETE = "cd"; 94 95 96 public static final String LIST_COLUMN_EMAIL = "cm"; 97 98 99 public static final String LIST_COLUMN_LASTLOGIN = "cl"; 100 101 102 public static final String LIST_COLUMN_LOGIN = "ci"; 103 104 105 public static final String LIST_COLUMN_NAME = "cn"; 106 107 108 public static final String LIST_DEFACTION_EDIT = "de"; 109 110 111 public static final String LIST_DETAIL_GROUPS = "dg"; 112 113 114 public static final String LIST_IACTION_REFRESH = "ir"; 115 116 117 public static final String LIST_ID = "lsu2"; 118 119 120 public static final String LIST_MACTION_ACTIVATE = "ma"; 121 122 123 private static final String PARAM_USERID = "userid"; 124 125 130 public CmsListDemo15b(CmsJspActionElement jsp) { 131 132 super(jsp, LIST_ID, Messages.get().container(Messages.GUI_USERS_LIST_NAME_0), null, null, null); 133 } 134 135 142 public CmsListDemo15b(PageContext context, HttpServletRequest req, HttpServletResponse res) { 143 144 this(new CmsJspActionElement(context, req, res)); 145 } 146 147 150 public String defaultActionHtmlStart() { 151 152 StringBuffer result = new StringBuffer (2048); 153 result.append(dialogContentStart(getParamTitle())); 154 return result.toString(); 155 } 156 157 160 public void executeListIndepActions() { 161 162 if (getParamListAction().equals(LIST_IACTION_REFRESH)) { 163 refreshList(); 164 } 165 super.executeListIndepActions(); 166 } 167 168 171 public void executeListMultiActions() throws CmsRuntimeException { 172 173 if (getParamListAction().equals(LIST_MACTION_ACTIVATE)) { 174 try { 176 Iterator itItems = getSelectedItems().iterator(); 177 while (itItems.hasNext()) { 178 CmsListItem listItem = (CmsListItem)itItems.next(); 179 String usrName = listItem.get(LIST_COLUMN_LOGIN).toString(); 180 CmsUser user = getCms().readUser(usrName); 181 if (!user.isEnabled()) { 182 user.setEnabled(true); 183 } 185 } 186 } catch (CmsException e) { 187 throw new CmsRuntimeException(Messages.get().container(Messages.ERR_ACTIVATE_SELECTED_USERS_0), e); 188 } 189 } else { 191 throwListUnsupportedActionException(); 192 } 193 } 194 195 198 public void executeListSingleActions() { 199 200 CmsListItem item = getSelectedItem(); 201 CmsUUID userId = new CmsUUID(item.getId()); 202 String userName = item.get(LIST_COLUMN_LOGIN).toString(); 203 204 Map params = new HashMap (); 205 params.put(PARAM_USERID, userId); 206 params.put(CmsDialog.PARAM_ACTION, CmsDialog.DIALOG_INITIAL); 208 if (getParamListAction().equals(LIST_DEFACTION_EDIT)) { 209 } else if (LIST_ACTION_DELETE.equals(getParamListAction())) { 212 getList().removeItem(userId.toString(), getLocale()); 216 } else if (getParamListAction().equals(LIST_ACTION_ACTIVATE)) { 217 try { 219 CmsUser user = getCms().readUser(userId); 220 user.setEnabled(true); 221 } catch (CmsException e) { 224 throw new CmsRuntimeException(Messages.get().container(Messages.ERR_ACTIVATE_USER_1, userName), e); 225 } 226 } else if (getParamListAction().equals(LIST_ACTION_DEACTIVATE)) { 227 try { 229 CmsUser user = getCms().readUser(userId); 230 user.setEnabled(false); 231 } catch (CmsException e) { 234 throw new CmsRuntimeException(Messages.get().container(Messages.ERR_DEACTIVATE_USER_1, userName), e); 235 } 236 } else { 237 throwListUnsupportedActionException(); 238 } 239 listSave(); 240 } 241 242 245 protected void fillDetails(String detailId) { 246 247 List users = getList().getAllContent(); 249 Iterator itUsers = users.iterator(); 250 while (itUsers.hasNext()) { 251 CmsListItem item = (CmsListItem)itUsers.next(); 252 String userName = item.get(LIST_COLUMN_LOGIN).toString(); 253 StringBuffer html = new StringBuffer (512); 254 try { 255 if (detailId.equals(LIST_DETAIL_GROUPS)) { 256 Iterator itGroups = getCms().getGroupsOfUser(userName).iterator(); 258 while (itGroups.hasNext()) { 259 html.append(((CmsGroup)itGroups.next()).getName()); 260 if (itGroups.hasNext()) { 261 html.append("<br>"); 262 } 263 html.append("\n"); 264 } 265 } else { 266 continue; 267 } 268 } catch (Exception e) { 269 } 271 item.set(detailId, html.toString()); 272 } 273 } 274 275 278 protected List getListItems() throws CmsException { 279 280 List ret = new ArrayList (); 281 List users = getCms().getUsers(CmsUser.USER_TYPE_SYSTEMUSER); 283 Iterator itUsers = users.iterator(); 284 while (itUsers.hasNext()) { 285 CmsUser user = (CmsUser)itUsers.next(); 286 CmsListItem item = getList().newItem(user.getId().toString()); 287 item.set(LIST_COLUMN_LOGIN, user.getName()); 288 item.set(LIST_COLUMN_NAME, user.getFullName()); 289 item.set(LIST_COLUMN_EMAIL, user.getEmail()); 290 item.set(LIST_COLUMN_LASTLOGIN, new Date (user.getLastlogin())); 291 ret.add(item); 292 } 293 return ret; 294 } 295 296 299 protected void initMessages() { 300 301 addMessages(Messages.get().getBundleName()); 303 addMessages(org.opencms.workplace.demos.list.Messages.get().getBundleName()); 304 addMessages(org.opencms.workplace.demos.Messages.get().getBundleName()); 305 super.initMessages(); 307 } 308 309 312 protected void setColumns(CmsListMetadata metadata) { 313 314 CmsListColumnDefinition actCol = new CmsListColumnDefinition(LIST_COLUMN_ACTIVATE); 316 actCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_ACTIVATE_0)); 317 actCol.setWidth("30"); 318 actCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER); 319 actCol.setListItemComparator(new CmsListItemActionIconComparator()); 320 CmsListDirectAction actAction = new CmsListDirectAction(LIST_ACTION_ACTIVATE) { 322 323 326 public boolean isVisible() { 327 328 String usrId = getItem().getId(); 329 try { 330 return !getCms().readUser(new CmsUUID(usrId)).isEnabled(); 331 } catch (CmsException e) { 332 return super.isVisible(); 333 } 334 } 335 }; 336 actAction.setName(Messages.get().container(Messages.GUI_USERS_LIST_ACTION_ACTIVATE_NAME_0)); 337 actAction.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_ACTION_ACTIVATE_HELP_0)); 338 actAction.setConfirmationMessage(Messages.get().container(Messages.GUI_USERS_LIST_ACTION_ACTIVATE_CONF_0)); 339 actAction.setIconPath(ICON_INACTIVE); 340 actCol.addDirectAction(actAction); 341 342 CmsListDirectAction deactAction = new CmsListDirectAction(LIST_ACTION_DEACTIVATE) { 344 345 348 public boolean isVisible() { 349 350 String usrId = getItem().getId(); 351 try { 352 return getCms().readUser(new CmsUUID(usrId)).isEnabled(); 353 } catch (CmsException e) { 354 return super.isVisible(); 355 } 356 } 357 }; 358 deactAction.setName(Messages.get().container(Messages.GUI_USERS_LIST_ACTION_DEACTIVATE_NAME_0)); 359 deactAction.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_ACTION_DEACTIVATE_HELP_0)); 360 deactAction.setConfirmationMessage(Messages.get().container(Messages.GUI_USERS_LIST_ACTION_DEACTIVATE_CONF_0)); 361 deactAction.setIconPath(ICON_ACTIVE); 362 actCol.addDirectAction(deactAction); 363 metadata.addColumn(actCol); 364 365 CmsListColumnDefinition deleteCol = new CmsListColumnDefinition(LIST_COLUMN_DELETE); 367 deleteCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_DELETE_0)); 368 deleteCol.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_COLS_DELETE_HELP_0)); 369 deleteCol.setWidth("20"); 370 deleteCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER); 371 deleteCol.setSorteable(false); 372 CmsListDirectAction deleteAction = new CmsListDirectAction(LIST_ACTION_DELETE); 374 deleteAction.setName(Messages.get().container(Messages.GUI_USERS_LIST_ACTION_DELETE_NAME_0)); 375 deleteAction.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_ACTION_DELETE_HELP_0)); 376 deleteAction.setConfirmationMessage(new CmsMessageContainer(null, "Do you want to delete the selected user?")); 377 deleteAction.setIconPath(ICON_DELETE); 378 deleteCol.addDirectAction(deleteAction); 379 metadata.addColumn(deleteCol); 380 381 CmsListColumnDefinition loginCol = new CmsListColumnDefinition(LIST_COLUMN_LOGIN); 383 loginCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_LOGIN_0)); 384 loginCol.setWidth("20%"); 385 loginCol.setSorteable(true); 386 CmsListDefaultAction defEditAction = new CmsListDefaultAction(LIST_DEFACTION_EDIT); 388 defEditAction.setName(Messages.get().container(Messages.GUI_USERS_LIST_DEFACTION_EDIT_NAME_0)); 389 defEditAction.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_DEFACTION_EDIT_HELP_0)); 390 loginCol.addDefaultAction(defEditAction); 391 metadata.addColumn(loginCol); 392 393 CmsListColumnDefinition nameCol = new CmsListColumnDefinition(LIST_COLUMN_NAME); 395 nameCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_USERNAME_0)); 396 nameCol.setWidth("30%"); 397 nameCol.setSorteable(true); 398 metadata.addColumn(nameCol); 399 400 CmsListColumnDefinition emailCol = new CmsListColumnDefinition(LIST_COLUMN_EMAIL); 402 emailCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_EMAIL_0)); 403 emailCol.setWidth("30%"); 404 emailCol.setSorteable(true); 405 metadata.addColumn(emailCol); 406 407 CmsListColumnDefinition lastLoginCol = new CmsListColumnDefinition(LIST_COLUMN_LASTLOGIN); 409 lastLoginCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_LASTLOGIN_0)); 410 lastLoginCol.setWidth("20%"); 411 lastLoginCol.setSorteable(true); 412 lastLoginCol.setFormatter(CmsListDateMacroFormatter.getDefaultDateFormatter()); 413 metadata.addColumn(lastLoginCol); 414 } 415 416 419 protected void setIndependentActions(CmsListMetadata metadata) { 420 421 CmsListItemDetails userGroupsDetails = new CmsListItemDetails(LIST_DETAIL_GROUPS); 423 userGroupsDetails.setAtColumn(LIST_COLUMN_LOGIN); 424 userGroupsDetails.setVisible(false); 425 userGroupsDetails.setShowActionName(Messages.get().container(Messages.GUI_USERS_DETAIL_SHOW_GROUPS_NAME_0)); 426 userGroupsDetails.setShowActionHelpText(Messages.get().container(Messages.GUI_USERS_DETAIL_SHOW_GROUPS_HELP_0)); 427 userGroupsDetails.setHideActionName(Messages.get().container(Messages.GUI_USERS_DETAIL_HIDE_GROUPS_NAME_0)); 428 userGroupsDetails.setHideActionHelpText(Messages.get().container(Messages.GUI_USERS_DETAIL_HIDE_GROUPS_HELP_0)); 429 userGroupsDetails.setName(Messages.get().container(Messages.GUI_USERS_DETAIL_GROUPS_NAME_0)); 430 userGroupsDetails.setFormatter(new CmsListItemDetailsFormatter(Messages.get().container( 431 Messages.GUI_USERS_DETAIL_GROUPS_NAME_0))); 432 metadata.addItemDetails(userGroupsDetails); 433 434 CmsListIndependentAction refreshAction = new CmsListIndependentAction(LIST_IACTION_REFRESH); 436 refreshAction.setName(new CmsMessageContainer(null, "Refresh")); 437 refreshAction.setHelpText(new CmsMessageContainer(null, "Click here to refresh the list")); 438 refreshAction.setIconPath(ICON_MULTI_ADD); 439 metadata.addIndependentAction(refreshAction); 440 } 441 442 445 protected void setMultiActions(CmsListMetadata metadata) { 446 447 CmsListMultiAction activateUser = new CmsListMultiAction(LIST_MACTION_ACTIVATE); 449 activateUser.setName(Messages.get().container(Messages.GUI_USERS_LIST_MACTION_ACTIVATE_NAME_0)); 450 activateUser.setHelpText(Messages.get().container(Messages.GUI_USERS_LIST_MACTION_ACTIVATE_HELP_0)); 451 activateUser.setConfirmationMessage(Messages.get().container(Messages.GUI_USERS_LIST_MACTION_ACTIVATE_CONF_0)); 452 activateUser.setIconPath(ICON_MULTI_ACTIVATE); 453 metadata.addMultiAction(activateUser); 454 455 CmsListSearchAction searchAction = new CmsListSearchAction(metadata.getColumnDefinition(LIST_COLUMN_LOGIN)); 457 searchAction.addColumn(metadata.getColumnDefinition(LIST_COLUMN_EMAIL)); 458 metadata.setSearchAction(searchAction); 459 } 460 461 } | Popular Tags |