- Change password link: Added URL and title to CMSGlobalNavigation and

UserBanner (like logout link) and added support to Mandalay
- Some formatting


git-svn-id: https://svn.libreccm.org/ccm/trunk@2629 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2014-04-29 17:52:26 +00:00
parent 71f625a792
commit 6382af5c68
20 changed files with 439 additions and 412 deletions

View File

@ -1,6 +1,6 @@
model com.arsdigita.cms.contenttypes; model com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.contenttypes.GenricOrganization; import com.arsdigita.cms.contenttypes.GenricOrganizationalUnit;
import com.arsdigita.cms.contenttypes.GenericAddress; import com.arsdigita.cms.contenttypes.GenericAddress;
import com.arsdigita.cms.contenttypes.GenericContact; import com.arsdigita.cms.contenttypes.GenericContact;
@ -8,29 +8,10 @@ import com.arsdigita.kernel.ACSObject;
import com.arsdigita.cms.*; import com.arsdigita.cms.*;
// HealthCareFacility Object // HealthCareFacility Object
object type HealthCareFacility extends GenericOrganization { object type HealthCareFacility extends GenericOrganizationalUnit {
GenericAddress[0..1] address = join ct_healthCareFacilities.address_id
to cms_addresses.address_id;
reference key ( ct_healthCareFacilities.hcf_id ); reference key ( ct_healthCareFacilities.hcf_id );
} }
association {
GenericContact[0..n] contacts = join ct_healthCareFacilities.hcf_id
to ct_healthCareFacility_contact_map.hcf_id,
join ct_healthCareFacility_contact_map.contact_id
to cms_contacts.contact_id;
HealthCareFacility[0..n] healthCareFacilities = join cms_contacts.contact_id
to ct_healthCareFacility_contact_map.contact_id,
join ct_healthCareFacility_contact_map.hcf_id
to ct_healthCareFacilities.hcf_id;
// Link Attribute
String contact_type = ct_healthCareFacility_contact_map.contact_type VARCHAR(100);
BigDecimal contact_order = ct_healthCareFacility_contact_map.contact_order INTEGER;
}

View File

@ -44,7 +44,7 @@ import org.apache.log4j.Logger;
* *
* @author Sören Bernstein <quasi@quasiweb.de> * @author Sören Bernstein <quasi@quasiweb.de>
*/ */
public class HealthCareFacility extends GenericOrganization { public class HealthCareFacility extends GenericOrganizationalUnit {
//private static final HealthCareFacilityConfig s_config = new HealthCareFacilityConfig(); //private static final HealthCareFacilityConfig s_config = new HealthCareFacilityConfig();
private static final Logger s_log = Logger.getLogger(HealthCareFacility.class); private static final Logger s_log = Logger.getLogger(HealthCareFacility.class);
@ -122,48 +122,48 @@ public class HealthCareFacility extends GenericOrganization {
} }
/* accessors *************************************************/ // /* accessors *************************************************/
//
// Get the address for this contact // // Get the address for this contact
public com.arsdigita.cms.contenttypes.GenericAddress getAddress() { // public com.arsdigita.cms.contenttypes.GenericAddress getAddress() {
return (com.arsdigita.cms.contenttypes.GenericAddress)DomainObjectFactory.newInstance((DataObject)get(ADDRESS)); // return (com.arsdigita.cms.contenttypes.GenericAddress)DomainObjectFactory.newInstance((DataObject)get(ADDRESS));
} // }
//
// Set the address for this contact // // Set the address for this contact
public void setAddress(com.arsdigita.cms.contenttypes.GenericAddress address) { // public void setAddress(com.arsdigita.cms.contenttypes.GenericAddress address) {
set(ADDRESS, address); // set(ADDRESS, address);
} // }
//
// Unset the address for this contact // // Unset the address for this contact
public void unsetAddress() { // public void unsetAddress() {
set(ADDRESS, null); // set(ADDRESS, null);
} // }
//
// Get all contacts for this health care facility // // Get all contacts for this health care facility
public HealthCareFacilityContactCollection getContacts() { // public HealthCareFacilityContactCollection getContacts() {
return new HealthCareFacilityContactCollection((DataCollection) get(CONTACTS)); // return new HealthCareFacilityContactCollection((DataCollection) get(CONTACTS));
} // }
//
// Add a contact for this health care facility // // Add a contact for this health care facility
public void addContact(com.arsdigita.cms.contenttypes.GenericContact contact, String contactType) { // public void addContact(com.arsdigita.cms.contenttypes.GenericContact contact, String contactType) {
Assert.exists(contact, com.arsdigita.cms.contenttypes.GenericContact.class); // Assert.exists(contact, com.arsdigita.cms.contenttypes.GenericContact.class);
//
DataObject link = add(CONTACTS, contact); // DataObject link = add(CONTACTS, contact);
//
link.set(CONTACT_TYPE, contactType); // link.set(CONTACT_TYPE, contactType);
link.set(CONTACT_ORDER, BigDecimal.valueOf(getContacts().size())); // link.set(CONTACT_ORDER, BigDecimal.valueOf(getContacts().size()));
// this.save(); //// this.save();
//
// add(CONTACTS, contact); //// add(CONTACTS, contact);
} // }
//
// Remove a contect for this health care facility // // Remove a contect for this health care facility
public void removeContactEntry(com.arsdigita.cms.contenttypes.GenericContact contact) { // public void removeContactEntry(com.arsdigita.cms.contenttypes.GenericContact contact) {
Assert.exists(contact, com.arsdigita.cms.contenttypes.GenericContact.class); // Assert.exists(contact, com.arsdigita.cms.contenttypes.GenericContact.class);
remove(CONTACTS, contact); // remove(CONTACTS, contact);
} // }
//
public boolean hasContacts() { // public boolean hasContacts() {
return !this.getContacts().isEmpty(); // return !this.getContacts().isEmpty();
} // }
} }

View File

@ -1070,3 +1070,4 @@ cms.ui.category.cantmoved=This category can't be moved
cms.ui.authoring.error_conflicts_with_this_url=There are conflicts with this URL. Specifically, there is at least one item in the same category as this item with the name (url) of cms.ui.authoring.error_conflicts_with_this_url=There are conflicts with this URL. Specifically, there is at least one item in the same category as this item with the name (url) of
cms.ui.search.help=To search for content items, please enter at least 3 letters into the search field. You can narrow the result by using additional parameters. cms.ui.search.help=To search for content items, please enter at least 3 letters into the search field. You can narrow the result by using additional parameters.
cms.ui.search.no_results=Sorry. Not content items found which match your search. cms.ui.search.no_results=Sorry. Not content items found which match your search.
cms.ui.change_password=Change password

View File

