- 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-94f89814c4dfmaster
parent
2dc9b2c093
commit
bcb52e77d4
|
|
@ -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()));
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) && (((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);
|
||||
</jsp:scriptlet>
|
||||
</define:page>
|
||||
|
||||
<show:all/>
|
||||
|
||||
</jsp:root>
|
||||
Loading…
Reference in New Issue