- 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) {
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()));

View File

@ -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);
}
@ -103,9 +130,31 @@ public class SeriesEditshipAddForm extends BasicItemForm {
if (!(this.getSaveCancelSection().
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);

View File

@ -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;
}
}

View File

@ -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);
}

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>