@ -1064,3 +1064,4 @@ cms.ui.category.cantmoved=Diese Kategorie kann nicht verschoben werden
cms.ui.authoring.error_conflicts_with_this_url=Es gibt Konflikte mit dieser URL. Insbesondere gibt es mindestens ein Dokument in der gleichen Kategorie wie dieser mit dem Namen (URL) cms.ui.authoring.error_conflicts_with_this_url=Es gibt Konflikte mit dieser URL. Insbesondere gibt es mindestens ein Dokument in der gleichen Kategorie wie dieser mit dem Namen (URL)
cms.ui.search.help=Geben sie mindestens drei Buchstaben ein, um nach Content Items zu suchen. Sie k\u00f6nnen das Ergebnis mit weiteren Parametern einschr\u00e4nken. cms.ui.search.help=Geben sie mindestens drei Buchstaben ein, um nach Content Items zu suchen. Sie k\u00f6nnen das Ergebnis mit weiteren Parametern einschr\u00e4nken.
cms.ui.search.no_results=Es wurden keine Content Items gefunden, die Ihren Suchparametern entsprechen cms.ui.search.no_results=Es wurden keine Content Items gefunden, die Ihren Suchparametern entsprechen
cms.ui.change_password=Passwort \u00e4ndern

View File

@ -118,3 +118,4 @@ cms.ui.category.cantmoved=This category can't be moved
cms.ui.authoring.error_conflicts_with_this_url=There are conflicts with this URL. Specifically, there is at least one item in the same category as this item with the name (url) of cms.ui.authoring.error_conflicts_with_this_url=There are conflicts with this URL. Specifically, there is at least one item in the same category as this item with the name (url) of
cms.ui.search.help= cms.ui.search.help=
cms.ui.search.no_results= cms.ui.search.no_results=
cms.ui.change_password=

View File

@ -592,3 +592,4 @@ cms.ui.category.cantmoved=This category can't be moved
cms.ui.authoring.error_conflicts_with_this_url=There are conflicts with this URL. Specifically, there is atleast one item in the same category as this item with the name (url) of cms.ui.authoring.error_conflicts_with_this_url=There are conflicts with this URL. Specifically, there is atleast one item in the same category as this item with the name (url) of
cms.ui.search.help= cms.ui.search.help=
cms.ui.search.no_results= cms.ui.search.no_results=
cms.ui.change_password=

View File

@ -36,7 +36,8 @@ import org.apache.log4j.Logger;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
/** /**
* <p>Global navigation elements for the CMS admin UIs.</p> * <p>
* Global navigation elements for the CMS admin UIs.</p>
* *
* @author Justin Ross &lt;jross@redhat.com&gt; * @author Justin Ross &lt;jross@redhat.com&gt;
* @version $Id: GlobalNavigation.java 1942 2009-05-29 07:53:23Z terry $ * @version $Id: GlobalNavigation.java 1942 2009-05-29 07:53:23Z terry $
@ -44,85 +45,92 @@ 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(GlobalNavigation.class); private static final Logger s_log = Logger.getLogger(GlobalNavigation.class);
private final String m_centerPath; private final String m_adminPath;
private final String m_adminPath; private final String m_centerPath;
private final String m_wspcPath; private final String m_changePasswordPath;
private final String m_signOutPath; private final String m_helpPath;
private final String m_helpPath; private final String m_signOutPath;
private final String m_wspcPath;
/** /**
* *
*/ */
public GlobalNavigation() { public GlobalNavigation() {
m_centerPath = ContentCenter.getURL(); m_adminPath = Admin.getInstance().getServletPath();
m_adminPath = Admin.getInstance().getServletPath(); m_centerPath = ContentCenter.getURL();
m_wspcPath = UI.getWorkspaceURL(); m_changePasswordPath = LoginServlet.getChangePasswordPageURL();
m_signOutPath = LoginServlet.getLogoutPageURL(); m_helpPath = "/nowhere"; // We don't have this yet XXX.
m_helpPath = "/nowhere"; // We don't have this yet XXX. m_signOutPath = LoginServlet.getLogoutPageURL();
} m_wspcPath = UI.getWorkspaceURL();
}
/** /**
* *
* @param state * @param state
* @param parent * @param parent
*/ */
@Override @Override
public void generateXML(final PageState state, final Element parent) { public void generateXML(final PageState state, final Element parent) {
if (isVisible(state)) { if (isVisible(state)) {
final HttpServletRequest sreq = state.getRequest(); final HttpServletRequest sreq = state.getRequest();
final Element nav = parent.newChildElement("cms:globalNavigation", CMS.CMS_XML_NS); final Element nav = parent.newChildElement("cms:globalNavigation", CMS.CMS_XML_NS);
final String centerTitle = lz("cms.ui.content_center"); final String centerTitle = lz("cms.ui.content_center");
final String adminTitle = lz("cms.ui.admin_center"); final String adminTitle = lz("cms.ui.admin_center");
final String wspcTitle = lz("cms.ui.my_workspace"); final String wspcTitle = lz("cms.ui.my_workspace");
final String signOutTitle = lz("cms.ui.sign_out"); final String signOutTitle = lz("cms.ui.sign_out");
final String helpTitle = lz("cms.ui.help"); final String helpTitle = lz("cms.ui.help");
final String changePasswordTitle = lz("cms.ui.change_password");
link(sreq, nav, "cms:contentCenter", m_centerPath, centerTitle); link(sreq, nav, "cms:contentCenter", m_centerPath, centerTitle);
/* If the current user has admin permissions, insert a link to the admin center */ /* If the current user has admin permissions, insert a link to the admin center */
if (PermissionService.checkPermission(new PermissionDescriptor( if (PermissionService.checkPermission(new PermissionDescriptor(
PrivilegeDescriptor.ADMIN, PrivilegeDescriptor.ADMIN,
Admin.getInstance(), Admin.getInstance(),
Kernel.getContext().getParty()))) { Kernel.getContext().getParty()))) {
link(sreq, nav, "cms:adminCenter", m_adminPath, adminTitle); link(sreq, nav, "cms:adminCenter", m_adminPath, adminTitle);
} }
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:changePassword", m_changePasswordPath, changePasswordTitle);
link(sreq, nav, "cms:help", m_helpPath, helpTitle); link(sreq, nav, "cms:signOut", m_signOutPath, signOutTitle);
} 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, */
final Element parent, private static Element link(final HttpServletRequest sreq,
final String name, final Element parent,
final String path, final String name,
final String title) { final String path,
final Element link = parent.newChildElement(name, CMS.CMS_XML_NS); final String title) {
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
*
* @return
*/
private static String lz(final String key) {
return (String) ContentSectionPage.globalize(key).localize();
}
/**
*
* @param key
* @return
*/
private static String lz(final String key) {
return (String) ContentSectionPage.globalize(key).localize();
}
} }

View File

@ -28,3 +28,4 @@ com.arsdigita.ui.admin.applications.desc.valiation.minmaxlength=The maximum leng
com.arsdigita.ui.admin.applications.url.label=URL com.arsdigita.ui.admin.applications.url.label=URL
com.arsdigita.ui.admin.applications.title.label=Title com.arsdigita.ui.admin.applications.title.label=Title
com.arsdigita.ui.admin.applications.desc.label=Description com.arsdigita.ui.admin.applications.desc.label=Description
ui.change_password=Change password

View File

@ -28,3 +28,4 @@ com.arsdigita.ui.admin.applications.desc.valiation.minmaxlength=Die Beschreibung
com.arsdigita.ui.admin.applications.url.label=URL com.arsdigita.ui.admin.applications.url.label=URL
com.arsdigita.ui.admin.applications.title.label=Bezeichnung com.arsdigita.ui.admin.applications.title.label=Bezeichnung
com.arsdigita.ui.admin.applications.desc.label=Beschreibung com.arsdigita.ui.admin.applications.desc.label=Beschreibung
ui.change_password=Passwort \u00e4ndern

View File

@ -28,3 +28,4 @@ com.arsdigita.ui.admin.applications.desc.valiation.minmaxlength=
com.arsdigita.ui.admin.applications.url.label= com.arsdigita.ui.admin.applications.url.label=
com.arsdigita.ui.admin.applications.title.label= com.arsdigita.ui.admin.applications.title.label=
com.arsdigita.ui.admin.applications.desc.label= com.arsdigita.ui.admin.applications.desc.label=
ui.change_password=

View File

@ -24,3 +24,4 @@ com.arsdigita.ui.admin.applications.desc.valiation.minmaxlength=
com.arsdigita.ui.admin.applications.url.label= com.arsdigita.ui.admin.applications.url.label=
com.arsdigita.ui.admin.applications.title.label= com.arsdigita.ui.admin.applications.title.label=
com.arsdigita.ui.admin.applications.desc.label= com.arsdigita.ui.admin.applications.desc.label=
ui.change_password=

View File

@ -27,10 +27,12 @@ import com.arsdigita.web.URL;
import com.arsdigita.xml.Element; import com.arsdigita.xml.Element;
import com.arsdigita.ui.util.GlobalizationUtil; import com.arsdigita.ui.util.GlobalizationUtil;
import com.arsdigita.globalization.GlobalizedMessage; import com.arsdigita.globalization.GlobalizedMessage;
import com.arsdigita.ui.login.Login;
import com.arsdigita.ui.login.LoginServlet;
/** /**
* *
* *
*/ */
public class UserBanner extends SimpleComponent { public class UserBanner extends SimpleComponent {
@ -38,27 +40,29 @@ public class UserBanner extends SimpleComponent {
private static GlobalizedMessage s_signout; private static GlobalizedMessage s_signout;
private static GlobalizedMessage s_portal; private static GlobalizedMessage s_portal;
private static GlobalizedMessage s_greet; private static GlobalizedMessage s_greet;
private static GlobalizedMessage s_changePassword;
private static boolean initialized = false; private static boolean initialized = false;
/** /**
* *
*/ */
static void init() { static void init() {
if (initialized) { if (initialized) {
return; return;
} }
s_help = GlobalizationUtil.globalize("ui.admin.help"); s_help = GlobalizationUtil.globalize("ui.admin.help");
s_signout = GlobalizationUtil.globalize("ui.admin.signout"); s_signout = GlobalizationUtil.globalize("ui.admin.signout");
s_portal = GlobalizationUtil.globalize("ui.admin.portal"); s_portal = GlobalizationUtil.globalize("ui.admin.portal");
s_greet = GlobalizationUtil.globalize("ui.admin.greeting"); s_greet = GlobalizationUtil.globalize("ui.admin.greeting");
s_changePassword = GlobalizationUtil.globalize("ui.change_password");
initialized = true; initialized = true;
} }
/** /**
* *
* @param state * @param state
* @param parent * @param parent
*/ */
@ -73,32 +77,34 @@ public class UserBanner extends SimpleComponent {
exportAttributes(content); exportAttributes(content);
if (party != null && party instanceof User) { if (party != null && party instanceof User) {
User user = (User)party; User user = (User) party;
content.addAttribute("givenName", content.addAttribute("givenName",
user.getPersonName().getGivenName()); user.getPersonName().getGivenName());
content.addAttribute("familyName", content.addAttribute("familyName",
user.getPersonName().getFamilyName()); user.getPersonName().getFamilyName());
content.addAttribute("screenName", content.addAttribute("screenName",
user.getScreenName()); user.getScreenName());
content.addAttribute("primaryEmail", content.addAttribute("primaryEmail",
user.getPrimaryEmail().toString()); user.getPrimaryEmail().toString());
content.addAttribute("userID", content.addAttribute("userID",
user.getOID().toString()); user.getOID().toString());
} }
content.addAttribute("changePasswordLabel",
(String) s_changePassword.localize(state.getRequest()));
content.addAttribute("helpLabel", content.addAttribute("helpLabel",
(String)s_help.localize(state.getRequest())); (String) s_help.localize(state.getRequest()));
content.addAttribute("portalLabel", content.addAttribute("portalLabel",
(String)s_portal.localize(state.getRequest())); (String) s_portal.localize(state.getRequest()));
content.addAttribute("signoutLabel", content.addAttribute("signoutLabel",
(String)s_signout.localize(state.getRequest())); (String) s_signout.localize(state.getRequest()));
content.addAttribute("greeting", content.addAttribute("greeting",
(String)s_greet.localize(state.getRequest())); (String) s_greet.localize(state.getRequest()));
content.addAttribute( content.addAttribute(
"workspaceURL", "workspaceURL",
@ -110,20 +116,25 @@ public class UserBanner extends SimpleComponent {
content.addAttribute( content.addAttribute(
"loginURL", "loginURL",
URL.there(state.getRequest(), URL.there(state.getRequest(),
UI.getLoginPageURL()).toString()); Login.getLoginPageURL()).toString());
// LegacyInitializer.getFullURL(LegacyInitializer.LOGIN_PAGE_KEY, // LegacyInitializer.getFullURL(LegacyInitializer.LOGIN_PAGE_KEY,
// state.getRequest())).toString()); // state.getRequest())).toString());
content.addAttribute( content.addAttribute(
"loginExcursionURL", "loginExcursionURL",
URL.excursion(state.getRequest(), URL.excursion(state.getRequest(),
UI.getLoginPageURL()).toString()); Login.getLoginPageURL()).toString());
// LegacyInitializer.getFullURL(LegacyInitializer.LOGIN_PAGE_KEY, // LegacyInitializer.getFullURL(LegacyInitializer.LOGIN_PAGE_KEY,
// state.getRequest())).toString()); // state.getRequest())).toString());
content.addAttribute( content.addAttribute(
"logoutURL", "logoutURL",
URL.there(state.getRequest(),UI.getLogoutPageURL()).toString()); URL.there(state.getRequest(), LoginServlet.getLogoutPageURL()).toString());
content.addAttribute("changePasswordURL",
URL.there(state.getRequest(),
LoginServlet.getChangePasswordPageURL()).toString());
} }
} }

View File

@ -16,7 +16,6 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* *
*/ */
package com.arsdigita.ui.login; package com.arsdigita.ui.login;
import com.arsdigita.bebop.Component; import com.arsdigita.bebop.Component;
@ -41,70 +40,75 @@ import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
/** /**
* Login Application Servlet class, central entry point to create and process * Login Application Servlet class, central entry point to create and process the Login application
* the Login application UI. * UI.
* *
* It manages user registration page, new user page, user workspace, logout, * It manages user registration page, new user page, user workspace, logout, and permissions admin
* and permissions admin pages. * pages.
* *
* It just defines a mapping URL <-> various pages and uses the super class * It just defines a mapping URL <-> various pages and uses the super class to actually server the
* to actually server the pages. Additionally is provides service methods * pages. Additionally is provides service methods to expose various properties, especially the
* to expose various properties, especially the URL's of public subpages * URL's of public subpages (e.g. logout) and initializes the creation of the UI.
* (e.g. logout) and initializes the creation of the UI. *
*
* @author Peter Boy <pboy@barkhof.uni-bremen.de> * @author Peter Boy <pboy@barkhof.uni-bremen.de>
* @version $Id: LoginServlet.java 2161 2012-03-15 00:16:13Z pboy $ * @version $Id: LoginServlet.java 2161 2012-03-15 00:16:13Z pboy $
*/ */
public class LoginServlet extends BebopApplicationServlet { public class LoginServlet extends BebopApplicationServlet {
/** Logger instance for debugging */ /**
* Logger instance for debugging
*/
private static final Logger s_log = Logger.getLogger(LoginServlet.class); private static final Logger s_log = Logger.getLogger(LoginServlet.class);
// //////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////
// Define various URLs to subpages of Login to manage administrative tasks. // Define various URLs to subpages of Login to manage administrative tasks.
// //////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////
/**
/** PathInfo into the Login application to access the (optional) newUser * * PathInfo into the Login application to access the (optional) newUser * page. Ends with "/"
* page. Ends with "/" because it is a servlet/directory */ * because it is a servlet/directory
*/
public static final String EDIT_USER_PROFILE_PATH_INFO = "/edit-profile/"; public static final String EDIT_USER_PROFILE_PATH_INFO = "/edit-profile/";
/** PathInfo into the Login application to access the (optional) newUser * /**
* page. Ends with "/" because it is a servlet/directory */ * PathInfo into the Login application to access the (optional) newUser * page. Ends with "/"
* because it is a servlet/directory
*/
public static final String NEW_USER_PATH_INFO = "/new-user/"; public static final String NEW_USER_PATH_INFO = "/new-user/";
/** PathInfo into the Login application to access the (optional) newUser * /**
* page. Ends with "/" because it is a servlet/directory */ * PathInfo into the Login application to access the (optional) newUser * page. Ends with "/"
* because it is a servlet/directory
*/
public static final String CHANGE_USER_PASSWORD_PATH_INFO = "/change-password/"; public static final String CHANGE_USER_PASSWORD_PATH_INFO = "/change-password/";
/** PathInfo into the Login application to access the (optional) newUser /**
* page. Ends with "/" because it is a servlet/directory * PathInfo into the Login application to access the (optional) newUser page. Ends with "/"
* because it is a servlet/directory
*/ */
public static final String RECOVER_USER_PASSWORD_PATH_INFO = "/recover-password/"; public static final String RECOVER_USER_PASSWORD_PATH_INFO = "/recover-password/";
/** PathInfo into the Login application to access the (optional) newUser /**
* page. Ends with "/" because it is a servlet/directory * PathInfo into the Login application to access the (optional) newUser page. Ends with "/"
* because it is a servlet/directory
*/ */
public static final String EXPLAIN_PERSISTENT_COOKIES_PATH_INFO = public static final String EXPLAIN_PERSISTENT_COOKIES_PATH_INFO = "/explain-persistent-cookies/";
"/explain-persistent-cookies/";
/** PathInfo into the Login application to access the (optional) newUser /**
* page. Ends with "/" because it is a servlet/directory * PathInfo into the Login application to access the (optional) newUser page. Ends with "/"
* because it is a servlet/directory
*/ */
public static final String LOGIN_EXPIRED_PATH_INFO = "/login-expired/"; public static final String LOGIN_EXPIRED_PATH_INFO = "/login-expired/";
/** PathInfo into the Login application to access the (optional) newUser /**
* page. Ends with "/" because it is a servlet/directory * PathInfo into the Login application to access the (optional) newUser page. Ends with "/"
* because it is a servlet/directory
*/ */
public static final String LOGOUT_PATH_INFO = "/logout/"; public static final String LOGOUT_PATH_INFO = "/logout/";
/**
* Base URL of the Login application for internal use, fetched from Login domain class.
/** Base URL of the Login application for internal use, fetched from */
* Login domain class. */
private final static String s_loginURL = Login.LOGIN_PAGE_URL; private final static String s_loginURL = Login.LOGIN_PAGE_URL;
// define namespace URI // define namespace URI
@ -113,10 +117,9 @@ public class LoginServlet extends BebopApplicationServlet {
public static final String APPLICATION_NAME = "login"; public static final String APPLICATION_NAME = "login";
/** /**
* User extension point used to create the pages to server and setup a * User extension point used to create the pages to server and setup a URL - page mapping.
* URL - page mapping. *
* * @throws ServletException
* @throws ServletException
*/ */
@Override @Override
public void doInit() throws ServletException { public void doInit() throws ServletException {
@ -130,23 +133,23 @@ public class LoginServlet extends BebopApplicationServlet {
/* Create and add login page (index page of Login application) to the /* Create and add login page (index page of Login application) to the
* page map. KernelSecurityConfig determines whether to create a link * page map. KernelSecurityConfig determines whether to create a link
* to a NewUserRegistrationForm or to skip. */ * to a NewUserRegistrationForm or to skip. */
put("/" , put("/",
buildSimplePage("login.userRegistrationForm.title", buildSimplePage("login.userRegistrationForm.title",
new UserLoginForm( Kernel.getSecurityConfig() new UserLoginForm(Kernel.getSecurityConfig()
.isAutoRegistrationOn() ), .isAutoRegistrationOn()),
"login")); "login"));
disableClientCaching("/"); disableClientCaching("/");
/* Create and add userEditPage to the page map. */ /* Create and add userEditPage to the page map. */
put(EDIT_USER_PROFILE_PATH_INFO, put(EDIT_USER_PROFILE_PATH_INFO,
buildSimplePage("login.userEditPage.title", buildSimplePage("login.userEditPage.title",
new UserEditForm(), "edit") ); new UserEditForm(), "edit"));
disableClientCaching(EDIT_USER_PROFILE_PATH_INFO); disableClientCaching(EDIT_USER_PROFILE_PATH_INFO);
/* Determines if a NewUserRegistrationForm has to be created by quering /* Determines if a NewUserRegistrationForm has to be created by quering
* Kernel.getSecurityConfig() and acts appropriately */ * Kernel.getSecurityConfig() and acts appropriately */
if (Kernel.getSecurityConfig().isAutoRegistrationOn()) { if (Kernel.getSecurityConfig().isAutoRegistrationOn()) {
put(NEW_USER_PATH_INFO, put(NEW_USER_PATH_INFO,
buildSimplePage("login.userNewForm.title", buildSimplePage("login.userNewForm.title",
new UserNewForm(), new UserNewForm(),
"register")); "register"));
@ -154,21 +157,21 @@ public class LoginServlet extends BebopApplicationServlet {
} }
/* Create ExplainPersistentCookiesPage and add to the page map */ /* Create ExplainPersistentCookiesPage and add to the page map */
put(EXPLAIN_PERSISTENT_COOKIES_PATH_INFO, put(EXPLAIN_PERSISTENT_COOKIES_PATH_INFO,
buildSimplePage("login.explainCookiesPage.title", buildSimplePage("login.explainCookiesPage.title",
new ElementComponent("subsite:explainPersistentCookies", new ElementComponent("subsite:explainPersistentCookies",
SUBSITE_NS_URI), SUBSITE_NS_URI),
"cookies")); "cookies"));
/* Create ChangeUserPasswordPage and add to the page map */ /* Create ChangeUserPasswordPage and add to the page map */
put(CHANGE_USER_PASSWORD_PATH_INFO, put(CHANGE_USER_PASSWORD_PATH_INFO,
buildSimplePage("login.changePasswordPage.title", buildSimplePage("login.changePasswordPage.title",
new ChangePasswordForm(), new ChangePasswordForm(),
"changepassword")); "changepassword"));
disableClientCaching(CHANGE_USER_PASSWORD_PATH_INFO); disableClientCaching(CHANGE_USER_PASSWORD_PATH_INFO);
/* Build the password recover page, retrieve its URL and store in map */ /* Build the password recover page, retrieve its URL and store in map */
put(RECOVER_USER_PASSWORD_PATH_INFO, put(RECOVER_USER_PASSWORD_PATH_INFO,
buildSimplePage("login.recoverPasswordPage.title", buildSimplePage("login.recoverPasswordPage.title",
new RecoverPasswordPanel(), new RecoverPasswordPanel(),
"recoverpassword")); "recoverpassword"));
@ -180,7 +183,6 @@ public class LoginServlet extends BebopApplicationServlet {
put(LOGOUT_PATH_INFO, buildLogOutPage()); put(LOGOUT_PATH_INFO, buildLogOutPage());
disableClientCaching(LOGOUT_PATH_INFO); disableClientCaching(LOGOUT_PATH_INFO);
Page workspace = checkForPageSubClass(); Page workspace = checkForPageSubClass();
if (workspace == null) { if (workspace == null) {
workspace = buildSimplePage("login.workspacePage.title", workspace = buildSimplePage("login.workspacePage.title",
@ -202,37 +204,37 @@ public class LoginServlet extends BebopApplicationServlet {
} }
/** /**
* Check wether a custom base Page class (top-level container for all Bebop * Check wether a custom base Page class (top-level container for all Bebop components and
* components and containersPages) is configured and return the appropriate * containersPages) is configured and return the appropriate Page. Here used (only) for
* Page. Here used (only) for UserInfo() workspace. * UserInfo() workspace.
* *
* @return Page to use for top-level container for all Bebop components and * @return Page to use for top-level container for all Bebop components and containersPage, null
* containersPage, null to use default class * to use default class
*/ */
private static Page checkForPageSubClass() { private static Page checkForPageSubClass() {
//check to see if there is subclass of Page defined in Config //check to see if there is subclass of Page defined in Config
DispatcherConfig dc = DispatcherHelper.getConfig(); DispatcherConfig dc = DispatcherHelper.getConfig();
String pageClass = dc.getDefaultPageClass(); String pageClass = dc.getDefaultPageClass();
Page p = null; Page p = null;
if (!pageClass.equals("com.arsdigita.bebop.Page")) { if (!pageClass.equals("com.arsdigita.bebop.Page")) {
try { try {
// afraid that we're assuming a no-arg constructor // afraid that we're assuming a no-arg constructor
Class c = Class.forName(pageClass); Class c = Class.forName(pageClass);
p = (Page)c.newInstance(); p = (Page) c.newInstance();
} catch (Exception e) { } catch (Exception e) {
s_log.error("Unable to instantiate waf.dispatcher.default_page_class",e); s_log.error("Unable to instantiate waf.dispatcher.default_page_class", e);
} }
} }
return p; return p;
} }
/** /**
* Creates a Page with the given title and body component. * Creates a Page with the given title and body component.
* *
* @return the new Page * @return the new Page
**/ *
*/
private static Page buildSimplePage(String title, Component body, String id) { private static Page buildSimplePage(String title, Component body, String id) {
Page page = PageFactory.buildPage(APPLICATION_NAME, Page page = PageFactory.buildPage(APPLICATION_NAME,
@ -244,160 +246,150 @@ public class LoginServlet extends BebopApplicationServlet {
} }
/** /**
* Creates a page informing the user the login has expired. Provides links * Creates a page informing the user the login has expired. Provides links to login again, etc.
* to login again, etc. *
*
* @return Page (login expired info) * @return Page (login expired info)
*/ */
private static Page buildExpiredPage() { private static Page buildExpiredPage() {
Page page = PageFactory.buildPage( Page page = PageFactory.buildPage(
APPLICATION_NAME, APPLICATION_NAME,
new Label(LoginHelper.getMessage("login.loginExpiredPage.title")) new Label(LoginHelper.getMessage("login.loginExpiredPage.title"))
); );
page.add(new SimpleContainer() { page.add(new SimpleContainer() {
{ // constructor { // constructor
add(new Label(LoginHelper.getMessage add(new Label(LoginHelper.getMessage("login.loginExpiredPage.before")));
("login.loginExpiredPage.before"))); add(new DynamicLink("login.loginExpiredPage.link",
add(new DynamicLink("login.loginExpiredPage.link", Login.getLoginPageURL()));
Login.getLoginPageURL() )); add(new Label(LoginHelper.getMessage("login.loginExpiredPage.after")));
add(new Label(LoginHelper.getMessage add(new ElementComponent("subsite:explainLoginExpired",
("login.loginExpiredPage.after"))); SUBSITE_NS_URI));
add(new ElementComponent("subsite:explainLoginExpired", }
SUBSITE_NS_URI));
} });
});
page.lock(); page.lock();
return page; return page;
} }
/** /**
* *
* @return * @return
*/ */
private static Page buildLogOutPage() { private static Page buildLogOutPage() {
Page page = PageFactory.buildPage( Page page = PageFactory.buildPage(
APPLICATION_NAME, APPLICATION_NAME,
new Label(LoginHelper.getMessage("Logout")) new Label(LoginHelper.getMessage("Logout"))
); );
page.addActionListener(new UserLogoutListener()); page.addActionListener(new UserLogoutListener());
page.addActionListener(new ActionListener() { page.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) { public void actionPerformed(ActionEvent event) {
final PageState state = event.getPageState(); final PageState state = event.getPageState();
final HttpServletRequest req = state.getRequest(); final HttpServletRequest req = state.getRequest();
final String path = UI.getRootPageURL(req); final String path = UI.getRootPageURL(req);
throw new ReturnSignal(req, URL.there(req, path)); throw new ReturnSignal(req, URL.there(req, path));
} }
});
});
page.lock(); page.lock();
return page; return page;
} }
/** /**
* Provides an (absolute) URL to a user profile editig page. * Provides an (absolute) URL to a user profile editig page. It is relative to document root
* It is relative to document root without any constant prefix if there is * without any constant prefix if there is one configured.
* one configured.
* *
* XXX This implementation starts with a leading slash and ends with a slash. * XXX This implementation starts with a leading slash and ends with a slash. In previous
* In previous configurations String urls began without a slash in order * configurations String urls began without a slash in order to be able to provide a full URL
* to be able to provide a full URL which also contains the context part. * which also contains the context part. Since version 5.2 the context part is handled by (new)
* Since version 5.2 the context part is handled by (new) dispatcher. * dispatcher. The leading slash it API change! It's impacts have to be checked. (2011-02)
* The leading slash it API change! It's impacts have to be checked. (2011-02)
* *
* @return url to EditUserProfile page as String * @return url to EditUserProfile page as String
*/ */
public static String getEditUserProfilePageURL() { public static String getEditUserProfilePageURL() {
return s_loginURL + EDIT_USER_PROFILE_PATH_INFO; return s_loginURL + EDIT_USER_PROFILE_PATH_INFO;
}
public static String getChangePasswordPageURL() {
return s_loginURL + CHANGE_USER_PASSWORD_PATH_INFO;
} }
/** /**
* Provides an (absolute URL) to an optional new user registration page * Provides an (absolute URL) to an optional new user registration page (accessible only if
* (accessible only if activated). It is relative to document root * activated). It is relative to document root without any constant prefix if there is one
* without any constant prefix if there is one configured. * configured.
* *
* XXX This implementation starts with a leading slash and ends with a slash. * XXX This implementation starts with a leading slash and ends with a slash. In previous
* In previous configurations String urls began without a slash in order * configurations String urls began without a slash in order to be able to provide a full URL
* to be able to provide a full URL which also contains the context part. * which also contains the context part. Since version 5.2 the context part is handled by (new)
* Since version 5.2 the context part is handled by (new) dispatcher. * dispatcher. The leading slash it API change! It's impacts have to be checked. (2011-02)
* The leading slash it API change! It's impacts have to be checked. (2011-02)
* *
* @return url to new user registration page as String * @return url to new user registration page as String
*/ */
public static String getNewUserPageURL() { public static String getNewUserPageURL() {
return s_loginURL + NEW_USER_PATH_INFO; return s_loginURL + NEW_USER_PATH_INFO;
} }
/** /**
* Provides an absolute URL (leading slash) for a password recovery page. * Provides an absolute URL (leading slash) for a password recovery page. It is relative to
* It is relative to document root without any constant prefix if there is * document root without any constant prefix if there is one configured.
* one configured.
* *
* XXX This implementation starts with a leading slash and ends with a slash. * XXX This implementation starts with a leading slash and ends with a slash. In previous
* In previous configurations String urls began without a slash in order * configurations String urls began without a slash in order to be able to provide a full URL
* to be able to provide a full URL which also contains the context part. * which also contains the context part. Since version 5.2 the context part is handled by (new)
* Since version 5.2 the context part is handled by (new) dispatcher. * dispatcher. The leading slash it API change! It's impacts have tp be checked. (2011-02)
* The leading slash it API change! It's impacts have tp be checked. (2011-02)
* *
* @return url String for new user registration page as String * @return url String for new user registration page as String
*/ */
public static String getRecoverPasswordPageURL() { public static String getRecoverPasswordPageURL() {
return s_loginURL + RECOVER_USER_PASSWORD_PATH_INFO; return s_loginURL + RECOVER_USER_PASSWORD_PATH_INFO;
} }
/** /**
* Provides an absolute URL (leading slash) for a cookie explanation page. * Provides an absolute URL (leading slash) for a cookie explanation page. It is relative to
* It is relative to document root without any constant prefix if there is * document root without any constant prefix if there is one configured.
* one configured.
* *
* XXX This implementation starts with a leading slash and ends with a slash. * XXX This implementation starts with a leading slash and ends with a slash. In previous
* In previous configurations String urls began without a slash in order * configurations String urls began without a slash in order to be able to provide a full URL
* to be able to provide a full URL which also contains the context part. * which also contains the context part. Since version 5.2 the context part is handled by (new)
* Since version 5.2 the context part is handled by (new) dispatcher. * dispatcher. The leading slash it API change! It's impacts have tp be checked. (2011-02)
* The leading slash it API change! It's impacts have tp be checked. (2011-02)
* *
* @return url String for new user registration page as String * @return url String for new user registration page as String
*/ */
public static String getCookiesExplainPageURL() { public static String getCookiesExplainPageURL() {
return s_loginURL + EXPLAIN_PERSISTENT_COOKIES_PATH_INFO; return s_loginURL + EXPLAIN_PERSISTENT_COOKIES_PATH_INFO;
} }
/** /**
* Provides an absolute URL (leading slash) for a login expired info page. * Provides an absolute URL (leading slash) for a login expired info page. It is relative to
* It is relative to document root without any constant prefix if there is * document root without any constant prefix if there is one configured.
* one configured.
* *
* XXX This implementation starts with a leading slash and ends with a slash. * XXX This implementation starts with a leading slash and ends with a slash. In previous
* In previous configurations String urls began without a slash in order * configurations String urls began without a slash in order to be able to provide a full URL
* to be able to provide a full URL which also contains the context part. * which also contains the context part. Since version 5.2 the context part is handled by (new)
* Since version 5.2 the context part is handled by (new) dispatcher. * dispatcher. The leading slash it API change! It's impacts have tp be checked. (2011-02)
* The leading slash it API change! It's impacts have tp be checked. (2011-02)
* *
* @return url String for new user registration page as String * @return url String for new user registration page as String
*/ */
public static String getLoginExpiredPageURL() { public static String getLoginExpiredPageURL() {
return s_loginURL + LOGIN_EXPIRED_PATH_INFO; return s_loginURL + LOGIN_EXPIRED_PATH_INFO;
} }
/** /**
* Provides an absolute URL (leading slash) for the system logout page. It * Provides an absolute URL (leading slash) for the system logout page. It is relative to
* is relative to document root without any constant prefix if there is one * document root without any constant prefix if there is one configured.
* configured.
* *
* XXX This implementation starts with a leading slash and ends with a slash. * XXX This implementation starts with a leading slash and ends with a slash. In previous
* In previous configurations String urls began without a slash in order * configurations String urls began without a slash in order to be able to provide a full URL
* to be able to provide a full URL which also contains the context part. * which also contains the context part. Since version 5.2 the context part is handled by (new)
* Since version 5.2 the context part is handled by (new) dispatcher. * dispatcher. The leading slash it API change! It's impacts have tp be checked. (2011-02)
* The leading slash it API change! It's impacts have tp be checked. (2011-02)
* *
* @return URL for logout page as String * @return URL for logout page as String
*/ */
public static String getLogoutPageURL() { public static String getLogoutPageURL() {
return s_loginURL + LOGOUT_PATH_INFO; return s_loginURL + LOGOUT_PATH_INFO;
} }
} }

View File

@ -1,6 +1,6 @@
com.arsdigita.cms.contentassets.about.discusses.label=Discusses com.arsdigita.cms.contentassets.about.discusses.label=Discussed publications
com.arsdigita.cms.contentassets.about.discussing.label=Discussed by com.arsdigita.cms.contentassets.about.discussing.label=Discussing publications
com.arsdigita.cms.contentassets.about.discusses.add=Add a discussed publication com.arsdigita.cms.contentassets.about.discusses.add=Add a discussed publication
com.arsdigita.cms.contentassets.about.discusses.none=No publications found com.arsdigita.cms.contentassets.about.discusses.none=No publications found
com.arsdigita.cms.contentassets.about.discusses.publication=Publication com.arsdigita.cms.contentassets.about.discusses.publication=Publication

View File

@ -1,5 +1,5 @@
com.arsdigita.cms.contentassets.about.discusses.label=Behandelt com.arsdigita.cms.contentassets.about.discusses.label=Behandelte Publikationen
com.arsdigita.cms.contentassets.about.discussing.label=Wird behandelt in com.arsdigita.cms.contentassets.about.discussing.label=Wird behandelt in
com.arsdigita.cms.contentassets.about.discusses.add=Behandelte Publikation hinzuf\u00fcgen com.arsdigita.cms.contentassets.about.discusses.add=Behandelte Publikation hinzuf\u00fcgen
com.arsdigita.cms.contentassets.about.discusses.none=Keine Publikationen gefunden com.arsdigita.cms.contentassets.about.discusses.none=Keine Publikationen gefunden

View File

@ -31,92 +31,98 @@
<!-- Autor: Sören Bernstein --> <!-- Autor: Sören Bernstein -->
<xsl:stylesheet <xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:bebop="http://www.arsdigita.com/bebop/1.0" xmlns:bebop="http://www.arsdigita.com/bebop/1.0"
xmlns:cms="http://www.arsdigita.com/cms/1.0" xmlns:cms="http://www.arsdigita.com/cms/1.0"
xmlns:nav="http://ccm.redhat.com/navigation" xmlns:nav="http://ccm.redhat.com/navigation"
xmlns:mandalay="http://mandalay.quasiweb.de" xmlns:mandalay="http://mandalay.quasiweb.de"
exclude-result-prefixes="xsl bebop cms nav mandalay" exclude-result-prefixes="xsl bebop cms nav mandalay"
version="1.0"> version="1.0">
<!-- DE Das Menü --> <!-- DE Das Menü -->
<!-- EN The menu --> <!-- EN The menu -->
<xsl:template match="cms:globalNavigation"> <xsl:template match="cms:globalNavigation">
<xsl:param name="layoutTree" select="."/> <xsl:param name="layoutTree" select="."/>
<xsl:variable name="setLayout"> <xsl:variable name="setLayout">
<xsl:call-template name="mandalay:getSetting"> <xsl:call-template name="mandalay:getSetting">
<xsl:with-param name="node" select="$layoutTree/setLayout"/> <xsl:with-param name="node" select="$layoutTree/setLayout"/>
<xsl:with-param name="module" select="'cms'"/> <xsl:with-param name="module" select="'cms'"/>
<xsl:with-param name="setting" select="'globalNavigation/setLayout'"/> <xsl:with-param name="setting" select="'globalNavigation/setLayout'"/>
<xsl:with-param name="default" select="'horizontal'"/> <xsl:with-param name="default" select="'horizontal'"/>
</xsl:call-template> </xsl:call-template>
</xsl:variable> </xsl:variable>
<div class="cmsGlobalNavigation"> <div class="cmsGlobalNavigation">
<xsl:choose> <xsl:choose>
<xsl:when test="$setLayout = 'horizontal'"> <xsl:when test="$setLayout = 'horizontal'">
<xsl:apply-templates/> <xsl:apply-templates/>
</xsl:when> </xsl:when>
<xsl:otherwise> <xsl:otherwise>
<ul> <ul>
<xsl:for-each select="*"> <xsl:for-each select="*">
<li> <li>
<xsl:apply-templates/> <xsl:apply-templates/>
</li> </li>
</xsl:for-each> </xsl:for-each>
</ul> </ul>
</xsl:otherwise> </xsl:otherwise>
</xsl:choose> </xsl:choose>
</div> </div>
</xsl:template> </xsl:template>
<!-- DE --> <!-- DE -->
<!-- EN --> <!-- EN -->
<xsl:template match="cms:contentCenter"> <xsl:template match="cms:contentCenter">
<span class="cmsGlobalNavigationContentCenter"> <span class="cmsGlobalNavigationContentCenter">
<xsl:call-template name="cms:globalNavigationEntry"/> <xsl:call-template name="cms:globalNavigationEntry"/>
</span> </span>
</xsl:template> </xsl:template>
<!-- DE --> <!-- DE -->
<!-- EN --> <!-- EN -->
<xsl:template match="cms:adminCenter"> <xsl:template match="cms:adminCenter">
<span class="cmsGlobalNavigationAdminCenter"> <span class="cmsGlobalNavigationAdminCenter">
<xsl:call-template name="cms:globalNavigationEntry"/> <xsl:call-template name="cms:globalNavigationEntry"/>
</span> </span>
</xsl:template> </xsl:template>
<!-- DE --> <!-- DE -->
<!-- EN --> <!-- EN -->
<xsl:template match="cms:workspace"> <xsl:template match="cms:workspace">
<span class="cmsGlobalNavigationWorkspace"> <span class="cmsGlobalNavigationWorkspace">
<xsl:call-template name="cms:globalNavigationEntry"/> <xsl:call-template name="cms:globalNavigationEntry"/>
</span> </span>
</xsl:template> </xsl:template>
<!-- DE --> <xsl:template match="cms:changePassword">
<!-- EN --> <span class="cmsGlobalNavigationChangePassword">
<xsl:template match="cms:signOut"> <xsl:call-template name="cms:globalNavigationEntry"/>
<span class="cmsGlobalNavigationSignOut"> </span>
<xsl:call-template name="cms:globalNavigationEntry"/> </xsl:template>
</span>
</xsl:template>
<!-- DE --> <!-- DE -->
<!-- EN --> <!-- EN -->
<xsl:template match="cms:help"> <xsl:template match="cms:signOut">
<span class="cmsGlobalNavigationHelp"> <span class="cmsGlobalNavigationSignOut">
<xsl:call-template name="cms:globalNavigationEntry"/> <xsl:call-template name="cms:globalNavigationEntry"/>
</span> </span>
</xsl:template> </xsl:template>
<!-- DE Erzeuge den Link --> <!-- DE -->
<!-- EN Create the link --> <!-- EN -->
<xsl:template name="cms:globalNavigationEntry"> <xsl:template match="cms:help">
<a href="{@href}"> <span class="cmsGlobalNavigationHelp">
<xsl:value-of select="@title"/> <xsl:call-template name="cms:globalNavigationEntry"/>
</a> </span>
</xsl:template> </xsl:template>
<!-- DE Erzeuge den Link -->
<!-- EN Create the link -->
<xsl:template name="cms:globalNavigationEntry">
<a href="{@href}">
<xsl:value-of select="@title"/>
</a>
</xsl:template>
</xsl:stylesheet> </xsl:stylesheet>

View File

@ -52,7 +52,12 @@
<script type="text/javascript" src="/assets/fancybox/jquery.mousewheel.pack.js"/> <script type="text/javascript" src="/assets/fancybox/jquery.mousewheel.pack.js"/>
<link rel="stylesheet" href="/assets/fancybox/jquery.fancybox-1.3.4.css" type="text/css" media="screen"/> <link rel="stylesheet" href="/assets/fancybox/jquery.fancybox-1.3.4.css" type="text/css" media="screen"/>
<script type="text/javascript">$(document).ready(function() {$("a.imageZoom").fancybox({'type':'image'}); $("a.imageGallery").fancybox({'type':'image'});});</script> <script type="text/javascript">
$(document).ready(function() {
$("a.imageZoom").fancybox({'type':'image'});
$("a.imageGallery").fancybox({'type':'image'});
});
</script>
<!-- <!--
</xsl:if> </xsl:if>
--> -->

View File

@ -804,6 +804,21 @@
<xsl:template match="useWorkspaceLink"> <xsl:template match="useWorkspaceLink">
<xsl:apply-templates select="$resultTree/cms:globalNavigation/cms:workspace"/> <xsl:apply-templates select="$resultTree/cms:globalNavigation/cms:workspace"/>
</xsl:template> </xsl:template>
<xsl:template match="useChangePasswordLink">
<xsl:choose>
<xsl:when test="$resultTree/cms:globalNavigation">
<xsl:apply-templates select="$resultTree/cms:globalNavigation/cms:changePassword"/>
</xsl:when>
<xsl:when test="$resultTree/ui:userBanner">
<span class="cmsGlobalNavigationChangePassword">
<a href="{$resultTree/ui:userBanner/@changePasswordURL}">
<xsl:apply-templates select="$resultTree/ui:userBanner/@changePasswordLabel"/>
</a>
</span>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template match="useLogoutLink"> <xsl:template match="useLogoutLink">
<xsl:choose> <xsl:choose>

View File

@ -47,6 +47,7 @@
<div id="userwidget" class="cmsHeaderMenu"> <div id="userwidget" class="cmsHeaderMenu">
<showCMSGreeting/> <showCMSGreeting/>
<showCMSGlobalNavigation> <showCMSGlobalNavigation>
<useChangePasswordLink/>
<useLogoutLink/> <useLogoutLink/>
</showCMSGlobalNavigation> </showCMSGlobalNavigation>
</div> </div>

View File

@ -29,10 +29,10 @@
version="1.0"> version="1.0">
<!-- DE Leadtext --> <!-- DE Leadtext -->
<!-- EN lead text view --> <!-- EN lead text view -->
<xsl:template match="cms:item[objectType='com.arsdigita.cms.contenttypes.SciOrganization']" mode="lead"> <xsl:template match="cms:item[objectType='com.arsdigita.cms.contenttypes.SimpleOrganization']" mode="lead">
<xsl:variable name="setLeadText"> <xsl:variable name="setLeadText">
<xsl:call-template name="mandalay:getSetting"> <xsl:call-template name="mandalay:getSetting">
<xsl:with-param name="module" select="'SciOrganization'"/> <xsl:with-param name="module" select="'SimpleOrganization'"/>
<xsl:with-param name="setting" select="'setLeadText'"/> <xsl:with-param name="setting" select="'setLeadText'"/>
<xsl:with-param name="default" select="'true'"/> <xsl:with-param name="default" select="'true'"/>
</xsl:call-template> </xsl:call-template>
@ -47,34 +47,34 @@
<!-- DE Bild --> <!-- DE Bild -->
<!-- EN image --> <!-- EN image -->
<xsl:template match="cms:item[objectType='com.arsdigita.cms.contenttypes.SciOrganization']" mode="image"> <xsl:template match="cms:item[objectType='com.arsdigita.cms.contenttypes.SimpleOrganization']" mode="image">
<!-- DE Hole alle benötigten Einstellungen--> <!-- DE Hole alle benötigten Einstellungen-->
<!-- EN Getting all needed setting--> <!-- EN Getting all needed setting-->
<xsl:variable name="setImage"> <xsl:variable name="setImage">
<xsl:call-template name="mandalay:getSetting"> <xsl:call-template name="mandalay:getSetting">
<xsl:with-param name="module" select="'SciOrganization'"/> <xsl:with-param name="module" select="'SimpleOrganization'"/>
<xsl:with-param name="setting" select="'setImage'"/> <xsl:with-param name="setting" select="'setImage'"/>
<xsl:with-param name="default" select="'true'"/> <xsl:with-param name="default" select="'true'"/>
</xsl:call-template> </xsl:call-template>
</xsl:variable> </xsl:variable>
<xsl:variable name="setImageMaxHeight"> <xsl:variable name="setImageMaxHeight">
<xsl:call-template name="mandalay:getSetting"> <xsl:call-template name="mandalay:getSetting">
<xsl:with-param name="module" select="'SciOrganization'"/> <xsl:with-param name="module" select="'SimpleOrganization'"/>
<xsl:with-param name="setting" select="'setImageMaxHeight'"/> <xsl:with-param name="setting" select="'setImageMaxHeight'"/>
<xsl:with-param name="default" select="''"/> <xsl:with-param name="default" select="''"/>
</xsl:call-template> </xsl:call-template>
</xsl:variable> </xsl:variable>
<xsl:variable name="setImageMaxWidth"> <xsl:variable name="setImageMaxWidth">
<xsl:call-template name="mandalay:getSetting"> <xsl:call-template name="mandalay:getSetting">
<xsl:with-param name="module" select="'SciOrganization'"/> <xsl:with-param name="module" select="'SimpleOrganization'"/>
<xsl:with-param name="setting" select="'setImageMaxWidth'"/> <xsl:with-param name="setting" select="'setImageMaxWidth'"/>
<xsl:with-param name="default" select="''"/> <xsl:with-param name="default" select="''"/>
</xsl:call-template> </xsl:call-template>
</xsl:variable> </xsl:variable>
<xsl:variable name="setImageCaption"> <xsl:variable name="setImageCaption">
<xsl:call-template name="mandalay:getSetting"> <xsl:call-template name="mandalay:getSetting">
<xsl:with-param name="module" select="'SciOrganization'"/> <xsl:with-param name="module" select="'SimpleOrganization'"/>
<xsl:with-param name="setting" select="'setImageCaption'"/> <xsl:with-param name="setting" select="'setImageCaption'"/>
<xsl:with-param name="default" select="'true'"/> <xsl:with-param name="default" select="'true'"/>
</xsl:call-template> </xsl:call-template>