Aktueller Stand SciPublicPersonalProfile

git-svn-id: https://svn.libreccm.org/ccm/trunk@1003 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2011-07-13 16:50:09 +00:00
parent fbbd10b614
commit 80addc1256
10 changed files with 387 additions and 78 deletions

View File

@ -3,26 +3,34 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.redhat.com/cms/content-types content-types.xsd">
<ctd:content-type
<ctd:content-type
label="SciPublicPersonalProfile"
description="Item which is used to create a public personal profile."
objectType="com.arsdigita.cms.contenttypes.SciPublicPersonalProfile"
classname="com.arsdigita.cms.contenttypes.SciPublicPersonalProfile">
<ctd:authoring-kit createComponent="com.arsdigita.cms.ui.authoring.PageCreate">
<ctd:authoring-kit createComponent="com.arsdigita.cms.ui.authoring.PageCreate">
<ctd:authoring-step
<ctd:authoring-step
labelKey="scipublicpersonalprofile.ui.profile_properties.title"
labelBundle="com.arsdigita.cms.contenttypes.ui.SciPublicPersonalProfileResources"
descriptionKey="scipublicpersonalprofile.ui.profile_properties.title.description"
descriptionBundle="com.arsdigita.cms.contenttypes.ui.SciPublicPersonalProfileResources"
component="com.arsdigita.cms.contenttypes.ui.SciPublicPersonalProfilePropertiesStep"
ordering="1"/>
<ctd:authoring-step
labelKey="scipublicpersonalprofile.ui.profile_nav.title"
labelBundle="com.arsdigita.cms.contenttypes.ui.SciPublicPersonalProfileResources"
descriptionKey="scipublicpersonalprofile.ui.profile_nav.description"
descriptionBundle="com.arsdigita.cms.contenttypes.ui.SciPublicPersonalProfileResources"
component="com.arsdigita.cms.contenttypes.ui.SciPublicPersonalProfileNavigationStep"
ordering="2"/>
<ctd:include href="/WEB-INF/content-types/assign-categories-step.xml"/>
<ctd:include href="/WEB-INF/content-types/assign-categories-step.xml"/>
</ctd:authoring-kit>
</ctd:authoring-kit>
</ctd:content-type>
</ctd:content-type>
</ctd:content-types>

View File

