- Verknüpfung von GenericOrganizationalUnit und Publication. Die Assoziation wird in Publication definiert. Publication stellt

außerdem Hilfsmethoden bereit, um die Publikationen einer GenericOrganizationalUnit zu verwalten. Der AuthoringStep für
  Publication -> GenericOrganizationalUnit kann über die PublicationConfig aktiviert werden. Außerdem kann über die
  PublicationConfig ein AuthoringStep zum Hinzufügen einer Publikation zu einer GenericOrganizationalUnit an beliebige 
  viele Unterklassen von GenericOrganizationalUnit angehängt werden
- Einige Formatierungen


git-svn-id: https://svn.libreccm.org/ccm/trunk@1207 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2011-10-26 19:29:53 +00:00
parent 1e6abe269d
commit 401ba7e847
19 changed files with 1199 additions and 78 deletions

View File

@ -1,6 +1,5 @@
package com.arsdigita.cms.publicpersonalprofile; package com.arsdigita.cms.publicpersonalprofile;
import com.arsdigita.cms.contenttypes.PublicPersonalProfileNavItem;
import com.arsdigita.db.DbHelper; import com.arsdigita.db.DbHelper;
import com.arsdigita.domain.DomainObject; import com.arsdigita.domain.DomainObject;
import com.arsdigita.domain.DomainObjectFactory; import com.arsdigita.domain.DomainObjectFactory;

View File

@ -1,15 +1,10 @@
package com.arsdigita.cms.publicpersonalprofile; package com.arsdigita.cms.publicpersonalprofile;
import com.arsdigita.cms.contenttypes.PublicPersonalProfileNavItem;
import com.arsdigita.domain.DomainObject;
import com.arsdigita.kernel.ACSObjectInstantiator;
import com.arsdigita.kernel.Kernel; import com.arsdigita.kernel.Kernel;
import com.arsdigita.kernel.KernelExcursion; import com.arsdigita.kernel.KernelExcursion;
import com.arsdigita.loader.PackageLoader; import com.arsdigita.loader.PackageLoader;
import com.arsdigita.persistence.DataObject;
import com.arsdigita.runtime.ScriptContext; import com.arsdigita.runtime.ScriptContext;
import com.arsdigita.web.Application; import com.arsdigita.web.Application;
import com.arsdigita.web.ApplicationSetup;
import com.arsdigita.web.ApplicationType; import com.arsdigita.web.ApplicationType;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
@ -33,50 +28,16 @@ public class PublicPersonalProfilesLoader extends PackageLoader {
protected void excurse() { protected void excurse() {
setEffectiveParty(Kernel.getSystemParty()); setEffectiveParty(Kernel.getSystemParty());
/*ApplicationSetup setup = new ApplicationSetup(logger); final ApplicationType type = new ApplicationType(
"PublicPersonalProfile",
setup.setApplicationObjectType( PublicPersonalProfiles.BASE_DATA_OBJECT_TYPE);
PublicPersonalProfiles.BASE_DATA_OBJECT_TYPE);
setup.setKey("profiles");
setup.setTitle("PublicPersonalProfiles");
setup.setDescription("Display public personal profiles");
setup.setInstantiator(new ACSObjectInstantiator() {
@Override
public DomainObject doNewInstance(
final DataObject dataObject) {
return new PublicPersonalProfiles(dataObject);
}
});
ApplicationType type = setup.run();
type.save();
if (!Application.isInstalled(
PublicPersonalProfiles.BASE_DATA_OBJECT_TYPE,
"/profiles/")) {
/*Application app = Application.createRootApplication(type,
"profiles",
false);*/
/*Application app = Application.createApplication(type,
"profiles",
"profiles",
null);
app.save();
}*/
ApplicationType type =
new ApplicationType("PublicPersonalProfile",
PublicPersonalProfiles.BASE_DATA_OBJECT_TYPE);
type.setDescription("PublicPersonalProfile Viewer"); type.setDescription("PublicPersonalProfile Viewer");
Application.createApplication( Application.createApplication(
PublicPersonalProfiles.BASE_DATA_OBJECT_TYPE, PublicPersonalProfiles.BASE_DATA_OBJECT_TYPE,
"profiles", "profiles",
"PublicPersonalProfiles", "PublicPersonalProfiles",
null); null);
} }
}.run(); }.run();

View File

