1 31 32 package org.opencms.workplace.tools.modules; 33 34 import org.opencms.file.types.I_CmsResourceType; 35 import org.opencms.i18n.CmsMessages; 36 import org.opencms.jsp.CmsJspActionElement; 37 import org.opencms.main.OpenCms; 38 import org.opencms.module.CmsModule; 39 import org.opencms.module.CmsModuleDependency; 40 import org.opencms.workplace.explorer.CmsExplorerTypeSettings; 41 import org.opencms.workplace.list.A_CmsListDialog; 42 import org.opencms.workplace.list.CmsListColumnAlignEnum; 43 import org.opencms.workplace.list.CmsListColumnDefinition; 44 import org.opencms.workplace.list.CmsListDefaultAction; 45 import org.opencms.workplace.list.CmsListDirectAction; 46 import org.opencms.workplace.list.CmsListItem; 47 import org.opencms.workplace.list.CmsListItemDetails; 48 import org.opencms.workplace.list.CmsListItemDetailsFormatter; 49 import org.opencms.workplace.list.CmsListMetadata; 50 import org.opencms.workplace.list.CmsListMultiAction; 51 import org.opencms.workplace.list.CmsListOrderEnum; 52 import org.opencms.workplace.list.CmsListSearchAction; 53 import org.opencms.workplace.tools.CmsToolDialog; 54 55 import java.io.IOException ; 56 import java.util.ArrayList ; 57 import java.util.HashMap ; 58 import java.util.Iterator ; 59 import java.util.List ; 60 import java.util.Map ; 61 import java.util.Set ; 62 63 import javax.servlet.ServletException ; 64 import javax.servlet.http.HttpServletRequest ; 65 import javax.servlet.http.HttpServletResponse ; 66 import javax.servlet.jsp.PageContext ; 67 68 77 public class CmsModulesList extends A_CmsListDialog { 78 79 80 public static final String LIST_ACTION_DELETE = "ad"; 81 82 83 public static final String LIST_ACTION_EDIT = "ae"; 84 85 86 public static final String LIST_ACTION_EXPORT = "ax"; 87 88 89 public static final String LIST_ACTION_OVERVIEW = "ao"; 90 91 92 public static final String LIST_COLUMN_DELETE = "cd"; 93 94 95 public static final String LIST_COLUMN_EDIT = "ce"; 96 97 98 public static final String LIST_COLUMN_EXPORT = "cx"; 99 100 101 public static final String LIST_COLUMN_GROUP = "cg"; 102 103 104 public static final String LIST_COLUMN_NAME = "cn"; 105 106 107 public static final String LIST_COLUMN_NICENAME = "cc"; 108 109 110 public static final String LIST_COLUMN_VERSION = "cv"; 111 112 113 public static final String LIST_DETAIL_AUTHORINFO = "da"; 114 115 116 public static final String LIST_DETAIL_DEPENDENCIES = "dd"; 117 118 119 public static final String LIST_DETAIL_RESOURCES = "resourcestinfo"; 120 121 122 public static final String LIST_DETAIL_RESTYPES = "restypesinfo"; 123 124 125 public static final String LIST_ID = "modules"; 126 127 128 public static final String LIST_MACTION_DELETE = "md"; 129 130 131 public static final String PARAM_MODULE = "module"; 132 133 134 public static final String PATH_BUTTONS = "tools/modules/buttons/"; 135 136 137 public static final String PATH_REPORTS = "/system/workplace/admin/modules/reports/"; 138 139 144 public CmsModulesList(CmsJspActionElement jsp) { 145 146 super( 147 jsp, 148 LIST_ID, 149 Messages.get().container(Messages.GUI_MODULES_LIST_NAME_0), 150 LIST_COLUMN_NAME, 151 CmsListOrderEnum.ORDER_ASCENDING, 152 null); 153 } 154 155 162 public CmsModulesList(PageContext context, HttpServletRequest req, HttpServletResponse res) { 163 164 this(new CmsJspActionElement(context, req, res)); 165 } 166 167 170 public void executeListMultiActions() throws IOException , ServletException { 171 172 if (getParamListAction().equals(LIST_MACTION_DELETE)) { 173 String moduleList = ""; 174 Iterator itItems = getSelectedItems().iterator(); 176 StringBuffer modules = new StringBuffer (32); 177 while (itItems.hasNext()) { 178 CmsListItem listItem = (CmsListItem)itItems.next(); 179 modules.append(listItem.getId()); 180 modules.append(","); 181 } 182 moduleList = new String (modules); 183 moduleList = moduleList.substring(0, moduleList.length() - 1); 184 Map params = new HashMap (); 185 params.put(PARAM_MODULE, moduleList); 186 params.put(PARAM_ACTION, DIALOG_INITIAL); 187 params.put(PARAM_STYLE, CmsToolDialog.STYLE_NEW); 188 getToolManager().jspForwardPage(this, PATH_REPORTS + "delete.jsp", params); 189 } 190 listSave(); 191 } 192 193 196 public void executeListSingleActions() throws IOException , ServletException { 197 198 String module = getSelectedItem().getId(); 199 Map params = new HashMap (); 200 params.put(PARAM_MODULE, module); 201 if (getParamListAction().equals(LIST_ACTION_EDIT)) { 202 params.put(PARAM_ACTION, DIALOG_INITIAL); 204 getToolManager().jspForwardTool(this, "/modules/edit/edit", params); 205 } else if (getParamListAction().equals(LIST_ACTION_OVERVIEW)) { 206 params.put(PARAM_ACTION, DIALOG_INITIAL); 209 getToolManager().jspForwardTool(this, "/modules/edit", params); 210 } else if (getParamListAction().equals(LIST_ACTION_DELETE)) { 211 params.put(PARAM_ACTION, DIALOG_INITIAL); 213 params.put(PARAM_STYLE, CmsToolDialog.STYLE_NEW); 214 getToolManager().jspForwardPage(this, PATH_REPORTS + "delete.jsp", params); 215 } else if (getParamListAction().equals(LIST_ACTION_EXPORT)) { 216 params.put(PARAM_ACTION, DIALOG_INITIAL); 218 params.put(PARAM_STYLE, CmsToolDialog.STYLE_NEW); 219 getToolManager().jspForwardPage(this, "/system/workplace/admin/modules/reports/export.jsp", params); 220 } 221 listSave(); 222 } 223 224 227 protected void fillDetails(String detailId) { 228 229 List moduleNames = getList().getAllContent(); 231 Iterator i = moduleNames.iterator(); 232 CmsMessages messages = Messages.get().getBundle(getLocale()); 233 while (i.hasNext()) { 234 CmsListItem item = (CmsListItem)i.next(); 235 String moduleName = item.getId(); 236 CmsModule module = OpenCms.getModuleManager().getModule(moduleName); 237 StringBuffer html = new StringBuffer (32); 238 if (detailId.equals(LIST_DETAIL_AUTHORINFO)) { 239 html.append(module.getAuthorName()); 241 html.append(" ("); 242 html.append(module.getAuthorEmail()); 243 html.append(")"); 244 } else if (detailId.equals(LIST_DETAIL_RESOURCES)) { 245 Iterator j = module.getResources().iterator(); 247 while (j.hasNext()) { 248 String resource = (String )j.next(); 249 html.append(resource); 250 html.append("<br>"); 251 } 252 } else if (detailId.equals(LIST_DETAIL_DEPENDENCIES)) { 253 Iterator k = module.getDependencies().iterator(); 255 while (k.hasNext()) { 256 CmsModuleDependency dep = (CmsModuleDependency)k.next(); 257 html.append(dep.getName()); 258 html.append(" Version:"); 259 html.append(dep.getVersion()); 260 html.append("<br>"); 261 } 262 } else if (detailId.equals(LIST_DETAIL_RESTYPES)) { 263 StringBuffer restypes = new StringBuffer (32); 265 Iterator l = module.getResourceTypes().iterator(); 266 boolean addRestypes = false; 267 while (l.hasNext()) { 268 addRestypes = true; 269 I_CmsResourceType resourceType = (I_CmsResourceType)l.next(); 270 restypes.append(messages.key(Messages.GUI_MODULES_LABEL_RESTYPES_DETAIL_0)); 271 restypes.append(": "); 272 restypes.append(resourceType.getTypeName()); 273 restypes.append(" ID:"); 274 restypes.append(resourceType.getTypeId()); 275 restypes.append("<br>"); 276 } 277 StringBuffer explorersettings = new StringBuffer (32); 278 Iterator m = module.getExplorerTypes().iterator(); 279 boolean addExplorersettings = false; 280 while (m.hasNext()) { 281 addExplorersettings = true; 282 CmsExplorerTypeSettings settings = (CmsExplorerTypeSettings)m.next(); 283 explorersettings.append(messages.key(Messages.GUI_MODULES_LABEL_EXPLORERSETTINGSS_DETAIL_0)); 284 explorersettings.append(": "); 285 explorersettings.append(settings.getName()); 286 explorersettings.append(" ("); 287 explorersettings.append(settings.getReference()); 288 explorersettings.append(")<br>"); 289 } 290 291 if (addRestypes) { 292 html.append(restypes); 293 } 294 if (addExplorersettings) { 295 html.append(explorersettings); 296 } 297 } else { 298 continue; 299 } 300 item.set(detailId, html.toString()); 301 } 302 } 303 304 307 protected List getListItems() { 308 309 List ret = new ArrayList (); 310 Set moduleNames = OpenCms.getModuleManager().getModuleNames(); 312 Iterator i = moduleNames.iterator(); 313 while (i.hasNext()) { 314 String moduleName = (String )i.next(); 315 CmsModule module = OpenCms.getModuleManager().getModule(moduleName); 316 CmsListItem item = getList().newItem(module.getName()); 317 item.set(LIST_COLUMN_NAME, moduleName); 319 item.set(LIST_COLUMN_NICENAME, module.getNiceName()); 321 item.set(LIST_COLUMN_VERSION, module.getVersion()); 323 item.set(LIST_COLUMN_GROUP, module.getGroup()); 325 ret.add(item); 326 } 327 return ret; 328 } 329 330 333 protected void initMessages() { 334 335 addMessages(Messages.get().getBundleName()); 337 super.initMessages(); 339 } 340 341 344 protected void setColumns(CmsListMetadata metadata) { 345 346 CmsListColumnDefinition editCol = new CmsListColumnDefinition(LIST_COLUMN_EDIT); 348 editCol.setName(Messages.get().container(Messages.GUI_MODULES_LIST_COLS_EDIT_0)); 349 editCol.setWidth("20"); 350 editCol.setSorteable(false); 351 editCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER); 352 CmsListDirectAction editColAction = new CmsListDirectAction(LIST_ACTION_EDIT); 354 editColAction.setName(Messages.get().container(Messages.GUI_MODULES_LIST_ACTION_EDIT_NAME_0)); 355 editColAction.setHelpText(Messages.get().container(Messages.GUI_MODULES_LIST_ACTION_EDIT_HELP_0)); 356 editColAction.setIconPath(PATH_BUTTONS + "modules.png"); 357 editColAction.setEnabled(true); 358 editColAction.setConfirmationMessage(null); 359 editCol.addDirectAction(editColAction); 360 metadata.addColumn(editCol); 361 362 CmsListColumnDefinition expCol = new CmsListColumnDefinition(LIST_COLUMN_EXPORT); 364 expCol.setName(Messages.get().container(Messages.GUI_MODULES_LIST_COLS_EXPORT_0)); 365 expCol.setWidth("20"); 366 expCol.setSorteable(false); 367 expCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER); 368 CmsListDirectAction expModule = new CmsListDirectAction(LIST_ACTION_EXPORT); 370 expModule.setName(Messages.get().container(Messages.GUI_MODULES_LIST_ACTION_EXPORT_NAME_0)); 371 expModule.setConfirmationMessage(Messages.get().container(Messages.GUI_MODULES_LIST_ACTION_EXPORT_CONF_0)); 372 expModule.setIconPath(PATH_BUTTONS + "export.png"); 373 expModule.setEnabled(true); 374 expModule.setHelpText(Messages.get().container(Messages.GUI_MODULES_LIST_ACTION_EXPORT_HELP_0)); 375 expCol.addDirectAction(expModule); 376 metadata.addColumn(expCol); 377 378 CmsListColumnDefinition delCol = new CmsListColumnDefinition(LIST_COLUMN_DELETE); 380 delCol.setName(Messages.get().container(Messages.GUI_MODULES_LIST_COLS_DELETE_0)); 381 delCol.setWidth("20"); 382 delCol.setSorteable(false); 383 delCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER); 384 CmsListDirectAction delModule = new CmsListDirectAction(LIST_ACTION_DELETE); 386 delModule.setName(Messages.get().container(Messages.GUI_MODULES_LIST_ACTION_DELETE_NAME_0)); 387 delModule.setConfirmationMessage(Messages.get().container(Messages.GUI_MODULES_LIST_ACTION_DELETE_CONF_0)); 388 delModule.setIconPath(ICON_DELETE); 389 delModule.setEnabled(true); 390 delModule.setHelpText(Messages.get().container(Messages.GUI_MODULES_LIST_ACTION_DELETE_HELP_0)); 391 delCol.addDirectAction(delModule); 392 metadata.addColumn(delCol); 393 394 CmsListColumnDefinition nameCol = new CmsListColumnDefinition(LIST_COLUMN_NAME); 396 nameCol.setName(Messages.get().container(Messages.GUI_MODULES_LIST_COLS_NAME_0)); 397 nameCol.setWidth("30%"); 398 nameCol.setAlign(CmsListColumnAlignEnum.ALIGN_LEFT); 399 CmsListDefaultAction nameColAction = new CmsListDefaultAction(LIST_ACTION_OVERVIEW); 401 nameColAction.setName(Messages.get().container(Messages.GUI_MODULES_LIST_ACTION_OVERVIEW_NAME_0)); 402 nameColAction.setIconPath(null); 403 nameColAction.setHelpText(Messages.get().container(Messages.GUI_MODULES_LIST_ACTION_OVERVIEW_HELP_0)); 404 nameColAction.setEnabled(true); 405 nameColAction.setConfirmationMessage(null); 406 nameCol.addDefaultAction(nameColAction); 408 metadata.addColumn(nameCol); 409 410 CmsListColumnDefinition nicenameCol = new CmsListColumnDefinition(LIST_COLUMN_NICENAME); 412 nicenameCol.setName(Messages.get().container(Messages.GUI_MODULES_LIST_COLS_NICENAME_0)); 413 nicenameCol.setWidth("50%"); 414 nicenameCol.setAlign(CmsListColumnAlignEnum.ALIGN_LEFT); 415 metadata.addColumn(nicenameCol); 416 417 CmsListColumnDefinition groupCol = new CmsListColumnDefinition(LIST_COLUMN_GROUP); 419 groupCol.setName(Messages.get().container(Messages.GUI_MODULES_LIST_COLS_GROUP_0)); 420 groupCol.setWidth("10%"); 421 groupCol.setAlign(CmsListColumnAlignEnum.ALIGN_LEFT); 422 CmsModulesListGroupFormatter groupFormatter = new CmsModulesListGroupFormatter(); 423 groupCol.setFormatter(groupFormatter); 424 metadata.addColumn(groupCol); 425 426 CmsListColumnDefinition versionCol = new CmsListColumnDefinition(LIST_COLUMN_VERSION); 428 versionCol.setName(Messages.get().container(Messages.GUI_MODULES_LIST_COLS_VERSION_0)); 429 versionCol.setWidth("10%"); 430 versionCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER); 431 metadata.addColumn(versionCol); 432 433 } 434 435 438 protected void setIndependentActions(CmsListMetadata metadata) { 439 440 CmsListItemDetails modulesAuthorInfoDetails = new CmsListItemDetails(LIST_DETAIL_AUTHORINFO); 442 modulesAuthorInfoDetails.setAtColumn(LIST_COLUMN_NAME); 443 modulesAuthorInfoDetails.setVisible(false); 444 modulesAuthorInfoDetails.setFormatter(new CmsListItemDetailsFormatter(Messages.get().container( 445 Messages.GUI_MODULES_LABEL_AUTHOR_0))); 446 modulesAuthorInfoDetails.setShowActionName(Messages.get().container( 447 Messages.GUI_MODULES_DETAIL_SHOW_AUTHORINFO_NAME_0)); 448 modulesAuthorInfoDetails.setShowActionHelpText(Messages.get().container( 449 Messages.GUI_MODULES_DETAIL_SHOW_AUTHORINFO_HELP_0)); 450 modulesAuthorInfoDetails.setHideActionName(Messages.get().container( 451 Messages.GUI_MODULES_DETAIL_HIDE_AUTHORINFO_NAME_0)); 452 modulesAuthorInfoDetails.setHideActionHelpText(Messages.get().container( 453 Messages.GUI_MODULES_DETAIL_HIDE_AUTHORINFO_HELP_0)); 454 455 metadata.addItemDetails(modulesAuthorInfoDetails); 457 458 CmsListItemDetails resourcesDetails = new CmsListItemDetails(LIST_DETAIL_RESOURCES); 460 resourcesDetails.setAtColumn(LIST_COLUMN_NAME); 461 resourcesDetails.setVisible(false); 462 resourcesDetails.setFormatter(new CmsListItemDetailsFormatter(Messages.get().container( 463 Messages.GUI_MODULES_LABEL_RESOURCES_0))); 464 resourcesDetails.setShowActionName(Messages.get().container(Messages.GUI_MODULES_DETAIL_SHOW_RESOURCES_NAME_0)); 465 resourcesDetails.setShowActionHelpText(Messages.get().container( 466 Messages.GUI_MODULES_DETAIL_SHOW_RESOURCES_HELP_0)); 467 resourcesDetails.setHideActionName(Messages.get().container(Messages.GUI_MODULES_DETAIL_HIDE_RESOURCES_NAME_0)); 468 resourcesDetails.setHideActionHelpText(Messages.get().container( 469 Messages.GUI_MODULES_DETAIL_HIDE_RESOURCES_HELP_0)); 470 471 metadata.addItemDetails(resourcesDetails); 473 474 CmsListItemDetails dependenciesDetails = new CmsListItemDetails(LIST_DETAIL_DEPENDENCIES); 476 dependenciesDetails.setAtColumn(LIST_COLUMN_NAME); 477 dependenciesDetails.setVisible(false); 478 dependenciesDetails.setFormatter(new CmsListItemDetailsFormatter(Messages.get().container( 479 Messages.GUI_MODULES_LABEL_DEPENDENCIES_0))); 480 dependenciesDetails.setShowActionName(Messages.get().container( 481 Messages.GUI_MODULES_DETAIL_SHOW_DEPENDENCIES_NAME_0)); 482 dependenciesDetails.setShowActionHelpText(Messages.get().container( 483 Messages.GUI_MODULES_DETAIL_SHOW_DEPENDENCIES_HELP_0)); 484 dependenciesDetails.setHideActionName(Messages.get().container( 485 Messages.GUI_MODULES_DETAIL_HIDE_DEPENDENCIES_NAME_0)); 486 dependenciesDetails.setHideActionHelpText(Messages.get().container( 487 Messages.GUI_MODULES_DETAIL_HIDE_DEPENDENCIES_HELP_0)); 488 489 metadata.addItemDetails(dependenciesDetails); 491 492 CmsListItemDetails restypesDetails = new CmsListItemDetails(LIST_DETAIL_RESTYPES); 494 restypesDetails.setAtColumn(LIST_COLUMN_NAME); 495 restypesDetails.setVisible(false); 496 restypesDetails.setFormatter(new CmsListItemDetailsFormatter(Messages.get().container( 497 Messages.GUI_MODULES_LABEL_RESTYPES_0))); 498 restypesDetails.setShowActionName(Messages.get().container(Messages.GUI_MODULES_DETAIL_SHOW_RESTYPES_NAME_0)); 499 restypesDetails.setShowActionHelpText(Messages.get().container(Messages.GUI_MODULES_DETAIL_SHOW_RESTYPES_HELP_0)); 500 restypesDetails.setHideActionName(Messages.get().container(Messages.GUI_MODULES_DETAIL_HIDE_RESTYPES_NAME_0)); 501 restypesDetails.setHideActionHelpText(Messages.get().container(Messages.GUI_MODULES_DETAIL_HIDE_RESTYPES_HELP_0)); 502 503 metadata.addItemDetails(restypesDetails); 505 506 CmsListSearchAction searchAction = new CmsListSearchAction(metadata.getColumnDefinition(LIST_COLUMN_NAME)); 508 searchAction.addColumn(metadata.getColumnDefinition(LIST_COLUMN_GROUP)); 509 metadata.setSearchAction(searchAction); 510 511 } 512 513 516 protected void setMultiActions(CmsListMetadata metadata) { 517 518 CmsListMultiAction deleteModules = new CmsListMultiAction(LIST_MACTION_DELETE); 520 deleteModules.setName(Messages.get().container(Messages.GUI_MODULES_LIST_ACTION_MDELETE_NAME_0)); 521 deleteModules.setConfirmationMessage(Messages.get().container(Messages.GUI_MODULES_LIST_ACTION_MDELETE_CONF_0)); 522 deleteModules.setIconPath(ICON_MULTI_DELETE); 523 deleteModules.setEnabled(true); 524 deleteModules.setHelpText(Messages.get().container(Messages.GUI_MODULES_LIST_ACTION_MDELETE_HELP_0)); 525 metadata.addMultiAction(deleteModules); 526 } 527 528 } | Popular Tags |