diff --git a/ccm-sci-bundle/web/packages/content-section/templates/default/aplaws-item.jsp b/ccm-sci-bundle/web/packages/content-section/templates/default/aplaws-item.jsp
index 461737330..017b1664e 100644
--- a/ccm-sci-bundle/web/packages/content-section/templates/default/aplaws-item.jsp
+++ b/ccm-sci-bundle/web/packages/content-section/templates/default/aplaws-item.jsp
@@ -4,8 +4,8 @@
version="1.2">
+ import="com.arsdigita.navigation.NavigationModel,
+ com.arsdigita.navigation.cms.CMSNavigationModel"/>
NavigationModel model = new CMSNavigationModel();
@@ -15,25 +15,25 @@
title="APLAWS" cache="true">
+ classname="com.arsdigita.navigation.ui.category.Path"/>
- ((com.arsdigita.london.navigation.ui.category.Path)categoryPath)
+ ((com.arsdigita.navigation.ui.category.Path)categoryPath)
.setModel(model);
+ classname="com.arsdigita.navigation.ui.category.Menu"/>
- ((com.arsdigita.london.navigation.ui.category.Menu)categoryMenu)
+ ((com.arsdigita.navigation.ui.category.Menu)categoryMenu)
.setModel(model);
+ classname="com.arsdigita.navigation.ui.RelatedItems"/>
+ classname="com.arsdigita.bundle.ui.AssignedItemTerms"/>
diff --git a/ccm-sci-publications/application.xml b/ccm-sci-publications/application.xml
index 4e73eb1c8..994b31ff5 100644
--- a/ccm-sci-publications/application.xml
+++ b/ccm-sci-publications/application.xml
@@ -2,7 +2,7 @@
diff --git a/ccm-sci-publications/pdl/com/arsdigita/content-types/InternetArticle.pdl b/ccm-sci-publications/pdl/com/arsdigita/content-types/InternetArticle.pdl
index 00d7ed1e1..e1fae6668 100644
--- a/ccm-sci-publications/pdl/com/arsdigita/content-types/InternetArticle.pdl
+++ b/ccm-sci-publications/pdl/com/arsdigita/content-types/InternetArticle.pdl
@@ -32,8 +32,10 @@ object type InternetArticle extends Publication {
String[0..1] issn = ct_internet_article.issn VARCHAR(9);
Date[0..1] lastAccessed = ct_internet_article.last_accessed DATE;
Date[0..1] publicationDate = ct_internet_article.publicationDate DATE;
-
-
+ String[0..1] url = ct_internet_article.url VARCHAR(2048);
+ String[0..1] urn = ct_internet_article.urn VARCHAR(2048);
+ String[0..1] doi = ct_internet_article.doi VARCHAR(2048);
+
reference key (ct_internet_article.internet_article_id);
}
diff --git a/ccm-sci-publications/pdl/com/arsdigita/content-types/Publication.pdl b/ccm-sci-publications/pdl/com/arsdigita/content-types/Publication.pdl
index cc035e90a..5f5c26e68 100644
--- a/ccm-sci-publications/pdl/com/arsdigita/content-types/Publication.pdl
+++ b/ccm-sci-publications/pdl/com/arsdigita/content-types/Publication.pdl
@@ -27,13 +27,19 @@ object type Publication extends ContentPage {
Integer[0..1] yearOfPublication = ct_publications.year INTEGER;
String[0..1] abstract = ct_publications.abstract VARCHAR(4096);
String[0..1] misc = ct_publications.misc VARCHAR(4096);
- //The reviewed property has been moved for performance reasons. It
+ //The reviewed property has been moved here for performance reasons. It
//is necessary to have access to this property from a data query
//over all publications of a person. Since this property was only
//available on some types, it was not possible to use joins *and*
//get publications of *all* types. But exactly this use case appears on
//several points.
- Boolean[0..1] reviewed = ct_publications.reviewed BIT ;
+ Boolean[0..1] reviewed = ct_publications.reviewed BIT;
+ //This property is for internal use only. It updated automatically when
+ //an author is added or removed. It contains a string with the names
+ //of all authors of the publications and is used for efficient queries
+ //(ordering by publications by their authors requires joins or subqueries
+ //without this field)
+ String[0..1] authorsStr = ct_publications.authors VARCHAR(2048);
reference key (ct_publications.publication_id);
}
@@ -193,10 +199,11 @@ query getPublicationsForAuthorWithAuthors {
ct_publications_authorship.person_id,
ct_publications.year,
ct_publications.reviewed,
- (select array_to_string(array (select cms_persons.surname || ', ' || cms_persons.givenname
- from cms_persons
- join ct_publications_authorship on cms_persons.person_id = ct_publications_authorship.person_id
- where ct_publications_authorship.publication_id = cms_pages.item_id), '; ')) as authors
+ ct_publications.authors
+ //(select array_to_string(array (select cms_persons.surname || ', ' || cms_persons.givenname
+ // from cms_persons
+ // join ct_publications_authorship on cms_persons.person_id = ct_publications_authorship.person_id
+ // where ct_publications_authorship.publication_id = cms_pages.item_id order by ct_publications_authorship.authorship_order), '; ')) as authors
from cms_pages
join ct_publications on cms_pages.item_id = ct_publications.publication_id
join ct_publications_authorship on ct_publications.publication_id = ct_publications_authorship.publication_id
@@ -207,7 +214,7 @@ query getPublicationsForAuthorWithAuthors {
authorId = ct_publications_authorship.person_id;
title = cms_pages.title;
year = ct_publications.year;
- authors = authors;
+ authors = ct_publications.authors;
reviewed = ct_publications.reviewed;
}
}
diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/AuthorshipCollection.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/AuthorshipCollection.java
index 072ee25c7..f4aea3b82 100644
--- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/AuthorshipCollection.java
+++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/AuthorshipCollection.java
@@ -157,6 +157,14 @@ public class AuthorshipCollection extends DomainCollection {
this.rewind();
}
+ public String getSurname() {
+ return (String) m_dataCollection.getDataObject().get(GenericPerson.SURNAME);
+ }
+
+ public String getGivenName() {
+ return (String) m_dataCollection.getDataObject().get(GenericPerson.GIVENNAME);
+ }
+
public GenericPerson getAuthor() {
return new GenericPerson(m_dataCollection.getDataObject());
}
diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticle.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticle.java
index 9bdb10878..9569f9b80 100644
--- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticle.java
+++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticle.java
@@ -42,6 +42,9 @@ public class InternetArticle extends Publication {
public static final String ISSN = "issn";
public static final String LAST_ACCESSED = "lastAccessed";
public static final String PUBLICATION_DATE = "publicationDate";
+ public static final String URL = "url";
+ public static final String URN = "urn";
+ public static final String DOI = "doi";
public static final String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.cms.contenttypes.InternetArticle";
@@ -155,4 +158,28 @@ public class InternetArticle extends Publication {
public void setPublicationDate(Date pubDate) {
set(PUBLICATION_DATE, pubDate);
}
+
+ public String getUrl() {
+ return (String) get(URL);
+ }
+
+ public void setUrl(final String url) {
+ set(URL, url);
+ }
+
+ public String getUrn() {
+ return (String) get(URN);
+ }
+
+ public void setUrn(final String urn) {
+ set(URN, urn);
+ }
+
+ public String getDoi() {
+ return (String) get(DOI);
+ }
+
+ public void setDoi(final String doi) {
+ set(DOI, doi);
+ }
}
diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Publication.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Publication.java
index d352291be..cb048e050 100644
--- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Publication.java
+++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Publication.java
@@ -69,6 +69,7 @@ public class Publication extends ContentPage {
public final static String ABSTRACT = "abstract";
public final static String MISC = "misc";
public final static String AUTHORS = "authors";
+ private final static String AUTHORS_STR = "authorsStr"; //authorsStr is an interal field only for use in data queries, and is updated automatically
public final static String EDITOR = "editor";
public final static String AUTHOR_ORDER = "authorOrder";
public final static String SERIES = "series";
@@ -195,6 +196,8 @@ public class Publication extends ContentPage {
link.set(EDITOR, editor);
link.set(AUTHOR_ORDER, Integer.valueOf((int) getAuthors().size()));
+
+ updateAuthorsStr();
}
/**
@@ -205,6 +208,32 @@ public class Publication extends ContentPage {
public void removeAuthor(final GenericPerson author) {
Assert.exists(author, GenericPerson.class);
remove(AUTHORS, author);
+
+ updateAuthorsStr();
+ }
+
+ public void swapWithPreviousAuthor(final GenericPerson author) {
+ getAuthors().swapWithPrevious(author);
+ updateAuthorsStr();
+ }
+
+ public void swapWithNextAuthor(final GenericPerson author) {
+ getAuthors().swapWithNext(author);
+ updateAuthorsStr();
+ }
+
+ protected void updateAuthorsStr() {
+ final AuthorshipCollection authors = getAuthors();
+ StringBuilder builder = new StringBuilder();
+ while(authors.next()) {
+ if (builder.length() > 0) {
+ builder.append("; ");
+ }
+ builder.append(authors.getSurname());
+ builder.append(", ");
+ builder.append(authors.getGivenName());
+ }
+ set(AUTHORS_STR, builder.toString());
}
/**
diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticlePropertiesStep.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticlePropertiesStep.java
index 80c1d1465..1bf5d5fb3 100644
--- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticlePropertiesStep.java
+++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticlePropertiesStep.java
@@ -42,32 +42,45 @@ public class InternetArticlePropertiesStep extends PublicationPropertiesStep {
public static Component getInternetArticlePropertySheet(
ItemSelectionModel itemModel) {
- DomainObjectPropertySheet sheet = (DomainObjectPropertySheet) PublicationPropertiesStep.
+ DomainObjectPropertySheet sheet =
+ (DomainObjectPropertySheet) PublicationPropertiesStep.
getPublicationPropertySheet(itemModel);
sheet.add(PublicationGlobalizationUtil.globalize(
"publications.ui.internetarticle.place"),
- InternetArticle.PLACE);
-
+ InternetArticle.PLACE);
+
sheet.add(PublicationGlobalizationUtil.globalize(
"publications.ui.internetarticle.number"),
- InternetArticle.NUMBER);
+ InternetArticle.NUMBER);
sheet.add(PublicationGlobalizationUtil.globalize(
"publications.ui.internetarticle.number_of_pages"),
- InternetArticle.NUMBER_OF_PAGES);
+ InternetArticle.NUMBER_OF_PAGES);
sheet.add(PublicationGlobalizationUtil.globalize(
"publications.ui.internetarticle.edition"),
- InternetArticle.EDITION);
+ InternetArticle.EDITION);
sheet.add(PublicationGlobalizationUtil.globalize(
"publications.ui.internetarticle.issn"),
- InternetArticle.ISSN);
+ InternetArticle.ISSN);
sheet.add(PublicationGlobalizationUtil.globalize(
"publications.ui.internetarticle.lastAccessed"),
- InternetArticle.LAST_ACCESSED);
+ InternetArticle.LAST_ACCESSED);
+
+ sheet.add(PublicationGlobalizationUtil.globalize(
+ "publications.ui.internetarticle.url"),
+ InternetArticle.URL);
+
+ sheet.add(PublicationGlobalizationUtil.globalize(
+ "publications.ui.internetarticle.urn"),
+ InternetArticle.URN);
+
+ sheet.add(PublicationGlobalizationUtil.globalize(
+ "publications.ui.internetarticle.doi"),
+ InternetArticle.DOI);
return sheet;
}
@@ -101,8 +114,8 @@ public class InternetArticlePropertiesStep extends PublicationPropertiesStep {
}
@Override
- protected void addSteps(final ItemSelectionModel itemModel,
- final AuthoringKitWizard parent) {
+ protected void addSteps(final ItemSelectionModel itemModel,
+ final AuthoringKitWizard parent) {
super.addSteps(itemModel, parent);
addStep(new InternetArticleOrganizationStep(itemModel, parent),
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 d19386bb8..e0040dbd9 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
@@ -109,7 +109,7 @@ public class InternetArticlePropertyForm
ParameterData data = event.getParameterData();
String value = (String) data.getValue();
- if(value.isEmpty()) {
+ if (value.isEmpty()) {
return;
}
@@ -143,6 +143,24 @@ public class InternetArticlePropertyForm
pubDateParam);
pubDate.setYearRange(1900, today.get(Calendar.YEAR) + 2);
add(pubDate);
+
+ add(new Label((String) PublicationGlobalizationUtil.globalize(
+ "publications.ui.internetarticle.url").localize()));
+ ParameterModel urlModel = new StringParameter(InternetArticle.URL);
+ TextField url = new TextField(urlModel);
+ add(url);
+
+ add(new Label((String) PublicationGlobalizationUtil.globalize(
+ "publications.ui.internetarticle.urn").localize()));
+ ParameterModel urnModel = new StringParameter(InternetArticle.URN);
+ TextField urn = new TextField(urnModel);
+ add(urn);
+
+ add(new Label((String) PublicationGlobalizationUtil.globalize(
+ "publications.ui.internetarticle.doi").localize()));
+ ParameterModel doiModel = new StringParameter(InternetArticle.DOI);
+ TextField doi = new TextField(doiModel);
+ add(doi);
}
@Override
@@ -159,6 +177,9 @@ public class InternetArticlePropertyForm
data.put(InternetArticle.ISSN, article.getISSN());
data.put(InternetArticle.LAST_ACCESSED,
article.getLastAccessed());
+ data.put(InternetArticle.URL, article.getUrl());
+ data.put(InternetArticle.URN, article.getUrn());
+ data.put(InternetArticle.DOI, article.getDoi());
}
@Override
@@ -180,6 +201,9 @@ public class InternetArticlePropertyForm
article.setISSN(issn);
article.setLastAccessed(
(Date) data.get(InternetArticle.LAST_ACCESSED));
+ article.setUrl((String) data.get(InternetArticle.URL));
+ article.setUrn((String) data.get(InternetArticle.URN));
+ article.setDoi((String) data.get(InternetArticle.DOI));
article.save();
}
diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationAuthorsTable.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationAuthorsTable.java
index a0c956dfc..10c12f40f 100644
--- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationAuthorsTable.java
+++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationAuthorsTable.java
@@ -435,10 +435,10 @@ public class PublicationAuthorsTable
publication.removeAuthor(author);
} else if (column.getHeaderKey().toString().equals(TABLE_COL_UP)) {
s_log.info("UP");
- authors.swapWithPrevious(author);
+ publication.swapWithPreviousAuthor(author);
} else if (column.getHeaderKey().toString().equals(TABLE_COL_DOWN)) {
s_log.info("DOWN");
- authors.swapWithNext(author);
+ publication.swapWithNextAuthor(author);
}
}
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 03d485361..a709258e1 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,7 +301,7 @@ 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=Date of last access
+publications.ui.internetarticle.lastAccessed=Date of last access/Date of last edit
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
@@ -378,3 +378,6 @@ publications.ui.orgaunits.title=Lists of publications
publications.ui.orgaunits.description=Add this publication to the list of publications of an organization(al unit)
genericorganizationalunit.ui.publications.description=List of publications
genericorganizationalunit.ui.publications.title=List of publications
+publications.ui.internetarticle.url=URL
+publications.ui.internetarticle.urn=URN
+publications.ui.internetarticle.doi=DOI
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 f244ef520..44a1405f1 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
@@ -300,7 +300,7 @@ publication.ui.internetarticle.organization.remove=Entfernen
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.internetarticle.lastAccessed=Letztes Zugriffsdatum/Datum der letzten \u00c4nderung
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
@@ -377,3 +377,6 @@ publications.ui.orgaunits.title=Publikationslisten
publications.ui.orgaunits.description=Diese Publikation der Publikationsliste einer Organisation(seinheit) hinzuf\u00fcgen
genericorganizationalunit.ui.publications.description=Publikationsliste
genericorganizationalunit.ui.publications.title=Publikationsliste
+publications.ui.internetarticle.url=URL
+publications.ui.internetarticle.urn=URN
+publications.ui.internetarticle.doi=DOI