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.CmsListDefaultAction; 48 import org.opencms.workplace.list.CmsListDirectAction; 49 import org.opencms.workplace.list.CmsListItem; 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.CmsListOrderEnum; 54 55 import java.io.IOException ; 56 import java.util.ArrayList ; 57 import java.util.HashSet ; 58 import java.util.Iterator ; 59 import java.util.List ; 60 import java.util.Set ; 61 62 import javax.servlet.ServletException ; 63 import javax.servlet.http.HttpServletRequest ; 64 import javax.servlet.http.HttpServletResponse ; 65 import javax.servlet.jsp.PageContext ; 66 67 76 public class CmsGroupTransferList extends A_CmsListDialog { 77 78 79 public static final String LIST_ACTION_TRANSFER = "at"; 80 81 82 public static final String LIST_COLUMN_DESCRIPTION = "cc"; 83 84 85 public static final String LIST_COLUMN_NAME = "cn"; 86 87 88 public static final String LIST_COLUMN_PARENT = "cp"; 89 90 91 public static final String LIST_COLUMN_TRANSFER = "ct"; 92 93 94 public static final String LIST_COLUMN_USERS = "cu"; 95 96 97 public static final String LIST_DEFACTION_TRANSFER = "dt"; 98 99 100 public static final String LIST_DETAIL_CHILDS = "dc"; 101 102 103 public static final String LIST_DETAIL_USERS = "du"; 104 105 106 public static final String LIST_ID = "lgt"; 107 108 109 private String m_groupName; 110 111 112 private String m_paramGroupid; 113 114 119 public CmsGroupTransferList(CmsJspActionElement jsp) { 120 121 this(LIST_ID, jsp); 122 } 123 124 131 public CmsGroupTransferList(PageContext context, HttpServletRequest req, HttpServletResponse res) { 132 133 this(new CmsJspActionElement(context, req, res)); 134 } 135 136 142 protected CmsGroupTransferList(String listId, CmsJspActionElement jsp) { 143 144 super( 145 jsp, 146 listId, 147 Messages.get().container(Messages.GUI_GROUPS_TRANSFER_LIST_NAME_0), 148 LIST_COLUMN_NAME, 149 CmsListOrderEnum.ORDER_ASCENDING, 150 LIST_COLUMN_NAME); 151 } 152 153 161 public void executeListMultiActions() throws CmsRuntimeException { 162 163 throwListUnsupportedActionException(); 164 } 165 166 169 public void executeListSingleActions() throws IOException , ServletException , CmsRuntimeException { 170 171 if (getParamListAction().equals(LIST_DEFACTION_TRANSFER) || getParamListAction().equals(LIST_ACTION_TRANSFER)) { 172 try { 173 getCms().deleteGroup(new CmsUUID(getParamGroupid()), new CmsUUID(getSelectedItem().getId())); 174 CmsRequestUtil.forwardRequest(getParamCloseLink(), getJsp().getRequest(), getJsp().getResponse()); 175 setForwarded(true); 176 } catch (CmsException e) { 177 throw new CmsRuntimeException(Messages.get().container( 178 Messages.ERR_TRANSFER_GROUP_1, 179 getSelectedItem().get(LIST_COLUMN_NAME)), e); 180 } 181 } else { 182 throwListUnsupportedActionException(); 183 } 184 listSave(); 185 } 186 187 192 public String getGroupName() { 193 194 return m_groupName; 195 } 196 197 202 public String getParamGroupid() { 203 204 return m_paramGroupid; 205 } 206 207 212 public void setParamGroupid(String groupId) { 213 214 m_paramGroupid = groupId; 215 } 216 217 220 protected String customHtmlStart() { 221 222 StringBuffer result = new StringBuffer (2048); 223 result.append(dialogBlockStart(Messages.get().container(Messages.GUI_GROUPS_TRANSFER_NOTICE_0).key(getLocale()))); 224 result.append("\n"); 225 if (getCurrentToolPath().indexOf("/edit/") < 0) { 226 result.append(key(Messages.GUI_GROUP_DEPENDENCIES_SELECTED_GROUPS_0)); 227 result.append(":<br>\n"); 228 List users = CmsStringUtil.splitAsList(getGroupName(), CmsHtmlList.ITEM_SEPARATOR, true); 229 result.append("<ul>\n"); 230 Iterator it = users.iterator(); 231 while (it.hasNext()) { 232 String name = (String )it.next(); 233 result.append("<li>"); 234 result.append(name); 235 result.append("</li>\n"); 236 } 237 result.append("</ul>\n"); 238 } 239 result.append(key(Messages.GUI_GROUPS_TRANSFER_NOTICE_TEXT_0)); 240 result.append(dialogBlockEnd()); 241 return result.toString(); 242 } 243 244 247 protected void fillDetails(String detailId) { 248 249 List groups = getList().getAllContent(); 251 Iterator itGroups = groups.iterator(); 252 while (itGroups.hasNext()) { 253 CmsListItem item = (CmsListItem)itGroups.next(); 254 String groupName = item.get(LIST_COLUMN_NAME).toString(); 255 StringBuffer html = new StringBuffer (512); 256 try { 257 if (detailId.equals(LIST_DETAIL_USERS)) { 258 Iterator itUsers = getCms().getUsersOfGroup(groupName).iterator(); 260 while (itUsers.hasNext()) { 261 html.append(((CmsUser)itUsers.next()).getFullName()); 262 if (itUsers.hasNext()) { 263 html.append("<br>"); 264 } 265 html.append("\n"); 266 } 267 } else if (detailId.equals(LIST_DETAIL_CHILDS)) { 268 Iterator itChilds = getCms().getChild(groupName).iterator(); 270 while (itChilds.hasNext()) { 271 html.append(((CmsGroup)itChilds.next()).getName()); 272 if (itChilds.hasNext()) { 273 html.append("<br>"); 274 } 275 html.append("\n"); 276 } 277 } else { 278 continue; 279 } 280 } catch (Exception e) { 281 } 283 item.set(detailId, html.toString()); 284 } 285 } 286 287 294 protected List getGroups() throws CmsException { 295 296 return CmsPrincipal.filterCore(getCms().getGroups()); 297 } 298 299 302 protected List getListItems() throws CmsException { 303 304 List ret = new ArrayList (); 305 List groups = getGroups(); 307 Set selGroups = new HashSet (CmsStringUtil.splitAsList(getParamGroupid(), CmsHtmlList.ITEM_SEPARATOR, true)); 308 Iterator itGroups = groups.iterator(); 309 while (itGroups.hasNext()) { 310 CmsGroup group = (CmsGroup)itGroups.next(); 311 if (selGroups.contains(group.getId().toString())) { 312 continue; 313 } 314 CmsListItem item = getList().newItem(group.getId().toString()); 315 item.set(LIST_COLUMN_NAME, group.getName()); 316 item.set(LIST_COLUMN_DESCRIPTION, group.getDescription()); 317 try { 318 item.set(LIST_COLUMN_PARENT, getCms().readGroup(group.getParentId()).getName()); 319 } catch (Exception e) { 320 } 322 ret.add(item); 323 } 324 325 return ret; 326 } 327 328 331 protected void initMessages() { 332 333 addMessages(Messages.get().getBundleName()); 335 super.initMessages(); 337 } 338 339 342 protected void setColumns(CmsListMetadata metadata) { 343 344 CmsListColumnDefinition transferCol = new CmsListColumnDefinition(LIST_COLUMN_TRANSFER); 346 transferCol.setName(Messages.get().container(Messages.GUI_GROUPS_TRANSFER_LIST_COLS_TRANSFER_0)); 347 transferCol.setHelpText(Messages.get().container(Messages.GUI_GROUPS_TRANSFER_LIST_COLS_TRANSFER_HELP_0)); 348 transferCol.setWidth("20"); 349 transferCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER); 350 transferCol.setSorteable(false); 351 352 setTransferAction(transferCol); 354 metadata.addColumn(transferCol); 356 357 CmsListColumnDefinition nameCol = new CmsListColumnDefinition(LIST_COLUMN_NAME); 359 nameCol.setName(Messages.get().container(Messages.GUI_GROUPS_LIST_COLS_NAME_0)); 360 nameCol.setWidth("20%"); 361 362 CmsListDefaultAction defTransferAction = new CmsListDefaultAction(LIST_DEFACTION_TRANSFER); 364 defTransferAction.setName(Messages.get().container(Messages.GUI_GROUPS_TRANSFER_LIST_DEFACTION_TRANSFER_NAME_0)); 365 defTransferAction.setHelpText(Messages.get().container( 366 Messages.GUI_GROUPS_TRANSFER_LIST_DEFACTION_TRANSFER_HELP_0)); 367 nameCol.addDefaultAction(defTransferAction); 368 369 metadata.addColumn(nameCol); 371 372 CmsListColumnDefinition descriptionCol = new CmsListColumnDefinition(LIST_COLUMN_DESCRIPTION); 374 descriptionCol.setName(Messages.get().container(Messages.GUI_GROUPS_LIST_COLS_DESCRIPTION_0)); 375 descriptionCol.setWidth("60%"); 376 metadata.addColumn(descriptionCol); 377 378 CmsListColumnDefinition parentCol = new CmsListColumnDefinition(LIST_COLUMN_PARENT); 380 parentCol.setName(Messages.get().container(Messages.GUI_GROUPS_LIST_COLS_PARENT_0)); 381 parentCol.setWidth("20%"); 382 metadata.addColumn(parentCol); 383 } 384 385 390 protected void setTransferAction(CmsListColumnDefinition transferCol) { 391 392 CmsListDirectAction transferAction = new CmsListDirectAction(LIST_ACTION_TRANSFER); 393 transferAction.setName(Messages.get().container(Messages.GUI_GROUPS_TRANSFER_LIST_ACTION_TRANSFER_NAME_0)); 394 transferAction.setHelpText(Messages.get().container(Messages.GUI_GROUPS_TRANSFER_LIST_ACTION_TRANSFER_HELP_0)); 395 transferAction.setIconPath(A_CmsUsersList.PATH_BUTTONS + "group.png"); 396 transferCol.addDirectAction(transferAction); 397 } 398 399 402 protected void setIndependentActions(CmsListMetadata metadata) { 403 404 CmsListItemDetails usersDetails = new CmsListItemDetails(LIST_DETAIL_USERS); 406 usersDetails.setAtColumn(LIST_COLUMN_NAME); 407 usersDetails.setVisible(false); 408 usersDetails.setShowActionName(Messages.get().container(Messages.GUI_GROUPS_DETAIL_SHOW_USERS_NAME_0)); 409 usersDetails.setShowActionHelpText(Messages.get().container(Messages.GUI_GROUPS_DETAIL_SHOW_USERS_HELP_0)); 410 usersDetails.setHideActionName(Messages.get().container(Messages.GUI_GROUPS_DETAIL_HIDE_USERS_NAME_0)); 411 usersDetails.setHideActionHelpText(Messages.get().container(Messages.GUI_GROUPS_DETAIL_HIDE_USERS_HELP_0)); 412 usersDetails.setName(Messages.get().container(Messages.GUI_GROUPS_DETAIL_USERS_NAME_0)); 413 usersDetails.setFormatter(new CmsListItemDetailsFormatter(Messages.get().container( 414 Messages.GUI_GROUPS_DETAIL_USERS_NAME_0))); 415 metadata.addItemDetails(usersDetails); 416 417 CmsListItemDetails childDetails = new CmsListItemDetails(LIST_DETAIL_CHILDS); 419 childDetails.setAtColumn(LIST_COLUMN_NAME); 420 childDetails.setVisible(false); 421 childDetails.setShowActionName(Messages.get().container(Messages.GUI_GROUPS_DETAIL_SHOW_CHILDS_NAME_0)); 422 childDetails.setShowActionHelpText(Messages.get().container(Messages.GUI_GROUPS_DETAIL_SHOW_CHILDS_HELP_0)); 423 childDetails.setHideActionName(Messages.get().container(Messages.GUI_GROUPS_DETAIL_HIDE_CHILDS_NAME_0)); 424 childDetails.setHideActionHelpText(Messages.get().container(Messages.GUI_GROUPS_DETAIL_HIDE_CHILDS_HELP_0)); 425 childDetails.setName(Messages.get().container(Messages.GUI_GROUPS_DETAIL_CHILDS_NAME_0)); 426 childDetails.setFormatter(new CmsListItemDetailsFormatter(Messages.get().container( 427 Messages.GUI_GROUPS_DETAIL_CHILDS_NAME_0))); 428 metadata.addItemDetails(childDetails); 429 } 430 431 434 protected void setMultiActions(CmsListMetadata metadata) { 435 436 } 438 439 442 protected void validateParamaters() throws Exception { 443 444 m_groupName = ""; 446 Iterator itGroups = CmsStringUtil.splitAsList(getParamGroupid(), CmsHtmlList.ITEM_SEPARATOR, true).iterator(); 447 while (itGroups.hasNext()) { 448 CmsUUID id = new CmsUUID(itGroups.next().toString()); 449 m_groupName += getCms().readGroup(id).getName(); 450 if (itGroups.hasNext()) { 451 m_groupName += CmsHtmlList.ITEM_SEPARATOR; 452 } 453 } 454 } 455 } | Popular Tags |