diff --git a/ccm-cms/src/com/arsdigita/cms/CMSResources.properties b/ccm-cms/src/com/arsdigita/cms/CMSResources.properties
index 1a027ca02..dc1c6c48e 100755
--- a/ccm-cms/src/com/arsdigita/cms/CMSResources.properties
+++ b/ccm-cms/src/com/arsdigita/cms/CMSResources.properties
@@ -1113,3 +1113,10 @@ cms.ui.clear=Clear
cms.ui.item_search.create.folder_missing=No folder selected
cms.ui.images_links=
cms.contenttypes.ui.person.alias.delete.label=Delete
+cms.ui.contentcenter.mainpage.search=Search
+cms.ui.contentcenter.mainpage.taskssections=Tasks/Sections
+cms.ui.contentcenter.section=Section
+cms.ui.contentcenter.action=Action
+cms.ui.set_home_folder=Set as home folder
+cms.ui.go_to_home_folder=Go to home folder
+cms.ui.no_home_folder_selected=No home folder selected
diff --git a/ccm-cms/src/com/arsdigita/cms/CMSResources_de.properties b/ccm-cms/src/com/arsdigita/cms/CMSResources_de.properties
index a0db1474d..64539566a 100755
--- a/ccm-cms/src/com/arsdigita/cms/CMSResources_de.properties
+++ b/ccm-cms/src/com/arsdigita/cms/CMSResources_de.properties
@@ -845,7 +845,7 @@ cms.ui.workflow.tasks=Aufgaben
cms.ui.workflow.task.view_locked=Reservierte Aufgaben anzeigen
cms.ui.workflow.task.view_unlocked=Freigegebene Aufgaben anzeigen
cms.ui.workflow.task.view_all=Alle Aufgaben anzeigen
-cms.ui.workflow.task.item_title=Item Title
+cms.ui.workflow.task.item_title=Titel des Dokuments
cms.ui.workflow.task.locking_user=Reserviert von\:
cms.ui.workflow.unlock_tasks=Alle meine Aufgaben f\u00fcr diesen Typ freigeben
cms.ui.workflow.your_tasks=Zugewiesene Aufgaben
@@ -1105,4 +1105,11 @@ cms.ui.type.minimum_number_of_values_bigger_than_maximum_number_of_values=Maxima
cms.ui.type.minimummaximum_number_of_values_cannot_be_negative=Keine negativen Werte erlaubt
cms.ui.item_search.create.folder_missing=kein Ordner ausgew\u00e4hlt
cms.ui.images_links=
-cms.contenttypes.ui.person.alias.delete.label=
+cms.contenttypes.ui.person.alias.delete.label=L\u00f6schen
+cms.ui.contentcenter.mainpage.search=Suche
+cms.ui.contentcenter.mainpage.taskssections=Aufgaben/Content Sections
+cms.ui.contentcenter.section=Content Section
+cms.ui.contentcenter.action=Aktion
+cms.ui.set_home_folder=Als Start-Ordner festlegen
+cms.ui.go_to_home_folder=Zum Start-Ordner
+cms.ui.no_home_folder_selected=Kein Start-Ordner festgelegt
diff --git a/ccm-cms/src/com/arsdigita/cms/CMSResources_en_GB.properties b/ccm-cms/src/com/arsdigita/cms/CMSResources_en_GB.properties
index 2d96e528e..ceef61e6e 100755
--- a/ccm-cms/src/com/arsdigita/cms/CMSResources_en_GB.properties
+++ b/ccm-cms/src/com/arsdigita/cms/CMSResources_en_GB.properties
@@ -52,3 +52,10 @@ cms.ui.clear=
cms.ui.item_search.create.folder_missing=
cms.ui.images_links=
cms.contenttypes.ui.person.alias.delete.label=
+cms.ui.contentcenter.mainpage.search=
+cms.ui.contentcenter.mainpage.taskssections=
+cms.ui.contentcenter.section=
+cms.ui.contentcenter.action=
+cms.ui.set_home_folder=
+cms.ui.go_to_home_folder=
+cms.ui.no_home_folder_selected=
diff --git a/ccm-cms/src/com/arsdigita/cms/CMSResources_fr.properties b/ccm-cms/src/com/arsdigita/cms/CMSResources_fr.properties
index f924c19bb..bc8322c30 100755
--- a/ccm-cms/src/com/arsdigita/cms/CMSResources_fr.properties
+++ b/ccm-cms/src/com/arsdigita/cms/CMSResources_fr.properties
@@ -583,3 +583,10 @@ cms.ui.clear=
cms.ui.item_search.create.folder_missing=
cms.ui.images_links=
cms.contenttypes.ui.person.alias.delete.label=
+cms.ui.contentcenter.mainpage.search=
+cms.ui.contentcenter.mainpage.taskssections=
+cms.ui.contentcenter.section=
+cms.ui.contentcenter.action=
+cms.ui.set_home_folder=
+cms.ui.go_to_home_folder=
+cms.ui.no_home_folder_selected=
diff --git a/ccm-cms/src/com/arsdigita/cms/ui/FlatItemList.java b/ccm-cms/src/com/arsdigita/cms/ui/FlatItemList.java
index d735d2c0a..db3a38d6c 100755
--- a/ccm-cms/src/com/arsdigita/cms/ui/FlatItemList.java
+++ b/ccm-cms/src/com/arsdigita/cms/ui/FlatItemList.java
@@ -18,7 +18,6 @@
*/
package com.arsdigita.cms.ui;
-
import com.arsdigita.bebop.ActionLink;
import com.arsdigita.bebop.Form;
import com.arsdigita.bebop.FormProcessException;
@@ -92,34 +91,27 @@ public class FlatItemList extends SegmentedPanel
private static final String CMS_PRIVILEGES = "com.arsdigita.cms.getPrivileges";
private static final String PRIVILEGE = "privilege";
private static final String PRIVILEGE_NAME = "prettyName";
-
// The folder selectors
private FolderSelectionModel m_folderSel;
private FolderRequestLocal m_folder;
-
private NewItemForm m_newItem;
private SingleSelectionModel m_typeSel;
private CreationSelector m_selector;
private FolderManipulator m_folderManip;
-
private FolderCreator m_folderCreator;
private ActionLink m_setHomeFolderAction;
private ActionLink m_createFolderAction;
private ActionLink m_togglePrivateAction;
private Label m_homeFolderLabel;
-
private Segment m_browseSeg;
private Segment m_newItemSeg;
private Segment m_newFolderSeg;
private Segment m_editFolderSeg;
private Segment m_permissionsSeg;
private CMSPermissionsPane m_permPane;
-
// Folder edit/rename functionality.
private ActionLink m_editFolderAction;
private FolderEditor m_folderEditor;
-
-
private Label m_contentLabel;
private ItemPath m_itemPath;
private Label m_chooseLabel;
@@ -135,11 +127,12 @@ public class FlatItemList extends SegmentedPanel
m_folder = folder;
m_folderSel = model;
m_folderSel.addChangeListener(new ChangeListener() {
- public void stateChanged(ChangeEvent e) {
- PageState s = e.getPageState();
- reset(s);
- }
- });
+ public void stateChanged(ChangeEvent e) {
+ PageState s = e.getPageState();
+ reset(s);
+ }
+
+ });
setIdAttr("flat-item-list");
@@ -189,26 +182,34 @@ public class FlatItemList extends SegmentedPanel
m_editFolderAction.addActionListener(this);
browseActions.addAction(m_editFolderAction);
- m_setHomeFolderAction = new ActionLink(new Label("Set as home folder"));
+ m_setHomeFolderAction = new ActionLink(new Label(globalize("cms.ui.set_home_folder")));
m_setHomeFolderAction.addActionListener(this);
browseActions.addAction(m_setHomeFolderAction);
- m_homeFolderLabel = new Label(new PrintListener() {
- public final void prepare(final PrintEvent e) {
- Label label = (Label)e.getTarget();
- User user = Web.getContext().getUser();
+ m_homeFolderLabel = new Label(new PrintListener() {
+ public final void prepare(final PrintEvent e) {
+ Label label = (Label) e.getTarget();
+ User user = Web.getContext().getUser();
- Folder folder = Folder.getUserHomeFolder(user,CMS.getContext().getContentSection());
- if ( folder != null ) {
- String url = folder.getContentSection().getURL() + PageLocations.SECTION_PAGE + "?" + ContentSectionPage.SET_FOLDER + "=" + folder.getID();
- label.setLabel("Go to home folder: " + folder.getLabel() + "");
- } else {
- label.setLabel("No home folder selected");
- }
- label.setOutputEscaping(false);
+ Folder folder = Folder.getUserHomeFolder(user, CMS.getContext().getContentSection());
+ if (folder != null) {
+ String url = folder.getContentSection().getURL() + PageLocations.SECTION_PAGE + "?"
+ + ContentSectionPage.SET_FOLDER + "=" + folder.getID();
+ //label.setLabel("Go to home folder: " + folder.getLabel() + "");
+ label.setLabel(String.format("%s: %s",
+ (String) globalize("cms.ui.go_to_home_folder").localize(),
+ url,
+ folder.getLabel()));
+ } else {
+ //label.setLabel("No home folder selected");
+ label.setLabel(String.format("%s",
+ (String)globalize("cms.ui.no_home_folder_selected").localize()));
}
- });
- browseActions.addAction(m_homeFolderLabel);
+ label.setOutputEscaping(false);
+ }
+
+ });
+ browseActions.addAction(m_homeFolderLabel);
m_newItem = new SectionNewItemForm("newItem");
m_newItem.addProcessListener(this);
@@ -236,29 +237,30 @@ public class FlatItemList extends SegmentedPanel
}
query.close();
- m_permPane = new CMSPermissionsPane
- ((PrivilegeDescriptor[]) privs.toArray
- (new PrivilegeDescriptor[privs.size()]),
- privNameMap,
- m_folderSel);
+ m_permPane =
+ new CMSPermissionsPane((PrivilegeDescriptor[]) privs.toArray(new PrivilegeDescriptor[privs.size()]),
+ privNameMap,
+ m_folderSel);
permActions.setSubject(m_permPane);
// An action
m_togglePrivateAction = new ActionLink(new Label(new PrintListener() {
- public void prepare(PrintEvent e) {
- PageState state = e.getPageState();
- Label target = (Label) e.getTarget();
- Folder currentFolder = m_folder.getFolder(state);
- // ACSObject parent = currentFolder.getParent();
- DataObject context = PermissionService.getContext(currentFolder);
- if (context == null) {
- target.setLabel( (String) GlobalizationUtil.globalize("cms.ui.restore_default_permissions").localize());
- } else {
- target.setLabel( (String) GlobalizationUtil.globalize("cms.ui.use_custom_permissions").localize());
- }
+ public void prepare(PrintEvent e) {
+ PageState state = e.getPageState();
+ Label target = (Label) e.getTarget();
+ Folder currentFolder = m_folder.getFolder(state);
+ // ACSObject parent = currentFolder.getParent();
+ DataObject context = PermissionService.getContext(currentFolder);
+ if (context == null) {
+ target.setLabel((String) GlobalizationUtil.globalize("cms.ui.restore_default_permissions").
+ localize());
+ } else {
+ target.setLabel((String) GlobalizationUtil.globalize("cms.ui.use_custom_permissions").localize());
}
- }));
+ }
+
+ }));
m_togglePrivateAction.addActionListener(this);
permActions.addAction(m_togglePrivateAction);
@@ -286,8 +288,8 @@ public class FlatItemList extends SegmentedPanel
m_folderEditor.addSubmissionListener(this);
m_folderEditor.addProcessListener(this);
- Form folderEditorForm = new Form( "fedit_form" );
- folderEditorForm.add( m_folderEditor );
+ Form folderEditorForm = new Form("fedit_form");
+ folderEditorForm.add(m_folderEditor);
m_editFolderSeg.add(folderEditorForm);
m_editFolderSeg.add(new Label("
", false));
}
@@ -304,14 +306,15 @@ public class FlatItemList extends SegmentedPanel
p.addComponentStateParam(this, m_typeSel.getStateParameter());
p.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- final PageState state = e.getPageState();
+ public void actionPerformed(ActionEvent e) {
+ final PageState state = e.getPageState();
- if (state.isVisibleOnPage(FlatItemList.this)) {
- showHideSegments(state);
- }
+ if (state.isVisibleOnPage(FlatItemList.this)) {
+ showHideSegments(state);
}
- });
+ }
+
+ });
}
/**
@@ -328,9 +331,9 @@ public class FlatItemList extends SegmentedPanel
// MP: This should be checked on the current folder instead of just
// the content section.
boolean newItem =
- sm.canAccess(state.getRequest(),
- SecurityManager.NEW_ITEM,
- folder);
+ sm.canAccess(state.getRequest(),
+ SecurityManager.NEW_ITEM,
+ folder);
if (!newItem) {
browseMode(state);
@@ -346,9 +349,9 @@ public class FlatItemList extends SegmentedPanel
User user = (User) Kernel.getContext().getParty();
PermissionDescriptor perm =
- new PermissionDescriptor(PrivilegeDescriptor.ADMIN,
- folder,
- user);
+ new PermissionDescriptor(PrivilegeDescriptor.ADMIN,
+ folder,
+ user);
if (PermissionService.checkPermission(perm)) {
m_permissionsSeg.setVisible(state, true);
@@ -381,19 +384,19 @@ public class FlatItemList extends SegmentedPanel
}
public void submitted(FormSectionEvent e)
- throws FormProcessException {
+ throws FormProcessException {
PageState s = e.getPageState();
- if ( e.getSource() == m_folderCreator
- && m_folderCreator.isCancelled(s) ) {
+ if (e.getSource() == m_folderCreator
+ && m_folderCreator.isCancelled(s)) {
browseMode(s);
- throw new FormProcessException( (String) GlobalizationUtil.globalize("cms.ui.cancelled").localize());
+ throw new FormProcessException((String) GlobalizationUtil.globalize("cms.ui.cancelled").localize());
} else if (e.getSource() == m_folderEditor && m_folderEditor.isCancelled(s)) {
browseMode(s);
- throw new FormProcessException( (String) GlobalizationUtil.globalize("cms.ui.cancelled").localize());
- } else if ( e.getSource() == m_folderManip.getTargetSelector() ) {
+ throw new FormProcessException((String) GlobalizationUtil.globalize("cms.ui.cancelled").localize());
+ } else if (e.getSource() == m_folderManip.getTargetSelector()) {
// This only works if this submission listener is run
// after the target selector's one
- if ( ! m_folderManip.getTargetSelector().isVisible(s) ) {
+ if (!m_folderManip.getTargetSelector().isVisible(s)) {
browseMode(s);
}
}
@@ -421,8 +424,8 @@ public class FlatItemList extends SegmentedPanel
public void stateChanged(ChangeEvent e) {
PageState s = e.getPageState();
- if ( e.getSource().equals(m_typeSel) ) {
- if ( ! m_typeSel.isSelected(s) ) {
+ if (e.getSource().equals(m_typeSel)) {
+ if (!m_typeSel.isSelected(s)) {
browseMode(s);
}
}
@@ -431,20 +434,19 @@ public class FlatItemList extends SegmentedPanel
public void actionPerformed(ActionEvent e) {
PageState s = e.getPageState();
Object source = e.getSource();
- if ( source == m_createFolderAction ) {
+ if (source == m_createFolderAction) {
newFolderMode(s);
} else if (source == m_editFolderAction) {
m_permissionsSeg.setVisible(s, false);
m_editFolderSeg.setVisible(s, true);
- }
- else if (source == m_togglePrivateAction) {
+ } else if (source == m_togglePrivateAction) {
togglePermissions(s);
- } else if ( source == m_setHomeFolderAction ) {
- User user = Web.getContext().getUser();
- Folder folder = m_folder.getFolder(s);
- user = (User)DomainObjectFactory.newInstance(user.getOID());
- Folder.setUserHomeFolder(user,folder);
- }
+ } else if (source == m_setHomeFolderAction) {
+ User user = Web.getContext().getUser();
+ Folder folder = m_folder.getFolder(s);
+ user = (User) DomainObjectFactory.newInstance(user.getOID());
+ Folder.setUserHomeFolder(user, folder);
+ }
}
private void togglePermissions(PageState state) {
@@ -470,8 +472,8 @@ public class FlatItemList extends SegmentedPanel
if (section != null) {
PermissionService.setContext(currentFolder, section);
} else {
- throw new IllegalStateException("Cannot set the context for a folder with " +
- "no parent and no Content Section");
+ throw new IllegalStateException("Cannot set the context for a folder with "
+ + "no parent and no Content Section");
}
}
@@ -485,8 +487,8 @@ public class FlatItemList extends SegmentedPanel
if (liveSection != null) {
PermissionService.setContext(liveVersion, liveSection);
} else {
- throw new IllegalStateException("Cannot set the context for a folder with " +
- "no parent and no Content Section");
+ throw new IllegalStateException("Cannot set the context for a folder with "
+ + "no parent and no Content Section");
}
}
}
@@ -505,7 +507,8 @@ public class FlatItemList extends SegmentedPanel
ObjectPermissionCollection livePerms = PermissionService.getGrantedPermissions(liveVersion.getOID());
while (livePerms.next()) {
if (!livePerms.isInherited()) {
- PermissionDescriptor desc2 = new PermissionDescriptor(livePerms.getPrivilege(), liveVersion.getOID(),
+ PermissionDescriptor desc2 = new PermissionDescriptor(livePerms.getPrivilege(), liveVersion.
+ getOID(),
livePerms.getGranteeOID());
PermissionService.revokePermission(desc2);
}
@@ -535,7 +538,7 @@ public class FlatItemList extends SegmentedPanel
public void setPermissionLinkVis(PageState state) {
if (!Utilities.getSecurityManager(state).
- canAccess(state.getRequest(), SecurityManager.STAFF_ADMIN)) {
+ canAccess(state.getRequest(), SecurityManager.STAFF_ADMIN)) {
m_togglePrivateAction.setVisible(state, false);
}
}
@@ -549,6 +552,7 @@ public class FlatItemList extends SegmentedPanel
public ContentSection getContentSection(PageState s) {
return CMS.getContext().getContentSection();
}
+
}
/**
diff --git a/ccm-cms/src/com/arsdigita/cms/ui/authoring/NewItemForm.java b/ccm-cms/src/com/arsdigita/cms/ui/authoring/NewItemForm.java
index f83de4a1c..49661c768 100755
--- a/ccm-cms/src/com/arsdigita/cms/ui/authoring/NewItemForm.java
+++ b/ccm-cms/src/com/arsdigita/cms/ui/authoring/NewItemForm.java
@@ -85,7 +85,7 @@ public abstract class NewItemForm extends Form {
m_emptyLabel.setIdAttr("empty_label");
panel.add(m_emptyLabel);
- m_createLabel = new Label(globalize("cms.ui.authoring.create_new"), false);
+ m_createLabel = new Label((String)globalize("cms.ui.authoring.create_new").localize(), false);
m_createLabel.setIdAttr("create_label");
panel.add(m_createLabel);
diff --git a/ccm-cms/src/com/arsdigita/cms/ui/contentcenter/ContentSectionContainer.java b/ccm-cms/src/com/arsdigita/cms/ui/contentcenter/ContentSectionContainer.java
index ca32a7d4d..19f38a735 100755
--- a/ccm-cms/src/com/arsdigita/cms/ui/contentcenter/ContentSectionContainer.java
+++ b/ccm-cms/src/com/arsdigita/cms/ui/contentcenter/ContentSectionContainer.java
@@ -291,7 +291,11 @@ public class ContentSectionContainer extends CMSContainer {
// add columns to the table
TableColumnModel columnModel = getColumnModel();
- TableColumn contentSectionColumn = new TableColumn(colNo, COLUMN_SECTION);
+ //TableColumn contentSectionColumn = new TableColumn(colNo, COLUMN_SECTION);
+ TableColumn contentSectionColumn = new TableColumn(
+ colNo,
+ (String)GlobalizationUtil.globalize("cms.ui.contentcenter.section").localize(),
+ COLUMN_SECTION);
contentSectionColumn.setCellRenderer(new AdminURLTableCellRenderer());
columnModel.add(contentSectionColumn);
@@ -302,7 +306,10 @@ public class ContentSectionContainer extends CMSContainer {
columnModel.add(locationColumn);
}
- TableColumn actionColumn = new TableColumn(colNo ++, COLUMN_ACTION);
+ TableColumn actionColumn = new TableColumn(
+ colNo++,
+ (String)GlobalizationUtil.globalize("cms.ui.contentcenter.action").localize(),
+ COLUMN_ACTION);
actionColumn.setCellRenderer(new ActionTableCellRenderer());
columnModel.add(actionColumn);
diff --git a/ccm-cms/src/com/arsdigita/cms/ui/contentcenter/MainPage.java b/ccm-cms/src/com/arsdigita/cms/ui/contentcenter/MainPage.java
index 9f996a931..eab0b28d2 100755
--- a/ccm-cms/src/com/arsdigita/cms/ui/contentcenter/MainPage.java
+++ b/ccm-cms/src/com/arsdigita/cms/ui/contentcenter/MainPage.java
@@ -145,8 +145,14 @@ public class MainPage extends CMSApplicationPage implements ActionListener {
protected TabbedPane createTabbedPane() {
TabbedPane pane = new TabbedPane();
pane.setClassAttr(XSL_CLASS);
- addToPane(pane, "Tasks/Sections", getTasksPane(m_typeSel, m_sectionSel));
- addToPane(pane, "Search", getSearchPane());
+ //addToPane(pane, "Tasks/Sections", getTasksPane(m_typeSel, m_sectionSel));
+ //addToPane(pane, "Search", getSearchPane());
+ addToPane(pane,
+ (String)GlobalizationUtil.globalize("cms.ui.contentcenter.mainpage.taskssections").localize(),
+ getTasksPane(m_typeSel, m_sectionSel));
+ addToPane(pane,
+ (String)GlobalizationUtil.globalize("cms.ui.contentcenter.mainpage.search").localize(),
+ getSearchPane());
pane.addActionListener(this);
return pane;
}
diff --git a/ccm-cms/src/com/arsdigita/cms/ui/contentcenter/TasksPanel.java b/ccm-cms/src/com/arsdigita/cms/ui/contentcenter/TasksPanel.java
index d62401067..042c780e7 100755
--- a/ccm-cms/src/com/arsdigita/cms/ui/contentcenter/TasksPanel.java
+++ b/ccm-cms/src/com/arsdigita/cms/ui/contentcenter/TasksPanel.java
@@ -18,7 +18,6 @@
*/
package com.arsdigita.cms.ui.contentcenter;
-
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.HashMap;
@@ -89,29 +88,24 @@ import com.arsdigita.xml.Element;
public class TasksPanel extends CMSContainer {
private static Logger s_log =
- Logger.getLogger(TasksPanel.class);
-
+ Logger.getLogger(TasksPanel.class);
// The default number of rows to show
private static final int DEFAULT_MAX_ROWS = 15;
-
// Number of tasks to show
private final int m_maxRows;
-
private TaskList m_taskList;
private ActionLink m_viewAllLink;
private ActionLink m_viewShortLink;
private Paginator m_paginator;
- private ActionLink m_viewLockLink,m_viewUnlockLink,m_viewAllLockLink;
- private Label m_viewLockLabel,m_viewUnlockLabel,m_viewAllLockLabel;
+ private ActionLink m_viewLockLink, m_viewUnlockLink, m_viewAllLockLink;
+ private Label m_viewLockLabel, m_viewUnlockLabel, m_viewAllLockLabel;
private StringParameter m_sortDirectionParam;
private StringParameter m_sortTypeParam;
private StringParameter m_lockFilterParam;
-
// control link variable
private static final String TASK_ACTION = "taskAction";
private static final String SORT_DOWN = "sortActionUp";
private static final String SORT_UP = "sortActionDown";
-
private static final String LOCK_FILTER_TYPE = "lockFilterType";
private static final String SORT_TYPE = "sortType";
private static final String SORT_DIRECTION = "sortDirection";
@@ -121,13 +115,11 @@ public class TasksPanel extends CMSContainer {
private static final String SORT_TITLE = "title";
private static final String SORT_USER = "user";
private static final String SORT_WORKFLOW = "workflow";
-
// IMAGES
- public static final String UP_ARROW_IMAGE =
+ public static final String UP_ARROW_IMAGE =
"/themes/heirfloom/images/gray-triangle-up.gif";
- public static final String DOWN_ARROW_IMAGE =
+ public static final String DOWN_ARROW_IMAGE =
"/themes/heirfloom/images/gray-triangle-down.gif";
-
// CREATION PANE CONSTANTS
private Label m_selectorLabel;
private CreationSelector m_selector;
@@ -143,7 +135,7 @@ public class TasksPanel extends CMSContainer {
**/
public TasksPanel(ACSObjectSelectionModel typeModel,
ACSObjectSelectionModel sectionModel) {
- this(DEFAULT_MAX_ROWS,typeModel,sectionModel);
+ this(DEFAULT_MAX_ROWS, typeModel, sectionModel);
}
/**
@@ -154,11 +146,11 @@ public class TasksPanel extends CMSContainer {
*
* @pre maxRows != null
**/
- public TasksPanel(int maxRows,ACSObjectSelectionModel typeModel,
+ public TasksPanel(int maxRows, ACSObjectSelectionModel typeModel,
ACSObjectSelectionModel sectionModel) {
super();
m_maxRows = maxRows;
-
+
m_typeSel = typeModel;
m_sectionSel = sectionModel;
@@ -168,114 +160,115 @@ public class TasksPanel extends CMSContainer {
addComponents();
}
-
/**
* Adds the components to this tasks panel
**/
// protected void addComponents() {
private void addComponents() {
m_creationPane = new BoxPanel(BoxPanel.VERTICAL);
-
+
// A label that says "Create $content_type in $section"
m_selectorLabel = new Label(new PrintListener() {
- public void prepare(PrintEvent e) {
- PageState s = e.getPageState();
- Label t = (Label)e.getTarget();
-
- ContentType type = (ContentType) m_typeSel.getSelectedObject(s);
- ContentSection sec =
- (ContentSection) m_sectionSel.getSelectedObject(s);
-
- StringBuffer buf = new StringBuffer(
- GlobalizationUtil
- .globalize("cms.ui.create").localize() + " ");
- buf.append(type.getLabel());
- buf.append(" in ");
- buf.append(sec.getName());
-
- t.setLabel(buf.toString());
- t.setFontWeight(Label.BOLD);
- t.setClassAttr("creationLabel");
- }
- });
+ public void prepare(PrintEvent e) {
+ PageState s = e.getPageState();
+ Label t = (Label) e.getTarget();
+
+ ContentType type = (ContentType) m_typeSel.getSelectedObject(s);
+ ContentSection sec =
+ (ContentSection) m_sectionSel.getSelectedObject(s);
+
+ StringBuffer buf = new StringBuffer(
+ GlobalizationUtil
+ .globalize("cms.ui.create").localize() + " ");
+ buf.append(type.getLabel());
+ buf.append(" in ");
+ buf.append(sec.getName());
+
+ t.setLabel(buf.toString());
+ t.setFontWeight(Label.BOLD);
+ t.setClassAttr("creationLabel");
+ }
+
+ });
m_selectorLabel.setClassAttr("creationLabel");
m_creationPane.add(m_selectorLabel);
-
+
m_folderSel = new RootFolderSelectionModel(m_sectionSel);
m_selector = new CreationSelector(m_typeSel, m_folderSel);
m_creationPane.add(m_selector);
-
+
m_creationPane.setClassAttr("itemCreationPane");
add(m_creationPane);
-
+
// The section list UIx
m_sections = new ContentSectionContainer(m_typeSel, m_sectionSel);
add(m_sections);
-
+
// When a new type is selected, show the creation UI.
// When the selection is cleared, return to section list
m_typeSel.addChangeListener(new ChangeListener() {
- public void stateChanged(ChangeEvent e) {
- PageState s = e.getPageState();
- boolean isSelected = m_typeSel.isSelected(s);
-
- m_sections.setVisible(s, !isSelected);
- m_creationPane.setVisible(s, isSelected);
- }
- });
-
- m_viewLockLink = new ActionLink(new
- Label(GlobalizationUtil
- .globalize("cms.ui.workflow.task.view_locked")));
+ public void stateChanged(ChangeEvent e) {
+ PageState s = e.getPageState();
+ boolean isSelected = m_typeSel.isSelected(s);
+
+ m_sections.setVisible(s, !isSelected);
+ m_creationPane.setVisible(s, isSelected);
+ }
+
+ });
+
+ m_viewLockLink = new ActionLink(new Label(GlobalizationUtil
+ .globalize("cms.ui.workflow.task.view_locked")));
m_viewLockLink.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- PageState ps = e.getPageState();
- ps.setValue(m_lockFilterParam, "lock");
- }
- });
+ public void actionPerformed(ActionEvent e) {
+ PageState ps = e.getPageState();
+ ps.setValue(m_lockFilterParam, "lock");
+ }
- m_viewUnlockLink = new ActionLink(new
- Label(GlobalizationUtil
- .globalize("cms.ui.workflow.task.view_unlocked")));
+ });
+
+ m_viewUnlockLink = new ActionLink(new Label(GlobalizationUtil
+ .globalize("cms.ui.workflow.task.view_unlocked")));
m_viewUnlockLink.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- PageState ps = e.getPageState();
- ps.setValue(m_lockFilterParam, "unlock");
- }
- });
+ public void actionPerformed(ActionEvent e) {
+ PageState ps = e.getPageState();
+ ps.setValue(m_lockFilterParam, "unlock");
+ }
- m_viewAllLockLink = new ActionLink(new
- Label(GlobalizationUtil
- .globalize("cms.ui.workflow.task.view_all")));
+ });
+
+ m_viewAllLockLink = new ActionLink(new Label(GlobalizationUtil
+ .globalize("cms.ui.workflow.task.view_all")));
m_viewAllLockLink.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- PageState ps = e.getPageState();
- ps.setValue(m_lockFilterParam, "all");
- }
- });
+ public void actionPerformed(ActionEvent e) {
+ PageState ps = e.getPageState();
+ ps.setValue(m_lockFilterParam, "all");
+ }
+
+ });
m_viewLockLabel = new Label(GlobalizationUtil
- .globalize("cms.ui.workflow.task.view_locked"));
+ .globalize("cms.ui.workflow.task.view_locked"));
m_viewLockLabel.setFontWeight(Label.BOLD);
m_viewUnlockLabel = new Label(GlobalizationUtil
- .globalize("cms.ui.workflow.task.view_unlocked"));
+ .globalize("cms.ui.workflow.task.view_unlocked"));
m_viewUnlockLabel.setFontWeight(Label.BOLD);
m_viewAllLockLabel = new Label(GlobalizationUtil
- .globalize("cms.ui.workflow.task.view_all"));
+ .globalize("cms.ui.workflow.task.view_all"));
m_viewAllLockLabel.setFontWeight(Label.BOLD);
- add(new Label("
",false));
+ add(new Label("
", false));
add(m_viewLockLink);
add(m_viewLockLabel);
- add(new Label(" ",false));
+ add(new Label(" ", false));
add(m_viewUnlockLink);
add(m_viewUnlockLabel);
- add(new Label(" ",false));
+ add(new Label(" ", false));
add(m_viewAllLockLink);
add(m_viewAllLockLabel);
- add(new Label("
",false));
- add(new Label("
",false));
-
+ add(new Label("
", false));
+ add(new Label("
", false));
+
add(getTasksList());
add(getPaginator());
@@ -303,51 +296,51 @@ public class TasksPanel extends CMSContainer {
p.setVisibleDefault(m_viewAllLockLink, false);
p.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- final PageState state = e.getPageState();
+ public void actionPerformed(ActionEvent e) {
+ final PageState state = e.getPageState();
- String lockFilterType = getLockFilterType(state);
+ String lockFilterType = getLockFilterType(state);
- if ( lockFilterType.equals("lock") ) {
- m_viewLockLabel.setVisible(state,true);
- m_viewLockLink.setVisible(state,false);
- m_viewUnlockLabel.setVisible(state,false);
- m_viewUnlockLink.setVisible(state,true);
- m_viewAllLockLabel.setVisible(state,false);
- m_viewAllLockLink.setVisible(state,true);
- } else if ( lockFilterType.equals("unlock") ) {
- m_viewLockLabel.setVisible(state,false);
- m_viewLockLink.setVisible(state,true);
- m_viewUnlockLabel.setVisible(state,true);
- m_viewUnlockLink.setVisible(state,false);
- m_viewAllLockLabel.setVisible(state,false);
- m_viewAllLockLink.setVisible(state,true);
- } else {
- m_viewLockLabel.setVisible(state,false);
- m_viewLockLink.setVisible(state,true);
- m_viewUnlockLabel.setVisible(state,false);
- m_viewUnlockLink.setVisible(state,true);
- m_viewAllLockLabel.setVisible(state,true);
- m_viewAllLockLink.setVisible(state,false);
- }
+ if (lockFilterType.equals("lock")) {
+ m_viewLockLabel.setVisible(state, true);
+ m_viewLockLink.setVisible(state, false);
+ m_viewUnlockLabel.setVisible(state, false);
+ m_viewUnlockLink.setVisible(state, true);
+ m_viewAllLockLabel.setVisible(state, false);
+ m_viewAllLockLink.setVisible(state, true);
+ } else if (lockFilterType.equals("unlock")) {
+ m_viewLockLabel.setVisible(state, false);
+ m_viewLockLink.setVisible(state, true);
+ m_viewUnlockLabel.setVisible(state, true);
+ m_viewUnlockLink.setVisible(state, false);
+ m_viewAllLockLabel.setVisible(state, false);
+ m_viewAllLockLink.setVisible(state, true);
+ } else {
+ m_viewLockLabel.setVisible(state, false);
+ m_viewLockLink.setVisible(state, true);
+ m_viewUnlockLabel.setVisible(state, false);
+ m_viewUnlockLink.setVisible(state, true);
+ m_viewAllLockLabel.setVisible(state, true);
+ m_viewAllLockLink.setVisible(state, false);
}
- });
+ }
+
+ });
}
-
+
public void reset(PageState state) {
m_typeSel.clearSelection(state);
m_sectionSel.clearSelection(state);
}
-
+
protected Paginator getPaginator() {
if (m_paginator == null) {
- m_paginator = new Paginator(new TasksPaginationModelBuilder(),
+ m_paginator = new Paginator(new TasksPaginationModelBuilder(),
m_maxRows);
}
return m_paginator;
}
-
/**
* Returns the bebop List component to display the tasks
**/
@@ -366,24 +359,24 @@ public class TasksPanel extends CMSContainer {
}
protected String getSortType(PageState state) {
- String sortType = (String)state.getValue(m_sortTypeParam);
- if ( sortType == null ) {
+ String sortType = (String) state.getValue(m_sortTypeParam);
+ if (sortType == null) {
sortType = SORT_DATE;
}
return sortType;
}
protected String getSortDirection(PageState state) {
- String sortDirection = (String)state.getValue(m_sortDirectionParam);
- if ( sortDirection == null ) {
+ String sortDirection = (String) state.getValue(m_sortDirectionParam);
+ if (sortDirection == null) {
sortDirection = SORT_UP;
}
return sortDirection;
}
protected String getLockFilterType(PageState state) {
- String lockFilterType = (String)state.getValue(m_lockFilterParam);
- if ( lockFilterType == null || lockFilterType.equals("") ) {
+ String lockFilterType = (String) state.getValue(m_lockFilterParam);
+ if (lockFilterType == null || lockFilterType.equals("")) {
lockFilterType = "lock";
}
return lockFilterType;
@@ -392,47 +385,48 @@ public class TasksPanel extends CMSContainer {
/*
* Adds filters to the task query
*/
- protected void addQueryFilters(DataQuery query,Party party,PageState state){
+ protected void addQueryFilters(DataQuery query, Party party, PageState state) {
query.setParameter("userId", party.getID());
- FilterFactory ff = query.getFilterFactory();
+ FilterFactory ff = query.getFilterFactory();
// TODO: remove this hard coding of "Author", "Edit", and "Deploy"
- // TODO: remove this hard coding of "Author", "Edit", and "Deploy"
- CompoundFilter authorFilter = ff.and();
- //cg query changed to refer to task type id
- authorFilter.addFilter(ff.equals("taskType",CMSTaskType.AUTHOR));
- authorFilter.addFilter(getTaskFilter(CMSTaskType.retrieve(CMSTaskType.AUTHOR),
- party, ff));
-
- CompoundFilter approveFilter = ff.and();
- approveFilter.addFilter(ff.equals("taskType",CMSTaskType.EDIT));
- approveFilter.addFilter(getTaskFilter(CMSTaskType.retrieve(CMSTaskType.EDIT),
+ // TODO: remove this hard coding of "Author", "Edit", and "Deploy"
+ CompoundFilter authorFilter = ff.and();
+ //cg query changed to refer to task type id
+ authorFilter.addFilter(ff.equals("taskType", CMSTaskType.AUTHOR));
+ authorFilter.addFilter(getTaskFilter(CMSTaskType.retrieve(CMSTaskType.AUTHOR),
party, ff));
- CompoundFilter deployFilter = ff.and();
- deployFilter.addFilter(ff.equals("taskType",CMSTaskType.DEPLOY));
- deployFilter.addFilter(getTaskFilter(CMSTaskType.retrieve(CMSTaskType.DEPLOY),
- party, ff));
+ CompoundFilter approveFilter = ff.and();
+ approveFilter.addFilter(ff.equals("taskType", CMSTaskType.EDIT));
+ approveFilter.addFilter(getTaskFilter(CMSTaskType.retrieve(CMSTaskType.EDIT),
+ party, ff));
- CompoundFilter permissionFilter = ff.or();
- permissionFilter.addFilter(authorFilter);
- permissionFilter.addFilter(approveFilter);
- permissionFilter.addFilter(deployFilter);
+ CompoundFilter deployFilter = ff.and();
+ deployFilter.addFilter(ff.equals("taskType", CMSTaskType.DEPLOY));
+ deployFilter.addFilter(getTaskFilter(CMSTaskType.retrieve(CMSTaskType.DEPLOY),
+ party, ff));
- query.addFilter(permissionFilter);
+ CompoundFilter permissionFilter = ff.or();
+ permissionFilter.addFilter(authorFilter);
+ permissionFilter.addFilter(approveFilter);
+ permissionFilter.addFilter(deployFilter);
- String lockFilterType = getLockFilterType(state);
- if ( lockFilterType.equals("lock") ) {
- query.addEqualsFilter("isLocked","t");
- query.addEqualsFilter("status","1");
- } else if ( lockFilterType.equals("unlock") ) {
- query.addEqualsFilter("isLocked","f");
- } // else show all
+ query.addFilter(permissionFilter);
+
+ String lockFilterType = getLockFilterType(state);
+ if (lockFilterType.equals("lock")) {
+ query.addEqualsFilter("isLocked", "t");
+ query.addEqualsFilter("status", "1");
+ } else if (lockFilterType.equals("unlock")) {
+ query.addEqualsFilter("isLocked", "f");
+ } // else show all
}
private static class RootFolderSelectionModel
- extends FolderSelectionModel {
+ extends FolderSelectionModel {
+
ACSObjectSelectionModel m_sectionSel;
public RootFolderSelectionModel(ACSObjectSelectionModel sectionSel) {
@@ -445,18 +439,20 @@ public class TasksPanel extends CMSContainer {
ContentSection sec = (ContentSection) m_sectionSel.getSelectedObject(s);
Assert.exists(sec);
- User user = Web.getContext().getUser();
- if ( user != null ) {
- Folder folder = Folder.getUserHomeFolder(user,sec);
- if ( folder != null ) {
+ User user = Web.getContext().getUser();
+ if (user != null) {
+ Folder folder = Folder.getUserHomeFolder(user, sec);
+ if (folder != null) {
return folder.getID();
}
}
return sec.getRootFolder().getID();
}
+
}
private class TasksPaginationModelBuilder implements PaginationModelBuilder {
+
public int getTotalSize(Paginator paginator,
PageState state) {
return numberTasksForUser(state);
@@ -465,13 +461,13 @@ public class TasksPanel extends CMSContainer {
public boolean isVisible(PageState state) {
return numberTasksForUser(state) > m_maxRows;
}
+
}
private class TaskList extends SimpleComponent {
private final static String QUERY_NAME =
- "com.arsdigita.cms.workflow.getEnabledUserTasks";
-
+ "com.arsdigita.cms.workflow.getEnabledUserTasks";
private boolean m_paginate = false;
public TaskList(boolean paginate) {
@@ -479,11 +475,11 @@ public class TasksPanel extends CMSContainer {
}
private DataQuery makeQuery(PageState state) {
- User user = (User)Kernel.getContext().getParty();
+ User user = (User) Kernel.getContext().getParty();
DataQuery query = SessionManager.getSession()
- .retrieveQuery(QUERY_NAME);
- addQueryFilters(query,user,state);
+ .retrieveQuery(QUERY_NAME);
+ addQueryFilters(query, user, state);
return query;
}
@@ -498,6 +494,7 @@ public class TasksPanel extends CMSContainer {
DataQuery query = makeQuery(state);
return new Long(query.size());
}
+
};
@Override
@@ -509,7 +506,7 @@ public class TasksPanel extends CMSContainer {
DataQuery query = makeQuery(state);
String lockFilterType = getLockFilterType(state);
- content.addAttribute("lockFilterType",lockFilterType);
+ content.addAttribute("lockFilterType", lockFilterType);
if (m_paginate) {
query.setRange(new Integer(m_paginator.getFirst(state)),
@@ -522,44 +519,35 @@ public class TasksPanel extends CMSContainer {
if (sortDirection.equals(SORT_DOWN)) {
sortPostfix = " desc";
}
-
- if ( sortKey.equals(SORT_TITLE) ) {
- query.setOrder("lower(pageTitle) " + sortPostfix +
- ", lower(status) asc, dueDate desc");
- } else if ( sortKey.equals(SORT_DATE) ) {
- query.setOrder("dueDate " + sortPostfix +
- ", lower(status) asc, lower(pageTitle) asc");
- } else if ( sortKey.equals(SORT_USER) ) {
- query.setOrder("lockingUserID " + sortPostfix +
- ", lower(status) asc, dueDate desc " +
- ", lower(pageTitle) asc");
- } else if ( sortKey.equals(SORT_STATUS) ) {
- query.setOrder("lower(status) " + sortPostfix +
- ", dueDate desc " +
- ", lower(pageTitle) asc");
- } else if ( sortKey.equals(SORT_ACTION) ) {
- query.setOrder("taskType " + sortPostfix +
- ", lower(status) asc, dueDate desc " +
- ", lower(pageTitle) asc"
- );
- } else if ( sortKey.equals(SORT_WORKFLOW) ) {
- query.setOrder("processLabel " + sortPostfix +
- ", lower(status) asc, dueDate desc " +
- ", lower(pageTitle) asc"
- );
+ if (sortKey.equals(SORT_TITLE)) {
+ query.setOrder("lower(pageTitle) " + sortPostfix + ", lower(status) asc, dueDate desc");
+ } else if (sortKey.equals(SORT_DATE)) {
+ query.setOrder("dueDate " + sortPostfix + ", lower(status) asc, lower(pageTitle) asc");
+ } else if (sortKey.equals(SORT_USER)) {
+ query.setOrder("lockingUserID " + sortPostfix + ", lower(status) asc, dueDate desc "
+ + ", lower(pageTitle) asc");
+ } else if (sortKey.equals(SORT_STATUS)) {
+ query.setOrder("lower(status) " + sortPostfix + ", dueDate desc " + ", lower(pageTitle) asc");
+
+ } else if (sortKey.equals(SORT_ACTION)) {
+ query.setOrder("taskType " + sortPostfix + ", lower(status) asc, dueDate desc "
+ + ", lower(pageTitle) asc");
+ } else if (sortKey.equals(SORT_WORKFLOW)) {
+ query.setOrder("processLabel " + sortPostfix + ", lower(status) asc, dueDate desc "
+ + ", lower(pageTitle) asc");
}
HashMap sections = new HashMap();
while (query.next()) {
- BigDecimal sectionID = (BigDecimal)query.get("sectionID");
- String sectionPath = (String)sections.get(sectionID);
+ BigDecimal sectionID = (BigDecimal) query.get("sectionID");
+ String sectionPath = (String) sections.get(sectionID);
if (sectionPath == null) {
try {
- ContentSection section = (ContentSection)DomainObjectFactory
- .newInstance(new OID(ContentSection.BASE_DATA_OBJECT_TYPE,
- sectionID));
+ ContentSection section = (ContentSection) DomainObjectFactory
+ .newInstance(new OID(ContentSection.BASE_DATA_OBJECT_TYPE,
+ sectionID));
sectionPath = section.getPath();
} catch (DataObjectNotFoundException ex) {
throw new UncheckedWrapperException("cannot find content section", ex);
@@ -567,22 +555,22 @@ public class TasksPanel extends CMSContainer {
sections.put(sectionID, sectionPath);
}
- Element task = content.newChildElement("cms:tasksPanelTask",
+ Element task = content.newChildElement("cms:tasksPanelTask",
CMS.CMS_XML_NS);
- BigDecimal itemID = (BigDecimal)query.get("itemID");
- String taskType = (String)query.get("taskType");
-
+ BigDecimal itemID = (BigDecimal) query.get("itemID");
+ String taskType = (String) query.get("taskType");
+
task.addAttribute("taskID", query.get("taskID").toString());
task.addAttribute("processID", query.get("processID").toString());
- task.addAttribute("taskLabel", (String)query.get("taskLabel"));
- task.addAttribute("taskDescription", (String)query.get("taskDescription"));
- task.addAttribute("processLabel", (String)query.get("processLabel"));
+ task.addAttribute("taskLabel", (String) query.get("taskLabel"));
+ task.addAttribute("taskDescription", (String) query.get("taskDescription"));
+ task.addAttribute("processLabel", (String) query.get("processLabel"));
- String isLocked = (String)query.get("isLocked");
+ String isLocked = (String) query.get("isLocked");
task.addAttribute("isLocked", isLocked);
if (query.get("dueDate") != null) {
- java.util.Date d = (java.util.Date)query.get("dueDate");
+ java.util.Date d = (java.util.Date) query.get("dueDate");
SimpleDateFormat df = new SimpleDateFormat("EEE, MMM d, yyyy");
task.addAttribute("dueDate", df.format(d));
@@ -591,21 +579,21 @@ public class TasksPanel extends CMSContainer {
task.addAttribute("itemID", itemID.toString());
task.addAttribute("sectionID", query.get("sectionID").toString());
task.addAttribute("sectionPath", sectionPath);
- task.addAttribute("pageName", (String)query.get("pageName"));
- task.addAttribute("pageTitle", (String)query.get("pageTitle"));
+ task.addAttribute("pageName", (String) query.get("pageName"));
+ task.addAttribute("pageTitle", (String) query.get("pageTitle"));
- BigDecimal lockingUserID = (BigDecimal)query.get("lockingUserID");
+ BigDecimal lockingUserID = (BigDecimal) query.get("lockingUserID");
if (lockingUserID != null) {
task.addAttribute("lockingUserID", lockingUserID.toString());
- if ( !"f".equals(isLocked) ) {
+ if (!"f".equals(isLocked)) {
User lockingUser = User.retrieve(lockingUserID);
- if ( lockingUser != null ) {
- task.addAttribute("assignee",lockingUser.getDisplayName());
+ if (lockingUser != null) {
+ task.addAttribute("assignee", lockingUser.getDisplayName());
}
}
}
task.addAttribute("taskType", taskType);
- task.addAttribute("taskTypeClass", (String)query.get("taskTypeClass"));
+ task.addAttribute("taskTypeClass", (String) query.get("taskTypeClass"));
task.addAttribute("status", query.get("status").toString());
// control event for locking a task
@@ -618,24 +606,23 @@ public class TasksPanel extends CMSContainer {
}
if ("Deploy".equals(taskType)) {
- task.addAttribute("editTabNumber",
+ task.addAttribute("editTabNumber",
String.valueOf(ContentItemPage.PUBLISHING_TAB));
} else {
- task.addAttribute("editTabNumber",
+ task.addAttribute("editTabNumber",
String.valueOf(ContentItemPage.AUTHORING_TAB));
}
}
// m_actionLabel.generateXML(state, content);
- String[][] sortableHeaders =
- {{SORT_TITLE, "cms.ui.workflow.task.item_title"},
- {SORT_ACTION, "cms.ui.action"},
- {SORT_DATE, "cms.ui.tasks_due_date"},
- {SORT_STATUS, "cms.ui.tasks_status_no_colon"},
- {SORT_USER, "cms.ui.workflow.task.locking_user"},
- {SORT_WORKFLOW, "cms.ui.workflow"}};
- for (int i=0;i
*
- * @param req The current running request.
+ * @param request The current running request.
*
* @return Object Represents the localized version of this
* message. The reason this method returns an Object and
@@ -201,7 +200,7 @@ public class GlobalizedMessage {
* bites. Maybe this class should have been called
* GlobalizedObject?
*/
- public Object localize(HttpServletRequest request) {
+ public Object localize(final HttpServletRequest request) {
return localize(com.arsdigita.globalization.GlobalizationHelper.getNegotiatedLocale());
}
@@ -226,34 +225,54 @@ public class GlobalizedMessage {
* bites. Maybe this class should have been called
* GlobalizedObject?
*/
- public Object localize(Locale locale) {
+ public Object localize(final Locale locale) {
Object message = getKey();
- ResourceBundle rb = null;
+ ResourceBundle resourceBundle = null;
if (locale == null) {
throw new IllegalArgumentException("locale cannot be null.");
}
- try {
- rb = ResourceBundle.getBundle(getBundleName(), locale);
+ try {
+ // jensp 2013-03-16:
+ // Previously, ResourceBundle#getBundle(String, Locale) was called here. That was causing problems under
+ // specific circumstances:
+ // - The browser of the user is set the english (britain), languge code en_GB
+ // - The system language of the server running CCM is set to german (de_DE).
+ // In this case, the ResourceBundle.getBundle method first tries to find a ResourceBundle for en_GB, than
+ // for en. Usally, both attempts will fail because the english labels are in the default bundle
+ // (no language code). The standard search algorithm of ResourceBundle#getBundle than falls back to the
+ // system language (the language of the SERVER), which is German is this case. Therefore the content center
+ // was shown with german texts...
+ // Luckily, there is a simple solution: The search algorithm is implemented in the inner class
+ // ResourceBundle.Control. There are also variants of the getBundle method which allow it to pass an
+ // custom implementation of ResouceBundle.Control. Also ResourceBundle.Control has a factory method which
+ // offers an implementation of ResourceBundle.Control which does not use the system language.
+ // Therefore, all what was to do was to change the call of getBundle here from
+ // ResourceBundle#getBundle(String, Locale) to ResourceBundle#getBundle(String, Locale, ResourceControl)
+ // with ResourceBundle.Control.getNoFallbackControl(List).
+ resourceBundle = ResourceBundle.getBundle(
+ getBundleName(),
+ locale,
+ ResourceBundle.Control.getNoFallbackControl(ResourceBundle.Control.FORMAT_PROPERTIES));
} catch (MissingResourceException e) {
- if (s_cat.isDebugEnabled()) {
- s_cat.debug(
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug(
"ResourceBundle " + getBundleName() + " was not found.");
}
}
try {
- if (rb != null) {
- message = rb.getObject(getKey());
- } else {
- if (s_cat.isDebugEnabled()) {
- s_cat.debug("No ResourceBundle available");
+ if (resourceBundle == null) {
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug("No ResourceBundle available");
}
+ } else {
+ message = resourceBundle.getObject(getKey());
}
} catch (MissingResourceException e2) {
- if (s_cat.isDebugEnabled()) {
- s_cat.debug(getKey() + " was not found in the ResourceBundle.");
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug(getKey() + " was not found in the ResourceBundle.");
}
}
@@ -282,7 +301,9 @@ public class GlobalizedMessage {
*
* @return The contents in String form for debugging.
*/
+ @Override
public String toString() {
return getBundleName() + "#" + getKey();
}
+
}