@ -21,8 +21,6 @@ package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.ContentBundle; import com.arsdigita.cms.ContentBundle;
import com.arsdigita.cms.ContentPage; import com.arsdigita.cms.ContentPage;
import com.arsdigita.cms.ExtraXMLGenerator;
import com.arsdigita.cms.contenttypes.ui.GenericOrgaUnitExtraXmlGenerator;
import com.arsdigita.cms.contenttypes.ui.GenericOrganizationalUnitSubordinateOrgaUnitAddForm; import com.arsdigita.cms.contenttypes.ui.GenericOrganizationalUnitSubordinateOrgaUnitAddForm;
import com.arsdigita.cms.contenttypes.ui.GenericOrganizationalUnitSubordinateOrgaUnitsTable; import com.arsdigita.cms.contenttypes.ui.GenericOrganizationalUnitSubordinateOrgaUnitsTable;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard; import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
@ -32,7 +30,6 @@ import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID; import com.arsdigita.persistence.OID;
import com.arsdigita.util.Assert; import com.arsdigita.util.Assert;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
/** /**

View File

@ -48,4 +48,70 @@ association {
// Additional attributes // Additional attributes
Boolean[0..1] editor = ct_publications_authorship.editor BIT; Boolean[0..1] editor = ct_publications_authorship.editor BIT;
Integer[0..1] authorOrder = ct_publications_authorship.authorship_order INTEGER; Integer[0..1] authorOrder = ct_publications_authorship.authorship_order INTEGER;
}
//Association between GenericOrganizationalUnit and Publications.
//AuthoringStep is attached by configuration.
//See GenericOrganizationalUnitsPublicationsStep and
//PublicationGenericOrganizationalUnitsStep for more information
association {
GenericOrganizationalUnit[0..n] orgaunits = join ct_publications.publication_id
to cms_organizationalunits_publications_map.publication_id,
join cms_organizationalunits_publications_map.orgaunit_id
to cms_organizationalunits.organizationalunit_id;
Publication[0..n] publications = join cms_organizationalunits.organizationalunit_id
to cms_organizationalunits_publications_map.orgaunit_id,
join cms_organizationalunits_publications_map.publication_id
to ct_publications.publication_id;
Integer[0..1] publicationOrder = cms_organizationalunits_publications_map.publication_order INTEGER;
}
query getAllYearsOfPublication {
Integer yearOfPublication;
do {
select distinct ct_publications.year
from ct_publications
} map {
yearOfPublication = ct_publications.year;
}
}
query getAllYearsOfPublicationForAuthor {
Integer yearOfPublication;
do {
select distinct ct_publications.year
from ct_publications join ct_publications_authorship on ct_publications.publication_id = ct_publications_authorship.publication_id
where person_id = :author
} map {
yearOfPublication = ct_publications.year;
}
}
query getAllPublicationTypesForAuthor {
String objectType;
do {
select distinct acs_objects.object_type
from ct_publications join acs_objects on ct_publications.publication_id = acs_objects.object_id join ct_publications_authorship on ct_publications.publication_id = ct_publications_authorship.publication_id
where person_id = :author
} map {
objectType = acs_objects.object_type;
}
}
query getIdsOfPublicationsOfSciMember {
BigDecimal publicationId;
do {
select ct_publications_authorship.publication_id
from ct_publications_authorship
where ct_publications_authorship.person_id = :author
} map {
publicationId = ct_publications_authorship.publication_id;
}
} }

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<registry> <registry>
<!-- <config class="com.arsdigita.cms.PublicationsConfig" storage="ccm-sci-publicationsn/publications.properties"/> --> <config class="com.arsdigita.cms.contenttypes.PublicationsConfig" storage="ccm-sci-publications/publications.properties"/>
</registry> </registry>

View File

@ -0,0 +1,59 @@
package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.ContentPage;
import com.arsdigita.domain.DomainCollection;
import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.kernel.ACSObject;
import com.arsdigita.persistence.DataCollection;
import java.math.BigDecimal;
/**
*
* @author Jens Pelzetter
* @version $Id$
*/
public class GenericOrganizationalUnitPublicationsCollection
extends DomainCollection {
public GenericOrganizationalUnitPublicationsCollection(
final DataCollection dataCollection) {
super(dataCollection);
}
public Publication getPublication() {
return (Publication) DomainObjectFactory.newInstance(m_dataCollection.
getDataObject());
}
public BigDecimal getID() {
return (BigDecimal) m_dataCollection.getDataObject().get(ACSObject.ID);
}
public String getTitle() {
return (String) m_dataCollection.getDataObject().get(ContentPage.TITLE);
}
public Integer getYearOfPublication() {
return (Integer) m_dataCollection.getDataObject().get(
Publication.YEAR_OF_PUBLICATION);
}
public String getAbstract() {
return (String) m_dataCollection.getDataObject().get(
Publication.ABSTRACT);
}
public String getMisc() {
return (String) m_dataCollection.getDataObject().get(Publication.MISC);
}
public AuthorshipCollection getAuthors() {
return new AuthorshipCollection((DataCollection) m_dataCollection.
getDataObject().get(Publication.AUTHORS));
}
public SeriesCollection getSeries() {
return new SeriesCollection((DataCollection) m_dataCollection.
getDataObject().get(Publication.SERIES));
}
}

View File

