- Ergänzungen in ccm-sci-publications, insbesondere InternetArticle (Felder für URL, URN, DOI)

- aplaws-item.jsp in ccm-sci-bundle korrigiert, enthielt noch Referenzen auf com.arsdigita.london.navigation statt auf 
  com.arsdigita.navigation


git-svn-id: https://svn.libreccm.org/ccm/trunk@1246 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2011-11-13 12:16:24 +00:00
parent d0b104fbfa
commit aae314f4d9
12 changed files with 149 additions and 33 deletions

View File

@ -4,8 +4,8 @@
version="1.2"> version="1.2">
<jsp:directive.page <jsp:directive.page
import="com.arsdigita.london.navigation.NavigationModel, import="com.arsdigita.navigation.NavigationModel,
com.arsdigita.london.navigation.cms.CMSNavigationModel"/> com.arsdigita.navigation.cms.CMSNavigationModel"/>
<jsp:declaration> <jsp:declaration>
NavigationModel model = new CMSNavigationModel(); NavigationModel model = new CMSNavigationModel();
@ -15,25 +15,25 @@
title="APLAWS" cache="true"> title="APLAWS" cache="true">
<define:component name="categoryPath" <define:component name="categoryPath"
classname="com.arsdigita.london.navigation.ui.category.Path"/> classname="com.arsdigita.navigation.ui.category.Path"/>
<jsp:scriptlet> <jsp:scriptlet>
((com.arsdigita.london.navigation.ui.category.Path)categoryPath) ((com.arsdigita.navigation.ui.category.Path)categoryPath)
.setModel(model); .setModel(model);
</jsp:scriptlet> </jsp:scriptlet>
<define:component name="categoryMenu" <define:component name="categoryMenu"
classname="com.arsdigita.london.navigation.ui.category.Menu"/> classname="com.arsdigita.navigation.ui.category.Menu"/>
<jsp:scriptlet> <jsp:scriptlet>
((com.arsdigita.london.navigation.ui.category.Menu)categoryMenu) ((com.arsdigita.navigation.ui.category.Menu)categoryMenu)
.setModel(model); .setModel(model);
</jsp:scriptlet> </jsp:scriptlet>
<define:component name="itemXML" <define:component name="itemXML"
classname="com.arsdigita.cms.dispatcher.ContentPanel"/> classname="com.arsdigita.cms.dispatcher.ContentPanel"/>
<define:component name="relatedItems" <define:component name="relatedItems"
classname="com.arsdigita.london.navigation.ui.RelatedItems"/> classname="com.arsdigita.navigation.ui.RelatedItems"/>
<define:component name="assignedTerms" <define:component name="assignedTerms"
classname="com.arsdigita.aplaws.ui.AssignedItemTerms"/> classname="com.arsdigita.bundle.ui.AssignedItemTerms"/>
</define:page> </define:page>
<show:all/> <show:all/>

View File

@ -2,7 +2,7 @@
<ccm:application xmlns:ccm="http://ccm.redhat.com/ccm-project" <ccm:application xmlns:ccm="http://ccm.redhat.com/ccm-project"
name="ccm-sci-publications" name="ccm-sci-publications"
prettyName="OpenCCM Content Types" prettyName="OpenCCM Content Types"
version="6.6.1" version="6.6.2"
release="1" release="1"
webapp="ROOT"> webapp="ROOT">
<ccm:dependencies> <ccm:dependencies>

View File

@ -32,7 +32,9 @@ object type InternetArticle extends Publication {
String[0..1] issn = ct_internet_article.issn VARCHAR(9); String[0..1] issn = ct_internet_article.issn VARCHAR(9);
Date[0..1] lastAccessed = ct_internet_article.last_accessed DATE; Date[0..1] lastAccessed = ct_internet_article.last_accessed DATE;
Date[0..1] publicationDate = ct_internet_article.publicationDate 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); reference key (ct_internet_article.internet_article_id);
} }

View File

