Some extensisons for publications:

- Symbol (Kürzel) for Journal (Ticket #1523)
- Language of publication (Ticket #1552)
- Date of first publication (Ticket #1536)



git-svn-id: https://svn.libreccm.org/ccm/trunk@2078 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2013-02-25 13:24:11 +00:00
parent 6c79fc15a9
commit 5856cc0ce5
15 changed files with 237 additions and 80 deletions

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.3" version="6.6.4"
release="1" release="1"
webapp="ROOT"> webapp="ROOT">
<ccm:dependencies> <ccm:dependencies>

View File

@ -28,7 +28,8 @@ object type Journal extends ContentPage {
Integer[0..1] firstYear = ct_journal.firstyear INTEGER; Integer[0..1] firstYear = ct_journal.firstyear INTEGER;
Integer[0..1] lastYear = ct_journal.lastyear INTEGER; Integer[0..1] lastYear = ct_journal.lastyear INTEGER;
String[0..1] issn = ct_journal.issn VARCHAR(9); String[0..1] issn = ct_journal.issn VARCHAR(9);
String[0..1] abstract = ct_journal.abstract VARCHAR(4096); String[0..1] abstract = ct_journal.abstract VARCHAR(4096);
String[0..1] symbol = ct_journal.symbol VARCHAR(128);
reference key (ct_journal.journal_id); reference key (ct_journal.journal_id);
} }

View File

@ -41,6 +41,10 @@ object type Publication extends ContentPage {
//(ordering by publications by their authors requires joins or subqueries //(ordering by publications by their authors requires joins or subqueries
//without this field) //without this field)
String[0..1] authorsStr = ct_publications.authors VARCHAR(2048); String[0..1] authorsStr = ct_publications.authors VARCHAR(2048);
//Year on which the publication was first published
Integer[0..1] yearFirstPublished = ct_publications.firstPublished INTEGER;
//The language of the publication
String[0..1] languageOfPublication = ct_publications.lang VARCHAR(128);
reference key (ct_publications.publication_id); reference key (ct_publications.publication_id);
} }

View File

@ -8,4 +8,7 @@
<version from="6.6.2" to="6.6.3"> <version from="6.6.2" to="6.6.3">
<script class="com.arsdigita.cms.contenttypes.upgrades.SciPublicationsUpgrade662to663"/> <script class="com.arsdigita.cms.contenttypes.upgrades.SciPublicationsUpgrade662to663"/>
</version> </version>
<version from="6.6.3" to="6.6.4">
<script sql="ccm-sci-publications/upgrade/::database::-6.6.3-6.6.4.sql" />
</version>
</upgrade> </upgrade>

View File

@ -40,9 +40,9 @@ public class Journal extends ContentPage {
public static final String LAST_YEAR = "lastYear"; public static final String LAST_YEAR = "lastYear";
public static final String ABSTRACT = "abstract"; public static final String ABSTRACT = "abstract";
public static final String ARTICLES = "articles"; public static final String ARTICLES = "articles";
public static final String ARTICLE_ORDER = "articleOrder"; public static final String ARTICLE_ORDER = "articleOrder";
public static final String BASE_DATA_OBJECT_TYPE = public static final String SYMBOL = "symbol";
"com.arsdigita.cms.contenttypes.Journal"; public static final String BASE_DATA_OBJECT_TYPE = "com.arsdigita.cms.contenttypes.Journal";
public Journal() { public Journal() {
this(BASE_DATA_OBJECT_TYPE); this(BASE_DATA_OBJECT_TYPE);
@ -63,11 +63,11 @@ public class Journal extends ContentPage {
public Journal(final String type) { public Journal(final String type) {
super(type); super(type);
} }
public JournalBundle getJournalBundle() { public JournalBundle getJournalBundle() {
return (JournalBundle) getContentBundle(); return (JournalBundle) getContentBundle();
} }
public String getISSN() { public String getISSN() {
return (String) get(ISSN); return (String) get(ISSN);
} }
@ -75,11 +75,11 @@ public class Journal extends ContentPage {
public void setISSN(final String issn) { public void setISSN(final String issn) {
set(ISSN, issn); set(ISSN, issn);
} }
public Integer getFirstYear() { public Integer getFirstYear() {
return (Integer) get(FIRST_YEAR); return (Integer) get(FIRST_YEAR);
} }
public void setFirstYear(final Integer firstYear) { public void setFirstYear(final Integer firstYear) {
set(FIRST_YEAR, firstYear); set(FIRST_YEAR, firstYear);
} }
@ -88,18 +88,18 @@ public class Journal extends ContentPage {
return (Integer) get(LAST_YEAR); return (Integer) get(LAST_YEAR);
} }
public void setLastYear(final Integer lastYear) { public void setLastYear(final Integer lastYear) {
set(LAST_YEAR, lastYear); set(LAST_YEAR, lastYear);
} }
public String getAbstract() { public String getAbstract() {
return (String) get(ABSTRACT); return (String) get(ABSTRACT);
} }
public void setAbstract(final String abstractStr) { public void setAbstract(final String abstractStr) {
set(ABSTRACT, abstractStr); set(ABSTRACT, abstractStr);
} }
public ArticleInJournalCollection getArticles() { public ArticleInJournalCollection getArticles() {
//return new ArticleInJournalCollection((DataCollection) get(ARTICLES)); //return new ArticleInJournalCollection((DataCollection) get(ARTICLES));
return getJournalBundle().getArticles(); return getJournalBundle().getArticles();
@ -111,32 +111,46 @@ public class Journal extends ContentPage {
//DataObject link = add(ARTICLES, article); //DataObject link = add(ARTICLES, article);
//link.set(ARTICLE_ORDER, Integer.valueOf((int) getArticles().size())); //link.set(ARTICLE_ORDER, Integer.valueOf((int) getArticles().size()));
getJournalBundle().addArticle(article); getJournalBundle().addArticle(article);
} }
public void removeArticle(ArticleInJournal article) { public void removeArticle(final ArticleInJournal article) {
//Assert.exists(article, ArticleInCollectedVolume.class); //Assert.exists(article, ArticleInCollectedVolume.class);
//remove(ARTICLES, article); //remove(ARTICLES, article);
getJournalBundle().removeArticle(article); getJournalBundle().removeArticle(article);
} }
public boolean hasArticles() { public boolean hasArticles() {
return !this.getArticles().isEmpty(); return !this.getArticles().isEmpty();
} }
/**
* The symbol used commonly used for referencing the journal (german: Kürzel).
*
* @return
*/
public String getSymbol() {
return (String) get(SYMBOL);
}
public void setSymbol(final String symbol) {
set(SYMBOL, symbol);
}
@Override @Override
public List<ExtraXMLGenerator> getExtraXMLGenerators() { public List<ExtraXMLGenerator> getExtraXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.getExtraXMLGenerators(); final List<ExtraXMLGenerator> generators = super.getExtraXMLGenerators();
generators.add(new JournalExtraXmlGenerator()); generators.add(new JournalExtraXmlGenerator());
return generators; return generators;
} }
@Override @Override
public List<ExtraXMLGenerator> getExtraListXMLGenerators() { public List<ExtraXMLGenerator> getExtraListXMLGenerators() {
final List<ExtraXMLGenerator> generators = super.getExtraListXMLGenerators(); final List<ExtraXMLGenerator> generators = super.getExtraListXMLGenerators();
generators.add(new JournalExtraXmlGenerator()); generators.add(new JournalExtraXmlGenerator());
return generators; return generators;
} }
} }

View File

@ -75,6 +75,8 @@ public class Publication extends ContentPage {
public final static String ORGAUNITS = "orgaunits"; public final static String ORGAUNITS = "orgaunits";
public final static String ORGAUNIT_PUBLICATIONS = "publications"; public final static String ORGAUNIT_PUBLICATIONS = "publications";
public static final String REVIEWED = "reviewed"; public static final String REVIEWED = "reviewed";
public static final String FIRST_PUBLISHED = "yearFirstPublished";
public static final String LANG = "languageOfPublication";
public final static String BASE_DATA_OBJECT_TYPE = public final static String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.cms.contenttypes.Publication"; "com.arsdigita.cms.contenttypes.Publication";
private final static PublicationsConfig config = new PublicationsConfig(); private final static PublicationsConfig config = new PublicationsConfig();
@ -334,6 +336,32 @@ public class Publication extends ContentPage {
//orgaunit.remove(ORGAUNIT_PUBLICATIONS, publication); //orgaunit.remove(ORGAUNIT_PUBLICATIONS, publication);
PublicationBundle.removePublication(orgaunit, publication); PublicationBundle.removePublication(orgaunit, publication);
} }
/**
* The year when the first edition of the publication was published.
*
* @return
*/
public Integer getYearFirstPublished() {
return (Integer) get(FIRST_PUBLISHED);
}
public void setYearFirstPublished(final Integer value) {
set(FIRST_PUBLISHED, value);
}
/**
* The language the publication is written in.
*
* @return
*/
public String getLanguageOfPublication() {
return (String) get(LANG);
}
public void setLanguageOfPublication(final String value) {
set(LANG, value);
}
@Override @Override
public List<ExtraXMLGenerator> getExtraXMLGenerators() { public List<ExtraXMLGenerator> getExtraXMLGenerators() {

View File

@ -31,6 +31,8 @@ public class PublicationsConfig extends AbstractConfig {
private final Parameter defaultPublicationsFolder; private final Parameter defaultPublicationsFolder;
private final Parameter orgaType; private final Parameter orgaType;
private final Parameter orgaBundleType; private final Parameter orgaBundleType;
private final Parameter enableFirstPublishedProperty;
private final Parameter enableLanguageProperty;
public PublicationsConfig() { public PublicationsConfig() {
attachOrgaUnitsStep = attachOrgaUnitsStep =
@ -127,6 +129,16 @@ public class PublicationsConfig extends AbstractConfig {
Parameter.OPTIONAL, Parameter.OPTIONAL,
PublisherBundle.BASE_DATA_OBJECT_TYPE); PublisherBundle.BASE_DATA_OBJECT_TYPE);
enableFirstPublishedProperty = new BooleanParameter(
"com.arsdigita.cms.contenttypes.publications.enable_first_published_property",
Parameter.REQUIRED,
true);
enableLanguageProperty = new BooleanParameter(
"com.arsdigita.cms.contenttypes.publications.enable_language_property",
Parameter.REQUIRED,
true);
register(attachOrgaUnitsStep); register(attachOrgaUnitsStep);
register(attachOrganizationPublicationsStepTo); register(attachOrganizationPublicationsStepTo);
register(attachPersonPublicationsStep); register(attachPersonPublicationsStep);
@ -145,6 +157,8 @@ public class PublicationsConfig extends AbstractConfig {
register(defaultPublicationsFolder); register(defaultPublicationsFolder);
register(orgaType); register(orgaType);
register(orgaBundleType); register(orgaBundleType);
register(enableFirstPublishedProperty);
register(enableLanguageProperty);
loadInfo(); loadInfo();
} }
@ -264,5 +278,13 @@ public class PublicationsConfig extends AbstractConfig {
public String getOrganizationBundleType() { public String getOrganizationBundleType() {
return (String) get(orgaBundleType); return (String) get(orgaBundleType);
} }
public Boolean getEnableFirstPublishedProperty() {
return (Boolean) get(enableFirstPublishedProperty);
}
public Boolean getEnableLanguageProperty() {
return (Boolean) get(enableLanguageProperty);
}
} }

View File

@ -86,4 +86,14 @@ com.arsdigita.cms.contenttypes.publications.organization_type.format = String
com.arsdigita.cms.contenttypes.publications.organization_bundle_type.title = Type of the content bundle sub class used for imported organizations com.arsdigita.cms.contenttypes.publications.organization_bundle_type.title = Type of the content bundle sub class used for imported organizations
com.arsdigita.cms.contenttypes.publications.organization_bundle_type.purpose = Sets the type of the bundle used for imported organization. Must be a subtype of com.arsdigita.cms.contenttypes.GenericOrganizationalUnitBundle com.arsdigita.cms.contenttypes.publications.organization_bundle_type.purpose = Sets the type of the bundle used for imported organization. Must be a subtype of com.arsdigita.cms.contenttypes.GenericOrganizationalUnitBundle
com.arsdigita.cms.contenttypes.publications.organization_bundle_type.example = com.arsdigita.cms.contenttypes.PublisherBundle com.arsdigita.cms.contenttypes.publications.organization_bundle_type.example = com.arsdigita.cms.contenttypes.PublisherBundle
com.arsdigita.cms.contenttypes.publications.organization_bundle_type = String com.arsdigita.cms.contenttypes.publications.organization_bundle_type.format = String
com.arsdigita.cms.contenttypes.publications.enable_first_published_property.title = Enable first published property
com.arsdigita.cms.contenttypes.publications.enable_first_published_property.purpose = Enable first published property
com.arsdigita.cms.contenttypes.publications.enable_first_published_property.example = true
com.arsdigita.cms.contenttypes.publications.enable_first_published_property.format = Boolean
com.arsdigita.cms.contenttypes.publications.enable_language_property.title = Enable language property
com.arsdigita.cms.contenttypes.publications.enable_language_property.purpose = Enable language property
com.arsdigita.cms.contenttypes.publications.enable_language_property.example = true
com.arsdigita.cms.contenttypes.publications.enable_language_property.format = Boolean

View File

@ -71,6 +71,7 @@ public class ArticleInJournalJournalForm
itemSearch.setDefaultCreationFolder(new Folder(new BigDecimal(config.getDefaultJournalsFolder()))); itemSearch.setDefaultCreationFolder(new Folder(new BigDecimal(config.getDefaultJournalsFolder())));
} }
itemSearch.setEditAfterCreate(false); itemSearch.setEditAfterCreate(false);
itemSearch.setQueryField("symbol");
add(itemSearch); add(itemSearch);
} }

View File

@ -68,10 +68,7 @@ public class JournalPropertiesStep extends SimpleEditStep {
sheet.add(PublicationGlobalizationUtil.globalize( sheet.add(PublicationGlobalizationUtil.globalize(
"publications.ui.journal.name"), "publications.ui.journal.name"),
Publication.NAME); Publication.NAME);
sheet.add(PublicationGlobalizationUtil.globalize(
"publications.ui.journal.title"),
Publication.TITLE);
sheet.add(PublicationGlobalizationUtil.globalize( sheet.add(PublicationGlobalizationUtil.globalize(
"publications.ui.journal.issn"), "publications.ui.journal.issn"),
@ -89,6 +86,9 @@ public class JournalPropertiesStep extends SimpleEditStep {
"publications.ui.journal.abstract"), "publications.ui.journal.abstract"),
Journal.ABSTRACT); Journal.ABSTRACT);
sheet.add(PublicationGlobalizationUtil.globalize("publications.ui.journal.symbol"), Journal.SYMBOL);
if (!ContentSection.getConfig().getHideLaunchDate()) { if (!ContentSection.getConfig().getHideLaunchDate()) {
sheet.add(ContenttypesGlobalizationUtil.globalize( sheet.add(ContenttypesGlobalizationUtil.globalize(
"cms.ui.authoring.page_launch_date"), "cms.ui.authoring.page_launch_date"),

View File

@ -34,9 +34,11 @@ import com.arsdigita.bebop.parameters.IntegerParameter;
import com.arsdigita.bebop.parameters.ParameterData; import com.arsdigita.bebop.parameters.ParameterData;
import com.arsdigita.bebop.parameters.ParameterModel; import com.arsdigita.bebop.parameters.ParameterModel;
import com.arsdigita.bebop.parameters.StringParameter; import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ItemSelectionModel; import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.Journal; import com.arsdigita.cms.contenttypes.Journal;
import com.arsdigita.cms.ui.authoring.BasicPageForm; import com.arsdigita.cms.ui.authoring.BasicPageForm;
import java.util.Date;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
/** /**
@ -49,17 +51,15 @@ public class JournalPropertyForm
FormInitListener, FormInitListener,
FormSubmissionListener { FormSubmissionListener {
private static final Logger s_log = private static final Logger s_log = Logger.getLogger(JournalPropertyForm.class);
Logger.getLogger(JournalPropertyForm.class); private final JournalPropertiesStep m_step;
private JournalPropertiesStep m_step;
public static final String ID = "JournalEdit"; public static final String ID = "JournalEdit";
public JournalPropertyForm(ItemSelectionModel itemModel) { public JournalPropertyForm(final ItemSelectionModel itemModel) {
this(itemModel, null); this(itemModel, null);
} }
public JournalPropertyForm(ItemSelectionModel itemModel, public JournalPropertyForm(final ItemSelectionModel itemModel, final JournalPropertiesStep step) {
JournalPropertiesStep step) {
super(ID, itemModel); super(ID, itemModel);
m_step = step; m_step = step;
addSubmissionListener(this); addSubmissionListener(this);
@ -69,15 +69,18 @@ public class JournalPropertyForm
protected void addWidgets() { protected void addWidgets() {
super.addWidgets(); super.addWidgets();
add(new Label((String) PublicationGlobalizationUtil.globalize("publications.ui.journal.symbol").localize()));
final ParameterModel symbolModel = new StringParameter(Journal.SYMBOL);
final TextField symbol = new TextField(symbolModel);
add(symbol);
add(new Label((String) PublicationGlobalizationUtil.globalize( add(new Label((String) PublicationGlobalizationUtil.globalize(
"publications.ui.journal.issn").localize())); "publications.ui.journal.issn").localize()));
ParameterModel issnParam = new StringParameter(Journal.ISSN); final ParameterModel issnParam = new StringParameter(Journal.ISSN);
TextField issn = new TextField(issnParam); final TextField issn = new TextField(issnParam);
issn.addValidationListener(new ParameterListener() { issn.addValidationListener(new ParameterListener() {
public void validate(final ParameterEvent event) throws FormProcessException {
public void validate(ParameterEvent event) throws final ParameterData data = event.getParameterData();
FormProcessException {
ParameterData data = event.getParameterData();
String value = (String) data.getValue(); String value = (String) data.getValue();
if (value.isEmpty()) { if (value.isEmpty()) {
@ -88,83 +91,113 @@ public class JournalPropertyForm
if (value.length() != 8) { if (value.length() != 8) {
data.invalidate(); data.invalidate();
data.addError(PublicationGlobalizationUtil.globalize( data.addError(PublicationGlobalizationUtil.globalize("publications.ui.invalid_issn"));
"publications.ui.invalid_issn"));
} }
try { try {
Long num = Long.parseLong(value); final Long num = Long.parseLong(value);
} catch (NumberFormatException ex) { } catch (NumberFormatException ex) {
data.invalidate(); data.invalidate();
data.addError(PublicationGlobalizationUtil.globalize( data.addError(PublicationGlobalizationUtil.globalize("publications.ui.invalid_issn"));
"publications.ui.invalid_issn"));
} }
} }
}); });
add(issn); add(issn);
add(new Label((String) PublicationGlobalizationUtil.globalize( add(new Label((String) PublicationGlobalizationUtil.globalize(
"publications.ui.journal.firstYearOfPublication").localize())); "publications.ui.journal.firstYearOfPublication").localize()));
ParameterModel firstYearParam = new IntegerParameter(Journal.FIRST_YEAR); final ParameterModel firstYearParam = new IntegerParameter(Journal.FIRST_YEAR);
TextField firstYear = new TextField(firstYearParam); final TextField firstYear = new TextField(firstYearParam);
add(firstYear); add(firstYear);
add(new Label((String) PublicationGlobalizationUtil.globalize( add(new Label((String) PublicationGlobalizationUtil.globalize(
"publications.ui.journal.lastYearOfPublication").localize())); "publications.ui.journal.lastYearOfPublication").localize()));
ParameterModel lastYearParam = new IntegerParameter(Journal.LAST_YEAR); final ParameterModel lastYearParam = new IntegerParameter(Journal.LAST_YEAR);
TextField lastYear = new TextField(lastYearParam); final TextField lastYear = new TextField(lastYearParam);
add(lastYear); add(lastYear);
add(new Label((String) PublicationGlobalizationUtil.globalize( add(new Label((String) PublicationGlobalizationUtil.globalize(
"publications.ui.journal.abstract").localize())); "publications.ui.journal.abstract").localize()));
ParameterModel abstractParam = new StringParameter(Journal.ABSTRACT); final ParameterModel abstractParam = new StringParameter(Journal.ABSTRACT);
TextArea abstractArea = new TextArea(abstractParam); final TextArea abstractArea = new TextArea(abstractParam);
abstractArea.setCols(60); abstractArea.setCols(60);
abstractArea.setRows(18); abstractArea.setRows(18);
add(abstractArea); add(abstractArea);
} }
@Override @Override
public void init(FormSectionEvent fse) throws FormProcessException { public void init(final FormSectionEvent fse) throws FormProcessException {
FormData data = fse.getFormData(); final FormData data = fse.getFormData();
Journal journal = (Journal) super.initBasicWidgets(fse);
//Can' use basic initBasicWidgets for journal because we are doing some magic with the title to make it possible
//to filter for the symbol of the journal
//final Journal journal = (Journal) super.initBasicWidgets(fse);
final Journal journal = (Journal) getItemSelectionModel().getSelectedObject(fse.getPageState());
data.put(CONTENT_ITEM_ID, journal.getID().toString());
data.put(NAME, journal.getName());
data.put(TITLE, journal.getTitle());
data.put(Journal.SYMBOL, journal.getSymbol());
data.put(Journal.ISSN, journal.getISSN()); data.put(Journal.ISSN, journal.getISSN());
data.put(Journal.FIRST_YEAR, journal.getFirstYear()); data.put(Journal.FIRST_YEAR, journal.getFirstYear());
data.put(Journal.LAST_YEAR, journal.getLastYear()); data.put(Journal.LAST_YEAR, journal.getLastYear());
data.put(Journal.ABSTRACT, journal.getAbstract()); data.put(Journal.ABSTRACT, journal.getAbstract());
if (!ContentSection.getConfig().getHideLaunchDate()) {
data.put(LAUNCH_DATE, journal.getLaunchDate());
// if launch date is required, help user by suggesting today's date
if (ContentSection.getConfig().getRequireLaunchDate() && journal.getLaunchDate() == null) {
data.put(LAUNCH_DATE, new Date());
}
}
} }
@Override @Override
public void process(FormSectionEvent fse) throws FormProcessException { public void process(final FormSectionEvent fse) throws FormProcessException {
FormData data = fse.getFormData(); final FormData data = fse.getFormData();
Journal journal = (Journal) super.processBasicWidgets(fse); //final Journal journal = (Journal) super.processBasicWidgets(fse);
if ((journal != null) && getSaveCancelSection().getSaveButton(). final Journal journal = (Journal) getItemSelectionModel().getSelectedObject(fse.getPageState());
isSelected(fse.getPageState())) {
if ((journal != null) && getSaveCancelSection().getSaveButton().isSelected(fse.getPageState())) {
final String name = (String) data.get(NAME);
journal.setName(name);
final String title = (String) data.get(TITLE);
journal.setTitle(title);
final String symbol = (String) data.get(Journal.SYMBOL);
journal.setSymbol(symbol);
String issn = (String) data.get(Journal.ISSN); String issn = (String) data.get(Journal.ISSN);
issn = issn.replace("-", ""); issn = issn.replace("-", "");
journal.setISSN(issn); journal.setISSN(issn);
Integer firstYear = (Integer) data.get(Journal.FIRST_YEAR); final Integer firstYear = (Integer) data.get(Journal.FIRST_YEAR);
journal.setFirstYear(firstYear); journal.setFirstYear(firstYear);
Integer lastYear = (Integer) data.get(Journal.LAST_YEAR); final Integer lastYear = (Integer) data.get(Journal.LAST_YEAR);
journal.setLastYear(lastYear); journal.setLastYear(lastYear);
String abstractStr = (String) data.get(Journal.ABSTRACT); final String abstractStr = (String) data.get(Journal.ABSTRACT);
journal.setAbstract(abstractStr); journal.setAbstract(abstractStr);
if (!ContentSection.getConfig().getHideLaunchDate()) {
journal.setLaunchDate((Date) data.get(LAUNCH_DATE));
}
journal.save(); journal.save();
} }
} }
@Override @Override
public void submitted(FormSectionEvent fse) throws FormProcessException { public void submitted(final FormSectionEvent fse) throws FormProcessException {
if ((m_step != null) && getSaveCancelSection().getCancelButton(). if ((m_step != null) && getSaveCancelSection().getCancelButton().isSelected(fse.getPageState())) {
isSelected(fse.getPageState())) {
m_step.cancelStreamlinedCreation(fse.getPageState()); m_step.cancelStreamlinedCreation(fse.getPageState());
} }
} }
} }

View File

@ -83,12 +83,21 @@ public class PublicationPropertiesStep extends SimpleEditStep {
"publications.ui.publication.misc"), "publications.ui.publication.misc"),
Publication.MISC); Publication.MISC);
if (Publication.getConfig().getEnableFirstPublishedProperty()) {
sheet.add(PublicationGlobalizationUtil.globalize("publications.ui.publication.first_published"),
Publication.FIRST_PUBLISHED);
}
if (Publication.getConfig().getEnableLanguageProperty()) {
sheet.add(PublicationGlobalizationUtil.globalize("publications.ui.publication.language"),
Publication.LANG);
}
if (!ContentSection.getConfig().getHideLaunchDate()) { if (!ContentSection.getConfig().getHideLaunchDate()) {
sheet.add(ContenttypesGlobalizationUtil.globalize( sheet.add(ContenttypesGlobalizationUtil.globalize(
"cms.ui.authoring.page_launch_date"), "cms.ui.authoring.page_launch_date"),
ContentPage.LAUNCH_DATE, ContentPage.LAUNCH_DATE,
new DomainObjectPropertySheet.AttributeFormatter() { new DomainObjectPropertySheet.AttributeFormatter() {
public String format(DomainObject item, public String format(DomainObject item,
String attribute, String attribute,
PageState state) { PageState state) {
@ -101,6 +110,7 @@ public class PublicationPropertiesStep extends SimpleEditStep {
"cms.ui.unknown").localize(); "cms.ui.unknown").localize();
} }
} }
}); });
} }
@ -165,5 +175,6 @@ public class PublicationPropertiesStep extends SimpleEditStep {
return String.format("<pre>%s</pre>", str); return String.format("<pre>%s</pre>", str);
} }
} }
} }
} }

View File

@ -26,6 +26,8 @@ import com.arsdigita.bebop.event.FormInitListener;
import com.arsdigita.bebop.event.FormProcessListener; import com.arsdigita.bebop.event.FormProcessListener;
import com.arsdigita.bebop.event.FormSectionEvent; import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.bebop.event.FormSubmissionListener; import com.arsdigita.bebop.event.FormSubmissionListener;
import com.arsdigita.bebop.form.Option;
import com.arsdigita.bebop.form.SingleSelect;
import com.arsdigita.bebop.form.TextArea; import com.arsdigita.bebop.form.TextArea;
import com.arsdigita.bebop.form.TextField; import com.arsdigita.bebop.form.TextField;
import com.arsdigita.bebop.parameters.IntegerParameter; import com.arsdigita.bebop.parameters.IntegerParameter;
@ -34,6 +36,9 @@ import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.cms.ItemSelectionModel; import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.contenttypes.Publication; import com.arsdigita.cms.contenttypes.Publication;
import com.arsdigita.cms.ui.authoring.BasicPageForm; import com.arsdigita.cms.ui.authoring.BasicPageForm;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Locale;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
/** /**
@ -48,7 +53,7 @@ public class PublicationPropertyForm
private static final Logger s_log = Logger.getLogger( private static final Logger s_log = Logger.getLogger(
PublicationPropertyForm.class); PublicationPropertyForm.class);
private PublicationPropertiesStep m_step; private PublicationPropertiesStep m_step;
public static final String ID = "Publication_edit"; public static final String ID = "Publication_edit";
public PublicationPropertyForm(ItemSelectionModel itemModel) { public PublicationPropertyForm(ItemSelectionModel itemModel) {
@ -66,22 +71,38 @@ public class PublicationPropertyForm
protected void addWidgets() { protected void addWidgets() {
super.addWidgets(); super.addWidgets();
/*add(new Label((String) PublicationGlobalizationUtil.globalize(
"publications.ui.publication.title").localize()));
ParameterModel titleParam = new StringParameter(Publication.TITLE);
TextField title = new TextField(titleParam);
add(title);*/
add(new Label((String) PublicationGlobalizationUtil.globalize( add(new Label((String) PublicationGlobalizationUtil.globalize(
"publications.ui.publication.year_of_publication").localize())); "publications.ui.publication.year_of_publication").localize()));
ParameterModel yearOfPublicationParam = new IntegerParameter( final ParameterModel yearOfPublicationParam = new IntegerParameter(Publication.YEAR_OF_PUBLICATION);
Publication.YEAR_OF_PUBLICATION); final TextField yearOfPublication = new TextField(yearOfPublicationParam);
TextField yearOfPublication = new TextField(yearOfPublicationParam);
yearOfPublication.setMaxLength(4); yearOfPublication.setMaxLength(4);
//yearOfPublication.addValidationListener(new NotNullValidationListener()); //yearOfPublication.addValidationListener(new NotNullValidationListener());
//yearOfPublication.addValidationListener(new NotEmptyValidationListener()); //yearOfPublication.addValidationListener(new NotEmptyValidationListener());
add(yearOfPublication); add(yearOfPublication);
add(new Label((String) PublicationGlobalizationUtil.globalize("publications.ui.publication.first_published").localize()));
final ParameterModel firstPublishedParam = new IntegerParameter(Publication.FIRST_PUBLISHED);
final TextField firstPublished = new TextField(firstPublishedParam);
add(firstPublished);
add(new Label((String) PublicationGlobalizationUtil.globalize("publications.ui.publication.language").localize()));
final ParameterModel langParam = new StringParameter(Publication.LANG);
//final TextField lang = new TextField(langParam);
final SingleSelect lang = new SingleSelect(langParam);
final Locale[] locales = Locale.getAvailableLocales();
lang.addOption(new Option("", ""));
Arrays.sort(locales, new Comparator<Locale>() {
public int compare(final Locale locale1, final Locale locale2) {
return locale1.getDisplayName().compareTo(locale2.getDisplayName());
}
});
for(Locale locale : locales) {
lang.addOption(new Option(locale.toString(), locale.getDisplayName()));
}
add(lang);
add(new Label((String) PublicationGlobalizationUtil.globalize( add(new Label((String) PublicationGlobalizationUtil.globalize(
"publications.ui.publication.abstract").localize())); "publications.ui.publication.abstract").localize()));
ParameterModel abstractParam = new StringParameter(Publication.ABSTRACT); ParameterModel abstractParam = new StringParameter(Publication.ABSTRACT);
@ -105,8 +126,9 @@ public class PublicationPropertyForm
Publication publication = (Publication) super.initBasicWidgets(fse); Publication publication = (Publication) super.initBasicWidgets(fse);
//data.put(Publication.TITLE, publication.getTitle()); //data.put(Publication.TITLE, publication.getTitle());
data.put(Publication.YEAR_OF_PUBLICATION, publication. data.put(Publication.YEAR_OF_PUBLICATION, publication.getYearOfPublication());
getYearOfPublication()); data.put(Publication.FIRST_PUBLISHED, publication.getYearFirstPublished());
data.put(Publication.LANG, publication.getLanguageOfPublication());
data.put(Publication.ABSTRACT, publication.getAbstract()); data.put(Publication.ABSTRACT, publication.getAbstract());
data.put(Publication.MISC, publication.getMisc()); data.put(Publication.MISC, publication.getMisc());
} }
@ -119,12 +141,13 @@ public class PublicationPropertyForm
if ((publication != null) && getSaveCancelSection().getSaveButton(). if ((publication != null) && getSaveCancelSection().getSaveButton().
isSelected(fse.getPageState())) { isSelected(fse.getPageState())) {
//publication.setTitle((String) data.get(Publication.TITLE)); //publication.setTitle((String) data.get(Publication.TITLE));
publication.setYearOfPublication((Integer) data.get( publication.setYearOfPublication((Integer) data.get(Publication.YEAR_OF_PUBLICATION));
Publication.YEAR_OF_PUBLICATION)); publication.setYearFirstPublished((Integer) data.get(Publication.FIRST_PUBLISHED));
publication.setLanguageOfPublication((String) data.get(Publication.LANG));
publication.setAbstract((String) data.get(Publication.ABSTRACT)); publication.setAbstract((String) data.get(Publication.ABSTRACT));
publication.setMisc((String) data.get(Publication.MISC)); publication.setMisc((String) data.get(Publication.MISC));
publication.save(); publication.save();
} }
} }
@ -140,5 +163,6 @@ public class PublicationPropertyForm
protected String getTitleLabel() { protected String getTitleLabel() {
return (String) PublicationGlobalizationUtil.globalize( return (String) PublicationGlobalizationUtil.globalize(
"publications.ui.publication.title").localize(); "publications.ui.publication.title").localize();
} }
} }

View File

@ -411,3 +411,6 @@ organization.ui.publications.description=Edited publications
organization.ui.publications.columns.name=Title organization.ui.publications.columns.name=Title
organization.ui.publications.columns.year=Year organization.ui.publications.columns.year=Year
organization.ui.publications.columns.type=Type organization.ui.publications.columns.type=Type
publications.ui.journal.symbol=Symbol of the journal
publications.ui.publication.first_published=First published
publications.ui.publication.language=Language of publication

View File

@ -410,3 +410,6 @@ organization.ui.publications.description=Herausgegebene Publikationen
organization.ui.publications.columns.name=Titel organization.ui.publications.columns.name=Titel
organization.ui.publications.columns.year=Jahr organization.ui.publications.columns.year=Jahr
organization.ui.publications.columns.type=Typ organization.ui.publications.columns.type=Typ
publications.ui.journal.symbol=K\u00fcrzel der Zeitschrift
publications.ui.publication.first_published=Erste Ver\u00f6ffentlichung
publications.ui.publication.language=Sprache der Publikation