- Die Attribute der Assoziation zwischen Series und Editor sind jetzt editerbar

- JSP für CCM-driven Homepages V1


git-svn-id: https://svn.libreccm.org/ccm/trunk@759 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2011-02-20 12:17:27 +00:00
parent 2dc9b2c093
commit bcb52e77d4
5 changed files with 204 additions and 17 deletions

View File

@ -118,7 +118,7 @@ public class PublicationAuthorAddForm
if (author == null) { if (author == null) {
s_log.warn("No author selected."); s_log.warn("No author selected.");
m_itemSearch.setVisible(state, true); // m_itemSearch.setVisible(state, true);
selectedAuthorLabel.setVisible(state, false); selectedAuthorLabel.setVisible(state, false);
} else { } else {
s_log.warn(String.format("Author is here: %s", author.getFullName())); s_log.warn(String.format("Author is here: %s", author.getFullName()));

View File

@ -52,10 +52,14 @@ public class SeriesEditshipAddForm extends BasicItemForm {
private SaveCancelSection m_saveCancelSection; private SaveCancelSection m_saveCancelSection;
private final String ITEM_SEARCH = "editors"; private final String ITEM_SEARCH = "editors";
private ItemSelectionModel m_itemModel; private ItemSelectionModel m_itemModel;
private SeriesEditshipStep editStep;
private Label selectedEditorLabel;
public SeriesEditshipAddForm(ItemSelectionModel itemModel) { public SeriesEditshipAddForm(ItemSelectionModel itemModel,
SeriesEditshipStep editStep) {
super("EditorsEntryForm", itemModel); super("EditorsEntryForm", itemModel);
m_itemModel = itemModel; m_itemModel = itemModel;
this.editStep = editStep;
} }
@Override @Override
@ -68,6 +72,9 @@ public class SeriesEditshipAddForm extends BasicItemForm {
getName())); getName()));
add(m_itemSearch); add(m_itemSearch);
selectedEditorLabel = new Label("");
add(selectedEditorLabel);
add(new Label((String) PublicationGlobalizationUtil.globalize( add(new Label((String) PublicationGlobalizationUtil.globalize(
"publications.ui.series.editship.from").localize())); "publications.ui.series.editship.from").localize()));
ParameterModel fromParam = new DateParameter(EditshipCollection.FROM); ParameterModel fromParam = new DateParameter(EditshipCollection.FROM);
@ -91,6 +98,26 @@ public class SeriesEditshipAddForm extends BasicItemForm {
FormData data = fse.getFormData(); FormData data = fse.getFormData();
PageState state = fse.getPageState(); 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); setVisible(state, true);
} }
@ -103,9 +130,31 @@ public class SeriesEditshipAddForm extends BasicItemForm {
if (!(this.getSaveCancelSection(). if (!(this.getSaveCancelSection().
getCancelButton().isSelected(state))) { getCancelButton().isSelected(state))) {
GenericPerson editor;
editor = ((SeriesEditshipStep) editStep).getSelectedEditor();
if (editor == null) {
series.addEditor((GenericPerson) data.get(ITEM_SEARCH), series.addEditor((GenericPerson) data.get(ITEM_SEARCH),
(Date) data.get(EditshipCollection.FROM), (Date) data.get(EditshipCollection.FROM),
(Date) data.get(EditshipCollection.TO)); (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); init(fse);

View File

@ -19,11 +19,13 @@
*/ */
package com.arsdigita.cms.contenttypes.ui; package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.cms.contenttypes.GenericPerson;
import com.arsdigita.cms.ItemSelectionModel; import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard; import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.BasicItemForm; import com.arsdigita.cms.ui.authoring.BasicItemForm;
import com.arsdigita.cms.ui.authoring.SimpleEditStep; 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 { 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( public SeriesEditshipStep(
ItemSelectionModel itemModel, AuthoringKitWizard parent) { ItemSelectionModel itemModel, AuthoringKitWizard parent) {
@ -44,14 +49,40 @@ public class SeriesEditshipStep extends SimpleEditStep {
String prefix) { String prefix) {
super(itemModel, parent, prefix); super(itemModel, parent, prefix);
BasicItemForm addEditorSheet = new SeriesEditshipAddForm(itemModel); BasicItemForm addEditorSheet = new SeriesEditshipAddForm(itemModel,
this);
add(ADD_EDITOR_SHEET_NAME, add(ADD_EDITOR_SHEET_NAME,
(String) PublicationGlobalizationUtil.globalize( (String) PublicationGlobalizationUtil.globalize(
"publications.ui.series.add_editship").localize(), "publications.ui.series.add_editship").localize(),
new WorkflowLockedComponentAccess(addEditorSheet, itemModel), new WorkflowLockedComponentAccess(addEditorSheet, itemModel),
addEditorSheet.getSaveCancelSection().getCancelButton()); addEditorSheet.getSaveCancelSection().getCancelButton());
SeriesEditshipTable editorsTable = new SeriesEditshipTable(itemModel); SeriesEditshipTable editorsTable = new SeriesEditshipTable(itemModel,
this);
setDisplayComponent(editorsTable); 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;
}
} }

View File

@ -35,8 +35,10 @@ import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.SecurityManager; import com.arsdigita.cms.SecurityManager;
import com.arsdigita.cms.contenttypes.EditshipCollection; import com.arsdigita.cms.contenttypes.EditshipCollection;
import com.arsdigita.cms.contenttypes.GenericPerson; import com.arsdigita.cms.contenttypes.GenericPerson;
import com.arsdigita.cms.contenttypes.Publication;
import com.arsdigita.cms.contenttypes.Series; import com.arsdigita.cms.contenttypes.Series;
import com.arsdigita.cms.dispatcher.Utilities; import com.arsdigita.cms.dispatcher.Utilities;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import com.arsdigita.util.LockableImpl; import com.arsdigita.util.LockableImpl;
import java.math.BigDecimal; import java.math.BigDecimal;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
@ -50,14 +52,18 @@ public class SeriesEditshipTable extends Table implements TableActionListener {
private static final Logger s_log = private static final Logger s_log =
Logger.getLogger(SeriesEditshipTable.class); Logger.getLogger(SeriesEditshipTable.class);
private final String TABLE_COL_EDIT = "table_col_edit"; 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_DEL = "table_col_del";
//private final String TABLE_COL_UP = "table_col_up"; //private final String TABLE_COL_UP = "table_col_up";
//private final String TABLE_COL_DOWN = "table_col_down"; //private final String TABLE_COL_DOWN = "table_col_down";
private ItemSelectionModel m_itemModel; private ItemSelectionModel m_itemModel;
private SimpleEditStep editStep;
public SeriesEditshipTable(ItemSelectionModel itemModel) { public SeriesEditshipTable(ItemSelectionModel itemModel,
SimpleEditStep editStep) {
super(); super();
m_itemModel = itemModel; m_itemModel = itemModel;
this.editStep = editStep;
setEmptyView( setEmptyView(
new Label(PublicationGlobalizationUtil.globalize( new Label(PublicationGlobalizationUtil.globalize(
@ -80,16 +86,21 @@ public class SeriesEditshipTable extends Table implements TableActionListener {
colModel.add(new TableColumn( colModel.add(new TableColumn(
3, 3,
PublicationGlobalizationUtil.globalize( 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(), "publications.ui.series.editship.remove").localize(),
TABLE_COL_DEL)); TABLE_COL_DEL));
/* Just in the case someone want's to sort editships manually..." */ /* Just in the case someone want's to sort editships manually..." */
/* colModel.add(new TableColumn( /* colModel.add(new TableColumn(
4, 5,
PublicationGlobalizationUtil.globalize( PublicationGlobalizationUtil.globalize(
"publications.ui.series.editship.up").localize(), "publications.ui.series.editship.up").localize(),
TABLE_COL_UP)); TABLE_COL_UP));
colModel.add(new TableColumn( colModel.add(new TableColumn(
5, 6,
PublicationGlobalizationUtil.globalize( PublicationGlobalizationUtil.globalize(
"publications.ui.series.editship.down").localize(), "publications.ui.series.editship.down").localize(),
TABLE_COL_DOWN));*/ TABLE_COL_DOWN));*/
@ -97,9 +108,10 @@ public class SeriesEditshipTable extends Table implements TableActionListener {
setModelBuilder(new SeriesEditshipTableModelBuilder(itemModel)); setModelBuilder(new SeriesEditshipTableModelBuilder(itemModel));
colModel.get(0).setCellRenderer(new EditCellRenderer()); colModel.get(0).setCellRenderer(new EditCellRenderer());
colModel.get(3).setCellRenderer(new DeleteCellRenderer()); colModel.get(3).setCellRenderer(new EditEditshipCellRenderer());
//colModel.get(4).setCellRenderer(new UpCellRenderer()); colModel.get(4).setCellRenderer(new DeleteCellRenderer());
//colModel.get(5).setCellRenderer(new DownCellRenderer()); //colModel.get(5).setCellRenderer(new UpCellRenderer());
//colModel.get(6).setCellRenderer(new DownCellRenderer());
} }
private class SeriesEditshipTableModelBuilder private class SeriesEditshipTableModelBuilder
@ -165,6 +177,9 @@ public class SeriesEditshipTable extends Table implements TableActionListener {
case 2: case 2:
return m_editshipCollection.getTo(); return m_editshipCollection.getTo();
case 3: case 3:
return PublicationGlobalizationUtil.globalize(
"publications.ui.series.editship.edit").localize();
case 4:
return PublicationGlobalizationUtil.globalize( return PublicationGlobalizationUtil.globalize(
"publications.ui.series.editship.remove"). "publications.ui.series.editship.remove").
localize(); 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 private class DeleteCellRenderer
extends LockableImpl extends LockableImpl
implements TableCellRenderer { implements TableCellRenderer {
@ -312,11 +359,23 @@ public class SeriesEditshipTable extends Table implements TableActionListener {
Series series = (Series) m_itemModel.getSelectedObject(state); Series series = (Series) m_itemModel.getSelectedObject(state);
//EditshipCollection editors = series.getEditors(); EditshipCollection editors = series.getEditors();
TableColumn column = getColumnModel().get(event.getColumn().intValue()); TableColumn column = getColumnModel().get(event.getColumn().intValue());
if (TABLE_COL_EDIT.equals(column.getHeaderKey().toString())) { 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())) { } else if (TABLE_COL_DEL.equals(column.getHeaderKey().toString())) {
series.removeEditor(editor); series.removeEditor(editor);
} }

View File

@ -0,0 +1,48 @@
<jsp:root
xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:define="/WEB-INF/bebop-define.tld"
xmlns:show="/WEB-INF/bebop-show.tld"
version="1.2">
<jsp:directive.page import="com.arsdigita.dispatcher.DispatcherHelper"/>
<jsp:directive.page import="com.arsdigita.bebop.parameters.BigDecimalParameter"/>
<jsp:directive.page import="com.arsdigita.london.navigation.Navigation"/>
<jsp:directive.page import="com.arsdigita.london.navigation.cms.CMSDataCollectionDefinition"/>
<jsp:directive.page import="com.arsdigita.london.navigation.cms.CMSDataCollectionRenderer"/>
<jsp:scriptlet>
long age = Navigation.getConfig().getIndexPageCacheLifetime();
if (age == 0) {
DispatcherHelper.cacheDisable(response);
} else {
DispatcherHelper.cacheForWorld(response, (int)age);
}
</jsp:scriptlet>
<define:page name="publications"
application="content"
title="Publications4Homepages"
cache="true">
<define:component name="publicationList"
classname="com.arsdigita.london.navigation.ui.object.ComplexObjectList"/>
<jsp:scriptlet>
((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) &amp;&amp; (((String[])request.getParameterMap().get("DaBInId")).length &gt; 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);
</jsp:scriptlet>
</define:page>
<show:all/>
</jsp:root>