1 31 32 package org.opencms.workplace.administration; 33 34 import org.opencms.jsp.CmsJspActionElement; 35 import org.opencms.main.OpenCms; 36 import org.opencms.util.CmsIdentifiableObjectContainer; 37 import org.opencms.util.CmsStringUtil; 38 import org.opencms.util.I_CmsIdentifiableObjectContainer; 39 import org.opencms.workplace.CmsWorkplace; 40 import org.opencms.workplace.CmsWorkplaceSettings; 41 import org.opencms.workplace.tools.CmsTool; 42 import org.opencms.workplace.tools.CmsToolDialog; 43 import org.opencms.workplace.tools.CmsToolMacroResolver; 44 import org.opencms.workplace.tools.CmsToolManager; 45 46 import java.util.Iterator ; 47 48 import javax.servlet.http.HttpServletRequest ; 49 50 59 public class CmsAdminMenu extends CmsToolDialog { 60 61 62 public static final String DEFAULT_TARGET = "admin_content"; 63 64 65 private I_CmsIdentifiableObjectContainer m_groupContainer = new CmsIdentifiableObjectContainer(true, true); 66 67 72 public CmsAdminMenu(CmsJspActionElement jsp) { 73 74 super(jsp); 75 try { 76 initAdminTool(); 77 } catch (Exception e) { 78 } 80 installMenu(); 81 } 82 83 90 public void addGroup(CmsAdminMenuGroup group) { 91 92 m_groupContainer.addIdentifiableObject(group.getName(), group); 93 } 94 95 103 public void addGroup(CmsAdminMenuGroup group, float position) { 104 105 m_groupContainer.addIdentifiableObject(group.getName(), group, position); 106 } 107 108 124 public CmsAdminMenuItem addItem( 125 String groupName, 126 String name, 127 String icon, 128 String link, 129 String helpText, 130 boolean enabled, 131 float position, 132 String target) { 133 134 groupName = CmsToolMacroResolver.resolveMacros(groupName, this); 135 CmsAdminMenuGroup group = getGroup(groupName); 136 if (group == null) { 137 String gid = "group" + m_groupContainer.elementList().size(); 138 group = new CmsAdminMenuGroup(gid, groupName); 139 addGroup(group, position); 140 } 141 String id = "item" + group.getId() + group.getMenuItems().size(); 142 CmsAdminMenuItem item = new CmsAdminMenuItem(id, name, icon, link, helpText, enabled, target); 143 group.addMenuItem(item, position); 144 return item; 145 } 146 147 156 public CmsAdminMenuGroup getGroup(String name) { 157 158 return (CmsAdminMenuGroup)m_groupContainer.getObject(name); 159 } 160 161 166 public CmsToolManager getToolManager() { 167 168 return OpenCms.getWorkplaceManager().getToolManager(); 169 } 170 171 178 public String groupHtml(CmsWorkplace wp) { 179 180 StringBuffer html = new StringBuffer (2048); 181 Iterator itHtml = m_groupContainer.elementList().iterator(); 182 while (itHtml.hasNext()) { 183 CmsAdminMenuGroup group = (CmsAdminMenuGroup)itHtml.next(); 184 html.append(group.groupHtml(wp)); 185 } 186 return html.toString(); 187 } 188 189 192 public void installMenu() { 193 194 m_groupContainer.clear(); 196 197 CmsAdminMenuGroup helpMenu = new CmsAdminMenuGroup("help", Messages.get().getBundle(getLocale()).key( 199 Messages.GUI_ADMIN_MENU_HELP_GROUP_0)); 200 helpMenu.addMenuItem(new CmsAdminContextHelpMenuItem()); 201 addGroup(helpMenu); 202 203 Iterator itElems = getToolManager().getToolsForPath(this, getToolManager().getBaseToolPath(this), false).iterator(); 204 while (itElems.hasNext()) { 205 CmsTool tool = (CmsTool)itElems.next(); 206 String link = tool.getHandler().getLink(); 208 if (link.indexOf("?") > 0) { 209 link = link.substring(0, link.indexOf("?")); 210 } 211 if (!getCms().existsResource(link) || !tool.getHandler().isVisible(getCms())) { 212 continue; 213 } 214 215 String path = tool.getHandler().getPath().substring(getToolManager().getBaseToolPath(this).length()); 217 if (CmsStringUtil.isEmpty(path)) { 219 continue; 220 } 221 int pos = tool.getHandler().getPath().indexOf(CmsToolManager.TOOLPATH_SEPARATOR); 223 if (path.indexOf(CmsToolManager.TOOLPATH_SEPARATOR, pos + 1) < 0) { 225 226 addItem( 227 tool.getHandler().getGroup(), 228 tool.getHandler().getShortName(), 229 tool.getHandler().getSmallIconPath(), 230 CmsToolManager.linkForToolPath(getJsp(), tool.getHandler().getPath()), 231 tool.getHandler().isEnabled(getCms()) ? tool.getHandler().getHelpText() 232 : tool.getHandler().getDisabledHelpText(), 233 tool.getHandler().isEnabled(getCms()), 234 tool.getHandler().getPosition(), 235 CmsAdminMenu.DEFAULT_TARGET); 236 } 237 } 238 } 239 240 243 protected void initWorkplaceRequestValues(CmsWorkplaceSettings settings, HttpServletRequest request) { 244 245 fillParamValues(request); 246 } 247 } | Popular Tags |