From bcb52e77d49d98105aa227c3dc4bc71d95d7d17f Mon Sep 17 00:00:00 2001 From: jensp Date: Sun, 20 Feb 2011 12:17:27 +0000 Subject: [PATCH] =?UTF-8?q?-=20Die=20Attribute=20der=20Assoziation=20zwisc?= =?UTF-8?q?hen=20Series=20und=20Editor=20sind=20jetzt=20editerbar=20-=20JS?= =?UTF-8?q?P=20f=C3=BCr=20CCM-driven=20Homepages=20V1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.libreccm.org/ccm/trunk@759 8810af33-2d31-482b-a856-94f89814c4df --- .../ui/PublicationAuthorAddForm.java | 2 +- .../ui/SeriesEditshipAddForm.java | 59 +++++++++++++-- .../contenttypes/ui/SeriesEditshipStep.java | 39 +++++++++- .../contenttypes/ui/SeriesEditshipTable.java | 73 +++++++++++++++++-- .../www/publications4homepages.jsp | 48 ++++++++++++ 5 files changed, 204 insertions(+), 17 deletions(-) create mode 100644 ccm-zes-aplaws/web/packages/content-section/www/publications4homepages.jsp diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationAuthorAddForm.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationAuthorAddForm.java index b4142e580..65b9b714b 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationAuthorAddForm.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationAuthorAddForm.java @@ -118,7 +118,7 @@ public class PublicationAuthorAddForm if (author == null) { s_log.warn("No author selected."); - m_itemSearch.setVisible(state, true); + // m_itemSearch.setVisible(state, true); selectedAuthorLabel.setVisible(state, false); } else { s_log.warn(String.format("Author is here: %s", author.getFullName())); diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/SeriesEditshipAddForm.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/SeriesEditshipAddForm.java index 3ab26c1fb..a68425bb5 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/SeriesEditshipAddForm.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/SeriesEditshipAddForm.java @@ -52,10 +52,14 @@ public class SeriesEditshipAddForm extends BasicItemForm { private SaveCancelSection m_saveCancelSection; private final String ITEM_SEARCH = "editors"; private ItemSelectionModel m_itemModel; + private SeriesEditshipStep editStep; + private Label selectedEditorLabel; - public SeriesEditshipAddForm(ItemSelectionModel itemModel) { + public SeriesEditshipAddForm(ItemSelectionModel itemModel, + SeriesEditshipStep editStep) { super("EditorsEntryForm", itemModel); m_itemModel = itemModel; + this.editStep = editStep; } @Override @@ -68,6 +72,9 @@ public class SeriesEditshipAddForm extends BasicItemForm { getName())); add(m_itemSearch); + selectedEditorLabel = new Label(""); + add(selectedEditorLabel); + add(new Label((String) PublicationGlobalizationUtil.globalize( "publications.ui.series.editship.from").localize())); ParameterModel fromParam = new DateParameter(EditshipCollection.FROM); @@ -91,6 +98,26 @@ public class SeriesEditshipAddForm extends BasicItemForm { FormData data = fse.getFormData(); PageState state = fse.getPageState(); + GenericPerson editor; + Date from; + Date to; + + editor = editStep.getSelectedEditor(); + from = editStep.getSelectedEditorDateFrom(); + to = editStep.getSelectedEditorDateTo(); + + if (editor == null) { + selectedEditorLabel.setVisible(state, false); + } else { + data.put(ITEM_SEARCH, editor); + data.put(EditshipCollection.FROM, from); + data.put(EditshipCollection.TO, to); + + m_itemSearch.setVisible(state, false); + selectedEditorLabel.setLabel(editor.getFullName(), state); + selectedEditorLabel.setVisible(state, true); + } + setVisible(state, true); } @@ -102,10 +129,32 @@ public class SeriesEditshipAddForm extends BasicItemForm { (Series) getItemSelectionModel().getSelectedObject(state); if (!(this.getSaveCancelSection(). - getCancelButton().isSelected(state))) { - series.addEditor((GenericPerson) data.get(ITEM_SEARCH), - (Date) data.get(EditshipCollection.FROM), - (Date) data.get(EditshipCollection.TO)); + getCancelButton().isSelected(state))) { + GenericPerson editor; + editor = ((SeriesEditshipStep) editStep).getSelectedEditor(); + + if (editor == null) { + series.addEditor((GenericPerson) data.get(ITEM_SEARCH), + (Date) data.get(EditshipCollection.FROM), + (Date) data.get(EditshipCollection.TO)); + } else { + EditshipCollection editors; + + editors = series.getEditors(); + + while (editors.next()) { + if (editors.getEditor().equals(editor)) { + break; + } + } + + editors.setFrom((Date) data.get(EditshipCollection.FROM)); + editors.setTo((Date) data.get(EditshipCollection.TO)); + + editStep.setSelectedEditor(null); + editStep.setSelectedEditorDateFrom(null); + editStep.setSelectedEditorDateTo(null); + } } init(fse); diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/SeriesEditshipStep.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/SeriesEditshipStep.java index 3077d5c4d..e483d1ee9 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/SeriesEditshipStep.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/SeriesEditshipStep.java @@ -19,11 +19,13 @@ */ package com.arsdigita.cms.contenttypes.ui; +import com.arsdigita.cms.contenttypes.GenericPerson; import com.arsdigita.cms.ItemSelectionModel; import com.arsdigita.cms.ui.authoring.AuthoringKitWizard; import com.arsdigita.cms.ui.authoring.BasicItemForm; import com.arsdigita.cms.ui.authoring.SimpleEditStep; -import com.arsdigita.cms.ui.authoring.WorkflowLockedComponentAccess; +import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess; +import java.util.Date; /** * @@ -31,7 +33,10 @@ import com.arsdigita.cms.ui.authoring.WorkflowLockedComponentAccess; */ public class SeriesEditshipStep extends SimpleEditStep { - private static final String ADD_EDITOR_SHEET_NAME = "addEditor"; + public static final String ADD_EDITOR_SHEET_NAME = "addEditor"; + private GenericPerson selectedEditor; + private Date selectedEditorDateFrom; + private Date selectedEditorDateTo; public SeriesEditshipStep( ItemSelectionModel itemModel, AuthoringKitWizard parent) { @@ -44,14 +49,40 @@ public class SeriesEditshipStep extends SimpleEditStep { String prefix) { super(itemModel, parent, prefix); - BasicItemForm addEditorSheet = new SeriesEditshipAddForm(itemModel); + BasicItemForm addEditorSheet = new SeriesEditshipAddForm(itemModel, + this); add(ADD_EDITOR_SHEET_NAME, (String) PublicationGlobalizationUtil.globalize( "publications.ui.series.add_editship").localize(), new WorkflowLockedComponentAccess(addEditorSheet, itemModel), addEditorSheet.getSaveCancelSection().getCancelButton()); - SeriesEditshipTable editorsTable = new SeriesEditshipTable(itemModel); + SeriesEditshipTable editorsTable = new SeriesEditshipTable(itemModel, + this); setDisplayComponent(editorsTable); } + + public GenericPerson getSelectedEditor() { + return selectedEditor; + } + + public void setSelectedEditor(GenericPerson selectedEditor) { + this.selectedEditor = selectedEditor; + } + + public Date getSelectedEditorDateFrom() { + return selectedEditorDateFrom; + } + + public void setSelectedEditorDateFrom(Date selectedEditorDateFrom) { + this.selectedEditorDateFrom = selectedEditorDateFrom; + } + + public Date getSelectedEditorDateTo() { + return selectedEditorDateTo; + } + + public void setSelectedEditorDateTo(Date selectedEditorDateTo) { + this.selectedEditorDateTo = selectedEditorDateTo; + } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/SeriesEditshipTable.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/SeriesEditshipTable.java index 47c73305e..a94fd19c4 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/SeriesEditshipTable.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/SeriesEditshipTable.java @@ -35,8 +35,10 @@ import com.arsdigita.cms.ItemSelectionModel; import com.arsdigita.cms.SecurityManager; import com.arsdigita.cms.contenttypes.EditshipCollection; import com.arsdigita.cms.contenttypes.GenericPerson; +import com.arsdigita.cms.contenttypes.Publication; import com.arsdigita.cms.contenttypes.Series; import com.arsdigita.cms.dispatcher.Utilities; +import com.arsdigita.cms.ui.authoring.SimpleEditStep; import com.arsdigita.util.LockableImpl; import java.math.BigDecimal; import org.apache.log4j.Logger; @@ -50,14 +52,18 @@ public class SeriesEditshipTable extends Table implements TableActionListener { private static final Logger s_log = Logger.getLogger(SeriesEditshipTable.class); private final String TABLE_COL_EDIT = "table_col_edit"; + private final String TABLE_COL_EDIT_EDITSHIP = "table_col_edit_editship"; private final String TABLE_COL_DEL = "table_col_del"; //private final String TABLE_COL_UP = "table_col_up"; //private final String TABLE_COL_DOWN = "table_col_down"; private ItemSelectionModel m_itemModel; + private SimpleEditStep editStep; - public SeriesEditshipTable(ItemSelectionModel itemModel) { + public SeriesEditshipTable(ItemSelectionModel itemModel, + SimpleEditStep editStep) { super(); m_itemModel = itemModel; + this.editStep = editStep; setEmptyView( new Label(PublicationGlobalizationUtil.globalize( @@ -80,16 +86,21 @@ public class SeriesEditshipTable extends Table implements TableActionListener { colModel.add(new TableColumn( 3, PublicationGlobalizationUtil.globalize( + "publications.ui.series.editship.edit").localize(), + TABLE_COL_EDIT_EDITSHIP)); + colModel.add(new TableColumn( + 4, + PublicationGlobalizationUtil.globalize( "publications.ui.series.editship.remove").localize(), TABLE_COL_DEL)); /* Just in the case someone want's to sort editships manually..." */ /* colModel.add(new TableColumn( - 4, + 5, PublicationGlobalizationUtil.globalize( "publications.ui.series.editship.up").localize(), TABLE_COL_UP)); colModel.add(new TableColumn( - 5, + 6, PublicationGlobalizationUtil.globalize( "publications.ui.series.editship.down").localize(), TABLE_COL_DOWN));*/ @@ -97,9 +108,10 @@ public class SeriesEditshipTable extends Table implements TableActionListener { setModelBuilder(new SeriesEditshipTableModelBuilder(itemModel)); colModel.get(0).setCellRenderer(new EditCellRenderer()); - colModel.get(3).setCellRenderer(new DeleteCellRenderer()); - //colModel.get(4).setCellRenderer(new UpCellRenderer()); - //colModel.get(5).setCellRenderer(new DownCellRenderer()); + colModel.get(3).setCellRenderer(new EditEditshipCellRenderer()); + colModel.get(4).setCellRenderer(new DeleteCellRenderer()); + //colModel.get(5).setCellRenderer(new UpCellRenderer()); + //colModel.get(6).setCellRenderer(new DownCellRenderer()); } private class SeriesEditshipTableModelBuilder @@ -165,6 +177,9 @@ public class SeriesEditshipTable extends Table implements TableActionListener { case 2: return m_editshipCollection.getTo(); case 3: + return PublicationGlobalizationUtil.globalize( + "publications.ui.series.editship.edit").localize(); + case 4: return PublicationGlobalizationUtil.globalize( "publications.ui.series.editship.remove"). localize(); @@ -210,6 +225,38 @@ public class SeriesEditshipTable extends Table implements TableActionListener { } } + private class EditEditshipCellRenderer + extends LockableImpl + implements TableCellRenderer { + + @Override + public Component getComponent(Table table, + PageState state, + Object value, + boolean isSelected, + Object key, + int row, + int col) { + SecurityManager securityManager = + Utilities.getSecurityManager(state); + Publication publication = (Publication) m_itemModel. + getSelectedObject(state); + + boolean canEdit = securityManager.canAccess( + state.getRequest(), + SecurityManager.EDIT_ITEM, + publication); + + if (canEdit) { + ControlLink link = new ControlLink(value.toString()); + return link; + } else { + Label label = new Label(value.toString()); + return label; + } + } + } + private class DeleteCellRenderer extends LockableImpl implements TableCellRenderer { @@ -312,11 +359,23 @@ public class SeriesEditshipTable extends Table implements TableActionListener { Series series = (Series) m_itemModel.getSelectedObject(state); - //EditshipCollection editors = series.getEditors(); + EditshipCollection editors = series.getEditors(); TableColumn column = getColumnModel().get(event.getColumn().intValue()); if (TABLE_COL_EDIT.equals(column.getHeaderKey().toString())) { + } else if(TABLE_COL_EDIT_EDITSHIP.equals(column.getHeaderKey().toString())) { + while(editors.next()) { + if(editors.getEditor().equals(editor)) { + break; + } + } + + ((SeriesEditshipStep)editStep).setSelectedEditor(editor); + ((SeriesEditshipStep)editStep).setSelectedEditorDateFrom(editors.getFrom()); + ((SeriesEditshipStep)editStep).setSelectedEditorDateTo(editors.getTo()); + + editStep.showComponent(state, SeriesEditshipStep.ADD_EDITOR_SHEET_NAME); } else if (TABLE_COL_DEL.equals(column.getHeaderKey().toString())) { series.removeEditor(editor); } diff --git a/ccm-zes-aplaws/web/packages/content-section/www/publications4homepages.jsp b/ccm-zes-aplaws/web/packages/content-section/www/publications4homepages.jsp new file mode 100644 index 000000000..900582cdf --- /dev/null +++ b/ccm-zes-aplaws/web/packages/content-section/www/publications4homepages.jsp @@ -0,0 +1,48 @@ + + + + + + + + + + long age = Navigation.getConfig().getIndexPageCacheLifetime(); + if (age == 0) { + DispatcherHelper.cacheDisable(response); + } else { + DispatcherHelper.cacheForWorld(response, (int)age); + } + + + + + + + ((com.arsdigita.london.navigation.ui.object.ComplexObjectList) publicationList).setDefinition(new CMSDataCollectionDefinition()); + ((com.arsdigita.london.navigation.ui.object.ComplexObjectList) publicationList).setRenderer(new CMSDataCollectionRenderer()); + ((com.arsdigita.london.navigation.ui.object.ComplexObjectList) publicationList).getDefinition().setObjectType("com.arsdigita.cms.contenttypes.Publication"); + ((com.arsdigita.london.navigation.ui.object.ComplexObjectList) publicationList).getRenderer().setSpecializeObjects(true); + ((com.arsdigita.london.navigation.ui.object.ComplexObjectList) publicationList).getDefinition().setDescendCategories(true); + if((request.getParameterMap().get("DaBInId") != null) && (((String[])request.getParameterMap().get("DaBInId")).length > 0)) { + String[] params = (String[]) request.getParameterMap().get("DaBInId"); + String dabinid = params[0]; + ((com.arsdigita.london.navigation.ui.object.ComplexObjectList) publicationList).setSQLFilter(String.format("authors.pageDescription LIKE '%%DaBInId={%s%%'", dabinid)); + + } + + ((com.arsdigita.london.navigation.ui.object.ComplexObjectList) publicationList).getRenderer().setPageSize(99999); + + + + + +