@ -17,9 +17,7 @@ import com.arsdigita.util.Assert;
public class SciPublicPersonalProfile extends ContentPage {
public static final String OWNER = "owner";
public static final String PROFILE_URL = "profileUrl";
public static final String SHOW_PUBLICATION_LIST = "showPublicationList";
public static final String SHOW_PROJECT_LIST = "showProjectList";
public static final String PROFILE_URL = "profileUrl";
public static final String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.cms.contenttypes.SciPublicPersonalProfile";
@ -82,20 +80,4 @@ public class SciPublicPersonalProfile extends ContentPage {
public void setProfileUrl(String profileUrl) {
set(PROFILE_URL, profileUrl);
}
public Boolean getShowPublicationList() {
return (Boolean) get(SHOW_PUBLICATION_LIST);
}
public void setShowPublicationList(Boolean showPublicationList) {
set(SHOW_PUBLICATION_LIST, showPublicationList);
}
public Boolean getShowProjectList() {
return (Boolean) get(SHOW_PROJECT_LIST);
}
public void setShowProjectList(Boolean showProjectList) {
set(SHOW_PROJECT_LIST, showProjectList);
}
}

View File

@ -0,0 +1,33 @@
package com.arsdigita.cms.contenttypes;
import com.arsdigita.runtime.AbstractConfig;
import com.arsdigita.util.parameter.BooleanParameter;
import com.arsdigita.util.parameter.StringParameter;
import com.arsdigita.util.parameter.Parameter;
import javax.swing.text.StyledEditorKit.BoldAction;
/**
*
* @author Jens Pelzetter
* @version $Id$
*/
public class SciPublicPersonalProfileConfig extends AbstractConfig {
private final Parameter showUnfinishedParts;
public SciPublicPersonalProfileConfig() {
showUnfinishedParts =
new BooleanParameter(
"com.arsdigita.cms.contenttypes.SciPublicPersonalProfile.show_unfinished_parts",
Parameter.REQUIRED,
Boolean.FALSE);
register(showUnfinishedParts);
loadInfo();
}
public final boolean getShowUnFinishedParts() {
return (Boolean) get(showUnfinishedParts);
}
}

View File

@ -0,0 +1,4 @@
com.arsdigita.cms.contenttypes.SciPublicPersonalProfile.show_unfinished_parts.title = Show parts of the SciPublicPersonalProfile which do not work yet.
com.arsdigita.cms.contenttypes.SciPublicPersonalProfile.show_unfinished_parts.purpose = Show parts of the SciPublicPersonalProfile which do not work yet.
com.arsdigita.cms.contenttypes.SciPublicPersonalProfile.show_unfinished_parts.example = false
com.arsdigita.cms.contenttypes.SciPublicPersonalProfile.show_unfinished_parts.format = [boolean]

View File

@ -0,0 +1,86 @@
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.FormData;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.event.FormInitListener;
import com.arsdigita.bebop.event.FormProcessListener;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.bebop.event.FormSubmissionListener;
import com.arsdigita.bebop.form.CheckboxGroup;
import com.arsdigita.bebop.form.Option;
import com.arsdigita.bebop.form.SingleSelect;
import com.arsdigita.bebop.parameters.NotNullValidationListener;
import com.arsdigita.bebop.parameters.ParameterModel;
import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.cms.ContentType;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.AuthorshipCollection;
import com.arsdigita.cms.contenttypes.GenericPerson;
import com.arsdigita.cms.contenttypes.Publication;
import com.arsdigita.cms.ui.ItemSearchWidget;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import org.apache.log4j.Logger;
/**
*
* @author Jens Pelzetter
* @version $Id$
*/
public class SciPublicPersonalProfileNavigationAddForm
extends BasicItemForm
implements FormProcessListener,
FormInitListener {
private static final Logger logger =
Logger.getLogger(
SciPublicPersonalProfileNavigationAddForm.class);
private SciPublicPersonalProfileNavigationStep step;
private ItemSearchWidget itemSearch;
private final String ITEM_SEARCH = "itemSearch";
private ItemSelectionModel itemModel;
private SimpleEditStep editStep;
public SciPublicPersonalProfileNavigationAddForm(
ItemSelectionModel itemModel,
SimpleEditStep editStep) {
super("SciPublicPersonalProfileNavAddForm", itemModel);
this.itemModel = itemModel;
this.editStep = editStep;
}
@Override
public void addWidgets() {
add(new Label((String) SciPublicPersonalProfileGlobalizationUtil.
globalize("scipublicpersonalprofile.ui.nav.select_nav_item").
localize()));
ParameterModel navItemModel = new StringParameter("navItemName");
SingleSelect navItemSelect = new SingleSelect(navItemModel);
navItemSelect.addValidationListener(new NotNullValidationListener());
final String[] mockNav = new String[]{"Allgemein", "Beruflich",
"Forschung", "Lehre", "Projekte",
"Publikationen"};
for (String nav : mockNav) {
navItemSelect.addOption(new Option(nav));
}
add(new Label((String) SciPublicPersonalProfileGlobalizationUtil.
globalize("scipublicpersonalprofile.ui.nav.select_target").
localize()));
itemSearch = new ItemSearchWidget(ITEM_SEARCH, ContentType.
findByAssociatedObjectType(
"com.arsdigita.cms.contenttypes.ContentItem"));
add(this.itemSearch);
}
@Override
public void init(FormSectionEvent fse) throws FormProcessException {
}
@Override
public void process(FormSectionEvent fse) throws FormProcessException {
}
}

View File

@ -0,0 +1,43 @@
package com.arsdigita.cms.contenttypes.ui;
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.workflow.WorkflowLockedComponentAccess;
/**
*
* @author Jens Pelzetter
* @version $Id$
*/
public class SciPublicPersonalProfileNavigationStep extends SimpleEditStep {
public static final String EDIT_NAV_SHEET_NAME = "editNav";
public SciPublicPersonalProfileNavigationStep(
final ItemSelectionModel itemModel,
final AuthoringKitWizard parent) {
this(itemModel, parent, null);
}
public SciPublicPersonalProfileNavigationStep(
final ItemSelectionModel itemModel,
final AuthoringKitWizard parent,
final String prefix) {
super(itemModel, parent, prefix);
BasicItemForm editNavSheet = new SciPublicPersonalProfileNavigationAddForm(itemModel, this);
add(EDIT_NAV_SHEET_NAME,
(String) SciPublicPersonalProfileGlobalizationUtil.globalize("scipublicpersonalprofile.ui.profile.nav_add").localize(),
new WorkflowLockedComponentAccess(editNavSheet, itemModel),
editNavSheet.getSaveCancelSection().getCancelButton());
SciPublicPersonalProfileNavigationTable navTable = new SciPublicPersonalProfileNavigationTable(itemModel, this);
setDisplayComponent(navTable);
}
}

View File

@ -0,0 +1,203 @@
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.Table;
import com.arsdigita.bebop.event.TableActionEvent;
import com.arsdigita.bebop.event.TableActionListener;
import com.arsdigita.bebop.table.TableCellRenderer;
import com.arsdigita.bebop.table.TableColumn;
import com.arsdigita.bebop.table.TableColumnModel;
import com.arsdigita.bebop.table.TableModel;
import com.arsdigita.bebop.table.TableModelBuilder;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.dispatcher.Utilities;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import com.arsdigita.util.LockableImpl;
import org.apache.log4j.Logger;
/**
*
* @author Jens Pelzetter
* @version $Id$
*/
public class SciPublicPersonalProfileNavigationTable
extends Table
implements TableActionListener {
private static final Logger logger = Logger.getLogger(
SciPublicPersonalProfileNavigationTable.class);
private final String TABLE_COL_EDIT = "table_col_edit";
private final String TABLE_COL_DEL = "table_col_del";
private ItemSelectionModel itemModel;
private SimpleEditStep editStep;
public SciPublicPersonalProfileNavigationTable(ItemSelectionModel itemModel,
SimpleEditStep editStep) {
super();
this.itemModel = itemModel;
this.editStep = editStep;
setEmptyView(new Label(SciPublicPersonalProfileGlobalizationUtil.
globalize("scipublicpersonalprofile.ui.nav.empty")));
TableColumnModel colModel = getColumnModel();
colModel.add(new TableColumn(
0,
SciPublicPersonalProfileGlobalizationUtil.globalize(
"scipublicpersonalprofile.ui.nav.target").localize(),
TABLE_COL_EDIT));
colModel.add(new TableColumn(
1,
SciPublicPersonalProfileGlobalizationUtil.globalize(
"scipublicpersonalprofile.ui.nav.remove").localize(),
TABLE_COL_DEL));
setModelBuilder(new SciPublicPersonalProfileNavigationTableModelBuilder(
itemModel));
colModel.get(0).setCellRenderer(new EditCellRenderer());
colModel.get(1).setCellRenderer(new DeleteCellRenderer());
addTableActionListener(this);
}
private class SciPublicPersonalProfileNavigationTableModelBuilder
extends LockableImpl
implements TableModelBuilder {
private ItemSelectionModel itemModel;
public SciPublicPersonalProfileNavigationTableModelBuilder(
ItemSelectionModel itemModel) {
this.itemModel = itemModel;
}
@Override
public TableModel makeModel(Table table, PageState state) {
table.getRowSelectionModel().clearSelection(state);
return new SciPublicPersonalProfileNavigationTableModel(table, state);
}
}
private class SciPublicPersonalProfileNavigationTableModel
implements TableModel {
private Table table;
private String[] mockNav = new String[]{"Allgemein", "Beruflich",
"Forschung", "Lehre", "Projekte",
"Publikationen"};
private int index = -1;
private String mockNavItem;
public SciPublicPersonalProfileNavigationTableModel(Table table,
PageState state) {
this.table = table;
}
@Override
public int getColumnCount() {
return mockNav.length;
}
@Override
public boolean nextRow() {
if (index < mockNav.length) {
index++;
return true;
} else {
return false;
}
}
@Override
public Object getElementAt(int columnIndex) {
switch (columnIndex) {
case 0:
return mockNav[index];
case 1:
return SciPublicPersonalProfileGlobalizationUtil.globalize(
"scipublicpersonalprofile.ui.nav.remove").localize();
default:
return null;
}
}
@Override
public Object getKeyAt(int columnIndex) {
return index;
}
}
private class EditCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int col) {
//com.arsdigita.cms.SecurityManager securityManager = Utilities.getSecurityManager(state);
return new Label((String) value);
}
}
private class DeleteCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(Table table,
PageState state,
Object value,
boolean isSelected,
Object key,
int row,
int col) {
com.arsdigita.cms.SecurityManager securityManager =
Utilities.getSecurityManager(state);
/*Publication publication = (Publication) m_itemModel.
getSelectedObject(state);
boolean canDelete = securityManager.canAccess(
state.getRequest(),
SecurityManager.DELETE_ITEM,
publication);
if (canDelete) {
ControlLink link = new ControlLink(value.toString());
link.setConfirmation((String) PublicationGlobalizationUtil.
globalize(
"publications.ui.authors.author.confirm_remove").
localize());
return link;
} else {*/
Label label = new Label(value.toString());
return label;
//}
}
}
@Override
public void cellSelected(TableActionEvent event) {
PageState state = event.getPageState();
TableColumn column = getColumnModel().get(event.getColumn().intValue());
if (TABLE_COL_EDIT.equals(column.getHeaderKey().toString())) {
} else if (TABLE_COL_DEL.equals(column.getHeaderKey().toString())) {
}
}
@Override
public void headSelected(TableActionEvent event) {
//Nothing to do here.
}
}

