Enhanced globalization support, added some documentation, improved formatting.

git-svn-id: https://svn.libreccm.org/ccm/trunk@2537 8810af33-2d31-482b-a856-94f89814c4df
master
pb 2014-02-21 10:52:26 +00:00
parent 5e1445a792
commit 6cf2047f76
15 changed files with 229 additions and 270 deletions

View File

@ -41,8 +41,17 @@ import com.arsdigita.runtime.RuntimeConfig;
import com.arsdigita.ui.admin.ApplicationManagers;
import com.arsdigita.xml.XML;
/**
* Initializer for ccm-ldn-terms.
* Executes recursivly at each system startup.
*
* @version $Id: Initializer.java 2070 2014-02-21 08:47:41Z pboy $
*/
public class Initializer extends CompoundInitializer {
/**
* Constructor
*/
public Initializer() {
final String url = RuntimeConfig.getConfig().getJDBCURL();
final int database = DbHelper.getDatabaseFromURL(url);
@ -53,6 +62,11 @@ public class Initializer extends CompoundInitializer {
new NameFilter(DbHelper.getDatabaseSuffix(database), "pdl"))));
}
/**
* Initializes domain-coupling machinery, usually consisting of
* registering object instantiators and observers.
*
*/
@Override
public void init(DomainInitEvent e) {
@ -90,7 +104,8 @@ public class Initializer extends CompoundInitializer {
}
});
DomainObjectFactory.registerInstantiator(Indexer.BASE_DATA_OBJECT_TYPE, new DomainObjectInstantiator() {
DomainObjectFactory.registerInstantiator
(Indexer.BASE_DATA_OBJECT_TYPE, new DomainObjectInstantiator() {
public DomainObject doNewInstance(DataObject dataObject) {
return new DomainUseContext(dataObject);
}

View File

@ -46,7 +46,7 @@ public class Loader extends PackageLoader {
*/
public static void setupApplication() {
// NOTE: The title "Navigation" is used to retrieve the application's
// NOTE: The title "Terms" is used to retrieve the application's
// name to determine the location of xsl files (by url-izing it). So
// DON'T modify it without synchronizing web directory tree accordingly!
ApplicationType type =

View File

@ -22,7 +22,7 @@ import com.arsdigita.bebop.BoxPanel;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.Page;
import com.arsdigita.bebop.SegmentedPanel;
import com.arsdigita.london.terms.ui.TermGlobalizationUtil;
import com.arsdigita.london.terms.util.TermsGlobalizationUtil;
import com.arsdigita.london.terms.ui.admin.DomainEditForm;
import com.arsdigita.london.terms.ui.admin.DomainMappingAddForm;
import com.arsdigita.london.terms.ui.admin.DomainMappingTable;
@ -72,9 +72,11 @@ public class TermsAppManager extends AbstractSingletonApplicationManager<Terms>
container.add(domains);
final SegmentedPanel panel = new SegmentedPanel();
panel.addSegment(new Label(TermGlobalizationUtil.globalize("term.domain.ui.basic_properties")),
panel.addSegment(new Label(TermsGlobalizationUtil.globalize(
"terms.ui.basic_properties")),
editForm);
panel.addSegment(new Label(TermGlobalizationUtil.globalize("term.domain.ui.mappings")),
panel.addSegment(new Label(TermsGlobalizationUtil.globalize(
"terms.ui.mappings")),
mappingPanel);
// container.add(editForm);

View File

@ -0,0 +1,28 @@
# To change this template, choose Tools | Templates
# and open the template in the editor.
terms.domain.ui.key_label=Key
terms.domain.ui.title_label=Title
terms.domain.ui.url_label=URL
terms.domain.ui.version_label=Version
terms.domain.ui.action_edit=Edit
terms.domain.ui.action_delete=Delete
terms.domain.ui.delete.confirm=Are you sure to delete this domain?
terms.domain.ui.description_label=Description
terms.domain.ui.no_domains=No domains found,
terms.domain.ui.no_mappings=No mappings found.
terms.domain.mapping.ui.delete_confirm=Are you sure to remove this mapping?
terms.domain.mapping.ui.delete=Remove
terms.domain.mapping.ui.app.select_one=Select an application to map the domain to.
terms.domain.mapping.ui.application=Application
terms.domain.ui.released_label=Released
terms.domain.mapping.ui.context=Context
terms.ui.mappings=Mappings
terms.ui.basic_properties=Basic Properties
terms.domain.mapping.ui.remove=Remove
terms.domain.ui.key_hint=The short unique key for the domain, stable across versions
terms.domain.ui.title_hint=The short title of the domain
terms.domain.ui.url_hint=The unique URL defining the current version of the domain.
terms.domain.ui.description_hint=The long description of the domain
terms.domain.ui.version_hint=The current version number, eg 1.00
terms.domain.ui.released_hint=The release date of the current version

View File

@ -0,0 +1,28 @@
# To change this template, choose Tools | Templates
# and open the template in the editor.
terms.domain.ui.key_label=Domain-ID
terms.domain.ui.title_label=Titel
terms.domain.ui.url_label=URL
terms.domain.ui.version_label=Version
terms.domain.ui.action_edit=Bearbeiten
terms.domain.ui.action_delete=L\u00f6schen
terms.domain.ui.delete.confirm=Sind sie sicher, dass Sie diese Domain l\u00f6schen wollen?
terms.domain.ui.description_label=Beschreibung
terms.domain.ui.no_domains=Keine Domains gefunden.
terms.domain.ui.no_mappings=Keine Mappings gefunden.
terms.domain.mapping.ui.delete_confirm=Sind Sie sicher, dass Sie dieses Mapping entfernen wollen?
terms.domain.mapping.ui.delete=Entfernen
terms.domain.mapping.ui.app.select_one=W\u00e4hlen Sie die Applikation, auf die das Kategoriensystem gemappt werden soll.
terms.domain.mapping.ui.application=Applikation
terms.domain.ui.released_label=Freigegeben
terms.domain.mapping.ui.context=Kontext
terms.ui.mappings=Mappings
terms.ui.basic_properties=Basiseigenschaften
terms.domain.mapping.ui.remove=Entfernen
terms.domain.ui.key_hint=Ein eindeutiger Kurzname f\u00fcr die Domain, unver\u00e4ndert \u00fcber alle Versionen.
terms.domain.ui.title_hint=Ein (kurzer) Titel zur Bezeichnung der Domain
terms.domain.ui.url_hint=Eine eindeutige URL, die die aktuelle Version definiert.
terms.domain.ui.description_hint=Eine ausf\u00fchrlichere Beschreibung der Domain
terms.domain.ui.version_hint=Die aktuelle Version, z.B. 1.00
terms.domain.ui.released_hint=Das Ver\u00f6ffentlichungsdatum der aktuellen Version.

View File

@ -1,23 +0,0 @@
package com.arsdigita.london.terms.ui;
import com.arsdigita.globalization.GlobalizedMessage;
/**
*
* @author Jens Pelzetter <jens@jp-digital.de>
* @version $Id$
*/
public class TermGlobalizationUtil {
public static final String BUNDLE_NAME = "com.arsdigita.london.terms.ui.TermResources";
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);
}
}

View File

@ -1,22 +0,0 @@
# To change this template, choose Tools | Templates
# and open the template in the editor.
term.domain.ui.key.label=Key
term.domain.ui.title.label=Title
term.domain.ui.url.label=URL
term.domain.ui.version.label=Version
term.domain.ui.released=Released
term.domain.ui.edit=Edit
term.domain.ui.delete=Delete
term.domain.ui.delete.confirm=Are you sure to delete this domain?
term.domain.ui.description.label=Description
term.domain.ui.no_domains=No domains found,
term.domain.ui.no_mappings=No mappings found.
term.domain.mapping.ui.delete.confirm=Are you sure to remove this mapping?
term.domain.mapping.ui.delete=Remove
term.domain.mapping.ui.app.select_one=Select an application to map the domain to.
term.domain.mapping.ui.application=Application
term.domain.ui.released.label=Released
term.domain.mapping.ui.context=Context
term.domain.ui.mappings=Mappings
term.domain.ui.basic_properties=Basic Properties

View File

@ -1,22 +0,0 @@
# To change this template, choose Tools | Templates
# and open the template in the editor.
term.domain.ui.key.label=Domain-ID
term.domain.ui.title.label=Titel
term.domain.ui.url.label=URL
term.domain.ui.version.label=Version
term.domain.ui.released=Freigegeben
term.domain.ui.edit=Bearbeiten
term.domain.ui.delete=L\u00f6schen
term.domain.ui.delete.confirm=Sind sie sicher, dass Sie diese Domain l\u00f6schen wollen?
term.domain.ui.description.label=Beschreibung
term.domain.ui.no_domains=Keine Domains gefunden.
term.domain.ui.no_mappings=Keine Mappings gefunden.
term.domain.mapping.ui.delete.confirm=Sind Sie sicher, dass Sie dieses Mapping entfernen wollen?
term.domain.mapping.ui.delete=L\u00f6schen
term.domain.mapping.ui.app.select_one=W\u00e4hlen Sie die Applikation, auf die das Kategoriensystem gemappt werden soll.
term.domain.mapping.ui.application=Applikation
term.domain.ui.released.label=Freigegeben
term.domain.mapping.ui.context=Kontext
term.domain.ui.mappings=Mappings
term.domain.ui.basic_properties=Basiseigenschaften

View File

@ -36,7 +36,7 @@ import com.arsdigita.bebop.form.TextField;
import com.arsdigita.bebop.parameters.NotNullValidationListener;
import com.arsdigita.bebop.parameters.StringInRangeValidationListener;
import com.arsdigita.london.terms.Domain;
import com.arsdigita.london.terms.ui.TermGlobalizationUtil;
import com.arsdigita.london.terms.util.TermsGlobalizationUtil;
import com.arsdigita.london.util.ui.parameters.DomainObjectParameter;
import com.arsdigita.london.util.ui.parameters.URLParameter;
import com.arsdigita.util.UncheckedWrapperException;
@ -69,7 +69,7 @@ public class DomainEditForm extends Form {
key.setSize(20);
key.addValidationListener(new NotNullValidationListener());
key.addValidationListener(new StringInRangeValidationListener(1, 20));
key.setHint("The short unique key for the domain, stable across versions");
key.setHint(TermsGlobalizationUtil.globalize("terms.domain.ui.key_hint"));
try {
key.addPrintListener(new PrintListener() {
@Override
@ -84,45 +84,45 @@ public class DomainEditForm extends Form {
} catch (TooManyListenersException ex) {
throw new UncheckedWrapperException(ex);
}
add(new Label(TermGlobalizationUtil.globalize("term.domain.ui.key.label")));
add(new Label(TermsGlobalizationUtil.globalize("terms.domain.ui.key_label")));
add(key);
title = new TextField("domainTitle");
title.setSize(50);
title.addValidationListener(new NotNullValidationListener());
title.addValidationListener(new StringInRangeValidationListener(1, 300));
title.setHint("The short title of the domain");
add(new Label(TermGlobalizationUtil.globalize("term.domain.ui.title.label")));
title.setHint(TermsGlobalizationUtil.globalize("terms.domain.ui.title_hint"));
add(new Label(TermsGlobalizationUtil.globalize("terms.domain.ui.title_label")));
add(title);
url = new TextField(new URLParameter("domainUrl"));
url.setSize(50);
url.addValidationListener(new NotNullValidationListener());
url.addValidationListener(new StringInRangeValidationListener(1, 255));
url.setHint("The unique URL defining the current version of the domain");
add(new Label(TermGlobalizationUtil.globalize("term.domain.ui.url.label")));
url.setHint(TermsGlobalizationUtil.globalize("terms.domain.ui.url_hint"));
add(new Label(TermsGlobalizationUtil.globalize("terms.domain.ui.url_label")));
add(url);
description = new TextArea("domainDesc");
description.setCols(50);
description.setRows(5);
description.addValidationListener(new StringInRangeValidationListener(0, 4000));
description.setHint("The long description of the domain");
add(new Label(TermGlobalizationUtil.globalize("term.domain.ui.description.label")));
description.setHint(TermsGlobalizationUtil.globalize("terms.domain.ui.description_hint"));
add(new Label(TermsGlobalizationUtil.globalize("terms.domain.ui.description_label")));
add(description);
version = new TextField("domainVersion");
version.setSize(20);
version.addValidationListener(new NotNullValidationListener());
version.addValidationListener(new StringInRangeValidationListener(1, 20));
version.setHint("The current version number, eg 1.00");
add(new Label(TermGlobalizationUtil.globalize("term.domain.ui.version.label")));
version.setHint(TermsGlobalizationUtil.globalize("terms.domain.ui.version_hint"));
add(new Label(TermsGlobalizationUtil.globalize("terms.domain.ui.version_label")));
add(version);
released = new Date("domainReleased");
released.addValidationListener(new NotNullValidationListener());
released.setHint("The release date of the current version");
add(new Label(TermGlobalizationUtil.globalize("term.domain.ui.released.label")));
released.setHint(TermsGlobalizationUtil.globalize("terms.domain.ui.released_hint"));
add(new Label(TermsGlobalizationUtil.globalize("terms.domain.ui.released_label")));
add(released);
saveCancel = new SaveCancelSection();

View File

@ -37,7 +37,7 @@ import com.arsdigita.bebop.form.TextField;
import com.arsdigita.bebop.parameters.NotNullValidationListener;
import com.arsdigita.bebop.parameters.StringInRangeValidationListener;
import com.arsdigita.london.terms.Domain;
import com.arsdigita.london.terms.ui.TermGlobalizationUtil;
import com.arsdigita.london.terms.util.TermsGlobalizationUtil;
import com.arsdigita.london.util.ui.parameters.DomainObjectParameter;
import com.arsdigita.util.UncheckedWrapperException;
import com.arsdigita.web.Application;
@ -76,8 +76,8 @@ public class DomainMappingAddForm extends Form {
final ApplicationCollection applications = Application.
retrieveAllApplications();
applications.addOrder(Application.PRIMARY_URL);
target.addOption(new Option(null, new Label(TermGlobalizationUtil.globalize(
"term.domain.mapping.ui.app.select_one"))));
target.addOption(new Option(null, new Label(TermsGlobalizationUtil.globalize(
"terms.domain.mapping.ui.app.select_one"))));
while (applications.next()) {
final Application app = applications.getApplication();
target.addOption(new Option(app.getOID().toString(),
@ -90,7 +90,7 @@ public class DomainMappingAddForm extends Form {
} catch (TooManyListenersException ex) {
throw new UncheckedWrapperException(ex);
}
add(new Label(TermGlobalizationUtil.globalize("term.domain.mapping.ui.application")));
add(new Label(TermsGlobalizationUtil.globalize("terms.domain.mapping.ui.application")));
add(application);
context = new TextField("domainMappingContext");
@ -113,7 +113,7 @@ public class DomainMappingAddForm extends Form {
//For some purposes it is neccessary to map a domain with a null context
//context.addValidationListener(new NotNullValidationListener());
//context.addValidationListener(new StringInRangeValidationListener(1, 100));
add(new Label(TermGlobalizationUtil.globalize("term.domain.mapping.ui.context")));
add(new Label(TermsGlobalizationUtil.globalize("terms.domain.mapping.ui.context")));
add(context);
saveCancel = new SaveCancelSection();

View File

@ -36,7 +36,7 @@ import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.domain.DomainService;
import com.arsdigita.globalization.GlobalizedMessage;
import com.arsdigita.london.terms.Domain;
import com.arsdigita.london.terms.ui.TermGlobalizationUtil;
import com.arsdigita.london.terms.util.TermsGlobalizationUtil;
import com.arsdigita.london.util.ui.parameters.DomainObjectParameter;
import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID;
@ -58,16 +58,21 @@ public class DomainMappingTable extends Table implements TableActionListener {
this.selected = selected;
setEmptyView(new Label(TermGlobalizationUtil.globalize("term.domain.ui.no_mappings")));
setEmptyView(new Label(TermsGlobalizationUtil.globalize(
"terms.domain.ui.no_mappings")));
final TableColumnModel columnModel = getColumnModel();
columnModel.add(new TableColumn(
0, TermGlobalizationUtil.globalize("term.domain.mapping.ui.application")));
0,
TermsGlobalizationUtil.globalize("terms.domain.mapping.ui.application")));
columnModel.add(new TableColumn(
1, TermGlobalizationUtil.globalize("term.domain.mapping.ui.context")));
1,
TermsGlobalizationUtil.globalize("terms.domain.mapping.ui.context")));
columnModel.add(new TableColumn(
2, TermGlobalizationUtil.globalize("term.domain.mapping.ui.remove"), TABLE_COL_DEL));
2,
TermsGlobalizationUtil.globalize("terms.domain.mapping.ui.remove"),
TABLE_COL_DEL));
setModelBuilder(new DomainMappingTableModelBuilder());
@ -134,7 +139,7 @@ public class DomainMappingTable extends Table implements TableActionListener {
case 1:
return get(useContexts.getDomainObject(), "useContext");
case 2:
return TermGlobalizationUtil.globalize("term.domain.mapping.ui.delete");
return TermsGlobalizationUtil.globalize("terms.domain.mapping.ui.delete");
default:
return null;
}
@ -158,8 +163,8 @@ public class DomainMappingTable extends Table implements TableActionListener {
final int row,
final int column) {
final ControlLink link = new ControlLink(new Label((GlobalizedMessage) value));
link.setConfirmation(TermGlobalizationUtil.globalize(
"term.domain.mapping.ui.delete.confirm"));
link.setConfirmation(TermsGlobalizationUtil.globalize(
"terms.domain.mapping.ui.delete_confirm"));
return link;
}

View File

@ -34,7 +34,7 @@ import com.arsdigita.domain.DomainCollection;
import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.globalization.GlobalizedMessage;
import com.arsdigita.london.terms.Domain;
import com.arsdigita.london.terms.ui.TermGlobalizationUtil;
import com.arsdigita.london.terms.util.TermsGlobalizationUtil;
import com.arsdigita.london.util.ui.parameters.DomainObjectParameter;
import com.arsdigita.persistence.OID;
import com.arsdigita.persistence.SessionManager;
@ -56,33 +56,39 @@ public class DomainTable extends Table implements TableActionListener {
this.selected = selected;
setEmptyView(new Label(TermGlobalizationUtil.globalize("term.domain.ui.no_domains")));
setEmptyView(new Label(TermsGlobalizationUtil.globalize(
"terms.domain.ui.no_domains")));
final TableColumnModel columnModel = getColumnModel();
columnModel.add(new TableColumn(
0, TermGlobalizationUtil.globalize("term.domain.ui.key.label")));
0,
TermsGlobalizationUtil.globalize("terms.domain.ui.key_label")));
columnModel.add(new TableColumn(
1, TermGlobalizationUtil.globalize("term.domain.ui.title.label")));
1,
TermsGlobalizationUtil.globalize("terms.domain.ui.title_label")));
columnModel.add(new TableColumn(
2, TermGlobalizationUtil.globalize("term.domain.ui.url.label")));
2,
TermsGlobalizationUtil.globalize("terms.domain.ui.url_label")));
columnModel.add(new TableColumn(
3, TermGlobalizationUtil.globalize("term.domain.ui.version.label")));
3,
TermsGlobalizationUtil.globalize("terms.domain.ui.version_label")));
columnModel.add(new TableColumn(
4, TermGlobalizationUtil.globalize("term.domain.ui.released")));
4,
TermsGlobalizationUtil.globalize("terms.domain.ui.released_label")));
columnModel.add(new TableColumn(
5,
TermGlobalizationUtil.globalize("term.domain.ui.edit"),
TermsGlobalizationUtil.globalize("terms.domain.ui.action_edit"),
TABLE_COL_EDIT));
columnModel.add(new TableColumn(
6,
TermGlobalizationUtil.globalize("term.domain.ui.delete"),
TermsGlobalizationUtil.globalize("terms.domain.ui.action_delete"),
TABLE_COL_DEL));
setModelBuilder(new DomainTableModelBuilder());
@ -94,7 +100,8 @@ public class DomainTable extends Table implements TableActionListener {
}
private class DomainTableModelBuilder extends LockableImpl implements TableModelBuilder {
private class DomainTableModelBuilder extends LockableImpl
implements TableModelBuilder {
@Override
public TableModel makeModel(final Table table, final PageState state) {
@ -142,9 +149,11 @@ public class DomainTable extends Table implements TableActionListener {
case 4:
return domain.getReleased().toString();
case 5:
return TermGlobalizationUtil.globalize("term.domain.ui.edit");
return TermsGlobalizationUtil.globalize(
"terms.domain.ui.action_edit");
case 6:
return TermGlobalizationUtil.globalize("term.domain.ui.delete");
return TermsGlobalizationUtil.globalize(
"terms.domain.ui.action_delete");
default:
return null;
}
@ -184,7 +193,8 @@ public class DomainTable extends Table implements TableActionListener {
final int row,
final int column) {
final ControlLink link = new ControlLink(new Label((GlobalizedMessage) value));
link.setConfirmation(TermGlobalizationUtil.globalize("term.domain.ui.delete.confirm"));
link.setConfirmation(TermsGlobalizationUtil.globalize(
"terms.domain.ui.delete.confirm"));
return link;
}

View File

@ -0,0 +1,57 @@
/*
* 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.london.terms.util;
import com.arsdigita.globalization.GlobalizedMessage;
/**
* Compilation of methods to simplify the handling of globalizing keys.
* Basically it adds the name of package's resource bundle files to the
* globalize methods and forwards to GlobalizedMessage, shortening the
* method invocation in the various application classes.
*
* @author Jens Pelzetter <jens@jp-digital.de>
* @version $Id$
*/
public class TermsGlobalizationUtil {
/** Name of Java resource files to handle CMS's globalisation. */
public static final String BUNDLE_NAME =
"com.arsdigita.london.terms.TermsResources";
/**
* Returns a globalized message using the package specific bundle,
* provided by BUNDLE_NAME.
*/
public static GlobalizedMessage globalize(final String key) {
return new GlobalizedMessage(key, BUNDLE_NAME);
}
/**
* Returns a globalized message object, using the package specific bundle,
* as specified by BUNDLE_NAME. Also takes in an Object[] of arguments to
* interpolate into the retrieved message using the MessageFormat class.
*/
public static GlobalizedMessage globalize(final String key,
final Object[] args) {
return new GlobalizedMessage(key, BUNDLE_NAME, args);
}
}

View File

@ -18,26 +18,26 @@
package com.arsdigita.navigation;
import com.arsdigita.categorization.Category;
import com.arsdigita.categorization.CategoryCollection;
//import com.arsdigita.categorization.CategoryCollection;
import com.arsdigita.db.DbHelper;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.TemplateContext;
//import com.arsdigita.cms.TemplateContext;
import com.arsdigita.domain.DomainObject;
import com.arsdigita.domain.DomainObjectFactory;
//import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.domain.DomainObjectInstantiator;
import com.arsdigita.kernel.NoValidURLException;
//import com.arsdigita.kernel.NoValidURLException;
import com.arsdigita.kernel.URLService;
import com.arsdigita.kernel.URLFinder;
//import com.arsdigita.kernel.URLFinder;
import com.arsdigita.kernel.ACSObjectInstantiator;
import com.arsdigita.persistence.DataCollection;
//import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.Filter;
import com.arsdigita.persistence.SessionManager;
import com.arsdigita.persistence.OID;
//import com.arsdigita.persistence.Filter;
//import com.arsdigita.persistence.SessionManager;
//import com.arsdigita.persistence.OID;
import com.arsdigita.persistence.pdl.ManifestSource;
import com.arsdigita.persistence.pdl.NameFilter;
@ -46,12 +46,12 @@ import com.arsdigita.runtime.RuntimeConfig;
import com.arsdigita.runtime.PDLInitializer;
import com.arsdigita.runtime.DomainInitEvent;
import com.arsdigita.web.Application;
import com.arsdigita.web.ParameterMap;
import com.arsdigita.web.URL;
import com.arsdigita.web.Web;
//import com.arsdigita.web.Application;
//import com.arsdigita.web.ParameterMap;
//import com.arsdigita.web.URL;
//import com.arsdigita.web.Web;
import com.arsdigita.util.Assert;
//import com.arsdigita.util.Assert;
import com.arsdigita.kernel.ResourceTypeConfig;
import com.arsdigita.kernel.ResourceType;
@ -65,11 +65,11 @@ import com.arsdigita.navigation.portlet.ItemListPortlet;
import com.arsdigita.navigation.ui.portlet.ObjectListPortletEditor;
import com.arsdigita.navigation.ui.portlet.ItemListPortletEditor;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
//import java.math.BigDecimal;
//import java.util.ArrayList;
//import java.util.Iterator;
//import java.util.LinkedList;
//import java.util.List;
import org.apache.log4j.Logger;
@ -213,145 +213,9 @@ public class Initializer extends CompoundInitializer {
};
URLService.registerFinder(Category.BASE_DATA_OBJECT_TYPE, new NavigationUrlFinder());
URLService.registerFinder(Category.BASE_DATA_OBJECT_TYPE,
new NavigationUrlFinder());
// URLService.registerFinder(Category.BASE_DATA_OBJECT_TYPE,
// new URLFinder() {
//
// public String find(OID oid, String context)
// throws NoValidURLException {
// return find(oid);
// }
//
// public String find(OID oid)
// throws NoValidURLException {
//
// if (s_log.isInfoEnabled()) {
// s_log.info("Locating " + oid);
// }
//
// Category cat = (Category) DomainObjectFactory.newInstance(oid);
// CategoryCollection ancestors = cat.getDefaultAscendants();
// // XXX bz 118313
// ancestors.clearOrder();
// ancestors.addOrder(Category.DEFAULT_ANCESTORS);
//
// List ids = new ArrayList();
// List paths = new LinkedList();
// boolean first = true;
// while (ancestors.next()) {
// Category anc = ancestors.getCategory();
// if (s_log.isDebugEnabled()) {
// s_log.debug("Process parent " + anc);
// }
// ids.add(anc.getID());
// if (first) {
// first = false;
// paths.add("");
// continue;
// }
// if (paths != null) {
// String url = anc.getURL();
// if (url != null && !"".equals(url)) {
// s_log.debug("Appending '" + url + "' for anc");
// paths.add(url);
// } else {
// if (s_log.isInfoEnabled()) {
// s_log.info("Cat " + anc + " has no url ");
// }
// paths = null;
// }
// } else {
// s_log.debug("Path is null");
// }
// }
//
// if (s_log.isDebugEnabled() && null != paths) {
// StringBuffer buf = new StringBuffer();
// Iterator idsit = ids.iterator();
// Iterator pathsit = paths.iterator();
// while (idsit.hasNext()) {
// buf.append(idsit.next().toString()).append(' ');
// buf.append(pathsit.next().toString()).append('/');
// }
// s_log.debug("Full path is " + buf.toString());
// }
//
// TemplateContext tContext =
// Navigation.getContext().getTemplateContext();
// String useContext = null == tContext ? null : tContext.getContext();
// if (s_log.isDebugEnabled()) {
// s_log.debug("Use Context: " + useContext);
// }
//
// DataCollection apps = SessionManager.getSession().retrieve(Application.BASE_DATA_OBJECT_TYPE);
// apps.addEqualsFilter("objectType", Navigation.BASE_DATA_OBJECT_TYPE);
// apps.addEqualsFilter("rootUseContext.useContext", useContext);
// Filter f = apps.addFilter("rootUseContext.rootCategory in :ids");
// f.set("ids", ids);
//
// apps.addPath("rootUseContext.rootCategory.id");
//
// String appURL = null;
// BigDecimal rootCatID = null;
//
// if (!apps.next()) {
// appURL = Navigation.getConfig().getDefaultCategoryRootPath();
// // We can only use named paths if the category is mapped
// // to a navigation app instance in the current
// // use context
// paths = null;
// if (s_log.isDebugEnabled()) {
// s_log.debug("Using default nav path " + appURL);
// }
// } else {
// Application app = (Application) DomainObjectFactory.newInstance(apps.getDataObject());
// //appURL = app.getPrimaryURL();
// appURL = String.format("%s/", app.getPath());
// rootCatID = (BigDecimal) apps.get("rootUseContext.rootCategory.id");
// apps.close();
// }
//
// if (s_log.isInfoEnabled()) {
// s_log.info("Application path is " + appURL);
// }
//
// Assert.isTrue(appURL.startsWith("/"), "url starts with '/'");
// Assert.isTrue(appURL.endsWith("/"), "url ends with '/'");
//
// ParameterMap map = new ParameterMap();
// String path;
// if (paths == null) {
// map.setParameter("categoryID", cat.getID());
// path = "category.jsp";
// } else {
// if (s_log.isDebugEnabled()) {
// s_log.debug("Generating path from category " + rootCatID);
// }
// StringBuffer buf = new StringBuffer();
// Iterator pathsit = paths.iterator();
// Iterator idsit = ids.iterator();
// boolean gotRoot = false;
// while (pathsit.hasNext()) {
// String frag = (String) pathsit.next();
// BigDecimal id = (BigDecimal) idsit.next();
// if (gotRoot) {
// buf.append(frag).append('/');
// } else if (id.equals(rootCatID)) {
// gotRoot = true;
// }
// }
// path = buf.toString();
// }
//
// String url = URL.there(Web.getRequest(), appURL + path, map).toString();
// if (s_log.isInfoEnabled()) {
// s_log.info("Final url is " + url);
// }
// return url;
// }
//
// });
//Register the ApplicationManager implementation for this application
ApplicationManagers.register(new NavigationAppManager());

View File

@ -16,24 +16,41 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.navigation;
import com.arsdigita.globalization.GlobalizedMessage;
/**
* Compilation of methods to simplify the handling of globalizing keys.
* Basically it adds the name of package's resource bundle files to the
* globalize methods and forwards to GlobalizedMessage, shortening the
* method invocation in the various application classes.
*
* @author Jens Pelzetter <jens@jp-digital.de>
* @version $Id$
*/
public class NavigationGlobalizationUtil {
private static final String BUNDLE_NAME = "com.arsdigita.navigation.NavigationResources";
/** Name of Java resource files to handle CMS's globalisation. */
private static final String BUNDLE_NAME =
"com.arsdigita.navigation.NavigationResources";
/**
* Returns a globalized message using the package specific bundle,
* provided by BUNDLE_NAME.
*/
public static GlobalizedMessage globalize(final String key) {
return new GlobalizedMessage(key, BUNDLE_NAME);
}
public static GlobalizedMessage globalize(final String key, final Object[] args) {
/**
* Returns a globalized message object, using the package specific bundle,
* as specified by BUNDLE_NAME. Also takes in an Object[] of arguments to
* interpolate into the retrieved message using the MessageFormat class.
*/
public static GlobalizedMessage globalize(final String key,
final Object[] args) {
return new GlobalizedMessage(key, BUNDLE_NAME, args);
}