Unterstützung für Navigation im Applications Tab, einige Ergänzungen am Applications Tab selbst
git-svn-id: https://svn.libreccm.org/ccm/trunk@2234 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
a3b8d38c41
commit
c289ddee10
|
|
@ -53,8 +53,7 @@ public class PublicPersonalProfile
|
||||||
implements CustomizedPreviewLink {
|
implements CustomizedPreviewLink {
|
||||||
|
|
||||||
private static final PublicPersonalProfileConfig config =
|
private static final PublicPersonalProfileConfig config =
|
||||||
PublicPersonalProfiles.
|
PublicPersonalProfiles.getConfig();
|
||||||
getConfig();
|
|
||||||
public static final String PROFILE_URL = "profileUrl";
|
public static final String PROFILE_URL = "profileUrl";
|
||||||
public static final String LINK_LIST_NAME = "publicPersonalProfileNavItems";
|
public static final String LINK_LIST_NAME = "publicPersonalProfileNavItems";
|
||||||
public static final String POSITION = "position";
|
public static final String POSITION = "position";
|
||||||
|
|
@ -108,7 +107,7 @@ public class PublicPersonalProfile
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* return (GenericPerson) DomainObjectFactory.newInstance(dobj);
|
* return (GenericPerson) DomainObjectFactory.newInstance(dobj);
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
final GenericPersonBundle bundle = getPublicPersonalProfileBundle().getOwner();
|
final GenericPersonBundle bundle = getPublicPersonalProfileBundle().getOwner();
|
||||||
if (bundle == null) {
|
if (bundle == null) {
|
||||||
|
|
@ -132,7 +131,7 @@ public class PublicPersonalProfile
|
||||||
*
|
*
|
||||||
* if (null != owner) { Assert.exists(owner, GenericPerson.class);
|
* if (null != owner) { Assert.exists(owner, GenericPerson.class);
|
||||||
* bundle.add(OWNER, owner.getContentBundle());
|
* bundle.add(OWNER, owner.getContentBundle());
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
getPublicPersonalProfileBundle().setOwner(owner);
|
getPublicPersonalProfileBundle().setOwner(owner);
|
||||||
}
|
}
|
||||||
|
|
@ -197,4 +196,5 @@ public class PublicPersonalProfile
|
||||||
return String.format("/profiles/preview/%s/", getProfileUrl());
|
return String.format("/profiles/preview/%s/", getProfileUrl());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ package com.arsdigita.cms.publicpersonalprofile;
|
||||||
|
|
||||||
import com.arsdigita.bebop.SimpleContainer;
|
import com.arsdigita.bebop.SimpleContainer;
|
||||||
import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager;
|
import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager;
|
||||||
|
import com.arsdigita.ui.admin.applications.ApplicationInstanceAwareContainer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
@ -32,8 +33,11 @@ public class PublicPersonalProfileAppManager extends AbstractSingletonApplicatio
|
||||||
return PublicPersonalProfiles.class;
|
return PublicPersonalProfiles.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SimpleContainer getApplicationAdminForm() {
|
public ApplicationInstanceAwareContainer getApplicationAdminForm() {
|
||||||
return new PublicPersonalProfilesAdminPanel();
|
final ApplicationInstanceAwareContainer container = new ApplicationInstanceAwareContainer();
|
||||||
|
container.add(new PublicPersonalProfilesAdminPanel());
|
||||||
|
|
||||||
|
return container;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -134,7 +134,7 @@ public class PublicPersonalProfileNavItemsAddForm
|
||||||
panel.add(generatorField);
|
panel.add(generatorField);
|
||||||
|
|
||||||
saveCancelSection = new SaveCancelSection();
|
saveCancelSection = new SaveCancelSection();
|
||||||
super.add(saveCancelSection, ColumnPanel.FULL_WIDTH | ColumnPanel.LEFT);
|
add(saveCancelSection, ColumnPanel.FULL_WIDTH | ColumnPanel.LEFT);
|
||||||
|
|
||||||
addInitListener(this);
|
addInitListener(this);
|
||||||
addProcessListener(this);
|
addProcessListener(this);
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ import com.arsdigita.bebop.Label;
|
||||||
import com.arsdigita.bebop.SimpleContainer;
|
import com.arsdigita.bebop.SimpleContainer;
|
||||||
import com.arsdigita.ui.admin.GlobalizationUtil;
|
import com.arsdigita.ui.admin.GlobalizationUtil;
|
||||||
import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager;
|
import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager;
|
||||||
|
import com.arsdigita.ui.admin.applications.ApplicationInstanceAwareContainer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
@ -40,12 +41,15 @@ public class ContentCenterAppManager extends AbstractSingletonApplicationManager
|
||||||
*
|
*
|
||||||
* @return A panel with a message that there no settings yet.
|
* @return A panel with a message that there no settings yet.
|
||||||
*/
|
*/
|
||||||
public SimpleContainer getApplicationAdminForm() {
|
public ApplicationInstanceAwareContainer getApplicationAdminForm() {
|
||||||
final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
|
final ApplicationInstanceAwareContainer container = new ApplicationInstanceAwareContainer();
|
||||||
|
|
||||||
|
final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
|
||||||
panel.add(new Label(GlobalizationUtil.globalize("ui.admin.applications.no_settings")));
|
panel.add(new Label(GlobalizationUtil.globalize("ui.admin.applications.no_settings")));
|
||||||
|
|
||||||
return panel;
|
container.add(panel);
|
||||||
|
|
||||||
|
return container;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,9 +20,9 @@ package com.arsdigita.cms;
|
||||||
|
|
||||||
import com.arsdigita.bebop.BoxPanel;
|
import com.arsdigita.bebop.BoxPanel;
|
||||||
import com.arsdigita.bebop.Label;
|
import com.arsdigita.bebop.Label;
|
||||||
import com.arsdigita.bebop.SimpleContainer;
|
|
||||||
import com.arsdigita.ui.admin.GlobalizationUtil;
|
import com.arsdigita.ui.admin.GlobalizationUtil;
|
||||||
import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager;
|
import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager;
|
||||||
|
import com.arsdigita.ui.admin.applications.ApplicationInstanceAwareContainer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
@ -39,12 +39,15 @@ public class ServiceAppManager extends AbstractSingletonApplicationManager<Serv
|
||||||
*
|
*
|
||||||
* @return Just a panel with a label because this app has no settings yet.
|
* @return Just a panel with a label because this app has no settings yet.
|
||||||
*/
|
*/
|
||||||
public SimpleContainer getApplicationAdminForm() {
|
public ApplicationInstanceAwareContainer getApplicationAdminForm() {
|
||||||
final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
|
final ApplicationInstanceAwareContainer container = new ApplicationInstanceAwareContainer();
|
||||||
|
|
||||||
|
final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
|
||||||
panel.add(new Label(GlobalizationUtil.globalize("ui.admin.applications.no_settings")));
|
panel.add(new Label(GlobalizationUtil.globalize("ui.admin.applications.no_settings")));
|
||||||
|
|
||||||
return panel;
|
container.add(panel);
|
||||||
|
|
||||||
|
return container;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ import com.arsdigita.bebop.Label;
|
||||||
import com.arsdigita.bebop.SimpleContainer;
|
import com.arsdigita.bebop.SimpleContainer;
|
||||||
import com.arsdigita.cms.ContentSection;
|
import com.arsdigita.cms.ContentSection;
|
||||||
import com.arsdigita.ui.admin.GlobalizationUtil;
|
import com.arsdigita.ui.admin.GlobalizationUtil;
|
||||||
|
import com.arsdigita.ui.admin.applications.ApplicationInstanceAwareContainer;
|
||||||
import com.arsdigita.ui.admin.applications.ApplicationManager;
|
import com.arsdigita.ui.admin.applications.ApplicationManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -37,12 +38,15 @@ public class ContentSectionAppManager implements ApplicationManager<ContentSecti
|
||||||
return ContentSection.class;
|
return ContentSection.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SimpleContainer getApplicationAdminForm() {
|
public ApplicationInstanceAwareContainer getApplicationAdminForm() {
|
||||||
final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
|
final ApplicationInstanceAwareContainer container = new ApplicationInstanceAwareContainer();
|
||||||
|
|
||||||
|
final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
|
||||||
panel.add(new Label(GlobalizationUtil.globalize("ui.admin.applications.no_settings")));
|
panel.add(new Label(GlobalizationUtil.globalize("ui.admin.applications.no_settings")));
|
||||||
|
|
||||||
return panel;
|
container.add(panel);
|
||||||
|
|
||||||
|
return container;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Form getApplicationCreateForm() {
|
public Form getApplicationCreateForm() {
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ import com.arsdigita.bebop.BoxPanel;
|
||||||
import com.arsdigita.bebop.Label;
|
import com.arsdigita.bebop.Label;
|
||||||
import com.arsdigita.bebop.SimpleContainer;
|
import com.arsdigita.bebop.SimpleContainer;
|
||||||
import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager;
|
import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager;
|
||||||
|
import com.arsdigita.ui.admin.applications.ApplicationInstanceAwareContainer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
@ -39,12 +40,15 @@ public class AdminAppManager extends AbstractSingletonApplicationManager<Admin>
|
||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public SimpleContainer getApplicationAdminForm() {
|
public ApplicationInstanceAwareContainer getApplicationAdminForm() {
|
||||||
final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
|
final ApplicationInstanceAwareContainer container = new ApplicationInstanceAwareContainer();
|
||||||
|
|
||||||
|
final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
|
||||||
panel.add(new Label(GlobalizationUtil.globalize("ui.admin.applications.no_settings")));
|
panel.add(new Label(GlobalizationUtil.globalize("ui.admin.applications.no_settings")));
|
||||||
|
|
||||||
return panel;
|
container.add(panel);
|
||||||
|
|
||||||
|
return container;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,6 @@ public class ApplicationsAdministrationTab extends BoxPanel implements AdminCons
|
||||||
private final Tree applicationTree;
|
private final Tree applicationTree;
|
||||||
private final Map<String, BaseApplicationPane> appPanes = new HashMap<String, BaseApplicationPane>();
|
private final Map<String, BaseApplicationPane> appPanes = new HashMap<String, BaseApplicationPane>();
|
||||||
private final Map<String, ApplicationInstancePane> instancePanes = new HashMap<String, ApplicationInstancePane>();
|
private final Map<String, ApplicationInstancePane> instancePanes = new HashMap<String, ApplicationInstancePane>();
|
||||||
private SimpleContainer visiblePane;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2013 Jens Pelzetter
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2.1 of
|
||||||
|
* the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package com.arsdigita.ui.admin.applications;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.SimpleContainer;
|
||||||
|
import com.arsdigita.web.Application;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
public class ApplicationInstanceAwareContainer extends SimpleContainer {
|
||||||
|
|
||||||
|
private Application appInstance;
|
||||||
|
|
||||||
|
public Application getAppInstance() {
|
||||||
|
return appInstance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAppInstance(final Application appInstance) {
|
||||||
|
this.appInstance = appInstance;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -21,7 +21,6 @@ package com.arsdigita.ui.admin.applications;
|
||||||
import com.arsdigita.bebop.Label;
|
import com.arsdigita.bebop.Label;
|
||||||
import com.arsdigita.bebop.PropertySheet;
|
import com.arsdigita.bebop.PropertySheet;
|
||||||
import com.arsdigita.bebop.SegmentedPanel;
|
import com.arsdigita.bebop.SegmentedPanel;
|
||||||
import com.arsdigita.bebop.SimpleContainer;
|
|
||||||
import com.arsdigita.ui.admin.GlobalizationUtil;
|
import com.arsdigita.ui.admin.GlobalizationUtil;
|
||||||
|
|
||||||
import com.arsdigita.web.Application;
|
import com.arsdigita.web.Application;
|
||||||
|
|
@ -35,7 +34,7 @@ import com.arsdigita.web.Application;
|
||||||
*/
|
*/
|
||||||
public class ApplicationInstancePane extends SegmentedPanel {
|
public class ApplicationInstancePane extends SegmentedPanel {
|
||||||
|
|
||||||
public ApplicationInstancePane(final Application appInstance, final SimpleContainer appAdminPane) {
|
public ApplicationInstancePane(final Application appInstance, final ApplicationInstanceAwareContainer appAdminPane) {
|
||||||
|
|
||||||
super();
|
super();
|
||||||
|
|
||||||
|
|
@ -53,6 +52,7 @@ public class ApplicationInstancePane extends SegmentedPanel {
|
||||||
"ui.admin.MultiInstancePane.manage.no_instance_admin_pane_found",
|
"ui.admin.MultiInstancePane.manage.no_instance_admin_pane_found",
|
||||||
new String[]{appInstance.getApplicationType().getApplicationObjectType()})));
|
new String[]{appInstance.getApplicationType().getApplicationObjectType()})));
|
||||||
} else {
|
} else {
|
||||||
|
appAdminPane.setAppInstance(appInstance);
|
||||||
addSegment(new Label(GlobalizationUtil.globalize(
|
addSegment(new Label(GlobalizationUtil.globalize(
|
||||||
"ui.admin.applications.ApplicationInstancePane.manage.heading")),
|
"ui.admin.applications.ApplicationInstancePane.manage.heading")),
|
||||||
appAdminPane);
|
appAdminPane);
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
package com.arsdigita.ui.admin.applications;
|
package com.arsdigita.ui.admin.applications;
|
||||||
|
|
||||||
import com.arsdigita.bebop.Form;
|
import com.arsdigita.bebop.Form;
|
||||||
import com.arsdigita.bebop.SimpleContainer;
|
import com.arsdigita.ui.admin.ApplicationsAdministrationTab;
|
||||||
import com.arsdigita.web.Application;
|
import com.arsdigita.web.Application;
|
||||||
import java.util.ServiceLoader;
|
import java.util.ServiceLoader;
|
||||||
|
|
||||||
|
|
@ -66,7 +66,7 @@ public interface ApplicationManager<T extends Application> {
|
||||||
* @return A container containing one or more forms for managing instances
|
* @return A container containing one or more forms for managing instances
|
||||||
* of an application.
|
* of an application.
|
||||||
*/
|
*/
|
||||||
SimpleContainer getApplicationAdminForm();
|
ApplicationInstanceAwareContainer getApplicationAdminForm();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides a form for creating new instances of applications. For
|
* Provides a form for creating new instances of applications. For
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ import com.arsdigita.bebop.Label;
|
||||||
import com.arsdigita.bebop.SimpleContainer;
|
import com.arsdigita.bebop.SimpleContainer;
|
||||||
import com.arsdigita.ui.admin.GlobalizationUtil;
|
import com.arsdigita.ui.admin.GlobalizationUtil;
|
||||||
import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager;
|
import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager;
|
||||||
|
import com.arsdigita.ui.admin.applications.ApplicationInstanceAwareContainer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
@ -40,12 +41,15 @@ public class LoginAppManager extends AbstractSingletonApplicationManager<Login>
|
||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public SimpleContainer getApplicationAdminForm() {
|
public ApplicationInstanceAwareContainer getApplicationAdminForm() {
|
||||||
final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
|
final ApplicationInstanceAwareContainer container = new ApplicationInstanceAwareContainer();
|
||||||
|
|
||||||
|
final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
|
||||||
panel.add(new Label(GlobalizationUtil.globalize("ui.admin.applications.no_settings")));
|
panel.add(new Label(GlobalizationUtil.globalize("ui.admin.applications.no_settings")));
|
||||||
|
|
||||||
return panel;
|
container.add(panel);
|
||||||
|
|
||||||
|
return container;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ import com.arsdigita.bebop.Label;
|
||||||
import com.arsdigita.bebop.SimpleContainer;
|
import com.arsdigita.bebop.SimpleContainer;
|
||||||
import com.arsdigita.ui.admin.GlobalizationUtil;
|
import com.arsdigita.ui.admin.GlobalizationUtil;
|
||||||
import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager;
|
import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager;
|
||||||
|
import com.arsdigita.ui.admin.applications.ApplicationInstanceAwareContainer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
@ -35,12 +36,15 @@ public class SearchAppManager extends AbstractSingletonApplicationManager<Search
|
||||||
return Search.class;
|
return Search.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SimpleContainer getApplicationAdminForm() {
|
public ApplicationInstanceAwareContainer getApplicationAdminForm() {
|
||||||
final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
|
final ApplicationInstanceAwareContainer container = new ApplicationInstanceAwareContainer();
|
||||||
|
|
||||||
|
final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
|
||||||
panel.add(new Label(GlobalizationUtil.globalize("ui.admin.applications.no_settings")));
|
panel.add(new Label(GlobalizationUtil.globalize("ui.admin.applications.no_settings")));
|
||||||
|
|
||||||
return panel;
|
container.add(panel);
|
||||||
|
|
||||||
|
return container;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
com.arsdigita.navigation.NavigationAppManager
|
||||||
|
|
@ -15,9 +15,13 @@
|
||||||
* License along with this library; if not, write to the Free Software
|
* License along with this library; if not, write to the Free Software
|
||||||
* 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.navigation;
|
package com.arsdigita.navigation;
|
||||||
|
|
||||||
|
import com.arsdigita.domain.DomainObject;
|
||||||
|
import com.arsdigita.domain.DomainObjectFactory;
|
||||||
|
import com.arsdigita.domain.DomainObjectInstantiator;
|
||||||
|
import com.arsdigita.london.terms.Domain;
|
||||||
|
import com.arsdigita.navigation.tools.NavigationCreator;
|
||||||
import com.arsdigita.persistence.DataObject;
|
import com.arsdigita.persistence.DataObject;
|
||||||
import com.arsdigita.persistence.OID;
|
import com.arsdigita.persistence.OID;
|
||||||
|
|
||||||
|
|
@ -29,36 +33,31 @@ import com.arsdigita.web.Web;
|
||||||
import com.arsdigita.xml.Element;
|
import com.arsdigita.xml.Element;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
|
||||||
public class Navigation extends Application {
|
public class Navigation extends Application {
|
||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(Navigation.class);
|
private static final Logger LOGGER = Logger.getLogger(Navigation.class);
|
||||||
|
public static final String NAV_NS = "http://ccm.redhat.com/navigation";
|
||||||
public static final String NAV_NS =
|
|
||||||
"http://ccm.redhat.com/navigation";
|
|
||||||
public static final String NAV_PREFIX = "nav";
|
public static final String NAV_PREFIX = "nav";
|
||||||
public static final String OID = "oid";
|
public static final String OID = "oid";
|
||||||
|
|
||||||
public static final String CAT_ID_REDIRECT = "categoryID";
|
public static final String CAT_ID_REDIRECT = "categoryID";
|
||||||
|
private static final NavigationConfig CONFIG = new NavigationConfig();
|
||||||
private static NavigationConfig s_config = new NavigationConfig();
|
private static final NavigationContext CONTEXT = new NavigationContext();
|
||||||
private static NavigationContext s_context = new NavigationContext();
|
|
||||||
|
|
||||||
static {
|
static {
|
||||||
logger.debug("Static initalizer starting...");
|
LOGGER.debug("Static initalizer starting...");
|
||||||
s_config.load();
|
CONFIG.load();
|
||||||
logger.debug("Static initalizer finished.");
|
LOGGER.debug("Static initalizer finished.");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static NavigationConfig getConfig() {
|
public static NavigationConfig getConfig() {
|
||||||
return s_config;
|
return CONFIG;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static NavigationContext getContext() {
|
public static NavigationContext getContext() {
|
||||||
return s_context;
|
return CONTEXT;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Element newElement(String name) {
|
public static Element newElement(final String name) {
|
||||||
return new Element(NavigationConstants.NAV_PREFIX + ":" + name,
|
return new Element(NavigationConstants.NAV_PREFIX + ":" + name,
|
||||||
NavigationConstants.NAV_NS);
|
NavigationConstants.NAV_NS);
|
||||||
}
|
}
|
||||||
|
|
@ -68,52 +67,88 @@ public class Navigation extends Application {
|
||||||
NavigationConstants.NAV_NS);
|
NavigationConstants.NAV_NS);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String redirectURL(OID oid) {
|
public static String redirectURL(final OID oid) {
|
||||||
ParameterMap map = new ParameterMap();
|
final ParameterMap map = new ParameterMap();
|
||||||
map.setParameter( NavigationConstants.OID, oid.toString() );
|
map.setParameter(NavigationConstants.OID, oid.toString());
|
||||||
|
|
||||||
URL here = Web.getContext().getRequestURL();
|
final URL here = Web.getContext().getRequestURL();
|
||||||
|
|
||||||
return (new URL(here.getScheme(),
|
return new URL(here.getScheme(),
|
||||||
here.getServerName(),
|
here.getServerName(),
|
||||||
here.getServerPort(),
|
here.getServerPort(),
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
"/redirect/", map )).toString();
|
"/redirect/", map).toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String redirectURL(OID oid,
|
public static String redirectURL(final OID oid, final ParameterMap inMap) {
|
||||||
ParameterMap inMap) {
|
|
||||||
|
|
||||||
ParameterMap map = null;
|
ParameterMap map;
|
||||||
try {
|
try {
|
||||||
map = (ParameterMap) inMap.clone();
|
map = (ParameterMap) inMap.clone();
|
||||||
} catch (CloneNotSupportedException e) {
|
} catch (CloneNotSupportedException e) {
|
||||||
map = inMap;
|
map = inMap;
|
||||||
}
|
}
|
||||||
map.setParameter( NavigationConstants.OID, oid.toString() );
|
map.setParameter(NavigationConstants.OID, oid.toString());
|
||||||
|
|
||||||
return URL.there( Web.getRequest(), "/redirect/", map ).toString();
|
return URL.there(Web.getRequest(), "/redirect/", map).toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new navigation instance. This method was originally part of the {@link NavigationCreator} CLI tool,
|
||||||
|
* but was moved here because the logic of this method is needed by at least two other classes.
|
||||||
|
*
|
||||||
|
* @param navUrl The URL of the new navigation instance.
|
||||||
|
* @param navTitle The title of the new navigation instance.
|
||||||
|
* @param defaultDomain The default domain of the new navigation instance.
|
||||||
|
*/
|
||||||
|
public static void createNavigation(final String navUrl,
|
||||||
|
final String navTitle,
|
||||||
|
final String defaultDomain,
|
||||||
|
final String description) {
|
||||||
|
|
||||||
public static final String BASE_DATA_OBJECT_TYPE
|
if (Application.isInstalled(Navigation.BASE_DATA_OBJECT_TYPE, "/" + navUrl + "/")) {
|
||||||
= "com.arsdigita.navigation.Navigation";
|
throw new IllegalArgumentException(String.format("%s already installed at %s",
|
||||||
|
Navigation.BASE_DATA_OBJECT_TYPE,
|
||||||
|
navUrl));
|
||||||
|
} else {
|
||||||
|
DomainObjectFactory.registerInstantiator(Navigation.BASE_DATA_OBJECT_TYPE,
|
||||||
|
new DomainObjectInstantiator() {
|
||||||
|
@Override
|
||||||
|
protected DomainObject doNewInstance(final DataObject dataObject) {
|
||||||
|
return new Navigation(dataObject);
|
||||||
|
}
|
||||||
|
|
||||||
public Navigation(DataObject obj) {
|
});
|
||||||
|
|
||||||
|
/* Create Instance beyond root (4. parameter null) */
|
||||||
|
final Application application = Application.createApplication(Navigation.BASE_DATA_OBJECT_TYPE,
|
||||||
|
navUrl,
|
||||||
|
navTitle,
|
||||||
|
null);
|
||||||
|
application.setDescription(description);
|
||||||
|
application.save();
|
||||||
|
final Domain termDomain = Domain.retrieve(defaultDomain);
|
||||||
|
termDomain.setAsRootForObject(application, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final String BASE_DATA_OBJECT_TYPE = "com.arsdigita.navigation.Navigation";
|
||||||
|
|
||||||
|
public Navigation(final DataObject obj) {
|
||||||
super(obj);
|
super(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Navigation(OID oid) {
|
public Navigation(final OID oid) {
|
||||||
super(oid);
|
super(oid);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
public String getContextPath() {
|
public String getContextPath() {
|
||||||
return "ccm-navigation";
|
return "ccm-navigation";
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the path to the location of the applications servlet/JSP.
|
* Returns the path to the location of the applications servlet/JSP.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,79 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2013 Jens Pelzetter
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2.1 of
|
||||||
|
* the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package com.arsdigita.navigation;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.BoxPanel;
|
||||||
|
import com.arsdigita.bebop.Form;
|
||||||
|
import com.arsdigita.bebop.Label;
|
||||||
|
import com.arsdigita.bebop.Link;
|
||||||
|
import com.arsdigita.bebop.event.PrintEvent;
|
||||||
|
import com.arsdigita.bebop.event.PrintListener;
|
||||||
|
import com.arsdigita.navigation.ui.admin.NavigationCreateForm;
|
||||||
|
import com.arsdigita.ui.admin.applications.ApplicationInstanceAwareContainer;
|
||||||
|
import com.arsdigita.ui.admin.applications.ApplicationManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link ApplicationManager} implementation for the Navigation application type. Provides a form for creating
|
||||||
|
* new navigation instances and a form for managing the instance specific settings.
|
||||||
|
*
|
||||||
|
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
public class NavigationAppManager implements ApplicationManager<Navigation> {
|
||||||
|
|
||||||
|
public Class<Navigation> getApplication() {
|
||||||
|
return Navigation.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ApplicationInstanceAwareContainer getApplicationAdminForm() {
|
||||||
|
// final ApplicationInstanceAwareContainer container = new ApplicationInstanceAwareContainer();
|
||||||
|
// final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
|
||||||
|
// container.add(panel);
|
||||||
|
//
|
||||||
|
// panel.add(new Label(NavigationGlobalizationUtil.globalize("ui.admin.instance_not_compatible_yet")));
|
||||||
|
//
|
||||||
|
// return container;
|
||||||
|
return new ApplicationAdminForm();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Form getApplicationCreateForm() {
|
||||||
|
return new NavigationCreateForm();
|
||||||
|
}
|
||||||
|
|
||||||
|
private class ApplicationAdminForm extends ApplicationInstanceAwareContainer {
|
||||||
|
|
||||||
|
public ApplicationAdminForm() {
|
||||||
|
super();
|
||||||
|
final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
|
||||||
|
add(panel);
|
||||||
|
|
||||||
|
panel.add(new Label(NavigationGlobalizationUtil.globalize("ui.admin.instance_not_compatible_yet")));
|
||||||
|
panel.add(new Link(new PrintListener() {
|
||||||
|
public void prepare(final PrintEvent event) {
|
||||||
|
final Link link = (Link) event.getTarget();
|
||||||
|
|
||||||
|
link.setTarget(String.format("%s/admin", getAppInstance().getPath()));
|
||||||
|
link.setChild(new Label(getAppInstance().getTitle()));
|
||||||
|
}
|
||||||
|
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2013 Jens Pelzetter
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2.1 of
|
||||||
|
* the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package com.arsdigita.navigation;
|
||||||
|
|
||||||
|
import com.arsdigita.globalization.GlobalizedMessage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
public class NavigationGlobalizationUtil {
|
||||||
|
|
||||||
|
private static final String BUNDLE_NAME = "com.arsdigita.navigation.NavigationResources";
|
||||||
|
|
||||||
|
public static GlobalizedMessage globalize(final String key) {
|
||||||
|
return new GlobalizedMessage(key, BUNDLE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static GlobalizedMessage globalize(final String key, final Object[] args) {
|
||||||
|
return new GlobalizedMessage(key, BUNDLE_NAME, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
# To change this template, choose Tools | Templates
|
||||||
|
# and open the template in the editor.
|
||||||
|
|
||||||
|
ui.create.nav_url=Navigation URL
|
||||||
|
ui.create.nav_title=Navigation Title
|
||||||
|
ui.create.nav_default_domain=Default Terms Domain
|
||||||
|
ui.create.nave_desc=Description
|
||||||
|
ui.admin.instance_not_compatible_yet=The administration for instances of navigation is not yet compatible with the applications tab. Please use the link below.
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
# To change this template, choose Tools | Templates
|
||||||
|
# and open the template in the editor.
|
||||||
|
|
||||||
|
ui.create.nav_url=Navigation URL
|
||||||
|
ui.create.nav_title=Navigation Titel
|
||||||
|
ui.create.nav_default_domain=Standard Terms Domain
|
||||||
|
ui.create.nave_desc=Beschreibung
|
||||||
|
ui.admin.instance_not_compatible_yet=Das Formular zum bearbeiten der instanzspezifischen Einstellungen von Navigation ist noch nicht mit dem Applications Tab kompatible. Bitte nutzen Sie den untenstehenden Link.
|
||||||
|
|
@ -15,20 +15,13 @@
|
||||||
* License along with this library; if not, write to the Free Software
|
* License along with this library; if not, write to the Free Software
|
||||||
* 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.navigation.tools;
|
package com.arsdigita.navigation.tools;
|
||||||
|
|
||||||
import com.arsdigita.domain.DomainObject;
|
|
||||||
import com.arsdigita.domain.DomainObjectFactory;
|
|
||||||
import com.arsdigita.domain.DomainObjectInstantiator;
|
|
||||||
import com.arsdigita.kernel.Kernel;
|
import com.arsdigita.kernel.Kernel;
|
||||||
import com.arsdigita.kernel.KernelExcursion;
|
import com.arsdigita.kernel.KernelExcursion;
|
||||||
import com.arsdigita.london.terms.Domain;
|
|
||||||
import com.arsdigita.util.cmd.Program;
|
import com.arsdigita.util.cmd.Program;
|
||||||
import com.arsdigita.london.util.Transaction;
|
import com.arsdigita.london.util.Transaction;
|
||||||
import com.arsdigita.navigation.Navigation;
|
import com.arsdigita.navigation.Navigation;
|
||||||
import com.arsdigita.persistence.DataObject;
|
|
||||||
import com.arsdigita.web.Application;
|
|
||||||
|
|
||||||
import org.apache.commons.cli.CommandLine;
|
import org.apache.commons.cli.CommandLine;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|
@ -51,42 +44,6 @@ public class NavigationCreator extends Program {
|
||||||
super("Add Navigation instance", "1.0.0", "URL-FRAGMENT TITLE DOMAIN-KEY");
|
super("Add Navigation instance", "1.0.0", "URL-FRAGMENT TITLE DOMAIN-KEY");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param navURL
|
|
||||||
* @param navTitle
|
|
||||||
* @param defaultDomain
|
|
||||||
*/
|
|
||||||
private void createNavigation(String navURL,
|
|
||||||
String navTitle,
|
|
||||||
String defaultDomain) {
|
|
||||||
|
|
||||||
if (!Application.isInstalled(Navigation.BASE_DATA_OBJECT_TYPE,
|
|
||||||
"/"+navURL+"/")) {
|
|
||||||
|
|
||||||
DomainObjectFactory.registerInstantiator(
|
|
||||||
Navigation.BASE_DATA_OBJECT_TYPE, new DomainObjectInstantiator() {
|
|
||||||
public DomainObject doNewInstance(DataObject dataObject) {
|
|
||||||
return new Navigation(dataObject);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
/* Create Instance beyond root (4. parameter null) */
|
|
||||||
Application app = Application.createApplication(
|
|
||||||
Navigation.BASE_DATA_OBJECT_TYPE, navURL, navTitle, null);
|
|
||||||
app.save();
|
|
||||||
Domain domain = Domain.retrieve(defaultDomain);
|
|
||||||
domain.setAsRootForObject(app, null);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
System.err.println(Navigation.BASE_DATA_OBJECT_TYPE
|
|
||||||
+ " already installed at " + navURL);
|
|
||||||
System.exit(1);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param cmdLine
|
* @param cmdLine
|
||||||
|
|
@ -103,9 +60,9 @@ public class NavigationCreator extends Program {
|
||||||
String navTitle = args[1];
|
String navTitle = args[1];
|
||||||
String domainKey = args[2];
|
String domainKey = args[2];
|
||||||
if (navURL != null && navURL.length() != 0
|
if (navURL != null && navURL.length() != 0
|
||||||
&& navTitle != null && navTitle.length() != 0
|
&& navTitle != null && navTitle.length() != 0
|
||||||
&& domainKey != null && domainKey.length() != 0) {
|
&& domainKey != null && domainKey.length() != 0) {
|
||||||
createNavigation(navURL, navTitle, domainKey);
|
Navigation.createNavigation(navURL, navTitle, domainKey, "");
|
||||||
} else {
|
} else {
|
||||||
help(System.err);
|
help(System.err);
|
||||||
System.exit(1);
|
System.exit(1);
|
||||||
|
|
@ -115,8 +72,10 @@ public class NavigationCreator extends Program {
|
||||||
System.exit(1);
|
System.exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}.run();
|
}.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
}.run();
|
}.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,6 @@
|
||||||
* License along with this library; if not, write to the Free Software
|
* License along with this library; if not, write to the Free Software
|
||||||
* 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.navigation.ui.admin;
|
package com.arsdigita.navigation.ui.admin;
|
||||||
|
|
||||||
import com.arsdigita.bebop.Tree;
|
import com.arsdigita.bebop.Tree;
|
||||||
|
|
@ -30,7 +29,6 @@ import com.arsdigita.util.LockableImpl;
|
||||||
|
|
||||||
import com.arsdigita.navigation.Navigation;
|
import com.arsdigita.navigation.Navigation;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lists category tree.
|
* Lists category tree.
|
||||||
*
|
*
|
||||||
|
|
@ -51,18 +49,19 @@ public class CategoryTree extends Tree {
|
||||||
* A TreeModelBuilder that loads the tree from the current category
|
* A TreeModelBuilder that loads the tree from the current category
|
||||||
*/
|
*/
|
||||||
private static class SectionTreeModelBuilder extends LockableImpl
|
private static class SectionTreeModelBuilder extends LockableImpl
|
||||||
implements TreeModelBuilder {
|
implements TreeModelBuilder {
|
||||||
|
|
||||||
public SectionTreeModelBuilder() {
|
public SectionTreeModelBuilder() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
public TreeModel makeModel(Tree t, PageState s) {
|
public TreeModel makeModel(Tree t, PageState s) {
|
||||||
Navigation app = (Navigation)Web.getContext().getApplication();
|
Navigation app = (Navigation) Web.getContext().getApplication();
|
||||||
TemplateContext ctx = Navigation.getContext().getTemplateContext();
|
TemplateContext ctx = Navigation.getContext().getTemplateContext();
|
||||||
String dispatcherContext = ctx == null ? null : ctx.getContext();
|
String dispatcherContext = ctx == null ? null : ctx.getContext();
|
||||||
Category root = Category.getRootForObject(app, dispatcherContext);
|
Category root = Category.getRootForObject(app, dispatcherContext);
|
||||||
return new CategoryTreeModelLite(root);
|
return new CategoryTreeModelLite(root);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,151 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2013 Jens Pelzetter
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2.1 of
|
||||||
|
* the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package com.arsdigita.navigation.ui.admin;
|
||||||
|
|
||||||
|
import com.arsdigita.bebop.ColumnPanel;
|
||||||
|
import com.arsdigita.bebop.Form;
|
||||||
|
import com.arsdigita.bebop.FormData;
|
||||||
|
import com.arsdigita.bebop.FormProcessException;
|
||||||
|
import com.arsdigita.bebop.Label;
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
|
import com.arsdigita.bebop.SaveCancelSection;
|
||||||
|
import com.arsdigita.bebop.event.FormProcessListener;
|
||||||
|
import com.arsdigita.bebop.event.FormSectionEvent;
|
||||||
|
import com.arsdigita.bebop.event.FormSubmissionListener;
|
||||||
|
import com.arsdigita.bebop.event.PrintEvent;
|
||||||
|
import com.arsdigita.bebop.event.PrintListener;
|
||||||
|
import com.arsdigita.bebop.form.Option;
|
||||||
|
import com.arsdigita.bebop.form.SingleSelect;
|
||||||
|
import com.arsdigita.bebop.form.TextArea;
|
||||||
|
import com.arsdigita.bebop.form.TextField;
|
||||||
|
import com.arsdigita.london.terms.Domain;
|
||||||
|
import com.arsdigita.navigation.Navigation;
|
||||||
|
import com.arsdigita.navigation.NavigationAppManager;
|
||||||
|
import com.arsdigita.navigation.NavigationGlobalizationUtil;
|
||||||
|
import com.arsdigita.navigation.tools.NavigationCreator;
|
||||||
|
import com.arsdigita.persistence.DataCollection;
|
||||||
|
import com.arsdigita.persistence.SessionManager;
|
||||||
|
import com.arsdigita.util.UncheckedWrapperException;
|
||||||
|
import java.util.TooManyListenersException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This form is used by the {@link NavigationAppManager} for creating a new navigation instance. The part which is
|
||||||
|
* creating the instance ({@link ProcessListener#process(com.arsdigita.bebop.event.FormSectionEvent)} is taken from
|
||||||
|
* the {@link NavigationCreator} CLI application.
|
||||||
|
*
|
||||||
|
* @author Jens Pelzetter <jens@jp-digital.de>
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
public class NavigationCreateForm extends Form {
|
||||||
|
|
||||||
|
public static final String FORM_NAME = "NavigationCreateForm";
|
||||||
|
private static final String NAV_URL = "navUrl";
|
||||||
|
private static final String NAV_TITLE = "navTitle";
|
||||||
|
private static final String NAV_DOMAIN = "navDomain";
|
||||||
|
private static final String NAV_DESC = "navDesc";
|
||||||
|
private final SaveCancelSection saveCancelSection;
|
||||||
|
|
||||||
|
public NavigationCreateForm() {
|
||||||
|
super(FORM_NAME, new ColumnPanel(2));
|
||||||
|
|
||||||
|
add(new Label(NavigationGlobalizationUtil.globalize("ui.create.nav_url")));
|
||||||
|
add(new TextField(NAV_URL));
|
||||||
|
|
||||||
|
add(new Label(NavigationGlobalizationUtil.globalize("ui.create.nav_title")));
|
||||||
|
add(new TextField(NAV_TITLE));
|
||||||
|
|
||||||
|
add(new Label(NavigationGlobalizationUtil.globalize("ui.create.nav_default_domain")));
|
||||||
|
final SingleSelect termDomainSelect = new SingleSelect(NAV_DOMAIN);
|
||||||
|
try {
|
||||||
|
termDomainSelect.addPrintListener(new PrintListener() {
|
||||||
|
public void prepare(final PrintEvent event) {
|
||||||
|
final SingleSelect target = (SingleSelect) event.getTarget();
|
||||||
|
|
||||||
|
final DataCollection termDomains = SessionManager.getSession().
|
||||||
|
retrieve(Domain.BASE_DATA_OBJECT_TYPE);
|
||||||
|
while (termDomains.next()) {
|
||||||
|
target.addOption(new Option((String) termDomains.getDataObject().get(Domain.KEY),
|
||||||
|
(String) termDomains.getDataObject().get(Domain.TITLE)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
} catch (TooManyListenersException ex) {
|
||||||
|
throw new UncheckedWrapperException(ex);
|
||||||
|
}
|
||||||
|
add(termDomainSelect);
|
||||||
|
|
||||||
|
add(new Label(NavigationGlobalizationUtil.globalize("ui.create.nave_desc")));
|
||||||
|
add(new TextArea(NAV_DESC, 10, 60, TextArea.OFF));
|
||||||
|
|
||||||
|
saveCancelSection = new SaveCancelSection();
|
||||||
|
add(saveCancelSection, ColumnPanel.FULL_WIDTH | ColumnPanel.LEFT);
|
||||||
|
|
||||||
|
addSubmissionListener(new SubmissionListener());
|
||||||
|
addProcessListener(new ProcessListener());
|
||||||
|
}
|
||||||
|
|
||||||
|
private class SubmissionListener implements FormSubmissionListener {
|
||||||
|
|
||||||
|
public SubmissionListener() {
|
||||||
|
//Nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
public void submitted(final FormSectionEvent event) throws FormProcessException {
|
||||||
|
final PageState state = event.getPageState();
|
||||||
|
final FormData data = event.getFormData();
|
||||||
|
|
||||||
|
if (saveCancelSection.getCancelButton().isSelected(state)) {
|
||||||
|
data.put(NAV_URL, "");
|
||||||
|
data.put(NAV_TITLE, "");
|
||||||
|
data.put(NAV_DOMAIN, "");
|
||||||
|
data.put(NAV_DESC, "");
|
||||||
|
|
||||||
|
throw new FormProcessException("Canceled");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private class ProcessListener implements FormProcessListener {
|
||||||
|
|
||||||
|
public ProcessListener() {
|
||||||
|
//Nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
public void process(final FormSectionEvent event) throws FormProcessException {
|
||||||
|
final PageState state = event.getPageState();
|
||||||
|
final FormData data = event.getFormData();
|
||||||
|
|
||||||
|
if (saveCancelSection.getSaveButton().isSelected(state)) {
|
||||||
|
|
||||||
|
Navigation.createNavigation(data.getString(NAV_URL),
|
||||||
|
data.getString(NAV_TITLE),
|
||||||
|
data.getString(NAV_DOMAIN),
|
||||||
|
data.getString(NAV_DESC));
|
||||||
|
|
||||||
|
data.put(NAV_URL, "");
|
||||||
|
data.put(NAV_TITLE, "");
|
||||||
|
data.put(NAV_DOMAIN, "");
|
||||||
|
data.put(NAV_DESC, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -20,9 +20,9 @@ package com.arsdigita.cms.scipublications;
|
||||||
|
|
||||||
import com.arsdigita.bebop.BoxPanel;
|
import com.arsdigita.bebop.BoxPanel;
|
||||||
import com.arsdigita.bebop.Label;
|
import com.arsdigita.bebop.Label;
|
||||||
import com.arsdigita.bebop.SimpleContainer;
|
|
||||||
import com.arsdigita.ui.admin.GlobalizationUtil;
|
import com.arsdigita.ui.admin.GlobalizationUtil;
|
||||||
import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager;
|
import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager;
|
||||||
|
import com.arsdigita.ui.admin.applications.ApplicationInstanceAwareContainer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
@ -39,12 +39,15 @@ public class SciPublicationsAppManager extends AbstractSingletonApplicationManag
|
||||||
*
|
*
|
||||||
* @return Just a simple Message for now because this applications has no settings yet.
|
* @return Just a simple Message for now because this applications has no settings yet.
|
||||||
*/
|
*/
|
||||||
public SimpleContainer getApplicationAdminForm() {
|
public ApplicationInstanceAwareContainer getApplicationAdminForm() {
|
||||||
final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
|
final ApplicationInstanceAwareContainer container = new ApplicationInstanceAwareContainer();
|
||||||
|
|
||||||
|
final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
|
||||||
panel.add(new Label(GlobalizationUtil.globalize("ui.admin.applications.no_settings")));
|
panel.add(new Label(GlobalizationUtil.globalize("ui.admin.applications.no_settings")));
|
||||||
|
|
||||||
return panel;
|
container.add(panel);
|
||||||
|
|
||||||
|
return container;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ package com.arsdigita.shortcuts;
|
||||||
import com.arsdigita.bebop.SimpleContainer;
|
import com.arsdigita.bebop.SimpleContainer;
|
||||||
import com.arsdigita.shortcuts.ui.AdminPanel;
|
import com.arsdigita.shortcuts.ui.AdminPanel;
|
||||||
import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager;
|
import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager;
|
||||||
|
import com.arsdigita.ui.admin.applications.ApplicationInstanceAwareContainer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
@ -33,8 +34,11 @@ public class ShortcutsAppManager extends AbstractSingletonApplicationManager<Sho
|
||||||
return Shortcuts.class;
|
return Shortcuts.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SimpleContainer getApplicationAdminForm() {
|
public ApplicationInstanceAwareContainer getApplicationAdminForm() {
|
||||||
return new AdminPanel();
|
final ApplicationInstanceAwareContainer container = new ApplicationInstanceAwareContainer();
|
||||||
|
container.add(new AdminPanel());
|
||||||
|
|
||||||
|
return container;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,9 +21,9 @@ package com.arsdigita.subsite;
|
||||||
import com.arsdigita.bebop.BoxPanel;
|
import com.arsdigita.bebop.BoxPanel;
|
||||||
import com.arsdigita.bebop.Label;
|
import com.arsdigita.bebop.Label;
|
||||||
import com.arsdigita.bebop.Link;
|
import com.arsdigita.bebop.Link;
|
||||||
import com.arsdigita.bebop.SimpleContainer;
|
|
||||||
import com.arsdigita.ui.admin.GlobalizationUtil;
|
import com.arsdigita.ui.admin.GlobalizationUtil;
|
||||||
import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager;
|
import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager;
|
||||||
|
import com.arsdigita.ui.admin.applications.ApplicationInstanceAwareContainer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
@ -36,14 +36,18 @@ public class SubsiteAppManager extends AbstractSingletonApplicationManager<Subsi
|
||||||
return Subsite.class;
|
return Subsite.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SimpleContainer getApplicationAdminForm() {
|
public ApplicationInstanceAwareContainer getApplicationAdminForm() {
|
||||||
|
final ApplicationInstanceAwareContainer container = new ApplicationInstanceAwareContainer();
|
||||||
|
|
||||||
final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
|
final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
|
||||||
final Label warnLabel = new Label(GlobalizationUtil.globalize("ui.admin.applications.form_not_compatible_now"));
|
final Label warnLabel = new Label(GlobalizationUtil.globalize("ui.admin.applications.form_not_compatible_now"));
|
||||||
warnLabel.setClassAttr("warning");
|
warnLabel.setClassAttr("warning");
|
||||||
panel.add(warnLabel);
|
panel.add(warnLabel);
|
||||||
panel.add(new Link("Subsite Admin", "/admin/subsite"));
|
panel.add(new Link("Subsite Admin", "/admin/subsite"));
|
||||||
|
|
||||||
return panel;
|
container.add(panel);
|
||||||
|
|
||||||
|
return container;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ import com.arsdigita.bebop.BoxPanel;
|
||||||
import com.arsdigita.bebop.SimpleContainer;
|
import com.arsdigita.bebop.SimpleContainer;
|
||||||
import com.arsdigita.themedirector.ui.ThemeControlPanel;
|
import com.arsdigita.themedirector.ui.ThemeControlPanel;
|
||||||
import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager;
|
import com.arsdigita.ui.admin.applications.AbstractSingletonApplicationManager;
|
||||||
|
import com.arsdigita.ui.admin.applications.ApplicationInstanceAwareContainer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
@ -34,10 +35,11 @@ public class ThemeDirectorAppManager extends AbstractSingletonApplicationManager
|
||||||
return ThemeDirector.class;
|
return ThemeDirector.class;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SimpleContainer getApplicationAdminForm() {
|
public ApplicationInstanceAwareContainer getApplicationAdminForm() {
|
||||||
final BoxPanel panel = new BoxPanel(BoxPanel.VERTICAL);
|
final ApplicationInstanceAwareContainer container = new ApplicationInstanceAwareContainer();
|
||||||
panel.add(new ThemeControlPanel());
|
|
||||||
return panel;
|
container.add(new ThemeControlPanel());
|
||||||
|
return container;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue