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.jsp.CmsJspActionElement; 37 import org.opencms.main.CmsException; 38 import org.opencms.main.CmsRuntimeException; 39 import org.opencms.security.CmsPrincipal; 40 import org.opencms.util.CmsRequestUtil; 41 import org.opencms.util.CmsStringUtil; 42 import org.opencms.util.CmsUUID; 43 import org.opencms.workplace.list.A_CmsListDialog; 44 import org.opencms.workplace.list.CmsHtmlList; 45 import org.opencms.workplace.list.CmsListColumnAlignEnum; 46 import org.opencms.workplace.list.CmsListColumnDefinition; 47 import org.opencms.workplace.list.CmsListDateMacroFormatter; 48 import org.opencms.workplace.list.CmsListDefaultAction; 49 import org.opencms.workplace.list.CmsListDirectAction; 50 import org.opencms.workplace.list.CmsListItem; 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.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.HashSet ; 61 import java.util.Iterator ; 62 import java.util.List ; 63 import java.util.Set ; 64 65 import javax.servlet.ServletException ; 66 import javax.servlet.http.HttpServletRequest ; 67 import javax.servlet.http.HttpServletResponse ; 68 import javax.servlet.jsp.PageContext ; 69 70 79 public class CmsUserTransferList extends A_CmsListDialog { 80 81 82 public static final String LIST_ACTION_TRANSFER = "at"; 83 84 85 public static final String LIST_COLUMN_EMAIL = "cm"; 86 87 88 public static final String LIST_COLUMN_LASTLOGIN = "cl"; 89 90 91 public static final String LIST_COLUMN_LOGIN = "ci"; 92 93 94 public static final String LIST_COLUMN_NAME = "cn"; 95 96 97 public static final String LIST_COLUMN_TRANSFER = "ct"; 98 99 100 public static final String LIST_DEFACTION_TRANSFER = "dt"; 101 102 103 public static final String LIST_DETAIL_ADDRESS = "da"; 104 105 106 public static final String LIST_DETAIL_GROUPS = "dg"; 107 108 109 public static final String LIST_ID = "lut"; 110 111 112 public static final String PATH_BUTTONS = "tools/accounts/buttons/"; 113 114 115 private String m_paramUserid; 116 117 118 private String m_userName; 119 120 125 public CmsUserTransferList(CmsJspActionElement jsp) { 126 127 this(LIST_ID, jsp); 128 } 129 130 136 protected CmsUserTransferList(String listId, CmsJspActionElement jsp) { 137 138 super( 139 jsp, 140 listId, 141 Messages.get().container(Messages.GUI_USERS_TRANSFER_LIST_NAME_0), 142 LIST_COLUMN_NAME, 143 CmsListOrderEnum.ORDER_ASCENDING, 144 null); 145 } 146 147 154 public CmsUserTransferList(PageContext context, HttpServletRequest req, HttpServletResponse res) { 155 156 this(new CmsJspActionElement(context, req, res)); 157 } 158 159 162 protected String customHtmlStart() { 163 164 StringBuffer result = new StringBuffer (2048); 165 result.append(dialogBlockStart(Messages.get().container(Messages.GUI_USERS_TRANSFER_NOTICE_0).key(getLocale()))); 166 result.append("\n"); 167 if (getCurrentToolPath().indexOf("/edit/") < 0) { 168 result.append(key(Messages.GUI_USER_DEPENDENCIES_SELECTED_USERS_0)); 169 result.append(":<br>\n"); 170 List users = CmsStringUtil.splitAsList(getUserName(), CmsHtmlList.ITEM_SEPARATOR, true); 171 result.append("<ul>\n"); 172 Iterator it = users.iterator(); 173 while (it.hasNext()) { 174 String name = (String )it.next(); 175 result.append("<li>"); 176 result.append(name); 177 result.append("</li>\n"); 178 } 179 result.append("</ul>\n"); 180 } 181 result.append(key(Messages.GUI_USERS_TRANSFER_NOTICE_TEXT_0)); 182 result.append(dialogBlockEnd()); 183 return result.toString(); 184 } 185 186 189 public void executeListMultiActions() throws CmsRuntimeException { 190 191 throwListUnsupportedActionException(); 192 } 193 194 197 public void executeListSingleActions() throws IOException , ServletException { 198 199 if (getParamListAction().equals(LIST_ACTION_TRANSFER) || getParamListAction().equals(LIST_DEFACTION_TRANSFER)) { 200 try { 202 Iterator it = CmsStringUtil.splitAsList(getParamUserid(), CmsHtmlList.ITEM_SEPARATOR, true).iterator(); 203 while (it.hasNext()) { 204 CmsUUID id = new CmsUUID((String )it.next()); 205 getCms().deleteUser(id, new CmsUUID(getSelectedItem().getId())); 206 } 207 CmsRequestUtil.forwardRequest(getParamCloseLink(), getJsp().getRequest(), getJsp().getResponse()); 208 setForwarded(true); 209 } catch (CmsException e) { 210 throw new CmsRuntimeException(Messages.get().container( 211 Messages.ERR_TRANSFER_USER_1, 212 getSelectedItem().get(LIST_COLUMN_NAME)), e); 213 } 214 } else { 215 throwListUnsupportedActionException(); 216 } 217 listSave(); 218 } 219 220 225 public String getParamUserid() { 226 227 return m_paramUserid; 228 } 229 230 235 public String getUserName() { 236 237 return m_userName; 238 } 239 240 245 public void setParamUserid(String userId) { 246 247 m_paramUserid = userId; 248 } 249 250 253 protected void fillDetails(String detailId) { 254 255 List users = getList().getAllContent(); 257 Iterator itUsers = users.iterator(); 258 while (itUsers.hasNext()) { 259 CmsListItem item = (CmsListItem)itUsers.next(); 260 String userName = item.get(LIST_COLUMN_LOGIN).toString(); 261 StringBuffer html = new StringBuffer (512); 262 try { 263 if (detailId.equals(LIST_DETAIL_ADDRESS)) { 264 CmsUser user = getCms().readUser(userName); 265 html.append(user.getAddress()); 267 if (user.getCity() != null) { 268 html.append("<br>"); 269 if (user.getZipcode() != null) { 270 html.append(user.getZipcode()); 271 html.append(" "); 272 } 273 html.append(user.getCity()); 274 } 275 if (user.getCountry() != null) { 276 html.append("<br>"); 277 html.append(user.getCountry()); 278 } 279 } else if (detailId.equals(LIST_DETAIL_GROUPS)) { 280 Iterator itGroups = getCms().getGroupsOfUser(userName).iterator(); 282 while (itGroups.hasNext()) { 283 html.append(((CmsGroup)itGroups.next()).getName()); 284 if (itGroups.hasNext()) { 285 html.append("<br>"); 286 } 287 html.append("\n"); 288 } 289 } else { 290 continue; 291 } 292 } catch (Exception e) { 293 } 295 item.set(detailId, html.toString()); 296 } 297 } 298 299 302 protected List getListItems() throws CmsException { 303 304 List ret = new ArrayList (); 305 List users = getUsers(); 307 Set selUsers = new HashSet (CmsStringUtil.splitAsList(getParamUserid(), CmsHtmlList.ITEM_SEPARATOR, true)); 308 Iterator itUsers = users.iterator(); 309 while (itUsers.hasNext()) { 310 CmsUser user = (CmsUser)itUsers.next(); 311 if (selUsers.contains(user.getId().toString())) { 312 continue; 313 } 314 CmsListItem item = getList().newItem(user.getId().toString()); 315 item.set(LIST_COLUMN_LOGIN, user.getName()); 316 item.set(LIST_COLUMN_NAME, user.getFullName()); 317 item.set(LIST_COLUMN_EMAIL, user.getEmail()); 318 item.set(LIST_COLUMN_LASTLOGIN, new Date (user.getLastlogin())); 319 ret.add(item); 320 } 321 return ret; 322 } 323 324 331 protected List getUsers() throws CmsException { 332 333 return CmsPrincipal.filterCore(getCms().getUsers()); 334 } 335 336 339 protected void initMessages() { 340 341 addMessages(Messages.get().getBundleName()); 343 super.initMessages(); 345 } 346 347 350 protected void setColumns(CmsListMetadata metadata) { 351 352 CmsListColumnDefinition transferCol = new CmsListColumnDefinition(LIST_COLUMN_TRANSFER); 354 transferCol.setName(Messages.get().container(Messages.GUI_USERS_TRANSFER_LIST_COLS_TRANSFER_0)); 355 transferCol.setHelpText(Messages.get().container(Messages.GUI_USERS_TRANSFER_LIST_COLS_TRANSFER_HELP_0)); 356 transferCol.setWidth("20"); 357 transferCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER); 358 transferCol.setSorteable(false); 359 360 setTransferAction(transferCol); 362 363 metadata.addColumn(transferCol); 365 366 CmsListColumnDefinition loginCol = new CmsListColumnDefinition(LIST_COLUMN_LOGIN); 368 loginCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_LOGIN_0)); 369 loginCol.setWidth("20%"); 370 371 CmsListDefaultAction defTransferAction = new CmsListDefaultAction(LIST_DEFACTION_TRANSFER); 373 defTransferAction.setName(Messages.get().container(Messages.GUI_USERS_TRANSFER_LIST_DEFACTION_TRANSFER_NAME_0)); 374 defTransferAction.setHelpText(Messages.get().container( 375 Messages.GUI_USERS_TRANSFER_LIST_DEFACTION_TRANSFER_HELP_0)); 376 loginCol.addDefaultAction(defTransferAction); 377 378 metadata.addColumn(loginCol); 380 381 CmsListColumnDefinition nameCol = new CmsListColumnDefinition(LIST_COLUMN_NAME); 383 nameCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_USERNAME_0)); 384 nameCol.setWidth("30%"); 385 metadata.addColumn(nameCol); 386 387 CmsListColumnDefinition emailCol = new CmsListColumnDefinition(LIST_COLUMN_EMAIL); 389 emailCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_EMAIL_0)); 390 emailCol.setWidth("30%"); 391 metadata.addColumn(emailCol); 392 393 CmsListColumnDefinition lastLoginCol = new CmsListColumnDefinition(LIST_COLUMN_LASTLOGIN); 395 lastLoginCol.setName(Messages.get().container(Messages.GUI_USERS_LIST_COLS_LASTLOGIN_0)); 396 lastLoginCol.setWidth("20%"); 397 lastLoginCol.setFormatter(CmsListDateMacroFormatter.getDefaultDateFormatter()); 398 metadata.addColumn(lastLoginCol); 399 } 400 401 406 protected void setTransferAction(CmsListColumnDefinition transferCol) { 407 408 CmsListDirectAction transferAction = new CmsListDirectAction(LIST_ACTION_TRANSFER); 409 transferAction.setName(Messages.get().container(Messages.GUI_USERS_TRANSFER_LIST_ACTION_TRANSFER_NAME_0)); 410 transferAction.setHelpText(Messages.get().container(Messages.GUI_USERS_TRANSFER_LIST_ACTION_TRANSFER_HELP_0)); 411 transferAction.setIconPath(PATH_BUTTONS + "user.png"); 412 transferCol.addDirectAction(transferAction); 413 } 414 415 418 protected void setIndependentActions(CmsListMetadata metadata) { 419 420 CmsListItemDetails userAddressDetails = new CmsListItemDetails(LIST_DETAIL_ADDRESS); 422 userAddressDetails.setAtColumn(LIST_COLUMN_LOGIN); 423 userAddressDetails.setVisible(false); 424 userAddressDetails.setShowActionName(Messages.get().container(Messages.GUI_USERS_DETAIL_SHOW_ADDRESS_NAME_0)); 425 userAddressDetails.setShowActionHelpText(Messages.get().container(Messages.GUI_USERS_DETAIL_SHOW_ADDRESS_HELP_0)); 426 userAddressDetails.setHideActionName(Messages.get().container(Messages.GUI_USERS_DETAIL_HIDE_ADDRESS_NAME_0)); 427 userAddressDetails.setHideActionHelpText(Messages.get().container(Messages.GUI_USERS_DETAIL_HIDE_ADDRESS_HELP_0)); 428 userAddressDetails.setName(Messages.get().container(Messages.GUI_USERS_DETAIL_ADDRESS_NAME_0)); 429 userAddressDetails.setFormatter(new CmsListItemDetailsFormatter(Messages.get().container( 430 Messages.GUI_USERS_DETAIL_ADDRESS_NAME_0))); 431 metadata.addItemDetails(userAddressDetails); 432 433 CmsListItemDetails userGroupsDetails = new CmsListItemDetails(LIST_DETAIL_GROUPS); 435 userGroupsDetails.setAtColumn(LIST_COLUMN_LOGIN); 436 userGroupsDetails.setVisible(false); 437 userGroupsDetails.setShowActionName(Messages.get().container(Messages.GUI_USERS_DETAIL_SHOW_GROUPS_NAME_0)); 438 userGroupsDetails.setShowActionHelpText(Messages.get().container(Messages.GUI_USERS_DETAIL_SHOW_GROUPS_HELP_0)); 439 userGroupsDetails.setHideActionName(Messages.get().container(Messages.GUI_USERS_DETAIL_HIDE_GROUPS_NAME_0)); 440 userGroupsDetails.setHideActionHelpText(Messages.get().container(Messages.GUI_USERS_DETAIL_HIDE_GROUPS_HELP_0)); 441 userGroupsDetails.setName(Messages.get().container(Messages.GUI_USERS_DETAIL_GROUPS_NAME_0)); 442 userGroupsDetails.setFormatter(new CmsListItemDetailsFormatter(Messages.get().container( 443 Messages.GUI_USERS_DETAIL_GROUPS_NAME_0))); 444 metadata.addItemDetails(userGroupsDetails); 445 446 CmsListSearchAction searchAction = new CmsListSearchAction(metadata.getColumnDefinition(LIST_COLUMN_LOGIN)); 448 searchAction.addColumn(metadata.getColumnDefinition(LIST_COLUMN_NAME)); 449 metadata.setSearchAction(searchAction); 450 } 451 452 455 protected void setMultiActions(CmsListMetadata metadata) { 456 457 } 459 460 463 protected void validateParamaters() throws Exception { 464 465 m_userName = ""; 466 Iterator itUsers = CmsStringUtil.splitAsList(getParamUserid(), CmsHtmlList.ITEM_SEPARATOR, true).iterator(); 467 while (itUsers.hasNext()) { 468 CmsUUID id = new CmsUUID(itUsers.next().toString()); 469 m_userName += getCms().readUser(id).getName(); 470 if (itUsers.hasNext()) { 471 m_userName += CmsHtmlList.ITEM_SEPARATOR; 472 } 473 } 474 } 475 } | Popular Tags |