1 31 32 package org.opencms.workplace.tools.accounts; 33 34 import org.opencms.file.CmsResource; 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.security.CmsAccessControlEntry; 41 import org.opencms.util.CmsIdentifiableObjectContainer; 42 import org.opencms.util.CmsStringUtil; 43 import org.opencms.util.CmsUUID; 44 import org.opencms.workplace.CmsDialog; 45 import org.opencms.workplace.CmsWorkplaceSettings; 46 import org.opencms.workplace.list.A_CmsListDialog; 47 import org.opencms.workplace.list.CmsHtmlList; 48 import org.opencms.workplace.list.CmsListColumnAlignEnum; 49 import org.opencms.workplace.list.CmsListColumnDefinition; 50 import org.opencms.workplace.list.CmsListDirectAction; 51 import org.opencms.workplace.list.CmsListItem; 52 import org.opencms.workplace.list.CmsListItemActionIconComparator; 53 import org.opencms.workplace.list.CmsListMetadata; 54 import org.opencms.workplace.list.CmsListOrderEnum; 55 56 import java.io.IOException ; 57 import java.util.HashMap ; 58 import java.util.Iterator ; 59 import java.util.List ; 60 import java.util.Map ; 61 62 import javax.servlet.ServletException ; 63 import javax.servlet.http.HttpServletRequest ; 64 import javax.servlet.http.HttpServletResponse ; 65 import javax.servlet.jsp.JspException ; 66 import javax.servlet.jsp.PageContext ; 67 68 79 public class CmsUserDependenciesList extends A_CmsListDialog { 80 81 82 public static final int ACTION_DELETE = 121; 83 84 85 public static final int ACTION_TRANSFER = 122; 86 87 88 public static final String DELETE_ACTION = "delete"; 89 90 91 public static final String LIST_ACTION_ICON = "ai"; 92 93 94 public static final String LIST_COLUMN_CREATED = "cc"; 95 96 97 public static final String LIST_COLUMN_ICON = "ci"; 98 99 100 public static final String LIST_COLUMN_LASTMODIFIED = "cl"; 101 102 103 public static final String LIST_COLUMN_NAME = "cn"; 104 105 106 public static final String LIST_COLUMN_TYPE = "ct"; 107 108 109 public static final String LIST_COLUMN_PERMISSIONS = "cp"; 110 111 112 public static final String LIST_ID = "lud"; 113 114 115 public static final String PARAM_USERID = "userid"; 116 117 118 public static final String PATH_BUTTONS = "tools/accounts/buttons/"; 119 120 121 public static final String TRANSFER_ACTION = "transfer"; 122 123 124 private String m_paramUserid; 125 126 127 private String m_userName; 128 129 134 public CmsUserDependenciesList(CmsJspActionElement jsp) { 135 136 this(LIST_ID, jsp); 137 } 138 139 146 public CmsUserDependenciesList(PageContext context, HttpServletRequest req, HttpServletResponse res) { 147 148 this(new CmsJspActionElement(context, req, res)); 149 } 150 151 157 protected CmsUserDependenciesList(String listId, CmsJspActionElement jsp) { 158 159 super( 160 jsp, 161 listId, 162 Messages.get().container(Messages.GUI_USER_DEPENDENCIES_LIST_NAME_0), 163 LIST_COLUMN_NAME, 164 CmsListOrderEnum.ORDER_ASCENDING, 165 LIST_COLUMN_NAME); 166 } 167 168 171 public void actionDialog() throws JspException , ServletException , IOException { 172 173 switch (getAction()) { 174 case ACTION_DELETE: 175 Iterator it = CmsStringUtil.splitAsList(getUserName(), CmsHtmlList.ITEM_SEPARATOR, true).iterator(); 176 while (it.hasNext()) { 177 String name = (String )it.next(); 178 try { 179 getCms().deleteUser(name); 180 } catch (CmsException e) { 181 throw new CmsRuntimeException(e.getMessageContainer(), e); 182 } 183 } 184 setAction(ACTION_CANCEL); 185 actionCloseDialog(); 186 break; 187 case ACTION_TRANSFER: 188 Map params = new HashMap (); 189 params.put(CmsDialog.PARAM_ACTION, CmsDialog.DIALOG_INITIAL); 191 params.put(PARAM_USERID, getParamUserid()); 193 getToolManager().jspForwardPage( 194 this, 195 getJsp().getRequestContext().getFolderUri() + "user_transfer.jsp", 196 params); 197 break; 198 199 default: 200 super.actionDialog(); 201 } 202 } 203 204 207 public String defaultActionHtmlContent() { 208 209 if (getList().getTotalSize() > 0) { 210 return super.defaultActionHtmlContent(); 211 } 212 return ""; 213 } 214 215 218 public void executeListMultiActions() { 219 220 throwListUnsupportedActionException(); 221 } 222 223 226 public void executeListSingleActions() { 227 228 throwListUnsupportedActionException(); 229 } 230 231 236 public String getParamUserid() { 237 238 return m_paramUserid; 239 } 240 241 246 public String getUserName() { 247 248 return m_userName; 249 } 250 251 256 public void setParamUserid(String userId) { 257 258 m_paramUserid = userId; 259 } 260 261 264 protected String customHtmlEnd() { 265 266 StringBuffer result = new StringBuffer (512); 267 result.append(super.customHtmlEnd()); 268 result.append("<form name='actions' method='post' action='"); 269 result.append(getDialogRealUri()); 270 result.append("' class='nomargin' onsubmit=\"return submitAction('ok', null, 'actions');\">\n"); 271 result.append(allParamsAsHidden()); 272 result.append(dialogButtonRow(HTML_START)); 273 result.append("<input name='"); 274 result.append(DELETE_ACTION); 275 result.append("' type='button' value='"); 276 result.append(Messages.get().container(Messages.GUI_DEPENDENCIES_BUTTON_DELETE_0).key(getLocale())); 277 result.append("' onclick=\"submitAction('"); 278 result.append(DELETE_ACTION); 279 result.append("', form);\" class='dialogbutton'>\n"); 280 if (getList().getTotalSize() > 0) { 281 result.append("<input name='"); 282 result.append(TRANSFER_ACTION); 283 result.append("' type='button' value='"); 284 result.append(Messages.get().container(Messages.GUI_DEPENDENCIES_BUTTON_TRANSFER_0).key(getLocale())); 285 result.append("' onclick=\"submitAction('"); 286 result.append(TRANSFER_ACTION); 287 result.append("', form);\" class='dialogbutton'>\n"); 288 } 289 dialogButtonsHtml(result, BUTTON_CANCEL, ""); 290 result.append(dialogButtonRow(HTML_END)); 291 result.append("</form>\n"); 292 return result.toString(); 293 } 294 295 298 protected String customHtmlStart() { 299 300 StringBuffer result = new StringBuffer (512); 301 result.append(dialogBlockStart(Messages.get().container(Messages.GUI_USER_DEPENDENCIES_NOTICE_0).key( 302 getLocale()))); 303 result.append("\n"); 304 if (getCurrentToolPath().indexOf("/edit/") < 0) { 305 result.append(key(Messages.GUI_USER_DEPENDENCIES_SELECTED_USERS_0)); 306 result.append(":<br>\n"); 307 List users = CmsStringUtil.splitAsList(getUserName(), CmsHtmlList.ITEM_SEPARATOR, true); 308 result.append("<ul>\n"); 309 Iterator it = users.iterator(); 310 while (it.hasNext()) { 311 String name = (String )it.next(); 312 result.append("<li>"); 313 result.append(name); 314 result.append("</li>\n"); 315 } 316 result.append("</ul>\n"); 317 } 318 if (getList().getTotalSize() > 0) { 319 result.append(key(Messages.GUI_USER_DEPENDENCIES_NOTICE_TEXT_0)); 320 } else { 321 result.append(key(Messages.GUI_USER_DEPENDENCIES_DELETE_0)); 322 } 323 result.append(dialogBlockEnd()); 324 return result.toString(); 325 } 326 327 330 protected void fillDetails(String detailId) { 331 332 } 334 335 338 protected List getListItems() throws CmsException { 339 340 CmsIdentifiableObjectContainer ret = new CmsIdentifiableObjectContainer(true, false); 341 Iterator itUsers = CmsStringUtil.splitAsList(getParamUserid(), CmsHtmlList.ITEM_SEPARATOR, true).iterator(); 342 getCms().getRequestContext().saveSiteRoot(); 343 getCms().getRequestContext().setSiteRoot("/"); 344 while (itUsers.hasNext()) { 345 CmsUser user = getCms().readUser(new CmsUUID(itUsers.next().toString())); 346 List resources = getCms().getResourcesForPrincipal(user.getId(), null, true); 348 Iterator itRes = resources.iterator(); 349 while (itRes.hasNext()) { 350 CmsResource resource = (CmsResource)itRes.next(); 351 CmsListItem item = (CmsListItem)ret.getObject(resource.getResourceId().toString()); 352 if (item == null) { 353 item = getList().newItem(resource.getResourceId().toString()); 354 item.set(LIST_COLUMN_NAME, resource.getRootPath()); 355 item.set(LIST_COLUMN_TYPE, new Integer (resource.getTypeId())); 356 item.set(LIST_COLUMN_CREATED, getCms().readUser(resource.getUserCreated()).getFullName()); 357 item.set(LIST_COLUMN_LASTMODIFIED, getCms().readUser(resource.getUserLastModified()).getFullName()); 358 Iterator itAces = getCms().getAccessControlEntries(resource.getRootPath(), false).iterator(); 359 while (itAces.hasNext()) { 360 CmsAccessControlEntry ace = (CmsAccessControlEntry)itAces.next(); 361 if (ace.getPrincipal().equals(user.getId())) { 362 if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(ace.getPermissions().getPermissionString())) { 363 item.set(LIST_COLUMN_PERMISSIONS, user.getName() 364 + ": " 365 + ace.getPermissions().getPermissionString()); 366 } 367 break; 368 } 369 } 370 ret.addIdentifiableObject(item.getId(), item); 371 } else { 372 String oldData = (String )item.get(LIST_COLUMN_PERMISSIONS); 373 Iterator itAces = getCms().getAccessControlEntries(resource.getRootPath(), false).iterator(); 374 while (itAces.hasNext()) { 375 CmsAccessControlEntry ace = (CmsAccessControlEntry)itAces.next(); 376 if (ace.getPrincipal().equals(user.getId())) { 377 if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(ace.getPermissions().getPermissionString())) { 378 String data = user.getName() + ": " + ace.getPermissions().getPermissionString(); 379 if (oldData != null) { 380 data = oldData + ", " + data; 381 } 382 item.set(LIST_COLUMN_PERMISSIONS, data); 383 } 384 break; 385 } 386 } 387 } 388 } 389 } 390 getCms().getRequestContext().restoreSiteRoot(); 391 return ret.elementList(); 392 } 393 394 397 protected void initMessages() { 398 399 addMessages(Messages.get().getBundleName()); 401 addMessages(org.opencms.workplace.Messages.get().getBundleName()); 403 super.initMessages(); 405 } 406 407 410 protected void initWorkplaceRequestValues(CmsWorkplaceSettings settings, HttpServletRequest request) { 411 412 super.initWorkplaceRequestValues(settings, request); 413 if (DELETE_ACTION.equals(getParamAction())) { 414 setAction(ACTION_DELETE); 415 } else if (TRANSFER_ACTION.equals(getParamAction())) { 416 setAction(ACTION_TRANSFER); 417 } 418 } 419 420 423 protected void setColumns(CmsListMetadata metadata) { 424 425 CmsListColumnDefinition iconCol = new CmsListColumnDefinition(LIST_COLUMN_ICON); 427 iconCol.setName(Messages.get().container(Messages.GUI_USER_DEPENDENCIES_LIST_COLS_ICON_0)); 428 iconCol.setWidth("20"); 429 iconCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER); 430 iconCol.setListItemComparator(new CmsListItemActionIconComparator()); 431 432 CmsListDirectAction iconAction = new CmsDependencyIconAction( 434 LIST_ACTION_ICON, 435 CmsDependencyIconActionType.RESOURCE, 436 getCms()); 437 iconAction.setName(Messages.get().container(Messages.GUI_USER_DEPENDENCIES_LIST_ACTION_ICON_NAME_0)); 438 iconAction.setHelpText(Messages.get().container(Messages.GUI_USER_DEPENDENCIES_LIST_ACTION_ICON_HELP_0)); 439 iconAction.setEnabled(false); 440 iconCol.addDirectAction(iconAction); 441 442 metadata.addColumn(iconCol); 444 445 CmsListColumnDefinition nameCol = new CmsListColumnDefinition(LIST_COLUMN_NAME); 447 nameCol.setName(Messages.get().container(Messages.GUI_USER_DEPENDENCIES_LIST_COLS_NAME_0)); 448 nameCol.setWidth("50%"); 449 metadata.addColumn(nameCol); 450 451 CmsListColumnDefinition createdCol = new CmsListColumnDefinition(LIST_COLUMN_CREATED); 453 createdCol.setName(Messages.get().container(Messages.GUI_USER_DEPENDENCIES_LIST_COLS_CREATED_0)); 454 createdCol.setWidth("20%"); 455 metadata.addColumn(createdCol); 456 457 CmsListColumnDefinition lastModifiedCol = new CmsListColumnDefinition(LIST_COLUMN_LASTMODIFIED); 459 lastModifiedCol.setName(Messages.get().container(Messages.GUI_USER_DEPENDENCIES_LIST_COLS_LASTMODIFIED_0)); 460 lastModifiedCol.setWidth("20%"); 461 metadata.addColumn(lastModifiedCol); 462 463 CmsListColumnDefinition permissionsCol = new CmsListColumnDefinition(LIST_COLUMN_PERMISSIONS); 465 permissionsCol.setName(Messages.get().container(Messages.GUI_USER_DEPENDENCIES_LIST_COLS_PERMISSIONS_0)); 466 permissionsCol.setWidth("20%"); 467 metadata.addColumn(permissionsCol); 468 469 CmsListColumnDefinition typeCol = new CmsListColumnDefinition(LIST_COLUMN_TYPE); 471 typeCol.setName(new CmsMessageContainer(null, "type")); 472 typeCol.setVisible(false); 473 metadata.addColumn(typeCol); 474 } 475 476 479 protected void setIndependentActions(CmsListMetadata metadata) { 480 481 } 483 484 487 protected void setMultiActions(CmsListMetadata metadata) { 488 489 } 491 492 495 protected void validateParamaters() throws Exception { 496 497 m_userName = ""; 499 Iterator itUsers = CmsStringUtil.splitAsList(getParamUserid(), CmsHtmlList.ITEM_SEPARATOR, true).iterator(); 500 while (itUsers.hasNext()) { 501 CmsUUID id = new CmsUUID(itUsers.next().toString()); 502 m_userName += getCms().readUser(id).getName(); 503 if (itUsers.hasNext()) { 504 m_userName += CmsHtmlList.ITEM_SEPARATOR; 505 } 506 } 507 } 508 } | Popular Tags |