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

View File

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

View File

@ -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);
}

View File

@ -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;
}
}

View File

@ -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());
}

View File

@ -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);
}
}

View File

@ -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());
}
/**

View File

@ -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),

View File

@ -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();
}

View File

@ -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);
}
}

View File

@ -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

View File

@ -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