@ -27,13 +27,19 @@ object type Publication extends ContentPage {
Integer[0..1] yearOfPublication = ct_publications.year INTEGER; Integer[0..1] yearOfPublication = ct_publications.year INTEGER;
String[0..1] abstract = ct_publications.abstract VARCHAR(4096); String[0..1] abstract = ct_publications.abstract VARCHAR(4096);
String[0..1] misc = ct_publications.misc 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 //is necessary to have access to this property from a data query
//over all publications of a person. Since this property was only //over all publications of a person. Since this property was only
//available on some types, it was not possible to use joins *and* //available on some types, it was not possible to use joins *and*
//get publications of *all* types. But exactly this use case appears on //get publications of *all* types. But exactly this use case appears on
//several points. //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); reference key (ct_publications.publication_id);
} }
@ -193,10 +199,11 @@ query getPublicationsForAuthorWithAuthors {
ct_publications_authorship.person_id, ct_publications_authorship.person_id,
ct_publications.year, ct_publications.year,
ct_publications.reviewed, ct_publications.reviewed,
(select array_to_string(array (select cms_persons.surname || ', ' || cms_persons.givenname ct_publications.authors
from cms_persons //(select array_to_string(array (select cms_persons.surname || ', ' || cms_persons.givenname
join ct_publications_authorship on cms_persons.person_id = ct_publications_authorship.person_id // from cms_persons
where ct_publications_authorship.publication_id = cms_pages.item_id), '; ')) as authors // 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 from cms_pages
join ct_publications on cms_pages.item_id = ct_publications.publication_id 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 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; authorId = ct_publications_authorship.person_id;
title = cms_pages.title; title = cms_pages.title;
year = ct_publications.year; year = ct_publications.year;
authors = authors; authors = ct_publications.authors;
reviewed = ct_publications.reviewed; reviewed = ct_publications.reviewed;
} }
} }

View File