View File

@ -2,14 +2,9 @@ package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.SegmentedPanel;
import com.arsdigita.cms.ContentPage;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.GenericPerson;
import com.arsdigita.cms.contenttypes.SciPublicPersonalProfile;
import com.arsdigita.domain.DomainObject;
import com.arsdigita.toolbox.ui.DomainObjectPropertySheet;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.BasicPageForm;
@ -68,12 +63,7 @@ public class SciPublicPersonalProfilePropertiesStep extends SimpleEditStep {
itemModel);
sheet.add(SciPublicPersonalProfileGlobalizationUtil.globalize("scipublicpersonalprofile.ui.profile_url"),
SciPublicPersonalProfile.PROFILE_URL);
sheet.add(SciPublicPersonalProfileGlobalizationUtil.globalize("scipublicpersonalprofile.ui.show_publication_list"),
SciPublicPersonalProfile.SHOW_PUBLICATION_LIST);
sheet.add(SciPublicPersonalProfileGlobalizationUtil.globalize("scipublicpersonalprofile.ui.show_project_list"),
SciPublicPersonalProfile.SHOW_PROJECT_LIST);
SciPublicPersonalProfile.PROFILE_URL);
return sheet;
}

View File

@ -66,23 +66,7 @@ public class SciPublicPersonalProfilePropertyForm
ParameterModel profileUrlParam =
new StringParameter(SciPublicPersonalProfile.PROFILE_URL);
TextField profileUrl = new TextField(profileUrlParam);
add(profileUrl);
add(new Label((String) SciPublicPersonalProfileGlobalizationUtil.
globalize(
"scipublicpersonalprofile.ui.profile.show_publication_list").
localize()));
showPublicationList = new CheckboxGroup(SHOW_PUBLICATION_LIST + "Group");
showPublicationList.addOption(new Option(SHOW_PUBLICATION_LIST, ""));
add(showPublicationList);
add(new Label((String) SciPublicPersonalProfileGlobalizationUtil.
globalize(
"scipublicpersonalprofile.ui.profile.show_project_list").
localize()));
showProjectList = new CheckboxGroup(SHOW_PROJECT_LIST + "Group");
showProjectList.addOption(new Option(SHOW_PROJECT_LIST, ""));
add(showProjectList);
add(profileUrl);
}
@Override
@ -93,16 +77,7 @@ public class SciPublicPersonalProfilePropertyForm
(SciPublicPersonalProfile) super.
initBasicWidgets(fse);
data.put(SciPublicPersonalProfile.PROFILE_URL, profile.getProfileUrl());
if ((profile.getShowPublicationList() != null)
&& profile.getShowPublicationList()) {
showPublicationList.setValue(state, new String[]{
SHOW_PUBLICATION_LIST});
}
if ((profile.getShowProjectList() != null)
&& profile.getShowProjectList()) {
showProjectList.setValue(state, new String[]{SHOW_PROJECT_LIST});
}
data.put(SciPublicPersonalProfile.PROFILE_URL, profile.getProfileUrl());
}
@Override
@ -117,18 +92,6 @@ public class SciPublicPersonalProfilePropertyForm
&& getSaveCancelSection().getSaveButton().isSelected(state)) {
profile.setProfileUrl((String) data.get(
SciPublicPersonalProfile.PROFILE_URL));
if (showPublicationList.getValue(state) == null) {
profile.setShowPublicationList(Boolean.FALSE);
} else {
profile.setShowPublicationList(Boolean.TRUE);
}
if (showProjectList.getValue(state) == null) {
profile.setShowProjectList(Boolean.FALSE);
} else {
profile.setShowProjectList(Boolean.TRUE);
}
profile.save();
}

View File

@ -1,5 +1,2 @@
# To change this template, choose Tools | Templates
# and open the template in the editor.
scipublicpersonalprofile.ui.profile.basic_properties=Basic properties
scipublicpersonalprofile.ui.profile.edit_basic_properties=Edit basic properties