From 0bd2770fe12bfb16851ff15d67547cbcd6f30835 Mon Sep 17 00:00:00 2001 From: jensp Date: Mon, 14 Mar 2011 19:42:57 +0000 Subject: [PATCH] =?UTF-8?q?Fehlerkorrekturen=20f=C3=BCr=20verschiedene=20A?= =?UTF-8?q?ssoziationen,=20da=20CCM=20nicht=20mit=20ContentItems=20als=20c?= =?UTF-8?q?omponents=20klar=20kommt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.libreccm.org/ccm/trunk@785 8810af33-2d31-482b-a856-94f89814c4df --- .../arsdigita/cms/dabin/DaBInImporter.java | 6 +- ...GenericOrganizationalUnitContactTable.java | 5 +- .../CategoryLocalizationCollection.java | 40 ++-- .../com/arsdigita/content-types/Expertise.pdl | 37 +++- .../content-types/InternetArticle.pdl | 20 +- .../arsdigita/content-types/Proceedings.pdl | 18 +- .../PublicationWithPublisher.pdl | 19 +- .../arsdigita/content-types/UnPublished.pdl | 20 +- .../arsdigita/cms/contenttypes/Expertise.xml | 21 ++ .../cms/contenttypes/InternetArticle.xml | 20 ++ .../cms/contenttypes/Proceedings.xml | 3 +- .../cms/contenttypes/UnPublished.xml | 20 ++ .../arsdigita/cms/contenttypes/Expertise.java | 64 ++++-- .../cms/contenttypes/InternetArticle.java | 34 ++- .../cms/contenttypes/Proceedings.java | 31 ++- .../PublicationWithPublisher.java | 33 ++- .../cms/contenttypes/UnPublished.java | 38 +++- .../contenttypes/ui/ExpertiseOrdererForm.java | 62 ++++++ .../ui/ExpertiseOrdererSheet.java | 202 +++++++++++++++++ .../contenttypes/ui/ExpertiseOrdererStep.java | 38 ++++ .../ui/ExpertiseOrganizationForm.java | 62 ++++++ .../ui/ExpertiseOrganizationSheet.java | 203 +++++++++++++++++ .../ui/ExpertiseOrganizationStep.java | 39 ++++ .../ui/ExpertisePropertiesStep.java | 21 +- .../ui/ExpertisePropertyForm.java | 43 +--- .../ui/InternetArticleOrganizationForm.java | 63 ++++++ .../ui/InternetArticleOrganizationSheet.java | 208 +++++++++++++++++ .../ui/InternetArticleOrganizationStep.java | 40 ++++ .../ui/InternetArticlePropertiesStep.java | 15 +- .../ui/InternetArticlePropertyForm.java | 21 +- .../ui/ProceedingsOrganizerForm.java | 64 ++++++ .../ui/ProceedingsOrganizerSheet.java | 205 +++++++++++++++++ .../ui/ProceedingsOrganizerStep.java | 38 ++++ .../ui/ProceedingsPropertiesStep.java | 7 +- .../ui/ProceedingsPropertyForm.java | 22 +- .../ui/PublicationResources.properties | 25 +++ .../ui/PublicationResources_de.properties | 25 +++ ...ublicationWithPublisherPropertiesStep.java | 23 +- .../PublicationWithPublisherPropertyForm.java | 17 +- ...licationWithPublisherSetPublisherForm.java | 67 ++++++ ...icationWithPublisherSetPublisherSheet.java | 209 ++++++++++++++++++ ...licationWithPublisherSetPublisherStep.java | 39 ++++ .../ui/UnPublishedOrganizationForm.java | 63 ++++++ .../ui/UnPublishedOrganizationSheet.java | 202 +++++++++++++++++ .../ui/UnPublishedOrganizationStep.java | 39 ++++ .../ui/UnPublishedPropertiesStep.java | 25 ++- .../ui/UnPublishedPropertyForm.java | 17 +- .../cms/contenttypes/SciDepartment.java | 5 +- .../navigation/templates/SpecializingList.jsp | 3 +- 49 files changed, 2320 insertions(+), 221 deletions(-) create mode 100644 ccm-sci-publications/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/Expertise.xml create mode 100644 ccm-sci-publications/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/InternetArticle.xml create mode 100644 ccm-sci-publications/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/UnPublished.xml create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrdererForm.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrdererSheet.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrdererStep.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrganizationForm.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrganizationSheet.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrganizationStep.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleOrganizationForm.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleOrganizationSheet.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleOrganizationStep.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsOrganizerForm.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsOrganizerSheet.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsOrganizerStep.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherSetPublisherForm.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherSetPublisherSheet.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherSetPublisherStep.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedOrganizationForm.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedOrganizationSheet.java create mode 100644 ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedOrganizationStep.java diff --git a/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/DaBInImporter.java b/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/DaBInImporter.java index ba70708ce..aa68487f0 100644 --- a/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/DaBInImporter.java +++ b/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/DaBInImporter.java @@ -1952,7 +1952,7 @@ public class DaBInImporter extends Program { String.format("kontakt-%s", personEn.getName())); contactEn.setTitle(String.format("Kontakt %s", personEn.getTitle())); - contactEn.setPerson(personDe, "commonContact"); + contactEn.setPerson(personEn, "commonContact"); String homepage = null; while (contactData.hasMoreTokens()) { String token; @@ -2983,8 +2983,12 @@ public class DaBInImporter extends Program { workingPaper.setLifecycle(createLifecycle(publicationsLifecycle)); workingPaper.setContentSection(publicationsSection); + if (workingPaperDe != null) { workingPaperDe.setContentSection(publicationsSection); + } + if (workingPaperEn != null) { workingPaperEn.setContentSection(publicationsSection); + } workingPaperMap.put(workingPaperData.getDabinId(), workingPaper); insertIntoAZFolder(workingPaper, publicationsAlpha); diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitContactTable.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitContactTable.java index 857ded69e..24865df6d 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitContactTable.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitContactTable.java @@ -207,7 +207,10 @@ public class GenericOrganizationalUnitContactTable extends Table implements + "found for '%s' for language '%s' Using key.", m_contactCollection.getContactType(), lang)); - return m_contactCollection.getContactType(); + String contactType = + m_contactCollection.getContactType(); + m_contacttypes.close(); + return contactType; } else { s_log.debug(String.format( "Human readable contact type is: \"%s\"...", diff --git a/ccm-core/src/com/arsdigita/categorization/CategoryLocalizationCollection.java b/ccm-core/src/com/arsdigita/categorization/CategoryLocalizationCollection.java index 003cf1999..3f0e014d5 100644 --- a/ccm-core/src/com/arsdigita/categorization/CategoryLocalizationCollection.java +++ b/ccm-core/src/com/arsdigita/categorization/CategoryLocalizationCollection.java @@ -16,7 +16,6 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ - package com.arsdigita.categorization; import com.arsdigita.kernel.ACSObject; @@ -33,15 +32,15 @@ import com.arsdigita.persistence.DataCollection; * @author Sören Bernstein (quasimodo) quasi@zes.uni-bremen.de **/ public class CategoryLocalizationCollection extends ACSObjectCollection { - + public CategoryLocalizationCollection(Category category) { super(category.getLocalizations().getDataCollection()); } - + public CategoryLocalizationCollection(DataCollection dataCollection) { super(dataCollection); } - + /** * Returns the locale of the categoryLocalization. * @@ -51,7 +50,7 @@ public class CategoryLocalizationCollection extends ACSObjectCollection { public String getLocale() { return getCategoryLocalization().getLocale(); } - + /** * Returns the name of the category. * @@ -61,7 +60,7 @@ public class CategoryLocalizationCollection extends ACSObjectCollection { public String getName() { return getCategoryLocalization().getName(); } - + /** * Returns the description. * @@ -71,7 +70,7 @@ public class CategoryLocalizationCollection extends ACSObjectCollection { public String getDescription() { return getCategoryLocalization().getDescription(); } - + /** * Returns the URL. * @@ -81,7 +80,7 @@ public class CategoryLocalizationCollection extends ACSObjectCollection { public String getURL() { return getCategoryLocalization().getURL(); } - + /** * Determines the current state of the category. * @@ -92,7 +91,7 @@ public class CategoryLocalizationCollection extends ACSObjectCollection { public boolean isEnabled() { return getCategoryLocalization().isEnabled(); } - + /** * Wrapper to getDomainObject() that casts the returned * DomainObject as a CategoryLocalization. @@ -103,7 +102,7 @@ public class CategoryLocalizationCollection extends ACSObjectCollection { public CategoryLocalization getCategoryLocalization() { return (CategoryLocalization) getDomainObject(); } - + @Override public ACSObject getACSObject() { return getCategoryLocalization(); @@ -115,37 +114,38 @@ public class CategoryLocalizationCollection extends ACSObjectCollection { * @return result of the search. If true, the CollectionCursor is set to the position of the requested locale. */ public boolean localizationExists(String locale) { - + // Really string comparison using != ?? // && !locale.isEmpty() ? - if(!m_dataCollection.isEmpty() && locale != "") { - + if (!m_dataCollection.isEmpty() && locale != "") { + // First check, if we are already at the right position. This will speed up repeated access for the same locale - if(this.getPosition() > 0 && this.getCategoryLocalization().getLocale().equals(locale)) { + if (this.getPosition() > 0 && this.getCategoryLocalization(). + getLocale().equals(locale)) { return true; } - + // Nope, so we have to start a search this.rewind(); - while(this.next()) { - if(this.getCategoryLocalization().getLocale().equals(locale)) { + while (this.next()) { + if (this.getCategoryLocalization().getLocale().equals(locale)) { return true; } } } - + // Not found return false; } - + /** * Sorts the category collection by the category sort key. * * @see CategorizedCollection#sort(boolean) **/ public final void sort(boolean ascending) { - if ( ascending ) { + if (ascending) { addOrder("link.sortKey asc"); } else { addOrder("link.sortKey desc"); diff --git a/ccm-sci-publications/pdl/com/arsdigita/content-types/Expertise.pdl b/ccm-sci-publications/pdl/com/arsdigita/content-types/Expertise.pdl index 1db63513a..659534bdf 100644 --- a/ccm-sci-publications/pdl/com/arsdigita/content-types/Expertise.pdl +++ b/ccm-sci-publications/pdl/com/arsdigita/content-types/Expertise.pdl @@ -25,14 +25,37 @@ import com.arsdigita.cms.ContentPage; // PDL definition for an expertise object type Expertise extends Publication { - String[0..1] place = ct_expertise.place VARCHAR(256); - component GenericOrganizationalUnit[0..1] organization = join ct_expertise.organization_id - to cms_organizationalunits.organizationalunit_id; - Integer[0..1] numberOfPages = ct_expertise.number_of_pages INTEGER; - component GenericOrganizationalUnit[0..1] orderer = join ct_expertise.orderer_id - to cms_organizationalunits.organizationalunit_id; + String[0..1] place = ct_expertise.place VARCHAR(256); + Integer[0..1] numberOfPages = ct_expertise.number_of_pages INTEGER; reference key (ct_expertise.expertise_id); - +} + +association { + Expertise[0..n] expertise = join cms_organizationalunits.organizationalunit_id + to ct_expertise_organization_map.organization_id, + join ct_expertise_organization_map.experise_id + to ct_expertise.expertise_id; + + GenericOrganizationalUnit[0..n] organization = join ct_expertise.expertise_id + to ct_expertise_organization_map.experise_id, + join ct_expertise_organization_map.organization_id + to cms_organizationalunits.organizationalunit_id; + + Integer[0..1] orgaOrder = ct_expertise_organization_map.orga_order INTEGER; +} + +association { + Expertise[0..n] orderedExpertise = join cms_organizationalunits.organizationalunit_id + to ct_expertise_orderer_map.orderer_id, + join ct_expertise_orderer_map.experise_id + to ct_expertise.expertise_id; + + GenericOrganizationalUnit[0..n] orderer = join ct_expertise.expertise_id + to ct_expertise_orderer_map.experise_id, + join ct_expertise_orderer_map.orderer_id + to cms_organizationalunits.organizationalunit_id; + + Integer[0..1] ordererOrder = ct_expertise_orderer_map.orderer_order INTEGER; } diff --git a/ccm-sci-publications/pdl/com/arsdigita/content-types/InternetArticle.pdl b/ccm-sci-publications/pdl/com/arsdigita/content-types/InternetArticle.pdl index 4816c7a01..1e10be31a 100644 --- a/ccm-sci-publications/pdl/com/arsdigita/content-types/InternetArticle.pdl +++ b/ccm-sci-publications/pdl/com/arsdigita/content-types/InternetArticle.pdl @@ -25,14 +25,26 @@ import com.arsdigita.cms.ContentPage; // PDL definition for a InternetArticle publication object type InternetArticle extends Publication { - String[0..1] place = ct_internet_article.place VARCHAR(256); - component GenericOrganizationalUnit[0..1] organization = join ct_internet_article.organization_id - to cms_organizationalunits.organizationalunit_id; + String[0..1] place = ct_internet_article.place VARCHAR(256); String[0..1] number = ct_internet_article.number VARCHAR(128); Integer[0..1] numberOfPages = ct_internet_article.number_of_pages INTEGER; String[0..1] edition = ct_internet_article.edition VARCHAR(256); String[0..1] issn = ct_internet_article.issn VARCHAR(9); Date[0..1] publicationDate = ct_internet_article.publicationDate DATE; - reference key (ct_internet_article.internet_article_Id); + reference key (ct_internet_article.internet_article_id); +} + +association { + InternetArticle[0..n] internetArticle = join cms_organizationalunits.organizationalunit_id + to ct_internet_article_organization_map.organization_id, + join ct_internet_article_organization_map.internet_article_id + to ct_internet_article.internet_article_id; + + GenericOrganizationalUnit[0..n] organization = join ct_internet_article.internet_article_id + to ct_internet_article_organization_map.internet_article_id, + join ct_internet_article_organization_map.organization_id + to cms_organizationalunits.organizationalunit_id; + + Integer[0..1] orgaOrder = ct_internet_article_organization_map.orga_order INTEGER; } \ No newline at end of file diff --git a/ccm-sci-publications/pdl/com/arsdigita/content-types/Proceedings.pdl b/ccm-sci-publications/pdl/com/arsdigita/content-types/Proceedings.pdl index 3b1ab1cbb..4ed480177 100644 --- a/ccm-sci-publications/pdl/com/arsdigita/content-types/Proceedings.pdl +++ b/ccm-sci-publications/pdl/com/arsdigita/content-types/Proceedings.pdl @@ -24,9 +24,7 @@ import com.arsdigita.cms.ContentPage; // PDL definition for proceedings object type Proceedings extends PublicationWithPublisher { - - component GenericOrganizationalUnit[0..1] organizerOfConference = join ct_proceedings.organizer_id - to cms_organizationalunits.organizationalunit_id; + String[0..1] nameOfConference = ct_proceedings.nameOfConference; String[0..1] placeOfConference = ct_proceedings.place_of_conference; Date[0..1] dateFromOfConference = ct_proceedings.date_from_of_conference DATE; @@ -35,6 +33,20 @@ object type Proceedings extends PublicationWithPublisher { reference key (ct_proceedings.proceedings_id); } +association { + Proceedings[0..n] proceedingOfConference = join cms_organizationalunits.organizationalunit_id + to ct_proceedings_organizer_map.organizer_id, + join ct_proceedings_organizer_map.proceeding_id + to ct_proceedings.proceedings_id; + + GenericOrganizationalUnit[0..n] organizerOfConference = join ct_proceedings.proceedings_id + to ct_proceedings_organizer_map.proceeding_id, + join ct_proceedings_organizer_map.organizer_id + to cms_organizationalunits.organizationalunit_id; + + Integer[0..1] organizerOrder = ct_proceedings_organizer_map.organizer_order INTEGER; +} + association { Proceedings[0..n] proceedings = join ct_inproceedings.inproceedings_id diff --git a/ccm-sci-publications/pdl/com/arsdigita/content-types/PublicationWithPublisher.pdl b/ccm-sci-publications/pdl/com/arsdigita/content-types/PublicationWithPublisher.pdl index de25375d2..ff1945a73 100644 --- a/ccm-sci-publications/pdl/com/arsdigita/content-types/PublicationWithPublisher.pdl +++ b/ccm-sci-publications/pdl/com/arsdigita/content-types/PublicationWithPublisher.pdl @@ -30,10 +30,21 @@ object type PublicationWithPublisher extends Publication { Integer[0..1] numberOfVolumes = ct_publication_with_publisher.number_of_volumes INTEGER; Integer[0..1] numberOfPages = ct_publication_with_publisher._number_of_pages INTEGER; String[0..1] edition = ct_publication_with_publisher.edition VARCHAR(256); - component Publisher[0..1] publisher = join ct_publication_with_publisher.publisher_id - to ct_publisher.publisher_id; - + reference key (ct_publication_with_publisher.publication_with_publisher_id); - +} + +association { + PublicationWithPublisher[0..n] publication = join ct_publisher.publisher_id + to ct_publication_with_publisher_publisher_map.publisher_id, + join ct_publication_with_publisher_publisher_map.publication_id + to ct_publication_with_publisher.publication_with_publisher_id; + + Publisher[0..n] publisher = join ct_publication_with_publisher.publication_with_publisher_id + to ct_publication_with_publisher_publisher_map.publication_id, + join ct_publication_with_publisher_publisher_map.publisher_id + to ct_publisher.publisher_id; + + Integer[0..1] publisherOrder = ct_publication_with_publisher_publisher_map.publisher_order INTEGER; } diff --git a/ccm-sci-publications/pdl/com/arsdigita/content-types/UnPublished.pdl b/ccm-sci-publications/pdl/com/arsdigita/content-types/UnPublished.pdl index 4399d846e..7e83cd68d 100644 --- a/ccm-sci-publications/pdl/com/arsdigita/content-types/UnPublished.pdl +++ b/ccm-sci-publications/pdl/com/arsdigita/content-types/UnPublished.pdl @@ -20,16 +20,28 @@ model com.arsdigita.cms.contenttypes; -import com.arsdigita.cms.ContentPage; +import com.arsdigita.cms.*; //PDL definition for an unpublished publication (grey literature) object type UnPublished extends Publication { - String[0..1] place = ct_unpublished.place VARCHAR(256); - component GenericOrganizationalUnit[0..1] organization = join ct_unpublished.organization_id - to cms_organizationalunits.organizationalunit_id; + String[0..1] place = ct_unpublished.place VARCHAR(256); String[0..1] number = ct_unpublished.number VARCHAR(128); Integer[0..1] numberOfPages = ct_unpublished.number_of_pages INTEGER; reference key (ct_unpublished.unpublished_id); +} + +association { + UnPublished[0..n] unPublished = join cms_organizationalunits.organizationalunit_id + to ct_unpublished_organization_map.organization_id, + join ct_unpublished_organization_map.unpublished_id + to ct_unpublished.unpublished_id; + + GenericOrganizationalUnit[0..n] organization = join ct_unpublished.unpublished_id + to ct_unpublished_organization_map.unpublished_id, + join ct_unpublished_organization_map.organization_id + to cms_organizationalunits.organizationalunit_id; + + Integer[0..1] orgaOrder = ct_unpublished_organization_map.orga_order INTEGER; } \ No newline at end of file diff --git a/ccm-sci-publications/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/Expertise.xml b/ccm-sci-publications/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/Expertise.xml new file mode 100644 index 000000000..763afe5ab --- /dev/null +++ b/ccm-sci-publications/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/Expertise.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ccm-sci-publications/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/InternetArticle.xml b/ccm-sci-publications/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/InternetArticle.xml new file mode 100644 index 000000000..940697d1d --- /dev/null +++ b/ccm-sci-publications/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/InternetArticle.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ccm-sci-publications/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/Proceedings.xml b/ccm-sci-publications/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/Proceedings.xml index 14c27a909..3698bbb22 100644 --- a/ccm-sci-publications/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/Proceedings.xml +++ b/ccm-sci-publications/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/Proceedings.xml @@ -10,7 +10,8 @@ extends="com.arsdigita.cms.contenttypes.PublicationWithPublisher"> - + + diff --git a/ccm-sci-publications/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/UnPublished.xml b/ccm-sci-publications/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/UnPublished.xml new file mode 100644 index 000000000..f2c4571bc --- /dev/null +++ b/ccm-sci-publications/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/UnPublished.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Expertise.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Expertise.java index 29bdfa386..c2899574b 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Expertise.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Expertise.java @@ -20,8 +20,11 @@ package com.arsdigita.cms.contenttypes; import com.arsdigita.domain.DataObjectNotFoundException; +import com.arsdigita.domain.DomainObjectFactory; +import com.arsdigita.persistence.DataCollection; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.OID; +import com.arsdigita.util.Assert; import java.math.BigDecimal; import org.apache.log4j.Logger; @@ -68,20 +71,37 @@ public class Expertise extends Publication { } public GenericOrganizationalUnit getOrganization() { - DataObject dataObj; + DataCollection collection; - dataObj = (DataObject) get(ORGANIZATION); + collection = (DataCollection) get(ORGANIZATION); - if (dataObj == null) { + if (0 == collection.size()) { return null; } else { - return new GenericOrganizationalUnit(dataObj); - } + DataObject dobj; + + collection.next(); + dobj = collection.getDataObject(); + collection.close(); + + return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(dobj); + } } - public void setOrganization(GenericOrganizationalUnit orga) { - s_log.debug(String.format("Setting organization to %s", orga.toString())); - set(ORGANIZATION, orga); + public void setOrganization(final GenericOrganizationalUnit orga) { + GenericOrganizationalUnit oldOrga; + + oldOrga = getOrganization(); + if (oldOrga != null) { + remove(ORGANIZATION, oldOrga); + } + + if (null != orga) { + Assert.exists(orga, GenericOrganizationalUnit.class); + DataObject link = add(ORGANIZATION, orga); + link.set("orgaOrder", 1); + link.save(); + } } public Integer getNumberOfPages() { @@ -93,18 +113,36 @@ public class Expertise extends Publication { } public GenericOrganizationalUnit getOrderer() { - DataObject dataObj; + DataCollection collection; - dataObj = (DataObject) get(ORDERER); + collection = (DataCollection) get(ORDERER); - if (dataObj == null) { + if (0 == collection.size()) { return null; } else { - return new GenericOrganizationalUnit(dataObj); + DataObject dobj; + + collection.next(); + dobj = collection.getDataObject(); + collection.close(); + + return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(dobj); } } public void setOrderer(GenericOrganizationalUnit orderer) { - set(ORDERER, orderer); + GenericOrganizationalUnit oldOrga; + + oldOrga = getOrganization(); + if (oldOrga != null) { + remove(ORDERER, oldOrga); + } + + if (null != orderer) { + Assert.exists(orderer, GenericOrganizationalUnit.class); + DataObject link = add(ORDERER, orderer); + link.set("ordererOrder", 1); + link.save(); + } } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticle.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticle.java index 60d9acebe..70b0ff81e 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticle.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/InternetArticle.java @@ -20,8 +20,11 @@ package com.arsdigita.cms.contenttypes; import com.arsdigita.domain.DataObjectNotFoundException; +import com.arsdigita.domain.DomainObjectFactory; +import com.arsdigita.persistence.DataCollection; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.OID; +import com.arsdigita.util.Assert; import java.math.BigDecimal; import java.util.Date; @@ -70,19 +73,38 @@ public class InternetArticle extends Publication { } public GenericOrganizationalUnit getOrganization() { - DataObject dataObj; + DataCollection collection; - dataObj = (DataObject) get(ORGANIZATION); + collection = (DataCollection) get(ORGANIZATION); - if (dataObj == null) { + if (collection.size() == 0) { return null; } else { - return new GenericOrganizationalUnit(dataObj); - } + DataObject dobj; + + collection.next(); + dobj = collection.getDataObject(); + collection.close(); + + return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(dobj); + } } public void setOrganization(GenericOrganizationalUnit orga) { - set(ORGANIZATION, orga); + GenericOrganizationalUnit oldOrga; + + oldOrga = getOrganization(); + if(oldOrga != null) { + remove(ORGANIZATION, oldOrga); + } + + if (orga != null) { + Assert.exists(orga, GenericOrganizationalUnit.class); + DataObject link = add(ORGANIZATION, orga); + link.set("orgaOrder", 1); + link.save(); + } + } public String getNumber() { diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Proceedings.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Proceedings.java index 8d318ad52..906fa0244 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Proceedings.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/Proceedings.java @@ -20,6 +20,8 @@ package com.arsdigita.cms.contenttypes; import com.arsdigita.domain.DataObjectNotFoundException; +import com.arsdigita.domain.DomainObject; +import com.arsdigita.domain.DomainObjectFactory; import com.arsdigita.persistence.DataCollection; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.OID; @@ -68,19 +70,38 @@ public class Proceedings extends PublicationWithPublisher { } public GenericOrganizationalUnit getOrganizerOfConference() { - DataObject dataObj; + DataCollection collection; - dataObj = (DataObject) get(ORGANIZER_OF_CONFERENCE); + collection = (DataCollection) get(ORGANIZER_OF_CONFERENCE); - if (dataObj == null) { + if (0 == collection.size()) { return null; } else { - return new GenericOrganizationalUnit(dataObj); + DataObject dobj; + + collection.next(); + dobj = collection.getDataObject(); + collection.close(); + + return (GenericOrganizationalUnit) DomainObjectFactory.newInstance( + dobj); } } public void setOrganizerOfConference(GenericOrganizationalUnit organizer) { - set(ORGANIZER_OF_CONFERENCE, organizer); + GenericOrganizationalUnit oldOrga; + + oldOrga = getOrganizerOfConference(); + if (oldOrga != null) { + remove(ORGANIZER_OF_CONFERENCE, oldOrga); + } + + if (null != organizer) { + Assert.exists(organizer, GenericOrganizationalUnit.class); + DataObject link = add(ORGANIZER_OF_CONFERENCE, organizer); + link.set("organizerOrder", 1); + link.save(); + } } public String getNameOfConference() { diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/PublicationWithPublisher.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/PublicationWithPublisher.java index 240291e87..1c9049e6b 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/PublicationWithPublisher.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/PublicationWithPublisher.java @@ -20,8 +20,11 @@ package com.arsdigita.cms.contenttypes; import com.arsdigita.domain.DataObjectNotFoundException; +import com.arsdigita.domain.DomainObjectFactory; +import com.arsdigita.persistence.DataCollection; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.OID; +import com.arsdigita.util.Assert; import java.math.BigDecimal; import org.apache.log4j.Logger; @@ -137,15 +140,21 @@ public class PublicationWithPublisher extends Publication { * @return The publisher of the publication. */ public Publisher getPublisher() { - DataObject dataObj; + DataCollection collection; - dataObj = (DataObject) get(PUBLISHER); + collection = (DataCollection) get(PUBLISHER); - if (dataObj == null) { + if (0 == collection.size()) { return null; } else { - return new Publisher(dataObj); - } + DataObject dobj; + + collection.next(); + dobj = collection.getDataObject(); + collection.close(); + + return (Publisher) DomainObjectFactory.newInstance(dobj); + } } /** @@ -154,6 +163,18 @@ public class PublicationWithPublisher extends Publication { * @param publisher The publisher of the publication. */ public void setPublisher(Publisher publisher) { - set(PUBLISHER, publisher); + Publisher oldPublisher; + + oldPublisher = getPublisher(); + if (oldPublisher != null) { + remove(PUBLISHER, oldPublisher); + } + + if (null != publisher) { + Assert.exists(publisher, Publisher.class); + DataObject link = add(PUBLISHER, publisher); + link.set("publisherOrder", 1); + link.save(); + } } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/UnPublished.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/UnPublished.java index d72e1d527..c8a9e39d0 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/UnPublished.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/UnPublished.java @@ -20,16 +20,20 @@ package com.arsdigita.cms.contenttypes; import com.arsdigita.domain.DataObjectNotFoundException; +import com.arsdigita.domain.DomainObjectFactory; +import com.arsdigita.persistence.DataCollection; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.OID; +import com.arsdigita.util.Assert; import java.math.BigDecimal; +import org.apache.log4j.Logger; /** * * @author Jens Pelzetter */ public abstract class UnPublished extends Publication { - + public static final String PLACE = "place"; public static final String ORGANIZATION = "organization"; public static final String NUMBER = "number"; @@ -66,19 +70,39 @@ public abstract class UnPublished extends Publication { } public GenericOrganizationalUnit getOrganization() { - DataObject dataObj; + DataCollection collection; - dataObj = (DataObject) get(ORGANIZATION); + collection = (DataCollection) get(ORGANIZATION); - if (dataObj == null) { + if (0 == collection.size()) { return null; } else { - return new GenericOrganizationalUnit(dataObj); + DataObject dobj; + + collection.next(); + dobj = collection.getDataObject(); + collection.close(); + + return (GenericOrganizationalUnit) DomainObjectFactory.newInstance( + dobj); } } - public void setOrganization(GenericOrganizationalUnit orga) { - set(ORGANIZATION, orga); + public void setOrganization(final GenericOrganizationalUnit orga) { + GenericOrganizationalUnit oldOrga; + + oldOrga = getOrganization(); + + if (oldOrga != null) { + remove(ORGANIZATION, oldOrga); + } + + if (null != orga) { + Assert.exists(orga, GenericOrganizationalUnit.class); + DataObject link = add(ORGANIZATION, orga); + link.set("orgaOrder", 1); + link.save(); + } } public String getNumber() { diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrdererForm.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrdererForm.java new file mode 100644 index 000000000..244cedfc2 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrdererForm.java @@ -0,0 +1,62 @@ +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.Expertise; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; +import com.arsdigita.cms.ui.ItemSearchWidget; +import com.arsdigita.cms.ui.authoring.BasicItemForm; + +/** + * + * @author Jens Pelzetter + */ +public class ExpertiseOrdererForm + extends BasicItemForm + implements FormProcessListener, + FormInitListener { + + private ItemSearchWidget itemSearch; + private final String ITEM_SEARCH = "expertiseOrderer"; + + public ExpertiseOrdererForm(final ItemSelectionModel itemModel) { + super("ExpertiseOrdererForm", itemModel); + } + + @Override + protected void addWidgets() { + add(new Label(PublicationGlobalizationUtil.globalize( + "publications.ui.expertise.orderer"))); + itemSearch = new ItemSearchWidget(ITEM_SEARCH, ContentType. + findByAssociatedObjectType(GenericOrganizationalUnit.class. + getName())); + add(itemSearch); + } + + @Override + public void init(final FormSectionEvent fse) throws FormProcessException{ + PageState state = fse.getPageState(); + + setVisible(state, true); + } + + @Override + public void process(final FormSectionEvent fse) throws FormProcessException { + FormData data = fse.getFormData(); + PageState state = fse.getPageState(); + Expertise expertise = (Expertise) getItemSelectionModel().getSelectedObject(state); + + if (this.getSaveCancelSection().getSaveButton().isSelected(state)) { + expertise.setOrderer((GenericOrganizationalUnit) data.get(ITEM_SEARCH)); + + init(fse); + } + } +} \ No newline at end of file diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrdererSheet.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrdererSheet.java new file mode 100644 index 000000000..f3cd321d9 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrdererSheet.java @@ -0,0 +1,202 @@ +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.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.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.Expertise; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; +import com.arsdigita.cms.dispatcher.Utilities; +import com.arsdigita.util.LockableImpl; + +/** + * + * @author Jens Pelzetter + */ +public class ExpertiseOrdererSheet + extends Table + implements TableActionListener { + + private final String TABLE_COL_EDIT = "table_col_edit"; + private final String TABLE_COL_DEL = "table_col_del"; + private ItemSelectionModel itemModel; + + public ExpertiseOrdererSheet(final ItemSelectionModel itemModel) { + super(); + + this.itemModel = itemModel; + + setEmptyView(new Label(PublicationGlobalizationUtil.globalize( + "publications.ui.expertise.orderer.none"))); + + TableColumnModel columnModel = getColumnModel(); + columnModel.add(new TableColumn( + 0, + PublicationGlobalizationUtil.globalize( + "publications.ui.expertise.orderer").localize(), + TABLE_COL_EDIT)); + columnModel.add(new TableColumn( + 0, + PublicationGlobalizationUtil.globalize( + "publications.ui.expertise.orderer.remove").localize(), + TABLE_COL_DEL)); + + setModelBuilder(new ExpertiseOrganizationSheetModelBuilder(itemModel)); + columnModel.get(0).setCellRenderer(new EditCellRenderer()); + columnModel.get(1).setCellRenderer(new DeleteCellRenderer()); + + addTableActionListener(this); + } + + private class ExpertiseOrganizationSheetModelBuilder + extends LockableImpl + implements TableModelBuilder { + + private ItemSelectionModel itemModel; + + public ExpertiseOrganizationSheetModelBuilder( + final ItemSelectionModel itemModel) { + this.itemModel = itemModel; + } + + @Override + public TableModel makeModel(final Table table, final PageState state) { + table.getRowSelectionModel().clearSelection(state); + Expertise expertise = (Expertise) itemModel.getSelectedObject(state); + return new ExpertiseOrganizationSheetModel(table, state, expertise); + } + } + + private class ExpertiseOrganizationSheetModel implements TableModel { + + private Table table; + private GenericOrganizationalUnit orga; + private boolean done; + + public ExpertiseOrganizationSheetModel(final Table table, + final PageState state, + final Expertise expertise) { + this.table = table; + orga = expertise.getOrderer(); + if (orga == null) { + done = false; + } else { + done = true; + } + } + + public int getColumnCount() { + return table.getColumnModel().size(); + } + + public boolean nextRow() { + boolean ret; + + if (done) { + ret = true; + done = false; + } else { + ret = false; + } + + return ret; + } + + public Object getElementAt(final int columnIndex) { + switch (columnIndex) { + case 0: + return orga.getTitle(); + case 1: + return PublicationGlobalizationUtil.globalize( + "publications.ui.expertise.orderer.remove").localize(); + default: + return null; + } + } + + public Object getKeyAt(final int columnIndex) { + return orga.getID(); + } + } + + private class EditCellRenderer + extends LockableImpl + implements TableCellRenderer { + + @Override + public Component getComponent(Table table, + PageState state, + Object value, + boolean isSelected, + Object key, + int row, + int column) { + Label label = new Label(value.toString()); + return label; + } + } + + private class DeleteCellRenderer + extends LockableImpl + implements TableCellRenderer { + + @Override + public Component getComponent(Table table, + PageState state, + Object value, + boolean isSelected, + Object key, + int row, + int col) { + com.arsdigita.cms.SecurityManager securityManager = + Utilities.getSecurityManager(state); + Expertise expertise = (Expertise) itemModel.getSelectedObject( + state); + + boolean canEdit = securityManager.canAccess( + state.getRequest(), + com.arsdigita.cms.SecurityManager.DELETE_ITEM, + expertise); + + if (canEdit) { + ControlLink link = new ControlLink(value.toString()); + link.setConfirmation((String) PublicationGlobalizationUtil. + globalize( + "publication.ui.expertise.orderer.remove.confirm"). + localize()); + return link; + } else { + Label label = new Label(value.toString()); + return label; + } + } + } + + @Override + public void cellSelected(final TableActionEvent event) { + PageState state = event.getPageState(); + + Expertise expertise = (Expertise) itemModel.getSelectedObject(state); + + TableColumn column = getColumnModel().get(event.getColumn().intValue()); + + if (column.getHeaderKey().toString().equals(TABLE_COL_EDIT)) { + } else if (column.getHeaderKey().toString().equals(TABLE_COL_DEL)) { + expertise.setOrganization(null); + } + } + + @Override + public void headSelected(final TableActionEvent event) { + //Nothing to do + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrdererStep.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrdererStep.java new file mode 100644 index 000000000..990f2f446 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrdererStep.java @@ -0,0 +1,38 @@ +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 + */ +public class ExpertiseOrdererStep extends SimpleEditStep { + + private String SET_EXPERTISE_ORDERER_STEP = "setExpertiseOrdererStep"; + + public ExpertiseOrdererStep(final ItemSelectionModel itemModel, + final AuthoringKitWizard parent) { + this(itemModel, parent, null); + } + + public ExpertiseOrdererStep(final ItemSelectionModel itemModel, + final AuthoringKitWizard parent, + String prefix) { + super(itemModel, parent, prefix); + + BasicItemForm setOrdererForm = new ExpertiseOrdererForm(itemModel); + add(SET_EXPERTISE_ORDERER_STEP, + (String) PublicationGlobalizationUtil.globalize( + "publications.ui.expertise.setOrderer").localize(), + new WorkflowLockedComponentAccess(setOrdererForm, itemModel), + setOrdererForm.getSaveCancelSection().getCancelButton()); + + ExpertiseOrdererSheet sheet = new ExpertiseOrdererSheet( + itemModel); + setDisplayComponent(sheet); + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrganizationForm.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrganizationForm.java new file mode 100644 index 000000000..f718373a8 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrganizationForm.java @@ -0,0 +1,62 @@ +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.Expertise; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; +import com.arsdigita.cms.ui.ItemSearchWidget; +import com.arsdigita.cms.ui.authoring.BasicItemForm; + +/** + * + * @author Jens Pelzetter + */ +public class ExpertiseOrganizationForm + extends BasicItemForm + implements FormProcessListener, + FormInitListener { + + private ItemSearchWidget itemSearch; + private final String ITEM_SEARCH = "expertiseOrganization"; + + public ExpertiseOrganizationForm(final ItemSelectionModel itemModel) { + super("ExpertiseOrganizationForm", itemModel); + } + + @Override + protected void addWidgets() { + add(new Label(PublicationGlobalizationUtil.globalize( + "publications.ui.expertise.organization"))); + itemSearch = new ItemSearchWidget(ITEM_SEARCH, ContentType. + findByAssociatedObjectType(GenericOrganizationalUnit.class. + getName())); + add(itemSearch); + } + + @Override + public void init(final FormSectionEvent fse) throws FormProcessException{ + PageState state = fse.getPageState(); + + setVisible(state, true); + } + + @Override + public void process(final FormSectionEvent fse) throws FormProcessException { + FormData data = fse.getFormData(); + PageState state = fse.getPageState(); + Expertise expertise = (Expertise) getItemSelectionModel().getSelectedObject(state); + + if (this.getSaveCancelSection().getSaveButton().isSelected(state)) { + expertise.setOrganization((GenericOrganizationalUnit) data.get(ITEM_SEARCH)); + + init(fse); + } + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrganizationSheet.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrganizationSheet.java new file mode 100644 index 000000000..792b5c931 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrganizationSheet.java @@ -0,0 +1,203 @@ +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.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.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.Expertise; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; +import com.arsdigita.cms.dispatcher.Utilities; +import com.arsdigita.util.LockableImpl; + +/** + * + * @author Jens Pelzetter + */ +public class ExpertiseOrganizationSheet + extends Table + implements TableActionListener { + + private final String TABLE_COL_EDIT = "table_col_edit"; + private final String TABLE_COL_DEL = "table_col_del"; + private ItemSelectionModel itemModel; + + public ExpertiseOrganizationSheet(final ItemSelectionModel itemModel) { + super(); + + this.itemModel = itemModel; + + setEmptyView(new Label(PublicationGlobalizationUtil.globalize( + "publications.ui.expertise.organization.none"))); + + TableColumnModel columnModel = getColumnModel(); + columnModel.add(new TableColumn( + 0, + PublicationGlobalizationUtil.globalize( + "publications.ui.expertise.organization").localize(), + TABLE_COL_EDIT)); + columnModel.add(new TableColumn( + 0, + PublicationGlobalizationUtil.globalize( + "publications.ui.expertise.organization.remove").localize(), + TABLE_COL_DEL)); + + setModelBuilder(new ExpertiseOrganizationSheetModelBuilder(itemModel)); + columnModel.get(0).setCellRenderer(new EditCellRenderer()); + columnModel.get(1).setCellRenderer(new DeleteCellRenderer()); + + addTableActionListener(this); + } + + private class ExpertiseOrganizationSheetModelBuilder + extends LockableImpl + implements TableModelBuilder { + + private ItemSelectionModel itemModel; + + public ExpertiseOrganizationSheetModelBuilder( + final ItemSelectionModel itemModel) { + this.itemModel = itemModel; + } + + @Override + public TableModel makeModel(final Table table, final PageState state) { + table.getRowSelectionModel().clearSelection(state); + Expertise expertise = (Expertise) itemModel.getSelectedObject(state); + return new ExpertiseOrganizationSheetModel(table, state, expertise); + } + } + + private class ExpertiseOrganizationSheetModel implements TableModel { + + private Table table; + private GenericOrganizationalUnit orga; + private boolean done; + + public ExpertiseOrganizationSheetModel(final Table table, + final PageState state, + final Expertise expertise) { + this.table = table; + orga = expertise.getOrganization(); + if (orga == null) { + done = false; + } else { + done = true; + } + } + + public int getColumnCount() { + return table.getColumnModel().size(); + } + + public boolean nextRow() { + boolean ret; + + if (done) { + ret = true; + done = false; + } else { + ret = false; + } + + return ret; + } + + public Object getElementAt(final int columnIndex) { + switch (columnIndex) { + case 0: + return orga.getTitle(); + case 1: + return PublicationGlobalizationUtil.globalize( + "publications.ui.expertise.organization.remove"). + localize(); + default: + return null; + } + } + + public Object getKeyAt(final int columnIndex) { + return orga.getID(); + } + } + + private class EditCellRenderer + extends LockableImpl + implements TableCellRenderer { + + @Override + public Component getComponent(Table table, + PageState state, + Object value, + boolean isSelected, + Object key, + int row, + int column) { + Label label = new Label(value.toString()); + return label; + } + } + + private class DeleteCellRenderer + extends LockableImpl + implements TableCellRenderer { + + @Override + public Component getComponent(Table table, + PageState state, + Object value, + boolean isSelected, + Object key, + int row, + int col) { + com.arsdigita.cms.SecurityManager securityManager = + Utilities.getSecurityManager(state); + Expertise expertise = (Expertise) itemModel.getSelectedObject( + state); + + boolean canEdit = securityManager.canAccess( + state.getRequest(), + com.arsdigita.cms.SecurityManager.DELETE_ITEM, + expertise); + + if (canEdit) { + ControlLink link = new ControlLink(value.toString()); + link.setConfirmation((String) PublicationGlobalizationUtil. + globalize( + "publication.ui.expertise.organization.remove.confirm"). + localize()); + return link; + } else { + Label label = new Label(value.toString()); + return label; + } + } + } + + @Override + public void cellSelected(final TableActionEvent event) { + PageState state = event.getPageState(); + + Expertise expertise = (Expertise) itemModel.getSelectedObject(state); + + TableColumn column = getColumnModel().get(event.getColumn().intValue()); + + if (column.getHeaderKey().toString().equals(TABLE_COL_EDIT)) { + } else if (column.getHeaderKey().toString().equals(TABLE_COL_DEL)) { + expertise.setOrganization(null); + } + } + + @Override + public void headSelected(final TableActionEvent event) { + //Nothing to do + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrganizationStep.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrganizationStep.java new file mode 100644 index 000000000..3d0871ee7 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertiseOrganizationStep.java @@ -0,0 +1,39 @@ +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 + */ +public class ExpertiseOrganizationStep extends SimpleEditStep { + + private String SET_EXPERTISE_ORGANIZATION_STEP = + "setExpertiseOrganizationStep"; + + public ExpertiseOrganizationStep(final ItemSelectionModel itemModel, + final AuthoringKitWizard parent) { + this(itemModel, parent, null); + } + + public ExpertiseOrganizationStep(final ItemSelectionModel itemModel, + final AuthoringKitWizard parent, + String prefix) { + super(itemModel, parent, prefix); + + BasicItemForm setOrgaForm = new ExpertiseOrganizationForm(itemModel); + add(SET_EXPERTISE_ORGANIZATION_STEP, + (String) PublicationGlobalizationUtil.globalize( + "publications.ui.expertise.setOrganization").localize(), + new WorkflowLockedComponentAccess(setOrgaForm, itemModel), + setOrgaForm.getSaveCancelSection().getCancelButton()); + + ExpertiseOrganizationSheet sheet = new ExpertiseOrganizationSheet( + itemModel); + setDisplayComponent(sheet); + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertisePropertiesStep.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertisePropertiesStep.java index a2d99b06b..31dec1f6b 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertisePropertiesStep.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertisePropertiesStep.java @@ -48,19 +48,11 @@ public class ExpertisePropertiesStep extends PublicationPropertiesStep { sheet.add(PublicationGlobalizationUtil.globalize( "publications.ui.expertise.place"), Expertise.PLACE); - - sheet.add(PublicationGlobalizationUtil.globalize( - "organization.title"), - Expertise.ORGANIZATION); - + sheet.add(PublicationGlobalizationUtil.globalize( "publications.ui.expertise.number_of_pages"), Expertise.NUMBER_OF_PAGES); - sheet.add(PublicationGlobalizationUtil.globalize( - "orderer.title"), - Expertise.ORDERER); - return sheet; } @@ -90,4 +82,15 @@ public class ExpertisePropertiesStep extends PublicationPropertiesStep { "publications.ui.publication.basic_properties"). localize()), basicProperties); } + + @Override + protected void addSteps(ItemSelectionModel itemModel, + AuthoringKitWizard parent) { + super.addSteps(itemModel, parent); + + addStep(new ExpertiseOrganizationStep(itemModel, parent), + "publications.ui.expertise.setOrganization"); + addStep(new ExpertiseOrdererStep(itemModel, parent), + "publications.ui.expertise.setOrderer"); + } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertisePropertyForm.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertisePropertyForm.java index 27fd84773..2efa1719d 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertisePropertyForm.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ExpertisePropertyForm.java @@ -46,11 +46,7 @@ public class ExpertisePropertyForm FormProcessListener, FormSubmissionListener { - private ExpertisePropertiesStep m_step; - private ItemSearchWidget m_itemSearchOrga; - private final String ITEM_SEARCH_ORGA = "organization"; - private ItemSearchWidget m_itemSearchOrderer; - private final String ITEM_SEARCH_ORDERER = "orderer"; + private ExpertisePropertiesStep m_step; public static final String ID = "ExpertiseEdit"; public ExpertisePropertyForm(ItemSelectionModel itemModel) { @@ -72,30 +68,14 @@ public class ExpertisePropertyForm "publications.ui.expertise.place").localize())); ParameterModel placeParam = new StringParameter(Expertise.PLACE); TextField place = new TextField(placeParam); - add(place); - - add(new Label((String) PublicationGlobalizationUtil.globalize( - "publications.ui.expertise.organization").localize())); - m_itemSearchOrga = new ItemSearchWidget(ITEM_SEARCH_ORGA, - ContentType. - findByAssociatedObjectType( - GenericOrganizationalUnit.class.getName())); - add(m_itemSearchOrga); + add(place); add(new Label((String) PublicationGlobalizationUtil.globalize( "publications.ui.expertise.number_of_pages").localize())); ParameterModel numberOfPagesParam = new IntegerParameter(Expertise.NUMBER_OF_PAGES); TextField numberOfPages = new TextField(numberOfPagesParam); - add(numberOfPages); - - add(new Label((String) PublicationGlobalizationUtil.globalize( - "publications.ui.expertise.orderer").localize())); - m_itemSearchOrderer = new ItemSearchWidget(ITEM_SEARCH_ORDERER, - ContentType. - findByAssociatedObjectType( - GenericOrganizationalUnit.class.getName())); - add(m_itemSearchOrderer); + add(numberOfPages); } @Override @@ -105,10 +85,8 @@ public class ExpertisePropertyForm FormData data = fse.getFormData(); Expertise expertise = (Expertise) initBasicWidgets(fse); - data.put(Expertise.PLACE, expertise.getPlace()); - data.put(ITEM_SEARCH_ORGA, expertise.getOrganization()); - data.put(Expertise.NUMBER_OF_PAGES, expertise.getNumberOfPages()); - data.put(ITEM_SEARCH_ORDERER, expertise.getOrderer()); + data.put(Expertise.PLACE, expertise.getPlace()); + data.put(Expertise.NUMBER_OF_PAGES, expertise.getNumberOfPages()); } @Override @@ -120,16 +98,11 @@ public class ExpertisePropertyForm if ((expertise != null) && getSaveCancelSection().getSaveButton(). isSelected(fse.getPageState())) { - expertise.setPlace((String) data.get(Expertise.PLACE)); - expertise.setOrganization( - (GenericOrganizationalUnit) data.get(ITEM_SEARCH_ORGA)); + expertise.setPlace((String) data.get(Expertise.PLACE)); expertise.setNumberOfPages( - (Integer) data.get(Expertise.NUMBER_OF_PAGES)); - expertise.setOrderer( - (GenericOrganizationalUnit) data.get(ITEM_SEARCH_ORDERER)); + (Integer) data.get(Expertise.NUMBER_OF_PAGES)); - expertise.save(); - + expertise.save(); } } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleOrganizationForm.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleOrganizationForm.java new file mode 100644 index 000000000..ef92b799e --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleOrganizationForm.java @@ -0,0 +1,63 @@ +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.InternetArticle; +import com.arsdigita.cms.ui.ItemSearchWidget; +import com.arsdigita.cms.ui.authoring.BasicItemForm; + +/** + * + * @author Jens Pelzetter + */ +public class InternetArticleOrganizationForm + extends BasicItemForm + implements FormProcessListener, + FormInitListener { + + private ItemSearchWidget itemSearch; + private final String ITEM_SEARCH = "internetArticleOrga"; + + public InternetArticleOrganizationForm(final ItemSelectionModel itemModel) { + super("InternetArticleOrganizationForm", itemModel); + } + + @Override + public void addWidgets() { + add(new Label(PublicationGlobalizationUtil.globalize( + "publications.ui.internetarticle.select_organization"))); + itemSearch = new ItemSearchWidget(ITEM_SEARCH, ContentType. + findByAssociatedObjectType(GenericOrganizationalUnit.class. + getName())); + add(itemSearch); + } + + @Override + public void init(final FormSectionEvent fse) throws FormProcessException { + PageState state = fse.getPageState(); + + setVisible(state, true); + } + + @Override + public void process(final FormSectionEvent fse) throws FormProcessException { + FormData data = fse.getFormData(); + PageState state = fse.getPageState(); + InternetArticle article = (InternetArticle) getItemSelectionModel().getSelectedObject(state); + + if (this.getSaveCancelSection().getSaveButton().isSelected(state)) { + article.setOrganization((GenericOrganizationalUnit) data.get(ITEM_SEARCH)); + + init(fse); + } + + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleOrganizationSheet.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleOrganizationSheet.java new file mode 100644 index 000000000..fff3f0b6f --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleOrganizationSheet.java @@ -0,0 +1,208 @@ +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.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.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; +import com.arsdigita.cms.contenttypes.InternetArticle; +import com.arsdigita.cms.dispatcher.Utilities; +import com.arsdigita.util.LockableImpl; + +/** + * + * @author Jens Pelzetter + */ +public class InternetArticleOrganizationSheet + extends Table + implements TableActionListener { + + private final String TABLE_COL_EDIT = "table_col_edit"; + private final String TABLE_COL_DEL = "table_col_del"; + private ItemSelectionModel itemModel; + + public InternetArticleOrganizationSheet(final ItemSelectionModel itemModel) { + super(); + this.itemModel = itemModel; + + setEmptyView(new Label(PublicationGlobalizationUtil.globalize( + "publications.ui.internetarticle.organization.none"))); + + TableColumnModel columnModel = getColumnModel(); + columnModel.add(new TableColumn( + 0, + PublicationGlobalizationUtil.globalize( + "publications.ui.internetarticle.organization").localize(), + TABLE_COL_EDIT)); + columnModel.add(new TableColumn( + 1, + PublicationGlobalizationUtil.globalize( + "publications.ui.internetarticle.organization.remove").localize(), + TABLE_COL_DEL)); + + setModelBuilder(new InternetArticleOrganizationSheetModelBuilder( + itemModel)); + columnModel.get(0).setCellRenderer(new EditCellRenderer()); + columnModel.get(1).setCellRenderer(new DeleteCellRenderer()); + + addTableActionListener(this); + } + + private class InternetArticleOrganizationSheetModelBuilder + extends LockableImpl + implements TableModelBuilder { + + private ItemSelectionModel itemModel; + + public InternetArticleOrganizationSheetModelBuilder( + final ItemSelectionModel itemModel) { + this.itemModel = itemModel; + } + + @Override + public TableModel makeModel(final Table table, final PageState state) { + table.getRowSelectionModel().clearSelection(state); + InternetArticle article = (InternetArticle) itemModel. + getSelectedObject(state); + return new InternetArticleOrganizationSheetModel(table, + state, + article); + } + } + + private class InternetArticleOrganizationSheetModel + implements TableModel { + + private Table table; + private GenericOrganizationalUnit orga; + private boolean done; + + public InternetArticleOrganizationSheetModel(final Table table, + final PageState state, + final InternetArticle article) { + this.table = table; + orga = article.getOrganization(); + if (orga == null) { + done = false; + } else { + done = true; + } + } + + public int getColumnCount() { + return table.getColumnModel().size(); + } + + public boolean nextRow() { + boolean ret; + + if (done) { + ret = true; + done = false; + } else { + ret = false; + } + + return ret; + } + + public Object getElementAt(final int columnIndex) { + switch (columnIndex) { + case 0: + return orga.getTitle(); + case 1: + return PublicationGlobalizationUtil.globalize( + "publication.ui.internetarticle.organization.remove"). + localize(); + default: + return null; + } + } + + public Object getKeyAt(final int columnIndex) { + return orga.getID(); + } + } + + private class EditCellRenderer + extends LockableImpl + implements TableCellRenderer { + + @Override + public Component getComponent(Table table, + PageState state, + Object value, + boolean isSelected, + Object key, + int row, + int column) { + Label label = new Label(value.toString()); + return label; + } + } + + private class DeleteCellRenderer + extends LockableImpl + implements TableCellRenderer { + + @Override + public Component getComponent(Table table, + PageState state, + Object value, + boolean isSelected, + Object key, + int row, + int col) { + com.arsdigita.cms.SecurityManager securityManager = + Utilities.getSecurityManager(state); + InternetArticle article = (InternetArticle) itemModel. + getSelectedObject(state); + + boolean canEdit = securityManager.canAccess( + state.getRequest(), + com.arsdigita.cms.SecurityManager.DELETE_ITEM, + article); + + if (canEdit) { + ControlLink link = new ControlLink(value.toString()); + link.setConfirmation((String) PublicationGlobalizationUtil. + globalize( + "publications.ui.internetarticle.organization.remove.confirm"). + localize()); + return link; + } else { + Label label = new Label(value.toString()); + return label; + } + } + } + + @Override + public void cellSelected(final TableActionEvent event) { + PageState state = event.getPageState(); + + InternetArticle article = (InternetArticle) itemModel.getSelectedObject( + state); + + TableColumn column = getColumnModel().get(event.getColumn().intValue()); + + if (column.getHeaderKey().toString().equals(TABLE_COL_EDIT)) { + } else if (column.getHeaderKey().toString().equals(TABLE_COL_DEL)) { + article.setOrganization(null); + } + } + + @Override + public void headSelected(TableActionEvent event) { + //Nothing to do + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleOrganizationStep.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleOrganizationStep.java new file mode 100644 index 000000000..07d8ff138 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticleOrganizationStep.java @@ -0,0 +1,40 @@ +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 + */ +public class InternetArticleOrganizationStep extends SimpleEditStep { + + private String SET_INTERNET_ARTICLE_ORGANIZATION_STEP = + "setInternetArticleOrganizationStep"; + + public InternetArticleOrganizationStep(final ItemSelectionModel itemModel, + final AuthoringKitWizard parent) { + this(itemModel, parent, null); + } + + public InternetArticleOrganizationStep(final ItemSelectionModel itemModel, + final AuthoringKitWizard parent, + final String prefix) { + super(itemModel, parent, prefix); + + BasicItemForm setOrgaForm = new InternetArticleOrganizationForm( + itemModel); + add(SET_INTERNET_ARTICLE_ORGANIZATION_STEP, + (String) PublicationGlobalizationUtil.globalize( + "publications.ui.internetarticle.setOrganization").localize(), + new WorkflowLockedComponentAccess(setOrgaForm, itemModel), + setOrgaForm.getSaveCancelSection().getCancelButton()); + + InternetArticleOrganizationSheet sheet = new InternetArticleOrganizationSheet( + itemModel); + setDisplayComponent(sheet); + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticlePropertiesStep.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticlePropertiesStep.java index fa3846871..6c8b5faa1 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticlePropertiesStep.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticlePropertiesStep.java @@ -48,11 +48,7 @@ public class InternetArticlePropertiesStep extends PublicationPropertiesStep { sheet.add(PublicationGlobalizationUtil.globalize( "publications.ui.internetarticle.place"), InternetArticle.PLACE); - - sheet.add(PublicationGlobalizationUtil.globalize( - "publications.ui.internetarticle.organization"), - "organization.title"); - + sheet.add(PublicationGlobalizationUtil.globalize( "publications.ui.internetarticle.number"), InternetArticle.NUMBER); @@ -103,4 +99,13 @@ public class InternetArticlePropertiesStep extends PublicationPropertiesStep { "publications.ui.publication.basic_properties").localize()), basicProperties); } + + @Override + protected void addSteps(final ItemSelectionModel itemModel, + final AuthoringKitWizard parent) { + super.addSteps(itemModel, parent); + + addStep(new InternetArticleOrganizationStep(itemModel, parent), + "publications.ui.internetarticle.setOrganization"); + } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticlePropertyForm.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticlePropertyForm.java index 7ed5c1e8d..876688eca 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticlePropertyForm.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/InternetArticlePropertyForm.java @@ -50,9 +50,7 @@ public class InternetArticlePropertyForm FormProcessListener, FormSubmissionListener { - private InternetArticlePropertiesStep m_step; - private ItemSearchWidget m_itemSearch; - private final String ITEM_SEARCH = "organization"; + private InternetArticlePropertiesStep m_step; public static final String ID = "InternetArticleEdit"; public InternetArticlePropertyForm(ItemSelectionModel itemModel) { @@ -76,15 +74,7 @@ public class InternetArticlePropertyForm new StringParameter(InternetArticle.PLACE); TextField place = new TextField(placeParam); add(place); - - add(new Label((String) PublicationGlobalizationUtil.globalize( - "publications.ui.internetarticle.organization").localize())); - m_itemSearch = new ItemSearchWidget(ITEM_SEARCH, - ContentType. - findByAssociatedObjectType( - GenericOrganizationalUnit.BASE_DATA_OBJECT_TYPE)); - add(m_itemSearch); - + add(new Label((String) PublicationGlobalizationUtil.globalize( "publications.ui.internetarticle.number").localize())); ParameterModel numberParam = @@ -134,8 +124,7 @@ public class InternetArticlePropertyForm FormData data = fse.getFormData(); InternetArticle article = (InternetArticle) initBasicWidgets(fse); - data.put(InternetArticle.PLACE, article.getPlace()); - data.put(ITEM_SEARCH, article.getOrganization()); + data.put(InternetArticle.PLACE, article.getPlace()); data.put(InternetArticle.NUMBER, article.getNumber()); data.put(InternetArticle.NUMBER_OF_PAGES, article.getNumberOfPages()); data.put(InternetArticle.EDITION, article.getEdition()); @@ -153,9 +142,7 @@ public class InternetArticlePropertyForm if ((article != null) && getSaveCancelSection().getSaveButton(). isSelected(fse.getPageState())) { - article.setPlace((String) data.get(InternetArticle.PLACE)); - article.setOrganization( - (GenericOrganizationalUnit) data.get(ITEM_SEARCH)); + article.setPlace((String) data.get(InternetArticle.PLACE)); article.setNumber((String) data.get(InternetArticle.NUMBER)); article.setNumberOfPages( (Integer) data.get(InternetArticle.NUMBER_OF_PAGES)); diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsOrganizerForm.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsOrganizerForm.java new file mode 100644 index 000000000..0afe98726 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsOrganizerForm.java @@ -0,0 +1,64 @@ +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.Proceedings; +import com.arsdigita.cms.ui.ItemSearchWidget; +import com.arsdigita.cms.ui.authoring.BasicItemForm; + +/** + * + * @author Jens Pelzetter + */ +public class ProceedingsOrganizerForm + extends BasicItemForm + implements FormProcessListener, + FormInitListener { + + private ItemSearchWidget itemSearch; + private final String ITEM_SEARCH = "departmentOrga"; + + public ProceedingsOrganizerForm(final ItemSelectionModel itemModel) { + super("ProceedingsOrganizerForm", itemModel); + } + + @Override + protected void addWidgets() { + add(new Label(PublicationGlobalizationUtil.globalize( + "publications.ui.proceedings.organizer"))); + itemSearch = new ItemSearchWidget(ITEM_SEARCH, ContentType. + findByAssociatedObjectType(GenericOrganizationalUnit.class. + getName())); + add(itemSearch); + } + + @Override + public void init(final FormSectionEvent fse) throws FormProcessException { + PageState state = fse.getPageState(); + + setVisible(state, true); + } + + @Override + public void process(final FormSectionEvent fse) throws FormProcessException { + FormData data = fse.getFormData(); + PageState state = fse.getPageState(); + Proceedings proceedings = (Proceedings) getItemSelectionModel(). + getSelectedObject(state); + + if (this.getSaveCancelSection().getSaveButton().isSelected(state)) { + proceedings.setOrganizerOfConference((GenericOrganizationalUnit) data. + get(ITEM_SEARCH)); + + init(fse); + } + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsOrganizerSheet.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsOrganizerSheet.java new file mode 100644 index 000000000..5df365d36 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsOrganizerSheet.java @@ -0,0 +1,205 @@ +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.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.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; +import com.arsdigita.cms.contenttypes.Proceedings; +import com.arsdigita.cms.dispatcher.Utilities; +import com.arsdigita.util.LockableImpl; + +/** + * + * @author Jens Pelzetter + */ +public class ProceedingsOrganizerSheet + extends Table + implements TableActionListener { + + private final String TABLE_COL_EDIT = "table_col_edit"; + private final String TABLE_COL_DEL = "table_col_del"; + private ItemSelectionModel itemModel; + + public ProceedingsOrganizerSheet(final ItemSelectionModel itemModel) { + super(); + + this.itemModel = itemModel; + + setEmptyView(new Label(PublicationGlobalizationUtil.globalize( + "publications.ui.proceedings.organizer.none"))); + + TableColumnModel columnModel = getColumnModel(); + columnModel.add(new TableColumn( + 0, + PublicationGlobalizationUtil.globalize( + "publications.ui.proceedings.organizer").localize(), + TABLE_COL_EDIT)); + columnModel.add(new TableColumn( + 1, + PublicationGlobalizationUtil.globalize( + "publications.ui.proceedings.organizer.remove").localize(), + TABLE_COL_DEL)); + + setModelBuilder(new ProceedingsOrganizerSheetModelBuilder(itemModel)); + columnModel.get(0).setCellRenderer(new EditCellRenderer()); + columnModel.get(1).setCellRenderer(new DeleteCellRenderer()); + + addTableActionListener(this); + } + + private class ProceedingsOrganizerSheetModelBuilder + extends LockableImpl + implements TableModelBuilder { + + private ItemSelectionModel itemModel; + + public ProceedingsOrganizerSheetModelBuilder( + final ItemSelectionModel itemModel) { + this.itemModel = itemModel; + } + + @Override + public TableModel makeModel(final Table table, final PageState state) { + table.getRowSelectionModel().clearSelection(state); + Proceedings proceedings = (Proceedings) itemModel.getSelectedObject( + state); + return new ProceedingsOrganizerSheetModel(table, state, proceedings); + } + } + + private class ProceedingsOrganizerSheetModel implements TableModel { + + private Table table; + private GenericOrganizationalUnit organizer; + private boolean done; + + public ProceedingsOrganizerSheetModel(final Table table, + final PageState state, + final Proceedings proceedings) { + this.table = table; + organizer = proceedings.getOrganizerOfConference(); + if (organizer == null) { + done = false; + } else { + done = true; + } + } + + public int getColumnCount() { + return table.getColumnModel().size(); + } + + public boolean nextRow() { + boolean ret; + + if (done) { + ret = true; + done = false; + } else { + ret = false; + } + + return ret; + } + + public Object getElementAt(final int columnIndex) { + switch (columnIndex) { + case 0: + return organizer.getTitle(); + case 1: + return PublicationGlobalizationUtil.globalize( + "publications.ui.proceedings.organizer.remove"). + localize(); + default: + return null; + } + } + + public Object getKeyAt(final int columnIndex) { + return organizer.getID(); + } + } + + private class EditCellRenderer + extends LockableImpl + implements TableCellRenderer { + + @Override + public Component getComponent(Table table, + PageState state, + Object value, + boolean isSelected, + Object key, + int row, + int column) { + Label label = new Label(value.toString()); + return label; + } + } + + private class DeleteCellRenderer + extends LockableImpl + implements TableCellRenderer { + + @Override + public Component getComponent(Table table, + PageState state, + Object value, + boolean isSelected, + Object key, + int row, + int col) { + com.arsdigita.cms.SecurityManager securityManager = + Utilities.getSecurityManager(state); + Proceedings proceedings = (Proceedings) itemModel.getSelectedObject( + state); + + boolean canEdit = securityManager.canAccess( + state.getRequest(), + com.arsdigita.cms.SecurityManager.DELETE_ITEM, + proceedings); + + if (canEdit) { + ControlLink link = new ControlLink(value.toString()); + link.setConfirmation((String) PublicationGlobalizationUtil. + globalize( + "publications.ui.proceedings.organizer.remove.confirm"). + localize()); + return link; + } else { + Label label = new Label(value.toString()); + return label; + } + } + } + + @Override + public void cellSelected(final TableActionEvent event) { + PageState state = event.getPageState(); + + Proceedings proceedings = (Proceedings) itemModel.getSelectedObject( + state); + + TableColumn column = getColumnModel().get(event.getColumn().intValue()); + + if (column.getHeaderKey().toString().equals(TABLE_COL_EDIT)) { + } else if (column.getHeaderKey().toString().equals(TABLE_COL_DEL)) { + proceedings.setOrganizerOfConference(null); + } + } + + @Override + public void headSelected(final TableActionEvent event) { + //Nothing to do. + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsOrganizerStep.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsOrganizerStep.java new file mode 100644 index 000000000..f618c8bf8 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsOrganizerStep.java @@ -0,0 +1,38 @@ +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 + */ +public class ProceedingsOrganizerStep extends SimpleEditStep { + + private String SET_PROCEEDINGS_ORGANIZER_STEP = "setProceedingsOrganizerStep"; + + public ProceedingsOrganizerStep(final ItemSelectionModel itemModel, + final AuthoringKitWizard parent) { + this(itemModel, parent, null); + } + + public ProceedingsOrganizerStep(final ItemSelectionModel itemModel, + final AuthoringKitWizard parent, + final String prefix) { + super(itemModel, parent, prefix); + + BasicItemForm setOrganizerForm = new ProceedingsOrganizerForm(itemModel); + add(SET_PROCEEDINGS_ORGANIZER_STEP, + (String) PublicationGlobalizationUtil.globalize("publications.ui.proceedings.setOrganizer").localize(), + new WorkflowLockedComponentAccess(setOrganizerForm, itemModel), + setOrganizerForm.getSaveCancelSection().getCancelButton()); + + ProceedingsOrganizerSheet sheet = new ProceedingsOrganizerSheet( + itemModel); + setDisplayComponent(sheet); + } + +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsPropertiesStep.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsPropertiesStep.java index 1c1041e95..aa2c27b4e 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsPropertiesStep.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsPropertiesStep.java @@ -47,10 +47,6 @@ public class ProceedingsPropertiesStep DomainObjectPropertySheet sheet = (DomainObjectPropertySheet) getPublicationPropertySheet( itemModel); - sheet.add(PublicationGlobalizationUtil.globalize( - "publications.ui.proceedings.organizer_of_conference"), - "organizerOfConference.title"); - sheet.add(PublicationGlobalizationUtil.globalize( "publications.ui.proceedings.name_of_conference"), Proceedings.NAME_OF_CONFERENCE); @@ -103,6 +99,9 @@ public class ProceedingsPropertiesStep AuthoringKitWizard parent) { super.addSteps(itemModel, parent); + addStep(new ProceedingsOrganizerStep(itemModel, parent), + "publications.ui.proceedings.organizer"); + addStep(new ProceedingsPapersStep(itemModel, parent), "publications.ui.proceedings.papers"); } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsPropertyForm.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsPropertyForm.java index 3210515f6..80e1df2c5 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsPropertyForm.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/ProceedingsPropertyForm.java @@ -49,9 +49,7 @@ public class ProceedingsPropertyForm FormInitListener, FormSubmissionListener { - private ProceedingsPropertiesStep m_step; - private ItemSearchWidget m_itemSearch; - private final String ITEM_SEARCH = "organizerOfConference"; + private ProceedingsPropertiesStep m_step; public static final String ID = "proceedingsEdit"; public ProceedingsPropertyForm(ItemSelectionModel itemModel) { @@ -68,16 +66,7 @@ public class ProceedingsPropertyForm @Override protected void addWidgets() { super.addWidgets(); - - add(new Label((String) PublicationGlobalizationUtil.globalize( - "publications.ui.proceedings.organizer_of_conference"). - localize())); - m_itemSearch = - new ItemSearchWidget(ITEM_SEARCH, - ContentType.findByAssociatedObjectType( - GenericOrganizationalUnit.class.getName())); - add(m_itemSearch); - + add(new Label(PublicationGlobalizationUtil.globalize( "publications.ui.proceedings.name_of_conference"))); ParameterModel nameOfConfParam = new StringParameter( @@ -117,8 +106,7 @@ public class ProceedingsPropertyForm FormData data = fse.getFormData(); Proceedings proceedings = (Proceedings) super.initBasicWidgets(fse); - - data.put(ITEM_SEARCH, proceedings.getOrganizerOfConference()); + data.put(Proceedings.NAME_OF_CONFERENCE, proceedings.getNameOfConference()); data.put(Proceedings.PLACE_OF_CONFERENCE, @@ -138,9 +126,7 @@ public class ProceedingsPropertyForm if ((proceedings != null) && getSaveCancelSection().getSaveButton(). - isSelected(fse.getPageState())) { - proceedings.setOrganizerOfConference( - (GenericOrganizationalUnit) data.get(ITEM_SEARCH)); + isSelected(fse.getPageState())) { proceedings.setNameOfConference((String) data.get( Proceedings.NAME_OF_CONFERENCE)); proceedings.setPlaceOfConference((String) data.get( diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationResources.properties b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationResources.properties index deb35d4b4..3fe1177be 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationResources.properties +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationResources.properties @@ -273,3 +273,28 @@ publications.ui.inProceedings.proceedings.confirm_remove=Do really want to remov publications.ui.series.name=Name (URL) publications.ui.authors.edit_assoc=Edit association publications.ui.series.editship.edit=Edit edithship +publications.ui.unpublished.organization.none=No organization associated +publications.ui.unpublished.organization.remove=Remove association +publications.ui.unpublished.organization.confirm_remove=Are you sure to remove the association between the selected publication and the organization? +publications.ui.with_publisher.publisher.none=No publisher associated +publications.ui.with_publisher.publisher.remove=Remove publisher +publications.ui.with_publisher.publisher.remove.confirm=Are you sure to remove this publisher association? +publications.ui.with_publisher.setPublisher=Set publisher +publications.ui.expertise.organization.none=No organization associated +publications.ui.expertise.organization.remove=Remove +publication.ui.expertise.organization.remove.confirm=Do you really want to remove this association? +publication.ui.expertise.orderer.remove.confirm=Do you really want to remove this association? +publications.ui.expertise.orderer.remove=Remove +publications.ui.expertise.orderer.none=No orderer asssociated +publications.ui.expertise.setOrganization=Set organization +publications.ui.expertise.setOrderer=Set orderer +publications.ui.proceedings.organizer=Organizer of conference +publications.ui.proceedings.organizer.none=No organizer associated +publications.ui.proceedings.organizer.remove=Remove +publications.ui.proceedings.organizer.remove.confirm=Do you really want to remove this association? +publications.ui.proceedings.setOrganizer=Set organizer of conference +publications.ui.unpublished.setOrganization=Set organization +publications.ui.internetarticle.setOrganization=Set organization +publications.ui.internetarticle.organization.none=No organization associated +publications.ui.internetarticle.select_organization=Select organization +publication.ui.internetarticle.organization.remove=Remove diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationResources_de.properties b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationResources_de.properties index b290bc2ef..e40560111 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationResources_de.properties +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationResources_de.properties @@ -272,3 +272,28 @@ publications.ui.inProceedings.proceedings.confirm_remove=Wollen Sie diese Verkn\ publications.ui.series.name=Name (URL) publications.ui.authors.edit_assoc=Verkn\u00fcpfung bearbeiten publications.ui.series.editship.edit=Herausgeberschaft bearbeiten +publications.ui.unpublished.organization.none=Keine Organisation zugewiesen +publications.ui.unpublished.organization.remove=Verkn\u00fcpfung entfernen +publications.ui.unpublished.organization.confirm_remove=Verkn\u00fcpfung der ausgew\u00e4hlten Publikation mit der Organisation wirklich entfernen? +publications.ui.with_publisher.publisher.none=Kein Verlag zugewiesen +publications.ui.with_publisher.publisher.remove=Verlag entfernen +publications.ui.with_publisher.publisher.remove.confirm=Zuordnung zum Verlag wirklich entfernen? +publications.ui.with_publisher.setPublisher=Verlag zuordnen +publications.ui.expertise.organization.none=Keine Organisation zugewiesen +publications.ui.expertise.organization.remove=Entfernen +publication.ui.expertise.organization.remove.confirm=Wollen Sie diese Verkn\u00fcpfung wirklich entfernen? +publication.ui.expertise.orderer.remove.confirm=Wollen Sie diese Verkn\u00fcpfung wirklich entfernen? +publications.ui.expertise.orderer.remove=Entfernen +publications.ui.expertise.orderer.none=Kein Auftraggeber zugewiesen +publications.ui.expertise.setOrganization=Organisation zuweisen +publications.ui.expertise.setOrderer=Auftraggeber zuweisen +publications.ui.proceedings.organizer=Veranstalter der Konferenz +publications.ui.proceedings.organizer.none=Kein Veranstalter zugewiesen +publications.ui.proceedings.organizer.remove=Entfernen +publications.ui.proceedings.organizer.remove.confirm=Wollen Sie diese Verkn\u00fcpfung wirklich entfernen? +publications.ui.proceedings.setOrganizer=Veranstalter der Konferenz zuweisen +publications.ui.unpublished.setOrganization=Organisation zuweisen +publications.ui.internetarticle.setOrganization=Organisation zuweisen +publications.ui.internetarticle.organization.none=Keine Organisation zugewiesen +publications.ui.internetarticle.select_organization=Organisation ausw\u00e4hlen +publication.ui.internetarticle.organization.remove=Entfernen diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherPropertiesStep.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherPropertiesStep.java index 3808c2bec..76dfb526d 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherPropertiesStep.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherPropertiesStep.java @@ -53,23 +53,19 @@ public class PublicationWithPublisherPropertiesStep sheet.add(PublicationGlobalizationUtil.globalize( "publications.ui.with_publisher.volume"), - PublicationWithPublisher.VOLUME); + PublicationWithPublisher.VOLUME); sheet.add(PublicationGlobalizationUtil.globalize( "publications.ui.with_publisher.number_of_volumes"), - PublicationWithPublisher.NUMBER_OF_VOLUMES); + PublicationWithPublisher.NUMBER_OF_VOLUMES); sheet.add(PublicationGlobalizationUtil.globalize( "publications.ui.with_publisher.number_of_pages"), - PublicationWithPublisher.NUMBER_OF_PAGES); - - sheet.add(PublicationGlobalizationUtil.globalize( - "publications.ui.with_publisher.edition"), - PublicationWithPublisher.EDITION); + PublicationWithPublisher.NUMBER_OF_PAGES); sheet.add(PublicationGlobalizationUtil.globalize( - "publications.ui.with_publisher.publisher"), - "publisher.title"); + "publications.ui.with_publisher.edition"), + PublicationWithPublisher.EDITION); return sheet; } @@ -102,4 +98,13 @@ public class PublicationWithPublisherPropertiesStep "publications.ui.publication.basic_properties"). localize()), basicProperties); } + + @Override + protected void addSteps(final ItemSelectionModel itemModel, + final AuthoringKitWizard parent) { + super.addSteps(itemModel, parent); + + addStep(new PublicationWithPublisherSetPublisherStep(itemModel, parent), + "publications.ui.with_publisher.publisher"); + } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherPropertyForm.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherPropertyForm.java index 5d9bab549..3dd1a328f 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherPropertyForm.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherPropertyForm.java @@ -70,16 +70,7 @@ public class PublicationWithPublisherPropertyForm @Override protected void addWidgets() { super.addWidgets(); - - add(new Label((String) PublicationGlobalizationUtil.globalize( - "publications.ui.with_publisher.publisher").localize())); - m_itemSearch = - new ItemSearchWidget( - ITEM_SEARCH, - ContentType.findByAssociatedObjectType( - Publisher.class.getName())); - add(m_itemSearch); - + add(new Label((String) PublicationGlobalizationUtil.globalize( "publications.ui.with_publisher.isbn").localize())); ParameterModel isbnParam = new StringParameter( @@ -130,8 +121,7 @@ public class PublicationWithPublisherPropertyForm PublicationWithPublisher publication = (PublicationWithPublisher) super. initBasicWidgets(fse); - - data.put(ITEM_SEARCH, publication.getPublisher()); + data.put(PublicationWithPublisher.ISBN, publication.getISBN()); data.put(PublicationWithPublisher.VOLUME, publication.getVolume()); data.put(PublicationWithPublisher.NUMBER_OF_VOLUMES, @@ -152,8 +142,7 @@ public class PublicationWithPublisherPropertyForm processBasicWidgets(fse); if ((publication != null) && getSaveCancelSection().getSaveButton(). - isSelected(fse.getPageState())) { - publication.setPublisher((Publisher) data.get(ITEM_SEARCH)); + isSelected(fse.getPageState())) { publication.setISBN((String) data.get(PublicationWithPublisher.ISBN)); publication.setVolume((Integer) data.get( diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherSetPublisherForm.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherSetPublisherForm.java new file mode 100644 index 000000000..4b6233e7c --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherSetPublisherForm.java @@ -0,0 +1,67 @@ +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.PublicationWithPublisher; +import com.arsdigita.cms.contenttypes.Publisher; +import com.arsdigita.cms.ui.ItemSearchWidget; +import com.arsdigita.cms.ui.authoring.BasicItemForm; + +/** + * + * @author Jens Pelzetter + */ +public class PublicationWithPublisherSetPublisherForm + extends BasicItemForm + implements FormInitListener, + FormProcessListener { + + private ItemSearchWidget itemSearch; + private final String ITEM_SEARCH = "setPublisher"; + + public PublicationWithPublisherSetPublisherForm( + final ItemSelectionModel itemModel) { + super("PublicationWithPublisherSetPublisher", itemModel); + } + + @Override + public void addWidgets() { + add(new Label((String) PublicationGlobalizationUtil.globalize( + "publications.ui.with_publisher.publisher").localize())); + itemSearch = + new ItemSearchWidget( + ITEM_SEARCH, + ContentType.findByAssociatedObjectType( + Publisher.class.getName())); + add(itemSearch); + } + + @Override + public void init(final FormSectionEvent fse) throws FormProcessException { + PageState state = fse.getPageState(); + + setVisible(state, true); + } + + @Override + public void process(final FormSectionEvent fse) throws FormProcessException { + FormData data = fse.getFormData(); + PageState state = fse.getPageState(); + PublicationWithPublisher publication = (PublicationWithPublisher) getItemSelectionModel(). + getSelectedObject(state); + + if (this.getSaveCancelSection().getSaveButton().isSelected(state)) { + publication.setPublisher((Publisher) data.get(ITEM_SEARCH)); + + init(fse); + } + + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherSetPublisherSheet.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherSetPublisherSheet.java new file mode 100644 index 000000000..dbd83b3e0 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherSetPublisherSheet.java @@ -0,0 +1,209 @@ +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.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.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.PublicationWithPublisher; +import com.arsdigita.cms.contenttypes.Publisher; +import com.arsdigita.cms.dispatcher.Utilities; +import com.arsdigita.util.LockableImpl; + +/** + * + * @author Jens Pelzetter + */ +public class PublicationWithPublisherSetPublisherSheet + extends Table + implements TableActionListener { + + private final String TABLE_COL_EDIT = "table_col_edit"; + private final String TABLE_COL_DEL = "table_col_del"; + private ItemSelectionModel itemModel; + + public PublicationWithPublisherSetPublisherSheet( + final ItemSelectionModel itemModel) { + super(); + this.itemModel = itemModel; + + setEmptyView(new Label(PublicationGlobalizationUtil.globalize( + "publications.ui.with_publisher.publisher.none"))); + + TableColumnModel columnModel = getColumnModel(); + columnModel.add(new TableColumn( + 0, + PublicationGlobalizationUtil.globalize( + "publications.ui.with_publisher.publisher").localize(), + TABLE_COL_EDIT)); + columnModel.add(new TableColumn( + 1, + PublicationGlobalizationUtil.globalize( + "publications.ui.with_publisher.publisher.remove").localize(), + TABLE_COL_EDIT)); + + setModelBuilder(new PublicationWithPublisherSetPublisherSheetModelBuilder( + itemModel)); + columnModel.get(0).setCellRenderer(new EditCellRenderer()); + columnModel.get(1).setCellRenderer((new DeleteCellRenderer())); + + addTableActionListener(this); + } + + private class PublicationWithPublisherSetPublisherSheetModelBuilder + extends LockableImpl + implements TableModelBuilder { + + private ItemSelectionModel itemModel; + + public PublicationWithPublisherSetPublisherSheetModelBuilder( + final ItemSelectionModel itemModel) { + this.itemModel = itemModel; + } + + @Override + public TableModel makeModel(final Table table, final PageState state) { + table.getRowSelectionModel().clearSelection(state); + PublicationWithPublisher publication = (PublicationWithPublisher) itemModel. + getSelectedObject(state); + return new PublicationWithPublisherSetPublisherSheetModel(table, + state, + publication); + } + } + + private class PublicationWithPublisherSetPublisherSheetModel + implements TableModel { + + private Table table; + private Publisher publisher; + private boolean m_done; + + public PublicationWithPublisherSetPublisherSheetModel(final Table table, + final PageState state, + final PublicationWithPublisher publication) { + this.table = table; + publisher = publication.getPublisher(); + if (publisher == null) { + m_done = false; + } else { + m_done = true; + } + } + + public int getColumnCount() { + return table.getColumnModel().size(); + } + + public boolean nextRow() { + boolean ret; + + if (m_done) { + ret = true; + m_done = false; + } else { + ret = false; + } + + return ret; + } + + public Object getElementAt(final int columnIndex) { + switch (columnIndex) { + case 0: + return publisher.getTitle(); + case 1: + return PublicationGlobalizationUtil.globalize( + "publications.ui.with_publisher.publisher.remove"). + localize(); + default: + return null; + } + } + + public Object getKeyAt(final int columnIndex) { + return publisher.getID(); + } + } + + private class EditCellRenderer + extends LockableImpl + implements TableCellRenderer { + + @Override + public Component getComponent(Table table, + PageState state, + Object value, + boolean isSelected, + Object key, + int row, + int column) { + Label label = new Label(value.toString()); + return label; + } + } + + private class DeleteCellRenderer + extends LockableImpl + implements TableCellRenderer { + + @Override + public Component getComponent(Table table, + PageState state, + Object value, + boolean isSelected, + Object key, + int row, + int col) { + com.arsdigita.cms.SecurityManager securityManager = + Utilities.getSecurityManager(state); + PublicationWithPublisher publication = (PublicationWithPublisher) itemModel. + getSelectedObject( + state); + + boolean canEdit = securityManager.canAccess( + state.getRequest(), + com.arsdigita.cms.SecurityManager.DELETE_ITEM, + publication); + + if (canEdit) { + ControlLink link = new ControlLink(value.toString()); + link.setConfirmation((String) PublicationGlobalizationUtil. + globalize( + "publications.ui.with_publisher.publisher.remove.confirm"). + localize()); + return link; + } else { + Label label = new Label(value.toString()); + return label; + } + } + } + + public void cellSelected(final TableActionEvent event) { + PageState state = event.getPageState(); + + PublicationWithPublisher publication = (PublicationWithPublisher) itemModel.getSelectedObject(state); + + TableColumn column = getColumnModel().get(event.getColumn().intValue()); + + if (column.getHeaderKey().toString().equals(TABLE_COL_EDIT)) { + + } else if(column.getHeaderKey().toString().equals(TABLE_COL_DEL)) { + publication.setPublisher(null); + } + + } + + public void headSelected(final TableActionEvent event) { + //Nothing to do + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherSetPublisherStep.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherSetPublisherStep.java new file mode 100644 index 000000000..e164b3142 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/PublicationWithPublisherSetPublisherStep.java @@ -0,0 +1,39 @@ +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 + */ +public class PublicationWithPublisherSetPublisherStep extends SimpleEditStep { + + private String SET_PUBLICATION_PUBLISHER_STEP = + "setPublicationPublisherStep"; + + public PublicationWithPublisherSetPublisherStep(final ItemSelectionModel itemModel, + final AuthoringKitWizard parent) { + this(itemModel, parent, null); + } + + public PublicationWithPublisherSetPublisherStep(final ItemSelectionModel itemModel, + final AuthoringKitWizard parent, + final String prefix) { + super(itemModel, parent, prefix); + + BasicItemForm setPublisherForm = new PublicationWithPublisherSetPublisherForm( + itemModel); + add(SET_PUBLICATION_PUBLISHER_STEP, + (String) PublicationGlobalizationUtil.globalize("publications.ui.with_publisher.setPublisher").localize(), + new WorkflowLockedComponentAccess(setPublisherForm, itemModel), + setPublisherForm.getSaveCancelSection().getCancelButton()); + + PublicationWithPublisherSetPublisherSheet sheet = new PublicationWithPublisherSetPublisherSheet( + itemModel); + setDisplayComponent(sheet); + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedOrganizationForm.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedOrganizationForm.java new file mode 100644 index 000000000..1e2943ef9 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedOrganizationForm.java @@ -0,0 +1,63 @@ +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.UnPublished; +import com.arsdigita.cms.ui.ItemSearchWidget; +import com.arsdigita.cms.ui.authoring.BasicItemForm; + +/** + * + * @author Jens Pelzetter + */ +public class UnPublishedOrganizationForm + extends BasicItemForm + implements FormProcessListener, + FormInitListener { + + private ItemSearchWidget itemSearch; + private final String ITEM_SEARCH = "unPublishedOrga"; + + public UnPublishedOrganizationForm(final ItemSelectionModel itemModel) { + super("UnPublishedOrganizationForm", itemModel); + } + + @Override + public void addWidgets() { + add(new Label((String) PublicationGlobalizationUtil.globalize( + "publications.ui.unpublished.organization").localize())); + itemSearch = new ItemSearchWidget(ITEM_SEARCH, + ContentType.findByAssociatedObjectType( + GenericOrganizationalUnit.class.getName())); + add(itemSearch); + } + + @Override + public void init(final FormSectionEvent fse) throws FormProcessException { + PageState state = fse.getPageState(); + + setVisible(state, true); + } + + @Override + public void process(final FormSectionEvent fse) throws FormProcessException { + FormData data = fse.getFormData(); + PageState state = fse.getPageState(); + UnPublished unPublished = (UnPublished) getItemSelectionModel(). + getSelectedObject(state); + + if (this.getSaveCancelSection().getSaveButton().isSelected(state)) { + unPublished.setOrganization((GenericOrganizationalUnit) data.get(ITEM_SEARCH)); + + init(fse); + } + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedOrganizationSheet.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedOrganizationSheet.java new file mode 100644 index 000000000..7ee3bf379 --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedOrganizationSheet.java @@ -0,0 +1,202 @@ +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.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.ItemSelectionModel; +import com.arsdigita.cms.SecurityManager; +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit; +import com.arsdigita.cms.contenttypes.UnPublished; +import com.arsdigita.cms.dispatcher.Utilities; +import com.arsdigita.util.LockableImpl; + +/** + * + * @author Jens Pelzetter + */ +public class UnPublishedOrganizationSheet + extends Table + implements TableActionListener { + + private final String TABLE_COL_EDIT = "table_col_edit"; + private final String TABLE_COL_DELETE = "table_col_delete"; + private ItemSelectionModel itemModel; + + public UnPublishedOrganizationSheet(final ItemSelectionModel itemModel) { + super(); + this.itemModel = itemModel; + + setEmptyView(new Label(PublicationGlobalizationUtil.globalize( + "publications.ui.unpublished.organization.none"))); + + TableColumnModel columnModel = getColumnModel(); + columnModel.add(new TableColumn( + 0, + PublicationGlobalizationUtil.globalize( + "publications.ui.unpublished.organization").localize(), + TABLE_COL_EDIT)); + columnModel.add(new TableColumn( + 1, + PublicationGlobalizationUtil.globalize( + "publications.ui.unpublished.organization.remove").localize(), + TABLE_COL_DELETE)); + + setModelBuilder(new UnPublishedOrganizationSheetModelBuilder(itemModel)); + columnModel.get(0).setCellRenderer(new EditCellRenderer()); + columnModel.get(1).setCellRenderer(new DeleteCellRenderer()); + + addTableActionListener(this); + } + + private class UnPublishedOrganizationSheetModelBuilder + extends LockableImpl + implements TableModelBuilder { + + private ItemSelectionModel itemModel; + + public UnPublishedOrganizationSheetModelBuilder( + final ItemSelectionModel itemModel) { + this.itemModel = itemModel; + } + + @Override + public TableModel makeModel(final Table table, final PageState state) { + table.getRowSelectionModel().clearSelection(state); + UnPublished unPublished = (UnPublished) itemModel.getSelectedObject( + state); + return new UnPublishedOrganizationSheetModel(table, state, + unPublished); + } + } + + private class UnPublishedOrganizationSheetModel implements TableModel { + + private Table table; + private GenericOrganizationalUnit orga; + private boolean m_done; + + public UnPublishedOrganizationSheetModel(final Table table, + final PageState state, + final UnPublished unPublished) { + this.table = table; + orga = unPublished.getOrganization(); + if (orga == null) { + m_done = false; + } else { + m_done = true; + } + } + + public int getColumnCount() { + return table.getColumnModel().size(); + } + + public boolean nextRow() { + boolean ret; + + if (m_done) { + ret = true; + m_done = false; + } else { + ret = false; + } + + return ret; + } + + public Object getElementAt(final int columnIndex) { + switch (columnIndex) { + case 0: + return orga.getTitle(); + case 1: + return PublicationGlobalizationUtil.globalize( + "publications.ui.unpublished.organization.remove"). + localize(); + default: + return null; + } + } + + public Object getKeyAt(int columnIndex) { + return orga.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) { + Label label = new Label(value.toString()); + 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) { + SecurityManager securityManager = + Utilities.getSecurityManager(state); + UnPublished unPublished = (UnPublished) itemModel.getSelectedObject( + state); + + boolean canEdit = securityManager.canAccess(state.getRequest(), + SecurityManager.DELETE_ITEM, + unPublished); + + if (canEdit) { + ControlLink link = new ControlLink(value.toString()); + link.setConfirmation((String) PublicationGlobalizationUtil. + globalize( + "publications.ui.unpublished.organization.confirm_remove"). + localize()); + return link; + } else { + Label label = new Label(value.toString()); + return label; + } + } + } + + public void cellSelected(final TableActionEvent event) { + PageState state = event.getPageState(); + + UnPublished unPublished = (UnPublished) itemModel.getSelectedObject( + state); + + TableColumn column = getColumnModel().get(event.getColumn().intValue()); + if (column.getHeaderKey().toString().equals(TABLE_COL_EDIT)) { + } else if (column.getHeaderKey().toString().equals(TABLE_COL_DELETE)) { + unPublished.setOrganization(null); + } + } + + public void headSelected(final TableActionEvent event) { + //Nothing to do + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedOrganizationStep.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedOrganizationStep.java new file mode 100644 index 000000000..a95cca28e --- /dev/null +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedOrganizationStep.java @@ -0,0 +1,39 @@ +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 + */ +public class UnPublishedOrganizationStep extends SimpleEditStep { + + private String SET_UNPUBLISHED_ORGANIZATION_STEP = + "setUnPublishedOrganizationStep"; + + public UnPublishedOrganizationStep(final ItemSelectionModel itemModel, + final AuthoringKitWizard parent) { + this(itemModel, parent, null); + } + + public UnPublishedOrganizationStep(final ItemSelectionModel itemModel, + final AuthoringKitWizard parent, + String prefix) { + super(itemModel, parent, prefix); + + BasicItemForm setOrgaForm = new UnPublishedOrganizationForm(itemModel); + add(SET_UNPUBLISHED_ORGANIZATION_STEP, + (String) PublicationGlobalizationUtil.globalize( + "publications.ui.unpublished.setOrganization").localize(), + new WorkflowLockedComponentAccess(setOrgaForm, itemModel), + setOrgaForm.getSaveCancelSection().getCancelButton()); + + UnPublishedOrganizationSheet sheet = new UnPublishedOrganizationSheet( + itemModel); + setDisplayComponent(sheet); + } +} diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedPropertiesStep.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedPropertiesStep.java index 2425a38e3..9d549673f 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedPropertiesStep.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedPropertiesStep.java @@ -29,7 +29,6 @@ import com.arsdigita.cms.ui.authoring.SimpleEditStep; import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess; import com.arsdigita.toolbox.ui.DomainObjectPropertySheet; - /** * * @author Jens Pelzetter @@ -48,19 +47,15 @@ public class UnPublishedPropertiesStep extends PublicationPropertiesStep { sheet.add(PublicationGlobalizationUtil.globalize( "publications.ui.unpublished.place"), - UnPublished.PLACE); - - sheet.add(PublicationGlobalizationUtil.globalize( - "publications.ui.unpublished.organization"), - "organization.title"); - + UnPublished.PLACE); + sheet.add(PublicationGlobalizationUtil.globalize( "publications.ui.unpublished.number"), - UnPublished.NUMBER); + UnPublished.NUMBER); sheet.add(PublicationGlobalizationUtil.globalize( "publications.ui.unpublished.number_of_pages"), - UnPublished.NUMBER_OF_PAGES); + UnPublished.NUMBER_OF_PAGES); @@ -77,7 +72,7 @@ public class UnPublishedPropertiesStep extends PublicationPropertiesStep { BasicPageForm editBasicSheet = new UnPublishedPropertyForm(itemModel, this); - basicProperties.add(EDIT_SHEET_NAME, + basicProperties.add(EDIT_SHEET_NAME, (String) PublicationGlobalizationUtil.globalize( "publications.ui.unpublished.edit_basic_sheet"). localize(), new WorkflowLockedComponentAccess(editBasicSheet, @@ -93,4 +88,14 @@ public class UnPublishedPropertiesStep extends PublicationPropertiesStep { "publications.ui.publication.basic_properties"). localize()), basicProperties); } + + @Override + protected void addSteps(ItemSelectionModel itemModel, + AuthoringKitWizard parent) { + super.addSteps(itemModel, parent); + + addStep(new UnPublishedOrganizationStep(itemModel, + parent), + "publications.ui.unpublished.organization"); + } } diff --git a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedPropertyForm.java b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedPropertyForm.java index e237e9fcf..2919eafa9 100644 --- a/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedPropertyForm.java +++ b/ccm-sci-publications/src/com/arsdigita/cms/contenttypes/ui/UnPublishedPropertyForm.java @@ -73,15 +73,7 @@ public class UnPublishedPropertyForm new StringParameter(InternetArticle.PLACE); TextField place = new TextField(placeParam); add(place); - - add(new Label((String) PublicationGlobalizationUtil.globalize( - "publications.ui.unpublished.organization").localize())); - m_itemSearch = new ItemSearchWidget(ITEM_SEARCH, - ContentType. - findByAssociatedObjectType( - GenericOrganizationalUnit.class.getName())); - add(m_itemSearch); - + add(new Label((String) PublicationGlobalizationUtil.globalize( "publications.ui.unpublished.number").localize())); ParameterModel numberParam = @@ -104,8 +96,7 @@ public class UnPublishedPropertyForm FormData data = fse.getFormData(); UnPublished unpublished = (UnPublished) initBasicWidgets(fse); - data.put(UnPublished.PLACE, unpublished.getPlace()); - data.put(ITEM_SEARCH, unpublished.getOrganization()); + data.put(UnPublished.PLACE, unpublished.getPlace()); data.put(UnPublished.NUMBER, unpublished.getNumber()); data.put(UnPublished.NUMBER_OF_PAGES, unpublished.getNumberOfPages()); } @@ -119,9 +110,7 @@ public class UnPublishedPropertyForm if ((unpublished != null) && getSaveCancelSection().getSaveButton(). isSelected(fse.getPageState())) { - unpublished.setPlace((String) data.get(UnPublished.PLACE)); - unpublished.setOrganization( - (GenericOrganizationalUnit) data.get(ITEM_SEARCH)); + unpublished.setPlace((String) data.get(UnPublished.PLACE)); unpublished.setNumber((String) data.get(UnPublished.NUMBER)); unpublished.setNumberOfPages( (Integer) data.get(UnPublished.NUMBER_OF_PAGES)); diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartment.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartment.java index 5744ded2e..5e5aa841f 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartment.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartment.java @@ -20,6 +20,7 @@ package com.arsdigita.cms.contenttypes; import com.arsdigita.domain.DataObjectNotFoundException; +import com.arsdigita.domain.DomainObjectFactory; import com.arsdigita.persistence.DataCollection; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.OID; @@ -150,7 +151,7 @@ public class SciDepartment extends GenericOrganizationalUnit { dobj = collection.getDataObject(); collection.close(); - return new SciDepartment(dobj); + return (SciDepartment) DomainObjectFactory.newInstance(dobj); } } @@ -190,7 +191,7 @@ public class SciDepartment extends GenericOrganizationalUnit { dobj = collection.getDataObject(); collection.close(); - return new SciOrganization(dobj); + return (SciOrganization) DomainObjectFactory.newInstance(dobj); } } diff --git a/ccm-zes-aplaws/web/packages/navigation/templates/SpecializingList.jsp b/ccm-zes-aplaws/web/packages/navigation/templates/SpecializingList.jsp index 34898c1f9..cffbfbfa3 100644 --- a/ccm-zes-aplaws/web/packages/navigation/templates/SpecializingList.jsp +++ b/ccm-zes-aplaws/web/packages/navigation/templates/SpecializingList.jsp @@ -41,7 +41,6 @@ - - + \ No newline at end of file