@ -50,38 +50,49 @@ import java.math.BigDecimal;
* @author Jens Pelzetter * @author Jens Pelzetter
*/ */
public class Publication extends ContentPage { public class Publication extends ContentPage {
public final static String YEAR_OF_PUBLICATION = "yearOfPublication"; public final static String YEAR_OF_PUBLICATION = "yearOfPublication";
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";
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";
public final static String ORGAUNITS = "orgaunits";
public final static String ORGAUNIT_PUBLICATIONS = "publications";
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();
static {
config.load();
}
public Publication() { public Publication() {
this(BASE_DATA_OBJECT_TYPE); this(BASE_DATA_OBJECT_TYPE);
} }
public Publication(BigDecimal id) throws public Publication(final BigDecimal id) throws
DataObjectNotFoundException { DataObjectNotFoundException {
this(new OID(BASE_DATA_OBJECT_TYPE, id)); this(new OID(BASE_DATA_OBJECT_TYPE, id));
} }
public Publication(OID oid) throws DataObjectNotFoundException { public Publication(final OID oid) throws DataObjectNotFoundException {
super(oid); super(oid);
} }
public Publication(DataObject obj) { public Publication(final DataObject obj) {
super(obj); super(obj);
} }
public Publication(String type) { public Publication(final String type) {
super(type); super(type);
} }
public static PublicationsConfig getConfig() {
return config;
}
/** /**
* Gets the year of publications. * Gets the year of publications.
* *
@ -96,7 +107,7 @@ public class Publication extends ContentPage {
* *
* @param year The year when the publication was published. * @param year The year when the publication was published.
*/ */
public void setYearOfPublication(Integer year) { public void setYearOfPublication(final Integer year) {
set(YEAR_OF_PUBLICATION, year); set(YEAR_OF_PUBLICATION, year);
} }
@ -114,7 +125,7 @@ public class Publication extends ContentPage {
* *
* @param theAbstract A string describing the contents of the publication * @param theAbstract A string describing the contents of the publication
*/ */
public void setAbstract(String theAbstract) { public void setAbstract(final String theAbstract) {
set(ABSTRACT, set(ABSTRACT,
theAbstract); theAbstract);
} }
@ -154,11 +165,11 @@ public class Publication extends ContentPage {
* which is derivated from the {@link GenericPerson} type. * which is derivated from the {@link GenericPerson} type.
* @param editor Is the author an editor? * @param editor Is the author an editor?
*/ */
public void addAuthor(GenericPerson author, Boolean editor) { public void addAuthor(final GenericPerson author, final Boolean editor) {
Assert.exists(author, GenericPerson.class); Assert.exists(author, GenericPerson.class);
DataObject link = add(AUTHORS, author); DataObject link = add(AUTHORS, author);
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()));
} }
@ -168,7 +179,7 @@ public class Publication extends ContentPage {
* *
* @param author The author to remove. * @param author The author to remove.
*/ */
public void removeAuthor(GenericPerson author) { public void removeAuthor(final GenericPerson author) {
Assert.exists(author, GenericPerson.class); Assert.exists(author, GenericPerson.class);
remove(AUTHORS, author); remove(AUTHORS, author);
} }
@ -180,26 +191,71 @@ public class Publication extends ContentPage {
* otherwise. * otherwise.
*/ */
public boolean hasAuthors() { public boolean hasAuthors() {
return !this.getAuthors().isEmpty(); return !getAuthors().isEmpty();
} }
public SeriesCollection getSeries() { public SeriesCollection getSeries() {
return new SeriesCollection((DataCollection) get(SERIES)); return new SeriesCollection((DataCollection) get(SERIES));
} }
public void addSeries(Series series) { public void addSeries(final Series series) {
Assert.exists(series, Series.class); Assert.exists(series, Series.class);
add(SERIES, series); add(SERIES, series);
} }
public void removeSeries(Series series) { public void removeSeries(final Series series) {
Assert.exists(series, Series.class); Assert.exists(series, Series.class);
remove(SERIES, series); remove(SERIES, series);
} }
public boolean hasSeries() { public boolean hasSeries() {
return !this.getSeries().isEmpty(); return !getSeries().isEmpty();
}
public PublicationGenericOrganizationalsUnitCollection getOrganizationalUnits() {
return new PublicationGenericOrganizationalsUnitCollection((DataCollection) get(
ORGAUNITS));
}
public void addOrganizationalUnit(final GenericOrganizationalUnit orgaunit) {
Assert.exists(orgaunit, GenericOrganizationalUnit.class);
add(ORGAUNITS, orgaunit);
}
public void removeOrganizationalUnit(
final GenericOrganizationalUnit orgaunit) {
Assert.exists(orgaunit, GenericOrganizationalUnit.class);
remove(ORGAUNITS, orgaunit);
}
public boolean hasOrganizationalUnits() {
return !getOrganizationalUnits().isEmpty();
}
public static GenericOrganizationalUnitPublicationsCollection getPublications(
final GenericOrganizationalUnit orgaunit) {
final DataCollection dataCollection = (DataCollection) orgaunit.get(
ORGAUNIT_PUBLICATIONS);
return new GenericOrganizationalUnitPublicationsCollection(dataCollection);
}
public static void addPublication(final GenericOrganizationalUnit orgaunit,
final Publication publication) {
Assert.exists(publication);
orgaunit.add(ORGAUNIT_PUBLICATIONS, publication);
}
public static void removePublication(
final GenericOrganizationalUnit orgaunit,
final Publication publication) {
Assert.exists(publication);
orgaunit.remove(ORGAUNIT_PUBLICATIONS, publication);
} }
} }

View File

@ -0,0 +1,66 @@
package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.ContentPage;
import com.arsdigita.domain.DomainCollection;
import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.kernel.ACSObject;
import com.arsdigita.persistence.DataCollection;
import java.math.BigDecimal;
/**
*
* @author Jens Pelzetter
* @version $Id$
*/
public class PublicationGenericOrganizationalsUnitCollection
extends DomainCollection {
public PublicationGenericOrganizationalsUnitCollection(
final DataCollection dataCollection) {
super(dataCollection);
addOrder("title");
}
public GenericOrganizationalUnit getOrganizationalUnit() {
return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(
m_dataCollection.getDataObject());
}
public BigDecimal getID() {
return (BigDecimal) m_dataCollection.getDataObject().get(ACSObject.ID);
}
public String getTitle() {
return (String) m_dataCollection.getDataObject().get(ContentPage.TITLE);
}
public String getAddendum() {
return (String) m_dataCollection.getDataObject().get(
GenericOrganizationalUnit.ADDENDUM);
}
public GenericOrganizationalUnitContactCollection getContacts() {
return new GenericOrganizationalUnitContactCollection(
(DataCollection) m_dataCollection.get(
GenericOrganizationalUnit.CONTACTS));
}
public GenericOrganizationalUnitPersonCollection getPersons() {
return new GenericOrganizationalUnitPersonCollection(
(DataCollection) m_dataCollection.getDataObject().get(
GenericOrganizationalUnit.PERSONS));
}
public GenericOrganizationalUnitSuperiorCollection getSuperiorOrgaUnits() {
return new GenericOrganizationalUnitSuperiorCollection(
(DataCollection) m_dataCollection.getDataObject().get(
GenericOrganizationalUnit.SUPERIOR_ORGAUNITS));
}
public GenericOrganizationalUnitSubordinateCollection getSubordinateOrgaUnits() {
return new GenericOrganizationalUnitSubordinateCollection(
(DataCollection) m_dataCollection.getDataObject().get(
GenericOrganizationalUnit.SUBORDINATE_ORGAUNITS));
}
}

View File

@ -19,24 +19,62 @@
*/ */
package com.arsdigita.cms.contenttypes; package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.contenttypes.ui.GenericOrganizationalUnitPublicationsStep;
import com.arsdigita.cms.contenttypes.ui.PublicationGenericOrganizationalUnitsStep;
import com.arsdigita.cms.contenttypes.ui.PublicationGlobalizationUtil;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.runtime.DomainInitEvent;
/** /**
* *
* @author Jens Pelzetter * @author Jens Pelzetter
* @version $Id$
*/ */
public class PublicationInitializer extends ContentTypeInitializer { public class PublicationInitializer extends ContentTypeInitializer {
public PublicationInitializer() { public PublicationInitializer() {
super("ccm-sci-publications.pdl.mf", Publication.BASE_DATA_OBJECT_TYPE); super("ccm-sci-publications.pdl.mf", Publication.BASE_DATA_OBJECT_TYPE);
} }
@Override
public void init(final DomainInitEvent event) {
super.init(event);
final PublicationsConfig config = Publication.getConfig();
if (config.getAttachOrgaUnitsStep()) {
AuthoringKitWizard.registerAssetStep(
Publication.BASE_DATA_OBJECT_TYPE,
PublicationGenericOrganizationalUnitsStep.class,
PublicationGlobalizationUtil.globalize(
"publications.ui.orgaunits.title"),
PublicationGlobalizationUtil.globalize(
"publications.ui.orgaunits.description"),
10);
}
final String attacToStr = config.getAttachPublicationsStepTo();
final String[] attachToCts = attacToStr.split(";");
for (String attachTo : attachToCts) {
AuthoringKitWizard.registerAssetStep(
attachTo,
GenericOrganizationalUnitPublicationsStep.class,
PublicationGlobalizationUtil.globalize(
"genericorganizationalunit.ui.publications.title"),
PublicationGlobalizationUtil.globalize(
"genericorganizationalunit.ui.publications.description"),
10);
}
}
@Override @Override
public String[] getStylesheets() { public String[] getStylesheets() {
return new String[]{"/static/content-types/com/arsdigita/cms/contenttypes/Publication.xsl"}; return new String[]{
"/static/content-types/com/arsdigita/cms/contenttypes/Publication.xsl"};
} }
@Override @Override
public String getTraversalXML() { public String getTraversalXML() {
return "/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/Publication.xml"; return "/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/Publication.xml";
} }
} }

View File

@ -0,0 +1,44 @@
package com.arsdigita.cms.contenttypes;
import com.arsdigita.runtime.AbstractConfig;
import com.arsdigita.util.parameter.BooleanParameter;
import com.arsdigita.util.parameter.Parameter;
import com.arsdigita.util.parameter.StringParameter;
/**
*
* @author Jens Pelzetter
* @version $Id$
*/
public class PublicationsConfig extends AbstractConfig {
private final Parameter attachOrgaUnitsStep;
private final Parameter attachPublicationsStepTo;
public PublicationsConfig() {
attachOrgaUnitsStep =
new BooleanParameter(
"com.arsdigita.cms.contenttypes.publications.attach_orgaunits_step",
Parameter.REQUIRED,
Boolean.FALSE);
attachPublicationsStepTo =
new StringParameter(
"com.arsdigita.cms.contenttypes.publications.attach_publications_step_to",
Parameter.REQUIRED,
"");
register(attachOrgaUnitsStep);
register(attachPublicationsStepTo);
loadInfo();
}
public Boolean getAttachOrgaUnitsStep() {
return (Boolean) get(attachOrgaUnitsStep);
}
public String getAttachPublicationsStepTo() {
return (String) get(attachPublicationsStepTo);
}
}

View File

@ -0,0 +1,9 @@
com.arsdigita.cms.contenttypes.publications.attach_orgaunits_step.title = Enable publication -> GenericOrganizationalUnit authoring step
com.arsdigita.cms.contenttypes.publications.attach_orgaunits_step.purpose = Enables the authoring step for associating a publication with a organizational unit.
com.arsdigita.cms.contenttypes.publications.attach_orgaunits_step.example = true
com.arsdigita.cms.contenttypes.publications.attach_orgaunits_step.format = [Boolean]
com.arsdigita.cms.contenttypes.publications.attach_publications_step_to.title = Attach the Publications authoring step
com.arsdigita.cms.contenttypes.publications.attach_publications_step_to.purpose = Attaches the authoring step for associating a publication to organizationalunit to the authoring steps of the content types in the string.
com.arsdigita.cms.contenttypes.publications.attach_publications_step_to.example = com.arsdigita.cms.contenttypes.SciInstitute;com.arsdigita.cms.contenttypes.SciDepartment;com.arsdigita.cms.contenttypes.SciProject
com.arsdigita.cms.contenttypes.publications.attach_publications_step_to.format = [String]

View File

@ -0,0 +1,111 @@
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.GenericOrganizationalUnit;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitPublicationsCollection;
import com.arsdigita.cms.contenttypes.Publication;
import com.arsdigita.cms.ui.ItemSearchWidget;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
/**
*
* @author Jens Pelzetter
* @version $Id$
*/
public class GenericOrganizationalUnitPublicationAddForm
extends BasicItemForm
implements FormInitListener,
FormProcessListener {
private ItemSearchWidget itemSearch;
private final static String ITEM_SEARCH = "publications";
public GenericOrganizationalUnitPublicationAddForm(
final ItemSelectionModel itemModel) {
super("GenericOrganizationalUnitPublicationAddForm", itemModel);
}
@Override
public void addWidgets() {
add(new Label((String) PublicationGlobalizationUtil.globalize(
"genericorganizationalunit.ui.publication.select").localize()));
itemSearch = new ItemSearchWidget(ITEM_SEARCH, ContentType.
findByAssociatedObjectType(Publication.class.getName()));
add(itemSearch);
}
@Override
public void init(final FormSectionEvent fse) throws FormProcessException {
final PageState state = fse.getPageState();
setVisible(state, true);
}
@Override
public void process(final FormSectionEvent fse) throws FormProcessException {
final FormData data = fse.getFormData();
final PageState state = fse.getPageState();
final GenericOrganizationalUnit orgaunit =
(GenericOrganizationalUnit) getItemSelectionModel().
getSelectedObject(state);
if ((orgaunit != null)
&& getSaveCancelSection().getSaveButton().isSelected(state)) {
Publication publication = (Publication) data.get(ITEM_SEARCH);
publication = (Publication) publication.getContentBundle().
getInstance(orgaunit.getLanguage(), true);
Publication.addPublication(orgaunit, publication);
orgaunit.save();
}
init(fse);
}
@Override
public void validate(final FormSectionEvent fse) throws FormProcessException {
final PageState state = fse.getPageState();
final FormData data = fse.getFormData();
if (data.get(ITEM_SEARCH) == null) {
data.addError(PublicationGlobalizationUtil.globalize(
"genericorganizationalunit.ui.publication.select.nothing"));
}
final GenericOrganizationalUnit orgaunit =
(GenericOrganizationalUnit) getItemSelectionModel().
getSelectedObject(state);
Publication publication = (Publication) data.get(ITEM_SEARCH);
if (!(publication.getContentBundle().hasInstance(orgaunit.getLanguage(),
true))) {
data.addError(
PublicationGlobalizationUtil.globalize(
"genericorganizationalunit.ui.publication.no_suitable_language_variant"));
return;
}
publication = (Publication) publication.getContentBundle().getInstance(orgaunit.
getLanguage(), true);
final GenericOrganizationalUnitPublicationsCollection publications =
Publication.
getPublications(orgaunit);
publications.addFilter(String.format("id = %s",
publication.getID().toString()));
if (publications.size() > 0) {
data.addError(PublicationGlobalizationUtil.globalize(
"genericorganizationalunit.ui.publication.already_added"));
}
publications.close();
}
}

View File

@ -0,0 +1,43 @@
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.cms.ItemSelectionModel;
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
* @version $Id$
*/
public class GenericOrganizationalUnitPublicationsStep extends SimpleEditStep {
private String ADD_PUBLICATION_SHEET_NAME =
"GenericOrganizationalUnitAddPublication";
public GenericOrganizationalUnitPublicationsStep(
final ItemSelectionModel itemModel,
final AuthoringKitWizard parent) {
this(itemModel, parent, null);
}
public GenericOrganizationalUnitPublicationsStep(
final ItemSelectionModel itemModel,
final AuthoringKitWizard parent,
final String prefix) {
super(itemModel, parent, prefix);
final BasicItemForm addPublicationSheet =
new GenericOrganizationalUnitPublicationAddForm(itemModel);
add(ADD_PUBLICATION_SHEET_NAME,
(String) PublicationGlobalizationUtil.globalize(
"genericorganizationalunit.ui.add_publication").localize(),
new WorkflowLockedComponentAccess(addPublicationSheet, itemModel),
addPublicationSheet.getSaveCancelSection().getCancelButton());
final GenericOrganizationalUnitPublicationsTable publicationsTable = new GenericOrganizationalUnitPublicationsTable(itemModel);
setDisplayComponent(publicationsTable);
}
}

View File

@ -0,0 +1,245 @@
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.contenttypes.GenericOrganizationalUnit;
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitPublicationsCollection;
import com.arsdigita.cms.contenttypes.Publication;
import com.arsdigita.cms.dispatcher.ItemResolver;
import com.arsdigita.cms.dispatcher.Utilities;
import com.arsdigita.developersupport.Comodifications;
import com.arsdigita.util.LockableImpl;
import java.math.BigDecimal;
/**
*
* @author Jens Pelzetter
* @version $Id$
*/
public class GenericOrganizationalUnitPublicationsTable
extends Table {
private final String TABLE_COL_EDIT = "table_col_edit";
private final String TABLE_COL_DEL = "table_col_del";
private ItemSelectionModel itemModel;
public GenericOrganizationalUnitPublicationsTable(
final ItemSelectionModel itemModel) {
super();
this.itemModel = itemModel;
setEmptyView(new Label(PublicationGlobalizationUtil.globalize(
"genericorganizationalunit.ui.publications.none")));
final TableColumnModel columnModel = getColumnModel();
columnModel.add(new TableColumn(
0,
PublicationGlobalizationUtil.globalize(
"genericorganizationalunit.ui.publications.columns.name"),
TABLE_COL_EDIT));
columnModel.add(new TableColumn(
1,
PublicationGlobalizationUtil.globalize(
"genericorganizationalunit.ui.publications.columns.remove"),
TABLE_COL_DEL));
setModelBuilder(new ModelBuilder(itemModel));
columnModel.get(0).setCellRenderer(new EditCellRenderer());
columnModel.get(1).setCellRenderer(new DeleteCellRenderer());
addTableActionListener(new ActionListener());
}
private class ModelBuilder
extends LockableImpl
implements TableModelBuilder {
private final ItemSelectionModel itemModel;
public ModelBuilder(final ItemSelectionModel itemModel) {
this.itemModel = itemModel;
}
public TableModel makeModel(final Table table,
final PageState state) {
table.getRowSelectionModel().clearSelection(state);
final GenericOrganizationalUnit orgaunit =
(GenericOrganizationalUnit) itemModel.
getSelectedObject(state);
return new Model(table, state, orgaunit);
}
}
private class Model implements TableModel {
private final Table table;
private final GenericOrganizationalUnitPublicationsCollection publications;
public Model(final Table table,
final PageState state,
final GenericOrganizationalUnit orgaunit) {
this.table = table;
publications = Publication.getPublications(orgaunit);
}
@Override
public int getColumnCount() {
return table.getColumnModel().size();
}
public boolean nextRow() {
boolean ret;
if ((publications != null) && publications.next()) {
ret = true;
} else {
ret = false;
}
return ret;
}
@Override
public Object getElementAt(final int columnIndex) {
switch (columnIndex) {
case 0:
return publications.getTitle();
case 1:
return PublicationGlobalizationUtil.globalize(
"genericorganizationalunit.ui.publications.remove").
localize();
default:
return null;
}
}
@Override
public Object getKeyAt(int columnIndex) {
return publications.getID();
}
}
private class EditCellRenderer
extends LockableImpl
implements TableCellRenderer {
public Component getComponent(final Table table,
final PageState state,
final Object value,
final boolean isSelected,
final Object key,
final int row,
final int column) {
final com.arsdigita.cms.SecurityManager securityManager = Utilities.
getSecurityManager(state);
final Publication publication = new Publication((BigDecimal) key);
final boolean canEdit = securityManager.canAccess(
state.getRequest(),
com.arsdigita.cms.SecurityManager.EDIT_ITEM,
publication);
if (canEdit) {
final ContentSection section = CMS.getContext().
getContentSection();
final ItemResolver resolver = section.getItemResolver();
final Link link = new Link(
String.format("%s (%s)",
value.toString(),
publication.getLanguage()),
resolver.generateItemURL(state,
publication,
section,
publication.getVersion()));
return link;
} else {
final Label label = new Label(String.format("%s (%s)",
value.toString(),
publication.
getLanguage()));
return label;
}
}
}
private class DeleteCellRenderer
extends LockableImpl
implements TableCellRenderer {
public Component getComponent(final Table table,
final PageState state,
final Object value,
final boolean isSelected,
final Object key,
final int row,
final int column) {
final com.arsdigita.cms.SecurityManager securityManager = Utilities.
getSecurityManager(state);
final GenericOrganizationalUnit orgaunit =
(GenericOrganizationalUnit) itemModel.
getSelectedObject(state);
final boolean canEdit = securityManager.canAccess(
state.getRequest(),
com.arsdigita.cms.SecurityManager.DELETE_ITEM,
orgaunit);
if (canEdit) {
final ControlLink link = new ControlLink(value.toString());
link.setConfirmation((String) PublicationGlobalizationUtil.
globalize(
"genericorganizationalunit.ui.publications.remove.confirm").
localize());
return link;
} else {
final Label label = new Label(value.toString());
return label;
}
}
}
private class ActionListener implements TableActionListener {
public void cellSelected(final TableActionEvent event) {
final PageState state = event.getPageState();
final Publication publication = new Publication((BigDecimal) event.
getRowKey());
final GenericOrganizationalUnit orgaunit =
(GenericOrganizationalUnit) itemModel.
getSelectedObject(state);
final TableColumn column = getColumnModel().get(event.getColumn().
intValue());
if (TABLE_COL_EDIT.equals(column.getHeaderKey().toString())) {
//Nothing to do yet
} else if (TABLE_COL_DEL.equals(column.getHeaderKey().toString())) {
Publication.removePublication(orgaunit, publication);
}
}
public void headSelected(final TableActionEvent event) {
//Nothing
}
}
}

View File

@ -0,0 +1,109 @@
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.GenericOrganizationalUnit;
import com.arsdigita.cms.contenttypes.Publication;
import com.arsdigita.cms.contenttypes.PublicationGenericOrganizationalsUnitCollection;
import com.arsdigita.cms.ui.ItemSearchWidget;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
import com.arsdigita.persistence.DataCollection;
/**
*
* @author Jens Pelzetter
* @version $Id$
*/
public class PublicationGenericOrganizationalUnitAddForm
extends BasicItemForm
implements FormProcessListener,
FormInitListener {
private ItemSearchWidget itemSearch;
private final static String ITEM_SEARCH = "organizationalunits";
public PublicationGenericOrganizationalUnitAddForm(
final ItemSelectionModel itemModel) {
super("PublicationGenericOrganizationalUnitAddForm", itemModel);
}
@Override
public void addWidgets() {
add(new Label((String) PublicationGlobalizationUtil.globalize(
"publications.ui.orgaunit.select").localize()));
itemSearch = new ItemSearchWidget(ITEM_SEARCH, ContentType.
findByAssociatedObjectType(GenericOrganizationalUnit.class.
getName()));
add(itemSearch);
}
@Override
public void init(final FormSectionEvent fse) throws FormProcessException {
final PageState state = fse.getPageState();
setVisible(state, true);
}
@Override
public void process(final FormSectionEvent fse) throws FormProcessException {
final FormData data = fse.getFormData();
final PageState state = fse.getPageState();
final Publication publication = (Publication) getItemSelectionModel().
getSelectedObject(state);
if ((publication != null)
&& (getSaveCancelSection().getSaveButton().isSelected(state))) {
GenericOrganizationalUnit orgaunit =
(GenericOrganizationalUnit) data.get(
ITEM_SEARCH);
orgaunit = (GenericOrganizationalUnit) orgaunit.getContentBundle().
getInstance(publication.getLanguage(), true);
}
init(fse);
}
@Override
public void validate(final FormSectionEvent fse) throws FormProcessException {
final PageState state = fse.getPageState();
final FormData data = fse.getFormData();
if (data.get(ITEM_SEARCH) == null) {
data.addError(PublicationGlobalizationUtil.globalize(
"publications.ui.orgaunit.select.nothing"));
return;
}
final Publication publication = (Publication) getItemSelectionModel().
getSelectedObject(state);
GenericOrganizationalUnit orgaunit = (GenericOrganizationalUnit) data.
get(ITEM_SEARCH);
if (!(orgaunit.getContentBundle().hasInstance(publication.getLanguage(),
true))) {
data.addError(PublicationGlobalizationUtil.globalize(
"publications.ui.orgaunit.no_suitable_language_variant"));
return;
}
orgaunit = (GenericOrganizationalUnit) orgaunit.getContentBundle().
getInstance(publication.getLanguage(), true);
final PublicationGenericOrganizationalsUnitCollection orgaunits =
publication.
getOrganizationalUnits();
orgaunits.addFilter(
String.format("id = %s", orgaunit.getID().toString()));
if (orgaunits.size() > 0) {
data.addError(PublicationGlobalizationUtil.globalize(
"publications.ui.orgaunit.already_added"));
}
orgaunits.close();
}
}

View File

@ -0,0 +1,41 @@
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.cms.ItemSelectionModel;
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
* @version $Id$
*/
public class PublicationGenericOrganizationalUnitsStep extends SimpleEditStep {
private String ADD_ORGAUNIT_SHEET_NAME = "PublicationGenericOrganizationalUnitAddForm";
public PublicationGenericOrganizationalUnitsStep(
final ItemSelectionModel itemModel,
final AuthoringKitWizard parent) {
this(itemModel, parent, null);
}
public PublicationGenericOrganizationalUnitsStep(
final ItemSelectionModel itemModel,
final AuthoringKitWizard parent,
final String prefix) {
super(itemModel, parent, prefix);
final BasicItemForm addOrgaUnitSheet = new PublicationGenericOrganizationalUnitAddForm(
itemModel);
add(ADD_ORGAUNIT_SHEET_NAME,
(String) PublicationGlobalizationUtil.globalize("publications.ui.orgaunit.add").localize(),
new WorkflowLockedComponentAccess(addOrgaUnitSheet, itemModel),
addOrgaUnitSheet.getSaveCancelSection().getCancelButton());
final PublicationGenericOrganizationalUnitsTable orgaunitsTable = new PublicationGenericOrganizationalUnitsTable(
itemModel);
setDisplayComponent(orgaunitsTable);
}
}

View File

@ -0,0 +1,239 @@
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.contenttypes.GenericOrganizationalUnit;
import com.arsdigita.cms.contenttypes.Publication;
import com.arsdigita.cms.contenttypes.PublicationGenericOrganizationalsUnitCollection;
import com.arsdigita.cms.dispatcher.ItemResolver;
import com.arsdigita.cms.dispatcher.Utilities;
import com.arsdigita.util.Assert;
import com.arsdigita.util.LockableImpl;
import java.math.BigDecimal;
/**
*
* @author Jens Pelzetter
* @version $Id$
*/
public class PublicationGenericOrganizationalUnitsTable extends Table {
private final String TABLE_COL_EDIT = "table_col_edit";
private final String TABLE_COL_DEL = "table_col_del";
private ItemSelectionModel itemModel;
public PublicationGenericOrganizationalUnitsTable(
final ItemSelectionModel itemModel) {
super();
this.itemModel = itemModel;
setEmptyView(new Label(PublicationGlobalizationUtil.globalize(
"publications.ui.orgaunits.none")));
final TableColumnModel columnModel = getColumnModel();
columnModel.add(new TableColumn(
0,
PublicationGlobalizationUtil.globalize(
"publications.ui.orgaunits.columns.name").localize(),
TABLE_COL_EDIT));
columnModel.add(new TableColumn(
1,
PublicationGlobalizationUtil.globalize(
"publications.ui.orgaunits.columns.remove").localize(),
TABLE_COL_EDIT));
setModelBuilder(new ModelBuilder(itemModel));
columnModel.get(0).setCellRenderer(new EditCellRenderer());
columnModel.get(1).setCellRenderer(new DeleteCellRenderer());
addTableActionListener(new ActionListener());
}
private class ModelBuilder
extends LockableImpl
implements TableModelBuilder {
private final ItemSelectionModel itemModel;
public ModelBuilder(final ItemSelectionModel itemModel) {
this.itemModel = itemModel;
}
public TableModel makeModel(final Table table,
final PageState state) {
table.getRowSelectionModel().clearSelection(state);
final Publication publication = (Publication) itemModel.
getSelectedObject(state);
return new Model(table, state, publication);
}
}
private class Model implements TableModel {
private final Table table;
private final PublicationGenericOrganizationalsUnitCollection orgaunits;
public Model(final Table table,
final PageState state,
final Publication publication) {
this.table = table;
orgaunits = publication.getOrganizationalUnits();
}
public int getColumnCount() {
return table.getColumnModel().size();
}
public boolean nextRow() {
boolean ret;
if ((orgaunits != null) && orgaunits.next()) {
ret = true;
} else {
ret = false;
}
return ret;
}
public Object getElementAt(final int columnIndex) {
switch (columnIndex) {
case 0:
return orgaunits.getTitle();
case 1:
return PublicationGlobalizationUtil.globalize(
"publications.ui.orgaunits.remove");
default:
return null;
}
}
public Object getKeyAt(final int columnIndex) {
return orgaunits.getID();
}
}
private class EditCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(final Table table,
final PageState state,
final Object value,
final boolean isSelected,
final Object key,
final int row,
final int column) {
final com.arsdigita.cms.SecurityManager securityManager = Utilities.
getSecurityManager(state);
final GenericOrganizationalUnit orgaunit =
new GenericOrganizationalUnit(
(BigDecimal) key);
final boolean canEdit = securityManager.canAccess(
state.getRequest(),
com.arsdigita.cms.SecurityManager.EDIT_ITEM,
orgaunit);
if (canEdit) {
final ContentSection section = CMS.getContext().
getContentSection();
final ItemResolver resolver = section.getItemResolver();
final Link link = new Link(
String.format("%s (%s)",
value.toString(),
orgaunit.getLanguage()),
resolver.generateItemURL(state,
orgaunit,
section,
orgaunit.getVersion()));
return link;
} else {
final Label label = new Label(String.format(
"%s (%s)",
value.toString(),
orgaunit.getLanguage()));
return label;
}
}
}
private class DeleteCellRenderer
extends LockableImpl
implements TableCellRenderer {
@Override
public Component getComponent(final Table table,
final PageState state,
final Object value,
final boolean isSelected,
final Object key,
final int row,
final int column) {
final com.arsdigita.cms.SecurityManager securityManager = Utilities.
getSecurityManager(state);
final Publication publication =
(Publication) itemModel.
getSelectedObject(state);
boolean canEdit = securityManager.canAccess(
state.getRequest(),
com.arsdigita.cms.SecurityManager.EDIT_ITEM,
publication);
if (canEdit) {
final ControlLink link = new ControlLink(value.toString());
link.setConfirmation((String)PublicationGlobalizationUtil.globalize("publications.ui.orgaunits.remove.confirm").localize());
return link;
} else {
final Label label = new Label("");
return label;
}
}
}
private class ActionListener implements TableActionListener {
@Override
public void cellSelected(final TableActionEvent event) {
final PageState state =event.getPageState();
final GenericOrganizationalUnit orgaunit = new GenericOrganizationalUnit((BigDecimal) event.getRowKey());
final Publication publication = (Publication) itemModel.getSelectedObject(state);
final TableColumn column = getColumnModel().get(event.getColumn().intValue());
if (TABLE_COL_EDIT.equals(column.getHeaderKey().toString())) {
//Nothing yet
} else if(TABLE_COL_DEL.equals(column.getHeaderKey().toString())) {
Assert.exists(orgaunit, GenericOrganizationalUnit.class);
publication.removeOrganizationalUnit(orgaunit);
}
}
@Override
public void headSelected(final TableActionEvent event) {
//Nothing yet
}
}
}

View File

@ -359,3 +359,22 @@ publications.ui.series.volume_of_series.no_suitable_language_variant=The selecte
publications.ui.series.volume_of_series.already_added=The selected publication has already been added to the series. publications.ui.series.volume_of_series.already_added=The selected publication has already been added to the series.
publications.ui.unpublished.organization.no_orga_selected=No organization selected. publications.ui.unpublished.organization.no_orga_selected=No organization selected.
publications.ui.unpublished.organization.no_suitable_language_variant=The selected organization item is not available for the language of the current item. publications.ui.unpublished.organization.no_suitable_language_variant=The selected organization item is not available for the language of the current item.
genericorganizationalunit.ui.add_publication=Add publication
genericorganizationalunit.ui.publication.select.nothing=No publication selected.
genericorganizationalunit.ui.publication.no_suitable_language_variant=The selected publication has not suitable language variant.
genericorganizationalunit.ui.publication.already_added=The selected publication has already been added to this organizational unit.
genericorganizationalunit.ui.publications.none=No publications
genericorganizationalunit.ui.publications.remove=Remove
genericorganizationalunit.ui.publications.remove.confirm=Are you sure to remove the selected publication from the list of publications of this organization?
publications.ui.orgaunit.select=Organization(al unit)
publications.ui.orgaunit.select.nothing=No organization(al unit) selected.
publications.ui.orgaunit.no_suitable_language_variant=The selected organization(al unit) has no suitable language variant.
publications.ui.orgaunit.already_added=This publication has already been added to the list of publication of the selected organization(al unit).
publications.ui.orgaunits.none=This publication is not part of any list of publication of a organization(al) unit
publications.ui.orgaunits.remove=Remove
publications.ui.orgaunits.columns.name=Name of the organization(al unit)
publications.ui.orgaunit.add=Add organization(al unit)
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

View File

@ -358,3 +358,22 @@ publications.ui.series.volume_of_series.no_suitable_language_variant=Das ausgew\
publications.ui.series.volume_of_series.already_added=Die ausgew\u00e4hlte Publikation wurde der aktuellen Reihe bereits hinzugef\u00fcgt. publications.ui.series.volume_of_series.already_added=Die ausgew\u00e4hlte Publikation wurde der aktuellen Reihe bereits hinzugef\u00fcgt.
publications.ui.unpublished.organization.no_orga_selected=Keine Organisation ausgew\u00e4hlt. publications.ui.unpublished.organization.no_orga_selected=Keine Organisation ausgew\u00e4hlt.
publications.ui.unpublished.organization.no_suitable_language_variant=Das ausgew\u00e4hlte Item ist nicht f\u00fcr die Sprache des aktuellen Items verf\u00fcgbar. publications.ui.unpublished.organization.no_suitable_language_variant=Das ausgew\u00e4hlte Item ist nicht f\u00fcr die Sprache des aktuellen Items verf\u00fcgbar.
genericorganizationalunit.ui.add_publication=Publikation hinzuf\u00fcgen
genericorganizationalunit.ui.publication.select.nothing=Keine Publikation ausgew\u00e4hlt.
genericorganizationalunit.ui.publication.no_suitable_language_variant=Die ausgew\u00e4hlte Publikation hat keine passende Sprachvariante.
genericorganizationalunit.ui.publication.already_added=Die ausgew\u00e4hlte Publikation wurde dieser Organisation bereits hinzugef\u00fcgt.
genericorganizationalunit.ui.publications.none=Keine Publikationen
genericorganizationalunit.ui.publications.remove=Entfernen
genericorganizationalunit.ui.publications.remove.confirm=Sind Sie sicher, dass Sie die ausgew\u00e4hlte Publikations aus der Liste der Publikationen dieser Organsation entfernen wollen?
publications.ui.orgaunit.select=Organisation(seinheit)
publications.ui.orgaunit.select.nothing=Keine Organisation(seinheit) ausgew\u00e4hlt.
publications.ui.orgaunit.no_suitable_language_variant=Die ausgew\u00e4hlte Organisation(seinheit) hat keine passende Sprachvariante.
publications.ui.orgaunit.already_added=Diese Publikation wurde bereits der Liste der Publikationen der ausgew\u00e4hlten Organisation(seinheit) zugewiesen.
publications.ui.orgaunits.none=Diese Publikation ist nicht Teil einer Publikationsliste einer Organisation(s)einheit
publications.ui.orgaunits.remove=Entfernen
publications.ui.orgaunits.columns.name=Name der Organisation(seinheit)
publications.ui.orgaunit.add=Organisation hinzuf\u00fcgen
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