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.ui.admin.ApplicationManagers;
import com.arsdigita.xml.XML; 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 { public class Initializer extends CompoundInitializer {
/**
* Constructor
*/
public Initializer() { public Initializer() {
final String url = RuntimeConfig.getConfig().getJDBCURL(); final String url = RuntimeConfig.getConfig().getJDBCURL();
final int database = DbHelper.getDatabaseFromURL(url); final int database = DbHelper.getDatabaseFromURL(url);
@ -53,6 +62,11 @@ public class Initializer extends CompoundInitializer {
new NameFilter(DbHelper.getDatabaseSuffix(database), "pdl")))); new NameFilter(DbHelper.getDatabaseSuffix(database), "pdl"))));
} }
/**
* Initializes domain-coupling machinery, usually consisting of
* registering object instantiators and observers.
*
*/
@Override @Override
public void init(DomainInitEvent e) { 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) { public DomainObject doNewInstance(DataObject dataObject) {
return new DomainUseContext(dataObject); return new DomainUseContext(dataObject);
} }

View File

@ -46,7 +46,7 @@ public class Loader extends PackageLoader {
*/ */
public static void setupApplication() { 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 // name to determine the location of xsl files (by url-izing it). So
// DON'T modify it without synchronizing web directory tree accordingly! // DON'T modify it without synchronizing web directory tree accordingly!
ApplicationType type = ApplicationType type =

View File

@ -22,7 +22,7 @@ import com.arsdigita.bebop.BoxPanel;
import com.arsdigita.bebop.Label; import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.Page; import com.arsdigita.bebop.Page;
import com.arsdigita.bebop.SegmentedPanel; 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.DomainEditForm;
import com.arsdigita.london.terms.ui.admin.DomainMappingAddForm; import com.arsdigita.london.terms.ui.admin.DomainMappingAddForm;
import com.arsdigita.london.terms.ui.admin.DomainMappingTable; import com.arsdigita.london.terms.ui.admin.DomainMappingTable;
@ -72,9 +72,11 @@ public class TermsAppManager extends AbstractSingletonApplicationManager<Terms>
container.add(domains); container.add(domains);
final SegmentedPanel panel = new SegmentedPanel(); 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); editForm);
panel.addSegment(new Label(TermGlobalizationUtil.globalize("term.domain.ui.mappings")), panel.addSegment(new Label(TermsGlobalizationUtil.globalize(
"terms.ui.mappings")),
mappingPanel); mappingPanel);
// container.add(editForm); // 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.NotNullValidationListener;
import com.arsdigita.bebop.parameters.StringInRangeValidationListener; import com.arsdigita.bebop.parameters.StringInRangeValidationListener;
import com.arsdigita.london.terms.Domain; 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.DomainObjectParameter;
import com.arsdigita.london.util.ui.parameters.URLParameter; import com.arsdigita.london.util.ui.parameters.URLParameter;
import com.arsdigita.util.UncheckedWrapperException; import com.arsdigita.util.UncheckedWrapperException;
@ -69,7 +69,7 @@ public class DomainEditForm extends Form {
key.setSize(20); key.setSize(20);
key.addValidationListener(new NotNullValidationListener()); key.addValidationListener(new NotNullValidationListener());
key.addValidationListener(new StringInRangeValidationListener(1, 20)); 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 { try {
key.addPrintListener(new PrintListener() { key.addPrintListener(new PrintListener() {
@Override @Override
@ -84,45 +84,45 @@ public class DomainEditForm extends Form {
} catch (TooManyListenersException ex) { } catch (TooManyListenersException ex) {
throw new UncheckedWrapperException(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); add(key);
title = new TextField("domainTitle"); title = new TextField("domainTitle");
title.setSize(50); title.setSize(50);
title.addValidationListener(new NotNullValidationListener()); title.addValidationListener(new NotNullValidationListener());
title.addValidationListener(new StringInRangeValidationListener(1, 300)); title.addValidationListener(new StringInRangeValidationListener(1, 300));
title.setHint("The short title of the domain"); title.setHint(TermsGlobalizationUtil.globalize("terms.domain.ui.title_hint"));
add(new Label(TermGlobalizationUtil.globalize("term.domain.ui.title.label"))); add(new Label(TermsGlobalizationUtil.globalize("terms.domain.ui.title_label")));
add(title); add(title);
url = new TextField(new URLParameter("domainUrl")); url = new TextField(new URLParameter("domainUrl"));
url.setSize(50); url.setSize(50);
url.addValidationListener(new NotNullValidationListener()); url.addValidationListener(new NotNullValidationListener());
url.addValidationListener(new StringInRangeValidationListener(1, 255)); url.addValidationListener(new StringInRangeValidationListener(1, 255));
url.setHint("The unique URL defining the current version of the domain"); url.setHint(TermsGlobalizationUtil.globalize("terms.domain.ui.url_hint"));
add(new Label(TermGlobalizationUtil.globalize("term.domain.ui.url.label"))); add(new Label(TermsGlobalizationUtil.globalize("terms.domain.ui.url_label")));
add(url); add(url);
description = new TextArea("domainDesc"); description = new TextArea("domainDesc");
description.setCols(50); description.setCols(50);
description.setRows(5); description.setRows(5);
description.addValidationListener(new StringInRangeValidationListener(0, 4000)); description.addValidationListener(new StringInRangeValidationListener(0, 4000));
description.setHint("The long description of the domain"); description.setHint(TermsGlobalizationUtil.globalize("terms.domain.ui.description_hint"));
add(new Label(TermGlobalizationUtil.globalize("term.domain.ui.description.label"))); add(new Label(TermsGlobalizationUtil.globalize("terms.domain.ui.description_label")));
add(description); add(description);
version = new TextField("domainVersion"); version = new TextField("domainVersion");
version.setSize(20); version.setSize(20);
version.addValidationListener(new NotNullValidationListener()); version.addValidationListener(new NotNullValidationListener());
version.addValidationListener(new StringInRangeValidationListener(1, 20)); version.addValidationListener(new StringInRangeValidationListener(1, 20));
version.setHint("The current version number, eg 1.00"); version.setHint(TermsGlobalizationUtil.globalize("terms.domain.ui.version_hint"));
add(new Label(TermGlobalizationUtil.globalize("term.domain.ui.version.label"))); add(new Label(TermsGlobalizationUtil.globalize("terms.domain.ui.version_label")));
add(version); add(version);
released = new Date("domainReleased"); released = new Date("domainReleased");
released.addValidationListener(new NotNullValidationListener()); released.addValidationListener(new NotNullValidationListener());
released.setHint("The release date of the current version"); released.setHint(TermsGlobalizationUtil.globalize("terms.domain.ui.released_hint"));
add(new Label(TermGlobalizationUtil.globalize("term.domain.ui.released.label"))); add(new Label(TermsGlobalizationUtil.globalize("terms.domain.ui.released_label")));
add(released); add(released);
saveCancel = new SaveCancelSection(); 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.NotNullValidationListener;
import com.arsdigita.bebop.parameters.StringInRangeValidationListener; import com.arsdigita.bebop.parameters.StringInRangeValidationListener;
import com.arsdigita.london.terms.Domain; 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.DomainObjectParameter;
import com.arsdigita.util.UncheckedWrapperException; import com.arsdigita.util.UncheckedWrapperException;
import com.arsdigita.web.Application; import com.arsdigita.web.Application;
@ -76,8 +76,8 @@ public class DomainMappingAddForm extends Form {
final ApplicationCollection applications = Application. final ApplicationCollection applications = Application.
retrieveAllApplications(); retrieveAllApplications();
applications.addOrder(Application.PRIMARY_URL); applications.addOrder(Application.PRIMARY_URL);
target.addOption(new Option(null, new Label(TermGlobalizationUtil.globalize( target.addOption(new Option(null, new Label(TermsGlobalizationUtil.globalize(
"term.domain.mapping.ui.app.select_one")))); "terms.domain.mapping.ui.app.select_one"))));
while (applications.next()) { while (applications.next()) {
final Application app = applications.getApplication(); final Application app = applications.getApplication();
target.addOption(new Option(app.getOID().toString(), target.addOption(new Option(app.getOID().toString(),
@ -90,7 +90,7 @@ public class DomainMappingAddForm extends Form {
} catch (TooManyListenersException ex) { } catch (TooManyListenersException ex) {
throw new UncheckedWrapperException(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); add(application);
context = new TextField("domainMappingContext"); 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 //For some purposes it is neccessary to map a domain with a null context
//context.addValidationListener(new NotNullValidationListener()); //context.addValidationListener(new NotNullValidationListener());
//context.addValidationListener(new StringInRangeValidationListener(1, 100)); //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); add(context);
saveCancel = new SaveCancelSection(); saveCancel = new SaveCancelSection();

View File

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

View File

@ -34,7 +34,7 @@ import com.arsdigita.domain.DomainCollection;
import com.arsdigita.domain.DomainObjectFactory; import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.globalization.GlobalizedMessage; import com.arsdigita.globalization.GlobalizedMessage;
import com.arsdigita.london.terms.Domain; 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.DomainObjectParameter;
import com.arsdigita.persistence.OID; import com.arsdigita.persistence.OID;
import com.arsdigita.persistence.SessionManager; import com.arsdigita.persistence.SessionManager;
@ -56,33 +56,39 @@ public class DomainTable extends Table implements TableActionListener {
this.selected = selected; 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(); final TableColumnModel columnModel = getColumnModel();
columnModel.add(new TableColumn( columnModel.add(new TableColumn(
0, TermGlobalizationUtil.globalize("term.domain.ui.key.label"))); 0,
TermsGlobalizationUtil.globalize("terms.domain.ui.key_label")));
columnModel.add(new TableColumn( columnModel.add(new TableColumn(
1, TermGlobalizationUtil.globalize("term.domain.ui.title.label"))); 1,
TermsGlobalizationUtil.globalize("terms.domain.ui.title_label")));
columnModel.add(new TableColumn( columnModel.add(new TableColumn(
2, TermGlobalizationUtil.globalize("term.domain.ui.url.label"))); 2,
TermsGlobalizationUtil.globalize("terms.domain.ui.url_label")));
columnModel.add(new TableColumn( columnModel.add(new TableColumn(
3, TermGlobalizationUtil.globalize("term.domain.ui.version.label"))); 3,
TermsGlobalizationUtil.globalize("terms.domain.ui.version_label")));
columnModel.add(new TableColumn( columnModel.add(new TableColumn(
4, TermGlobalizationUtil.globalize("term.domain.ui.released"))); 4,
TermsGlobalizationUtil.globalize("terms.domain.ui.released_label")));
columnModel.add(new TableColumn( columnModel.add(new TableColumn(
5, 5,
TermGlobalizationUtil.globalize("term.domain.ui.edit"), TermsGlobalizationUtil.globalize("terms.domain.ui.action_edit"),
TABLE_COL_EDIT)); TABLE_COL_EDIT));
columnModel.add(new TableColumn( columnModel.add(new TableColumn(
6, 6,
TermGlobalizationUtil.globalize("term.domain.ui.delete"), TermsGlobalizationUtil.globalize("terms.domain.ui.action_delete"),
TABLE_COL_DEL)); TABLE_COL_DEL));
setModelBuilder(new DomainTableModelBuilder()); 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 @Override
public TableModel makeModel(final Table table, final PageState state) { public TableModel makeModel(final Table table, final PageState state) {
@ -142,9 +149,11 @@ public class DomainTable extends Table implements TableActionListener {
case 4: case 4:
return domain.getReleased().toString(); return domain.getReleased().toString();
case 5: case 5:
return TermGlobalizationUtil.globalize("term.domain.ui.edit"); return TermsGlobalizationUtil.globalize(
"terms.domain.ui.action_edit");
case 6: case 6:
return TermGlobalizationUtil.globalize("term.domain.ui.delete"); return TermsGlobalizationUtil.globalize(
"terms.domain.ui.action_delete");
default: default:
return null; return null;
} }
@ -184,7 +193,8 @@ public class DomainTable extends Table implements TableActionListener {
final int row, final int row,
final int column) { final int column) {
final ControlLink link = new ControlLink(new Label((GlobalizedMessage) value)); 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; 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; package com.arsdigita.navigation;
import com.arsdigita.categorization.Category; import com.arsdigita.categorization.Category;
import com.arsdigita.categorization.CategoryCollection; //import com.arsdigita.categorization.CategoryCollection;
import com.arsdigita.db.DbHelper; import com.arsdigita.db.DbHelper;
import com.arsdigita.cms.ContentSection; import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.TemplateContext; //import com.arsdigita.cms.TemplateContext;
import com.arsdigita.domain.DomainObject; import com.arsdigita.domain.DomainObject;
import com.arsdigita.domain.DomainObjectFactory; //import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.domain.DomainObjectInstantiator; import com.arsdigita.domain.DomainObjectInstantiator;
import com.arsdigita.kernel.NoValidURLException; //import com.arsdigita.kernel.NoValidURLException;
import com.arsdigita.kernel.URLService; import com.arsdigita.kernel.URLService;
import com.arsdigita.kernel.URLFinder; //import com.arsdigita.kernel.URLFinder;
import com.arsdigita.kernel.ACSObjectInstantiator; import com.arsdigita.kernel.ACSObjectInstantiator;
import com.arsdigita.persistence.DataCollection; //import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.Filter; //import com.arsdigita.persistence.Filter;
import com.arsdigita.persistence.SessionManager; //import com.arsdigita.persistence.SessionManager;
import com.arsdigita.persistence.OID; //import com.arsdigita.persistence.OID;
import com.arsdigita.persistence.pdl.ManifestSource; import com.arsdigita.persistence.pdl.ManifestSource;
import com.arsdigita.persistence.pdl.NameFilter; import com.arsdigita.persistence.pdl.NameFilter;
@ -46,12 +46,12 @@ import com.arsdigita.runtime.RuntimeConfig;
import com.arsdigita.runtime.PDLInitializer; import com.arsdigita.runtime.PDLInitializer;
import com.arsdigita.runtime.DomainInitEvent; import com.arsdigita.runtime.DomainInitEvent;
import com.arsdigita.web.Application; //import com.arsdigita.web.Application;
import com.arsdigita.web.ParameterMap; //import com.arsdigita.web.ParameterMap;
import com.arsdigita.web.URL; //import com.arsdigita.web.URL;
import com.arsdigita.web.Web; //import com.arsdigita.web.Web;
import com.arsdigita.util.Assert; //import com.arsdigita.util.Assert;
import com.arsdigita.kernel.ResourceTypeConfig; import com.arsdigita.kernel.ResourceTypeConfig;
import com.arsdigita.kernel.ResourceType; 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.ObjectListPortletEditor;
import com.arsdigita.navigation.ui.portlet.ItemListPortletEditor; import com.arsdigita.navigation.ui.portlet.ItemListPortletEditor;
import java.math.BigDecimal; //import java.math.BigDecimal;
import java.util.ArrayList; //import java.util.ArrayList;
import java.util.Iterator; //import java.util.Iterator;
import java.util.LinkedList; //import java.util.LinkedList;
import java.util.List; //import java.util.List;
import org.apache.log4j.Logger; 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 //Register the ApplicationManager implementation for this application
ApplicationManagers.register(new NavigationAppManager()); ApplicationManagers.register(new NavigationAppManager());

View File

@ -16,24 +16,41 @@
* 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.globalization.GlobalizedMessage; 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> * @author Jens Pelzetter <jens@jp-digital.de>
* @version $Id$ * @version $Id$
*/ */
public class NavigationGlobalizationUtil { 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) { public static GlobalizedMessage globalize(final String key) {
return new GlobalizedMessage(key, BUNDLE_NAME); 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); return new GlobalizedMessage(key, BUNDLE_NAME, args);
} }