CategoryLocalization UI
Bearbeiten von Kategorien funktioniert nun. (#107) Liste der Sprachversionen ist nun nach locale sortiert git-svn-id: https://svn.libreccm.org/ccm/trunk@1809 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
8aea372fd5
commit
6431b0a5d5
|
|
@ -105,7 +105,7 @@ cms.contenttypes.ui.event_start_time=Event Start Time:
|
||||||
cms.contenttypes.ui.event_end_time=Event End Time:
|
cms.contenttypes.ui.event_end_time=Event End Time:
|
||||||
cms.contenttypes.ui.government_uid=Government UID:
|
cms.contenttypes.ui.government_uid=Government UID:
|
||||||
cms.contenttypes.ui.grade=Grade:
|
cms.contenttypes.ui.grade=Grade:
|
||||||
cms.contenttypes.ui.homepage=Homepage?
|
cms.contenttypes.ui.homepage=Homepage:
|
||||||
cms.contenttypes.ui.job_description=Job Description:
|
cms.contenttypes.ui.job_description=Job Description:
|
||||||
cms.contenttypes.ui.launch_date=Launch Date:
|
cms.contenttypes.ui.launch_date=Launch Date:
|
||||||
cms.contenttypes.ui.lead=Description:
|
cms.contenttypes.ui.lead=Description:
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ cms.contenttypes.template.body_text.description=Haupttext bearbeiten
|
||||||
cms.contenttypes.shared.assign_categories.title=Kategorien zuweisen
|
cms.contenttypes.shared.assign_categories.title=Kategorien zuweisen
|
||||||
cms.contenttypes.shared.assign_categories.description=Kategorien zuweisen
|
cms.contenttypes.shared.assign_categories.description=Kategorien zuweisen
|
||||||
cms.contenttypes.shared.attach_files.title=Dateien zuordnen
|
cms.contenttypes.shared.attach_files.title=Dateien zuordnen
|
||||||
cms.contenttypes.shared.attach_files.description=Dateien anh\u00c4ngen
|
cms.contenttypes.shared.attach_files.description=Dateien anh\u00e4ngen
|
||||||
cms.contenttypes.shared.basic_properties.description=Basiseigenschaften editieren
|
cms.contenttypes.shared.basic_properties.description=Basiseigenschaften editieren
|
||||||
cms.contenttypes.shared.basic_properties.title=Basiseigenschaften
|
cms.contenttypes.shared.basic_properties.title=Basiseigenschaften
|
||||||
cms.contenttypes.shared.body_text.title=Haupttext
|
cms.contenttypes.shared.body_text.title=Haupttext
|
||||||
|
|
@ -105,7 +105,7 @@ cms.contenttypes.ui.event_start_time=Event Beginn um\:
|
||||||
cms.contenttypes.ui.event_end_time=Event Ende um\:
|
cms.contenttypes.ui.event_end_time=Event Ende um\:
|
||||||
cms.contenttypes.ui.government_uid=Government UID:
|
cms.contenttypes.ui.government_uid=Government UID:
|
||||||
cms.contenttypes.ui.grade=Grad:
|
cms.contenttypes.ui.grade=Grad:
|
||||||
cms.contenttypes.ui.homepage=Homepage?
|
cms.contenttypes.ui.homepage=Homepage:
|
||||||
cms.contenttypes.ui.job_description=Job Beschreibung:
|
cms.contenttypes.ui.job_description=Job Beschreibung:
|
||||||
cms.contenttypes.ui.launch_date=Ver\u00f6ffentlichungsdatum:
|
cms.contenttypes.ui.launch_date=Ver\u00f6ffentlichungsdatum:
|
||||||
cms.contenttypes.ui.lead=Beschreibung (Lead Text):
|
cms.contenttypes.ui.lead=Beschreibung (Lead Text):
|
||||||
|
|
@ -160,8 +160,8 @@ cms.installer.cannot_find_file=kann Datei nicht finden
|
||||||
cms.installer.cannot_find_group_for_email=Kann email-Gruppe nicht finden
|
cms.installer.cannot_find_group_for_email=Kann email-Gruppe nicht finden
|
||||||
cms.installer.cannot_read_line_of_data=Kann Datensatz nicht lesen
|
cms.installer.cannot_read_line_of_data=Kann Datensatz nicht lesen
|
||||||
cms.installer.cannot_set_template_text=Kann Template Text nicht festlegen
|
cms.installer.cannot_set_template_text=Kann Template Text nicht festlegen
|
||||||
cms.installer.could_not_load_section=Kann die folgende ContentSection nicht laden '{0}'
|
cms.installer.could_not_load_section=Kann die ContentSection '{0}' nicht laden
|
||||||
cms.installer.deploy=anwenden
|
cms.installer.deploy=Anwenden
|
||||||
cms.installer.failed_to_update_the_default_content_section=Update der Default Content Section gescheitert.
|
cms.installer.failed_to_update_the_default_content_section=Update der Default Content Section gescheitert.
|
||||||
cms.installer.formbuilder.form=Form
|
cms.installer.formbuilder.form=Form
|
||||||
cms.installer.formbuilder.form_section=Form Abschnitt
|
cms.installer.formbuilder.form_section=Form Abschnitt
|
||||||
|
|
@ -187,7 +187,7 @@ cms.publishToFile.cannot_read_template_text=cannot read template text
|
||||||
cms.publishToFile.could_not_get_object_for_oid=Could not get object for oid
|
cms.publishToFile.could_not_get_object_for_oid=Could not get object for oid
|
||||||
cms.publishToFile.error_executing=Ausf\u00fchrungsfehler bei '{0}' \:
|
cms.publishToFile.error_executing=Ausf\u00fchrungsfehler bei '{0}' \:
|
||||||
cms.publishToFile.exit_value_was=Exit Code war
|
cms.publishToFile.exit_value_was=Exit Code war
|
||||||
cms.publishToFile.interrupted_when_doing=Unterbrochen bei Ausf\u00fchren von '{0}'
|
cms.publishToFile.interrupted_when_doing=Unterbrochen beim Ausf\u00fchren von '{0}'
|
||||||
cms.publishToFile.invalid_brokenlinkaction=Ung\u00fcltige BrokenLinkAction\:
|
cms.publishToFile.invalid_brokenlinkaction=Ung\u00fcltige BrokenLinkAction\:
|
||||||
cms.publishToFile.invalid_reference_target_type=Ung\u00fcltige reference target type\:
|
cms.publishToFile.invalid_reference_target_type=Ung\u00fcltige reference target type\:
|
||||||
cms.publishToFile.malformed_url=Falsche Struktur der URL\:
|
cms.publishToFile.malformed_url=Falsche Struktur der URL\:
|
||||||
|
|
@ -232,7 +232,7 @@ cms.ui.available_categories=Verf\u00fcgbare Kategorien:
|
||||||
cms.ui.browse=Dokumente
|
cms.ui.browse=Dokumente
|
||||||
cms.ui.browse_items_by_category=Durchsicht der Elemente nach Kategorien
|
cms.ui.browse_items_by_category=Durchsicht der Elemente nach Kategorien
|
||||||
cms.ui.cancel=Abbruch
|
cms.ui.cancel=Abbruch
|
||||||
cms.ui.cancel_hit=Abbruch dr\u00fccken
|
cms.ui.cancel_hit=Abbruch gedr\u00fcckt
|
||||||
cms.ui.cancelled=abgebrochen
|
cms.ui.cancelled=abgebrochen
|
||||||
cms.ui.cannot_assign_groups_to_owner=cannot assign groups to owner
|
cms.ui.cannot_assign_groups_to_owner=cannot assign groups to owner
|
||||||
cms.ui.categories=Kategorien
|
cms.ui.categories=Kategorien
|
||||||
|
|
@ -241,7 +241,7 @@ cms.ui.content_center=Content center
|
||||||
cms.ui.content_item=Dokument
|
cms.ui.content_item=Dokument
|
||||||
cms.ui.content_section=Content section
|
cms.ui.content_section=Content section
|
||||||
cms.ui.content_section_configuration=<h2>Content Section Configuration</h2>
|
cms.ui.content_section_configuration=<h2>Content Section Configuration</h2>
|
||||||
cms.ui.content_types=Dokument Typen
|
cms.ui.content_types=Dokumenttypen
|
||||||
cms.ui.contents_of=Inhalt von
|
cms.ui.contents_of=Inhalt von
|
||||||
cms.ui.create=Erstellen
|
cms.ui.create=Erstellen
|
||||||
cms.ui.cse=Bald abgelaufen
|
cms.ui.cse=Bald abgelaufen
|
||||||
|
|
@ -324,10 +324,10 @@ cms.ui.tasks_status_no_colon=Status
|
||||||
cms.ui.template=Vorlage
|
cms.ui.template=Vorlage
|
||||||
cms.ui.Templates=Vorlagen
|
cms.ui.Templates=Vorlagen
|
||||||
cms.ui.the_model_is_empty=Das Modell ist leer
|
cms.ui.the_model_is_empty=Das Modell ist leer
|
||||||
cms.ui.there_are_no_items=Keine elemente vorhanden.
|
cms.ui.there_are_no_items=Keine Elemente vorhanden.
|
||||||
cms.ui.there_was_no_one_matching_the_search_criteria=Kein Element erf\u00fcllte die Suchkriterien.
|
cms.ui.there_was_no_one_matching_the_search_criteria=Kein Element erf\u00fcllte die Suchkriterien.
|
||||||
cms.ui.this_should_never_happen=Dies sollte nie passieren\!
|
cms.ui.this_should_never_happen=Dies sollte nie passieren\!
|
||||||
cms.ui.types=Dokument Typen
|
cms.ui.types=Dokumenttypen
|
||||||
cms.ui.unknown=unbekannt
|
cms.ui.unknown=unbekannt
|
||||||
cms.ui.upload_new_content=Neuen Inhalt laden
|
cms.ui.upload_new_content=Neuen Inhalt laden
|
||||||
cms.ui.use_custom_permissions=Benutzerspezifische Rechte
|
cms.ui.use_custom_permissions=Benutzerspezifische Rechte
|
||||||
|
|
@ -352,9 +352,9 @@ cms.ui.item_search.search=Suchen
|
||||||
|
|
||||||
# Package com.arsdigita.cms.ui.authoring
|
# Package com.arsdigita.cms.ui.authoring
|
||||||
# ======================================
|
# ======================================
|
||||||
cms.ui.authoring.an_item_with_this_name_already_exists=Ein Item mit diesem Namen existiert
|
cms.ui.authoring.an_item_with_this_name_already_exists=Ein Item mit diesem Namen existiert bereits
|
||||||
cms.ui.authoring.bad_getblob_datatype=Ung\u00fcltiger Datentyp getBlob
|
cms.ui.authoring.bad_getblob_datatype=Ung\u00fcltiger Datentyp getBlob
|
||||||
cms.ui.authoring.bad_getclob_datatype=Ung\u00fcltiger Datentyp getBlob
|
cms.ui.authoring.bad_getclob_datatype=Ung\u00fcltiger Datentyp getClob
|
||||||
cms.ui.authoring.body=Textbereich:
|
cms.ui.authoring.body=Textbereich:
|
||||||
cms.ui.authoring.caption=Untertitel:
|
cms.ui.authoring.caption=Untertitel:
|
||||||
cms.ui.authoring.content_type=Inhaltstyp:
|
cms.ui.authoring.content_type=Inhaltstyp:
|
||||||
|
|
@ -457,7 +457,7 @@ cms.ui.category.localization_edit=Bearbeiten
|
||||||
cms.ui.category.localization_error_locale=Bitte w\u00e4hlen Sie eine Sprache aus
|
cms.ui.category.localization_error_locale=Bitte w\u00e4hlen Sie eine Sprache aus
|
||||||
cms.ui.category.localization_locale=Sprache
|
cms.ui.category.localization_locale=Sprache
|
||||||
cms.ui.category.localization_name=Name
|
cms.ui.category.localization_name=Name
|
||||||
cms.ui.category.localization_none=Diese Kaegorie hat keine Sprachversionen
|
cms.ui.category.localization_none=Diese Kategorie hat keine Sprachversionen
|
||||||
cms.ui.category.localization_url=URL
|
cms.ui.category.localization_url=URL
|
||||||
cms.ui.category.name_not_unique=Es gibt bereits eine Kategorie mit diesem Namen.
|
cms.ui.category.name_not_unique=Es gibt bereits eine Kategorie mit diesem Namen.
|
||||||
cms.ui.category.no_categorized_objects=Es gibt keine kategorisierten Objekte
|
cms.ui.category.no_categorized_objects=Es gibt keine kategorisierten Objekte
|
||||||
|
|
@ -489,8 +489,8 @@ cms.ui.cse.authorName=Verfasser
|
||||||
cms.ui.cse.itemName=Name
|
cms.ui.cse.itemName=Name
|
||||||
cms.ui.cse.view=Anzeigen
|
cms.ui.cse.view=Anzeigen
|
||||||
cms.ui.cse.viewLink=anzeigen
|
cms.ui.cse.viewLink=anzeigen
|
||||||
cms.ui.cse.edit=Edit
|
cms.ui.cse.edit=Bearbeiten
|
||||||
cms.ui.cse.editLink=edit
|
cms.ui.cse.editLink=bearbeiten
|
||||||
cms.ui.cse.endDateTime=aktiv bis
|
cms.ui.cse.endDateTime=aktiv bis
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -498,7 +498,7 @@ cms.ui.cse.endDateTime=aktiv bis
|
||||||
# ===================================
|
# ===================================
|
||||||
cms.ui.folder.cancelled=Abgebrochen
|
cms.ui.folder.cancelled=Abgebrochen
|
||||||
cms.ui.folder.cannot_find_a_root_folder=Kein Wurzelverzeichnis gefunden.
|
cms.ui.folder.cannot_find_a_root_folder=Kein Wurzelverzeichnis gefunden.
|
||||||
cms.ui.folder.na=K.A.
|
cms.ui.folder.na=k.A.
|
||||||
cms.ui.folder.no_source_items_specified=Kein Quelldokument angegeben.
|
cms.ui.folder.no_source_items_specified=Kein Quelldokument angegeben.
|
||||||
cms.ui.folder.parent=\u00dcbergeordneter Ordner
|
cms.ui.folder.parent=\u00dcbergeordneter Ordner
|
||||||
cms.ui.folder.rename=Ordner umbenennen
|
cms.ui.folder.rename=Ordner umbenennen
|
||||||
|
|
@ -507,7 +507,7 @@ cms.ui.folder.rename=Ordner umbenennen
|
||||||
# ========================================
|
# ========================================
|
||||||
cms.ui.formbuilder.description=Beschreibung:
|
cms.ui.formbuilder.description=Beschreibung:
|
||||||
cms.ui.formbuilder.name=Name:
|
cms.ui.formbuilder.name=Name:
|
||||||
cms.ui.formbuilder.oh_no_you_dont=Nicht, sie wollen nicht
|
cms.ui.formbuilder.oh_no_you_dont=Nein, das wollen sie nicht
|
||||||
cms.ui.formbuilder.title=Titel\:
|
cms.ui.formbuilder.title=Titel\:
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,10 @@ import com.arsdigita.bebop.ActionLink;
|
||||||
import com.arsdigita.bebop.BaseLink;
|
import com.arsdigita.bebop.BaseLink;
|
||||||
import com.arsdigita.bebop.Component;
|
import com.arsdigita.bebop.Component;
|
||||||
import com.arsdigita.bebop.Form;
|
import com.arsdigita.bebop.Form;
|
||||||
|
import com.arsdigita.bebop.FormModel;
|
||||||
import com.arsdigita.bebop.Label;
|
import com.arsdigita.bebop.Label;
|
||||||
import com.arsdigita.bebop.Link;
|
import com.arsdigita.bebop.Link;
|
||||||
|
import com.arsdigita.bebop.Page;
|
||||||
import com.arsdigita.bebop.PageState;
|
import com.arsdigita.bebop.PageState;
|
||||||
import com.arsdigita.bebop.ParameterSingleSelectionModel;
|
import com.arsdigita.bebop.ParameterSingleSelectionModel;
|
||||||
import com.arsdigita.bebop.SimpleContainer;
|
import com.arsdigita.bebop.SimpleContainer;
|
||||||
|
|
@ -82,8 +84,6 @@ class CategoryItemPane extends BaseItemPane {
|
||||||
private final SingleSelectionModel m_model;
|
private final SingleSelectionModel m_model;
|
||||||
private final CategoryRequestLocal m_category;
|
private final CategoryRequestLocal m_category;
|
||||||
private final SimpleContainer m_detailPane;
|
private final SimpleContainer m_detailPane;
|
||||||
private final StringParameter m_catLocaleParam = new StringParameter("catLocale");
|
|
||||||
private final ParameterSingleSelectionModel m_catLocale;
|
|
||||||
|
|
||||||
public CategoryItemPane(final SingleSelectionModel model,
|
public CategoryItemPane(final SingleSelectionModel model,
|
||||||
final CategoryRequestLocal category,
|
final CategoryRequestLocal category,
|
||||||
|
|
@ -92,7 +92,6 @@ class CategoryItemPane extends BaseItemPane {
|
||||||
final ActionLink deleteLink) {
|
final ActionLink deleteLink) {
|
||||||
m_model = model;
|
m_model = model;
|
||||||
m_category = category;
|
m_category = category;
|
||||||
m_catLocale = new ParameterSingleSelectionModel(m_catLocaleParam);
|
|
||||||
|
|
||||||
// Details
|
// Details
|
||||||
m_detailPane = new SimpleContainer();
|
m_detailPane = new SimpleContainer();
|
||||||
|
|
@ -338,9 +337,13 @@ class CategoryItemPane extends BaseItemPane {
|
||||||
|
|
||||||
private CategoryLocalizationTable m_catLocalizationTable;
|
private CategoryLocalizationTable m_catLocalizationTable;
|
||||||
private CategoryLocalizationEditForm m_editCategoryLocalizationForm;
|
private CategoryLocalizationEditForm m_editCategoryLocalizationForm;
|
||||||
|
private StringParameter m_catLocaleParam;
|
||||||
|
private ParameterSingleSelectionModel m_catLocale;
|
||||||
|
|
||||||
CategoryLocalizationSection(ActionLink addLink) {
|
CategoryLocalizationSection(ActionLink addLink) {
|
||||||
setHeading(new Label(gz("cms.ui.category.localizations")));
|
setHeading(new Label(gz("cms.ui.category.localizations")));
|
||||||
|
m_catLocaleParam = new StringParameter("catLocale");
|
||||||
|
m_catLocale = new ParameterSingleSelectionModel(m_catLocaleParam);
|
||||||
|
|
||||||
final ActionGroup group = new ActionGroup();
|
final ActionGroup group = new ActionGroup();
|
||||||
setBody(group);
|
setBody(group);
|
||||||
|
|
@ -353,6 +356,12 @@ class CategoryItemPane extends BaseItemPane {
|
||||||
connect(m_editCategoryLocalizationForm);
|
connect(m_editCategoryLocalizationForm);
|
||||||
connect(m_catLocalizationTable, 0, m_editCategoryLocalizationForm);
|
connect(m_catLocalizationTable, 0, m_editCategoryLocalizationForm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void register(Page page) {
|
||||||
|
super.register(page);
|
||||||
|
page.addComponentStateParam(m_editCategoryLocalizationForm, m_catLocaleParam);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class SubcategorySection extends Section {
|
private class SubcategorySection extends Section {
|
||||||
|
|
|
||||||
|
|
@ -745,18 +745,19 @@ public class Category extends ACSObject {
|
||||||
*/
|
*/
|
||||||
public boolean isEnabled(String locale) {
|
public boolean isEnabled(String locale) {
|
||||||
|
|
||||||
// If not gloebally disabled and locale is not null or empty, test for localized version
|
// If globally disabled, return category as disabled
|
||||||
if (locale != null &&
|
if (((Boolean) get(IS_ENABLED)).booleanValue() == false) {
|
||||||
!locale.isEmpty() &&
|
return false;
|
||||||
((Boolean) get(IS_ENABLED)).booleanValue() == true &&
|
}
|
||||||
m_categoryLocalizationCollection != null &&
|
|
||||||
m_categoryLocalizationCollection.localizationExists(locale)) {
|
// Test for localized version
|
||||||
|
if (locale != null && !locale.isEmpty() && m_categoryLocalizationCollection != null && m_categoryLocalizationCollection.
|
||||||
|
localizationExists(locale)) {
|
||||||
|
|
||||||
// Return value of isEnabled from localized version, so categories could be disabled depending on locale
|
// Return value of isEnabled from localized version, so categories could be disabled depending on locale
|
||||||
boolean isEnabled = m_categoryLocalizationCollection.isEnabled();
|
boolean isEnabled = m_categoryLocalizationCollection.isEnabled();
|
||||||
m_categoryLocalizationCollection.rewind();
|
m_categoryLocalizationCollection.rewind();
|
||||||
return isEnabled;
|
return isEnabled;
|
||||||
//return m_categoryLocalizationCollection.isEnabled();
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,11 +36,12 @@ public class CategoryLocalizationCollection extends ACSObjectCollection {
|
||||||
private String lastFoundLocale;
|
private String lastFoundLocale;
|
||||||
|
|
||||||
public CategoryLocalizationCollection(Category category) {
|
public CategoryLocalizationCollection(Category category) {
|
||||||
super(category.getLocalizations().getDataCollection());
|
this(category.getLocalizations().getDataCollection());
|
||||||
}
|
}
|
||||||
|
|
||||||
public CategoryLocalizationCollection(DataCollection dataCollection) {
|
public CategoryLocalizationCollection(DataCollection dataCollection) {
|
||||||
super(dataCollection);
|
super(dataCollection);
|
||||||
|
addOrder("locale");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -118,9 +119,7 @@ public class CategoryLocalizationCollection extends ACSObjectCollection {
|
||||||
*/
|
*/
|
||||||
public boolean localizationExists(String locale) {
|
public boolean localizationExists(String locale) {
|
||||||
|
|
||||||
// Really string comparison using != ??
|
if (!m_dataCollection.isEmpty() && !"".equals(locale)) {
|
||||||
// && !locale.isEmpty() ?
|
|
||||||
if (!m_dataCollection.isEmpty() && locale != "") {
|
|
||||||
|
|
||||||
// First check, if we are already at the right position. This will speed up repeated access for the same locale
|
// First check, if we are already at the right position. This will speed up repeated access for the same locale
|
||||||
if (this.getPosition() > 0 && this.getCategoryLocalization().
|
if (this.getPosition() > 0 && this.getCategoryLocalization().
|
||||||
|
|
|
||||||
|
|
@ -195,6 +195,13 @@ public class DataCollectionDefinition extends LockableImpl {
|
||||||
m_properties.add(property);
|
m_properties.add(property);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a collection of objects from the database defined by model or
|
||||||
|
* null if the requested object type is invalid
|
||||||
|
*
|
||||||
|
* @param model
|
||||||
|
* @return data collection or null
|
||||||
|
*/
|
||||||
public final DataCollection getDataCollection(NavigationModel model) {
|
public final DataCollection getDataCollection(NavigationModel model) {
|
||||||
Assert.isLocked(this);
|
Assert.isLocked(this);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,19 +21,21 @@ import com.arsdigita.globalization.GlobalizationHelper;
|
||||||
import com.arsdigita.kernel.Kernel;
|
import com.arsdigita.kernel.Kernel;
|
||||||
import com.arsdigita.navigation.DataCollectionDefinition;
|
import com.arsdigita.navigation.DataCollectionDefinition;
|
||||||
import com.arsdigita.navigation.DataCollectionRenderer;
|
import com.arsdigita.navigation.DataCollectionRenderer;
|
||||||
|
|
||||||
import com.arsdigita.persistence.DataCollection;
|
import com.arsdigita.persistence.DataCollection;
|
||||||
|
|
||||||
import com.arsdigita.persistence.Filter;
|
import com.arsdigita.persistence.Filter;
|
||||||
import com.arsdigita.persistence.FilterFactory;
|
import com.arsdigita.persistence.FilterFactory;
|
||||||
import com.arsdigita.util.Assert;
|
import com.arsdigita.util.Assert;
|
||||||
import com.arsdigita.util.UncheckedWrapperException;
|
import com.arsdigita.util.UncheckedWrapperException;
|
||||||
|
|
||||||
import com.arsdigita.xml.Element;
|
import com.arsdigita.xml.Element;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abstract base class for object lists
|
||||||
|
*
|
||||||
|
* @author unknown
|
||||||
|
* @author Sören Bernstein (quasimodo) <sbernstein@zes.uni-bremen.de>
|
||||||
|
*/
|
||||||
public abstract class AbstractObjectList
|
public abstract class AbstractObjectList
|
||||||
extends AbstractComponent implements ObjectList {
|
extends AbstractComponent implements ObjectList {
|
||||||
|
|
||||||
|
|
@ -58,6 +60,14 @@ public abstract class AbstractObjectList
|
||||||
return m_renderer;
|
return m_renderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a list of objects from the database which meet a set criteria or
|
||||||
|
* null if the requested object type is invalid
|
||||||
|
*
|
||||||
|
* @param request
|
||||||
|
* @param response
|
||||||
|
* @return the object list or null
|
||||||
|
*/
|
||||||
protected DataCollection getObjects(HttpServletRequest request,
|
protected DataCollection getObjects(HttpServletRequest request,
|
||||||
HttpServletResponse response) {
|
HttpServletResponse response) {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,22 +15,22 @@ package com.arsdigita.navigation.ui.object;
|
||||||
|
|
||||||
import com.arsdigita.navigation.Navigation;
|
import com.arsdigita.navigation.Navigation;
|
||||||
import com.arsdigita.navigation.ui.AbstractObjectList;
|
import com.arsdigita.navigation.ui.AbstractObjectList;
|
||||||
|
|
||||||
import com.arsdigita.persistence.DataCollection;
|
import com.arsdigita.persistence.DataCollection;
|
||||||
import com.arsdigita.persistence.Filter;
|
import com.arsdigita.persistence.Filter;
|
||||||
import com.arsdigita.persistence.FilterFactory;
|
import com.arsdigita.persistence.FilterFactory;
|
||||||
|
|
||||||
|
|
||||||
import com.arsdigita.xml.Element;
|
import com.arsdigita.xml.Element;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A complex object list
|
* A complex object list
|
||||||
|
*
|
||||||
|
* An object list which will accept SQL filters to customize the content easily.
|
||||||
|
*
|
||||||
|
* @author Sören Bernstein <sbernstein@quasiweb.de>
|
||||||
*/
|
*/
|
||||||
public class ComplexObjectList extends AbstractObjectList {
|
public class ComplexObjectList extends AbstractObjectList {
|
||||||
|
|
||||||
|
|
@ -41,19 +41,52 @@ public class ComplexObjectList extends AbstractObjectList {
|
||||||
protected Map<String, String> m_customAttributes =
|
protected Map<String, String> m_customAttributes =
|
||||||
new HashMap<String, String>();
|
new HashMap<String, String>();
|
||||||
|
|
||||||
|
// Getter / Setter
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a custom name for this list.
|
||||||
|
* @param name the list name
|
||||||
|
*/
|
||||||
public void setCustomName(String name) {
|
public void setCustomName(String name) {
|
||||||
m_customName = name;
|
m_customName = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the costum name for this list.
|
||||||
|
* @return the list name
|
||||||
|
*/
|
||||||
public String getCustomName() {
|
public String getCustomName() {
|
||||||
return m_customName;
|
return m_customName;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hinzufügen eines SQL-Filter zur Abfrage
|
* Adds a custom attribute
|
||||||
* Verarbeitet einen boolschen Filter, der SQL-konform Formatiert ist.
|
*
|
||||||
* Siehe PostgreSQL-Handbuch zur where-Klausel
|
* @param attribute
|
||||||
* @param sqlfilter
|
* @param value
|
||||||
|
*/
|
||||||
|
public void addCustomAttribute(final String attribute, final String value) {
|
||||||
|
m_customAttributes.put(attribute, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets a custom attribute
|
||||||
|
*
|
||||||
|
* @param attribute
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String getCustomAttribute(final String attribute) {
|
||||||
|
return m_customAttributes.get(attribute);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a SQL filter to query.
|
||||||
|
* This filter can handle wildcards which have to be set with {@link #setParameter(java.lang.String, java.lang.Object)}
|
||||||
|
*
|
||||||
|
*See PostgreSQL handbook about where clause
|
||||||
|
*
|
||||||
|
* @param sqlfilter the sql filter
|
||||||
*/
|
*/
|
||||||
public void setSQLFilter(String sqlfilter) {
|
public void setSQLFilter(String sqlfilter) {
|
||||||
|
|
||||||
|
|
@ -61,22 +94,22 @@ public class ComplexObjectList extends AbstractObjectList {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set parameter for for sql filter.
|
||||||
|
*
|
||||||
|
* @param parameterName the parameter name of the
|
||||||
|
* @param value the value attached to the parameter
|
||||||
|
*/
|
||||||
public void setParameter(String parameterName, Object value) {
|
public void setParameter(String parameterName, Object value) {
|
||||||
|
|
||||||
m_filterParameters.put(parameterName, value);
|
m_filterParameters.put(parameterName, value);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCustomAttribute(final String attribute) {
|
/**
|
||||||
return m_customAttributes.get(attribute);
|
* Get all objects for this list.
|
||||||
}
|
*
|
||||||
|
* Overrides the parent class to allow for sql filter
|
||||||
public void addCustomAttribute(final String attribute, final String value) {
|
|
||||||
m_customAttributes.put(attribute, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Diese Methode überschreibt die Methode aus der Eltern-Klasse, um
|
|
||||||
* die SQL-Filter berücksichtigen zu können
|
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
protected DataCollection getObjects(HttpServletRequest request,
|
protected DataCollection getObjects(HttpServletRequest request,
|
||||||
|
|
@ -112,7 +145,7 @@ public class ComplexObjectList extends AbstractObjectList {
|
||||||
return objects;
|
return objects;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Diese Methode wird vom Servlet aufgerufen */
|
/* This method will be called by the servlet */
|
||||||
public Element generateXML(HttpServletRequest request,
|
public Element generateXML(HttpServletRequest request,
|
||||||
HttpServletResponse response) {
|
HttpServletResponse response) {
|
||||||
Element content = Navigation.newElement("complexObjectList");
|
Element content = Navigation.newElement("complexObjectList");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue