From da3075872462101fb046d86d47b2a8292426b63a Mon Sep 17 00:00:00 2001 From: jensp Date: Thu, 14 Oct 2010 12:40:48 +0000 Subject: [PATCH] =?UTF-8?q?Folgende=20=C3=84nderungen,=20Erg=C3=A4nzungen?= =?UTF-8?q?=20etc:=20-=20JavaDoc=20f=C3=BCr=20ccm-sci-types-organization?= =?UTF-8?q?=20-=20SciMember=20Type=20zu=20ccm-sci-types-organization=20hin?= =?UTF-8?q?zugef=C3=BCgt=20(abgeleitet=20von=20GenericPerson)=20-=20Generi?= =?UTF-8?q?cOrganizationalUnitPersonAddForm=20so=20angepasst,=20dass=20der?= =?UTF-8?q?=20Typ=20der=20anzuzeigenden=20Personen=20beschr=C3=A4nkt=20wer?= =?UTF-8?q?den=20kann=20(durch=20=C3=BCberschreiben=20einer=20Methode)=20-?= =?UTF-8?q?=20CLI-Tool=20zum=20importieren=20von=20RelationAttributes=20al?= =?UTF-8?q?s=20=C3=9Cbergangsl=C3=B6sung,=20bis=20es=20eine=20GUI=20gibt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.libreccm.org/ccm/trunk@571 8810af33-2d31-482b-a856-94f89814c4df --- .../application.xml | 20 ++ .../ccm-cms-relationattributeimporter.config | 4 + .../ccm-cms-relationattributeimporter.load | 12 ++ .../Initializer.java | 35 ++++ .../cms/relationattributeimporter/Loader.java | 36 ++++ .../RelAttrBean.java | 79 ++++++++ .../RelationAttributeImporter.java | 175 +++++++++++++++++ .../RelationAttributeParser.java | 176 ++++++++++++++++++ .../content-types/GenericContact.pdl | 6 +- ...enericOrganizationalUnitPersonAddForm.java | 25 ++- ...rganizationalUnitPersonPropertiesStep.java | 17 +- .../ui/GenericPersonPropertiesStep.java | 145 +++++++++------ .../com/arsdigita/content-types/SciMember.pdl | 12 ++ .../arsdigita/cms/contenttypes/SciMember.xml | 37 ++++ .../arsdigita/cms/contenttypes/SciMember.xml | 17 ++ .../src/ccm-sci-types-organization.load | 9 +- .../cms/contenttypes/SciDepartment.java | 68 ++++++- .../SciDepartmentInitializer.java | 20 ++ .../cms/contenttypes/SciDepartmentLoader.java | 20 ++ .../SciDepartmentProjectsCollection.java | 3 + ...SciDepartmentSubDepartmentsCollection.java | 2 + .../arsdigita/cms/contenttypes/SciMember.java | 93 +++++++++ .../contenttypes/SciMemberInitializer.java | 45 +++++ .../cms/contenttypes/SciMemberLoader.java | 36 ++++ .../cms/contenttypes/SciOrganization.java | 49 ++++- .../contenttypes/SciOrganizationConfig.java | 1 + .../SciOrganizationDepartmentsCollection.java | 3 + .../SciOrganizationInitializer.java | 20 ++ .../contenttypes/SciOrganizationLoader.java | 21 +++ .../SciOrganizationProjectsCollection.java | 3 + .../cms/contenttypes/SciProject.java | 31 +++ .../SciProjectDepartmentsCollection.java | 1 + .../contenttypes/SciProjectInitializer.java | 20 ++ .../cms/contenttypes/SciProjectLoader.java | 20 ++ .../SciProjectOrganizationsCollection.java | 1 + .../SciProjectSubProjectsCollection.java | 1 + .../ccm-sci-types-organization_entities.png | Bin 0 -> 139120 bytes .../ui/SciDepartmentDescriptionEditForm.java | 21 +++ .../ui/SciDepartmentDescriptionStep.java | 21 +++ .../SciDepartmentDescriptionUploadForm.java | 22 +++ .../ui/SciDepartmentMemberAddForm.java | 47 +++++ .../ui/SciDepartmentMemberStep.java | 59 ++++++ .../ui/SciDepartmentOrganizationForm.java | 22 +++ .../ui/SciDepartmentOrganizationSheet.java | 24 ++- .../ui/SciDepartmentOrganizationStep.java | 24 +++ .../ui/SciDepartmentProjectAddForm.java | 22 +++ .../ui/SciDepartmentProjectsStep.java | 24 +++ .../ui/SciDepartmentProjectsTable.java | 22 +++ .../ui/SciDepartmentPropertiesStep.java | 29 ++- .../ui/SciDepartmentPropertyForm.java | 21 +++ .../ui/SciDepartmentSubDepartmentAddForm.java | 21 +++ .../ui/SciDepartmentSubDepartmentsStep.java | 24 ++- .../ui/SciDepartmentSubDepartmentsTable.java | 21 +++ .../ui/SciDepartmentSuperDepartmentForm.java | 21 +++ .../ui/SciDepartmentSuperDepartmentSheet.java | 21 +++ .../ui/SciDepartmentSuperDepartmentStep.java | 22 +++ .../ui/SciMemberPropertiesStep.java | 56 ++++++ .../ui/SciMemberPropertyForm.java | 112 +++++++++++ .../ui/SciOrganizationDepartmentAddForm.java | 22 +++ .../ui/SciOrganizationDepartmentsStep.java | 24 +++ .../ui/SciOrganizationDepartmentsTable.java | 23 +++ .../SciOrganizationDescriptionEditForm.java | 21 +++ .../ui/SciOrganizationDescriptionStep.java | 21 +++ .../SciOrganizationDescriptionUploadForm.java | 22 +++ .../ui/SciOrganizationGlobalizationUtil.java | 22 ++- .../ui/SciOrganizationMemberAddForm.java | 50 +++++ .../ui/SciOrganizationMemberStep.java | 66 +++++++ .../ui/SciOrganizationProjectAddForm.java | 23 +++ .../ui/SciOrganizationProjectsStep.java | 26 +++ .../ui/SciOrganizationProjectsTable.java | 23 +++ .../ui/SciOrganizationPropertiesStep.java | 28 ++- .../ui/SciOrganizationPropertyForm.java | 20 ++ .../ui/SciOrganizationResources.properties | 108 +++++++++++ .../ui/SciOrganizationResources_de.properties | 108 +++++++++++ .../ui/SciProjectDepartmentAddForm.java | 21 +++ .../ui/SciProjectDepartmentsStep.java | 23 +++ .../ui/SciProjectDepartmentsTable.java | 21 +++ .../ui/SciProjectDescriptionEditForm.java | 24 ++- .../ui/SciProjectDescriptionStep.java | 20 ++ .../ui/SciProjectDescriptionUploadForm.java | 20 ++ .../ui/SciProjectMemberAddForm.java | 43 +++++ .../contenttypes/ui/SciProjectMemberStep.java | 60 ++++++ .../ui/SciProjectOrganizationsAddForm.java | 21 +++ .../ui/SciProjectOrganizationsStep.java | 23 +++ .../ui/SciProjectOrganizationsTable.java | 21 +++ .../ui/SciProjectPropertiesStep.java | 30 ++- .../ui/SciProjectPropertyForm.java | 22 ++- .../ui/SciProjectSubProjectsTable.java | 20 ++ .../ui/SciProjectSubprojectAddForm.java | 20 ++ .../ui/SciProjectSubprojectsStep.java | 21 +++ .../ui/SciProjectSuperProjectSetForm.java | 20 ++ .../ui/SciProjectSuperProjectSheet.java | 20 ++ .../ui/SciProjectSuperProjectStep.java | 21 +++ .../arsdigita/cms/contenttypes/SciMember.xsl | 20 ++ 94 files changed, 2910 insertions(+), 107 deletions(-) create mode 100644 ccm-cms-relationattributeimporter/application.xml create mode 100644 ccm-cms-relationattributeimporter/src/ccm-cms-relationattributeimporter.config create mode 100644 ccm-cms-relationattributeimporter/src/ccm-cms-relationattributeimporter.load create mode 100644 ccm-cms-relationattributeimporter/src/com/arsdigita/cms/relationattributeimporter/Initializer.java create mode 100644 ccm-cms-relationattributeimporter/src/com/arsdigita/cms/relationattributeimporter/Loader.java create mode 100644 ccm-cms-relationattributeimporter/src/com/arsdigita/cms/relationattributeimporter/RelAttrBean.java create mode 100644 ccm-cms-relationattributeimporter/src/com/arsdigita/cms/relationattributeimporter/RelationAttributeImporter.java create mode 100644 ccm-cms-relationattributeimporter/src/com/arsdigita/cms/relationattributeimporter/RelationAttributeParser.java create mode 100644 ccm-sci-types-organization/pdl/com/arsdigita/content-types/SciMember.pdl create mode 100644 ccm-sci-types-organization/src/WEB-INF/content-types/com/arsdigita/cms/contenttypes/SciMember.xml create mode 100644 ccm-sci-types-organization/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/SciMember.xml create mode 100644 ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciMember.java create mode 100644 ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciMemberInitializer.java create mode 100644 ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciMemberLoader.java create mode 100644 ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/doc-files/ccm-sci-types-organization_entities.png create mode 100644 ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentMemberAddForm.java create mode 100644 ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentMemberStep.java create mode 100644 ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciMemberPropertiesStep.java create mode 100644 ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciMemberPropertyForm.java create mode 100644 ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationMemberAddForm.java create mode 100644 ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationMemberStep.java create mode 100644 ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationResources.properties create mode 100644 ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationResources_de.properties create mode 100644 ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectMemberAddForm.java create mode 100644 ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectMemberStep.java create mode 100644 ccm-sci-types-organization/web/static/content-types/com/arsdigita/cms/contenttypes/SciMember.xsl diff --git a/ccm-cms-relationattributeimporter/application.xml b/ccm-cms-relationattributeimporter/application.xml new file mode 100644 index 000000000..cdfdf4b58 --- /dev/null +++ b/ccm-cms-relationattributeimporter/application.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + Tool to import RelationAttributes. + + diff --git a/ccm-cms-relationattributeimporter/src/ccm-cms-relationattributeimporter.config b/ccm-cms-relationattributeimporter/src/ccm-cms-relationattributeimporter.config new file mode 100644 index 000000000..adfdba100 --- /dev/null +++ b/ccm-cms-relationattributeimporter/src/ccm-cms-relationattributeimporter.config @@ -0,0 +1,4 @@ + + + + diff --git a/ccm-cms-relationattributeimporter/src/ccm-cms-relationattributeimporter.load b/ccm-cms-relationattributeimporter/src/ccm-cms-relationattributeimporter.load new file mode 100644 index 000000000..3e6da3ee1 --- /dev/null +++ b/ccm-cms-relationattributeimporter/src/ccm-cms-relationattributeimporter.load @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/ccm-cms-relationattributeimporter/src/com/arsdigita/cms/relationattributeimporter/Initializer.java b/ccm-cms-relationattributeimporter/src/com/arsdigita/cms/relationattributeimporter/Initializer.java new file mode 100644 index 000000000..047290443 --- /dev/null +++ b/ccm-cms-relationattributeimporter/src/com/arsdigita/cms/relationattributeimporter/Initializer.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.cms.relationattributeimporter; + +import com.arsdigita.runtime.CompoundInitializer; + +/** + * Initializer for the ccm-cms-relationattributeimporter application. + * + * @author Jens Pelzetter + */ +public class Initializer extends CompoundInitializer { + + public Initializer() { + //Nothing yet. + } + +} diff --git a/ccm-cms-relationattributeimporter/src/com/arsdigita/cms/relationattributeimporter/Loader.java b/ccm-cms-relationattributeimporter/src/com/arsdigita/cms/relationattributeimporter/Loader.java new file mode 100644 index 000000000..2481002f0 --- /dev/null +++ b/ccm-cms-relationattributeimporter/src/com/arsdigita/cms/relationattributeimporter/Loader.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.cms.relationattributeimporter; + +import com.arsdigita.loader.PackageLoader; +import com.arsdigita.runtime.ScriptContext; + +/** + * Loader for the ccm-cms-relationattribute application. + * + * @author Jens Pelzetter + */ +public class Loader extends PackageLoader { + + public void run(final ScriptContext ctx) { + //Nothing yet. + } + +} diff --git a/ccm-cms-relationattributeimporter/src/com/arsdigita/cms/relationattributeimporter/RelAttrBean.java b/ccm-cms-relationattributeimporter/src/com/arsdigita/cms/relationattributeimporter/RelAttrBean.java new file mode 100644 index 000000000..41ccb5cf8 --- /dev/null +++ b/ccm-cms-relationattributeimporter/src/com/arsdigita/cms/relationattributeimporter/RelAttrBean.java @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.cms.relationattributeimporter; + +/** + * A bean used to keep the information of {@link RelationAttribute} while + * parsing the XML file. + * + * @author Jens Pelzetter + */ +public class RelAttrBean { + + private String attribute; + private String key; + private String lang; + private String name; + private String description; + + public RelAttrBean() { + } + + public String getAttribute() { + return attribute; + } + + public void setAttribute(String attribute) { + this.attribute = attribute; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getLang() { + return lang; + } + + public void setLang(String lang) { + this.lang = lang; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + +} diff --git a/ccm-cms-relationattributeimporter/src/com/arsdigita/cms/relationattributeimporter/RelationAttributeImporter.java b/ccm-cms-relationattributeimporter/src/com/arsdigita/cms/relationattributeimporter/RelationAttributeImporter.java new file mode 100644 index 000000000..6f0e3e1e5 --- /dev/null +++ b/ccm-cms-relationattributeimporter/src/com/arsdigita/cms/relationattributeimporter/RelationAttributeImporter.java @@ -0,0 +1,175 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.cms.relationattributeimporter; + +import com.arsdigita.cms.RelationAttribute; +import com.arsdigita.cms.RelationAttributeInterface; +import com.arsdigita.london.util.Transaction; +import com.arsdigita.packaging.Program; +import java.io.File; +import java.io.IOException; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; +import org.apache.commons.cli.CommandLine; +import org.xml.sax.SAXException; + +/** + *

+ * A simple import tool for {@link RelationAttribute}s. This tool imports the + * relation attributes from a simple XML file, which looks like this: + *

+ *
+ * <?xml version="1.0"?>
+ * <relationAttributes>
+ *     <relationAttribute>
+ *         <attribute>...</attribute>
+ *         <key>...</key>
+ *         <lang>...</lang>
+ *         <name>...</name>
+ *         <description>...</description>
+ *     </relationAttribute>
+ * </relationAttributes>
+ * 
+ *

+ * The tool can be invoked using the ccm-run command. One parameter, the file + * to import is needed. With tools-ng and ECDC, the line for calling the + * RelationAttributeImporter would like the following: + *

+ *
+ * ant -Dccm.classname="com.arsdigita.cms.relationattributeimporter.RelationAttributeImporter" -Dccm.parameters="/path/to/relation/attribute/file.xml" ccm-ru
+ * 
+ *

+ * You have to add the RelationAttributeImporter to add to your + * environment, of course. + *

+ * + * @author Jens Pelzetter + * @see RelationAttribute + * @see RelationAttributeInterface + */ +public class RelationAttributeImporter extends Program { + + public RelationAttributeImporter() { + super("Relation Attribute Importer", "0.1.0", "FILE"); + } + + public RelationAttributeImporter(boolean startup) { + super("Relation Attribute Importer", "0.1.0", "FILE", startup); + } + + @Override + protected void doRun(CommandLine cmdLine) { + + final String[] args; + File relAttrFile; + SAXParserFactory saxFactory; + SAXParser saxParser = null; + RelationAttributeParser parser; + args = cmdLine.getArgs(); + if (args.length != 1) { + help(System.err); + System.exit(-1); + } + + System.out.printf("Using file %s.", args[0]); + relAttrFile = new File(args[0]); + if (!relAttrFile.exists()) { + System.err.printf("ERROR: File %s does not exist.", args[0]); + System.exit(-1); + } + if (!relAttrFile.isFile()) { + System.err.printf("ERROR: Path %s does not point to a file.", + args[0]); + System.exit(-1); + } + saxFactory = SAXParserFactory.newInstance(); + try { + saxParser = saxFactory.newSAXParser(); + } catch (ParserConfigurationException ex) { + System.err.printf("Error creating SAXParser: %s", ex.getMessage()); + ex.printStackTrace(); + System.exit(-1); + } catch (SAXException ex) { + System.err.printf("Error creating SAXParser: %s", ex.getMessage()); + ex.printStackTrace(); + System.exit(-1); + } + parser = new RelationAttributeParser(); + try { + saxParser.parse(relAttrFile, parser); + } catch (SAXException ex) { + System.err.printf("Error parsing file %s: %s", + args[0], + ex.getMessage()); + ex.printStackTrace(); + System.exit(-1); + } catch (IOException ex) { + System.err.printf("Error parsing file %s: %s", + args[0], ex.getMessage()); + ex.printStackTrace(); + System.exit(-1); + } + + System.out.println( + "Parsed XML file successfully. Creating ACSObjects..."); + for (int i = 0; i < parser.getRelAttrs().size(); i++) { + System.out.printf("%d of %d...", (i + 1), parser.getRelAttrs().size()); + createACSObject(parser.getRelAttrs().get(i), i); + } + } + + /** + * The method creates the {@link RelationAttribute} object from the data + * retrieved from the XML file and stores the object in the database. + * + * @param relAttr + * @param index + */ + private void createACSObject(final RelAttrBean relAttr, int index) { + + /*System.out.printf("\tattribute = %s\n", relAttr.getAttribute()); + System.out.printf("\tkey = %s\n", relAttr.getKey()); + System.out.printf("\tlang = %s\n", relAttr.getLang()); + System.out.printf("\tname = %s\n", relAttr.getName()); + System.out.printf("\tdescription = %s\n", relAttr.getDescription());*/ + + Transaction transaction = new Transaction() { + @Override + public void doRun() { + RelationAttribute attr; + attr = new RelationAttribute(); + attr.setAttribute(relAttr.getAttribute()); + attr.setKey(relAttr.getKey()); + attr.setLanguage(relAttr.getLang()); + attr.setName(relAttr.getName()); + attr.setDescription(relAttr.getDescription()); + System.out.print("Saving..."); + attr.save(); + } + }; + transaction.run(); + System.out.println("Done\n"); + } + + public final static void main(String[] args) { + new RelationAttributeImporter().run(args); + } +} diff --git a/ccm-cms-relationattributeimporter/src/com/arsdigita/cms/relationattributeimporter/RelationAttributeParser.java b/ccm-cms-relationattributeimporter/src/com/arsdigita/cms/relationattributeimporter/RelationAttributeParser.java new file mode 100644 index 000000000..f278a86db --- /dev/null +++ b/ccm-cms-relationattributeimporter/src/com/arsdigita/cms/relationattributeimporter/RelationAttributeParser.java @@ -0,0 +1,176 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.cms.relationattributeimporter; + +import java.util.ArrayList; +import java.util.List; +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; +import org.xml.sax.helpers.DefaultHandler; + +/** + * Parser for the XML file. This parser uses the SAX-Parser from the Java + * Standard API. + * + * @author Jens Pelzetter + */ +public class RelationAttributeParser extends DefaultHandler { + + private RelAttrBean currentRelAttr; + /** + * A buffer + */ + private StringBuilder buffer; + private boolean relAttrOpen; + private boolean attrOpen; + private boolean keyOpen; + private boolean langOpen; + private boolean nameOpen; + private boolean descOpen; + private List relAttrs; + + public RelationAttributeParser() { + relAttrs = new ArrayList(); + relAttrOpen = false; + attrOpen = false; + keyOpen = false; + langOpen = false; + nameOpen = false; + descOpen = false; + } + + @Override + public void startDocument() throws SAXException { + System.out.println("Relation attribute document begin..."); + } + + @Override + public void endDocument() throws SAXException { + System.out.println("Relation attribute document end."); + } + + @Override + public void startElement(String uri, + String localName, + String qName, + Attributes attributes) throws SAXException { + System.out.printf("DEBUG: uri = %s\n", uri); + System.out.printf("DEBUG: localName = %s\n", localName); + System.out.printf("DEBUG: qName = %s\n", qName); + buffer = new StringBuilder(); + if ("relationAttributes".equals(qName)) { + //Nothing to do + } else if ("relationAttribute".equals(qName)) { + relAttrOpen = true; + currentRelAttr = new RelAttrBean(); + } else if ("attribute".equals(qName)) { + attrOpen = true; + } else if ("key".equals(qName)) { + keyOpen = true; + } else if ("lang".equals(qName)) { + langOpen = true; + } else if ("name".equals(qName)) { + nameOpen = true; + } else if ("description".equals(qName)) { + descOpen = true; + } else { + System.err.printf( + "Warning: Encountered unexpected element %s. Ignoring.\n", + qName); + } + } + + @Override + public void endElement(String uri, + String localName, + String qName) throws SAXException { + if ("relationAttributes".equals(qName)) { + //Nothing to do + } else if ("relationAttribute".equals(qName)) { + relAttrs.add(currentRelAttr); + currentRelAttr = null; + relAttrOpen = false; + } else if ("attribute".equals(qName)) { + System.out.printf("buffer = %s\n", buffer.toString()); + currentRelAttr.setAttribute(buffer.toString()); + attrOpen = false; + } else if ("key".equals(qName)) { + currentRelAttr.setKey(buffer.toString()); + keyOpen = false; + } else if ("lang".equals(qName)) { + currentRelAttr.setLang(buffer.toString()); + langOpen = false; + } else if ("name".equals(qName)) { + currentRelAttr.setName(buffer.toString()); + nameOpen = false; + } else if ("description".equals(qName)) { + currentRelAttr.setDescription(buffer.toString()); + descOpen = false; + } else { + System.err.printf( + "Warning: Encountered unexpected element %s. Ignoring.\n", + qName); + } + } + + @Override + public void characters(char[] ch, + int start, + int length) throws SAXException { + System.out.printf("Parsing characters %d to %d...\n", start, (start + length)); + for (int i = start; i < (start + length); i++) { + char character; + character = ch[i]; + buffer.append(character); + } + } + + @Override + public void warning(SAXParseException ex) { + System.err.println(saxMsg(ex)); + } + + @Override + public void error(SAXParseException ex) { + System.err.println(saxMsg(ex)); + } + + @Override + public void fatalError(SAXParseException ex) { + System.err.println(saxMsg(ex)); + } + + protected List getRelAttrs() { + return relAttrs; + } + + private String saxMsg(SAXParseException ex) { + String msg; + + msg = String.format( + "SAX parser reported an error at line %d, column %d: %s", + ex.getLineNumber(), + ex.getColumnNumber(), + ex.getMessage()); + + return msg; + } +} diff --git a/ccm-cms/pdl/com/arsdigita/content-types/GenericContact.pdl b/ccm-cms/pdl/com/arsdigita/content-types/GenericContact.pdl index a044c753f..3c5e36fda 100644 --- a/ccm-cms/pdl/com/arsdigita/content-types/GenericContact.pdl +++ b/ccm-cms/pdl/com/arsdigita/content-types/GenericContact.pdl @@ -36,9 +36,9 @@ object type GenericContact extends ContentPage { object type GenericContactEntry extends ContentItem { - String [1..1] key = cms_contactEntries.key VARCHAR(100); - String [0..1] description = cms_contactEntries.description VARCHAR(100); - String [1..1] value = cms_contactEntries.value VARCHAR(100); + String[1..1] key = cms_contactEntries.key VARCHAR(100); + String[0..1] description = cms_contactEntries.description VARCHAR(100); + String[1..1] value = cms_contactEntries.value VARCHAR(100); reference key ( cms_contactEntries.contactentry_id ); diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitPersonAddForm.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitPersonAddForm.java index 7b95d2a2b..f6a62136e 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitPersonAddForm.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitPersonAddForm.java @@ -23,7 +23,6 @@ import com.arsdigita.bebop.FormData; import com.arsdigita.bebop.FormProcessException; import com.arsdigita.bebop.Label; import com.arsdigita.bebop.PageState; -import com.arsdigita.bebop.SaveCancelSection; import com.arsdigita.bebop.event.FormSectionEvent; import com.arsdigita.bebop.form.TextField; import com.arsdigita.bebop.parameters.NotNullValidationListener; @@ -37,7 +36,6 @@ import com.arsdigita.cms.contenttypes.GenericPerson; import com.arsdigita.cms.contenttypes.util.ContenttypesGlobalizationUtil; import com.arsdigita.cms.ui.ItemSearchWidget; import com.arsdigita.cms.ui.authoring.BasicItemForm; -import org.apache.log4j.Logger; /** * Form for adding related persons the an organization. @@ -46,24 +44,20 @@ import org.apache.log4j.Logger; */ public class GenericOrganizationalUnitPersonAddForm extends BasicItemForm { - private static final Logger s_log = Logger.getLogger( - GenericOrganizationalUnitPersonAddForm.class); private GenericOrganizationalUnitPersonPropertiesStep m_step; private ItemSearchWidget m_itemSearch; - private SaveCancelSection m_saveCancelSection; - private final String ITEM_SEARCH = "orgaunitPerson"; - private ItemSelectionModel m_itemModel; + private final String ITEM_SEARCH = "orgaunitPerson"; public GenericOrganizationalUnitPersonAddForm(ItemSelectionModel itemModel) { - super("PersonAddForm", itemModel); + super("PersonAddForm", itemModel); } - + @Override protected void addWidgets() { add(new Label((String) ContenttypesGlobalizationUtil.globalize( "cms.contenttypes.ui.genericorgaunit.select_person").localize())); this.m_itemSearch = new ItemSearchWidget(ITEM_SEARCH, ContentType. - findByAssociatedObjectType(GenericPerson.BASE_DATA_OBJECT_TYPE)); + findByAssociatedObjectType(getPersonType())); add(this.m_itemSearch); add(new Label(ContenttypesGlobalizationUtil.globalize( @@ -74,9 +68,9 @@ public class GenericOrganizationalUnitPersonAddForm extends BasicItemForm { /*SingleSelect roleSelect = new SingleSelect(roleParam); roleSelect.addValidationListener(new NotNullValidationListener()); roleSelect.addOption( - new Option("", - new Label((String) ContenttypesGlobalizationUtil. - globalize("cms.ui.select_one").localize()))); + new Option("", + new Label((String) ContenttypesGlobalizationUtil. + globalize("cms.ui.select_one").localize()))); add(roleSelect);*/ TextField role = new TextField(roleParam); @@ -86,7 +80,6 @@ public class GenericOrganizationalUnitPersonAddForm extends BasicItemForm { @Override public void init(FormSectionEvent fse) { - FormData data = fse.getFormData(); PageState state = fse.getPageState(); setVisible(state, true); @@ -107,4 +100,8 @@ public class GenericOrganizationalUnitPersonAddForm extends BasicItemForm { init(fse); } + + protected String getPersonType() { + return GenericPerson.class.getName(); + } } diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitPersonPropertiesStep.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitPersonPropertiesStep.java index db53b9141..fb72f6e0d 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitPersonPropertiesStep.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericOrganizationalUnitPersonPropertiesStep.java @@ -46,17 +46,18 @@ public class GenericOrganizationalUnitPersonPropertiesStep ItemSelectionModel itemModel, AuthoringKitWizard parent, String prefix) { - super(itemModel, parent, prefix); - - BasicItemForm addPersonSheet = new GenericOrganizationalUnitPersonAddForm(itemModel); + super(itemModel, parent, prefix); + + BasicItemForm addPersonSheet = + new GenericOrganizationalUnitPersonAddForm(itemModel); add(ADD_PERSON_SHEET_NAME, - (String) ContenttypesGlobalizationUtil.globalize( + (String) ContenttypesGlobalizationUtil.globalize( "cms.contenttypes.ui.genericorgaunit.add_person").localize(), - new WorkflowLockedComponentAccess(addPersonSheet, itemModel), - addPersonSheet.getSaveCancelSection().getCancelButton()); + new WorkflowLockedComponentAccess(addPersonSheet, itemModel), + addPersonSheet.getSaveCancelSection().getCancelButton()); - GenericOrganizationalUnitPersonsTable personsTable = new GenericOrganizationalUnitPersonsTable(itemModel); + GenericOrganizationalUnitPersonsTable personsTable = new GenericOrganizationalUnitPersonsTable( + itemModel); setDisplayComponent(personsTable); } - } diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericPersonPropertiesStep.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericPersonPropertiesStep.java index c01ed1192..5d3f29d5a 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericPersonPropertiesStep.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/ui/GenericPersonPropertiesStep.java @@ -40,7 +40,8 @@ public class GenericPersonPropertiesStep extends SimpleEditStep { public static final String EDIT_SHEET_NAME = "edit"; - public GenericPersonPropertiesStep(ItemSelectionModel itemModel, AuthoringKitWizard parent) { + public GenericPersonPropertiesStep(ItemSelectionModel itemModel, + AuthoringKitWizard parent) { super(itemModel, parent); /* Use a Segmented Panel for the multiple parts of data */ @@ -49,17 +50,26 @@ public class GenericPersonPropertiesStep extends SimpleEditStep { setDefaultEditKey(EDIT_SHEET_NAME); /* A new SimpleEditStep */ - SimpleEditStep basicProperties = new SimpleEditStep(itemModel, parent, EDIT_SHEET_NAME); + SimpleEditStep basicProperties = new SimpleEditStep(itemModel, parent, + EDIT_SHEET_NAME); /* Create the edit component for this SimpleEditStep and the corresponding link */ - BasicPageForm editBasicSheet = new GenericPersonPropertyForm(itemModel, this); - basicProperties.add(EDIT_SHEET_NAME, (String) ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.edit_basic_properties").localize(), new WorkflowLockedComponentAccess(editBasicSheet, itemModel), editBasicSheet.getSaveCancelSection().getCancelButton()); + BasicPageForm editBasicSheet = new GenericPersonPropertyForm(itemModel, + this); + basicProperties.add(EDIT_SHEET_NAME, (String) ContenttypesGlobalizationUtil. + globalize("cms.contenttypes.ui.person.edit_basic_properties"). + localize(), new WorkflowLockedComponentAccess(editBasicSheet, + itemModel), editBasicSheet. + getSaveCancelSection().getCancelButton()); /* Set the displayComponent for this step */ - basicProperties.setDisplayComponent(getGenericPersonPropertySheet(itemModel)); + basicProperties.setDisplayComponent(getGenericPersonPropertySheet( + itemModel)); /* Add the SimpleEditStep to the segmented panel */ - segmentedPanel.addSegment(new Label((String) ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.basic_properties").localize()), basicProperties); + segmentedPanel.addSegment(new Label((String) ContenttypesGlobalizationUtil. + globalize("cms.contenttypes.ui.person.basic_properties"). + localize()), basicProperties); // GenericPersonContactPropertiesStep contactProperties = new GenericPersonContactPropertiesStep(itemModel, parent); @@ -70,66 +80,87 @@ public class GenericPersonPropertiesStep extends SimpleEditStep { } - public static Component getGenericPersonPropertySheet(ItemSelectionModel itemModel) { - DomainObjectPropertySheet sheet = new DomainObjectPropertySheet(itemModel); + public static Component getGenericPersonPropertySheet( + ItemSelectionModel itemModel) { + DomainObjectPropertySheet sheet = new DomainObjectPropertySheet( + itemModel); - sheet.add((String) ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.surname").localize(), GenericPerson.SURNAME); - sheet.add((String) ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.givenname").localize(), GenericPerson.GIVENNAME); - sheet.add((String) ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.titlepre").localize(), GenericPerson.TITLEPRE); - sheet.add((String) ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.titlepost").localize(), GenericPerson.TITLEPOST); - sheet.add((String) ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.birthdate").localize(), - GenericPerson.BIRTHDATE, - new DomainObjectPropertySheet.AttributeFormatter() { + sheet.add((String) ContenttypesGlobalizationUtil.globalize( + "cms.contenttypes.ui.person.surname").localize(), + GenericPerson.SURNAME); + sheet.add((String) ContenttypesGlobalizationUtil.globalize( + "cms.contenttypes.ui.person.givenname").localize(), + GenericPerson.GIVENNAME); + sheet.add((String) ContenttypesGlobalizationUtil.globalize( + "cms.contenttypes.ui.person.titlepre").localize(), + GenericPerson.TITLEPRE); + sheet.add((String) ContenttypesGlobalizationUtil.globalize( + "cms.contenttypes.ui.person.titlepost").localize(), + GenericPerson.TITLEPOST); + sheet.add((String) ContenttypesGlobalizationUtil.globalize( + "cms.contenttypes.ui.person.birthdate").localize(), + GenericPerson.BIRTHDATE, + new DomainObjectPropertySheet.AttributeFormatter() { - public String format(DomainObject item, - String attribute, - PageState state) { - //ContentPage page = (ContentPage) item; - GenericPerson person = (GenericPerson) item; - if (person.getBirthdate() != null) { - return DateFormat.getDateInstance(DateFormat.LONG).format(person.getBirthdate()); - } else { - return (String) ContenttypesGlobalizationUtil.globalize("cms.ui.unknown").localize(); - } - } - }); + public String format(DomainObject item, + String attribute, + PageState state) { + //ContentPage page = (ContentPage) item; + GenericPerson person = (GenericPerson) item; + if (person.getBirthdate() != null) { + return DateFormat.getDateInstance(DateFormat.LONG).format(person. + getBirthdate()); + } else { + return (String) ContenttypesGlobalizationUtil.globalize( + "cms.ui.unknown").localize(); + } + } + }); - sheet.add((String) ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.gender").localize(), - GenericPerson.GENDER, - new DomainObjectPropertySheet.AttributeFormatter() { + sheet.add((String) ContenttypesGlobalizationUtil.globalize( + "cms.contenttypes.ui.person.gender").localize(), + GenericPerson.GENDER, + new DomainObjectPropertySheet.AttributeFormatter() { - public String format(DomainObject item, - String attribute, - PageState state) { - //ContentPage page = (ContentPage) item; - GenericPerson person = (GenericPerson) item; - if (person.getGender() != null) { - return (String) ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.gender." + person.getGender().toLowerCase()).localize(); - } else { - return (String) ContenttypesGlobalizationUtil.globalize("cms.ui.unknown").localize(); - } - } - }); + public String format(DomainObject item, + String attribute, + PageState state) { + //ContentPage page = (ContentPage) item; + GenericPerson person = (GenericPerson) item; + if (person.getGender() != null) { + return (String) ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.gender." + person. + getGender().toLowerCase()).localize(); + } else { + return (String) ContenttypesGlobalizationUtil.globalize( + "cms.ui.unknown").localize(); + } + } + }); if (!ContentSection.getConfig().getHideLaunchDate()) { - sheet.add((String) ContenttypesGlobalizationUtil.globalize("cms.ui.authoring.page_launch_date").localize(), - ContentPage.LAUNCH_DATE, - new DomainObjectPropertySheet.AttributeFormatter() { + sheet.add((String) ContenttypesGlobalizationUtil.globalize( + "cms.ui.authoring.page_launch_date").localize(), + ContentPage.LAUNCH_DATE, + new DomainObjectPropertySheet.AttributeFormatter() { - public String format(DomainObject item, - String attribute, - PageState state) { - ContentPage page = (ContentPage) item; - if (page.getLaunchDate() != null) { - return DateFormat.getDateInstance(DateFormat.LONG).format(page.getLaunchDate()); - } else { - return (String) ContenttypesGlobalizationUtil.globalize("cms.ui.unknown").localize(); - } - } - }); + public String format(DomainObject item, + String attribute, + PageState state) { + ContentPage page = (ContentPage) item; + if (page.getLaunchDate() != null) { + return DateFormat.getDateInstance(DateFormat.LONG). + format(page.getLaunchDate()); + } else { + return (String) ContenttypesGlobalizationUtil.globalize( + "cms.ui.unknown").localize(); + } + } + }); } - sheet.add((String) ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.description").localize(), GenericPerson.DESCRIPTION); + sheet.add((String) ContenttypesGlobalizationUtil.globalize( + "cms.contenttypes.ui.person.description").localize(), + GenericPerson.DESCRIPTION); return sheet; } } diff --git a/ccm-sci-types-organization/pdl/com/arsdigita/content-types/SciMember.pdl b/ccm-sci-types-organization/pdl/com/arsdigita/content-types/SciMember.pdl new file mode 100644 index 000000000..271b78fec --- /dev/null +++ b/ccm-sci-types-organization/pdl/com/arsdigita/content-types/SciMember.pdl @@ -0,0 +1,12 @@ +model com.arsdigita.cms.contenttypes; + +import com.arsdigita.kernel.ACSObject; +import com.arsdigita.cms.*; + +object type SciMember extends GenericPerson { + + Boolean[0..1] formerMember = ct_sciorga_members.formerMember BIT; + Boolean[0..1] associatedMember = ct_sciorga_members.associatedMember BIT; + + reference key ( ct_sciorga_members.member_id ); +} \ No newline at end of file diff --git a/ccm-sci-types-organization/src/WEB-INF/content-types/com/arsdigita/cms/contenttypes/SciMember.xml b/ccm-sci-types-organization/src/WEB-INF/content-types/com/arsdigita/cms/contenttypes/SciMember.xml new file mode 100644 index 000000000..ba484e2fd --- /dev/null +++ b/ccm-sci-types-organization/src/WEB-INF/content-types/com/arsdigita/cms/contenttypes/SciMember.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ccm-sci-types-organization/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/SciMember.xml b/ccm-sci-types-organization/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/SciMember.xml new file mode 100644 index 000000000..73135fef9 --- /dev/null +++ b/ccm-sci-types-organization/src/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/SciMember.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/ccm-sci-types-organization/src/ccm-sci-types-organization.load b/ccm-sci-types-organization/src/ccm-sci-types-organization.load index 1d1819ca5..6e9c6c1cf 100644 --- a/ccm-sci-types-organization/src/ccm-sci-types-organization.load +++ b/ccm-sci-types-organization/src/ccm-sci-types-organization.load @@ -6,17 +6,20 @@ -
-
-
+
+
+
+
+ + \ No newline at end of file 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 e5ed0b84f..bfdede493 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 @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes; import com.arsdigita.domain.DataObjectNotFoundException; @@ -8,13 +27,47 @@ import com.arsdigita.util.Assert; import java.math.BigDecimal; /** + *

+ * A class for representing departments of an organization. Adds two + * associations to {@link GenericOrganizationalUnit}: + *

+ *
    + *
  • Subdepartments
  • + *
  • Projects
  • + *
+ *

+ * The subdepartments association links one instance of this class + * with another. + * The projects association links an department with projects. + *

+ *

+ * Also, there are two additional fields: + *

+ *
    + *
  • shortDescription
  • + *
  • description
  • + *
+ *

+ * shortDescription takes a short text (maximum length 500 characters) + * about the department. For more detailed description, the description + * field can be used. + *

+ *

+ * There is an + * UML digram + * with an overview of the content types and their associations. Please not that + * the diagram show a design sketch and not the actually implemented classes. + *

* * @author Jens Pelzetter + * @see GenericOrganizationalUnit + * @see SciOrganization + * @see SciProject */ public class SciDepartment extends GenericOrganizationalUnit { public static final String DEPARTMENT_SHORT_DESCRIPTION = - "departmentShortDescription"; + "departmentShortDescription"; public static final String DEPARTMENT_DESCRIPTION = "departmentDescription"; public static final String ORGANIZATION = "organization"; public static final String SUPER_DEPARTMENT = "superDepartment"; @@ -72,6 +125,14 @@ public class SciDepartment extends GenericOrganizationalUnit { } public SciDepartment getSuperDepartment() { + /*This is some sort of hack because if we define the + * relation in PDL with a multiplicity of 0..1 for the super department + * part, CCM crashes when trying to publish the item. So we have to + * define both parts of the association with 0..n in PDL. But we don't + * want more than one superior department per department. So we are + * retrieving the data collection and get the first element of it, and + * return this. + */ DataCollection collection; collection = (DataCollection) get(SUPER_DEPARTMENT); @@ -89,6 +150,11 @@ public class SciDepartment extends GenericOrganizationalUnit { } public void setSuperDepartment(SciDepartment department) { + /* Similar hack as in getSuperDepartment() above. Here, we are + * retrieving the data collection, removing the first (and only item) + * and put the new one in it. + * + */ SciDepartment oldSuperDepartment; oldSuperDepartment = getSuperDepartment(); diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartmentInitializer.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartmentInitializer.java index b2fc63890..3d4964595 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartmentInitializer.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartmentInitializer.java @@ -1,8 +1,28 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes; import org.apache.log4j.Logger; /** + * Initializer for {@link SciDepartment}. * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartmentLoader.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartmentLoader.java index 2d27f626a..373f342b8 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartmentLoader.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartmentLoader.java @@ -1,6 +1,26 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes; /** + * Loader for {@link SciDepartment}. * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartmentProjectsCollection.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartmentProjectsCollection.java index 34917eed3..7008b01a9 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartmentProjectsCollection.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartmentProjectsCollection.java @@ -25,8 +25,11 @@ import com.arsdigita.persistence.DataObject; import org.apache.log4j.Logger; /** + * Special domain collection for the projects of an department. * * @author Jens Pelzetter + * @see SciDepartment + * @see SciProject */ public class SciDepartmentProjectsCollection extends DomainCollection { diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartmentSubDepartmentsCollection.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartmentSubDepartmentsCollection.java index ca922d941..816a7f883 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartmentSubDepartmentsCollection.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciDepartmentSubDepartmentsCollection.java @@ -25,8 +25,10 @@ import com.arsdigita.persistence.DataObject; import org.apache.log4j.Logger; /** + * Special domain collection for the subdepartments of a department. * * @author Jens Pelzetter + * @see SciDepartment */ public class SciDepartmentSubDepartmentsCollection extends DomainCollection { diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciMember.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciMember.java new file mode 100644 index 000000000..7f811fd4c --- /dev/null +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciMember.java @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.cms.contenttypes; + +import com.arsdigita.domain.DataObjectNotFoundException; +import com.arsdigita.persistence.DataObject; +import com.arsdigita.persistence.OID; +import java.math.BigDecimal; + +/** + *

+ * Specialized variant of {@link GenericPerson} for members of scientific + * organizations. Adds two fields to the fields of GenericPerson: + *

+ *
+ *
associatedMember
+ *
Is the member an associated member?
+ *
formerMember
+ *
Is the member a former member?
+ * + * + * @author Jens Pelzetter + */ +public class SciMember extends GenericPerson { + + public static final String ASSOCIATED_MEBER = "associatedMember"; + public static final String FORMER_MEMBER = "formerMember"; + public static final String BASE_DATA_OBJECT_TYPE = + "com.arsdigita.cms.contenttypes.SciMember"; + private static final SciOrganizationConfig s_config = + new SciOrganizationConfig(); + + static { + s_config.load(); + } + + public SciMember() { + this(BASE_DATA_OBJECT_TYPE); + } + + public SciMember(BigDecimal id) throws DataObjectNotFoundException { + this(new OID(BASE_DATA_OBJECT_TYPE, id)); + } + + public SciMember(OID oid) throws DataObjectNotFoundException { + super(oid); + } + + public SciMember(DataObject dobj) { + super(dobj); + } + + public SciMember(String type) { + super(type); + } + + public static SciOrganizationConfig getConfig() { + return s_config; + } + + public Boolean isFormerMember() { + return (Boolean )get(FORMER_MEMBER); + } + + public void setFormerMember(Boolean formerMember) { + set(FORMER_MEMBER, formerMember); + } + + public Boolean isAssociatedMember() { + return (Boolean) get(ASSOCIATED_MEBER); + } + + public void setAssoicatedMember(Boolean associatedMember) { + set(ASSOCIATED_MEBER, associatedMember); + } +} diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciMemberInitializer.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciMemberInitializer.java new file mode 100644 index 000000000..ad25ccabd --- /dev/null +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciMemberInitializer.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.cms.contenttypes; + +/** + * Initializer for {@link SciMember} + * + * @author Jens Pelzetter + */ +public class SciMemberInitializer extends ContentTypeInitializer { + + public SciMemberInitializer() { + super("empty.pdl.mf", SciMember.BASE_DATA_OBJECT_TYPE); + } + + @Override + public String[] getStylesheets() { + return new String[]{ + "/static/content-types/com/arsdigita/cms/contenttypes/SciMember.xsl" + }; + } + + @Override + public String getTraversalXML() { + return "/WEB-INF/traversal-adapters/com/arsdigita/cms/contenttypes/SciMember.xml"; + + } +} diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciMemberLoader.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciMemberLoader.java new file mode 100644 index 000000000..764ec32d9 --- /dev/null +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciMemberLoader.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.cms.contenttypes; + +/** + * Loader for {@link SciMember} + * + * @author Jens Pelzetter + */ +public class SciMemberLoader extends AbstractContentTypeLoader { + + private static final String[] TYPES = { + "/WEB-INF/content-types/com/arsdigita/cms/contenttypes/SciMember.xml"}; + + @Override + public String[] getTypes() { + return TYPES; + } +} diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganization.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganization.java index fbe26a31a..f363c4b4b 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganization.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganization.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes; import com.arsdigita.domain.DataObjectNotFoundException; @@ -8,8 +27,36 @@ import com.arsdigita.util.Assert; import java.math.BigDecimal; /** + *

+ * A class for representing departments of an organization. Adds two + * associations to {@link GenericOrganizationalUnit}: + *

+ *
    + *
  • departments
  • + *
  • projects
  • + *
+ *

+ * The departments association is used to link an organization with + * its departments. The project association can be used to link an + * organization with projects. + *

+ *

+ * Also, two fields are added. The shortDescription takes a string + * of 500 characters for a short description of the organization. An detailed + * description of the organization can be put into the description + * field. + *

+ *

+ * There is an + * UML digram + * with an overview of the content types and their associations. Please not that + * the diagram show a design sketch and not the actually implemented classes. + *

* * @author Jens Pelzetter + * @see GenericOrganizationalUnit + * @see SciDepartment + * @see SciProject^ */ public class SciOrganization extends GenericOrganizationalUnit { @@ -50,7 +97,7 @@ public class SciOrganization extends GenericOrganizationalUnit { super(type); } - public static final SciOrganizationConfig getConfig() { + public static SciOrganizationConfig getConfig() { return s_config; } diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganizationConfig.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganizationConfig.java index 330e25218..dff58d5d0 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganizationConfig.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganizationConfig.java @@ -5,6 +5,7 @@ import com.arsdigita.util.parameter.BooleanParameter; import com.arsdigita.util.parameter.Parameter; /** + * Configuration class for the complete ccm-sci-types-organization-module. * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganizationDepartmentsCollection.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganizationDepartmentsCollection.java index e8ad4d32d..fbac5a36f 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganizationDepartmentsCollection.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganizationDepartmentsCollection.java @@ -25,8 +25,11 @@ import com.arsdigita.persistence.DataObject; import org.apache.log4j.Logger; /** + * Special domain collection for the departments of an organization. * * @author Jens Pelzetter + * @see SciOrganization + * @see SciDepartment */ public class SciOrganizationDepartmentsCollection extends DomainCollection { diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganizationInitializer.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganizationInitializer.java index a3ee525f0..be48223c4 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganizationInitializer.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganizationInitializer.java @@ -1,8 +1,28 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes; import org.apache.log4j.Logger; /** + * Initalizer for {@link SciOrganization} * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganizationLoader.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganizationLoader.java index 50a82498c..cdacf6bc6 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganizationLoader.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganizationLoader.java @@ -1,6 +1,26 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes; /** + * Loader for {@link SciOrganization} * * @author Jens Pelzetter */ @@ -10,6 +30,7 @@ public class SciOrganizationLoader extends AbstractContentTypeLoader { "/WEB-INF/content-types/com/arsdigita/cms/contenttypes/SciOrganization.xml" }; + @Override public String[] getTypes() { return TYPES; } diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganizationProjectsCollection.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganizationProjectsCollection.java index fd61e154d..ea99039f6 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganizationProjectsCollection.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciOrganizationProjectsCollection.java @@ -25,8 +25,11 @@ import com.arsdigita.persistence.DataObject; import org.apache.log4j.Logger; /** + * Special domain collection for the projects of an organization. * * @author Jens Pelzetter + * @see SciOrganization + * @see SciProject */ public class SciOrganizationProjectsCollection extends DomainCollection { diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProject.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProject.java index ef770aa98..77c09a966 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProject.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProject.java @@ -28,8 +28,39 @@ import java.math.BigDecimal; import java.util.Date; /** + *

+ * The class represents a (scientific) project. It extends + * {@link GenericOrganizationalUnit} and adds a relation for subprojects and + * some fields for additional information: + *

+ *
+ *
projectBegin
+ *
The begin of the project
+ *
projectEnd
+ *
The end of the project
+ *
shortDescription
+ *
A short description (500 characters) of the project
+ *
description
+ *
A description of the project/
+ *
funding
+ *
A text about the funding of the project
+ *
+ *

+ * Also, the class has some methods the access the associations defined by + * {@link SciOrganization} and {@link SciDepartment} with + * SciProject. + *

+ *

+ * There is an + * UML digram + * with an overview of the content types and their associations. Please not that + * the diagram show a design sketch and not the actually implemented classes. + *

* * @author Jens Pelzetter + * @see GenericOrganizationalUnit + * @see SciOrganization + * @see SciDepartment */ public class SciProject extends GenericOrganizationalUnit { diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProjectDepartmentsCollection.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProjectDepartmentsCollection.java index 73c2728a5..d681845d4 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProjectDepartmentsCollection.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProjectDepartmentsCollection.java @@ -25,6 +25,7 @@ import com.arsdigita.persistence.DataObject; import org.apache.log4j.Logger; /** + * Special domain collection for the departments involved in a project. * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProjectInitializer.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProjectInitializer.java index ae6ce707a..55bd79f81 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProjectInitializer.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProjectInitializer.java @@ -1,8 +1,28 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes; import org.apache.log4j.Logger; /** + * Initializer for {@link SciProject}. * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProjectLoader.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProjectLoader.java index afb61f2e5..906072a37 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProjectLoader.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProjectLoader.java @@ -1,6 +1,26 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes; /** + * Loader for {@link SciProject} * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProjectOrganizationsCollection.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProjectOrganizationsCollection.java index 18a64d13e..f1c9509d4 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProjectOrganizationsCollection.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProjectOrganizationsCollection.java @@ -25,6 +25,7 @@ import com.arsdigita.persistence.DataObject; import org.apache.log4j.Logger; /** + * Special domain collection for the organization involved in a project. * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProjectSubProjectsCollection.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProjectSubProjectsCollection.java index 7711574e0..8bc8bd1d2 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProjectSubProjectsCollection.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/SciProjectSubProjectsCollection.java @@ -25,6 +25,7 @@ import com.arsdigita.persistence.DataObject; import org.apache.log4j.Logger; /** + * Special domain collection for the suprojects of a project. * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/doc-files/ccm-sci-types-organization_entities.png b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/doc-files/ccm-sci-types-organization_entities.png new file mode 100644 index 0000000000000000000000000000000000000000..5ac626f36314e2ff2c0fd8cf5fc22b7aa3a8f0f6 GIT binary patch literal 139120 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 literal 0 HcmV?d00001 diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentDescriptionEditForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentDescriptionEditForm.java index 8d4f7399a..edc9a4796 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentDescriptionEditForm.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentDescriptionEditForm.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.FormData; @@ -16,8 +35,10 @@ import com.arsdigita.cms.ui.CMSDHTMLEditor; import com.arsdigita.cms.ui.authoring.BasicItemForm; /** + * Edit form for the description of a SciDepartment. * * @author Jens Pelzetter + * @see SciDepartment */ public class SciDepartmentDescriptionEditForm extends BasicItemForm diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentDescriptionStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentDescriptionStep.java index b49dc57c6..9914e3e6d 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentDescriptionStep.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentDescriptionStep.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.Component; @@ -10,8 +29,10 @@ import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess; import com.arsdigita.toolbox.ui.DomainObjectPropertySheet; /** + * EditStep for the description of a SciDepartment. * * @author Jens Pelzetter + * @see SciDepartment */ public class SciDepartmentDescriptionStep extends SimpleEditStep { diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentDescriptionUploadForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentDescriptionUploadForm.java index 4f4ca3c64..b5fe10dda 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentDescriptionUploadForm.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentDescriptionUploadForm.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.PageState; @@ -6,8 +25,11 @@ import com.arsdigita.cms.contenttypes.SciDepartment; import com.arsdigita.globalization.GlobalizedMessage; /** + * Upload form for the description of a SciDepartment. * * @author Jens Pelzetter + * @see SciDepartment + * @see AbstractTextUploadForm */ public class SciDepartmentDescriptionUploadForm extends AbstractTextUploadForm { diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentMemberAddForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentMemberAddForm.java new file mode 100644 index 000000000..08699a116 --- /dev/null +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentMemberAddForm.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.cms.contenttypes.SciMember; +import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.SciDepartment; + +/** + * Form for adding members to a SciDepartment. This form overwrites + * the {@link GenericOrganizationalUnitPersonAddForm#getPersonType()} + * to limit the selectable type for adding to {@link SciMember}. + * + * @author Jens Pelzetter + * @see SciDepartment + * @see SciMember + * @see GenericOrganizationalUnitPersonAddForm + */ +public class SciDepartmentMemberAddForm + extends GenericOrganizationalUnitPersonAddForm { + + public SciDepartmentMemberAddForm(ItemSelectionModel itemModel) { + super(itemModel); + } + + @Override + protected String getPersonType() { + return SciMember.class.getName(); + } +} diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentMemberStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentMemberStep.java new file mode 100644 index 000000000..8f9ede4ff --- /dev/null +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentMemberStep.java @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +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; + +/** + * Edit step for adding members to a SciDepartment. + * + * @author Jens Pelzetter + */ +public class SciDepartmentMemberStep extends SimpleEditStep { + + private static final String ADD_MEMBER_SHEET_NAME = "addMember"; + + public SciDepartmentMemberStep(ItemSelectionModel itemModel, + AuthoringKitWizard parent) { + this(itemModel, parent, null); + } + + public SciDepartmentMemberStep(ItemSelectionModel itemModel, + AuthoringKitWizard parent, + String prefix) { + super(itemModel, parent, prefix); + + BasicItemForm addMemberSheet = + new SciDepartmentMemberAddForm(itemModel); + add(ADD_MEMBER_SHEET_NAME, + (String) SciOrganizationGlobalizationUtil.globalize( + "sciorganization.ui.department.add_member").localize(), + new WorkflowLockedComponentAccess(addMemberSheet, itemModel), + addMemberSheet.getSaveCancelSection().getCancelButton()); + + GenericOrganizationalUnitPersonsTable memberTable = new GenericOrganizationalUnitPersonsTable( + itemModel); + setDisplayComponent(memberTable); + } +} diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentOrganizationForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentOrganizationForm.java index 5dfc355a1..bcef894e5 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentOrganizationForm.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentOrganizationForm.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.FormData; @@ -15,8 +34,11 @@ import com.arsdigita.cms.ui.ItemSearchWidget; import com.arsdigita.cms.ui.authoring.BasicItemForm; /** + * Form for setting the superior organization of an SciDepartment. * * @author Jens Pelzetter + * @see SciDepartment + * @see SciOrganization */ public class SciDepartmentOrganizationForm extends BasicItemForm diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentOrganizationSheet.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentOrganizationSheet.java index ab0b3893d..e95f3fbe5 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentOrganizationSheet.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentOrganizationSheet.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.Component; @@ -20,8 +39,11 @@ import com.arsdigita.cms.dispatcher.Utilities; import com.arsdigita.util.LockableImpl; /** + * Sheet for showing the superior organization of a SciDepartment. * * @author Jens Pelzetter + * @see SciDepartment + * @see SciOrganization */ public class SciDepartmentOrganizationSheet extends Table @@ -117,7 +139,7 @@ public class SciDepartmentOrganizationSheet return m_orga.getTitle(); case 1: return SciOrganizationGlobalizationUtil.globalize( - "sciorganization.ui.departemnt.organzation.remove"); + "sciorganization.ui.department.organization.remove"); default: return null; } diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentOrganizationStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentOrganizationStep.java index 34c6fc27d..1b168b372 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentOrganizationStep.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentOrganizationStep.java @@ -1,14 +1,38 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.SciDepartment; +import com.arsdigita.cms.contenttypes.SciOrganization; 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; /** + * Step for setting the superior organization of a SciDepartment. * * @author Jens Pelzetter + * @see SciDepartment + * @see SciOrganization */ public class SciDepartmentOrganizationStep extends SimpleEditStep { diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentProjectAddForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentProjectAddForm.java index 983a360b6..27d446570 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentProjectAddForm.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentProjectAddForm.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.FormData; @@ -15,8 +34,11 @@ import com.arsdigita.cms.ui.ItemSearchWidget; import com.arsdigita.cms.ui.authoring.BasicItemForm; /** + * Form for linking an {@link SciDepartment} with a {@link SciProject}. * * @author Jens Pelzetter + * @see SciDepartment + * @see SciProject */ public class SciDepartmentProjectAddForm extends BasicItemForm diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentProjectsStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentProjectsStep.java index e6fcba282..4f9b3065e 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentProjectsStep.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentProjectsStep.java @@ -1,14 +1,38 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.SciDepartment; +import com.arsdigita.cms.contenttypes.SciProject; 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; /** + * Step for linking {@link SciDepartment}s with {@link SciProject}s. * * @author Jens Pelzetter + * @see SciDepartment + * @see SciProject */ public class SciDepartmentProjectsStep extends SimpleEditStep { diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentProjectsTable.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentProjectsTable.java index 8ba2cd918..756173138 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentProjectsTable.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentProjectsTable.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import java.math.BigDecimal; @@ -23,8 +42,11 @@ import com.arsdigita.cms.dispatcher.Utilities; import com.arsdigita.util.LockableImpl; /** + * Table for showing all {@link SciProject}s linked with a {@link SciDepartment} * * @author Jens Pelzetter + * @see SciDepartment + * @see SciProject */ public class SciDepartmentProjectsTable extends Table diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPropertiesStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPropertiesStep.java index e0feab095..f2438cd45 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPropertiesStep.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPropertiesStep.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.Component; @@ -12,8 +31,10 @@ import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess; import com.arsdigita.toolbox.ui.DomainObjectPropertySheet; /** + * Step for editing a {@link SciDepartment}. * * @author Jens Pelzetter + * @see SciDepartment */ public class SciDepartmentPropertiesStep extends GenericOrganizationalUnitPropertiesStep { @@ -71,13 +92,13 @@ public class SciDepartmentPropertiesStep if (!config.getDepartmentAddContactHide()) { addStep(new GenericOrganizationalUnitContactPropertiesStep(itemModel, parent), - "cms.contenttypes.ui.orgaunit.contact"); + "sciorganization.ui.department.contacts"); } if (!config.getDepartmentAddPersonHide()) { - addStep(new GenericOrganizationalUnitPersonPropertiesStep(itemModel, - parent), - "cms.contenttypes.ui.orgaunit.persons"); + addStep(new SciDepartmentMemberStep(itemModel, + parent), + "sciorganization.ui.department.members"); } if (!config.getDepartmentAddSubDepartmentHide()) { diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPropertyForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPropertyForm.java index 4220fb89e..89b4aa8fc 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPropertyForm.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentPropertyForm.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.FormData; @@ -13,8 +32,10 @@ import com.arsdigita.cms.ItemSelectionModel; import com.arsdigita.cms.contenttypes.SciDepartment; /** + * Form for editing the basic properties of a {@link SciDepartment}. * * @author Jens Pelzetter + * @see SciDepartment */ public class SciDepartmentPropertyForm extends GenericOrganizationalUnitPropertyForm diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSubDepartmentAddForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSubDepartmentAddForm.java index d396a2da6..b5ae2eed7 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSubDepartmentAddForm.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSubDepartmentAddForm.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.FormData; @@ -14,8 +33,10 @@ import com.arsdigita.cms.ui.ItemSearchWidget; import com.arsdigita.cms.ui.authoring.BasicItemForm; /** + * Form for adding subdepartments to a {@link SciDepartment}. * * @author Jens Pelzetter + * @see SciDepartment */ public class SciDepartmentSubDepartmentAddForm extends BasicItemForm diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSubDepartmentsStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSubDepartmentsStep.java index 0d97c2547..07e8b62cc 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSubDepartmentsStep.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSubDepartmentsStep.java @@ -1,14 +1,36 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.SciDepartment; 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; /** + * Step for adding subdepartments to a {@link SciDepartment}. * * @author Jens Pelzetter + * @see SciDepartment */ public class SciDepartmentSubDepartmentsStep extends SimpleEditStep { @@ -28,7 +50,7 @@ public class SciDepartmentSubDepartmentsStep extends SimpleEditStep { new SciDepartmentSubDepartmentAddForm(itemModel); add(ADD_SUBDEPARTMENT_SHEET_NAME, (String) SciOrganizationGlobalizationUtil.globalize( - "sciorganization.ui.organization.add_subdepartment").localize(), + "sciorganization.ui.department.add_subdepartment").localize(), new WorkflowLockedComponentAccess(addSubDepartmentSheet, itemModel), addSubDepartmentSheet.getSaveCancelSection().getCancelButton()); diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSubDepartmentsTable.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSubDepartmentsTable.java index be1042d53..2fcd4fc11 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSubDepartmentsTable.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSubDepartmentsTable.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.Component; @@ -21,8 +40,10 @@ import com.arsdigita.util.LockableImpl; import java.math.BigDecimal; /** + * Table for showing the subdepartments of a {@link SciDepartment}. * * @author Jens Pelzetter + * @see SciDepartment */ public class SciDepartmentSubDepartmentsTable extends Table diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSuperDepartmentForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSuperDepartmentForm.java index 4e2116190..0855a1924 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSuperDepartmentForm.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSuperDepartmentForm.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.FormData; @@ -14,8 +33,10 @@ import com.arsdigita.cms.ui.ItemSearchWidget; import com.arsdigita.cms.ui.authoring.BasicItemForm; /** + * Form for setting the superior department of a {@link SciDepartment}. * * @author Jens Pelzetter + * @see SciDepartment */ public class SciDepartmentSuperDepartmentForm extends BasicItemForm diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSuperDepartmentSheet.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSuperDepartmentSheet.java index 1c13c7729..3e089b8f8 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSuperDepartmentSheet.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSuperDepartmentSheet.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.Component; @@ -19,8 +38,10 @@ import com.arsdigita.cms.dispatcher.Utilities; import com.arsdigita.util.LockableImpl; /** + * Sheet for showing the superior department of a {@link SciDepartment}. * * @author Jens Pelzetter + * @see SciDepartment */ public class SciDepartmentSuperDepartmentSheet extends Table diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSuperDepartmentStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSuperDepartmentStep.java index bc5aa8c8c..cbd532251 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSuperDepartmentStep.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciDepartmentSuperDepartmentStep.java @@ -1,14 +1,36 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.SciDepartment; 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; /** + * Step for setting the superior department of a {@link SciDepartment}. * * @author Jens Pelzetter + * @see SciDepartment */ public class SciDepartmentSuperDepartmentStep extends SimpleEditStep { diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciMemberPropertiesStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciMemberPropertiesStep.java new file mode 100644 index 000000000..e5d314830 --- /dev/null +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciMemberPropertiesStep.java @@ -0,0 +1,56 @@ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.Component; +import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.GenericPerson; +import com.arsdigita.cms.contenttypes.SciMember; +import com.arsdigita.cms.ui.authoring.AuthoringKitWizard; +import com.arsdigita.cms.ui.authoring.BasicPageForm; +import com.arsdigita.cms.ui.authoring.SimpleEditStep; +import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess; +import com.arsdigita.toolbox.ui.DomainObjectPropertySheet; + +/** + * Step for editing the basic properties of an {@link SciMember}. + * + * @author Jens Pelzetter + * @see SciMember + * @see GenericPerson + */ +public class SciMemberPropertiesStep extends SimpleEditStep { + + public static final String EDIT_SHEET_NAME = "edit"; + + public SciMemberPropertiesStep(ItemSelectionModel itemModel, + AuthoringKitWizard parent) { + super(itemModel, parent); + + BasicPageForm editSheet; + editSheet = new SciMemberPropertyForm(itemModel, this); + add(EDIT_SHEET_NAME, + (String) SciOrganizationGlobalizationUtil.globalize( + "sciorganization.ui.member.edit_basic_properties").localize(), + new WorkflowLockedComponentAccess(editSheet, itemModel), + editSheet.getSaveCancelSection().getCancelButton()); + + setDisplayComponent(getSciMemberPropertySheet(itemModel)); + + } + + public static Component getSciMemberPropertySheet( + ItemSelectionModel itemModel) { + DomainObjectPropertySheet sheet; + + sheet = (DomainObjectPropertySheet) GenericPersonPropertiesStep. + getGenericPersonPropertySheet(itemModel); + + sheet.add(SciOrganizationGlobalizationUtil.globalize( + "sciorganization.ui.member.associatedMember"), + SciMember.ASSOCIATED_MEBER); + sheet.add(SciOrganizationGlobalizationUtil.globalize( + "sciorganization.ui.member.formerMember"), + SciMember.FORMER_MEMBER); + + return sheet; + } +} diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciMemberPropertyForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciMemberPropertyForm.java new file mode 100644 index 000000000..e02f407bb --- /dev/null +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciMemberPropertyForm.java @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.FormData; +import com.arsdigita.bebop.Label; +import com.arsdigita.bebop.event.FormInitListener; +import com.arsdigita.bebop.event.FormSectionEvent; +import com.arsdigita.bebop.event.FormSubmissionListener; +import com.arsdigita.bebop.form.CheckboxGroup; +import com.arsdigita.bebop.form.Option; +import com.arsdigita.bebop.parameters.ArrayParameter; +import com.arsdigita.bebop.parameters.BooleanParameter; +import com.arsdigita.bebop.parameters.ParameterModel; +import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.GenericPerson; +import com.arsdigita.cms.contenttypes.SciMember; + +/** + * Form for editing the basic properties of a {@link SciMember}. This form + * extends the form for editing the basic properties of {@link GenericPerson}. + * + * @author Jens Pelzetter + * @see SciMember + * @see GenericPerson + * @see GenericPersonPropertyForm + */ +public class SciMemberPropertyForm + extends GenericPersonPropertyForm + implements FormInitListener, + FormSubmissionListener { + + private SciMemberPropertiesStep m_step; + + public SciMemberPropertyForm(ItemSelectionModel itemModel) { + this(itemModel, null); + } + + public SciMemberPropertyForm(ItemSelectionModel itemModel, + SciMemberPropertiesStep step) { + super(itemModel); + m_step = step; + } + + @Override + protected void addWidgets() { + super.addWidgets(); + + add(new Label(SciOrganizationGlobalizationUtil.globalize( + "sciorganization.ui.member.associatedMember"))); + ParameterModel isAssociated = new BooleanParameter( + SciMember.ASSOCIATED_MEBER); + ArrayParameter associatedParam = new ArrayParameter(isAssociated); + CheckboxGroup associated = new CheckboxGroup(associatedParam); + associated.addOption(new Option("")); + add(associated); + + add(new Label(SciOrganizationGlobalizationUtil.globalize( + "sciorganization.ui.member.formerMember"))); + ParameterModel isFormer = new BooleanParameter(SciMember.FORMER_MEMBER); + ArrayParameter formerParam = new ArrayParameter(isFormer); + CheckboxGroup former = new CheckboxGroup(formerParam); + former.addOption(new Option("")); + add(former); + } + + @Override + public void init(FormSectionEvent fse) { + super.init(fse); + + FormData data = fse.getFormData(); + SciMember member = (SciMember) super.initBasicWidgets(fse); + + data.put(SciMember.ASSOCIATED_MEBER, member.isAssociatedMember()); + data.put(SciMember.FORMER_MEMBER, member.isFormerMember()); + } + + @Override + public void process(FormSectionEvent fse) { + super.process(fse); + + FormData data = fse.getFormData(); + SciMember member = (SciMember) super.processBasicWidgets(fse); + + if ((member != null) && getSaveCancelSection().getSaveButton(). + isSelected(fse.getPageState())) { + member.setAssoicatedMember((Boolean) data.get(SciMember.ASSOCIATED_MEBER)); + member.setFormerMember((Boolean) data.get(SciMember.FORMER_MEMBER)); + + member.save(); + + init(fse); + } + } +} diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDepartmentAddForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDepartmentAddForm.java index 5f0e5775b..eb3ca9c7c 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDepartmentAddForm.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDepartmentAddForm.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.FormData; @@ -15,8 +34,11 @@ import com.arsdigita.cms.ui.ItemSearchWidget; import com.arsdigita.cms.ui.authoring.BasicItemForm; /** + * Form for linking {@link SciOrganization}s with {@link SciDepartment}s. * * @author Jens Pelzetter + * @see SciOrganization + * @see SciDepartment */ public class SciOrganizationDepartmentAddForm extends BasicItemForm diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDepartmentsStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDepartmentsStep.java index 9aba27c99..9b87f25d9 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDepartmentsStep.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDepartmentsStep.java @@ -1,14 +1,38 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.SciDepartment; +import com.arsdigita.cms.contenttypes.SciOrganization; 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; /** + * Step for adding {@link SciDepartment}s to a {@link SciOrganization}. * * @author Jens Pelzetter + * @see SciDepartment + * @see SciOrganization */ public class SciOrganizationDepartmentsStep extends SimpleEditStep { diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDepartmentsTable.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDepartmentsTable.java index 01768e394..65cbb6b78 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDepartmentsTable.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDepartmentsTable.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.Component; @@ -22,8 +41,12 @@ import com.arsdigita.util.LockableImpl; import java.math.BigDecimal; /** + * Table for showing the {@link SciDepartment}s linked to a + * {@link SciOrganization}. * * @author Jens Pelzetter + * @see SciOrganization + * @see SciDepartment */ public class SciOrganizationDepartmentsTable extends Table diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDescriptionEditForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDescriptionEditForm.java index d3856df59..756017bfd 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDescriptionEditForm.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDescriptionEditForm.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.FormData; @@ -16,8 +35,10 @@ import com.arsdigita.cms.ui.CMSDHTMLEditor; import com.arsdigita.cms.ui.authoring.BasicItemForm; /** + * Form for editing the description of a {@link SciOrganization}. * * @author Jens Pelzetter + * @see SciOrganization */ public class SciOrganizationDescriptionEditForm extends BasicItemForm diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDescriptionStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDescriptionStep.java index 8dd985220..38f97e067 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDescriptionStep.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDescriptionStep.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.Component; @@ -10,8 +29,10 @@ import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess; import com.arsdigita.toolbox.ui.DomainObjectPropertySheet; /** + * Step for editing the description of a {@link SciOrganization}. * * @author Jens Pelzetter + * @see SciOrganization */ public class SciOrganizationDescriptionStep extends SimpleEditStep { diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDescriptionUploadForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDescriptionUploadForm.java index 57c3dda23..8c5bc5c5f 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDescriptionUploadForm.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationDescriptionUploadForm.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.PageState; @@ -6,8 +25,11 @@ import com.arsdigita.cms.contenttypes.SciOrganization; import com.arsdigita.globalization.GlobalizedMessage; /** + * Form for uploading the description of a {@link SciOrganization}. * * @author Jens Pelzetter + * @see SciOrganization + * @see AbstractTextUploadForm */ public class SciOrganizationDescriptionUploadForm extends AbstractTextUploadForm { diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationGlobalizationUtil.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationGlobalizationUtil.java index 7718bffce..ab5f89a26 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationGlobalizationUtil.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationGlobalizationUtil.java @@ -1,14 +1,34 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.globalization.GlobalizedMessage; /** + * GlobalizationUtil for the ccm-sci-types-organization module. * * @author Jens Pelzetter */ public class SciOrganizationGlobalizationUtil { - public static final String BUNDLE_NAME = "com.arsdigita.cms.contenttypes.ui.OrganizationResources"; + public static final String BUNDLE_NAME = "com.arsdigita.cms.contenttypes.ui.SciOrganizationResources"; public static GlobalizedMessage globalize(String key) { return new GlobalizedMessage(key, BUNDLE_NAME); diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationMemberAddForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationMemberAddForm.java new file mode 100644 index 000000000..138cfe11f --- /dev/null +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationMemberAddForm.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.cms.contenttypes.SciMember; +import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.GenericPerson; +import com.arsdigita.cms.contenttypes.SciOrganization; + +/** + * Form for linking members with a {@link SciOrganization}. The form overwrites + * the {@link GenericOrganizationalUnitPersonAddForm#getPersonType()} to limit + * the selectable person type to {@link SciMember}. + * + * @author Jens Pelzetter + * @see SciOrganization + * @see SciMember + * @see GenericPerson + * @see GenericOrganizationalUnitPersonAddForm + */ +public class SciOrganizationMemberAddForm + extends GenericOrganizationalUnitPersonAddForm { + + public SciOrganizationMemberAddForm(ItemSelectionModel itemModel) { + super(itemModel); + } + + @Override + protected String getPersonType() { + return SciMember.class.getName(); + } + +} diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationMemberStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationMemberStep.java new file mode 100644 index 000000000..df6ed775e --- /dev/null +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationMemberStep.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.SciMember; +import com.arsdigita.cms.contenttypes.SciOrganization; +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; + +/** + * Step for adding and removing member form a {@link SciOrganization}. + * + * @author Jens Pelzetter + * @see SciOrganizationMemberAddForm + * @see SciMember + * @see SciOrganization + */ +public class SciOrganizationMemberStep extends SimpleEditStep { + + private static final String ADD_MEMBER_SHEET_NAME = "addMember"; + + public SciOrganizationMemberStep(ItemSelectionModel itemModel, + AuthoringKitWizard parent) { + this(itemModel, parent, null); + } + + public SciOrganizationMemberStep(ItemSelectionModel itemModel, + AuthoringKitWizard parent, + String prefix) { + super(itemModel, parent, prefix); + + BasicItemForm addMemberSheet = + new SciOrganizationMemberAddForm(itemModel); + add(ADD_MEMBER_SHEET_NAME, + (String) SciOrganizationGlobalizationUtil.globalize( + "sciorganization.ui.orgnization.add_member").localize(), + new WorkflowLockedComponentAccess(addMemberSheet, itemModel), + addMemberSheet.getSaveCancelSection().getCancelButton()); + + GenericOrganizationalUnitPersonsTable memberTable = new GenericOrganizationalUnitPersonsTable( + itemModel); + setDisplayComponent(memberTable); + } + + +} diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationProjectAddForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationProjectAddForm.java index 85c1ad316..1ea63a249 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationProjectAddForm.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationProjectAddForm.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.FormData; @@ -15,8 +34,12 @@ import com.arsdigita.cms.ui.ItemSearchWidget; import com.arsdigita.cms.ui.authoring.BasicItemForm; /** + * Form for linking projects with a {@link SciOrganization}. * * @author Jens Pelzetter + * @see SciOrganizationProjectAddForm + * @see SciOrganization + * @see SciProject */ public class SciOrganizationProjectAddForm extends BasicItemForm diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationProjectsStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationProjectsStep.java index 527d54fde..25d1d4c03 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationProjectsStep.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationProjectsStep.java @@ -1,14 +1,40 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.SciOrganization; +import com.arsdigita.cms.contenttypes.SciProject; 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; /** + * Step for adding and removing links from a {@link SciOrganization} to a + * {@link SciProject}. * * @author Jens Pelzetter + * @see SciOrganizationProjectAddForm + * @see SciOrganization + * @see SciProject */ public class SciOrganizationProjectsStep extends SimpleEditStep { diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationProjectsTable.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationProjectsTable.java index 8596aa468..75afdf5bd 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationProjectsTable.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationProjectsTable.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import java.math.BigDecimal; @@ -23,8 +42,12 @@ import com.arsdigita.cms.dispatcher.Utilities; import com.arsdigita.util.LockableImpl; /** + * Table for showing the links between a {@link SciOrganization} and + * {@link SciProject}s. * * @author Jens Pelzetter + * @see SciOrganization + * @see SciProject */ public class SciOrganizationProjectsTable extends Table diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationPropertiesStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationPropertiesStep.java index 092dde574..501ce0c70 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationPropertiesStep.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationPropertiesStep.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.Label; @@ -10,6 +29,7 @@ import com.arsdigita.cms.ui.authoring.SimpleEditStep; import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess; /** + * Step for editing the basic properties of a {@link SciOrganization}. * * @author Jens Pelzetter */ @@ -60,13 +80,13 @@ public class SciOrganizationPropertiesStep if (!config.getOrganizationAddContactHide()) { addStep(new GenericOrganizationalUnitContactPropertiesStep(itemModel, parent), - "cms.contenttypes.ui.orgaunit.contact"); + "sciorganization.ui.organization.contacts"); } if (!config.getOrganizationAddPersonHide()) { - addStep(new GenericOrganizationalUnitPersonPropertiesStep(itemModel, - parent), - "cms.contenttypes.ui.orgaunit.persons"); + addStep(new SciOrganizationMemberStep(itemModel, + parent), + "sciorganization.ui.organization_members"); } if (!config.getOrganizationAddDepartmentHide()) { diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationPropertyForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationPropertyForm.java index 536485188..ca514d68a 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationPropertyForm.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationPropertyForm.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.FormData; @@ -14,6 +33,7 @@ import com.arsdigita.cms.ItemSelectionModel; import com.arsdigita.cms.contenttypes.SciOrganization; /** + * Form for editing the basic properties of a {@link SciOrganization}. * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationResources.properties b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationResources.properties new file mode 100644 index 000000000..fbb376739 --- /dev/null +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationResources.properties @@ -0,0 +1,108 @@ +sciorganization.ui.project.subprojects.none=No subprojects found +sciorganization.ui.project.subproject=Subproject +sciorganization.ui.project.subproject.remove=Remove subproject +sciorganization.ui.project.subproject.up=Up +sciorganization.ui.project.subproject.down=Down +sciorganization.ui.project.subproject.confirm_remove=Are you sure to remove this department? +sciorganization.ui.project.select_subproject=Select project to add as subproject +sciorganization.ui.member.edit_basic_properties=Edit basic properties +sciorganization.ui.member.associatedMember=Associated member? +sciorganization.ui.member.formerMember=Former member? +sciorganization.ui.project.edit_desc=Edit description +sciorganization.ui.project.upload_desc=Upload description +sciorganization.ui.project.desc=Project description +sciorganization.ui.project.funding=Funding +sciorganization.ui.organization.add_department=Add department +sciorganization.ui.department.add_project=Add project +sciorganization.ui.organization.add_project=Add project +sciorganization.ui.department.edit_basic_properties=Edit basic properties +sciorganization.ui.department.basic_properties=Basic properties +sciorganization.ui.organization.edit_basic_sheet=Basic properties +sciorganization.ui.organization.basic_properties=Basic properties +sciorganization.ui.project.begin=Start of project +sciorganization.ui.project.end=End of project +sciorganization.ui.project.shortdesc=Short description +sciorganization.ui.project.edit_basic_sheet=Basic properties +sciorganization.ui.project.basic_properties=Basis properties +sciorganization.ui.department.add_subdepartment=Add subdepartment +sciorganization.ui.organization.departments.none=No departments found +sciorganization.ui.organization.department=Department +sciorganization.ui.organization.department.remove=Remove department +sciorganization.ui.organization.department.up=Up +sciorganization.ui.organization.department.down=Down +sciorganization.ui.organization.department.confirm_remove=Are you sure to remove this department? +sciorganization.ui.department.projects.none=No projects found +sciorganization.ui.department.project=Project +sciorganization.ui.department.project.remove=Remove project +sciorganization.ui.department.project.up=Up +sciorganization.ui.department.project.down=Down +sciorganization.ui.department.project.confirm_remove=Are you sure to remove this project? +sciorganization.ui.organization.select_department=Select department to add +sciorganization.ui.organization.projects.none=No projects found +sciorganization.ui.organization.project=Project +sciorganization.ui.organization.project.remove=Remove project +sciorganization.ui.organization.project.up=Up +sciorganization.ui.organization.project.down=Down +sciorganization.ui.organization.project.confirm_remove=Are you sure to remove this project? +sciorganization.ui.project.addSubProject=Add subproject +sciorganization.ui.department.select_project=Select project to add +sciorganization.ui.organization.select_project=Select project to add +sciorganization.ui.department.subdepartments.none=No subdepartments found +sciorganization.ui.department.subdepartment=Subdepartment +sciorganization.ui.department.subdepartment.remove=Remove subdepartment +sciorganization.ui.department.subdepartment.up=Up +sciorganization.ui.department.subdepartment.down=Down +sciorganization.ui.department.subdepartment.confirm_remove=Are you sure to remove this subdepartment? +sciorganizations.ui.department.shortdescription=Short description +sciorganizations.ui.organization.shortdescription=Short description +sciorganization.ui.department.select_subdepartment=Select subdepartment to add +sciorganization.ui.department.add_member=Add member +sciorganizations.ui.project.shortdesc=Short description +sciorganization.ui.project.addDepartment=Add involved department +sciorganization.ui.project.addOrga=Add involved organization +sciorganization.ui.project.departments.none=No involved departments found +sciorganization.ui.project.department=Involved department +sciorganization.ui.project.department.remove=Remove involved department +sciorganization.ui.project.department.up=Up +sciorganization.ui.project.department.down=Down +sciorganization.ui.project.organization.confirm_remove=Are you sure to remove this involved organization? +sciorganization.ui.project.select_organization=Select organization to add +sciorganization.ui.project.organization.none=No involved organizations found +sciorganization.ui.project.organization=Involved organization +sciorganization.ui.project.organization.remove=Remove involved organization +sciorganization.ui.project.organization.up=Up +sciorganization.ui.project.organization.down=Down +sciorganization.ui.project.select_department=Select department to add +sciorganization.ui.project.superproject_none=No superior project found +sciorganization.ui.project.superproject=Superior project +sciorganization.ui.project.superproject.remove=Remove superior project +sciorganization.ui.project.superproject.confirm_remove=Are you sure to remove this superior project? +sciorganization.ui.department.select_superdepartment=Superior department +sciorganization.ui.project.setSuperProject=Set superior project +sciorganization.ui.project.description.upload=Upload project description +sciorganization.ui.project.description.upload.mimetype=Type of file +sciorganization.ui.organization.edit_desc=Edit description +sciorganization.ui.organization.upload_desc=Upload description +sciorganization.ui.organization.desc=Description +sciorganization.ui.organization.description=Description +sciorganization.ui.organization.description.upload=Upload description +sciorganization.ui.organization.description.upload.mimetype=Type of file +sciorganization.ui.project.select_superproject=Select superior project +sciorganization.ui.department.setSuperDepartment=Set superior project +sciorganization.ui.department.superdepartment_none=No superior department found +sciorganization.ui.department.superdepartment=Superior department +sciorganization.ui.department.superdepartment.remove=Remove superior department +sciorganization.ui.department.superdepartment.confirm_remove=Are you sure to remove the superior department? +sciorganization.ui.department.setOrganization=Set organization +sciorganization.ui.department.select_organization=Select organization +sciorganization.ui.department.organization_none=No assigned organization found +sciorganization.ui.department.organization=Organization +sciorganization.ui.department.organization.remove=Remove assigned organization +sciorganization.ui.department.organization.confirm_remove=Are you sure sure to remove to assigned organization? +sciorganization.ui.department.edit_desc=Edit description +sciorganization.ui.department.upload_desc=Upload description +sciorganization.ui.department.desc=Description +sciorganization.ui.department.description=Description +sciorganization.ui.department.description.upload=Upload description +sciorganization.ui.department.description.upload.mimetype=Type of file +sciorganization.ui.orgnization.add_member=Add member diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationResources_de.properties b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationResources_de.properties new file mode 100644 index 000000000..f444fec20 --- /dev/null +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciOrganizationResources_de.properties @@ -0,0 +1,108 @@ +sciorganization.ui.project.subprojects.none=Keine Unterprojekte gefunden +sciorganization.ui.project.subproject=Unterprojekt +sciorganization.ui.project.subproject.remove=Unterprojekt entfernen +sciorganization.ui.project.subproject.up=Hoch +sciorganization.ui.project.subproject.down=Runter +sciorganization.ui.project.subproject.confirm_remove=Wollen sie dieses Unterprojekt wirklich entfernen? +sciorganization.ui.project.select_subproject=Projekt zum Hinzuf\u00fcgen als Unterprojekt ausw\u00e4hlen +sciorganization.ui.member.edit_basic_properties=Basiseigenschaften bearbeiten +sciorganization.ui.member.associatedMember=Assoziertes Mitglied? +sciorganization.ui.member.formerMember=Ehemaliges Mitglied? +sciorganization.ui.project.edit_desc=Beschreibung bearbeiten +sciorganization.ui.project.upload_desc=Beschreibung hochladen +sciorganization.ui.project.desc=Projektbeschreibung +sciorganization.ui.project.funding=Finanzierung +sciorganization.ui.organization.add_department=Abteilung hinzuf\u00fcgen +sciorganization.ui.department.add_project=Projekt hinzuf\u00fcgen +sciorganization.ui.organization.add_project=Projekt hinzuf\u00fcgen +sciorganization.ui.department.edit_basic_properties=Basiseigenschaften bearbeiten +sciorganization.ui.department.basic_properties=Basiseigenschaften +sciorganization.ui.organization.edit_basic_sheet=Basiseigenschaften +sciorganization.ui.organization.basic_properties=Basiseigenschaften +sciorganization.ui.project.begin=Begin des Projektes +sciorganization.ui.project.end=Ende des Projektes +sciorganization.ui.project.shortdesc=Kurzbeschreibung +sciorganization.ui.project.edit_basic_sheet=Basiseigenschaften +sciorganization.ui.project.basic_properties=Basiseigenschaften +sciorganization.ui.department.add_subdepartment=Unterabteilung hinzuf\u00fcgen +sciorganization.ui.organization.departments.none=Keine Abteilungen gefunden +sciorganization.ui.organization.department=Abteilung +sciorganization.ui.organization.department.remove=Abteilung entfernen +sciorganization.ui.organization.department.up=Hoch +sciorganization.ui.organization.department.down=Runter +sciorganization.ui.organization.department.confirm_remove=Wollen sie diese Abteilung wirklich entfernen? +sciorganization.ui.department.projects.none=Keine Projekte gefunden +sciorganization.ui.department.project=Projekt +sciorganization.ui.department.project.remove=Projekt entfernen +sciorganization.ui.department.project.up=Hoch +sciorganization.ui.department.project.down=Runter +sciorganization.ui.department.project.confirm_remove=Wollen sie dieses Projekt wirklich entfernen? +sciorganization.ui.organization.select_department=Abteilung zum hinzuf\u00fcgen ausw\u00e4hlen +sciorganization.ui.organization.projects.none=Keine Projekte gefunden +sciorganization.ui.organization.project=Projekt +sciorganization.ui.organization.project.remove=Projekt entfernen +sciorganization.ui.organization.project.up=Hoch +sciorganization.ui.organization.project.down=Runter +sciorganization.ui.organization.project.confirm_remove=Wollen sie dieses Projekt wirklich entfernen? +sciorganization.ui.project.addSubProject=Unterprojekt hinzuf\u00fcgen +sciorganization.ui.department.select_project=Projekt zum hinzuf\u00fcgen ausw\u00e4hlen +sciorganization.ui.organization.select_project=Projekt zum hinzuf\u00fcgen ausw\u00e4hlen +sciorganization.ui.department.subdepartments.none=Keine Unterabteilungen gefunden +sciorganization.ui.department.subdepartment=Unterabteilung +sciorganization.ui.department.subdepartment.remove=Unterabteilung entfernen +sciorganization.ui.department.subdepartment.up=Hoch +sciorganization.ui.department.subdepartment.down=Runter +sciorganization.ui.department.subdepartment.confirm_remove=Wollen sie diese Unterabteilung wirklich entfernen +sciorganizations.ui.department.shortdescription=Kurzbeschreibung +sciorganizations.ui.organization.shortdescription=Kurzbeschreibung +sciorganization.ui.department.select_subdepartment=Unterabteilung zum hinzuf\u00fcgen ausw\u00e4hlen +sciorganization.ui.department.add_member=Mitglied ausw\u00e4hlen +sciorganizations.ui.project.shortdesc=Kurzbeschreibung +sciorganization.ui.project.addDepartment=Beteiligte Abteilung hinzuf\u00fcgen +sciorganization.ui.project.addOrga=Beteiligte Organization hinzuf\u00fcgen +sciorganization.ui.project.departments.none=Keine beteiligen Abteilungen gefunden +sciorganization.ui.project.department=Beteiligte Abteilung +sciorganization.ui.project.department.remove=Beteiligte Abteilung entfernen +sciorganization.ui.project.department.up=Hoch +sciorganization.ui.project.department.down=Runter +sciorganization.ui.project.organization.confirm_remove=Wollen diese beteiligte Organization wirklich entfernen? +sciorganization.ui.project.select_organization=Organisation zum hinzuf\u00fcgen ausw\u00e4hlen +sciorganization.ui.project.organization.none=Keine beteiligten Organisationen gefunden +sciorganization.ui.project.organization=Beteiligte Organisation +sciorganization.ui.project.organization.remove=Beteiligte Organisation entfernen +sciorganization.ui.project.organization.up=Hoch +sciorganization.ui.project.organization.down=Runter +sciorganization.ui.project.select_department=Abteilung zum hinzuf\u00fcgen ausw\u00e4hlen +sciorganization.ui.project.superproject_none=Kein \u00fcbergeordnetes Projekt gefunden +sciorganization.ui.project.superproject=\u00dcbergeordnetes Projekt +sciorganization.ui.project.superproject.remove=\u00dcbergeordnetes Projekt entfernen +sciorganization.ui.project.superproject.confirm_remove=Wollen sie dieses \u00fcbergeordnete projekt wirklich entfernen? +sciorganization.ui.department.select_superdepartment=\u00dcbergeordnete Abteilung +sciorganization.ui.project.setSuperProject=\u00dcbergeordnetes Projekt setzen +sciorganization.ui.project.description.upload=Projektbeschreibung hochladen +sciorganization.ui.project.description.upload.mimetype=Dateityp +sciorganization.ui.organization.edit_desc=Beschreibung bearbeiten +sciorganization.ui.organization.upload_desc=Beschreibung hochladen +sciorganization.ui.organization.desc=Beschreibung +sciorganization.ui.organization.description=Beschreibung +sciorganization.ui.organization.description.upload=Beschriebung hochladen +sciorganization.ui.organization.description.upload.mimetype=Dateityp +sciorganization.ui.project.select_superproject=\u00dcbergeordnetes Projekt ausw\u00e4hlen +sciorganization.ui.department.setSuperDepartment=\u00dcbergeordnetes Projekt setzen +sciorganization.ui.department.superdepartment_none=Keine \u00fcbergeordnete Abteilung gefunden +sciorganization.ui.department.superdepartment=\u00dcbergeordnete Abteilung +sciorganization.ui.department.superdepartment.remove=\u00dcbergeordnete Abteilung entfernen +sciorganization.ui.department.superdepartment.confirm_remove=Wollen sie die \u00fcbergeordnete Abteilung wirklich entfernen? +sciorganization.ui.department.setOrganization=Organization setzen +sciorganization.ui.department.select_organization=Organization ausw\u00e4hlen +sciorganization.ui.department.organization_none=Keine zugeordnete Organization gefunden +sciorganization.ui.department.organization=Organisation +sciorganization.ui.department.organization.remove=Zugeordnete Organisation entfernen +sciorganization.ui.department.organization.confirm_remove=Wollen sie zugeordnete Organisation wirklich entfernen? +sciorganization.ui.department.edit_desc=Beschreibung bearbeiten +sciorganization.ui.department.upload_desc=Beschreibung hochladen +sciorganization.ui.department.desc=Beschreibung +sciorganization.ui.department.description=Beschreibung +sciorganization.ui.department.description.upload=Beschreibung hochladen +sciorganization.ui.department.description.upload.mimetype=Dateityp +sciorganization.ui.orgnization.add_member=Mitglied hinzuf\u00fcgen diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDepartmentAddForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDepartmentAddForm.java index cfe0db9af..8eba6fecf 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDepartmentAddForm.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDepartmentAddForm.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.FormData; @@ -15,6 +34,8 @@ import com.arsdigita.cms.ui.ItemSearchWidget; import com.arsdigita.cms.ui.authoring.BasicItemForm; /** + * Form for adding a link between a {@link SciProject} and a + * {@link SciDepartment}. * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDepartmentsStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDepartmentsStep.java index 9c311e75c..9664fb0bd 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDepartmentsStep.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDepartmentsStep.java @@ -1,12 +1,35 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.SciDepartment; +import com.arsdigita.cms.contenttypes.SciProject; 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; /** + * Step for adding and removing links between a {@link SciProject} and a + * {@link SciDepartment}. * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDepartmentsTable.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDepartmentsTable.java index 2ddba4aca..8fbcac81b 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDepartmentsTable.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDepartmentsTable.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.Component; @@ -22,6 +41,8 @@ import com.arsdigita.util.LockableImpl; import java.math.BigDecimal; /** + * Table for showing the links between a {@link SciProject} and a + * {@link SciDepartment}. * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDescriptionEditForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDescriptionEditForm.java index ee6973a37..660a562ba 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDescriptionEditForm.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDescriptionEditForm.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.FormData; @@ -16,6 +35,7 @@ import com.arsdigita.cms.ui.CMSDHTMLEditor; import com.arsdigita.cms.ui.authoring.BasicItemForm; /** + * Form for editing the description of a {@link SciProject}. * * @author Jens Pelzetter */ @@ -31,7 +51,7 @@ public class SciProjectDescriptionEditForm @Override protected void addWidgets() { add(new Label(SciOrganizationGlobalizationUtil.globalize( - "sciorganizazion.ui.project.description"))); + "sciorganization.ui.project.description"))); ParameterModel descParam = new StringParameter( SciProject.PROJECT_DESCRIPTION); TextArea desc; @@ -47,7 +67,7 @@ public class SciProjectDescriptionEditForm if (!SciProject.getConfig().getProjectFundingHide()) { add(new Label(SciOrganizationGlobalizationUtil.globalize( - "sciorganizazion.ui.project.funding"))); + "sciorganization.ui.project.funding"))); ParameterModel fundingParam = new StringParameter( SciProject.FUNDING); TextArea funding; diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDescriptionStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDescriptionStep.java index 2a805f9ed..050c1e5f3 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDescriptionStep.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDescriptionStep.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.Component; @@ -10,6 +29,7 @@ import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess; import com.arsdigita.toolbox.ui.DomainObjectPropertySheet; /** + * Step for editing the description of a {@link SciProject}. * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDescriptionUploadForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDescriptionUploadForm.java index 9b9300d58..90b146878 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDescriptionUploadForm.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectDescriptionUploadForm.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.PageState; @@ -6,6 +25,7 @@ import com.arsdigita.cms.contenttypes.SciProject; import com.arsdigita.globalization.GlobalizedMessage; /** + * Form for uploading the description of a {@link SciProject}. * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectMemberAddForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectMemberAddForm.java new file mode 100644 index 000000000..a242cf01f --- /dev/null +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectMemberAddForm.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.cms.contenttypes.SciMember; +import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.SciProject; + +/** + * Form for adding a link between a {@link SciProject} and a {@link SciMember}. + * + * @author Jens Pelzetter + */ +public class SciProjectMemberAddForm + extends GenericOrganizationalUnitPersonAddForm { + + public SciProjectMemberAddForm( + ItemSelectionModel itemModel) { + super(itemModel); + } + + @Override + protected String getPersonType() { + return SciMember.class.getName(); + } +} diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectMemberStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectMemberStep.java new file mode 100644 index 000000000..0c91187b0 --- /dev/null +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectMemberStep.java @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.SciProject; +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; + +/** + * Step for adding and removing member to and from a {@link SciProject}. + * + * @author Jens Pelzetter + */ +public class SciProjectMemberStep extends SimpleEditStep { + + private static final String ADD_MEMBER_SHEET_NAME = "addMember"; + + public SciProjectMemberStep(ItemSelectionModel itemModel, + AuthoringKitWizard parent) { + this(itemModel, parent, null); + } + + public SciProjectMemberStep(ItemSelectionModel itemModel, + AuthoringKitWizard parent, + String prefix) { + super(itemModel, parent, prefix); + + BasicItemForm addMemberSheet = + new SciProjectMemberAddForm(itemModel); + add(ADD_MEMBER_SHEET_NAME, + (String) SciOrganizationGlobalizationUtil.globalize( + "sciorganization.ui.department.add_member").localize(), + new WorkflowLockedComponentAccess(addMemberSheet, itemModel), + addMemberSheet.getSaveCancelSection().getCancelButton()); + + GenericOrganizationalUnitPersonsTable memberTable = new GenericOrganizationalUnitPersonsTable( + itemModel); + setDisplayComponent(memberTable); + } +} diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectOrganizationsAddForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectOrganizationsAddForm.java index ac8bdedb9..a28267ba8 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectOrganizationsAddForm.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectOrganizationsAddForm.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.FormData; @@ -15,6 +34,8 @@ import com.arsdigita.cms.ui.ItemSearchWidget; import com.arsdigita.cms.ui.authoring.BasicItemForm; /** + * Form for adding a link between a {@link SciProject} and a + * {@link SciOrganization}. * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectOrganizationsStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectOrganizationsStep.java index ac9c776e7..1d5279984 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectOrganizationsStep.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectOrganizationsStep.java @@ -1,12 +1,35 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.SciOrganization; +import com.arsdigita.cms.contenttypes.SciProject; 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; /** + * Step for adding and removing links between a {@link SciProject} and + * {@link SciOrganization}s. * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectOrganizationsTable.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectOrganizationsTable.java index b4315d0ed..1fe0f2028 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectOrganizationsTable.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectOrganizationsTable.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import java.math.BigDecimal; @@ -24,6 +43,8 @@ import com.arsdigita.cms.dispatcher.Utilities; import com.arsdigita.util.LockableImpl; /** + * Table for showing the links between a {@link SciProject} and + * {@link SciOrganization}s. * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectPropertiesStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectPropertiesStep.java index d6b7090a8..db8e76f2c 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectPropertiesStep.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectPropertiesStep.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.Component; @@ -12,6 +31,7 @@ import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess; import com.arsdigita.toolbox.ui.DomainObjectPropertySheet; /** + * Step for editing the basic properties of a {@link SciProject}. * * @author Jens Pelzetter */ @@ -79,17 +99,15 @@ public class SciProjectPropertiesStep if (!config.getProjectAddContactHide()) { addStep(new GenericOrganizationalUnitContactPropertiesStep(itemModel, parent), - "cms.contenttypes.ui.orgaunit.contact"); + "sciorganization.ui.project.contacts"); } if (!config.getProjectAddPersonHide()) { - addStep(new GenericOrganizationalUnitPersonPropertiesStep(itemModel, - parent), - "cms.contenttypes.ui.orgaunit.persons"); + addStep(new SciProjectMemberStep(itemModel, + parent), + "sciorganization.ui.project.members"); } - //super.addSteps(itemModel, parent); - if (!config.getProjectSetSuperProjectHide()) { addStep(new SciProjectSuperProjectStep(itemModel, parent), diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectPropertyForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectPropertyForm.java index ff32ee811..4751d8f36 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectPropertyForm.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectPropertyForm.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.FormData; @@ -18,6 +37,7 @@ import java.util.Calendar; import java.util.GregorianCalendar; /** + * Form for editing the basic properties of a {@link SciProject}. * * @author Jens Pelzetter */ @@ -59,7 +79,7 @@ public class SciProjectPropertyForm add(end); add(new Label(SciOrganizationGlobalizationUtil.globalize( - "sciorganizations.ui.projectshortdesc"))); + "sciorganizations.ui.project.shortdesc"))); ParameterModel shortDescParam = new StringParameter( SciProject.PROJECT_SHORT_DESCRIPTION); TextArea shortDesc = new TextArea(shortDescParam); diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSubProjectsTable.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSubProjectsTable.java index 6892f6894..22b2fab54 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSubProjectsTable.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSubProjectsTable.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import java.math.BigDecimal; @@ -22,6 +41,7 @@ import com.arsdigita.cms.dispatcher.Utilities; import com.arsdigita.util.LockableImpl; /** + * Table of showing the subprojects of a {@link SciProject}. * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSubprojectAddForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSubprojectAddForm.java index 5c251aee2..b10a97d81 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSubprojectAddForm.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSubprojectAddForm.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.FormData; @@ -14,6 +33,7 @@ import com.arsdigita.cms.ui.ItemSearchWidget; import com.arsdigita.cms.ui.authoring.BasicItemForm; /** + * Form for adding a subproject to a {@link SciProject}. * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSubprojectsStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSubprojectsStep.java index a2da17bc7..f4fa3f78e 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSubprojectsStep.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSubprojectsStep.java @@ -1,6 +1,26 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.SciProject; import com.arsdigita.cms.ui.authoring.AuthoringKitWizard; import com.arsdigita.cms.ui.authoring.BasicItemForm; import com.arsdigita.cms.ui.authoring.SimpleEditStep; @@ -8,6 +28,7 @@ import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess; import org.apache.log4j.Logger; /** + * Step for adding and removing subprojects to and from a {@link SciProject}. * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSuperProjectSetForm.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSuperProjectSetForm.java index e862f2945..c66c30dd8 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSuperProjectSetForm.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSuperProjectSetForm.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.FormData; @@ -14,6 +33,7 @@ import com.arsdigita.cms.ui.ItemSearchWidget; import com.arsdigita.cms.ui.authoring.BasicItemForm; /** + * Form for setting the superior project of a {@link SciProject}. * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSuperProjectSheet.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSuperProjectSheet.java index 59d7d9a3c..7c3275b5a 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSuperProjectSheet.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSuperProjectSheet.java @@ -1,3 +1,22 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.bebop.Component; @@ -20,6 +39,7 @@ import com.arsdigita.cms.dispatcher.Utilities; import com.arsdigita.util.LockableImpl; /** + * Sheet for showing the superior project of a {@link SciProject}. * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSuperProjectStep.java b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSuperProjectStep.java index 2b17e74be..cd01e4d5f 100644 --- a/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSuperProjectStep.java +++ b/ccm-sci-types-organization/src/com/arsdigita/cms/contenttypes/ui/SciProjectSuperProjectStep.java @@ -1,12 +1,33 @@ +/* + * Copyright (c) 2010 Jens Pelzetter, + * for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ package com.arsdigita.cms.contenttypes.ui; import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.SciProject; 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; /** + * Step for setting the superior project of a {@link SciProject}. * * @author Jens Pelzetter */ diff --git a/ccm-sci-types-organization/web/static/content-types/com/arsdigita/cms/contenttypes/SciMember.xsl b/ccm-sci-types-organization/web/static/content-types/com/arsdigita/cms/contenttypes/SciMember.xsl new file mode 100644 index 000000000..80359c344 --- /dev/null +++ b/ccm-sci-types-organization/web/static/content-types/com/arsdigita/cms/contenttypes/SciMember.xsl @@ -0,0 +1,20 @@ + +]> + + + + +

+
+ + +

+
+ +
\ No newline at end of file