diff --git a/ccm-cms-types-member/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/Member.xml b/ccm-cms-types-member/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/Member.xml
new file mode 100644
index 000000000..961f0617c
--- /dev/null
+++ b/ccm-cms-types-member/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/Member.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ccm-cms-types-member/src/com/arsdigita/cms/contenttypes/MemberInitializer.java b/ccm-cms-types-member/src/com/arsdigita/cms/contenttypes/MemberInitializer.java
index 7cea40516..9c1cbfba5 100644
--- a/ccm-cms-types-member/src/com/arsdigita/cms/contenttypes/MemberInitializer.java
+++ b/ccm-cms-types-member/src/com/arsdigita/cms/contenttypes/MemberInitializer.java
@@ -42,4 +42,9 @@ public class MemberInitializer extends ContentTypeInitializer {
public String[] getStylesheets() {
return new String[]{"/static/content-types/com/arsdigita/cms/contenttypes/Member.xsl"};
}
+
+ @Override
+ public String getTraversalXML() {
+ return "/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/Member.xml";
+ }
}
diff --git a/ccm-cms-types-person/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/Person.xml b/ccm-cms-types-person/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/Person.xml
new file mode 100644
index 000000000..a051d31c6
--- /dev/null
+++ b/ccm-cms-types-person/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/Person.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/PersonInitializer.java b/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/PersonInitializer.java
index 6d154a264..8651469da 100644
--- a/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/PersonInitializer.java
+++ b/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/PersonInitializer.java
@@ -43,4 +43,9 @@ public class PersonInitializer extends ContentTypeInitializer {
public String[] getStylesheets() {
return new String[]{"/static/content-types/com/arsdigita/cms/contenttypes/Person.xsl"};
}
+
+ @Override
+ public String getTraversalXML() {
+ return "/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/Person.xml";
+ }
}
diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericPerson.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericPerson.java
index b3031ec16..149816fd1 100644
--- a/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericPerson.java
+++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericPerson.java
@@ -36,7 +36,8 @@ import java.util.Date;
* @author Sören Bernstein
* @author Jens Pelzetter
*/
-public class GenericPerson extends ContentPage implements RelationAttributeInterface {
+public class GenericPerson extends ContentPage implements
+ RelationAttributeInterface {
public static final String PERSON = "person";
public static final String SURNAME = "surname";
@@ -48,12 +49,11 @@ public class GenericPerson extends ContentPage implements RelationAttributeInter
public static final String CONTACTS = "contacts";
public static final String CONTACTS_KEY = "link_key";
public static final String CONTACTS_ORDER = "link_order";
-
- private static final String RELATION_ATTRIBUTES = "contacts.link_key:GenericContactType";
-
+ private static final String RELATION_ATTRIBUTES =
+ "contacts.link_key:GenericContactType";
/** Data object type for this domain object */
public static final String BASE_DATA_OBJECT_TYPE =
- "com.arsdigita.cms.contenttypes.GenericPerson";
+ "com.arsdigita.cms.contenttypes.GenericPerson";
/**
* Default constructor. This creates a new (empty) GenericPerson.
@@ -163,7 +163,12 @@ public class GenericPerson extends ContentPage implements RelationAttributeInter
surname = "";
}
- return String.format("%s %s %s %s", titlePre, givenName, surname, titlePost).trim();
+ if (titlePost.trim().isEmpty()) {
+ return String.format("%s %s %s", titlePre, givenName, surname).trim();
+ } else {
+ return String.format("%s %s %s, %s", titlePre, givenName, surname,
+ titlePost).trim();
+ }
}
private void updateNameAndTitle() {
@@ -171,7 +176,8 @@ public class GenericPerson extends ContentPage implements RelationAttributeInter
String fullname = getFullName();
if (fullname != null && !fullname.isEmpty()) {
setTitle(fullname);
- setName(GenericPerson.urlSave(String.format("%s %s", getSurname(), getGivenName())));
+ setName(GenericPerson.urlSave(String.format("%s %s", getSurname(),
+ getGivenName())));
}
}
@@ -207,7 +213,8 @@ public class GenericPerson extends ContentPage implements RelationAttributeInter
if (in != null && !in.isEmpty()) {
// Replacement map
- String[][] replacements = {{"ä", "ae"}, {"Ä", "Ae"}, {"ö", "oe"}, {"Ö", "Oe"}, {"ü", "ue"}, {"Ü", "Ue"}, {"ß", "ss"}, {".", ""}};
+ String[][] replacements = {{"ä", "ae"}, {"Ä", "Ae"}, {"ö", "oe"}, {
+ "Ö", "Oe"}, {"ü", "ue"}, {"Ü", "Ue"}, {"ß", "ss"}, {".", ""}};
// Replace all spaces with dash
String out = in.replace(" ", "-");
@@ -233,9 +240,9 @@ public class GenericPerson extends ContentPage implements RelationAttributeInter
@Override
public boolean hasRelationAttributeProperty(String propertyName) {
StringTokenizer strTok = new StringTokenizer(RELATION_ATTRIBUTES, ";");
- while(strTok.hasMoreTokens()) {
+ while (strTok.hasMoreTokens()) {
String token = strTok.nextToken();
- if(token.startsWith(propertyName + ".")) {
+ if (token.startsWith(propertyName + ".")) {
return true;
}
}
@@ -250,10 +257,11 @@ public class GenericPerson extends ContentPage implements RelationAttributeInter
@Override
public String getRelationAttributeKeyName(String propertyName) {
StringTokenizer strTok = new StringTokenizer(RELATION_ATTRIBUTES, ";");
- while(strTok.hasMoreTokens()) {
+ while (strTok.hasMoreTokens()) {
String token = strTok.nextToken();
- if(token.startsWith(propertyName + ".")) {
- return token.substring(token.indexOf(".") + 1, token.indexOf(":"));
+ if (token.startsWith(propertyName + ".")) {
+ return token.substring(token.indexOf(".") + 1,
+ token.indexOf(":"));
}
}
return null;
@@ -262,9 +270,9 @@ public class GenericPerson extends ContentPage implements RelationAttributeInter
@Override
public String getRelationAttributeName(String propertyName) {
StringTokenizer strTok = new StringTokenizer(RELATION_ATTRIBUTES, ";");
- while(strTok.hasMoreTokens()) {
+ while (strTok.hasMoreTokens()) {
String token = strTok.nextToken();
- if(token.startsWith(propertyName + ".")) {
+ if (token.startsWith(propertyName + ".")) {
return token.substring(token.indexOf(":") + 1);
}
}
@@ -275,5 +283,4 @@ public class GenericPerson extends ContentPage implements RelationAttributeInter
public String getRelationAttributeKey(String propertyName) {
return null;
}
-
-}
\ No newline at end of file
+}
diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitPersonAddForm.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitPersonAddForm.java
index d4e087c2e..c8db32841 100644
--- a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitPersonAddForm.java
+++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitPersonAddForm.java
@@ -139,8 +139,8 @@ public class GenericOrganizationalUnitPersonAddForm
status = selector.getSelectedPersonStatus();
if (person == null) {
- //m_itemSearch.setVisible(state, true);
- //selectedPersonNameLabel.setVisible(state, false);
+ m_itemSearch.setVisible(state, true);
+ selectedPersonNameLabel.setVisible(state, false);
} else {
data.put(ITEM_SEARCH, person);
data.put(GenericOrganizationalUnitPersonCollection.PERSON_ROLE,
@@ -148,9 +148,9 @@ public class GenericOrganizationalUnitPersonAddForm
data.put(GenericOrganizationalUnitPersonCollection.STATUS,
status);
- //m_itemSearch.setVisible(state, false);
- //selectedPersonNameLabel.setVisible(state, true);
- //selectedPersonNameLabel.setLabel(person.getFullName(), state);
+ m_itemSearch.setVisible(state, false);
+ selectedPersonNameLabel.setVisible(state, true);
+ selectedPersonNameLabel.setLabel(person.getFullName(), state);
}
setVisible(state, true);
diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericPersonCreate.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericPersonCreate.java
index ab574a557..0be5f6b8b 100644
--- a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericPersonCreate.java
+++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericPersonCreate.java
@@ -38,7 +38,8 @@ public class GenericPersonCreate extends PageCreate {
private static final String TITLEPRE = GenericPerson.TITLEPRE;
private static final String TITLEPOST = GenericPerson.TITLEPOST;
- public GenericPersonCreate(final ItemSelectionModel itemModel, final CreationSelector parent) {
+ public GenericPersonCreate(final ItemSelectionModel itemModel,
+ final CreationSelector parent) {
super(itemModel, parent);
}
@@ -47,7 +48,8 @@ public class GenericPersonCreate extends PageCreate {
ContentType type = getItemSelectionModel().getContentType();
m_workflowSection = new ApplyWorkflowFormSection(type);
add(m_workflowSection, ColumnPanel.INSERT);
- add(new Label(GlobalizationUtil.globalize("cms.ui.authoring.content_type")));
+ add(new Label(GlobalizationUtil.globalize(
+ "cms.ui.authoring.content_type")));
add(new Label(type.getLabel()));
add(new Label(GlobalizationUtil.globalize("cms.ui.language.field")));
add(new LanguageWidget(LANGUAGE));
@@ -56,11 +58,14 @@ public class GenericPersonCreate extends PageCreate {
GenericPersonPropertyForm.mandatoryFieldWidgets(this);
if (!ContentSection.getConfig().getHideLaunchDate()) {
- add(new Label(GlobalizationUtil.globalize("cms.ui.authoring.page_launch_date")));
+ add(new Label(GlobalizationUtil.globalize(
+ "cms.ui.authoring.page_launch_date")));
ParameterModel launchDateParam = new DateParameter(LAUNCH_DATE);
- com.arsdigita.bebop.form.Date launchDate = new com.arsdigita.bebop.form.Date(launchDateParam);
+ com.arsdigita.bebop.form.Date launchDate = new com.arsdigita.bebop.form.Date(
+ launchDateParam);
if (ContentSection.getConfig().getRequireLaunchDate()) {
- launchDate.addValidationListener(new LaunchDateValidationListener());
+ launchDate.addValidationListener(
+ new LaunchDateValidationListener());
// if launch date is required, help user by suggesting today's date
launchDateParam.setDefaultValue(new Date());
}
@@ -133,7 +138,11 @@ public class GenericPersonCreate extends PageCreate {
surname = "";
}
- return String.format("%s %s %s %s", titlePre, givenName, surname, titlePost).trim();
+ if (titlePost.trim().isEmpty()) {
+ return String.format("%s %s %s", titlePre, givenName, surname).trim();
+ } else {
+ return String.format("%s %s %s, %s", titlePre, givenName, surname,
+ titlePost).trim();
+ }
}
-
}
diff --git a/ccm-sci-publications/pdl/com/arsdigita/content-types/Journal.pdl b/ccm-sci-publications/pdl/com/arsdigita/content-types/Journal.pdl
index 94c176e70..e16b937ff 100644
--- a/ccm-sci-publications/pdl/com/arsdigita/content-types/Journal.pdl
+++ b/ccm-sci-publications/pdl/com/arsdigita/content-types/Journal.pdl
@@ -25,6 +25,7 @@ import com.arsdigita.cms.ContentPage;
//PDL definition for a journal
object type Journal extends Publication {
+ Integer[0..1] lastYear = ct_journal.lastyear INTEGER;
String[0..1] issn = ct_journal.issn VARCHAR(9);
reference key (ct_journal.journal_id);
diff --git a/ccm-sci-publications/pdl/com/arsdigita/content-types/Series.pdl b/ccm-sci-publications/pdl/com/arsdigita/content-types/Series.pdl
index cb9ce8a21..62e427f5a 100644
--- a/ccm-sci-publications/pdl/com/arsdigita/content-types/Series.pdl
+++ b/ccm-sci-publications/pdl/com/arsdigita/content-types/Series.pdl
@@ -27,6 +27,8 @@ object type Series extends ContentPage {
reference key (ct_series.series_id);
+ String[0..1] abstract = ct_series.abstract VARCHAR(4096);
+
}
//Assoication for the editship of a series
diff --git a/ccm-sci-publications/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/CollectedVolume.xml b/ccm-sci-publications/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/CollectedVolume.xml
index 12e202a98..ba60fa874 100644
--- a/ccm-sci-publications/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/CollectedVolume.xml
+++ b/ccm-sci-publications/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/CollectedVolume.xml
@@ -11,6 +11,7 @@
+
diff --git a/ccm-sci-publications/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/GreyLiterature.xml b/ccm-sci-publications/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/GreyLiterature.xml
new file mode 100644
index 000000000..ba9a2c8bc
--- /dev/null
+++ b/ccm-sci-publications/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/GreyLiterature.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ExpertiseInitializer.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ExpertiseInitializer.java
index 3625a8784..f7c1ec950 100644
--- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ExpertiseInitializer.java
+++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ExpertiseInitializer.java
@@ -42,7 +42,7 @@ public class ExpertiseInitializer extends ContentTypeInitializer {
@Override
public String getTraversalXML() {
- return "/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/Publication.xml";
+ return "/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/Expertise.xml";
}
}
diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/GreyLiteratureInitializer.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/GreyLiteratureInitializer.java
index 2e16d6924..0c13d6080 100644
--- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/GreyLiteratureInitializer.java
+++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/GreyLiteratureInitializer.java
@@ -42,7 +42,7 @@ public class GreyLiteratureInitializer extends ContentTypeInitializer {
@Override
public String getTraversalXML() {
- return "/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/Publication.xml";
+ return "/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/GreyLiterature.xml";
}
}
diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Journal.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Journal.java
index 7be6a32de..70629847e 100644
--- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Journal.java
+++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Journal.java
@@ -33,6 +33,7 @@ import java.math.BigDecimal;
public class Journal extends Publication {
public static final String ISSN = "issn";
+ public static final String LAST_YEAR = "lastYear";
public static final String ARTICLES = "articles";
public static final String ARTICLE_ORDER = "articleOrder";
public static final String BASE_DATA_OBJECT_TYPE =
@@ -66,6 +67,14 @@ public class Journal extends Publication {
set(ISSN, issn);
}
+ public Integer getLastYear() {
+ return (Integer) get(LAST_YEAR);
+ }
+
+ public void setLastYear(Integer lastYear) {
+ set(LAST_YEAR, lastYear);
+ }
+
public ArticleInJournalCollection getArticles() {
return new ArticleInJournalCollection((DataCollection) get(ARTICLES));
}
diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Series.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Series.java
index 54c267808..d04911002 100644
--- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Series.java
+++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Series.java
@@ -39,6 +39,7 @@ public class Series extends ContentPage {
public static final String EDITOR_ORDER = "editor_order";
public static final String PUBLICATIONS = "publications";
public static final String VOLUME_OF_SERIES = "volumeOfSeries";
+ public static final String ABSTRACT ="abstract";
public static final String BASE_DATA_OBJECT_TYPE = "com.arsdigita.cms.contenttypes.Series";
@@ -62,6 +63,14 @@ public class Series extends ContentPage {
super(type);
}
+ public String getAbstract() {
+ return (String) get(ABSTRACT);
+ }
+
+ public void setAbstract(String abstractStr) {
+ set(ABSTRACT, abstractStr);
+ }
+
public EditshipCollection getEditors() {
return new EditshipCollection((DataCollection) get(EDITORS));
}
diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticlePropertyForm.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticlePropertyForm.java
index 8d373b504..d19386bb8 100644
--- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticlePropertyForm.java
+++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticlePropertyForm.java
@@ -26,16 +26,16 @@ 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.event.ParameterEvent;
+import com.arsdigita.bebop.event.ParameterListener;
import com.arsdigita.bebop.form.TextField;
import com.arsdigita.bebop.parameters.DateParameter;
import com.arsdigita.bebop.parameters.IntegerParameter;
+import com.arsdigita.bebop.parameters.ParameterData;
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.GenericOrganizationalUnit;
import com.arsdigita.cms.contenttypes.InternetArticle;
-import com.arsdigita.cms.ui.ItemSearchWidget;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
@@ -50,7 +50,7 @@ public class InternetArticlePropertyForm
FormProcessListener,
FormSubmissionListener {
- private InternetArticlePropertiesStep m_step;
+ private InternetArticlePropertiesStep m_step;
public static final String ID = "InternetArticleEdit";
public InternetArticlePropertyForm(ItemSelectionModel itemModel) {
@@ -74,7 +74,7 @@ public class InternetArticlePropertyForm
new StringParameter(InternetArticle.PLACE);
TextField place = new TextField(placeParam);
add(place);
-
+
add(new Label((String) PublicationGlobalizationUtil.globalize(
"publications.ui.internetarticle.number").localize()));
ParameterModel numberParam =
@@ -102,6 +102,34 @@ public class InternetArticlePropertyForm
new StringParameter(InternetArticle.ISSN);
TextField issn = new TextField(issnParam);
issn.setMaxLength(9);
+ issn.addValidationListener(new ParameterListener() {
+
+ public void validate(ParameterEvent event) throws
+ FormProcessException {
+ ParameterData data = event.getParameterData();
+ String value = (String) data.getValue();
+
+ if(value.isEmpty()) {
+ return;
+ }
+
+ value = value.replace("-", "");
+
+ if (value.length() != 8) {
+ data.invalidate();
+ data.addError(PublicationGlobalizationUtil.globalize(
+ "publications.ui.invalid_issn"));
+ }
+
+ try {
+ Long num = Long.parseLong(value);
+ } catch (NumberFormatException ex) {
+ data.invalidate();
+ data.addError(PublicationGlobalizationUtil.globalize(
+ "publications.ui.invalid_issn"));
+ }
+ }
+ });
add(issn);
Calendar today = new GregorianCalendar();
@@ -124,7 +152,7 @@ public class InternetArticlePropertyForm
FormData data = fse.getFormData();
InternetArticle article = (InternetArticle) initBasicWidgets(fse);
- data.put(InternetArticle.PLACE, article.getPlace());
+ data.put(InternetArticle.PLACE, article.getPlace());
data.put(InternetArticle.NUMBER, article.getNumber());
data.put(InternetArticle.NUMBER_OF_PAGES, article.getNumberOfPages());
data.put(InternetArticle.EDITION, article.getEdition());
@@ -142,12 +170,14 @@ public class InternetArticlePropertyForm
if ((article != null) && getSaveCancelSection().getSaveButton().
isSelected(fse.getPageState())) {
- article.setPlace((String) data.get(InternetArticle.PLACE));
+ article.setPlace((String) data.get(InternetArticle.PLACE));
article.setNumber((String) data.get(InternetArticle.NUMBER));
article.setNumberOfPages(
(Integer) data.get(InternetArticle.NUMBER_OF_PAGES));
article.setEdition((String) data.get(InternetArticle.EDITION));
- article.setISSN((String) data.get(InternetArticle.ISSN));
+ String issn = (String) data.get(InternetArticle.ISSN);
+ issn = issn.replace("-", "");
+ article.setISSN(issn);
article.setLastAccessed(
(Date) data.get(InternetArticle.LAST_ACCESSED));
diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/JournalPropertiesStep.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/JournalPropertiesStep.java
index 036468194..b0c4bfa3b 100644
--- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/JournalPropertiesStep.java
+++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/JournalPropertiesStep.java
@@ -46,9 +46,13 @@ public class JournalPropertiesStep extends PublicationPropertiesStep {
DomainObjectPropertySheet sheet = (DomainObjectPropertySheet) PublicationPropertiesStep.
getPublicationPropertySheet(itemModel);
- sheet.add(PublicationGlobalizationUtil.globalize(
+ sheet.add(PublicationGlobalizationUtil.globalize(
"publications.ui.journal.issn"),
- Journal.ISSN);
+ Journal.ISSN);
+
+ sheet.add(PublicationGlobalizationUtil.globalize(
+ "publications.ui.journal.lastYearOfPublication"),
+ Journal.LAST_YEAR);
return sheet;
}
diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/JournalPropertyForm.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/JournalPropertyForm.java
index c40f633a7..ea69d219a 100644
--- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/JournalPropertyForm.java
+++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/JournalPropertyForm.java
@@ -26,7 +26,11 @@ 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.event.ParameterEvent;
+import com.arsdigita.bebop.event.ParameterListener;
import com.arsdigita.bebop.form.TextField;
+import com.arsdigita.bebop.parameters.IntegerParameter;
+import com.arsdigita.bebop.parameters.ParameterData;
import com.arsdigita.bebop.parameters.ParameterModel;
import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.cms.ItemSelectionModel;
@@ -67,7 +71,40 @@ public class JournalPropertyForm
"publications.ui.journal.issn").localize()));
ParameterModel issnParam = new StringParameter(Journal.ISSN);
TextField issn = new TextField(issnParam);
+ issn.addValidationListener(new ParameterListener() {
+
+ public void validate(ParameterEvent event) throws
+ FormProcessException {
+ ParameterData data = event.getParameterData();
+ String value = (String) data.getValue();
+
+ if (value.isEmpty()) {
+ return;
+ }
+
+ value = value.replace("-", "");
+
+ if (value.length() != 8) {
+ data.invalidate();
+ data.addError(PublicationGlobalizationUtil.globalize(
+ "publications.ui.invalid_issn"));
+ }
+
+ try {
+ Long num = Long.parseLong(value);
+ } catch (NumberFormatException ex) {
+ data.invalidate();
+ data.addError(PublicationGlobalizationUtil.globalize(
+ "publications.ui.invalid_issn"));
+ }
+ }
+ });
add(issn);
+
+ add(new Label((String) PublicationGlobalizationUtil.globalize("publications.ui.journal.lastYearOfPublication").localize()));
+ ParameterModel lastYearParam = new IntegerParameter(Journal.LAST_YEAR);
+ TextField lastYear = new TextField(lastYearParam);
+ add(lastYear);
}
@Override
@@ -78,6 +115,7 @@ public class JournalPropertyForm
Journal journal = (Journal) super.initBasicWidgets(fse);
data.put(Journal.ISSN, journal.getISSN());
+ data.put(Journal.LAST_YEAR, journal.getLastYear());
}
@Override
@@ -89,9 +127,15 @@ public class JournalPropertyForm
if ((journal != null) && getSaveCancelSection().getSaveButton().
isSelected(fse.getPageState())) {
- journal.setISSN((String) data.get(Journal.ISSN));
- journal.save();;
+ String issn = (String) data.get(Journal.ISSN);
+ issn = issn.replace("-", "");
+ journal.setISSN(issn);
+
+ Integer lastYear = (Integer) data.get(Journal.LAST_YEAR);
+ journal.setLastYear(lastYear);
+
+ journal.save();
}
}
}
diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/MonographPropertyForm.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/MonographPropertyForm.java
index 8e1643f1a..015c17189 100644
--- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/MonographPropertyForm.java
+++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/MonographPropertyForm.java
@@ -46,7 +46,6 @@ public class MonographPropertyForm
private static final String REVIEWED = "reviewed";
private MonographPropertiesStep m_step;
public static final String ID = "MonographEdit";
-
private CheckboxGroup reviewed;
public MonographPropertyForm(ItemSelectionModel itemModel) {
@@ -63,12 +62,12 @@ public class MonographPropertyForm
@Override
protected void addWidgets() {
super.addWidgets();
-
-/* add(new Label(PublicationGlobalizationUtil.globalize(
- "publications.ui.monograph.reviewed")));
+
+ /*add(new Label(PublicationGlobalizationUtil.globalize(
+ "publications.ui.monograph.reviewed")));
reviewed = new CheckboxGroup("reviewedGroup");
reviewed.addOption(new Option(REVIEWED, ""));
- add(reviewed);*/
+ add(reviewed); */
}
@Override
@@ -78,10 +77,13 @@ public class MonographPropertyForm
FormData data = fse.getFormData();
Monograph monograph = (Monograph) super.initBasicWidgets(fse);
- if ((monograph.getReviewed() != null) && (monograph.getReviewed())) {
- reviewed.setValue(fse.getPageState(), new String[]{REVIEWED});
- } else {
- reviewed.setValue(fse.getPageState(), null);
+ if (reviewed != null) {
+ if ((monograph.getReviewed() != null)
+ && (monograph.getReviewed())) {
+ reviewed.setValue(fse.getPageState(), new String[]{REVIEWED});
+ } else {
+ reviewed.setValue(fse.getPageState(), null);
+ }
}
}
@@ -94,15 +96,15 @@ public class MonographPropertyForm
if ((monograph != null) && getSaveCancelSection().getSaveButton().
isSelected(fse.getPageState())) {
- if (reviewed.getValue(fse.getPageState()) == null) {
- monograph.setReviewed(false);
- } else {
- monograph.setReviewed(true);
+ if (reviewed != null) {
+ if (reviewed.getValue(fse.getPageState()) == null) {
+ monograph.setReviewed(false);
+ } else {
+ monograph.setReviewed(true);
+ }
}
-
+
monograph.save();
}
}
-
-
}
diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationPropertiesStep.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationPropertiesStep.java
index 5b95788b9..7b6a43213 100644
--- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationPropertiesStep.java
+++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationPropertiesStep.java
@@ -146,7 +146,7 @@ public class PublicationPropertiesStep extends SimpleEditStep {
step);
}
- private static class PreFormattedTextFormatter
+ protected static class PreFormattedTextFormatter
extends DomainService
implements DomainObjectPropertySheet.AttributeFormatter {
diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationResources.properties b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationResources.properties
index e1d12c7bc..91529e7e4 100644
--- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationResources.properties
+++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationResources.properties
@@ -301,4 +301,8 @@ publication.ui.internetarticle.organization.remove=Remove
publications.ui.monograph.reviewed=Reviewed
publications.ui.monograph.reviewed.yes=Yes
publications.ui.monograph.reviewed.no=No
-publications.ui.internetarticle.lastAccessed=
+publications.ui.internetarticle.lastAccessed=Date of last access
+publications.ui.invalid_isbn=The ISBN entered is invalid
+publications.ui.invalid_issn=The ISSN entered is invalid
+publications.ui.journal.lastYearOfPublication=Last year of publication
+publications.ui.series.abstract=Description
diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationResources_de.properties b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationResources_de.properties
index fa8534806..2d8a1ece0 100644
--- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationResources_de.properties
+++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationResources_de.properties
@@ -301,3 +301,7 @@ publications.ui.monograph.reviewed=Begutachtet
publications.ui.monograph.reviewed.yes=Ja
publications.ui.monograph.reviewed.no=Nein
publications.ui.internetarticle.lastAccessed=Letztes Zugriffsdatum
+publications.ui.invalid_isbn=Die eingegebene ISBN ist fehlerhaft.
+publications.ui.invalid_issn=Die eingegebene ISSN ist fehlerhaft.
+publications.ui.journal.lastYearOfPublication=Letztes Jahr der Ver\u00f6ffentlichung
+publications.ui.series.abstract=Beschreibung
diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherPropertyForm.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherPropertyForm.java
index 3dd1a328f..0baa3f5a1 100644
--- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherPropertyForm.java
+++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherPropertyForm.java
@@ -26,8 +26,11 @@ 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.event.ParameterEvent;
+import com.arsdigita.bebop.event.ParameterListener;
import com.arsdigita.bebop.form.TextField;
import com.arsdigita.bebop.parameters.IntegerParameter;
+import com.arsdigita.bebop.parameters.ParameterData;
import com.arsdigita.bebop.parameters.ParameterModel;
import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.cms.ContentType;
@@ -70,13 +73,41 @@ public class PublicationWithPublisherPropertyForm
@Override
protected void addWidgets() {
super.addWidgets();
-
+
add(new Label((String) PublicationGlobalizationUtil.globalize(
"publications.ui.with_publisher.isbn").localize()));
ParameterModel isbnParam = new StringParameter(
PublicationWithPublisher.ISBN);
TextField isbn = new TextField(isbnParam);
isbn.setMaxLength(17);
+ isbn.addValidationListener(new ParameterListener() {
+
+ public void validate(ParameterEvent event)
+ throws FormProcessException {
+ ParameterData data = event.getParameterData();
+ String value = (String) data.getValue();
+
+ if (value.isEmpty()) {
+ return;
+ }
+
+ value = value.replace("-", "");
+
+ if (value.length() != 13) {
+ data.invalidate();
+ data.addError(PublicationGlobalizationUtil.globalize(
+ "publications.ui.invalid_isbn"));
+ }
+
+ try {
+ Long num = Long.parseLong(value);
+ } catch (NumberFormatException ex) {
+ data.invalidate();
+ data.addError(PublicationGlobalizationUtil.globalize(
+ "publications.ui.invalid_isbn"));
+ }
+ }
+ });
add(isbn);
add(new Label((String) PublicationGlobalizationUtil.globalize(
@@ -121,7 +152,7 @@ public class PublicationWithPublisherPropertyForm
PublicationWithPublisher publication =
(PublicationWithPublisher) super.
initBasicWidgets(fse);
-
+
data.put(PublicationWithPublisher.ISBN, publication.getISBN());
data.put(PublicationWithPublisher.VOLUME, publication.getVolume());
data.put(PublicationWithPublisher.NUMBER_OF_VOLUMES,
@@ -142,8 +173,10 @@ public class PublicationWithPublisherPropertyForm
processBasicWidgets(fse);
if ((publication != null) && getSaveCancelSection().getSaveButton().
- isSelected(fse.getPageState())) {
- publication.setISBN((String) data.get(PublicationWithPublisher.ISBN));
+ isSelected(fse.getPageState())) {
+ String isbn = (String) data.get(PublicationWithPublisher.ISBN);
+ isbn = isbn.replace("-", "");
+ publication.setISBN(isbn);
publication.setVolume((Integer) data.get(
PublicationWithPublisher.VOLUME));
diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/SeriesPropertiesStep.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/SeriesPropertiesStep.java
index 09c2b40d6..00f1546d4 100644
--- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/SeriesPropertiesStep.java
+++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/SeriesPropertiesStep.java
@@ -69,6 +69,10 @@ public class SeriesPropertiesStep extends SimpleEditStep {
sheet.add(PublicationGlobalizationUtil.globalize(
"publications.ui.series.title"),
Series.TITLE);
+ sheet.add(PublicationGlobalizationUtil.globalize(
+ "publications.ui.series.abstract"),
+ Series.ABSTRACT,
+ new PublicationPropertiesStep.PreFormattedTextFormatter());
if (!ContentSection.getConfig().getHideLaunchDate()) {
diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/SeriesPropertyForm.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/SeriesPropertyForm.java
index d74c62d77..6e130b6a5 100644
--- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/SeriesPropertyForm.java
+++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/SeriesPropertyForm.java
@@ -21,10 +21,15 @@ 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.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.TextArea;
+import com.arsdigita.bebop.form.TextField;
+import com.arsdigita.bebop.parameters.ParameterModel;
+import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.Series;
import com.arsdigita.cms.ui.authoring.BasicPageForm;
@@ -60,11 +65,13 @@ public class SeriesPropertyForm
protected void addWidgets() {
super.addWidgets();
- /*add(new Label((String) PublicationGlobalizationUtil.globalize(
- "publications.ui.series.title").localize()));
- ParameterModel titleParam = new StringParameter(Series.NAME);
- TextField title = new TextField(titleParam);
- add(title);*/
+ add(new Label((String) PublicationGlobalizationUtil.globalize(
+ "publications.ui.series.abstract").localize()));
+ ParameterModel abstractParam = new StringParameter(Series.ABSTRACT);
+ TextArea abstractArea = new TextArea(abstractParam);
+ abstractArea.setCols(60);
+ abstractArea.setRows(18);
+ add(abstractArea);
}
@Override
@@ -72,7 +79,7 @@ public class SeriesPropertyForm
FormData data = fse.getFormData();
Series series = (Series) super.initBasicWidgets(fse);
- //data.put(Series.NAME, series.getTitle());
+ data.put(Series.ABSTRACT, series.getAbstract());
}
@Override
@@ -82,9 +89,9 @@ public class SeriesPropertyForm
if ((series != null) && getSaveCancelSection().getSaveButton().
isSelected(fse.getPageState())) {
- /*series.setTitle((String) data.get(Series.NAME));
+ series.setAbstract((String) data.get(Series.ABSTRACT));
- series.save();*/
+ series.save();
}
}
diff --git a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/SciPublicationsServlet.java b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/SciPublicationsServlet.java
index ee48dadcd..5e0fe5d80 100644
--- a/ccm-sci-publications/src/com/arsdigita/cms/scipublications/SciPublicationsServlet.java
+++ b/ccm-sci-publications/src/com/arsdigita/cms/scipublications/SciPublicationsServlet.java
@@ -33,6 +33,7 @@ import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.kernel.ACSObject;
+import com.arsdigita.persistence.OID;
import com.arsdigita.templating.PresentationManager;
import com.arsdigita.templating.Templating;
import com.arsdigita.web.Application;
diff --git a/ccm-sci-types-organization/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/SciMember.xml b/ccm-sci-types-organization/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/SciMember.xml
index bdf1c9e92..80d604575 100644
--- a/ccm-sci-types-organization/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/SciMember.xml
+++ b/ccm-sci-types-organization/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/SciMember.xml
@@ -8,12 +8,17 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciMember.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciMember.java
index 35411356b..0ab307cb7 100644
--- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciMember.java
+++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciMember.java
@@ -20,8 +20,10 @@
package com.arsdigita.cms.contenttypes;
import com.arsdigita.domain.DataObjectNotFoundException;
+import com.arsdigita.persistence.DataCollection;
import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID;
+import com.arsdigita.util.Assert;
import java.math.BigDecimal;
import org.apache.log4j.Logger;
@@ -37,6 +39,9 @@ public class SciMember extends GenericPerson {
private static final Logger logger = Logger.getLogger(SciMember.class);
public static final String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.cms.contenttypes.SciMember";
+ private static final String ORGANIZATIONS = "organizationalunit";
+ private static final String DEPARTMENTS = "organizationalunit";
+ private static final String PROJECTS = "organizationalunit";
private static final SciOrganizationConfig s_config =
new SciOrganizationConfig();
@@ -66,7 +71,24 @@ public class SciMember extends GenericPerson {
super(type);
}
+ public SciMemberSciOrganizationsCollection getOrganizations() {
+ return new SciMemberSciOrganizationsCollection((DataCollection) get(
+ ORGANIZATIONS));
+ }
+
+ public void addOrganization(SciOrganization organization) {
+ Assert.exists(organization, SciOrganization.class);
+
+ add(ORGANIZATIONS, organization);
+ }
+
+ public void removeOrganization(SciOrganization organization) {
+ Assert.exists(organization, SciOrganization.class);
+
+ remove(ORGANIZATIONS, organization);
+ }
+
public static SciOrganizationConfig getConfig() {
return s_config;
- }
+ }
}
diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciMemberSciOrganizationsCollection.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciMemberSciOrganizationsCollection.java
new file mode 100644
index 000000000..e3802cade
--- /dev/null
+++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciMemberSciOrganizationsCollection.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2010 Jens Pelzetter,
+ * for the Center of Social Politics of the University of Bremen
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+package com.arsdigita.cms.contenttypes;
+
+import com.arsdigita.cms.ContentType;
+import com.arsdigita.domain.DomainCollection;
+import com.arsdigita.domain.DomainObjectFactory;
+import com.arsdigita.persistence.DataCollection;
+import com.arsdigita.persistence.DataObject;
+
+/**
+ *
+ * @author Jens Pelzetter
+ * @version $Id$
+ */
+public class SciMemberSciOrganizationsCollection extends DomainCollection {
+
+ public static final String LINK_MEMBER_ROLE = "link.role_name";
+ public static final String LINK_STATUS = "link.status";
+ public static final String MEMBER_ROLE = "role_name";
+ public static final String STATUS = "status";
+
+ public SciMemberSciOrganizationsCollection(DataCollection dataCollection) {
+ super(dataCollection);
+
+ m_dataCollection.addFilter(String.format("type = %s",
+ ContentType.
+ findByAssociatedObjectType(SciOrganization.class.getName()).
+ getID().toString()));
+
+ m_dataCollection.addOrder("title");
+ }
+
+ public String getRoleName() {
+ return (String) m_dataCollection.get(LINK_MEMBER_ROLE);
+ }
+
+ public void setRoleName(String roleName) {
+ DataObject link = (DataObject) this.get("link");
+
+ link.set(MEMBER_ROLE, roleName);
+ }
+
+ public String getStatus() {
+ return (String) m_dataCollection.get(LINK_STATUS);
+ }
+
+ public void setStatus(String status) {
+ DataObject link = (DataObject) this.get("link");
+
+ link.set(STATUS, status);
+ }
+
+ public SciOrganization getOrganization() {
+ return (SciOrganization) DomainObjectFactory.newInstance(m_dataCollection.
+ getDataObject());
+ }
+
+
+}
diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentMemberStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentMemberStep.java
index a57c2552d..48b3894b4 100644
--- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentMemberStep.java
+++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentMemberStep.java
@@ -53,7 +53,7 @@ public class SciDepartmentMemberStep
BasicItemForm addMemberSheet =
new SciDepartmentMemberAddForm(itemModel,
- this);
+ this);
add(ADD_MEMBER_SHEET_NAME,
(String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.department.add_member").localize(),
@@ -71,15 +71,15 @@ public class SciDepartmentMemberStep
}
public void setSelectedPerson(final GenericPerson selectedPerson) {
- this.selectedPerson = selectedPerson;
+ this.selectedPerson = selectedPerson;
}
public String getSelectedPersonRole() {
- return selectedPersonRole;
+ return selectedPersonRole;
}
public void setSelectedPersonRole(final String selectedPersonRole) {
- this.selectedPersonRole = selectedPersonRole;
+ this.selectedPersonRole = selectedPersonRole;
}
public String getSelectedPersonStatus() {
diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciMemberPropertiesStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciMemberPropertiesStep.java
index b88cfeed9..4348063e8 100644
--- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciMemberPropertiesStep.java
+++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciMemberPropertiesStep.java
@@ -20,6 +20,8 @@
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.Component;
+import com.arsdigita.bebop.Label;
+import com.arsdigita.bebop.SegmentedPanel;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.GenericPerson;
import com.arsdigita.cms.contenttypes.SciMember;
@@ -39,21 +41,41 @@ import com.arsdigita.toolbox.ui.DomainObjectPropertySheet;
public class SciMemberPropertiesStep extends SimpleEditStep {
public static final String EDIT_SHEET_NAME = "edit";
+ private SegmentedPanel segmentedPanel;
public SciMemberPropertiesStep(ItemSelectionModel itemModel,
AuthoringKitWizard parent) {
super(itemModel, parent);
+ segmentedPanel = new SegmentedPanel();
+ setDefaultEditKey(EDIT_SHEET_NAME);
+
+ SimpleEditStep basicProperties = new SimpleEditStep(itemModel,
+ parent,
+ EDIT_SHEET_NAME);
+
BasicPageForm editSheet;
editSheet = new SciMemberPropertyForm(itemModel, this);
- add(EDIT_SHEET_NAME,
- (String) SciOrganizationGlobalizationUtil.globalize(
+ basicProperties.add(EDIT_SHEET_NAME,
+ (String) SciOrganizationGlobalizationUtil.globalize(
"sciorganization.ui.member.edit_basic_properties").localize(),
- new WorkflowLockedComponentAccess(editSheet, itemModel),
- editSheet.getSaveCancelSection().getCancelButton());
+ new WorkflowLockedComponentAccess(editSheet,
+ itemModel),
+ editSheet.getSaveCancelSection().getCancelButton());
- setDisplayComponent(getSciMemberPropertySheet(itemModel));
+ basicProperties.setDisplayComponent(getSciMemberPropertySheet(itemModel));
+ segmentedPanel.addSegment(new Label((String) SciOrganizationGlobalizationUtil.
+ globalize("scimember.ui.basic_properties").localize()),
+ basicProperties);
+
+ segmentedPanel.addSegment(new Label((String) SciOrganizationGlobalizationUtil.
+ globalize("scimember.ui.organizations").localize()),
+ new SciMemberSciOrganizationsStep(itemModel,
+ parent));
+
+
+ setDisplayComponent(segmentedPanel);
}
public static Component getSciMemberPropertySheet(
@@ -62,7 +84,7 @@ public class SciMemberPropertiesStep extends SimpleEditStep {
sheet = (DomainObjectPropertySheet) GenericPersonPropertiesStep.
getGenericPersonPropertySheet(itemModel);
-
+
return sheet;
}
}
diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciMemberSciOrganizationAddForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciMemberSciOrganizationAddForm.java
new file mode 100644
index 000000000..9aab858b8
--- /dev/null
+++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciMemberSciOrganizationAddForm.java
@@ -0,0 +1,63 @@
+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.cms.ContentType;
+import com.arsdigita.cms.ItemSelectionModel;
+import com.arsdigita.cms.contenttypes.SciMember;
+import com.arsdigita.cms.contenttypes.SciOrganization;
+import com.arsdigita.cms.ui.ItemSearchWidget;
+import com.arsdigita.cms.ui.authoring.BasicItemForm;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+public class SciMemberSciOrganizationAddForm
+ extends BasicItemForm
+ implements FormProcessListener,
+ FormInitListener {
+
+ private ItemSearchWidget itemSearch;
+ private final String ITEM_SEARCH = "sciMemberOrganization";
+
+ public SciMemberSciOrganizationAddForm(ItemSelectionModel itemModel) {
+ super("sciMemberOrganizationAddForm", itemModel);
+ }
+
+ @Override
+ protected void addWidgets() {
+ add(new Label(SciOrganizationGlobalizationUtil.globalize(
+ "scimember.ui.organization.select_organization")));
+ itemSearch = new ItemSearchWidget(ITEM_SEARCH, ContentType.
+ findByAssociatedObjectType(SciOrganization.class.getName()));
+ add(itemSearch);
+ }
+
+ @Override
+ public void init(FormSectionEvent fse) throws FormProcessException {
+ PageState state = fse.getPageState();
+
+ setVisible(state, true);
+ }
+
+ @Override
+ public void process(FormSectionEvent fse) throws FormProcessException {
+ FormData data = fse.getFormData();
+ PageState state = fse.getPageState();
+ SciMember member = (SciMember) getItemSelectionModel().getSelectedObject(
+ state);
+
+ if (this.getSaveCancelSection().getSaveButton().isSelected(state)) {
+ member.addOrganization((SciOrganization) data.get(ITEM_SEARCH));
+
+ init(fse);
+ }
+
+ }
+}
diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciMemberSciOrganizationsStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciMemberSciOrganizationsStep.java
new file mode 100644
index 000000000..8af43db73
--- /dev/null
+++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciMemberSciOrganizationsStep.java
@@ -0,0 +1,58 @@
+package com.arsdigita.cms.contenttypes.ui;
+
+import com.arsdigita.bebop.PageState;
+import com.arsdigita.cms.ItemSelectionModel;
+import com.arsdigita.cms.contenttypes.SciOrganization;
+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
+ */
+public class SciMemberSciOrganizationsStep extends SimpleEditStep {
+
+ private String MEMBER_ADD_ORGANIZATION_SHEET_NAME = "memberAddOrganization";
+ private SciOrganization selectedOrganization;
+ private String selectedOrganizationRole;
+ private String selectedOrganizationStatus;
+
+ public SciMemberSciOrganizationsStep(ItemSelectionModel itemModel,
+ AuthoringKitWizard parent) {
+ this(itemModel, parent, null);
+ }
+
+ public SciMemberSciOrganizationsStep(ItemSelectionModel itemModel,
+ AuthoringKitWizard parent,
+ String prefix) {
+ super(itemModel, parent, prefix);
+
+ BasicItemForm addOrganizationForm = new SciMemberSciOrganizationAddForm(
+ itemModel);
+ add(MEMBER_ADD_ORGANIZATION_SHEET_NAME,
+ (String) SciOrganizationGlobalizationUtil.globalize(
+ "scimember.ui.organization.add").localize(),
+ new WorkflowLockedComponentAccess(addOrganizationForm, itemModel),
+ addOrganizationForm.getSaveCancelSection().getCancelButton());
+
+ setDisplayComponent(new SciMemberSciOrganizationsTable(itemModel, this));
+ }
+
+ protected void setSelectedOrganization(SciOrganization organization) {
+ this.selectedOrganization = organization;
+ }
+
+ protected void setSelectedOrganizationRole(String role) {
+ this.selectedOrganizationRole = role;
+ }
+
+ protected void setSelectedOrganizationStatus(String status) {
+ this.selectedOrganizationStatus = status;
+ }
+
+ protected void showEditComponent(PageState state) {
+ showComponent(state, MEMBER_ADD_ORGANIZATION_SHEET_NAME);
+ }
+}
diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciMemberSciOrganizationsTable.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciMemberSciOrganizationsTable.java
new file mode 100644
index 000000000..a8e11395f
--- /dev/null
+++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciMemberSciOrganizationsTable.java
@@ -0,0 +1,331 @@
+package com.arsdigita.cms.contenttypes.ui;
+
+import com.arsdigita.bebop.Component;
+import com.arsdigita.bebop.ControlLink;
+import com.arsdigita.bebop.Label;
+import com.arsdigita.bebop.Link;
+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.CMS;
+import com.arsdigita.cms.ContentSection;
+import com.arsdigita.cms.ItemSelectionModel;
+import com.arsdigita.cms.RelationAttribute;
+import com.arsdigita.cms.RelationAttributeCollection;
+import com.arsdigita.cms.contenttypes.SciMember;
+import com.arsdigita.cms.contenttypes.SciMemberSciOrganizationsCollection;
+import com.arsdigita.cms.contenttypes.SciOrganization;
+import com.arsdigita.cms.contenttypes.util.ContenttypesGlobalizationUtil;
+import com.arsdigita.cms.dispatcher.ItemResolver;
+import com.arsdigita.cms.dispatcher.Utilities;
+import com.arsdigita.domain.DataObjectNotFoundException;
+import com.arsdigita.util.LockableImpl;
+import java.math.BigDecimal;
+import org.apache.log4j.Logger;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+public class SciMemberSciOrganizationsTable
+ extends Table
+ implements TableActionListener {
+
+ private static final Logger logger = Logger.getLogger(
+ SciMemberSciOrganizationsTable.class);
+ private final String TABLE_COL_EDIT = "table_col_edit";
+ private final String TABLE_COL_EDIT_LINK = "table_col_edit_link";
+ 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 itemModel;
+ private SciMemberSciOrganizationsStep step;
+
+ public SciMemberSciOrganizationsTable(ItemSelectionModel itemModel,
+ SciMemberSciOrganizationsStep step) {
+ super();
+ this.itemModel = itemModel;
+ this.step = step;
+
+ setEmptyView(new Label(SciOrganizationGlobalizationUtil.globalize(
+ "scimember.ui.organizations.none")));
+
+ TableColumnModel columnModel = getColumnModel();
+ columnModel.add(new TableColumn(
+ 0,
+ SciOrganizationGlobalizationUtil.globalize(
+ "scimember.ui.organization").localize(),
+ TABLE_COL_EDIT));
+ columnModel.add(new TableColumn(
+ 1,
+ SciOrganizationGlobalizationUtil.globalize(
+ "scimember.ui.organization.role").localize()));
+ columnModel.add(new TableColumn(
+ 2,
+ SciOrganizationGlobalizationUtil.globalize(
+ "scimember.ui.organization.status").localize()));
+ columnModel.add(new TableColumn(
+ 3,
+ SciOrganizationGlobalizationUtil.globalize(
+ "scimember.ui.organization.edit").localize(),
+ TABLE_COL_EDIT_LINK));
+ columnModel.add(new TableColumn(
+ 4,
+ SciOrganizationGlobalizationUtil.globalize(
+ "scimember.ui.organization.remove").localize(),
+ TABLE_COL_DEL));
+
+ setModelBuilder(
+ new SciMemberSciOrganizationsTableModelBuilder(itemModel));
+ columnModel.get(0).setCellRenderer(new EditCellRenderer());
+ columnModel.get(3).setCellRenderer(new EditLinkCellRenderer());
+ columnModel.get(4).setCellRenderer(new DeleteCellRenderer());
+
+ addTableActionListener(this);
+ }
+
+ private class SciMemberSciOrganizationsTableModelBuilder
+ extends LockableImpl
+ implements TableModelBuilder {
+
+ public SciMemberSciOrganizationsTableModelBuilder(
+ ItemSelectionModel itemModel) {
+ SciMemberSciOrganizationsTable.this.itemModel = itemModel;
+ }
+
+ @Override
+ public TableModel makeModel(Table table, PageState state) {
+ table.getRowSelectionModel().clearSelection(state);
+ SciMember member = (SciMember) itemModel.getSelectedObject(state);
+ return new SciMemberSciOrganizationsTableModel(table,
+ state,
+ member);
+ }
+ }
+
+ private class SciMemberSciOrganizationsTableModel implements TableModel {
+
+ private Table table;
+ private SciMemberSciOrganizationsCollection organizations;
+ private SciOrganization organization;
+
+ public SciMemberSciOrganizationsTableModel(Table table,
+ PageState state,
+ SciMember member) {
+ this.table = table;
+ this.organizations = member.getOrganizations();
+ }
+
+ @Override
+ public int getColumnCount() {
+ return table.getColumnModel().size();
+ }
+
+ @Override
+ public boolean nextRow() {
+ boolean ret;
+
+ if ((organizations != null) && organizations.next()) {
+ organization = organizations.getOrganization();
+ ret = true;
+ } else {
+ ret = false;
+ }
+
+ return ret;
+ }
+
+ @Override
+ public Object getElementAt(int columnIndex) {
+ switch (columnIndex) {
+ case 0:
+ return organization.getTitle();
+ case 1:
+ RelationAttributeCollection role = new RelationAttributeCollection(
+ "SciOrganizationRole",
+ organizations.getRoleName());
+ if (role.next()) {
+ String roleName = role.getName();
+ role.close();
+ return roleName;
+ } else {
+ return ContenttypesGlobalizationUtil.globalize(
+ "cms.ui.unknownRole").localize();
+ }
+ case 2:
+ RelationAttributeCollection status = new RelationAttributeCollection(
+ "SciOrganizationStatus",
+ organizations.getStatus());
+ if (status.next()) {
+ String statusName = status.getName();
+ status.close();
+ return statusName;
+ } else {
+ return ContenttypesGlobalizationUtil.globalize(
+ "cms.ui.unknownStatus").localize();
+ }
+ case 3:
+ return SciOrganizationGlobalizationUtil.globalize(
+ "scimember.ui.organizations.edit_assoc").localize();
+ case 4:
+ return SciOrganizationGlobalizationUtil.globalize(
+ "scimember.ui.organizations.remove").localize();
+ default:
+ return null;
+ }
+ }
+
+ @Override
+ public Object getKeyAt(int columnIndex) {
+ return organization.getID();
+ }
+ }
+
+ private class EditCellRenderer
+ extends LockableImpl
+ implements TableCellRenderer {
+
+ @Override
+ public Component getComponent(Table table,
+ PageState state,
+ Object value,
+ boolean isSelected,
+ Object key,
+ int row,
+ int column) {
+ com.arsdigita.cms.SecurityManager securityManager = Utilities.
+ getSecurityManager(state);
+ SciMember member = (SciMember) itemModel.getSelectedObject(state);
+
+ boolean canEdit = securityManager.canAccess(state.getRequest(),
+ com.arsdigita.cms.SecurityManager.EDIT_ITEM,
+ member);
+
+ if (canEdit) {
+ SciOrganization organization;
+ try {
+ organization = new SciOrganization((BigDecimal) key);
+ } catch (DataObjectNotFoundException ex) {
+ logger.warn(String.format("No object with key '%s' found.",
+ key),
+ ex);
+ return new Label(value.toString());
+ }
+
+ ContentSection section = CMS.getContext().getContentSection();
+ ItemResolver resolver = section.getItemResolver();
+ Link link = new Link(value.toString(),
+ resolver.generateItemURL(state,
+ organization,
+ section, organization.
+ getVersion()));
+ return link;
+ } else {
+ Label label = new Label(value.toString());
+ return label;
+ }
+ }
+ }
+
+ private class EditLinkCellRenderer
+ extends LockableImpl
+ implements TableCellRenderer {
+
+ public Component getComponent(Table table,
+ PageState state,
+ Object value,
+ boolean isSelected,
+ Object key,
+ int row,
+ int column) {
+ com.arsdigita.cms.SecurityManager securityManager =
+ Utilities.getSecurityManager(state);
+ SciMember member = (SciMember) itemModel.getSelectedObject(state);
+
+ boolean canEdit = securityManager.canAccess(state.getRequest(),
+ com.arsdigita.cms.SecurityManager.EDIT_ITEM,
+ member);
+
+ 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 {
+
+ @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);
+ SciMember member = (SciMember) itemModel.getSelectedObject(state);
+
+ boolean canEdit = securityManager.canAccess(state.getRequest(),
+ com.arsdigita.cms.SecurityManager.EDIT_ITEM,
+ member);
+
+ if (canEdit) {
+ ControlLink link = new ControlLink(value.toString());
+ link.setConfirmation((String) SciOrganizationGlobalizationUtil.
+ globalize(
+ "scimember.ui.organization."
+ + ".confirm_remove").
+ localize());
+ return link;
+ } else {
+ Label label = new Label(value.toString());
+ return label;
+ }
+ }
+ }
+
+ @Override
+ public void cellSelected(TableActionEvent event) {
+ PageState state = event.getPageState();
+
+ SciOrganization organization = new SciOrganization(new BigDecimal(event.
+ getRowKey().toString()));
+
+ SciMember member = (SciMember) itemModel.getSelectedObject(state);
+
+ SciMemberSciOrganizationsCollection organizations = member.
+ getOrganizations();
+
+ TableColumn column = getColumnModel().get(event.getColumn().intValue());
+
+ if (TABLE_COL_EDIT.equals(column.getHeaderKey().toString())) {
+ } else if(TABLE_COL_EDIT_LINK.equals(column.getHeaderKey().toString())) {
+ while(organizations.next()) {
+ if (organizations.getOrganization().equals(organization)) {
+ break;
+ }
+ }
+
+ } else if (TABLE_COL_DEL.equals(column.getHeaderKey().toString())) {
+ member.removeOrganization(organization);
+ }
+ }
+
+ @Override
+ public void headSelected(TableActionEvent event) {
+ //Nothing to do
+ }
+}
diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDepartmentsTable.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDepartmentsTable.java
index c7d22d319..385ff898b 100644
--- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDepartmentsTable.java
+++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDepartmentsTable.java
@@ -125,8 +125,7 @@ public class SciProjectDepartmentsTable
}
}
- private class SciProjectDepartmentsTableModel
- implements TableModel {
+ private class SciProjectDepartmentsTableModel implements TableModel {
private Table m_table;
private SciProjectDepartmentsCollection m_departments;
@@ -227,7 +226,6 @@ public class SciProjectDepartmentsTable
return link;
} else {
-
Label label = new Label(value.toString());
return label;
}