GlobalNavigation

Erweitert um einen AdminCenter Eintrag.

git-svn-id: https://svn.libreccm.org/ccm/trunk@2394 8810af33-2d31-482b-a856-94f89814c4df
master
quasi 2013-10-29 07:59:28 +00:00
parent 231ec5abf7
commit 66758056a2
1 changed files with 77 additions and 63 deletions

View File

@ -22,7 +22,13 @@ import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.SimpleComponent; import com.arsdigita.bebop.SimpleComponent;
import com.arsdigita.cms.CMS; import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ContentCenter; import com.arsdigita.cms.ContentCenter;
import com.arsdigita.kernel.Kernel;
import com.arsdigita.kernel.permissions.PermissionDescriptor;
import com.arsdigita.kernel.permissions.PermissionService;
import com.arsdigita.kernel.permissions.PrivilegeDescriptor;
import com.arsdigita.ui.UI; import com.arsdigita.ui.UI;
import com.arsdigita.ui.admin.Admin;
import com.arsdigita.ui.login.LoginServlet;
import com.arsdigita.web.URL; import com.arsdigita.web.URL;
import com.arsdigita.xml.Element; import com.arsdigita.xml.Element;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
@ -38,77 +44,85 @@ import javax.servlet.http.HttpServletRequest;
// Made public (instead of unspecified, resulting in protected) in 6.6.8 // Made public (instead of unspecified, resulting in protected) in 6.6.8
public class GlobalNavigation extends SimpleComponent { public class GlobalNavigation extends SimpleComponent {
private static final Logger s_log = Logger.getLogger private static final Logger s_log = Logger.getLogger(GlobalNavigation.class);
(GlobalNavigation.class); private final String m_centerPath;
private final String m_adminPath;
private final String m_wspcPath;
private final String m_signOutPath;
private final String m_helpPath;
private final String m_centerPath; /**
private final String m_wspcPath; *
private final String m_signOutPath; */
private final String m_helpPath; public GlobalNavigation() {
m_centerPath = ContentCenter.getURL();
m_adminPath = Admin.getInstance().getServletPath();
m_wspcPath = UI.getWorkspaceURL();
m_signOutPath = LoginServlet.getLogoutPageURL();
m_helpPath = "/nowhere"; // We don't have this yet XXX.
}
/** /**
* *
*/ * @param state
public GlobalNavigation() { * @param parent
m_centerPath = ContentCenter.getURL(); */
m_wspcPath = UI.getWorkspaceURL(); @Override
m_signOutPath = UI.getLogoutPageURL(); public void generateXML(final PageState state, final Element parent) {
m_helpPath = "/nowhere"; // We don't have this yet XXX. if (isVisible(state)) {
} final HttpServletRequest sreq = state.getRequest();
/** final Element nav = parent.newChildElement("cms:globalNavigation", CMS.CMS_XML_NS);
* final String centerTitle = lz("cms.ui.content_center");
* @param state final String adminTitle = lz("cms.ui.admin_center");
* @param parent final String wspcTitle = lz("cms.ui.my_workspace");
*/ final String signOutTitle = lz("cms.ui.sign_out");
@Override final String helpTitle = lz("cms.ui.help");
public void generateXML(final PageState state, final Element parent) {
if (isVisible(state)) {
final HttpServletRequest sreq = state.getRequest();
final Element nav = parent.newChildElement link(sreq, nav, "cms:contentCenter", m_centerPath, centerTitle);
("cms:globalNavigation", CMS.CMS_XML_NS);
final String centerTitle = lz("cms.ui.content_center"); /* If the current user has admin permissions, insert a link to the admin center */
final String wspcTitle = lz("cms.ui.my_workspace"); if (PermissionService.checkPermission(new PermissionDescriptor(
final String signOutTitle = lz("cms.ui.sign_out"); PrivilegeDescriptor.ADMIN,
final String helpTitle = lz("cms.ui.help"); Admin.getInstance(),
Kernel.getContext().getParty()))) {
link(sreq, nav, "cms:adminCenter", m_adminPath, adminTitle);
}
link(sreq, nav, "cms:contentCenter", m_centerPath, centerTitle); link(sreq, nav, "cms:workspace", m_wspcPath, wspcTitle);
link(sreq, nav, "cms:workspace", m_wspcPath, wspcTitle); link(sreq, nav, "cms:signOut", m_signOutPath, signOutTitle);
link(sreq, nav, "cms:signOut", m_signOutPath, signOutTitle); link(sreq, nav, "cms:help", m_helpPath, helpTitle);
link(sreq, nav, "cms:help", m_helpPath, helpTitle); }
} }
}
/** /**
* *
* @param sreq * @param sreq
* @param parent * @param parent
* @param name * @param name
* @param path * @param path
* @param title * @param title
* @return * @return
*/ */
private static Element link(final HttpServletRequest sreq, private static Element link(final HttpServletRequest sreq,
final Element parent, final Element parent,
final String name, final String name,
final String path, final String path,
final String title) { final String title) {
final Element link = parent.newChildElement(name, CMS.CMS_XML_NS); final Element link = parent.newChildElement(name, CMS.CMS_XML_NS);
link.addAttribute("href", URL.there(sreq, path).toString()); link.addAttribute("href", URL.there(sreq, path).toString());
link.addAttribute("title", title); link.addAttribute("title", title);
return link; return link;
} }
/** /**
* *
* @param key * @param key
* @return * @return
*/ */
private static String lz(final String key) { private static String lz(final String key) {
return (String) ContentSectionPage.globalize(key).localize(); return (String) ContentSectionPage.globalize(key).localize();
} }
} }