@ -157,6 +157,14 @@ public class AuthorshipCollection extends DomainCollection {
this.rewind(); 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() { public GenericPerson getAuthor() {
return new GenericPerson(m_dataCollection.getDataObject()); return new GenericPerson(m_dataCollection.getDataObject());
} }

View File

@ -42,6 +42,9 @@ public class InternetArticle extends Publication {
public static final String ISSN = "issn"; public static final String ISSN = "issn";
public static final String LAST_ACCESSED = "lastAccessed"; public static final String LAST_ACCESSED = "lastAccessed";
public static final String PUBLICATION_DATE = "publicationDate"; 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 = public static final String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.cms.contenttypes.InternetArticle"; "com.arsdigita.cms.contenttypes.InternetArticle";
@ -155,4 +158,28 @@ public class InternetArticle extends Publication {
public void setPublicationDate(Date pubDate) { public void setPublicationDate(Date pubDate) {
set(PUBLICATION_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);
}
} }

View File

@ -69,6 +69,7 @@ public class Publication extends ContentPage {
public final static String ABSTRACT = "abstract"; public final static String ABSTRACT = "abstract";
public final static String MISC = "misc"; public final static String MISC = "misc";
public final static String AUTHORS = "authors"; 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 EDITOR = "editor";
public final static String AUTHOR_ORDER = "authorOrder"; public final static String AUTHOR_ORDER = "authorOrder";
public final static String SERIES = "series"; public final static String SERIES = "series";
@ -195,6 +196,8 @@ public class Publication extends ContentPage {
link.set(EDITOR, editor); link.set(EDITOR, editor);
link.set(AUTHOR_ORDER, Integer.valueOf((int) getAuthors().size())); 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) { public void removeAuthor(final GenericPerson author) {
Assert.exists(author, GenericPerson.class); Assert.exists(author, GenericPerson.class);
remove(AUTHORS, author); 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());
} }
/** /**

View File

@ -42,7 +42,8 @@ public class InternetArticlePropertiesStep extends PublicationPropertiesStep {
public static Component getInternetArticlePropertySheet( public static Component getInternetArticlePropertySheet(
ItemSelectionModel itemModel) { ItemSelectionModel itemModel) {
DomainObjectPropertySheet sheet = (DomainObjectPropertySheet) PublicationPropertiesStep. DomainObjectPropertySheet sheet =
(DomainObjectPropertySheet) PublicationPropertiesStep.
getPublicationPropertySheet(itemModel); getPublicationPropertySheet(itemModel);
sheet.add(PublicationGlobalizationUtil.globalize( sheet.add(PublicationGlobalizationUtil.globalize(
@ -69,6 +70,18 @@ public class InternetArticlePropertiesStep extends PublicationPropertiesStep {
"publications.ui.internetarticle.lastAccessed"), "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; return sheet;
} }

View File

@ -109,7 +109,7 @@ public class InternetArticlePropertyForm
ParameterData data = event.getParameterData(); ParameterData data = event.getParameterData();
String value = (String) data.getValue(); String value = (String) data.getValue();
if(value.isEmpty()) { if (value.isEmpty()) {
return; return;
} }
@ -143,6 +143,24 @@ public class InternetArticlePropertyForm
pubDateParam); pubDateParam);
pubDate.setYearRange(1900, today.get(Calendar.YEAR) + 2); pubDate.setYearRange(1900, today.get(Calendar.YEAR) + 2);
add(pubDate); 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 @Override
@ -159,6 +177,9 @@ public class InternetArticlePropertyForm
data.put(InternetArticle.ISSN, article.getISSN()); data.put(InternetArticle.ISSN, article.getISSN());
data.put(InternetArticle.LAST_ACCESSED, data.put(InternetArticle.LAST_ACCESSED,
article.getLastAccessed()); article.getLastAccessed());
data.put(InternetArticle.URL, article.getUrl());
data.put(InternetArticle.URN, article.getUrn());
data.put(InternetArticle.DOI, article.getDoi());
} }
@Override @Override
@ -180,6 +201,9 @@ public class InternetArticlePropertyForm
article.setISSN(issn); article.setISSN(issn);
article.setLastAccessed( article.setLastAccessed(
(Date) data.get(InternetArticle.LAST_ACCESSED)); (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(); article.save();
} }

View File

@ -435,10 +435,10 @@ public class PublicationAuthorsTable
publication.removeAuthor(author); publication.removeAuthor(author);
} else if (column.getHeaderKey().toString().equals(TABLE_COL_UP)) { } else if (column.getHeaderKey().toString().equals(TABLE_COL_UP)) {
s_log.info("UP"); s_log.info("UP");
authors.swapWithPrevious(author); publication.swapWithPreviousAuthor(author);
} else if (column.getHeaderKey().toString().equals(TABLE_COL_DOWN)) { } else if (column.getHeaderKey().toString().equals(TABLE_COL_DOWN)) {
s_log.info("DOWN"); s_log.info("DOWN");
authors.swapWithNext(author); publication.swapWithNextAuthor(author);
} }
} }

View File

@ -301,7 +301,7 @@ publication.ui.internetarticle.organization.remove=Remove
publications.ui.monograph.reviewed=Reviewed publications.ui.monograph.reviewed=Reviewed
publications.ui.monograph.reviewed.yes=Yes publications.ui.monograph.reviewed.yes=Yes
publications.ui.monograph.reviewed.no=No 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_isbn=The ISBN entered is invalid
publications.ui.invalid_issn=The ISSN entered is invalid publications.ui.invalid_issn=The ISSN entered is invalid
publications.ui.journal.lastYearOfPublication=Last year of publication 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) 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.description=List of publications
genericorganizationalunit.ui.publications.title=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

View File

@ -300,7 +300,7 @@ publication.ui.internetarticle.organization.remove=Entfernen
publications.ui.monograph.reviewed=Begutachtet publications.ui.monograph.reviewed=Begutachtet
publications.ui.monograph.reviewed.yes=Ja publications.ui.monograph.reviewed.yes=Ja
publications.ui.monograph.reviewed.no=Nein 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_isbn=Die eingegebene ISBN ist fehlerhaft.
publications.ui.invalid_issn=Die eingegebene ISSN ist fehlerhaft. publications.ui.invalid_issn=Die eingegebene ISSN ist fehlerhaft.
publications.ui.journal.lastYearOfPublication=Letztes Jahr der Ver\u00f6ffentlichung 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 publications.ui.orgaunits.description=Diese Publikation der Publikationsliste einer Organisation(seinheit) hinzuf\u00fcgen
genericorganizationalunit.ui.publications.description=Publikationsliste genericorganizationalunit.ui.publications.description=Publikationsliste
genericorganizationalunit.ui.publications.title=Publikationsliste genericorganizationalunit.ui.publications.title=Publikationsliste
publications.ui.internetarticle.url=URL
publications.ui.internetarticle.urn=URN
publications.ui.internetarticle.doi=DOI