- Status von Mitgliedern in die Beziehung von GenericOrganizationalUnit->GenericPerson verlegt, möglich Werte können über RelationAttribute festgelegt werden
- Panels für sci-types-organization für neue Struktur der Orga->Mitglieder-Verknüpfung angepasst - Verschiedene kleinere Korrekturen, unter anderem Verweise auf falsche ResourceBundles entfernt, einige zusätzliche Übersetzungen, unnötige Hoch-/Runterpfeile in SciOrganizationProjectsTable und SciDepartmentProjectsTable entfernt usw. git-svn-id: https://svn.libreccm.org/ccm/trunk@639 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
f8fdf72f86
commit
c88e3819e0
|
|
@ -5,9 +5,9 @@
|
||||||
|
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
||||||
descriptionBundle="com.arsdigita.cms.ui.CMSResources"
|
descriptionBundle="com.arsdigita.cms.CMSResources"
|
||||||
component="com.arsdigita.cms.contenttypes.ui.AgendaPropertiesStep"/>
|
component="com.arsdigita.cms.contenttypes.ui.AgendaPropertiesStep"/>
|
||||||
|
|
||||||
<ctd:include href="/WEB-INF/content-types/edit-body-text-step.xml"/>
|
<ctd:include href="/WEB-INF/content-types/edit-body-text-step.xml"/>
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,9 @@
|
||||||
|
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
||||||
descriptionBundle="com.arsdigita.cms.ui.CMSResources"
|
descriptionBundle="com.arsdigita.cms.CMSResources"
|
||||||
component="com.arsdigita.cms.contenttypes.ui.ArticlePropertiesStep"/>
|
component="com.arsdigita.cms.contenttypes.ui.ArticlePropertiesStep"/>
|
||||||
|
|
||||||
<ctd:include href="/WEB-INF/content-types/edit-body-text-step.xml"/>
|
<ctd:include href="/WEB-INF/content-types/edit-body-text-step.xml"/>
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,9 @@
|
||||||
|
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
||||||
descriptionBundle="com.arsdigita.cms.ui.CMSResources"
|
descriptionBundle="com.arsdigita.cms.CMSResources"
|
||||||
component="com.arsdigita.cms.contenttypes.ui.GenericContactPropertiesStep"
|
component="com.arsdigita.cms.contenttypes.ui.GenericContactPropertiesStep"
|
||||||
ordering="1"/>
|
ordering="1"/>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="event.authoring.basic_properties.description"
|
descriptionKey="event.authoring.basic_properties.description"
|
||||||
descriptionBundle="com.arsdigita.cms.contenttypes.EventResources"
|
descriptionBundle="com.arsdigita.cms.contenttypes.EventResources"
|
||||||
component="com.arsdigita.cms.contenttypes.ui.EventPropertiesStep"/>
|
component="com.arsdigita.cms.contenttypes.ui.EventPropertiesStep"/>
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="faq_item.authoring.basic_properties.description"
|
descriptionKey="faq_item.authoring.basic_properties.description"
|
||||||
descriptionBundle="com.arsdigita.cms.contenttypes.FAQItemResources"
|
descriptionBundle="com.arsdigita.cms.contenttypes.FAQItemResources"
|
||||||
component="com.arsdigita.cms.contenttypes.ui.FAQItemPropertiesStep"
|
component="com.arsdigita.cms.contenttypes.ui.FAQItemPropertiesStep"
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,9 @@
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
label="Edit Basic Properties"
|
label="Edit Basic Properties"
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
||||||
descriptionBundle="com.arsdigita.cms.ui.CMSResources"
|
descriptionBundle="com.arsdigita.cms.CMSResources"
|
||||||
component="com.arsdigita.cms.contenttypes.ui.authoring.FileStorageItemPropertiesStep"
|
component="com.arsdigita.cms.contenttypes.ui.authoring.FileStorageItemPropertiesStep"
|
||||||
ordering="1"/>
|
ordering="1"/>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,9 @@
|
||||||
<ctd:authoring-kit createComponent="com.arsdigita.cms.ui.authoring.PageCreate">
|
<ctd:authoring-kit createComponent="com.arsdigita.cms.ui.authoring.PageCreate">
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
||||||
descriptionBundle="com.arsdigita.cms.ui.CMSResources"
|
descriptionBundle="com.arsdigita.cms.CMSResources"
|
||||||
component="com.arsdigita.cms.ui.formbuilder.FormProperties"/>
|
component="com.arsdigita.cms.ui.formbuilder.FormProperties"/>
|
||||||
|
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,9 @@
|
||||||
|
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
||||||
descriptionBundle="com.arsdigita.cms.ui.CMSResources"
|
descriptionBundle="com.arsdigita.cms.CMSResources"
|
||||||
component="com.arsdigita.cms.ui.formbuilder.FormSectionProperties"/>
|
component="com.arsdigita.cms.ui.formbuilder.FormSectionProperties"/>
|
||||||
|
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,9 @@
|
||||||
|
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="cms.contenttypes.shared.basic_properties.title"
|
descriptionKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
descriptionBundle="com.arsdigita.cms.ui.CMSResources"
|
descriptionBundle="com.arsdigita.cms.CMSResources"
|
||||||
component="com.arsdigita.cms.contenttypes.ui.GlossaryItemPropertiesStep"
|
component="com.arsdigita.cms.contenttypes.ui.GlossaryItemPropertiesStep"
|
||||||
ordering="1"/>
|
ordering="1"/>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,9 @@
|
||||||
|
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
||||||
descriptionBundle="com.arsdigita.cms.ui.CMSResources"
|
descriptionBundle="com.arsdigita.cms.CMSResources"
|
||||||
component="com.arsdigita.cms.contenttypes.ui.HealthCareFacilityPropertiesStep"
|
component="com.arsdigita.cms.contenttypes.ui.HealthCareFacilityPropertiesStep"
|
||||||
ordering="1"/>
|
ordering="1"/>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,9 @@
|
||||||
<ctd:authoring-kit createComponent="com.arsdigita.cms.ui.authoring.PageCreate">
|
<ctd:authoring-kit createComponent="com.arsdigita.cms.ui.authoring.PageCreate">
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
||||||
descriptionBundle="com.arsdigita.cms.ui.CMSResources"
|
descriptionBundle="com.arsdigita.cms.CMSResources"
|
||||||
component="com.arsdigita.cms.contenttypes.ui.ArticlePropertiesStep"/>
|
component="com.arsdigita.cms.contenttypes.ui.ArticlePropertiesStep"/>
|
||||||
|
|
||||||
<ctd:include href="/WEB-INF/content-types/edit-body-text-step.xml"/>
|
<ctd:include href="/WEB-INF/content-types/edit-body-text-step.xml"/>
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<ctd:authoring-kit createComponent="com.arsdigita.cms.ui.authoring.PageCreate">
|
<ctd:authoring-kit createComponent="com.arsdigita.cms.ui.authoring.PageCreate">
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="job.authoring.basic_properties.description"
|
descriptionKey="job.authoring.basic_properties.description"
|
||||||
descriptionBundle="com.arsdigita.cms.contenttypes.JobResources"
|
descriptionBundle="com.arsdigita.cms.contenttypes.JobResources"
|
||||||
component="com.arsdigita.cms.contenttypes.ui.JobPropertiesStep"/>
|
component="com.arsdigita.cms.contenttypes.ui.JobPropertiesStep"/>
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="legal_notice.authoring.basic_properties.description"
|
descriptionKey="legal_notice.authoring.basic_properties.description"
|
||||||
descriptionBundle="com.arsdigita.cms.contenttypes.LegalNoticeResources"
|
descriptionBundle="com.arsdigita.cms.contenttypes.LegalNoticeResources"
|
||||||
component="com.arsdigita.cms.contenttypes.ui.LegalNoticePropertiesStep"/>
|
component="com.arsdigita.cms.contenttypes.ui.LegalNoticePropertiesStep"/>
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,9 @@
|
||||||
|
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
||||||
descriptionBundle="com.arsdigita.cms.ui.CMSResources"
|
descriptionBundle="com.arsdigita.cms.CMSResources"
|
||||||
component="com.arsdigita.cms.contenttypes.ui.MemberPropertiesStep"
|
component="com.arsdigita.cms.contenttypes.ui.MemberPropertiesStep"
|
||||||
ordering="1"/>
|
ordering="1"/>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="minutes.authoring.basic_properties.description"
|
descriptionKey="minutes.authoring.basic_properties.description"
|
||||||
descriptionBundle="com.arsdigita.cms.contenttypes.MinutesResources"
|
descriptionBundle="com.arsdigita.cms.contenttypes.MinutesResources"
|
||||||
component="com.arsdigita.cms.contenttypes.ui.MinutesPropertiesStep"/>
|
component="com.arsdigita.cms.contenttypes.ui.MinutesPropertiesStep"/>
|
||||||
|
|
|
||||||
|
|
@ -13,14 +13,14 @@
|
||||||
|
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
||||||
descriptionBundle="com.arsdigita.cms.ui.CMSResources"
|
descriptionBundle="com.arsdigita.cms.CMSResources"
|
||||||
component="com.arsdigita.cms.contenttypes.ui.mparticle.MultiPartArticleEdit"/>
|
component="com.arsdigita.cms.contenttypes.ui.mparticle.MultiPartArticleEdit"/>
|
||||||
|
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.body_text.title"
|
labelKey="cms.contenttypes.shared.body_text.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="mparticle.authoring.body_text.description"
|
descriptionKey="mparticle.authoring.body_text.description"
|
||||||
descriptionBundle="com.arsdigita.cms.contenttypes.MultiPartArticleResources"
|
descriptionBundle="com.arsdigita.cms.contenttypes.MultiPartArticleResources"
|
||||||
component="com.arsdigita.cms.contenttypes.ui.mparticle.MultiPartArticleViewSections"/>
|
component="com.arsdigita.cms.contenttypes.ui.mparticle.MultiPartArticleViewSections"/>
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,6 @@ import com.arsdigita.cms.contenttypes.MultiPartArticle;
|
||||||
import com.arsdigita.cms.dispatcher.XMLGenerator;
|
import com.arsdigita.cms.dispatcher.XMLGenerator;
|
||||||
import com.arsdigita.dispatcher.DispatcherHelper;
|
import com.arsdigita.dispatcher.DispatcherHelper;
|
||||||
import com.arsdigita.util.UncheckedWrapperException;
|
import com.arsdigita.util.UncheckedWrapperException;
|
||||||
import com.arsdigita.web.Web;
|
|
||||||
import com.arsdigita.xml.Element;
|
import com.arsdigita.xml.Element;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="newsitem.authoring.body_text.description"
|
descriptionKey="newsitem.authoring.body_text.description"
|
||||||
descriptionBundle="com.arsdigita.cms.contenttypes.NewsItemResources"
|
descriptionBundle="com.arsdigita.cms.contenttypes.NewsItemResources"
|
||||||
component="com.arsdigita.cms.contenttypes.ui.NewsItemPropertiesStep"/>
|
component="com.arsdigita.cms.contenttypes.ui.NewsItemPropertiesStep"/>
|
||||||
|
|
|
||||||
|
|
@ -9,9 +9,9 @@
|
||||||
|
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
||||||
descriptionBundle="com.arsdigita.cms.ui.CMSResources"
|
descriptionBundle="com.arsdigita.cms.CMSResources"
|
||||||
component="com.arsdigita.cms.contenttypes.ui.OrganizationPropertiesStep"
|
component="com.arsdigita.cms.contenttypes.ui.OrganizationPropertiesStep"
|
||||||
ordering="1"/>
|
ordering="1"/>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
<ctd:authoring-kit createComponent="com.arsdigita.cms.ui.authoring.PageCreate">
|
<ctd:authoring-kit createComponent="com.arsdigita.cms.ui.authoring.PageCreate">
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="press_release.authoring.basic_properties.description"
|
descriptionKey="press_release.authoring.basic_properties.description"
|
||||||
descriptionBundle="com.arsdigita.cms.contenttypes.PressReleaseResources"
|
descriptionBundle="com.arsdigita.cms.contenttypes.PressReleaseResources"
|
||||||
component="com.arsdigita.cms.contenttypes.ui.PressReleasePropertiesStep"/>
|
component="com.arsdigita.cms.contenttypes.ui.PressReleasePropertiesStep"/>
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<ctd:authoring-kit createComponent="com.arsdigita.cms.ui.authoring.PageCreate">
|
<ctd:authoring-kit createComponent="com.arsdigita.cms.ui.authoring.PageCreate">
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="service.authoring.basic_properties.description"
|
descriptionKey="service.authoring.basic_properties.description"
|
||||||
descriptionBundle="com.arsdigita.cms.contenttypes.ServiceResources"
|
descriptionBundle="com.arsdigita.cms.contenttypes.ServiceResources"
|
||||||
component="com.arsdigita.cms.contenttypes.ui.ServicePropertiesStep"/>
|
component="com.arsdigita.cms.contenttypes.ui.ServicePropertiesStep"/>
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,9 @@
|
||||||
|
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
||||||
descriptionBundle="com.arsdigita.cms.ui.CMSResources"
|
descriptionBundle="com.arsdigita.cms.CMSResources"
|
||||||
component="com.arsdigita.cms.contenttypes.ui.SiteProxyPropertiesStep"/>
|
component="com.arsdigita.cms.contenttypes.ui.SiteProxyPropertiesStep"/>
|
||||||
|
|
||||||
<ctd:include href="/WEB-INF/content-types/assign-categories-step.xml"/>
|
<ctd:include href="/WEB-INF/content-types/assign-categories-step.xml"/>
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,9 @@
|
||||||
|
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
||||||
descriptionBundle="com.arsdigita.cms.ui.CMSResources"
|
descriptionBundle="com.arsdigita.cms.CMSResources"
|
||||||
component="com.arsdigita.cms.contenttypes.ui.SurveyPropertiesStep"
|
component="com.arsdigita.cms.contenttypes.ui.SurveyPropertiesStep"
|
||||||
ordering="1"/>
|
ordering="1"/>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -65,14 +65,6 @@ association {
|
||||||
|
|
||||||
// Additional attributes for the association
|
// Additional attributes for the association
|
||||||
String[0..1] role_name = cms_organizationalunits_person_map.role_name VARCHAR(100);
|
String[0..1] role_name = cms_organizationalunits_person_map.role_name VARCHAR(100);
|
||||||
|
String[0..1] status = cms_organizationalunits_person_map.status VARCHAR(100);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//object type GenericOrganizationalUnitPersonAssociation extends ACSObject {
|
|
||||||
//
|
|
||||||
// GenericPerson[0..1] person = join cms_organizationalunit_person_assoc.person_id
|
|
||||||
// to cms_persons.person_id;
|
|
||||||
// String[0..1] roleName = cms_organizationalunit_person_assoc.role_name VARCHAR(100);
|
|
||||||
//
|
|
||||||
// reference key (cms_organizationalunit_person_assoc.assoc_id);
|
|
||||||
//}
|
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,9 @@
|
||||||
|
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.CMSResources"
|
labelBundle="com.arsdigita.cms.ContenttypesResources"
|
||||||
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
||||||
descriptionBundle="com.arsdigita.cms.CMSResources"
|
descriptionBundle="com.arsdigita.cms.ContenttypesResources"
|
||||||
component="com.arsdigita.cms.contenttypes.ui.GenericPersonPropertiesStep"
|
component="com.arsdigita.cms.contenttypes.ui.GenericPersonPropertiesStep"
|
||||||
ordering="1"/>
|
ordering="1"/>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,3 +4,4 @@ cms.ui.lifecycles=Lifecycles
|
||||||
cms.ui.unknownRole=
|
cms.ui.unknownRole=
|
||||||
cms.ui.unknownStatus=Unknown status
|
cms.ui.unknownStatus=Unknown status
|
||||||
cms.contenttypes.ui.genericorgaunit.persons.status=Status
|
cms.contenttypes.ui.genericorgaunit.persons.status=Status
|
||||||
|
cms.contenttypes.shared.basic_properties.title=
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,16 @@
|
||||||
# Package com.arsdigita.cms
|
# Package com.arsdigita.cms
|
||||||
# =========================
|
# =========================
|
||||||
cms.attributeset_is_already_locked=L'ensemble attribut est déjà bloqué
|
cms.attributeset_is_already_locked=L'ensemble attribut est d\u00e9j\u00e0 bloqu\u00e9
|
||||||
cms.attributeset_is_locked=L'ensemble attribut est bloqué
|
cms.attributeset_is_locked=L'ensemble attribut est bloqu\u00e9
|
||||||
cms.cannot_create_xml_document=Erreur : impossible de créer un document XML
|
cms.cannot_create_xml_document=Erreur : impossible de cr\u00e9er un document XML
|
||||||
cms.cant_promote_folders=Impossible de remonter le répertoire
|
cms.cant_promote_folders=Impossible de remonter le r\u00e9pertoire
|
||||||
cms.classnotfoundexception=Erreur : classe introuvable
|
cms.classnotfoundexception=Erreur : classe introuvable
|
||||||
cms.illegalaccessexception=Erreur : accès interdit
|
cms.illegalaccessexception=Erreur : acc\u00e8s interdit
|
||||||
cms.image.erroneous_jpeg_marker_length=Extension JPEG erronnée
|
cms.image.erroneous_jpeg_marker_length=Extension JPEG erronn\u00e9e
|
||||||
cms.image.expected_soi_marker_first=Nécéssite le marqueur SOI en premier
|
cms.image.expected_soi_marker_first=N\u00e9c\u00e9ssite le marqueur SOI en premier
|
||||||
cms.image.not_a_jpeg_file=Ceci n'est pas un fichier JPEG
|
cms.image.not_a_jpeg_file=Ceci n'est pas un fichier JPEG
|
||||||
cms.instantiationexception=Erreur : instanciation impossible
|
cms.instantiationexception=Erreur : instanciation impossible
|
||||||
cms.nosuchmethodexception=Erreur : pas de méthode trouvée
|
cms.nosuchmethodexception=Erreur : pas de m\u00e9thode trouv\u00e9e
|
||||||
cms.templates=Gabarits
|
cms.templates=Gabarits
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -18,53 +18,53 @@ cms.templates=Gabarits
|
||||||
# ======================================
|
# ======================================
|
||||||
cms.contenttypes.coudlnt_retrieve_text=Impossible d'afficher le texte
|
cms.contenttypes.coudlnt_retrieve_text=Impossible d'afficher le texte
|
||||||
cms.contenttypes.installer.article_section=Repertoire article
|
cms.contenttypes.installer.article_section=Repertoire article
|
||||||
cms.contenttypes.installer.article_section_for_a_multipart_article=Répertoire article pour un article à plusieurs parties
|
cms.contenttypes.installer.article_section_for_a_multipart_article=R\u00e9pertoire article pour un article \u00e0 plusieurs parties
|
||||||
cms.contenttypes.job_type_not_registered=Type de poste non enregistré
|
cms.contenttypes.job_type_not_registered=Type de poste non enregistr\u00e9
|
||||||
cms.contenttypes.legalnotice_type_not_registered=Type de mentions légales non enregistrées
|
cms.contenttypes.legalnotice_type_not_registered=Type de mentions l\u00e9gales non enregistr\u00e9es
|
||||||
cms.contenttypes.minutes_type_not_registered=Type de réunion non enregistré
|
cms.contenttypes.minutes_type_not_registered=Type de r\u00e9union non enregistr\u00e9
|
||||||
cms.contenttypes.newsitem_type_not_registered=Type d'élement d'information non enregistré
|
cms.contenttypes.newsitem_type_not_registered=Type d'\u00e9lement d'information non enregistr\u00e9
|
||||||
cms.contenttypes.no_content_section=Pas de répertoire de contenu
|
cms.contenttypes.no_content_section=Pas de r\u00e9pertoire de contenu
|
||||||
cms.contenttypes.no_section=Pas de repertoire
|
cms.contenttypes.no_section=Pas de repertoire
|
||||||
cms.contenttypes.pressrelease_type_not_registered=Type de PresserRelâcher non enregistré
|
cms.contenttypes.pressrelease_type_not_registered=Type de PresserRel\u00e2cher non enregistr\u00e9
|
||||||
cms.contenttypes.service_type_not_registered=Type de service non enregistré
|
cms.contenttypes.service_type_not_registered=Type de service non enregistr\u00e9
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Package com.arsdigita.cms.contenttypes.ui
|
# Package com.arsdigita.cms.contenttypes.ui
|
||||||
# =========================================
|
# =========================================
|
||||||
cms.contenttypes.ui.action_item=Action de l'élément
|
cms.contenttypes.ui.action_item=Action de l'\u00e9l\u00e9ment
|
||||||
cms.contenttypes.ui.address=Addresse
|
cms.contenttypes.ui.address=Addresse
|
||||||
cms.contenttypes.ui.agenda_date_and_time=Date et heure de l'agenda
|
cms.contenttypes.ui.agenda_date_and_time=Date et heure de l'agenda
|
||||||
cms.contenttypes.ui.attendees=Participants
|
cms.contenttypes.ui.attendees=Participants
|
||||||
cms.contenttypes.ui.bodyoverview=Corps / Vue d'ensemble
|
cms.contenttypes.ui.bodyoverview=Corps / Vue d'ensemble
|
||||||
cms.contenttypes.ui.closing_date=Date de clôture
|
cms.contenttypes.ui.closing_date=Date de cl\u00f4ture
|
||||||
cms.contenttypes.ui.contact_details=Contact
|
cms.contenttypes.ui.contact_details=Contact
|
||||||
cms.contenttypes.ui.contact_info=Contact
|
cms.contenttypes.ui.contact_info=Contact
|
||||||
cms.contenttypes.ui.contacts=Contacts
|
cms.contenttypes.ui.contacts=Contacts
|
||||||
cms.contenttypes.ui.cost=Coût
|
cms.contenttypes.ui.cost=Co\u00fbt
|
||||||
cms.contenttypes.ui.date=Date
|
cms.contenttypes.ui.date=Date
|
||||||
cms.contenttypes.ui.department=Departement
|
cms.contenttypes.ui.department=Departement
|
||||||
cms.contenttypes.ui.description=Description
|
cms.contenttypes.ui.description=Description
|
||||||
cms.contenttypes.ui.description_of_minutes=Description de la réunion
|
cms.contenttypes.ui.description_of_minutes=Description de la r\u00e9union
|
||||||
cms.contenttypes.ui.government_uid=Identifiant département
|
cms.contenttypes.ui.government_uid=Identifiant d\u00e9partement
|
||||||
cms.contenttypes.ui.grade=Niveau
|
cms.contenttypes.ui.grade=Niveau
|
||||||
cms.contenttypes.ui.homepage=Accueil
|
cms.contenttypes.ui.homepage=Accueil
|
||||||
cms.contenttypes.ui.job_description=Description du poste
|
cms.contenttypes.ui.job_description=Description du poste
|
||||||
cms.contenttypes.ui.lead=Fil conducteur
|
cms.contenttypes.ui.lead=Fil conducteur
|
||||||
cms.contenttypes.ui.lead_line=Ligne de tête
|
cms.contenttypes.ui.lead_line=Ligne de t\u00eate
|
||||||
cms.contenttypes.ui.link_to_map=Lien vers la carte
|
cms.contenttypes.ui.link_to_map=Lien vers la carte
|
||||||
cms.contenttypes.ui.name=Nom
|
cms.contenttypes.ui.name=Nom
|
||||||
cms.contenttypes.ui.opening_times=Heures d'ouverture
|
cms.contenttypes.ui.opening_times=Heures d'ouverture
|
||||||
cms.contenttypes.ui.person_specification=Détails concernant la personne
|
cms.contenttypes.ui.person_specification=D\u00e9tails concernant la personne
|
||||||
cms.contenttypes.ui.ref_code=Code de référence
|
cms.contenttypes.ui.ref_code=Code de r\u00e9f\u00e9rence
|
||||||
cms.contenttypes.ui.ref_number=Numéro de référence
|
cms.contenttypes.ui.ref_number=Num\u00e9ro de r\u00e9f\u00e9rence
|
||||||
cms.contenttypes.ui.reference=Réference
|
cms.contenttypes.ui.reference=R\u00e9ference
|
||||||
cms.contenttypes.ui.reference_code=Code de réference
|
cms.contenttypes.ui.reference_code=Code de r\u00e9ference
|
||||||
cms.contenttypes.ui.salary=Salaire
|
cms.contenttypes.ui.salary=Salaire
|
||||||
cms.contenttypes.ui.services_provided=Services proposés
|
cms.contenttypes.ui.services_provided=Services propos\u00e9s
|
||||||
cms.contenttypes.ui.summary=Résumé
|
cms.contenttypes.ui.summary=R\u00e9sum\u00e9
|
||||||
cms.contenttypes.ui.summary=Résumé
|
cms.contenttypes.ui.summary=R\u00e9sum\u00e9
|
||||||
cms.contenttypes.ui.there_are_no_events=Il n'y a aucun évenement
|
cms.contenttypes.ui.there_are_no_events=Il n'y a aucun \u00e9venement
|
||||||
cms.contenttypes.ui.title=Titre
|
cms.contenttypes.ui.title=Titre
|
||||||
cms.contenttypes.ui.view_image=voir l'image
|
cms.contenttypes.ui.view_image=voir l'image
|
||||||
|
|
||||||
|
|
@ -73,14 +73,14 @@ cms.contenttypes.ui.view_image=voir l'image
|
||||||
cms.dispatcher.cannot_find_domain_object=Impossible de trouver le domaine objet
|
cms.dispatcher.cannot_find_domain_object=Impossible de trouver le domaine objet
|
||||||
cms.dispatcher.could_not_find_imageasset=Impossible de trouver ImageAsset
|
cms.dispatcher.could_not_find_imageasset=Impossible de trouver ImageAsset
|
||||||
cms.dispatcher.failed_to_retrieve_imageasset=Echec pour afficher ImageAsset
|
cms.dispatcher.failed_to_retrieve_imageasset=Echec pour afficher ImageAsset
|
||||||
cms.dispatcher.no_permission_to_access_resource=Vous n'avez pas la permission d'accèder à cette ressource
|
cms.dispatcher.no_permission_to_access_resource=Vous n'avez pas la permission d'acc\u00e8der \u00e0 cette ressource
|
||||||
cms.dispatcher.not_implemented=Non implémenté
|
cms.dispatcher.not_implemented=Non impl\u00e9ment\u00e9
|
||||||
cms.dispatcher.unknown_context=Contexte inconnu
|
cms.dispatcher.unknown_context=Contexte inconnu
|
||||||
|
|
||||||
|
|
||||||
# Package com.arsdigita.cms.formbuilder
|
# Package com.arsdigita.cms.formbuilder
|
||||||
# =====================================
|
# =====================================
|
||||||
cms.formbuilder.cannot_create_acsobject=Impossible de créer l'ACSObject
|
cms.formbuilder.cannot_create_acsobject=Impossible de cr\u00e9er l'ACSObject
|
||||||
cms.formbuilder.cannot_instantiate_object=Impossible d'instancier l'objet
|
cms.formbuilder.cannot_instantiate_object=Impossible d'instancier l'objet
|
||||||
cms.formbuilder.no_such_form=Pas de formulaire
|
cms.formbuilder.no_such_form=Pas de formulaire
|
||||||
cms.formbuilder.roll_me_back=TRANSLATE THIS: Roll me back (cms.formbuilder.roll_me_back)
|
cms.formbuilder.roll_me_back=TRANSLATE THIS: Roll me back (cms.formbuilder.roll_me_back)
|
||||||
|
|
@ -96,15 +96,15 @@ cms.installer.cannot_find_cms_package_type=Impossible de trouver le type package
|
||||||
cms.installer.cannot_find_content_type=Impossible de trouver le type de contenu
|
cms.installer.cannot_find_content_type=Impossible de trouver le type de contenu
|
||||||
cms.installer.cannot_find_file=Impossible de trouver le fichier
|
cms.installer.cannot_find_file=Impossible de trouver le fichier
|
||||||
cms.installer.cannot_find_group_for_email=Impossible de trouver le groupe pour l'email
|
cms.installer.cannot_find_group_for_email=Impossible de trouver le groupe pour l'email
|
||||||
cms.installer.cannot_read_line_of_data=Impossible de lire la ligne de données
|
cms.installer.cannot_read_line_of_data=Impossible de lire la ligne de donn\u00e9es
|
||||||
cms.installer.cannot_set_template_text=Impossible de mettre le texte du gabarit
|
cms.installer.cannot_set_template_text=Impossible de mettre le texte du gabarit
|
||||||
cms.installer.could_not_load_section=Could not load ContentSection named '{0}'
|
cms.installer.could_not_load_section=Could not load ContentSection named '{0}'
|
||||||
cms.installer.deploy=Déploier
|
cms.installer.deploy=D\u00e9ploier
|
||||||
cms.installer.failed_to_update_the_default_content_section=Echec dans la mise à jour du repertoire de contenu par défaut
|
cms.installer.failed_to_update_the_default_content_section=Echec dans la mise \u00e0 jour du repertoire de contenu par d\u00e9faut
|
||||||
cms.installer.formbuilder.form=Formulaire
|
cms.installer.formbuilder.form=Formulaire
|
||||||
cms.installer.formbuilder.form_section=Répertoire Formulaire
|
cms.installer.formbuilder.form_section=R\u00e9pertoire Formulaire
|
||||||
cms.installer.production_workflow=Déroulement des opérations de Production
|
cms.installer.production_workflow=D\u00e9roulement des op\u00e9rations de Production
|
||||||
cms.installer.root_folder=Répertoire racine
|
cms.installer.root_folder=R\u00e9pertoire racine
|
||||||
cms.installer.root_site_node_missing=Lien vers la racine du site manquant
|
cms.installer.root_site_node_missing=Lien vers la racine du site manquant
|
||||||
cms.installer.simple_publication=Publication simple
|
cms.installer.simple_publication=Publication simple
|
||||||
cms.installer.template=Gabarit
|
cms.installer.template=Gabarit
|
||||||
|
|
@ -113,160 +113,160 @@ cms.installer.template=Gabarit
|
||||||
# Package com.arsdigita.cms.lifecycle
|
# Package com.arsdigita.cms.lifecycle
|
||||||
# ===================================
|
# ===================================
|
||||||
cms.lifecycle.could_not_fetch_lifecycle=Impossible de trouver le cycle de vie
|
cms.lifecycle.could_not_fetch_lifecycle=Impossible de trouver le cycle de vie
|
||||||
cms.lifecycle.could_not_fetch_phase=Impossible de trouver l'étape
|
cms.lifecycle.could_not_fetch_phase=Impossible de trouver l'\u00e9tape
|
||||||
|
|
||||||
|
|
||||||
# Package com.arsdigita.cms.publishToFile
|
# Package com.arsdigita.cms.publishToFile
|
||||||
# =======================================
|
# =======================================
|
||||||
cms.publishToFile.cannot_find_file=Impossible de trouver le fichier
|
cms.publishToFile.cannot_find_file=Impossible de trouver le fichier
|
||||||
cms.publishToFile.cannot_find_item_class=Impossible de trouver la classe de l'élément
|
cms.publishToFile.cannot_find_item_class=Impossible de trouver la classe de l'\u00e9l\u00e9ment
|
||||||
cms.publishToFile.cannot_find_server=Impossible de trouver le serveur
|
cms.publishToFile.cannot_find_server=Impossible de trouver le serveur
|
||||||
cms.publishToFile.cannot_get_sequence_value=Impossible de trouver la valeur de la séquence
|
cms.publishToFile.cannot_get_sequence_value=Impossible de trouver la valeur de la s\u00e9quence
|
||||||
cms.publishToFile.cannot_read_template_text=Impossible de lire le texte du gabarit
|
cms.publishToFile.cannot_read_template_text=Impossible de lire le texte du gabarit
|
||||||
cms.publishToFile.could_not_get_object_for_oid=Impossible de trouver l'objet pour cet identifiant
|
cms.publishToFile.could_not_get_object_for_oid=Impossible de trouver l'objet pour cet identifiant
|
||||||
cms.publishToFile.error_executing=Erreur d'exécution '{0}'
|
cms.publishToFile.error_executing=Erreur d'ex\u00e9cution '{0}'
|
||||||
cms.publishToFile.exit_value_was=La valeur de sortie était
|
cms.publishToFile.exit_value_was=La valeur de sortie \u00e9tait
|
||||||
cms.publishToFile.interrupted_when_doing=Interrompu pendant '{0}'
|
cms.publishToFile.interrupted_when_doing=Interrompu pendant '{0}'
|
||||||
cms.publishToFile.invalid_brokenlinkaction=Lien cassé invalide
|
cms.publishToFile.invalid_brokenlinkaction=Lien cass\u00e9 invalide
|
||||||
cms.publishToFile.invalid_reference_target_type=Type de cible de référence invalide
|
cms.publishToFile.invalid_reference_target_type=Type de cible de r\u00e9f\u00e9rence invalide
|
||||||
cms.publishToFile.malformed_url=URL incorrecte
|
cms.publishToFile.malformed_url=URL incorrecte
|
||||||
cms.publishToFile.not_found_in_servers_list=Introuvable dans la liste des serveurs
|
cms.publishToFile.not_found_in_servers_list=Introuvable dans la liste des serveurs
|
||||||
cms.publishToFile.publish_to_file_listener_could_not_be_created=La publication du fichier d'écoute ne peut pas être créée
|
cms.publishToFile.publish_to_file_listener_could_not_be_created=La publication du fichier d'\u00e9coute ne peut pas \u00eatre cr\u00e9\u00e9e
|
||||||
cms.publishToFile.publish_to_file_setlocalrequestpassword_could_not_be_created=La publication du fichier pour la demande de mot de passe ne peut pas être créée
|
cms.publishToFile.publish_to_file_setlocalrequestpassword_could_not_be_created=La publication du fichier pour la demande de mot de passe ne peut pas \u00eatre cr\u00e9\u00e9e
|
||||||
cms.publishToFile.publishsource_sourcebase_must_end_in_=L'édition source doit se terminer par '/'
|
cms.publishToFile.publishsource_sourcebase_must_end_in_=L'\u00e9dition source doit se terminer par '/'
|
||||||
cms.publishToFile.server=Server
|
cms.publishToFile.server=Server
|
||||||
cms.publishToFile.unable_to_find_closing_for_tag=Impossible de trouver '>' pour la fermeture du tag
|
cms.publishToFile.unable_to_find_closing_for_tag=Impossible de trouver '>' pour la fermeture du tag
|
||||||
cms.publishToFile.unable_to_get_contentitem=Impossible de trouve le contenu de l'élément
|
cms.publishToFile.unable_to_get_contentitem=Impossible de trouve le contenu de l'\u00e9l\u00e9ment
|
||||||
|
|
||||||
|
|
||||||
# Package com.arsdigita.cms.ui
|
# Package com.arsdigita.cms.ui
|
||||||
# ============================
|
# ============================
|
||||||
cms.ui.actions=actions
|
cms.ui.actions=actions
|
||||||
cms.ui.all_items=tous les éléments
|
cms.ui.all_items=tous les \u00e9l\u00e9ments
|
||||||
cms.ui.assigned_categories=Rubriques assignées
|
cms.ui.assigned_categories=Rubriques assign\u00e9es
|
||||||
cms.ui.available_categories=Rubriques disponibles
|
cms.ui.available_categories=Rubriques disponibles
|
||||||
cms.ui.browse=parcourir
|
cms.ui.browse=parcourir
|
||||||
cms.ui.browse_items_by_category=Voir les élements par rubrique
|
cms.ui.browse_items_by_category=Voir les \u00e9lements par rubrique
|
||||||
cms.ui.cancel=annuler
|
cms.ui.cancel=annuler
|
||||||
cms.ui.cancel_hit=Abandonner
|
cms.ui.cancel_hit=Abandonner
|
||||||
cms.ui.cancelled=Annulé
|
cms.ui.cancelled=Annul\u00e9
|
||||||
cms.ui.categories=catégories
|
cms.ui.categories=cat\u00e9gories
|
||||||
cms.ui.choose_target_folder=choisir le répertoire de destination
|
cms.ui.choose_target_folder=choisir le r\u00e9pertoire de destination
|
||||||
cms.ui.content_center=Centre de contenu
|
cms.ui.content_center=Centre de contenu
|
||||||
cms.ui.content_section=Repertoire de contenu
|
cms.ui.content_section=Repertoire de contenu
|
||||||
cms.ui.content_section_configuration=<h2>Configuration du répertoire de contenu</h2>
|
cms.ui.content_section_configuration=<h2>Configuration du r\u00e9pertoire de contenu</h2>
|
||||||
cms.ui.content_types=types de contenu
|
cms.ui.content_types=types de contenu
|
||||||
cms.ui.contents_for=contenus pour
|
cms.ui.contents_for=contenus pour
|
||||||
cms.ui.create=créer
|
cms.ui.create=cr\u00e9er
|
||||||
cms.ui.default_locale=TRANSLATE THIS: Default Locale: (cms.ui.default_locale)
|
cms.ui.default_locale=TRANSLATE THIS: Default Locale: (cms.ui.default_locale)
|
||||||
cms.ui.edit=modifier
|
cms.ui.edit=modifier
|
||||||
cms.ui.edit_folder=renomer le répertoire
|
cms.ui.edit_folder=renomer le r\u00e9pertoire
|
||||||
cms.ui.enter_a_keyword=Entrer un mot clé
|
cms.ui.enter_a_keyword=Entrer un mot cl\u00e9
|
||||||
cms.ui.enter_first_name_last_name_andor_email_address=Entrer le prénom, le nom et/ou le nom du groupe
|
cms.ui.enter_first_name_last_name_andor_email_address=Entrer le pr\u00e9nom, le nom et/ou le nom du groupe
|
||||||
cms.ui.enter_first_name_last_name_email_address_andor_group_name=Entrer le prénom, le nom, l'email et/ou le nom du groupe
|
cms.ui.enter_first_name_last_name_email_address_andor_group_name=Entrer le pr\u00e9nom, le nom, l'email et/ou le nom du groupe
|
||||||
cms.ui.finish=Finir
|
cms.ui.finish=Finir
|
||||||
cms.ui.folder_browser=Répertoire de navigation
|
cms.ui.folder_browser=R\u00e9pertoire de navigation
|
||||||
cms.ui.for=pour
|
cms.ui.for=pour
|
||||||
cms.ui.help=Aide
|
cms.ui.help=Aide
|
||||||
cms.ui.help=Aide
|
cms.ui.help=Aide
|
||||||
cms.ui.history.history=Historique
|
cms.ui.history.history=Historique
|
||||||
cms.ui.history.no_history=Pas d'historique
|
cms.ui.history.no_history=Pas d'historique
|
||||||
cms.ui.history.preview=Prévisualiser
|
cms.ui.history.preview=Pr\u00e9visualiser
|
||||||
cms.ui.history.rollback=Baisse de prix
|
cms.ui.history.rollback=Baisse de prix
|
||||||
cms.ui.insufficient_privileges=Droits d'accès insufisant
|
cms.ui.insufficient_privileges=Droits d'acc\u00e8s insufisant
|
||||||
|
|
||||||
cms.ui.invalid_item_id=Identifiant d'élément : {0} invalide
|
cms.ui.invalid_item_id=Identifiant d'\u00e9l\u00e9ment : {0} invalide
|
||||||
|
|
||||||
cms.ui.label_prompt=libellé:
|
cms.ui.label_prompt=libell\u00e9:
|
||||||
|
|
||||||
cms.ui.lifecycles=cycles de vie
|
cms.ui.lifecycles=cycles de vie
|
||||||
cms.ui.locales=TRANSLATE THIS: Locales: (cms.ui.locales)
|
cms.ui.locales=TRANSLATE THIS: Locales: (cms.ui.locales)
|
||||||
cms.ui.logout_failed=La deconnexon a échoué
|
cms.ui.logout_failed=La deconnexon a \u00e9chou\u00e9
|
||||||
cms.ui.matches=Resultats
|
cms.ui.matches=Resultats
|
||||||
cms.ui.matches=Résultats
|
cms.ui.matches=R\u00e9sultats
|
||||||
cms.ui.max_launch=date de lancement maximum
|
cms.ui.max_launch=date de lancement maximum
|
||||||
cms.ui.min_launch=date de lancement minimum
|
cms.ui.min_launch=date de lancement minimum
|
||||||
cms.ui.my_workspace=Mon espace de travail
|
cms.ui.my_workspace=Mon espace de travail
|
||||||
cms.ui.my_workspace=Mon espace de travail
|
cms.ui.my_workspace=Mon espace de travail
|
||||||
cms.ui.name=Nom
|
cms.ui.name=Nom
|
||||||
cms.ui.name_prompt=nom:
|
cms.ui.name_prompt=nom:
|
||||||
cms.ui.new_folder=nouveau répertoire
|
cms.ui.new_folder=nouveau r\u00e9pertoire
|
||||||
cms.ui.new_item=nouvel élément
|
cms.ui.new_item=nouvel \u00e9l\u00e9ment
|
||||||
cms.ui.no_content_section_for_page=Pas de répertoire de contenu pour cette page
|
cms.ui.no_content_section_for_page=Pas de r\u00e9pertoire de contenu pour cette page
|
||||||
cms.ui.no_items_matched_the_search=Pas d'élément trouvé dans la recherche
|
cms.ui.no_items_matched_the_search=Pas d'\u00e9l\u00e9ment trouv\u00e9 dans la recherche
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Package com.arsdigita.cms.ui.authoring
|
# Package com.arsdigita.cms.ui.authoring
|
||||||
# ======================================
|
# ======================================
|
||||||
cms.ui.authoring.an_item_with_this_name_already_exists=Un élément de ce nom existe déjà
|
cms.ui.authoring.an_item_with_this_name_already_exists=Un \u00e9l\u00e9ment de ce nom existe d\u00e9j\u00e0
|
||||||
cms.ui.authoring.bad_getblob_datatype=TRANSLATE THIS: Bad getBlob datatype (cms.ui.authoring.bad_getblob_datatype)
|
cms.ui.authoring.bad_getblob_datatype=TRANSLATE THIS: Bad getBlob datatype (cms.ui.authoring.bad_getblob_datatype)
|
||||||
cms.ui.authoring.bad_getclob_datatype=TRANSLATE THIS: Bad getClob datatype (cms.ui.authoring.bad_getclob_datatype)
|
cms.ui.authoring.bad_getclob_datatype=TRANSLATE THIS: Bad getClob datatype (cms.ui.authoring.bad_getclob_datatype)
|
||||||
cms.ui.authoring.body=Corsp de la page
|
cms.ui.authoring.body=Corsp de la page
|
||||||
cms.ui.authoring.caption=Légende
|
cms.ui.authoring.caption=L\u00e9gende
|
||||||
cms.ui.authoring.content_type=Type de contenu
|
cms.ui.authoring.content_type=Type de contenu
|
||||||
cms.ui.authoring.couldnt_create_contentpage=Impossible de créer une page de contenu
|
cms.ui.authoring.couldnt_create_contentpage=Impossible de cr\u00e9er une page de contenu
|
||||||
cms.ui.authoring.edit_body_text=Modifier le corps de la page
|
cms.ui.authoring.edit_body_text=Modifier le corps de la page
|
||||||
cms.ui.authoring.edit_caption=Modifier la légende
|
cms.ui.authoring.edit_caption=Modifier la l\u00e9gende
|
||||||
cms.ui.authoring.file_action=Action du fichier
|
cms.ui.authoring.file_action=Action du fichier
|
||||||
cms.ui.authoring.file_action=Action du fichier
|
cms.ui.authoring.file_action=Action du fichier
|
||||||
cms.ui.authoring.image_action=Action de l'image
|
cms.ui.authoring.image_action=Action de l'image
|
||||||
cms.ui.authoring.image_action=Action de l'image
|
cms.ui.authoring.image_action=Action de l'image
|
||||||
cms.ui.authoring.invalid_create_component=TRANSLATE THIS: Creation component for parent content type is invalid. (cms.ui.authoring.invalid_create_component)
|
cms.ui.authoring.invalid_create_component=TRANSLATE THIS: Creation component for parent content type is invalid. (cms.ui.authoring.invalid_create_component)
|
||||||
cms.ui.authoring.missing_content_type=Type de contenu manquant
|
cms.ui.authoring.missing_content_type=Type de contenu manquant
|
||||||
cms.ui.authoring.missing_item_id=Identifiant de l'élément manquant
|
cms.ui.authoring.missing_item_id=Identifiant de l'\u00e9l\u00e9ment manquant
|
||||||
cms.ui.authoring.name=Nom
|
cms.ui.authoring.name=Nom
|
||||||
cms.ui.authoring.name_url=Nom (URL)
|
cms.ui.authoring.name_url=Nom (URL)
|
||||||
cms.ui.authoring.no_asset=TRANSLATE THIS: No asset (cms.ui.authoring.no_asset)
|
cms.ui.authoring.no_asset=TRANSLATE THIS: No asset (cms.ui.authoring.no_asset)
|
||||||
cms.ui.authoring.no_content_types_were_found=Pas de type de contenu trouvé
|
cms.ui.authoring.no_content_types_were_found=Pas de type de contenu trouv\u00e9
|
||||||
cms.ui.authoring.no_current_wizard=TRANSLATE THIS: No current wizard (cms.ui.authoring.no_current_wizard)
|
cms.ui.authoring.no_current_wizard=TRANSLATE THIS: No current wizard (cms.ui.authoring.no_current_wizard)
|
||||||
cms.ui.authoring.not_implemented=Non Implémenté
|
cms.ui.authoring.not_implemented=Non Impl\u00e9ment\u00e9
|
||||||
cms.ui.authoring.page_launch_date=Date de lancement
|
cms.ui.authoring.page_launch_date=Date de lancement
|
||||||
cms.ui.authoring.page_title=Titre de la page
|
cms.ui.authoring.page_title=Titre de la page
|
||||||
cms.ui.authoring.remove_image=Supprimer l'image
|
cms.ui.authoring.remove_image=Supprimer l'image
|
||||||
cms.ui.authoring.select_an_existing_image=Sélectionner une image existante
|
cms.ui.authoring.select_an_existing_image=S\u00e9lectionner une image existante
|
||||||
cms.ui.authoring.sql_error_in_getting_byte_content=Erreur SQL en récupérant le contenu
|
cms.ui.authoring.sql_error_in_getting_byte_content=Erreur SQL en r\u00e9cup\u00e9rant le contenu
|
||||||
cms.ui.authoring.sqle=TRANSLATE THIS: SQLE (cms.ui.authoring.sqle)
|
cms.ui.authoring.sqle=TRANSLATE THIS: SQLE (cms.ui.authoring.sqle)
|
||||||
cms.ui.authoring.submission_cancelled=Soumission annulée
|
cms.ui.authoring.submission_cancelled=Soumission annul\u00e9e
|
||||||
cms.ui.authoring.text_type=Type de texte
|
cms.ui.authoring.text_type=Type de texte
|
||||||
cms.ui.authoring.this_article_does_not_have_an_image=Cet article n'a pas d'illustation.
|
cms.ui.authoring.this_article_does_not_have_an_image=Cet article n'a pas d'illustation.
|
||||||
cms.ui.authoring.title=Titre
|
cms.ui.authoring.title=Titre
|
||||||
cms.ui.authoring.unable_to_load_file=Impossible de charger le fichier
|
cms.ui.authoring.unable_to_load_file=Impossible de charger le fichier
|
||||||
cms.ui.authoring.upload_a_new_image=Télécharger une nouvelle image
|
cms.ui.authoring.upload_a_new_image=T\u00e9l\u00e9charger une nouvelle image
|
||||||
cms.ui.authoring.upload_image=Télécharger l'image
|
cms.ui.authoring.upload_image=T\u00e9l\u00e9charger l'image
|
||||||
cms.ui.authoring.workflow=TRANSLATE THIS: Select a Workflow (cms.ui.authoring.workflow)
|
cms.ui.authoring.workflow=TRANSLATE THIS: Select a Workflow (cms.ui.authoring.workflow)
|
||||||
|
|
||||||
|
|
||||||
# Package com.arsdigita.cms.ui.authoringkit
|
# Package com.arsdigita.cms.ui.authoringkit
|
||||||
# =========================================
|
# =========================================
|
||||||
cms.ui.authoringkit.authoring_kit_for=Kit d'écriture pour
|
cms.ui.authoringkit.authoring_kit_for=Kit d'\u00e9criture pour
|
||||||
cms.ui.authoringkit.component=Composant
|
cms.ui.authoringkit.component=Composant
|
||||||
cms.ui.authoringkit.content_type_id=Type de contenu ID#
|
cms.ui.authoringkit.content_type_id=Type de contenu ID#
|
||||||
cms.ui.authoringkit.create_component=Créer le composant
|
cms.ui.authoringkit.create_component=Cr\u00e9er le composant
|
||||||
cms.ui.authoringkit.createcomponent=Créer le composant
|
cms.ui.authoringkit.createcomponent=Cr\u00e9er le composant
|
||||||
cms.ui.authoringkit.current_row_does_not_exists=La ligne en cours n'exsite pas
|
cms.ui.authoringkit.current_row_does_not_exists=La ligne en cours n'exsite pas
|
||||||
cms.ui.authoringkit.description=Description
|
cms.ui.authoringkit.description=Description
|
||||||
cms.ui.authoringkit.do_you_really_want_to_delete_this_authoring_step=Etes-vous sur de vouloir effacer cette étape d'écriture ?
|
cms.ui.authoringkit.do_you_really_want_to_delete_this_authoring_step=Etes-vous sur de vouloir effacer cette \u00e9tape d'\u00e9criture ?
|
||||||
cms.ui.authoringkit.label=Etiquette
|
cms.ui.authoringkit.label=Etiquette
|
||||||
cms.ui.authoringkit.ordering=Commande
|
cms.ui.authoringkit.ordering=Commande
|
||||||
cms.ui.authoringkit.submission_cancelled=Soumission annulée
|
cms.ui.authoringkit.submission_cancelled=Soumission annul\u00e9e
|
||||||
|
|
||||||
|
|
||||||
# Package com.arsdigita.cms.ui.category
|
# Package com.arsdigita.cms.ui.category
|
||||||
# =====================================
|
# =====================================
|
||||||
cms.ui.category.add_a_subcategory=Ajouter une sous-rubrique
|
cms.ui.category.add_a_subcategory=Ajouter une sous-rubrique
|
||||||
cms.ui.category.add_index_item=Mettre la page d'accueil
|
cms.ui.category.add_index_item=Mettre la page d'accueil
|
||||||
cms.ui.category.assigned_purposes=Objectifs assignés
|
cms.ui.category.assigned_purposes=Objectifs assign\u00e9s
|
||||||
cms.ui.category.available_purposes=Objectifs disponibles
|
cms.ui.category.available_purposes=Objectifs disponibles
|
||||||
cms.ui.category.back= (retour)
|
cms.ui.category.back= (retour)
|
||||||
cms.ui.category.batch_categorized_objects=Groupe d'ordre des objets de cette rubrique
|
cms.ui.category.batch_categorized_objects=Groupe d'ordre des objets de cette rubrique
|
||||||
cms.ui.category.batch_order_objects_order=Priorité
|
cms.ui.category.batch_order_objects_order=Priorit\u00e9
|
||||||
cms.ui.category.batch_order_objects_title=Titre
|
cms.ui.category.batch_order_objects_title=Titre
|
||||||
cms.ui.category.categorized_objects=Ordonner les objets de cette rubrique
|
cms.ui.category.categorized_objects=Ordonner les objets de cette rubrique
|
||||||
cms.ui.category.category_information=Rubrique d'information
|
cms.ui.category.category_information=Rubrique d'information
|
||||||
cms.ui.category.category_purposes=Objectifs de la rubrique
|
cms.ui.category.category_purposes=Objectifs de la rubrique
|
||||||
cms.ui.category.change_index_item=Changer la page d'accueil
|
cms.ui.category.change_index_item=Changer la page d'accueil
|
||||||
cms.ui.category.content_item=Elément de contenu
|
cms.ui.category.content_item=El\u00e9ment de contenu
|
||||||
cms.ui.category.current_category=Rubrique en cours
|
cms.ui.category.current_category=Rubrique en cours
|
||||||
cms.ui.category.delete_category=Effacer la rubrique
|
cms.ui.category.delete_category=Effacer la rubrique
|
||||||
cms.ui.category.descriptionn=Description:\n
|
cms.ui.category.descriptionn=Description:\n
|
||||||
|
|
@ -275,24 +275,24 @@ cms.ui.category.edit=Modifier
|
||||||
cms.ui.category.edit_a_category=Modifier une rubrique
|
cms.ui.category.edit_a_category=Modifier une rubrique
|
||||||
cms.ui.category.edit_links=Modifier les liens
|
cms.ui.category.edit_links=Modifier les liens
|
||||||
cms.ui.category.edit_purposes=Modifier les objectifs
|
cms.ui.category.edit_purposes=Modifier les objectifs
|
||||||
cms.ui.category.extreme_actions=Actoins extrêmes
|
cms.ui.category.extreme_actions=Actoins extr\u00eames
|
||||||
cms.ui.category.is_abstract=TRANSLATE THIS: Can you place objects in this category? (cms.ui.category.is_abstract)
|
cms.ui.category.is_abstract=TRANSLATE THIS: Can you place objects in this category? (cms.ui.category.is_abstract)
|
||||||
cms.ui.category.labeln=Etiquette:\n
|
cms.ui.category.labeln=Etiquette:\n
|
||||||
cms.ui.category.labeln=Etiquette:\n
|
cms.ui.category.labeln=Etiquette:\n
|
||||||
cms.ui.category.linked_categories=Rubriques liées
|
cms.ui.category.linked_categories=Rubriques li\u00e9es
|
||||||
cms.ui.category.no_categorized_objects=Il n'y a pas d'objet classé
|
cms.ui.category.no_categorized_objects=Il n'y a pas d'objet class\u00e9
|
||||||
cms.ui.category.no_category_purposes=Pas d'objectif
|
cms.ui.category.no_category_purposes=Pas d'objectif
|
||||||
cms.ui.category.no_linked_categories=Pas de rubrique liée
|
cms.ui.category.no_linked_categories=Pas de rubrique li\u00e9e
|
||||||
cms.ui.category.no_subcategories=Pas de sous-rubrique
|
cms.ui.category.no_subcategories=Pas de sous-rubrique
|
||||||
cms.ui.category.no_subcategories=Pas de sous-rubrique
|
cms.ui.category.no_subcategories=Pas de sous-rubrique
|
||||||
cms.ui.category.restore_default_permissions=Remettre les droits par défaut
|
cms.ui.category.restore_default_permissions=Remettre les droits par d\u00e9faut
|
||||||
cms.ui.category.return_to_category_info=Retourner à la rubrique d'information
|
cms.ui.category.return_to_category_info=Retourner \u00e0 la rubrique d'information
|
||||||
cms.ui.category.select_index_item=Sélectionnez la page d'accueil de la rubrique
|
cms.ui.category.select_index_item=S\u00e9lectionnez la page d'accueil de la rubrique
|
||||||
cms.ui.category.subcategories=Sous-rubriques
|
cms.ui.category.subcategories=Sous-rubriques
|
||||||
cms.ui.category.subcategories=Sous-rubriques
|
cms.ui.category.subcategories=Sous-rubriques
|
||||||
cms.ui.category.there_are_no_items_in_this_category=Il n'y a pas d'élément dans cette rubrique
|
cms.ui.category.there_are_no_items_in_this_category=Il n'y a pas d'\u00e9l\u00e9ment dans cette rubrique
|
||||||
cms.ui.category.url=URL
|
cms.ui.category.url=URL
|
||||||
# cms.ui.category.use_custom_permissions=Utiliser les droits personnalisés
|
# cms.ui.category.use_custom_permissions=Utiliser les droits personnalis\u00e9s
|
||||||
|
|
||||||
|
|
||||||
# Package com.arsdigita.cms.ui.cse
|
# Package com.arsdigita.cms.ui.cse
|
||||||
|
|
@ -308,10 +308,10 @@ cms.ui.cse.endDateTime=Live Until
|
||||||
|
|
||||||
# Package com.arsdigita.cms.ui.folder
|
# Package com.arsdigita.cms.ui.folder
|
||||||
# ===================================
|
# ===================================
|
||||||
cms.ui.folder.cancelled=Annulé
|
cms.ui.folder.cancelled=Annul\u00e9
|
||||||
cms.ui.folder.cannot_find_a_root_folder=Impossible de trouver le répertoire racine
|
cms.ui.folder.cannot_find_a_root_folder=Impossible de trouver le r\u00e9pertoire racine
|
||||||
cms.ui.folder.na=N/A
|
cms.ui.folder.na=N/A
|
||||||
cms.ui.folder.no_source_items_specified=Pas d'élément source spécifié
|
cms.ui.folder.no_source_items_specified=Pas d'\u00e9l\u00e9ment source sp\u00e9cifi\u00e9
|
||||||
cms.ui.folder.parent=Parent Folder
|
cms.ui.folder.parent=Parent Folder
|
||||||
cms.ui.folder.rename=Rename folder
|
cms.ui.folder.rename=Rename folder
|
||||||
|
|
||||||
|
|
@ -326,51 +326,51 @@ cms.ui.formbuilder.title=Titre
|
||||||
|
|
||||||
# Package com.arsdigita.cms.ui.item
|
# Package com.arsdigita.cms.ui.item
|
||||||
# =================================
|
# =================================
|
||||||
cms.ui.item.access_denied=Accès refusé
|
cms.ui.item.access_denied=Acc\u00e8s refus\u00e9
|
||||||
cms.ui.item.apply_a_lifecycle=Appliquer un cycle de vie
|
cms.ui.item.apply_a_lifecycle=Appliquer un cycle de vie
|
||||||
cms.ui.item.current_row_does_not_exist=La ligne en cours n'exsite pas
|
cms.ui.item.current_row_does_not_exist=La ligne en cours n'exsite pas
|
||||||
cms.ui.item.edit_lifecycle=Modifier le cycle de vie
|
cms.ui.item.edit_lifecycle=Modifier le cycle de vie
|
||||||
cms.ui.item.end_date=Date de fin
|
cms.ui.item.end_date=Date de fin
|
||||||
cms.ui.item.end_time=Heure de fin
|
cms.ui.item.end_time=Heure de fin
|
||||||
cms.ui.item.end_time_incomplete=Heure de fin incomplète
|
cms.ui.item.end_time_incomplete=Heure de fin incompl\u00e8te
|
||||||
cms.ui.item.invalid_end_date_please_try_again=Date de fin invalide, veuillez en choisir une autre
|
cms.ui.item.invalid_end_date_please_try_again=Date de fin invalide, veuillez en choisir une autre
|
||||||
cms.ui.item.invalid_start_date_please_try_again=Date de début invalide, veuillez en choisir une autre
|
cms.ui.item.invalid_start_date_please_try_again=Date de d\u00e9but invalide, veuillez en choisir une autre
|
||||||
cms.ui.item.lifecycle=Cycle de vie
|
cms.ui.item.lifecycle=Cycle de vie
|
||||||
cms.ui.item.reapply_a_lifecycle=Appliquer un autre cycle de vie
|
cms.ui.item.reapply_a_lifecycle=Appliquer un autre cycle de vie
|
||||||
cms.ui.item.republish=Republier
|
cms.ui.item.republish=Republier
|
||||||
cms.ui.item.start_date=Date de début
|
cms.ui.item.start_date=Date de d\u00e9but
|
||||||
cms.ui.item.start_time=Heure de début
|
cms.ui.item.start_time=Heure de d\u00e9but
|
||||||
cms.ui.item.start_time_incomplete=Heure de début incomplète
|
cms.ui.item.start_time_incomplete=Heure de d\u00e9but incompl\u00e8te
|
||||||
cms.ui.item.submission_cancelled=Soumission abandonnée
|
cms.ui.item.submission_cancelled=Soumission abandonn\u00e9e
|
||||||
cms.ui.item.the_current_row_does_not_exists=La ligne en cours n'exsite pas
|
cms.ui.item.the_current_row_does_not_exists=La ligne en cours n'exsite pas
|
||||||
cms.ui.item.unpublish=Dépublier
|
cms.ui.item.unpublish=D\u00e9publier
|
||||||
|
|
||||||
|
|
||||||
# Package com.arsdigita.cms.ui.lifecycle
|
# Package com.arsdigita.cms.ui.lifecycle
|
||||||
# ======================================
|
# ======================================
|
||||||
cms.ui.lifecycle.add=Create new lifecycle
|
cms.ui.lifecycle.add=Create new lifecycle
|
||||||
cms.ui.lifecycle.add_a_phase=Ajouter une étape
|
cms.ui.lifecycle.add_a_phase=Ajouter une \u00e9tape
|
||||||
cms.ui.lifecycle.add_phase=Ajouter une étape
|
cms.ui.lifecycle.add_phase=Ajouter une \u00e9tape
|
||||||
cms.ui.lifecycle.create_a_lifecycle=Créer un cycle de vie
|
cms.ui.lifecycle.create_a_lifecycle=Cr\u00e9er un cycle de vie
|
||||||
cms.ui.lifecycle.days=Jours
|
cms.ui.lifecycle.days=Jours
|
||||||
cms.ui.lifecycle.delete_prompt=Please translate: Are you sure you want to delete this lifecycle?
|
cms.ui.lifecycle.delete_prompt=Please translate: Are you sure you want to delete this lifecycle?
|
||||||
cms.ui.lifecycle.delete=Effacer le cycle de vie
|
cms.ui.lifecycle.delete=Effacer le cycle de vie
|
||||||
cms.ui.lifecycle.description=Description
|
cms.ui.lifecycle.description=Description
|
||||||
cms.ui.lifecycle.details=Please translate: Lifecycle details
|
cms.ui.lifecycle.details=Please translate: Lifecycle details
|
||||||
cms.ui.lifecycle.duration=Durée
|
cms.ui.lifecycle.duration=Dur\u00e9e
|
||||||
cms.ui.lifecycle.edit=Modifier
|
cms.ui.lifecycle.edit=Modifier
|
||||||
# cms.ui.lifecycle.edit_a_lifecycle=Modifier un cycle de vie
|
# cms.ui.lifecycle.edit_a_lifecycle=Modifier un cycle de vie
|
||||||
# cms.ui.lifecycle.edit_a_phase=Modifier une étape
|
# cms.ui.lifecycle.edit_a_phase=Modifier une \u00e9tape
|
||||||
# cms.ui.lifecycle.extreme_actions=Actions extrêmes
|
# cms.ui.lifecycle.extreme_actions=Actions extr\u00eames
|
||||||
# cms.ui.lifecycle.failed_to_generate_new_phase_id=Echec dans la génération de l'identifiant de la nouvelle étape
|
# cms.ui.lifecycle.failed_to_generate_new_phase_id=Echec dans la g\u00e9n\u00e9ration de l'identifiant de la nouvelle \u00e9tape
|
||||||
cms.ui.lifecycle.hours=Heures
|
cms.ui.lifecycle.hours=Heures
|
||||||
# cms.ui.lifecycle.insufficient_privileges=Droits d'accès insuffisant
|
# cms.ui.lifecycle.insufficient_privileges=Droits d'acc\u00e8s insuffisant
|
||||||
cms.ui.lifecycle.label=Etiquette
|
cms.ui.lifecycle.label=Etiquette
|
||||||
cms.ui.lifecycle.lifecycle_information=Information sur le cycle de vie
|
cms.ui.lifecycle.lifecycle_information=Information sur le cycle de vie
|
||||||
cms.ui.lifecycle.mins=Minutes
|
cms.ui.lifecycle.mins=Minutes
|
||||||
cms.ui.lifecycle.no_lifecycles_defined_for_this_section=Pas de cycle de vie défini pour ce répertoire
|
cms.ui.lifecycle.no_lifecycles_defined_for_this_section=Pas de cycle de vie d\u00e9fini pour ce r\u00e9pertoire
|
||||||
cms.ui.lifecycle.phases=Etapes
|
cms.ui.lifecycle.phases=Etapes
|
||||||
cms.ui.lifecycle.start_delay=Délai de début
|
cms.ui.lifecycle.start_delay=D\u00e9lai de d\u00e9but
|
||||||
|
|
||||||
|
|
||||||
# Package com.arsdigita.cms.ui.permissions
|
# Package com.arsdigita.cms.ui.permissions
|
||||||
|
|
@ -381,25 +381,25 @@ cms.ui.permissions.cannot_retrieve_party=Impossible de trouver la partie
|
||||||
cms.ui.permissions.column_index=Colonne d'index
|
cms.ui.permissions.column_index=Colonne d'index
|
||||||
cms.ui.permissions.could_not_find_this_object=Impossible de trouver cet objet
|
cms.ui.permissions.could_not_find_this_object=Impossible de trouver cet objet
|
||||||
cms.ui.permissions.current_object_is_null=L'objet en cours est nul
|
cms.ui.permissions.current_object_is_null=L'objet en cours est nul
|
||||||
cms.ui.permissions.no_users_were_selected=Pas d'utilisateur séléctionné
|
cms.ui.permissions.no_users_were_selected=Pas d'utilisateur s\u00e9l\u00e9ctionn\u00e9
|
||||||
cms.ui.permissions.not_an_object_adminstrator=Ce n'est pas un administrateur d'objet
|
cms.ui.permissions.not_an_object_adminstrator=Ce n'est pas un administrateur d'objet
|
||||||
cms.ui.permissions.out_of_bounds=En dehors de la plage
|
cms.ui.permissions.out_of_bounds=En dehors de la plage
|
||||||
cms.ui.permissions.remove=Effacer
|
cms.ui.permissions.remove=Effacer
|
||||||
cms.ui.permissions.return_to_object_info=Retourner à l'information de l'objet
|
cms.ui.permissions.return_to_object_info=Retourner \u00e0 l'information de l'objet
|
||||||
cms.ui.permissions.these_are_the_current_permissions_for_this_folder=Voici les droits personnalisés qui ont été accordés pour cet répertoire
|
cms.ui.permissions.these_are_the_current_permissions_for_this_folder=Voici les droits personnalis\u00e9s qui ont \u00e9t\u00e9 accord\u00e9s pour cet r\u00e9pertoire
|
||||||
cms.ui.permissions.these_are_the_custom_permissions_that_have_been_granted_on_this_object=Voici les droits personnalisés qui ont été accordés pour cet objet
|
cms.ui.permissions.these_are_the_custom_permissions_that_have_been_granted_on_this_object=Voici les droits personnalis\u00e9s qui ont \u00e9t\u00e9 accord\u00e9s pour cet objet
|
||||||
|
|
||||||
cms.ui.permissions=Droits utilisateurs
|
cms.ui.permissions=Droits utilisateurs
|
||||||
cms.ui.preview=Prévisualiser
|
cms.ui.preview=Pr\u00e9visualiser
|
||||||
cms.ui.remove=retirer
|
cms.ui.remove=retirer
|
||||||
cms.ui.restore_default_permissions=Remettre les droits par défaut
|
cms.ui.restore_default_permissions=Remettre les droits par d\u00e9faut
|
||||||
cms.ui.roles=rôles
|
cms.ui.roles=r\u00f4les
|
||||||
cms.ui.save=enregistrer
|
cms.ui.save=enregistrer
|
||||||
cms.ui.search=rechercher
|
cms.ui.search=rechercher
|
||||||
cms.ui.search_to_add_new_members=Recherche pour ajouter de nouveaux membres
|
cms.ui.search_to_add_new_members=Recherche pour ajouter de nouveaux membres
|
||||||
cms.ui.search_to_add_new_members=Recherche pour ajouter de nouveaux membres
|
cms.ui.search_to_add_new_members=Recherche pour ajouter de nouveaux membres
|
||||||
cms.ui.sign_out=se déconnecter
|
cms.ui.sign_out=se d\u00e9connecter
|
||||||
cms.ui.submission_cancelled=Soumission abandonnée
|
cms.ui.submission_cancelled=Soumission abandonn\u00e9e
|
||||||
|
|
||||||
cms.ui.staff.add_administrator=Ajouter un administrateur
|
cms.ui.staff.add_administrator=Ajouter un administrateur
|
||||||
cms.ui.staff.back=Retour
|
cms.ui.staff.back=Retour
|
||||||
|
|
@ -407,64 +407,64 @@ cms.ui.staff.cancel_hit=Abandonner
|
||||||
cms.ui.staff.cannot_add_user=Impossible d'ajouter un utilisateur
|
cms.ui.staff.cannot_add_user=Impossible d'ajouter un utilisateur
|
||||||
cms.ui.staff.cannot_retrieve_party=Impossible de trouver la partie
|
cms.ui.staff.cannot_retrieve_party=Impossible de trouver la partie
|
||||||
cms.ui.staff.column_index=Colonne d'index
|
cms.ui.staff.column_index=Colonne d'index
|
||||||
cms.ui.staff.create_a_role=Créer un rôle
|
cms.ui.staff.create_a_role=Cr\u00e9er un r\u00f4le
|
||||||
cms.ui.staff.current_party_is_not_a_user=La partie en cours n'est pas un utilisateur
|
cms.ui.staff.current_party_is_not_a_user=La partie en cours n'est pas un utilisateur
|
||||||
cms.ui.staff.delete_role=Effacer le rôle
|
cms.ui.staff.delete_role=Effacer le r\u00f4le
|
||||||
cms.ui.staff.description=Description
|
cms.ui.staff.description=Description
|
||||||
cms.ui.staff.description=Description
|
cms.ui.staff.description=Description
|
||||||
cms.ui.staff.edit_a_role=Modifier Un rôle
|
cms.ui.staff.edit_a_role=Modifier Un r\u00f4le
|
||||||
cms.ui.staff.invalid_role=Rôle invalide
|
cms.ui.staff.invalid_role=R\u00f4le invalide
|
||||||
cms.ui.staff.label=Etiquette
|
cms.ui.staff.label=Etiquette
|
||||||
cms.ui.staff.label=Etiquette
|
cms.ui.staff.label=Etiquette
|
||||||
cms.ui.staff.no_roles_defined_for_this_section=Pas de rôle affecté à ce repertoire
|
cms.ui.staff.no_roles_defined_for_this_section=Pas de r\u00f4le affect\u00e9 \u00e0 ce repertoire
|
||||||
cms.ui.staff.no_users_were_selected=Pas d'utilisateur séléctionné
|
cms.ui.staff.no_users_were_selected=Pas d'utilisateur s\u00e9l\u00e9ctionn\u00e9
|
||||||
cms.ui.staff.no_usersgroups_were_selected=Pas d'utilisateur/groupe séléctionné
|
cms.ui.staff.no_usersgroups_were_selected=Pas d'utilisateur/groupe s\u00e9l\u00e9ctionn\u00e9
|
||||||
cms.ui.staff.not_a_role_adminstrator=Pas d'administrateur de rôle
|
cms.ui.staff.not_a_role_adminstrator=Pas d'administrateur de r\u00f4le
|
||||||
cms.ui.staff.not_an_administrator_for_roles=pas un administrateur pour les rôles
|
cms.ui.staff.not_an_administrator_for_roles=pas un administrateur pour les r\u00f4les
|
||||||
cms.ui.staff.not_an_administrator_for_this_role=pas un administrateur pour ce rôle
|
cms.ui.staff.not_an_administrator_for_this_role=pas un administrateur pour ce r\u00f4le
|
||||||
cms.ui.staff.out_of_bounds=En dehors de la plage
|
cms.ui.staff.out_of_bounds=En dehors de la plage
|
||||||
cms.ui.staff.privileges=Droits accordés
|
cms.ui.staff.privileges=Droits accord\u00e9s
|
||||||
cms.ui.staff.privileges=Droits accordés
|
cms.ui.staff.privileges=Droits accord\u00e9s
|
||||||
cms.ui.staff.remove=Effacer
|
cms.ui.staff.remove=Effacer
|
||||||
cms.ui.staff.remove=effacer
|
cms.ui.staff.remove=effacer
|
||||||
cms.ui.staff.return_to_role_info=Retourner à l'information du rôle
|
cms.ui.staff.return_to_role_info=Retourner \u00e0 l'information du r\u00f4le
|
||||||
cms.ui.staff.role_details=Détail du rôle
|
cms.ui.staff.role_details=D\u00e9tail du r\u00f4le
|
||||||
cms.ui.staff.there_are_no_administrators_for_this_role=Il n'y a pas d'administrateur pour ce rôle
|
cms.ui.staff.there_are_no_administrators_for_this_role=Il n'y a pas d'administrateur pour ce r\u00f4le
|
||||||
cms.ui.staff.there_are_no_roles_to_display=Il n'y a pas de rôle à afficher
|
cms.ui.staff.there_are_no_roles_to_display=Il n'y a pas de r\u00f4le \u00e0 afficher
|
||||||
|
|
||||||
cms.ui.templates.assign_a_template_to=Assigner un gabarit à
|
cms.ui.templates.assign_a_template_to=Assigner un gabarit \u00e0
|
||||||
cms.ui.templates.assign_template=Assigner un gabarit
|
cms.ui.templates.assign_template=Assigner un gabarit
|
||||||
cms.ui.templates.assign_this_template=Assigner ce gabarit
|
cms.ui.templates.assign_this_template=Assigner ce gabarit
|
||||||
cms.ui.templates.assigned_templates=Gabarits assignés
|
cms.ui.templates.assigned_templates=Gabarits assign\u00e9s
|
||||||
cms.ui.templates.default=Defaut
|
cms.ui.templates.default=Defaut
|
||||||
cms.ui.templates.dummy=TRANSLATE THIS: dummy (cms.ui.templates.dummy)
|
cms.ui.templates.dummy=TRANSLATE THIS: dummy (cms.ui.templates.dummy)
|
||||||
cms.ui.templates.label=Etiquette
|
cms.ui.templates.label=Etiquette
|
||||||
cms.ui.templates.name=Nom
|
cms.ui.templates.name=Nom
|
||||||
cms.ui.templates.no_templates=Pas de gabarit
|
cms.ui.templates.no_templates=Pas de gabarit
|
||||||
cms.ui.templates.not_implemented=Non implémenté
|
cms.ui.templates.not_implemented=Non impl\u00e9ment\u00e9
|
||||||
cms.ui.templates.preview=Prévisualiser
|
cms.ui.templates.preview=Pr\u00e9visualiser
|
||||||
cms.ui.templates.remove=Supprimer
|
cms.ui.templates.remove=Supprimer
|
||||||
cms.ui.templates.set_as_default=Mettre par défaut
|
cms.ui.templates.set_as_default=Mettre par d\u00e9faut
|
||||||
cms.ui.templates.use_context=TRANSLATE THIS: Use Context: (cms.ui.templates.use_context)
|
cms.ui.templates.use_context=TRANSLATE THIS: Use Context: (cms.ui.templates.use_context)
|
||||||
cms.ui.the_model_is_empty=Le modèle est vide
|
cms.ui.the_model_is_empty=Le mod\u00e8le est vide
|
||||||
cms.ui.there_are_no_items=Il n'y a pas d'élement
|
cms.ui.there_are_no_items=Il n'y a pas d'\u00e9lement
|
||||||
cms.ui.there_was_no_one_matching_the_search_criteria=Il n'y a aucun résultat avec ce critère de recherche
|
cms.ui.there_was_no_one_matching_the_search_criteria=Il n'y a aucun r\u00e9sultat avec ce crit\u00e8re de recherche
|
||||||
cms.ui.there_was_no_one_matching_the_search_criteria=Il n'y a aucun résultat avec ce critère de recherche
|
cms.ui.there_was_no_one_matching_the_search_criteria=Il n'y a aucun r\u00e9sultat avec ce crit\u00e8re de recherche
|
||||||
cms.ui.this_should_never_happen=Ceci ne se produira jamais
|
cms.ui.this_should_never_happen=Ceci ne se produira jamais
|
||||||
cms.ui.type.access_denied=Accès refusé
|
cms.ui.type.access_denied=Acc\u00e8s refus\u00e9
|
||||||
cms.ui.type.add_a_template=Ajouter un gabarit
|
cms.ui.type.add_a_template=Ajouter un gabarit
|
||||||
cms.ui.type.association_content_type=Association au type de contenu
|
cms.ui.type.association_content_type=Association au type de contenu
|
||||||
cms.ui.type.available_content_types=Types de contenu disponibles
|
cms.ui.type.available_content_types=Types de contenu disponibles
|
||||||
cms.ui.type.class_name=Nom de la classe
|
cms.ui.type.class_name=Nom de la classe
|
||||||
cms.ui.type.content_type_already_exists_for_this_content_section_please_choose_a_different_name=Le type de contenu "{0}" exist déjà pour ce répertoire de contenu, veuillez choisir un nom différent.
|
cms.ui.type.content_type_already_exists_for_this_content_section_please_choose_a_different_name=Le type de contenu "{0}" exist d\u00e9j\u00e0 pour ce r\u00e9pertoire de contenu, veuillez choisir un nom diff\u00e9rent.
|
||||||
cms.ui.type.current_row_does_not_exist=La ligne en cours n'existe pas
|
cms.ui.type.current_row_does_not_exist=La ligne en cours n'existe pas
|
||||||
cms.ui.type.data_entry_method=Saisie de données
|
cms.ui.type.data_entry_method=Saisie de donn\u00e9es
|
||||||
cms.ui.type.default_lifecycle=Cycle de vie par défaut
|
cms.ui.type.default_lifecycle=Cycle de vie par d\u00e9faut
|
||||||
cms.ui.type.default_lifecycle=Cycle de vie par défaut
|
cms.ui.type.default_lifecycle=Cycle de vie par d\u00e9faut
|
||||||
cms.ui.type.default_lifecycle=Cycle de vie par défaut
|
cms.ui.type.default_lifecycle=Cycle de vie par d\u00e9faut
|
||||||
cms.ui.type.default_workflow=Déroulement des opérations par défaut
|
cms.ui.type.default_workflow=D\u00e9roulement des op\u00e9rations par d\u00e9faut
|
||||||
cms.ui.type.default_workflow=Déroulement des opérations par défaut
|
cms.ui.type.default_workflow=D\u00e9roulement des op\u00e9rations par d\u00e9faut
|
||||||
cms.ui.type.define_a_new_content_type=Définir un nouveau type de contenu
|
cms.ui.type.define_a_new_content_type=D\u00e9finir un nouveau type de contenu
|
||||||
cms.ui.type.description=Description
|
cms.ui.type.description=Description
|
||||||
cms.ui.type.description=Description
|
cms.ui.type.description=Description
|
||||||
cms.ui.type.description=Description
|
cms.ui.type.description=Description
|
||||||
|
|
@ -472,7 +472,7 @@ cms.ui.type.edit=Modifier
|
||||||
cms.ui.type.element_type=Format de contenu
|
cms.ui.type.element_type=Format de contenu
|
||||||
cms.ui.type.foo_me_=TRANSLATE THIS: Foo Me ! (cms.ui.type.foo_me_)
|
cms.ui.type.foo_me_=TRANSLATE THIS: Foo Me ! (cms.ui.type.foo_me_)
|
||||||
cms.ui.type.from=De
|
cms.ui.type.from=De
|
||||||
cms.ui.type.if_yes_please_choose_a_default_date=Si oui, veuillez choisir une date par défaut
|
cms.ui.type.if_yes_please_choose_a_default_date=Si oui, veuillez choisir une date par d\u00e9faut
|
||||||
cms.ui.type.invalid_content_type=Type de contenu invalide
|
cms.ui.type.invalid_content_type=Type de contenu invalide
|
||||||
cms.ui.type.is_a_value_required=Est-ce que la valeur est requise ?
|
cms.ui.type.is_a_value_required=Est-ce que la valeur est requise ?
|
||||||
cms.ui.type.is_a_value_required=Est-ce que la valeur est requise ?
|
cms.ui.type.is_a_value_required=Est-ce que la valeur est requise ?
|
||||||
|
|
@ -483,64 +483,65 @@ cms.ui.type.maximum_length=Dimension maximum
|
||||||
cms.ui.type.maximum_value=Valeur maximum
|
cms.ui.type.maximum_value=Valeur maximum
|
||||||
cms.ui.type.minimum_number_of_values_bigger_than_maximum_number_of_values=Le nombre minimum de valeurs est plus grand que le nombre maximum de valeurs
|
cms.ui.type.minimum_number_of_values_bigger_than_maximum_number_of_values=Le nombre minimum de valeurs est plus grand que le nombre maximum de valeurs
|
||||||
cms.ui.type.minimum_value=Valeur minimum
|
cms.ui.type.minimum_value=Valeur minimum
|
||||||
cms.ui.type.minimummaximum_number_of_values_cannot_be_negative=Le rapport entre le nombre minimum et le nombre maximum de valeurs ne peut pas être négatif
|
cms.ui.type.minimummaximum_number_of_values_cannot_be_negative=Le rapport entre le nombre minimum et le nombre maximum de valeurs ne peut pas \u00eatre n\u00e9gatif
|
||||||
cms.ui.type.name=Nom
|
cms.ui.type.name=Nom
|
||||||
cms.ui.type.name=Nom
|
cms.ui.type.name=Nom
|
||||||
cms.ui.type.not_implemented=Non implémenté
|
cms.ui.type.not_implemented=Non impl\u00e9ment\u00e9
|
||||||
cms.ui.type.number_of_decimal_places=Nombre de positions décimales
|
cms.ui.type.number_of_decimal_places=Nombre de positions d\u00e9cimales
|
||||||
cms.ui.type.object_type=Type d'objet
|
cms.ui.type.object_type=Type d'objet
|
||||||
cms.ui.type.parent_content_type=Parent du type de contenu
|
cms.ui.type.parent_content_type=Parent du type de contenu
|
||||||
cms.ui.type.please_enter_a_4_digit_year_between_1900__2000=Veuillez entrer les 4 chiffre de l'année entre 1900 et 2000
|
cms.ui.type.please_enter_a_4_digit_year_between_1900__2000=Veuillez entrer les 4 chiffre de l'ann\u00e9e entre 1900 et 2000
|
||||||
cms.ui.type.please_fill_in_both_start_and_end_years=Veuillez remplir l'année de début et de fin
|
cms.ui.type.please_fill_in_both_start_and_end_years=Veuillez remplir l'ann\u00e9e de d\u00e9but et de fin
|
||||||
cms.ui.type.please_select_a_content_type_to_view_its_details=Veuillez séléctionner un type de contenu pour en voir le détail
|
cms.ui.type.please_select_a_content_type_to_view_its_details=Veuillez s\u00e9l\u00e9ctionner un type de contenu pour en voir le d\u00e9tail
|
||||||
cms.ui.type.please_select_a_year_range_yyyy_=Veuillez selectionner une année (aaaa)
|
cms.ui.type.please_select_a_year_range_yyyy_=Veuillez selectionner une ann\u00e9e (aaaa)
|
||||||
cms.ui.type.remove=Effacer
|
cms.ui.type.remove=Effacer
|
||||||
cms.ui.type.submission_cancelled=Soumission annulée
|
cms.ui.type.submission_cancelled=Soumission annul\u00e9e
|
||||||
cms.ui.type.the_name_of_the_content_type_must_be_alphanumeric=Le nom de ce type de contenu doit être alphanumerique
|
cms.ui.type.the_name_of_the_content_type_must_be_alphanumeric=Le nom de ce type de contenu doit \u00eatre alphanumerique
|
||||||
cms.ui.type.the_name_of_the_content_type_must_not_include_whitespace=Le nom de ce type de contenu ne doit pas contenir d'espaces
|
cms.ui.type.the_name_of_the_content_type_must_not_include_whitespace=Le nom de ce type de contenu ne doit pas contenir d'espaces
|
||||||
cms.ui.type.the_range_is_too_wide_to_be_displayed=La gamme est trop grande pour pouvoir être affichée
|
cms.ui.type.the_range_is_too_wide_to_be_displayed=La gamme est trop grande pour pouvoir \u00eatre affich\u00e9e
|
||||||
cms.ui.type.the_start_year_cant_be_after_the_end_year=L'année de début ne peut pas être supérieure à l'année de fin
|
cms.ui.type.the_start_year_cant_be_after_the_end_year=L'ann\u00e9e de d\u00e9but ne peut pas \u00eatre sup\u00e9rieure \u00e0 l'ann\u00e9e de fin
|
||||||
cms.ui.type.the_years_can_not_be_negative=Les années ne peuvent pas être négatives
|
cms.ui.type.the_years_can_not_be_negative=Les ann\u00e9es ne peuvent pas \u00eatre n\u00e9gatives
|
||||||
cms.ui.type.title=Titre
|
cms.ui.type.title=Titre
|
||||||
cms.ui.type.to=à
|
cms.ui.type.to=\u00e0
|
||||||
cms.ui.upload_new_content=Transférer un nouveau contenu sur le site
|
cms.ui.upload_new_content=Transf\u00e9rer un nouveau contenu sur le site
|
||||||
cms.ui.use_custom_permissions=Utiliser les droits personnalisés
|
cms.ui.use_custom_permissions=Utiliser les droits personnalis\u00e9s
|
||||||
cms.ui.util.=
|
cms.ui.util.=
|
||||||
cms.ui.view_all_enabled_tasks=Voir toutes les tâches activées
|
cms.ui.view_all_enabled_tasks=Voir toutes les t\u00e2ches activ\u00e9es
|
||||||
cms.ui.view_all_enabled_tasks=Voir toutes les tâches {0} disponibles
|
cms.ui.view_all_enabled_tasks=Voir toutes les t\u00e2ches {0} disponibles
|
||||||
cms.ui.view_tasks_sorted_by_due_date=Voir les tâches classées par date
|
cms.ui.view_tasks_sorted_by_due_date=Voir les t\u00e2ches class\u00e9es par date
|
||||||
cms.ui.viewers=lecteurs
|
cms.ui.viewers=lecteurs
|
||||||
cms.ui.workflow.add_a_new_task_to=Ajouter une nouvelles tâche à
|
cms.ui.workflow.add_a_new_task_to=Ajouter une nouvelles t\u00e2che \u00e0
|
||||||
cms.ui.workflow.add_task=Ajouter une tâche
|
cms.ui.workflow.add_task=Ajouter une t\u00e2che
|
||||||
cms.ui.workflow.approve_this_content=Valider ce contenu ?
|
cms.ui.workflow.approve_this_content=Valider ce contenu ?
|
||||||
cms.ui.workflow.assign_roles_for=Assigner les rôles pour
|
cms.ui.workflow.assign_roles_for=Assigner les r\u00f4les pour
|
||||||
cms.ui.workflow.cancel_hit= Abandonner
|
cms.ui.workflow.cancel_hit= Abandonner
|
||||||
cms.ui.workflow.comment=Commentaire
|
cms.ui.workflow.comment=Commentaire
|
||||||
cms.ui.workflow.comment=Commentaire
|
cms.ui.workflow.comment=Commentaire
|
||||||
cms.ui.workflow.delete_user=Supprimer cet utilisateur
|
cms.ui.workflow.delete_user=Supprimer cet utilisateur
|
||||||
cms.ui.workflow.delete_workflow=Effacer le déroulement des opérations
|
cms.ui.workflow.delete_workflow=Effacer le d\u00e9roulement des op\u00e9rations
|
||||||
cms.ui.workflow.depends_on=Dépendant de
|
cms.ui.workflow.depends_on=D\u00e9pendant de
|
||||||
cms.ui.workflow.description=Description
|
cms.ui.workflow.description=Description
|
||||||
cms.ui.workflow.description=Description
|
cms.ui.workflow.description=Description
|
||||||
cms.ui.workflow.edit_task_in=Modifier la tâche dans
|
cms.ui.workflow.edit_task_in=Modifier la t\u00e2che dans
|
||||||
cms.ui.workflow.extreme_actions=Actions extrêmes
|
cms.ui.workflow.extreme_actions=Actions extr\u00eames
|
||||||
cms.ui.workflow.insufficient_privileges=Droits d'accès insuffisants
|
cms.ui.workflow.insufficient_privileges=Droits d'acc\u00e8s insuffisants
|
||||||
cms.ui.workflow.name=Nom
|
cms.ui.workflow.name=Nom
|
||||||
cms.ui.workflow.name=Nom
|
cms.ui.workflow.name=Nom
|
||||||
cms.ui.workflow.no_users_were_selected=Pas d'utilisateur séléctioné
|
cms.ui.workflow.no_users_were_selected=Pas d'utilisateur s\u00e9l\u00e9ction\u00e9
|
||||||
cms.ui.workflow.restart_stopped_workflow=reprendre le déroulement des opérations
|
cms.ui.workflow.restart_stopped_workflow=reprendre le d\u00e9roulement des op\u00e9rations
|
||||||
cms.ui.workflow.roles=Rôles
|
cms.ui.workflow.roles=R\u00f4les
|
||||||
cms.ui.workflow.stop_workflow=Arrêter le déroulement des opérations
|
cms.ui.workflow.stop_workflow=Arr\u00eater le d\u00e9roulement des op\u00e9rations
|
||||||
cms.ui.workflow.task=Tâches
|
cms.ui.workflow.task=T\u00e2ches
|
||||||
cms.ui.workflow.tasks=Tâches
|
cms.ui.workflow.tasks=T\u00e2ches
|
||||||
cms.ui.workflow.workflow_information=Information sur le déroulement des opérations
|
cms.ui.workflow.workflow_information=Information sur le d\u00e9roulement des op\u00e9rations
|
||||||
cms.ui.workflow.workflow_information=Information sur le déroulement des opérations
|
cms.ui.workflow.workflow_information=Information sur le d\u00e9roulement des op\u00e9rations
|
||||||
cms.ui.workflow.you_are_assigned_to_this_item=Vous êtes assigné à cet élément
|
cms.ui.workflow.you_are_assigned_to_this_item=Vous \u00eates assign\u00e9 \u00e0 cet \u00e9l\u00e9ment
|
||||||
cms.ui.workflow.your_active_tasks=Vos tâches actives
|
cms.ui.workflow.your_active_tasks=Vos t\u00e2ches actives
|
||||||
cms.ui.workflows=Workflows
|
cms.ui.workflows=Workflows
|
||||||
cms.ui.you_do_not_have_sufficient_privileges_to_access_this_page=Vous n'êtes pas autorisé à voir cette page.
|
cms.ui.you_do_not_have_sufficient_privileges_to_access_this_page=Vous n'\u00eates pas autoris\u00e9 \u00e0 voir cette page.
|
||||||
no=Non
|
no=Non
|
||||||
yes=Oui
|
yes=Oui
|
||||||
cms.contenttypes.ui.address.uri=URL (TRANSLATE THIS cms.contenttypes.ui.address.uri)
|
cms.contenttypes.ui.address.uri=URL (TRANSLATE THIS cms.contenttypes.ui.address.uri)
|
||||||
cms.contenttypes.ui.address.email.desc=Means of contacting someone at this address (TRANSLATE THIS cms.contenttypes.ui.address.email.desc)
|
cms.contenttypes.ui.address.email.desc=Means of contacting someone at this address (TRANSLATE THIS cms.contenttypes.ui.address.email.desc)
|
||||||
cms.contenttypes.ui.address.uri.desc=A URL to find more information about this Address (TRANSLATE THIS cms.contenttypes.ui.address.uri.desc)
|
cms.contenttypes.ui.address.uri.desc=A URL to find more information about this Address (TRANSLATE THIS cms.contenttypes.ui.address.uri.desc)
|
||||||
|
cms.contenttypes.shared.basic_properties.title=
|
||||||
|
|
|
||||||
|
|
@ -117,3 +117,14 @@ sciorganization.ui.department.project.confirm_remove=Are you sure to remove this
|
||||||
cms.ui.unknownRole=Unknown role
|
cms.ui.unknownRole=Unknown role
|
||||||
cms.ui.unknownStatus=Unknown status
|
cms.ui.unknownStatus=Unknown status
|
||||||
Status=Status
|
Status=Status
|
||||||
|
cms.contenttypes.ui.genericorgaunit.person.status=Status
|
||||||
|
#Basic properties
|
||||||
|
cms.contenttypes.shared.basic_properties.title=Basic properties
|
||||||
|
cms.contenttypes.ui.person_contact.up=Up
|
||||||
|
#Down
|
||||||
|
cms.contenttypes.ui.person_contact.down=Down
|
||||||
|
cms.contenttypes.ui.person.contact.type=Contact type
|
||||||
|
#Contact
|
||||||
|
cms.contenttypes.ui.person.contact.title=Contact
|
||||||
|
#L\u00f6schen
|
||||||
|
cms.contenttypes.ui.person.contact.del=Delete
|
||||||
|
|
|
||||||
|
|
@ -128,3 +128,14 @@ cms.contenttypes.ui.contact.contactEntry.key.im=Instant Messanger
|
||||||
cms.contenttypes.ui.contact.contactEntry.key.www=Homepage
|
cms.contenttypes.ui.contact.contactEntry.key.www=Homepage
|
||||||
cms.ui.unknownStatus=Unkannter Status
|
cms.ui.unknownStatus=Unkannter Status
|
||||||
Status=Status
|
Status=Status
|
||||||
|
cms.contenttypes.ui.genericorgaunit.person.status=Status
|
||||||
|
#Basic properties
|
||||||
|
cms.contenttypes.shared.basic_properties.title=Basiseigenschaften
|
||||||
|
cms.contenttypes.ui.person_contact.up=Hoch
|
||||||
|
#Down
|
||||||
|
cms.contenttypes.ui.person_contact.down=Runter
|
||||||
|
cms.contenttypes.ui.person.contact.type=Kontakttyp
|
||||||
|
#Contact
|
||||||
|
cms.contenttypes.ui.person.contact.title=Kontakt
|
||||||
|
#L\u00f6schen
|
||||||
|
cms.contenttypes.ui.person.contact.del=L\u00f6schen
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,7 @@ public class GenericOrganizationalUnit extends ContentPage {
|
||||||
public final static String CONTACT_ORDER = "contact_order";
|
public final static String CONTACT_ORDER = "contact_order";
|
||||||
public final static String PERSONS = "persons";
|
public final static String PERSONS = "persons";
|
||||||
public final static String ROLE = "role_name";
|
public final static String ROLE = "role_name";
|
||||||
|
public final static String STATUS = "status";
|
||||||
public final static String BASE_DATA_OBJECT_TYPE =
|
public final static String BASE_DATA_OBJECT_TYPE =
|
||||||
"com.arsdigita.cms.contenttypes.GenericOrganizationalUnit";
|
"com.arsdigita.cms.contenttypes.GenericOrganizationalUnit";
|
||||||
|
|
||||||
|
|
@ -115,12 +116,13 @@ public class GenericOrganizationalUnit extends ContentPage {
|
||||||
return new GenericOrganizationalUnitPersonCollection(dataColl);
|
return new GenericOrganizationalUnitPersonCollection(dataColl);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addPerson(GenericPerson person, String role) {
|
public void addPerson(GenericPerson person, String role, String status) {
|
||||||
Assert.exists(person, GenericPerson.class);
|
Assert.exists(person, GenericPerson.class);
|
||||||
|
|
||||||
DataObject link = add(PERSONS, person);
|
DataObject link = add(PERSONS, person);
|
||||||
|
|
||||||
link.set(ROLE, role);
|
link.set(ROLE, role);
|
||||||
|
link.set(STATUS, status);
|
||||||
link.save();
|
link.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@
|
||||||
package com.arsdigita.cms.contenttypes;
|
package com.arsdigita.cms.contenttypes;
|
||||||
|
|
||||||
import com.arsdigita.domain.DomainCollection;
|
import com.arsdigita.domain.DomainCollection;
|
||||||
|
import com.arsdigita.domain.DomainObjectFactory;
|
||||||
import com.arsdigita.persistence.DataCollection;
|
import com.arsdigita.persistence.DataCollection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -29,6 +30,7 @@ import com.arsdigita.persistence.DataCollection;
|
||||||
public class GenericOrganizationalUnitPersonCollection extends DomainCollection {
|
public class GenericOrganizationalUnitPersonCollection extends DomainCollection {
|
||||||
|
|
||||||
public static final String PERSON_ROLE = "link.role_name";
|
public static final String PERSON_ROLE = "link.role_name";
|
||||||
|
public static final String STATUS = "link.status";
|
||||||
|
|
||||||
public GenericOrganizationalUnitPersonCollection(
|
public GenericOrganizationalUnitPersonCollection(
|
||||||
DataCollection dataCollection) {
|
DataCollection dataCollection) {
|
||||||
|
|
@ -45,7 +47,12 @@ public class GenericOrganizationalUnitPersonCollection extends DomainCollection
|
||||||
return (String) m_dataCollection.get(PERSON_ROLE);
|
return (String) m_dataCollection.get(PERSON_ROLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getStatus() {
|
||||||
|
return (String) m_dataCollection.get(STATUS);
|
||||||
|
}
|
||||||
|
|
||||||
public GenericPerson getPerson() {
|
public GenericPerson getPerson() {
|
||||||
return new GenericPerson(m_dataCollection.getDataObject());
|
return (GenericPerson) DomainObjectFactory.newInstance(m_dataCollection.
|
||||||
|
getDataObject());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,8 @@
|
||||||
/*
|
|
||||||
* HealthCareFacilityContactCollection.java
|
|
||||||
*
|
|
||||||
* Created on 26. Juli 2009, 15:30
|
|
||||||
*
|
|
||||||
* To change this template, choose Tools | Template Manager
|
|
||||||
* and open the template in the editor.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.arsdigita.cms.contenttypes;
|
package com.arsdigita.cms.contenttypes;
|
||||||
|
|
||||||
import com.arsdigita.domain.DomainCollection;
|
import com.arsdigita.domain.DomainCollection;
|
||||||
import com.arsdigita.persistence.DataCollection;
|
import com.arsdigita.persistence.DataCollection;
|
||||||
|
import com.arsdigita.persistence.DataObject;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -19,9 +11,12 @@ import java.math.BigDecimal;
|
||||||
*/
|
*/
|
||||||
public class GenericPersonContactCollection extends DomainCollection {
|
public class GenericPersonContactCollection extends DomainCollection {
|
||||||
|
|
||||||
public static final String ORDER = "link." + GenericPerson.CONTACTS_ORDER + " asc";
|
public static final String ORDER = "link." + GenericPerson.CONTACTS_ORDER
|
||||||
public static final String CONTACTS_KEY = "link." + GenericPerson.CONTACTS_KEY;
|
+ " asc";
|
||||||
public static final String CONTACTS_ORDER = "link." + GenericPerson.CONTACTS_ORDER;
|
public static final String CONTACTS_KEY = "link."
|
||||||
|
+ GenericPerson.CONTACTS_KEY;
|
||||||
|
public static final String CONTACTS_ORDER = "link."
|
||||||
|
+ GenericPerson.CONTACTS_ORDER;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new instance of GenericPersonContactCollection
|
* Creates a new instance of GenericPersonContactCollection
|
||||||
|
|
@ -39,17 +34,110 @@ public class GenericPersonContactCollection extends DomainCollection {
|
||||||
|
|
||||||
// Get the contact order of the link
|
// Get the contact order of the link
|
||||||
public String getContactOrder() {
|
public String getContactOrder() {
|
||||||
String retVal = ((BigDecimal) m_dataCollection.get(CONTACTS_ORDER)).toString();
|
String retVal = ((BigDecimal) m_dataCollection.get(CONTACTS_ORDER)).
|
||||||
|
toString();
|
||||||
|
|
||||||
if(retVal == null || retVal.isEmpty()) {
|
if (retVal == null || retVal.isEmpty()) {
|
||||||
retVal = String.valueOf(this.getPosition());
|
retVal = String.valueOf(this.getPosition());
|
||||||
}
|
}
|
||||||
|
|
||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setContactOrder(BigDecimal order) {
|
||||||
|
DataObject link = (DataObject) this.get("link");
|
||||||
|
|
||||||
|
link.set(CONTACTS_ORDER, order);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void swapWithNext(GenericContact contact) {
|
||||||
|
int currentPos = 0;
|
||||||
|
int currentIndex = 0;
|
||||||
|
int nextIndex = 0;
|
||||||
|
|
||||||
|
this.rewind();
|
||||||
|
while (this.next()) {
|
||||||
|
currentPos = this.getPosition();
|
||||||
|
currentIndex = Integer.parseInt(this.getContactOrder());
|
||||||
|
if (this.getContact().equals(contact)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentPos == 0) {
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
String.format(
|
||||||
|
"The provided contact is not "
|
||||||
|
+ "part of this collection."));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.next()) {
|
||||||
|
nextIndex = Integer.parseInt(this.getContactOrder());
|
||||||
|
} else {
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"The provided contact is the last "
|
||||||
|
+ "in the collection, so there is no next object "
|
||||||
|
+ "to swap with.");
|
||||||
|
}
|
||||||
|
|
||||||
|
this.rewind();
|
||||||
|
|
||||||
|
while (this.getPosition() != currentPos) {
|
||||||
|
this.next();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setContactOrder(new BigDecimal(nextIndex));
|
||||||
|
this.next();
|
||||||
|
this.setContactOrder(new BigDecimal(currentIndex));
|
||||||
|
this.rewind();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void swapWithPrevious(GenericContact contact) {
|
||||||
|
int previousPos = 0;
|
||||||
|
int previousIndex = 0;
|
||||||
|
int currentPos = 0;
|
||||||
|
int currentIndex = 0;
|
||||||
|
|
||||||
|
this.rewind();
|
||||||
|
while (this.next()) {
|
||||||
|
currentPos = this.getPosition();
|
||||||
|
currentIndex = Integer.parseInt(this.getContactOrder());
|
||||||
|
|
||||||
|
if (this.getContact().equals(contact)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
previousPos = currentPos;
|
||||||
|
previousIndex = currentIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentPos == 0) {
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
String.format(
|
||||||
|
"The provided contact is not "
|
||||||
|
+ "part of this collection."));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (previousPos == 0) {
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
String.format(
|
||||||
|
"The provided contact is the first one in this "
|
||||||
|
+ "collection, so there is no previous one to switch "
|
||||||
|
+ "with."));
|
||||||
|
}
|
||||||
|
|
||||||
|
this.rewind();
|
||||||
|
while (this.getPosition() != previousPos) {
|
||||||
|
this.next();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setContactOrder(new BigDecimal(currentIndex));
|
||||||
|
this.next();
|
||||||
|
this.setContactOrder(new BigDecimal(previousIndex));
|
||||||
|
this.rewind();
|
||||||
|
}
|
||||||
|
|
||||||
public GenericContact getContact() {
|
public GenericContact getContact() {
|
||||||
return new GenericContact(m_dataCollection.getDataObject());
|
return new GenericContact(m_dataCollection.getDataObject());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,346 @@
|
||||||
|
/*
|
||||||
|
* 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.Page;
|
||||||
|
import com.arsdigita.bebop.PageState;
|
||||||
|
import com.arsdigita.bebop.SimpleComponent;
|
||||||
|
import com.arsdigita.bebop.parameters.IntegerParameter;
|
||||||
|
import com.arsdigita.bebop.parameters.StringParameter;
|
||||||
|
import com.arsdigita.cms.CMS;
|
||||||
|
import com.arsdigita.cms.CMSContext;
|
||||||
|
import com.arsdigita.cms.ContentBundle;
|
||||||
|
import com.arsdigita.cms.ContentItem;
|
||||||
|
import com.arsdigita.cms.ContentSection;
|
||||||
|
import com.arsdigita.cms.ExtraXMLGenerator;
|
||||||
|
import com.arsdigita.cms.dispatcher.XMLGenerator;
|
||||||
|
import com.arsdigita.dispatcher.DispatcherHelper;
|
||||||
|
import com.arsdigita.web.ParameterMap;
|
||||||
|
import com.arsdigita.web.URL;
|
||||||
|
import com.arsdigita.web.Web;
|
||||||
|
import com.arsdigita.xml.Element;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Jens Pelzetter
|
||||||
|
*/
|
||||||
|
public abstract class CompoundContentItemPanel
|
||||||
|
extends SimpleComponent
|
||||||
|
implements ExtraXMLGenerator {
|
||||||
|
|
||||||
|
private static final Logger s_log = Logger.getLogger(
|
||||||
|
CompoundContentItemPanel.class);
|
||||||
|
/**
|
||||||
|
* Item to show (if injected)
|
||||||
|
*/
|
||||||
|
private ContentItem m_item = null;
|
||||||
|
/**
|
||||||
|
* Constant for the <code>show</code> parameter
|
||||||
|
*/
|
||||||
|
private static final String SHOW_PARAM = "show";
|
||||||
|
/**
|
||||||
|
* Parameter which indicates which page to show
|
||||||
|
*/
|
||||||
|
protected StringParameter m_show;
|
||||||
|
private static final String PAGE_NUMBER = "pageNumber";
|
||||||
|
/**
|
||||||
|
* Parameter for a paginator
|
||||||
|
*/
|
||||||
|
protected IntegerParameter m_pageNumber;
|
||||||
|
/**
|
||||||
|
* PageSize for the a paginator
|
||||||
|
*/
|
||||||
|
private long m_pageSize = 3;
|
||||||
|
|
||||||
|
public CompoundContentItemPanel() {
|
||||||
|
super();
|
||||||
|
|
||||||
|
m_show = new StringParameter(SHOW_PARAM);
|
||||||
|
m_pageNumber = new IntegerParameter(PAGE_NUMBER);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void register(Page p) {
|
||||||
|
super.register(p);
|
||||||
|
|
||||||
|
addGlobalStateParams(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addGlobalStateParams(Page p) {
|
||||||
|
p.addGlobalStateParam(m_show);
|
||||||
|
p.addGlobalStateParam(m_pageNumber);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected XMLGenerator getXMLGenerator(PageState state, ContentItem item) {
|
||||||
|
ContentSection section = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
section = CMS.getContext().getContentSection();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
}
|
||||||
|
if (section == null) {
|
||||||
|
if (s_log.isDebugEnabled()) {
|
||||||
|
s_log.debug("Item id ; " + item.getOID() + " - " + item.
|
||||||
|
getContentSection() + " - " + item);
|
||||||
|
}
|
||||||
|
section = item.getContentSection();
|
||||||
|
CMS.getContext().setContentSection(section);
|
||||||
|
}
|
||||||
|
|
||||||
|
return section.getXMLGenerator();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the the content item to show. If a item was injected via
|
||||||
|
* {@link #setContentItem(com.arsdigita.cms.ContentItem)}, this item is
|
||||||
|
* used. Otherwise, the item is retrieved from the CMSContext.
|
||||||
|
*
|
||||||
|
* @param state The current page state
|
||||||
|
* @return The content item to show.
|
||||||
|
*/
|
||||||
|
protected ContentItem getContentItem(PageState state) {
|
||||||
|
if (m_item == null) {
|
||||||
|
CMSContext context = CMS.getContext();
|
||||||
|
|
||||||
|
if (!context.hasContentItem()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return context.getContentItem();
|
||||||
|
} else {
|
||||||
|
return m_item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Injects the content item to show. Very helpful when the CMSContext is not
|
||||||
|
* available, for example in index pages.
|
||||||
|
*
|
||||||
|
* @param item The item to show by this panel.
|
||||||
|
*/
|
||||||
|
public void setContentItem(final ContentItem item) {
|
||||||
|
if (item instanceof ContentBundle) {
|
||||||
|
ContentBundle bundle;
|
||||||
|
ContentItem resolved = null;
|
||||||
|
|
||||||
|
bundle = (ContentBundle) item;
|
||||||
|
|
||||||
|
resolved = bundle.getInstance(DispatcherHelper.getNegotiatedLocale().
|
||||||
|
getLanguage());
|
||||||
|
|
||||||
|
if (resolved == null) {
|
||||||
|
resolved = bundle.getPrimaryInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
m_item = resolved;
|
||||||
|
} else {
|
||||||
|
m_item = item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getPageSize() {
|
||||||
|
return m_pageSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPageSize(final long pageSize) {
|
||||||
|
m_pageSize = pageSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected long getPageCount(final long objectCount) {
|
||||||
|
return (long) Math.ceil((double) objectCount / (double) m_pageSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected long normalizePageNumber(final long pageCount,
|
||||||
|
final long pageNumber) {
|
||||||
|
long num;
|
||||||
|
num = pageNumber;
|
||||||
|
if (num < 1) {
|
||||||
|
num = 1;
|
||||||
|
}
|
||||||
|
if (num > pageCount) {
|
||||||
|
if (pageCount == 0) {
|
||||||
|
num = 1;
|
||||||
|
} else {
|
||||||
|
num = pageCount;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return num;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected long getPaginatorBegin(final long pageNumber) {
|
||||||
|
return (pageNumber - 1) * m_pageSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected long getPaginatorCount(final long begin,
|
||||||
|
final long objectCount) {
|
||||||
|
return Math.min(m_pageSize, (objectCount - begin));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected long getPaginatorEnd(final long begin, final long count) {
|
||||||
|
return begin + count;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void createPaginatorElement(final Element parent,
|
||||||
|
final long pageNumber,
|
||||||
|
final long pageCount,
|
||||||
|
final long begin,
|
||||||
|
final long end,
|
||||||
|
final long count) {
|
||||||
|
Element paginator;
|
||||||
|
paginator =
|
||||||
|
parent.newChildElement("nav:paginator",
|
||||||
|
"http://ccm.redhat.com/london/navigation");
|
||||||
|
|
||||||
|
URL requestURL = Web.getContext().getRequestURL();
|
||||||
|
|
||||||
|
ParameterMap map = new ParameterMap();
|
||||||
|
|
||||||
|
if (requestURL.getParameterMap() != null) {
|
||||||
|
Iterator<?> current = requestURL.getParameterMap().keySet().
|
||||||
|
iterator();
|
||||||
|
while (current.hasNext()) {
|
||||||
|
String key = (String) current.next();
|
||||||
|
if (key.equals("pageNumber")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
map.setParameterValues(key, requestURL.getParameterValues(
|
||||||
|
key));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
paginator.addAttribute("pageParam", "pageNumber");
|
||||||
|
paginator.addAttribute("baseURL", URL.there(requestURL.getPathInfo(),
|
||||||
|
map).toString());
|
||||||
|
paginator.addAttribute("pageNumber", Long.toString(pageNumber));
|
||||||
|
paginator.addAttribute("pageCount", Long.toString(pageCount));
|
||||||
|
paginator.addAttribute("pageSize", Long.toString(m_pageSize));
|
||||||
|
paginator.addAttribute("objectBegin", Long.toString(begin));
|
||||||
|
paginator.addAttribute("objectEnd", Long.toString(end));
|
||||||
|
paginator.addAttribute("objectCount", Long.toString(count));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The default value for the show parameter.
|
||||||
|
*
|
||||||
|
* @return Default value for the show parameter.
|
||||||
|
*/
|
||||||
|
protected abstract String getDefaultForShowParam();
|
||||||
|
|
||||||
|
protected String getShowParam(final PageState state) {
|
||||||
|
String show;
|
||||||
|
try {
|
||||||
|
show = (String) state.getValue(m_show);
|
||||||
|
} catch (IllegalArgumentException ex) {
|
||||||
|
// probably viewing an index item on a category,
|
||||||
|
// get the parameter from the request and set it
|
||||||
|
String value = state.getRequest().getParameter(SHOW_PARAM);
|
||||||
|
if (value == null) {
|
||||||
|
value = getDefaultForShowParam();
|
||||||
|
}
|
||||||
|
show = value;
|
||||||
|
state.setValue(m_show, value);
|
||||||
|
}
|
||||||
|
if (show == null) {
|
||||||
|
show = getDefaultForShowParam();
|
||||||
|
}
|
||||||
|
|
||||||
|
return show;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected long getPageNumber(final PageState state) {
|
||||||
|
int pageNumber = 1;
|
||||||
|
|
||||||
|
s_log.info("Checking page state...");
|
||||||
|
if (state == null) {
|
||||||
|
s_log.warn("PageState is null!!!");
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
Object value = state.getValue(m_pageNumber);
|
||||||
|
if (value == null) {
|
||||||
|
pageNumber = 1;
|
||||||
|
} else {
|
||||||
|
pageNumber = (Integer) value;
|
||||||
|
}
|
||||||
|
} catch (IllegalArgumentException ex) {
|
||||||
|
String value = state.getRequest().getParameter(PAGE_NUMBER);
|
||||||
|
if (value != null) {
|
||||||
|
try {
|
||||||
|
pageNumber = Integer.parseInt(value);
|
||||||
|
} catch (NumberFormatException ex1) {
|
||||||
|
s_log.warn("Invalid page number");
|
||||||
|
}
|
||||||
|
state.setValue(m_pageNumber, pageNumber);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (long) pageNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the class of the item which can be displayed by this panel.
|
||||||
|
*
|
||||||
|
* @return The class which objects can be displayed using this panel
|
||||||
|
*/
|
||||||
|
protected abstract Class<? extends ContentItem> getAllowedClass();
|
||||||
|
|
||||||
|
protected Element generateBaseXML(ContentItem item,
|
||||||
|
Element parent,
|
||||||
|
PageState state) {
|
||||||
|
Element content = parent.newChildElement(
|
||||||
|
String.format("cms:%sData", getAllowedClass().getSimpleName()),
|
||||||
|
CMS.CMS_XML_NS);
|
||||||
|
|
||||||
|
exportAttributes(content);
|
||||||
|
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called by CCM the start the rendering process.
|
||||||
|
* It uses the returned value of {@link #getAllowedClass()} to check if
|
||||||
|
* the item is of the correct type.
|
||||||
|
*
|
||||||
|
* @param state
|
||||||
|
* @param parent
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void generateXML(final PageState state, final Element parent) {
|
||||||
|
ContentItem item = getContentItem(state);
|
||||||
|
|
||||||
|
if (!isVisible(state)
|
||||||
|
|| (item == null)
|
||||||
|
|| !(item.getClass().equals(getAllowedClass()))) {
|
||||||
|
s_log.debug("Skipping generate XML isVisible: " + isVisible(
|
||||||
|
state) + " item "
|
||||||
|
+ (item == null ? null : item.getOID()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state == null) {
|
||||||
|
s_log.warn("No page state provided!");
|
||||||
|
}
|
||||||
|
|
||||||
|
generateXML(item, parent, state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -22,6 +22,7 @@ package com.arsdigita.cms.contenttypes.ui;
|
||||||
import com.arsdigita.bebop.Component;
|
import com.arsdigita.bebop.Component;
|
||||||
import com.arsdigita.bebop.ControlLink;
|
import com.arsdigita.bebop.ControlLink;
|
||||||
import com.arsdigita.bebop.Label;
|
import com.arsdigita.bebop.Label;
|
||||||
|
import com.arsdigita.bebop.Link;
|
||||||
import com.arsdigita.bebop.PageState;
|
import com.arsdigita.bebop.PageState;
|
||||||
import com.arsdigita.bebop.Table;
|
import com.arsdigita.bebop.Table;
|
||||||
import com.arsdigita.bebop.event.TableActionEvent;
|
import com.arsdigita.bebop.event.TableActionEvent;
|
||||||
|
|
@ -32,6 +33,8 @@ import com.arsdigita.bebop.table.TableColumnModel;
|
||||||
import com.arsdigita.bebop.table.TableModel;
|
import com.arsdigita.bebop.table.TableModel;
|
||||||
import com.arsdigita.bebop.table.TableModelBuilder;
|
import com.arsdigita.bebop.table.TableModelBuilder;
|
||||||
import com.arsdigita.bebop.util.GlobalizationUtil;
|
import com.arsdigita.bebop.util.GlobalizationUtil;
|
||||||
|
import com.arsdigita.cms.CMS;
|
||||||
|
import com.arsdigita.cms.ContentSection;
|
||||||
import com.arsdigita.cms.ItemSelectionModel;
|
import com.arsdigita.cms.ItemSelectionModel;
|
||||||
import com.arsdigita.cms.SecurityManager;
|
import com.arsdigita.cms.SecurityManager;
|
||||||
import com.arsdigita.cms.contenttypes.GenericContact;
|
import com.arsdigita.cms.contenttypes.GenericContact;
|
||||||
|
|
@ -39,8 +42,10 @@ import com.arsdigita.cms.contenttypes.GenericContactTypeCollection;
|
||||||
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit;
|
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit;
|
||||||
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitContactCollection;
|
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitContactCollection;
|
||||||
import com.arsdigita.cms.contenttypes.util.ContenttypesGlobalizationUtil;
|
import com.arsdigita.cms.contenttypes.util.ContenttypesGlobalizationUtil;
|
||||||
|
import com.arsdigita.cms.dispatcher.ItemResolver;
|
||||||
import com.arsdigita.cms.dispatcher.Utilities;
|
import com.arsdigita.cms.dispatcher.Utilities;
|
||||||
import com.arsdigita.dispatcher.DispatcherHelper;
|
import com.arsdigita.dispatcher.DispatcherHelper;
|
||||||
|
import com.arsdigita.domain.DataObjectNotFoundException;
|
||||||
import com.arsdigita.util.LockableImpl;
|
import com.arsdigita.util.LockableImpl;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|
@ -77,7 +82,8 @@ public class GenericOrganizationalUnitContactTable extends Table implements
|
||||||
tabModel.add(new TableColumn(
|
tabModel.add(new TableColumn(
|
||||||
1,
|
1,
|
||||||
ContenttypesGlobalizationUtil.globalize(
|
ContenttypesGlobalizationUtil.globalize(
|
||||||
"cms.contenttypes.ui.genericorgaunit.contact.title").localize()));
|
"cms.contenttypes.ui.genericorgaunit.contact.title").localize(),
|
||||||
|
TABLE_COL_EDIT));
|
||||||
tabModel.add(new TableColumn(
|
tabModel.add(new TableColumn(
|
||||||
2,
|
2,
|
||||||
ContenttypesGlobalizationUtil.globalize(
|
ContenttypesGlobalizationUtil.globalize(
|
||||||
|
|
@ -101,6 +107,8 @@ public class GenericOrganizationalUnitContactTable extends Table implements
|
||||||
tabModel.get(2).setCellRenderer(new DeleteCellRenderer());
|
tabModel.get(2).setCellRenderer(new DeleteCellRenderer());
|
||||||
tabModel.get(3).setCellRenderer(new UpCellRenderer());
|
tabModel.get(3).setCellRenderer(new UpCellRenderer());
|
||||||
tabModel.get(3).setCellRenderer(new DownCellRenderer());
|
tabModel.get(3).setCellRenderer(new DownCellRenderer());
|
||||||
|
|
||||||
|
addTableActionListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private class GenericOrganizationalUnitTableModelBuilder
|
private class GenericOrganizationalUnitTableModelBuilder
|
||||||
|
|
@ -212,7 +220,20 @@ public class GenericOrganizationalUnitContactTable extends Table implements
|
||||||
SecurityManager.EDIT_ITEM,
|
SecurityManager.EDIT_ITEM,
|
||||||
orgaunit);
|
orgaunit);
|
||||||
if (canEdit) {
|
if (canEdit) {
|
||||||
ControlLink link = new ControlLink(value.toString());
|
GenericContact contact;
|
||||||
|
try {
|
||||||
|
contact = new GenericContact((BigDecimal) key);
|
||||||
|
} catch (DataObjectNotFoundException ex) {
|
||||||
|
return new Label(value.toString());
|
||||||
|
}
|
||||||
|
ContentSection section = CMS.getContext().getContentSection();
|
||||||
|
ItemResolver resolver = section.getItemResolver();
|
||||||
|
Link link =
|
||||||
|
new Link(value.toString(),
|
||||||
|
resolver.generateItemURL(state,
|
||||||
|
contact,
|
||||||
|
section,
|
||||||
|
contact.getVersion()));
|
||||||
return link;
|
return link;
|
||||||
} else {
|
} else {
|
||||||
return new Label(value.toString());
|
return new Label(value.toString());
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,250 @@
|
||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
import com.arsdigita.cms.ContentItem;
|
||||||
|
import com.arsdigita.cms.contenttypes.GenericAddress;
|
||||||
|
import com.arsdigita.cms.contenttypes.GenericContact;
|
||||||
|
import com.arsdigita.cms.contenttypes.GenericContactEntry;
|
||||||
|
import com.arsdigita.cms.contenttypes.GenericContactEntryCollection;
|
||||||
|
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnit;
|
||||||
|
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitContactCollection;
|
||||||
|
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitPersonCollection;
|
||||||
|
import com.arsdigita.cms.contenttypes.GenericPerson;
|
||||||
|
import com.arsdigita.cms.contenttypes.GenericPersonContactCollection;
|
||||||
|
import com.arsdigita.xml.Element;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Jens Pelzetter
|
||||||
|
*/
|
||||||
|
public class GenericOrganizationalUnitPanel extends CompoundContentItemPanel {
|
||||||
|
|
||||||
|
public static final String SHOW_CONTACTS = "contacts";
|
||||||
|
public static final String SHOW_MEMBERS = "members";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getDefaultForShowParam() {
|
||||||
|
return SHOW_CONTACTS;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Class<? extends ContentItem> getAllowedClass() {
|
||||||
|
return GenericOrganizationalUnit.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void generateContactsXML(GenericOrganizationalUnit orga,
|
||||||
|
Element parent, PageState state) {
|
||||||
|
GenericOrganizationalUnitContactCollection contacts;
|
||||||
|
contacts = orga.getContacts();
|
||||||
|
|
||||||
|
long pageNumber = getPageNumber(state);
|
||||||
|
|
||||||
|
long pageCount = getPageCount(contacts.size());
|
||||||
|
long begin = getPaginatorBegin(pageNumber);
|
||||||
|
long count = getPaginatorCount(begin, contacts.size());
|
||||||
|
long end = getPaginatorEnd(begin, count);
|
||||||
|
pageNumber = normalizePageNumber(pageCount, pageNumber);
|
||||||
|
|
||||||
|
contacts.setRange((int) begin, (int) end);
|
||||||
|
createPaginatorElement(parent, pageNumber, pageCount, begin, end,
|
||||||
|
count);
|
||||||
|
|
||||||
|
Element contactsElem = parent.newChildElement("contacts");
|
||||||
|
while (contacts.next()) {
|
||||||
|
GenericContact contact;
|
||||||
|
contact = contacts.getContact();
|
||||||
|
|
||||||
|
generateContactXML(contact,
|
||||||
|
contactsElem,
|
||||||
|
state,
|
||||||
|
Integer.toString(contacts.getContactOrder()),
|
||||||
|
true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void generateMembersXML(GenericOrganizationalUnit orga,
|
||||||
|
Element parent, PageState state) {
|
||||||
|
GenericOrganizationalUnitPersonCollection persons;
|
||||||
|
persons = orga.getPersons();
|
||||||
|
long pageNumber = getPageNumber(state);
|
||||||
|
|
||||||
|
Element personsElem = parent.newChildElement("members");
|
||||||
|
|
||||||
|
long pageCount = getPageCount(persons.size());
|
||||||
|
long begin = getPaginatorBegin(pageNumber);
|
||||||
|
long count = getPaginatorCount(begin, persons.size());
|
||||||
|
long end = getPaginatorEnd(begin, persons.size());
|
||||||
|
pageNumber = normalizePageNumber(pageCount, pageNumber);
|
||||||
|
|
||||||
|
persons.setRange((int) begin, (int) end);
|
||||||
|
createPaginatorElement(parent, pageNumber, pageCount, begin, end,
|
||||||
|
count);
|
||||||
|
|
||||||
|
while (persons.next()) {
|
||||||
|
GenericPerson person;
|
||||||
|
person = persons.getPerson();
|
||||||
|
|
||||||
|
Element personElem = personsElem.newChildElement("member");
|
||||||
|
Element title = personElem.newChildElement("title");
|
||||||
|
title.setText(person.getTitle());
|
||||||
|
|
||||||
|
if ((person.getTitlePre() != null)
|
||||||
|
&& !person.getTitlePre().isEmpty()) {
|
||||||
|
Element titlePre = personElem.newChildElement("titlePre");
|
||||||
|
titlePre.setText(person.getTitlePre());
|
||||||
|
}
|
||||||
|
|
||||||
|
Element surname = personElem.newChildElement("surname");
|
||||||
|
surname.setText(person.getSurname());
|
||||||
|
|
||||||
|
Element givenName = personElem.newChildElement("givenname");
|
||||||
|
givenName.setText(person.getGivenName());
|
||||||
|
|
||||||
|
if ((person.getTitlePost() != null)
|
||||||
|
&& !person.getTitlePost().isEmpty()) {
|
||||||
|
Element titlePost = personElem.newChildElement("titlePost");
|
||||||
|
titlePost.setText(person.getTitlePost());
|
||||||
|
}
|
||||||
|
|
||||||
|
GenericPersonContactCollection contacts = person.getContacts();
|
||||||
|
if ((contacts != null) && (contacts.size() > 0)) {
|
||||||
|
Element contactsElem =
|
||||||
|
personElem.newChildElement("contacts");
|
||||||
|
while (contacts.next()) {
|
||||||
|
GenericContact contact = contacts.getContact();
|
||||||
|
|
||||||
|
generateContactXML(contact, contactsElem, state, contacts.
|
||||||
|
getContactOrder(), false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void generateContactXML(final GenericContact contact,
|
||||||
|
final Element parent,
|
||||||
|
final PageState state,
|
||||||
|
final String order,
|
||||||
|
final boolean withPerson) {
|
||||||
|
Element contactElem = parent.newChildElement("contact");
|
||||||
|
contactElem.addAttribute("order", order);
|
||||||
|
|
||||||
|
Element title = contactElem.newChildElement("title");
|
||||||
|
title.setText(contact.getTitle());
|
||||||
|
|
||||||
|
Element typeElem = contactElem.newChildElement("type");
|
||||||
|
typeElem.setText(contact.getContactType());
|
||||||
|
|
||||||
|
if (withPerson) {
|
||||||
|
GenericPerson person = contact.getPerson();
|
||||||
|
if (person != null) {
|
||||||
|
Element personElem = contactElem.newChildElement("person");
|
||||||
|
if ((person.getTitlePre() != null) && !person.getTitlePre().
|
||||||
|
isEmpty()) {
|
||||||
|
Element titlePre =
|
||||||
|
personElem.newChildElement("titlePre");
|
||||||
|
titlePre.setText(person.getTitlePre());
|
||||||
|
}
|
||||||
|
|
||||||
|
Element givenName = contactElem.newChildElement("givenname");
|
||||||
|
givenName.setText(person.getGivenName());
|
||||||
|
|
||||||
|
Element surname = contactElem.newChildElement("surname");
|
||||||
|
surname.setText(person.getSurname());
|
||||||
|
|
||||||
|
if ((person.getTitlePost() != null)
|
||||||
|
&& !person.getTitlePost().isEmpty()) {
|
||||||
|
Element titlePost = contactElem.newChildElement(
|
||||||
|
"titlePost");
|
||||||
|
titlePost.setText(person.getTitlePost());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GenericContactEntryCollection contactEntries =
|
||||||
|
contact.getContactEntries();
|
||||||
|
if ((contactEntries != null)
|
||||||
|
&& (contactEntries.size() > 0)) {
|
||||||
|
Element contactEntriesElem =
|
||||||
|
contactElem.newChildElement("contactEntries");
|
||||||
|
while (contactEntries.next()) {
|
||||||
|
GenericContactEntry contactEntry =
|
||||||
|
contactEntries.getContactEntry();
|
||||||
|
Element contactEntryElem =
|
||||||
|
contactEntriesElem.newChildElement(
|
||||||
|
"contactEntry");
|
||||||
|
contactEntryElem.addAttribute("key",
|
||||||
|
contactEntry.getKey());
|
||||||
|
Element valueElem = contactEntryElem.newChildElement(
|
||||||
|
"value");
|
||||||
|
valueElem.setText(contactEntry.getValue());
|
||||||
|
|
||||||
|
if ((contactEntry.getDescription() != null)
|
||||||
|
&& !contactEntry.getDescription().isEmpty()) {
|
||||||
|
Element descElem = contactEntryElem.newChildElement(
|
||||||
|
"description");
|
||||||
|
descElem.setText(contactEntry.getDescription());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GenericAddress address = contact.getAddress();
|
||||||
|
if (address != null) {
|
||||||
|
Element addressElem = contactElem.newChildElement(
|
||||||
|
"address");
|
||||||
|
Element postalCode = addressElem.newChildElement(
|
||||||
|
"postalCode");
|
||||||
|
postalCode.setText(address.getPostalCode());
|
||||||
|
Element data = addressElem.newChildElement("data");
|
||||||
|
data.setText(address.getAddress());
|
||||||
|
Element country = addressElem.newChildElement("country");
|
||||||
|
country.setText(address.getIsoCountryCode());
|
||||||
|
Element theState = addressElem.newChildElement("state");
|
||||||
|
theState.setText(address.getState());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void generateXML(ContentItem item, Element element,
|
||||||
|
PageState state) {
|
||||||
|
Element content = generateBaseXML(item, element, state);
|
||||||
|
|
||||||
|
Element availableData = content.newChildElement("availableData");
|
||||||
|
|
||||||
|
GenericOrganizationalUnit orga = (GenericOrganizationalUnit) item;
|
||||||
|
|
||||||
|
if ((orga.getContacts() != null)
|
||||||
|
&& (orga.getContacts().size() > 0)) {
|
||||||
|
availableData.newChildElement("contacts");
|
||||||
|
}
|
||||||
|
if ((orga.getPersons() != null)
|
||||||
|
&& (orga.getPersons().size() > 0)) {
|
||||||
|
availableData.newChildElement("members");
|
||||||
|
}
|
||||||
|
|
||||||
|
String show = getShowParam(state);
|
||||||
|
if (SHOW_CONTACTS.equals(show)) {
|
||||||
|
generateContactsXML(orga, content, state);
|
||||||
|
} else if (SHOW_MEMBERS.equals(show)) {
|
||||||
|
generateMembersXML(orga, content, state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -26,6 +26,7 @@ import com.arsdigita.bebop.PageState;
|
||||||
import com.arsdigita.bebop.event.FormSectionEvent;
|
import com.arsdigita.bebop.event.FormSectionEvent;
|
||||||
import com.arsdigita.bebop.form.Option;
|
import com.arsdigita.bebop.form.Option;
|
||||||
import com.arsdigita.bebop.form.SingleSelect;
|
import com.arsdigita.bebop.form.SingleSelect;
|
||||||
|
import com.arsdigita.bebop.parameters.NotEmptyValidationListener;
|
||||||
import com.arsdigita.bebop.parameters.NotNullValidationListener;
|
import com.arsdigita.bebop.parameters.NotNullValidationListener;
|
||||||
import com.arsdigita.bebop.parameters.ParameterModel;
|
import com.arsdigita.bebop.parameters.ParameterModel;
|
||||||
import com.arsdigita.bebop.parameters.StringParameter;
|
import com.arsdigita.bebop.parameters.StringParameter;
|
||||||
|
|
@ -89,12 +90,29 @@ public class GenericOrganizationalUnitPersonAddForm extends BasicItemForm {
|
||||||
role = roles.getRelationAttribute();
|
role = roles.getRelationAttribute();
|
||||||
roleSelect.addOption(new Option(role.getKey(), role.getName()));
|
roleSelect.addOption(new Option(role.getKey(), role.getName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
add(roleSelect);
|
add(roleSelect);
|
||||||
|
|
||||||
/*TextField role = new TextField(roleParam);
|
add(new Label(ContenttypesGlobalizationUtil.globalize(
|
||||||
role.addValidationListener(new NotNullValidationListener());
|
"cms.contenttypes.ui.genericorgaunit.person.status")));
|
||||||
add(role);*/
|
ParameterModel statusModel =
|
||||||
|
new StringParameter(
|
||||||
|
GenericOrganizationalUnitPersonCollection.STATUS);
|
||||||
|
SingleSelect statusSelect = new SingleSelect(statusModel);
|
||||||
|
statusSelect.addValidationListener(new NotNullValidationListener());
|
||||||
|
statusSelect.addOption(new Option("",
|
||||||
|
new Label((String) ContenttypesGlobalizationUtil.
|
||||||
|
globalize("cms.ui.select_one").localize())));
|
||||||
|
RelationAttributeCollection statusColl = new RelationAttributeCollection(
|
||||||
|
getStatusAttributeName());
|
||||||
|
statusColl.addLanguageFilter(DispatcherHelper.getNegotiatedLocale().
|
||||||
|
getLanguage());
|
||||||
|
while (statusColl.next()) {
|
||||||
|
RelationAttribute status;
|
||||||
|
status = statusColl.getRelationAttribute();
|
||||||
|
statusSelect.addOption(new Option(status.getKey(), status.getName()));
|
||||||
|
}
|
||||||
|
add(statusSelect);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -121,7 +139,9 @@ public class GenericOrganizationalUnitPersonAddForm extends BasicItemForm {
|
||||||
}
|
}
|
||||||
orga.addPerson((GenericPerson) data.get(ITEM_SEARCH),
|
orga.addPerson((GenericPerson) data.get(ITEM_SEARCH),
|
||||||
(String) data.get(
|
(String) data.get(
|
||||||
GenericOrganizationalUnitPersonCollection.PERSON_ROLE));
|
GenericOrganizationalUnitPersonCollection.PERSON_ROLE),
|
||||||
|
(String) data.get(
|
||||||
|
GenericOrganizationalUnitPersonCollection.STATUS));
|
||||||
}
|
}
|
||||||
|
|
||||||
init(fse);
|
init(fse);
|
||||||
|
|
@ -132,6 +152,10 @@ public class GenericOrganizationalUnitPersonAddForm extends BasicItemForm {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String getRoleAttributeName() {
|
protected String getRoleAttributeName() {
|
||||||
return "GenericOrganizationRole";
|
return "GenericOrganizationalUnitRole";
|
||||||
|
}
|
||||||
|
|
||||||
|
protected String getStatusAttributeName() {
|
||||||
|
return "GenericOrganizationalUnitMemberStatus";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,6 @@ import com.arsdigita.bebop.table.TableColumnModel;
|
||||||
import com.arsdigita.bebop.table.TableModel;
|
import com.arsdigita.bebop.table.TableModel;
|
||||||
import com.arsdigita.bebop.table.TableModelBuilder;
|
import com.arsdigita.bebop.table.TableModelBuilder;
|
||||||
import com.arsdigita.cms.CMS;
|
import com.arsdigita.cms.CMS;
|
||||||
import com.arsdigita.cms.ContentItem;
|
|
||||||
import com.arsdigita.cms.ContentSection;
|
import com.arsdigita.cms.ContentSection;
|
||||||
import com.arsdigita.cms.ItemSelectionModel;
|
import com.arsdigita.cms.ItemSelectionModel;
|
||||||
import com.arsdigita.cms.RelationAttributeCollection;
|
import com.arsdigita.cms.RelationAttributeCollection;
|
||||||
|
|
@ -59,6 +58,7 @@ public class GenericOrganizationalUnitPersonsTable extends Table implements
|
||||||
private final static Logger s_log = Logger.getLogger(
|
private final static Logger s_log = Logger.getLogger(
|
||||||
GenericOrganizationalUnitPersonsTable.class);
|
GenericOrganizationalUnitPersonsTable.class);
|
||||||
private final String TABLE_COL_EDIT = "table_col_edit";
|
private final String TABLE_COL_EDIT = "table_col_edit";
|
||||||
|
private final String TABLE_COL_EDIT_LINK = "table_col_edit_link";
|
||||||
private final String TABLE_COL_DEL = "table_col_del";
|
private final String TABLE_COL_DEL = "table_col_del";
|
||||||
private ItemSelectionModel m_itemModel;
|
private ItemSelectionModel m_itemModel;
|
||||||
|
|
||||||
|
|
@ -83,6 +83,11 @@ public class GenericOrganizationalUnitPersonsTable extends Table implements
|
||||||
new TableColumn(
|
new TableColumn(
|
||||||
2,
|
2,
|
||||||
ContenttypesGlobalizationUtil.globalize(
|
ContenttypesGlobalizationUtil.globalize(
|
||||||
|
"cms.contenttypes.ui.genericorgaunit.persons.status").localize()));
|
||||||
|
tabModel.add(
|
||||||
|
new TableColumn(
|
||||||
|
3,
|
||||||
|
ContenttypesGlobalizationUtil.globalize(
|
||||||
"cms.contenttypes.ui.genericorgaunit.persons.delete").localize(),
|
"cms.contenttypes.ui.genericorgaunit.persons.delete").localize(),
|
||||||
TABLE_COL_DEL));
|
TABLE_COL_DEL));
|
||||||
|
|
||||||
|
|
@ -90,7 +95,7 @@ public class GenericOrganizationalUnitPersonsTable extends Table implements
|
||||||
new GenericOrganizationalUnitTableModelBuilder(itemModel));
|
new GenericOrganizationalUnitTableModelBuilder(itemModel));
|
||||||
|
|
||||||
tabModel.get(0).setCellRenderer(new EditCellRenderer());
|
tabModel.get(0).setCellRenderer(new EditCellRenderer());
|
||||||
tabModel.get(2).setCellRenderer(new DeleteCellRenderer());
|
tabModel.get(3).setCellRenderer(new DeleteCellRenderer());
|
||||||
|
|
||||||
addTableActionListener(this);
|
addTableActionListener(this);
|
||||||
}
|
}
|
||||||
|
|
@ -166,6 +171,16 @@ public class GenericOrganizationalUnitPersonsTable extends Table implements
|
||||||
"cms.ui.unknownRole").localize();
|
"cms.ui.unknownRole").localize();
|
||||||
}
|
}
|
||||||
case 2:
|
case 2:
|
||||||
|
RelationAttributeCollection status = new RelationAttributeCollection(
|
||||||
|
getStatusAttributeName(),
|
||||||
|
m_personsCollection.getStatus());
|
||||||
|
if (status.next()) {
|
||||||
|
return status.getName();
|
||||||
|
} else {
|
||||||
|
return ContenttypesGlobalizationUtil.globalize(
|
||||||
|
"cms.ui.unknownStatus").localize();
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
return ContenttypesGlobalizationUtil.globalize(
|
return ContenttypesGlobalizationUtil.globalize(
|
||||||
"cms.ui.delete").localize();
|
"cms.ui.delete").localize();
|
||||||
default:
|
default:
|
||||||
|
|
@ -210,7 +225,8 @@ public class GenericOrganizationalUnitPersonsTable extends Table implements
|
||||||
}
|
}
|
||||||
ContentSection section = CMS.getContext().getContentSection();
|
ContentSection section = CMS.getContext().getContentSection();
|
||||||
ItemResolver resolver = section.getItemResolver();
|
ItemResolver resolver = section.getItemResolver();
|
||||||
Link link = new Link(value.toString(),
|
Link link =
|
||||||
|
new Link(value.toString(),
|
||||||
resolver.generateItemURL(state,
|
resolver.generateItemURL(state,
|
||||||
person,
|
person,
|
||||||
section,
|
section,
|
||||||
|
|
@ -272,14 +288,10 @@ public class GenericOrganizationalUnitPersonsTable extends Table implements
|
||||||
|
|
||||||
TableColumn col = getColumnModel().get(event.getColumn().intValue());
|
TableColumn col = getColumnModel().get(event.getColumn().intValue());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (col.getHeaderKey().toString().equals(TABLE_COL_EDIT)) {
|
if (col.getHeaderKey().toString().equals(TABLE_COL_EDIT)) {
|
||||||
} else if (col.getHeaderKey().toString().equals(TABLE_COL_DEL)) {
|
} else if (col.getHeaderKey().toString().equals(TABLE_COL_DEL)) {
|
||||||
s_log.debug("Removing person assoc...");
|
s_log.debug("Removing person assoc...");
|
||||||
orga.removePerson(person);
|
orga.removePerson(person);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -292,6 +304,9 @@ public class GenericOrganizationalUnitPersonsTable extends Table implements
|
||||||
|
|
||||||
protected String getRoleAttributeName() {
|
protected String getRoleAttributeName() {
|
||||||
return "GenericOrganizationalUnitRole";
|
return "GenericOrganizationalUnitRole";
|
||||||
|
}
|
||||||
|
|
||||||
|
protected String getStatusAttributeName() {
|
||||||
|
return "GenericOrganizationalUnitMemberStatus";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ package com.arsdigita.cms.contenttypes.ui;
|
||||||
import com.arsdigita.bebop.Component;
|
import com.arsdigita.bebop.Component;
|
||||||
import com.arsdigita.bebop.ControlLink;
|
import com.arsdigita.bebop.ControlLink;
|
||||||
import com.arsdigita.bebop.Label;
|
import com.arsdigita.bebop.Label;
|
||||||
|
import com.arsdigita.bebop.Link;
|
||||||
import com.arsdigita.bebop.PageState;
|
import com.arsdigita.bebop.PageState;
|
||||||
import com.arsdigita.bebop.Table;
|
import com.arsdigita.bebop.Table;
|
||||||
import com.arsdigita.bebop.event.TableActionEvent;
|
import com.arsdigita.bebop.event.TableActionEvent;
|
||||||
|
|
@ -30,6 +31,8 @@ import com.arsdigita.bebop.table.TableColumn;
|
||||||
import com.arsdigita.bebop.table.TableColumnModel;
|
import com.arsdigita.bebop.table.TableColumnModel;
|
||||||
import com.arsdigita.bebop.table.TableModel;
|
import com.arsdigita.bebop.table.TableModel;
|
||||||
import com.arsdigita.bebop.table.TableModelBuilder;
|
import com.arsdigita.bebop.table.TableModelBuilder;
|
||||||
|
import com.arsdigita.cms.CMS;
|
||||||
|
import com.arsdigita.cms.ContentSection;
|
||||||
import com.arsdigita.cms.ItemSelectionModel;
|
import com.arsdigita.cms.ItemSelectionModel;
|
||||||
import com.arsdigita.cms.SecurityManager;
|
import com.arsdigita.cms.SecurityManager;
|
||||||
import com.arsdigita.cms.contenttypes.GenericContact;
|
import com.arsdigita.cms.contenttypes.GenericContact;
|
||||||
|
|
@ -37,65 +40,91 @@ import com.arsdigita.cms.contenttypes.GenericContactTypeCollection;
|
||||||
import com.arsdigita.cms.contenttypes.GenericPersonContactCollection;
|
import com.arsdigita.cms.contenttypes.GenericPersonContactCollection;
|
||||||
import com.arsdigita.cms.contenttypes.GenericPerson;
|
import com.arsdigita.cms.contenttypes.GenericPerson;
|
||||||
import com.arsdigita.cms.contenttypes.util.ContenttypesGlobalizationUtil;
|
import com.arsdigita.cms.contenttypes.util.ContenttypesGlobalizationUtil;
|
||||||
|
import com.arsdigita.cms.dispatcher.ItemResolver;
|
||||||
import com.arsdigita.cms.dispatcher.Utilities;
|
import com.arsdigita.cms.dispatcher.Utilities;
|
||||||
import com.arsdigita.cms.util.GlobalizationUtil;
|
import com.arsdigita.cms.util.GlobalizationUtil;
|
||||||
import com.arsdigita.dispatcher.DispatcherHelper;
|
import com.arsdigita.dispatcher.DispatcherHelper;
|
||||||
|
import com.arsdigita.domain.DataObjectNotFoundException;
|
||||||
import com.arsdigita.util.LockableImpl;
|
import com.arsdigita.util.LockableImpl;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lists all existing contact entries for a selected contact.
|
* Lists all existing contact entries for a selected contact.
|
||||||
*
|
*
|
||||||
* @author Sören Bernstein (quasimodo) quasi@barkhof.uni-bremen.de
|
* @author Sören Bernstein (quasimodo) quasi@barkhof.uni-bremen.de
|
||||||
*/
|
*/
|
||||||
public class GenericPersonContactTable extends Table implements TableActionListener {
|
public class GenericPersonContactTable extends Table implements
|
||||||
|
TableActionListener {
|
||||||
|
|
||||||
private final String TABLE_COL_EDIT = "table_col_edit";
|
private final static Logger s_log = Logger.getLogger(
|
||||||
private final String TABLE_COL_DEL = "table_col_del";
|
GenericPersonContactTable.class);
|
||||||
|
private final static String TABLE_COL_EDIT = "table_col_edit";
|
||||||
|
private final static String TABLE_COL_DEL = "table_col_del";
|
||||||
|
private final static String TABLE_COL_UP = "table_col_up";
|
||||||
|
private final static String TABLE_COL_DOWN = "table_col_down";
|
||||||
private ItemSelectionModel m_itemModel;
|
private ItemSelectionModel m_itemModel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new instance of GenericPersonGenericPersonTable
|
* Creates a new instance of GenericPersonGenericPersonTable
|
||||||
*/
|
*/
|
||||||
public GenericPersonContactTable(final ItemSelectionModel itemModel) {
|
public GenericPersonContactTable(final ItemSelectionModel itemModel) {
|
||||||
|
|
||||||
super();
|
super();
|
||||||
|
s_log.debug("Constructor begin...");
|
||||||
this.m_itemModel = itemModel;
|
this.m_itemModel = itemModel;
|
||||||
|
|
||||||
// if table is empty:
|
// if table is empty:
|
||||||
setEmptyView(new Label(ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.contacts.none")));
|
setEmptyView(new Label(ContenttypesGlobalizationUtil.globalize(
|
||||||
|
"cms.contenttypes.ui.person.contacts.none")));
|
||||||
TableColumnModel tab_model = getColumnModel();
|
TableColumnModel tab_model = getColumnModel();
|
||||||
|
|
||||||
// define columns
|
tab_model.add(new TableColumn(0, ContenttypesGlobalizationUtil.globalize(
|
||||||
tab_model.add(new TableColumn(0, ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.contact.order").localize(), TABLE_COL_EDIT));
|
"cms.contenttypes.ui.person.contact.type").localize()));
|
||||||
tab_model.add(new TableColumn(1, ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.contact.type").localize()));
|
tab_model.add(new TableColumn(1, ContenttypesGlobalizationUtil.globalize(
|
||||||
tab_model.add(new TableColumn(2, ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.contact.title").localize()));
|
"cms.contenttypes.ui.person.contact.title").localize(),
|
||||||
tab_model.add(new TableColumn(3, ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.contact.action").localize(), TABLE_COL_DEL));
|
TABLE_COL_EDIT));
|
||||||
|
tab_model.add(new TableColumn(2, ContenttypesGlobalizationUtil.globalize(
|
||||||
|
"cms.contenttypes.ui.person.contact.del").localize(),
|
||||||
|
TABLE_COL_DEL));
|
||||||
|
tab_model.add(new TableColumn(3, ContenttypesGlobalizationUtil.globalize(
|
||||||
|
"cms.contenttypes.ui.person_contact.up").localize(),
|
||||||
|
TABLE_COL_UP));
|
||||||
|
tab_model.add(new TableColumn(4, ContenttypesGlobalizationUtil.globalize(
|
||||||
|
"cms.contenttypes.ui.person_contact.down").localize(),
|
||||||
|
TABLE_COL_DOWN));
|
||||||
|
|
||||||
setModelBuilder(new GenericPersonTableModelBuilder(itemModel));
|
setModelBuilder(new GenericPersonTableModelBuilder(itemModel));
|
||||||
|
|
||||||
tab_model.get(2).setCellRenderer(new EditCellRenderer());
|
tab_model.get(1).setCellRenderer(new EditCellRenderer());
|
||||||
tab_model.get(3).setCellRenderer(new DeleteCellRenderer());
|
tab_model.get(2).setCellRenderer(new DeleteCellRenderer());
|
||||||
|
tab_model.get(3).setCellRenderer(new UpCellRenderer());
|
||||||
|
tab_model.get(4).setCellRenderer(new DownCellRenderer());
|
||||||
|
|
||||||
addTableActionListener(this);
|
addTableActionListener(this);
|
||||||
|
s_log.debug("Constructor finished.");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* XXXX
|
* XXXX
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private class GenericPersonTableModelBuilder extends LockableImpl implements TableModelBuilder {
|
private class GenericPersonTableModelBuilder extends LockableImpl implements
|
||||||
|
TableModelBuilder {
|
||||||
|
|
||||||
private ItemSelectionModel m_itemModel;
|
private ItemSelectionModel m_itemModel;
|
||||||
|
|
||||||
public GenericPersonTableModelBuilder(ItemSelectionModel itemModel) {
|
public GenericPersonTableModelBuilder(ItemSelectionModel itemModel) {
|
||||||
|
s_log.debug("Creating table model builder...");
|
||||||
m_itemModel = itemModel;
|
m_itemModel = itemModel;
|
||||||
|
s_log.debug("Created table model builder.");
|
||||||
}
|
}
|
||||||
|
|
||||||
public TableModel makeModel(Table table, PageState state) {
|
public TableModel makeModel(Table table, PageState state) {
|
||||||
|
s_log.debug("Making model...");
|
||||||
table.getRowSelectionModel().clearSelection(state);
|
table.getRowSelectionModel().clearSelection(state);
|
||||||
GenericPerson person = (GenericPerson) m_itemModel.getSelectedObject(state);
|
GenericPerson person = (GenericPerson) m_itemModel.getSelectedObject(
|
||||||
|
state);
|
||||||
|
s_log.debug("Made model...");
|
||||||
return new GenericPersonTableModel(table, state, person);
|
return new GenericPersonTableModel(table, state, person);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -110,11 +139,15 @@ public class GenericPersonContactTable extends Table implements TableActionListe
|
||||||
private Table m_table;
|
private Table m_table;
|
||||||
private GenericPersonContactCollection m_contactCollection;
|
private GenericPersonContactCollection m_contactCollection;
|
||||||
private GenericContact m_contact;
|
private GenericContact m_contact;
|
||||||
private GenericContactTypeCollection contacttypes = new GenericContactTypeCollection();
|
private GenericContactTypeCollection contacttypes =
|
||||||
|
new GenericContactTypeCollection();
|
||||||
|
|
||||||
private GenericPersonTableModel(Table t, PageState ps, GenericPerson person) {
|
private GenericPersonTableModel(Table t, PageState ps,
|
||||||
|
GenericPerson person) {
|
||||||
|
s_log.debug("Creating table model...");
|
||||||
m_table = t;
|
m_table = t;
|
||||||
m_contactCollection = person.getContacts();
|
m_contactCollection = person.getContacts();
|
||||||
|
s_log.debug("Created table model...");
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getColumnCount() {
|
public int getColumnCount() {
|
||||||
|
|
@ -125,18 +158,17 @@ public class GenericPersonContactTable extends Table implements TableActionListe
|
||||||
* Check collection for the existence of another row.
|
* Check collection for the existence of another row.
|
||||||
*
|
*
|
||||||
* If exists, fetch the value of current GenericPersonEntryCollection object
|
* If exists, fetch the value of current GenericPersonEntryCollection object
|
||||||
* into m_comntact class variable.
|
* into m_contact class variable.
|
||||||
*/
|
*/
|
||||||
public boolean nextRow() {
|
public boolean nextRow() {
|
||||||
|
s_log.debug("Next row?");
|
||||||
if (m_contactCollection != null && m_contactCollection.next()) {
|
if (m_contactCollection != null && m_contactCollection.next()) {
|
||||||
m_contact = m_contactCollection.getContact();
|
m_contact = m_contactCollection.getContact();
|
||||||
|
s_log.debug("Yes.");
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
s_log.debug("No.");
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -145,15 +177,26 @@ public class GenericPersonContactTable extends Table implements TableActionListe
|
||||||
* @see com.arsdigita.bebop.table.TableModel#getElementAt(int)
|
* @see com.arsdigita.bebop.table.TableModel#getElementAt(int)
|
||||||
*/
|
*/
|
||||||
public Object getElementAt(int columnIndex) {
|
public Object getElementAt(int columnIndex) {
|
||||||
|
s_log.debug(String.format("Getting element at %d...",
|
||||||
|
columnIndex));
|
||||||
switch (columnIndex) {
|
switch (columnIndex) {
|
||||||
case 0:
|
case 0:
|
||||||
return m_contactCollection.getContactOrder();
|
s_log.debug(String.format(
|
||||||
|
"Getting human readable contact type for contact type \"%s\"...",
|
||||||
|
m_contactCollection.getContactType()));
|
||||||
|
s_log.debug(String.format(
|
||||||
|
"Human readable contact type is: \"%s\"...",
|
||||||
|
contacttypes.getRelationAttribute(
|
||||||
|
m_contactCollection.getContactType(),
|
||||||
|
DispatcherHelper.getNegotiatedLocale().
|
||||||
|
getLanguage())));
|
||||||
|
return contacttypes.getRelationAttribute(m_contactCollection.
|
||||||
|
getContactType(),
|
||||||
|
DispatcherHelper.
|
||||||
|
getNegotiatedLocale().getLanguage()).getName();
|
||||||
case 1:
|
case 1:
|
||||||
return contacttypes.getRelationAttribute(m_contactCollection.getContactType(),
|
|
||||||
DispatcherHelper.getNegotiatedLocale().getLanguage()).getName();
|
|
||||||
case 2:
|
|
||||||
return m_contact.getTitle();
|
return m_contact.getTitle();
|
||||||
case 3:
|
case 2:
|
||||||
return GlobalizationUtil.globalize("cms.ui.delete").localize();
|
return GlobalizationUtil.globalize("cms.ui.delete").localize();
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
|
|
@ -173,20 +216,35 @@ public class GenericPersonContactTable extends Table implements TableActionListe
|
||||||
* Check for the permissions to edit item and put either a Label or
|
* Check for the permissions to edit item and put either a Label or
|
||||||
* a ControlLink accordingly.
|
* a ControlLink accordingly.
|
||||||
*/
|
*/
|
||||||
private class EditCellRenderer extends LockableImpl implements TableCellRenderer {
|
private class EditCellRenderer extends LockableImpl implements
|
||||||
|
TableCellRenderer {
|
||||||
|
|
||||||
public Component getComponent(Table table, PageState state, Object value,
|
public Component getComponent(Table table, PageState state, Object value,
|
||||||
boolean isSelected, Object key,
|
boolean isSelected, Object key,
|
||||||
int row, int column) {
|
int row, int column) {
|
||||||
|
|
||||||
SecurityManager sm = Utilities.getSecurityManager(state);
|
SecurityManager sm = Utilities.getSecurityManager(state);
|
||||||
GenericPerson person = (GenericPerson) m_itemModel.getSelectedObject(state);
|
GenericPerson person = (GenericPerson) m_itemModel.getSelectedObject(
|
||||||
|
state);
|
||||||
|
|
||||||
boolean canEdit = sm.canAccess(state.getRequest(),
|
boolean canEdit = sm.canAccess(state.getRequest(),
|
||||||
SecurityManager.EDIT_ITEM,
|
SecurityManager.EDIT_ITEM,
|
||||||
person);
|
person);
|
||||||
if (canEdit) {
|
if (canEdit) {
|
||||||
ControlLink link = new ControlLink(value.toString());
|
GenericContact contact;
|
||||||
|
try {
|
||||||
|
contact = new GenericContact((BigDecimal) key);
|
||||||
|
} catch (DataObjectNotFoundException ex) {
|
||||||
|
return new Label(value.toString());
|
||||||
|
}
|
||||||
|
ContentSection section = CMS.getContext().getContentSection();
|
||||||
|
ItemResolver resolver = section.getItemResolver();
|
||||||
|
Link link =
|
||||||
|
new Link(value.toString(),
|
||||||
|
resolver.generateItemURL(state,
|
||||||
|
contact,
|
||||||
|
section,
|
||||||
|
contact.getVersion()));
|
||||||
return link;
|
return link;
|
||||||
} else {
|
} else {
|
||||||
return new Label(value.toString());
|
return new Label(value.toString());
|
||||||
|
|
@ -198,21 +256,25 @@ public class GenericPersonContactTable extends Table implements TableActionListe
|
||||||
* Check for the permissions to delete item and put either a Label or
|
* Check for the permissions to delete item and put either a Label or
|
||||||
* a ControlLink accordingly.
|
* a ControlLink accordingly.
|
||||||
*/
|
*/
|
||||||
private class DeleteCellRenderer extends LockableImpl implements TableCellRenderer {
|
private class DeleteCellRenderer extends LockableImpl implements
|
||||||
|
TableCellRenderer {
|
||||||
|
|
||||||
public Component getComponent(Table table, PageState state, Object value,
|
public Component getComponent(Table table, PageState state, Object value,
|
||||||
boolean isSelected, Object key,
|
boolean isSelected, Object key,
|
||||||
int row, int column) {
|
int row, int column) {
|
||||||
|
|
||||||
SecurityManager sm = Utilities.getSecurityManager(state);
|
SecurityManager sm = Utilities.getSecurityManager(state);
|
||||||
GenericPerson person = (GenericPerson) m_itemModel.getSelectedObject(state);
|
GenericPerson person = (GenericPerson) m_itemModel.getSelectedObject(
|
||||||
|
state);
|
||||||
|
|
||||||
boolean canDelete = sm.canAccess(state.getRequest(),
|
boolean canDelete = sm.canAccess(state.getRequest(),
|
||||||
SecurityManager.DELETE_ITEM,
|
SecurityManager.DELETE_ITEM,
|
||||||
person);
|
person);
|
||||||
if (canDelete) {
|
if (canDelete) {
|
||||||
ControlLink link = new ControlLink(value.toString());
|
ControlLink link = new ControlLink(value.toString());
|
||||||
link.setConfirmation((String) ContenttypesGlobalizationUtil.globalize("cms.contenttypes.ui.person.confirm_delete").localize());
|
link.setConfirmation((String) ContenttypesGlobalizationUtil.
|
||||||
|
globalize("cms.contenttypes.ui.person.confirm_delete").
|
||||||
|
localize());
|
||||||
return link;
|
return link;
|
||||||
} else {
|
} else {
|
||||||
return new Label(value.toString());
|
return new Label(value.toString());
|
||||||
|
|
@ -220,6 +282,56 @@ public class GenericPersonContactTable extends Table implements TableActionListe
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class UpCellRenderer extends LockableImpl implements
|
||||||
|
TableCellRenderer {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Component getComponent(
|
||||||
|
Table table,
|
||||||
|
PageState state,
|
||||||
|
Object value,
|
||||||
|
boolean isSelected,
|
||||||
|
Object key,
|
||||||
|
int row,
|
||||||
|
int col) {
|
||||||
|
|
||||||
|
if (0 == row) {
|
||||||
|
s_log.debug("Row is first row in table, don't show up-link");
|
||||||
|
return new Label("");
|
||||||
|
} else {
|
||||||
|
ControlLink link = new ControlLink("up");
|
||||||
|
return link;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class DownCellRenderer extends LockableImpl implements
|
||||||
|
TableCellRenderer {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Component getComponent(
|
||||||
|
Table table,
|
||||||
|
PageState state,
|
||||||
|
Object value,
|
||||||
|
boolean isSelected,
|
||||||
|
Object key,
|
||||||
|
int row,
|
||||||
|
int col) {
|
||||||
|
|
||||||
|
GenericPerson person = (GenericPerson) m_itemModel.getSelectedObject(
|
||||||
|
state);
|
||||||
|
GenericPersonContactCollection contacts = person.getContacts();
|
||||||
|
if ((contacts.size() - 1) == row) {
|
||||||
|
s_log.debug("Row is last row in table, don't show down-link");
|
||||||
|
return new Label("");
|
||||||
|
} else {
|
||||||
|
ControlLink link = new ControlLink("down");
|
||||||
|
return link;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provide implementation to TableActionListener method.
|
* Provide implementation to TableActionListener method.
|
||||||
* Code that comes into picture when a link on the table is clicked.
|
* Code that comes into picture when a link on the table is clicked.
|
||||||
|
|
@ -230,23 +342,28 @@ public class GenericPersonContactTable extends Table implements TableActionListe
|
||||||
PageState state = evt.getPageState();
|
PageState state = evt.getPageState();
|
||||||
|
|
||||||
// Get selected GenericContact
|
// Get selected GenericContact
|
||||||
GenericContact contact = new GenericContact(new BigDecimal(evt.getRowKey().toString()));
|
GenericContact contact = new GenericContact(new BigDecimal(evt.getRowKey().
|
||||||
|
toString()));
|
||||||
|
|
||||||
// Get GenericPerson
|
// Get GenericPerson
|
||||||
GenericPerson person = (GenericPerson) m_itemModel.getSelectedObject(state);
|
GenericPerson person = (GenericPerson) m_itemModel.getSelectedObject(
|
||||||
|
state);
|
||||||
|
|
||||||
|
GenericPersonContactCollection contacts = person.getContacts();
|
||||||
|
|
||||||
// Get selected column
|
// Get selected column
|
||||||
TableColumn col = getColumnModel().get(evt.getColumn().intValue());
|
TableColumn col = getColumnModel().get(evt.getColumn().intValue());
|
||||||
|
|
||||||
// Edit
|
// Edit
|
||||||
if (col.getHeaderKey().toString().equals(TABLE_COL_EDIT)) {
|
if (col.getHeaderKey().toString().equals(TABLE_COL_EDIT)) {
|
||||||
}
|
} // Delete
|
||||||
|
else if (col.getHeaderKey().toString().equals(TABLE_COL_DEL)) {
|
||||||
// Delete
|
|
||||||
if (col.getHeaderKey().toString().equals(TABLE_COL_DEL)) {
|
|
||||||
person.removeContact(contact);
|
person.removeContact(contact);
|
||||||
|
} else if (col.getHeaderKey().toString().equals(TABLE_COL_UP)) {
|
||||||
|
contacts.swapWithPrevious(contact);
|
||||||
|
} else if (col.getHeaderKey().toString().equals(TABLE_COL_DOWN)) {
|
||||||
|
contacts.swapWithNext(contact);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -78,11 +78,9 @@ import org.apache.log4j.Logger;
|
||||||
* @version $Revision: #15 $ $Date: 2004/08/16 $
|
* @version $Revision: #15 $ $Date: 2004/08/16 $
|
||||||
* @version $Id: ConfigRegistry.java 736 2005-09-01 10:46:05Z sskracic $
|
* @version $Id: ConfigRegistry.java 736 2005-09-01 10:46:05Z sskracic $
|
||||||
**/
|
**/
|
||||||
|
|
||||||
public class ConfigRegistry {
|
public class ConfigRegistry {
|
||||||
|
|
||||||
private static final Logger s_log = Logger.getLogger(ConfigRegistry.class);
|
private static final Logger s_log = Logger.getLogger(ConfigRegistry.class);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base url for registry location(s).
|
* Base url for registry location(s).
|
||||||
* (i.e. $CATALINA_HOME/webapps/$context/WEB-INF/conf/registry in a
|
* (i.e. $CATALINA_HOME/webapps/$context/WEB-INF/conf/registry in a
|
||||||
|
|
@ -90,7 +88,6 @@ public class ConfigRegistry {
|
||||||
*/
|
*/
|
||||||
private URL m_url;
|
private URL m_url;
|
||||||
private ClassLoader m_loader;
|
private ClassLoader m_loader;
|
||||||
|
|
||||||
private List m_packages = new ArrayList();
|
private List m_packages = new ArrayList();
|
||||||
private List m_contexts = new ArrayList();
|
private List m_contexts = new ArrayList();
|
||||||
private Map m_storage = new HashMap();
|
private Map m_storage = new HashMap();
|
||||||
|
|
@ -106,7 +103,6 @@ public class ConfigRegistry {
|
||||||
* @param loader The ClassLoader to use for retrieving registry
|
* @param loader The ClassLoader to use for retrieving registry
|
||||||
* configuration files.
|
* configuration files.
|
||||||
**/
|
**/
|
||||||
|
|
||||||
public ConfigRegistry(URL url, ClassLoader loader) {
|
public ConfigRegistry(URL url, ClassLoader loader) {
|
||||||
m_url = url;
|
m_url = url;
|
||||||
m_loader = loader;
|
m_loader = loader;
|
||||||
|
|
@ -122,7 +118,6 @@ public class ConfigRegistry {
|
||||||
*
|
*
|
||||||
* @see Thread#getContextClassLoader()
|
* @see Thread#getContextClassLoader()
|
||||||
**/
|
**/
|
||||||
|
|
||||||
public ConfigRegistry(URL url) {
|
public ConfigRegistry(URL url) {
|
||||||
this(url, Thread.currentThread().getContextClassLoader());
|
this(url, Thread.currentThread().getContextClassLoader());
|
||||||
}
|
}
|
||||||
|
|
@ -135,7 +130,6 @@ public class ConfigRegistry {
|
||||||
* @param loader The ClassLoader to use when searching for
|
* @param loader The ClassLoader to use when searching for
|
||||||
* registry configuration files.
|
* registry configuration files.
|
||||||
**/
|
**/
|
||||||
|
|
||||||
public ConfigRegistry(ClassLoader loader) {
|
public ConfigRegistry(ClassLoader loader) {
|
||||||
this(CCMResourceManager.getConfigURL(), loader);
|
this(CCMResourceManager.getConfigURL(), loader);
|
||||||
}
|
}
|
||||||
|
|
@ -156,7 +150,7 @@ public class ConfigRegistry {
|
||||||
*/
|
*/
|
||||||
private void initialize(URL url, ErrorList errs) {
|
private void initialize(URL url, ErrorList errs) {
|
||||||
|
|
||||||
ClassLoader ldr = new URLClassLoader(new URL[] {url}, null);
|
ClassLoader ldr = new URLClassLoader(new URL[]{url}, null);
|
||||||
|
|
||||||
RegistryConfig rc = new RegistryConfig();
|
RegistryConfig rc = new RegistryConfig();
|
||||||
load(rc, errs, ldr);
|
load(rc, errs, ldr);
|
||||||
|
|
@ -181,6 +175,7 @@ public class ConfigRegistry {
|
||||||
* This method is <strong>not</strong> supported API.
|
* This method is <strong>not</strong> supported API.
|
||||||
*/
|
*/
|
||||||
public final void initialize(String key) {
|
public final void initialize(String key) {
|
||||||
|
s_log.debug(String.format("Initalizing for key '%s'", key));
|
||||||
if (m_packages.contains(key)) {
|
if (m_packages.contains(key)) {
|
||||||
throw new IllegalArgumentException("already loaded: " + key);
|
throw new IllegalArgumentException("already loaded: " + key);
|
||||||
}
|
}
|
||||||
|
|
@ -205,7 +200,6 @@ public class ConfigRegistry {
|
||||||
*
|
*
|
||||||
* @return A list of package keys represented as Strings.
|
* @return A list of package keys represented as Strings.
|
||||||
**/
|
**/
|
||||||
|
|
||||||
public List getPackages() {
|
public List getPackages() {
|
||||||
return m_packages;
|
return m_packages;
|
||||||
}
|
}
|
||||||
|
|
@ -215,7 +209,6 @@ public class ConfigRegistry {
|
||||||
*
|
*
|
||||||
* @return A list of Class objects.
|
* @return A list of Class objects.
|
||||||
**/
|
**/
|
||||||
|
|
||||||
public List getContexts() {
|
public List getContexts() {
|
||||||
return m_contexts;
|
return m_contexts;
|
||||||
}
|
}
|
||||||
|
|
@ -232,18 +225,20 @@ public class ConfigRegistry {
|
||||||
* @throws IllegalArgumentException if this ConfigRegistry does
|
* @throws IllegalArgumentException if this ConfigRegistry does
|
||||||
* not contain a mapping for <code>context</code>
|
* not contain a mapping for <code>context</code>
|
||||||
**/
|
**/
|
||||||
|
|
||||||
public String getStorage(Class context) {
|
public String getStorage(Class context) {
|
||||||
if (!m_contexts.contains(context)) {
|
if (!m_contexts.contains(context)) {
|
||||||
throw new IllegalArgumentException
|
throw new IllegalArgumentException("no such context: " + context
|
||||||
("no such context: " + context +
|
+ "; available contexts="
|
||||||
"; available contexts=" + m_contexts +
|
+ m_contexts
|
||||||
"; context->storage map: " + m_storage);
|
+ "; context->storage map: "
|
||||||
|
+ m_storage);
|
||||||
}
|
}
|
||||||
return (String) m_storage.get(context);
|
return (String) m_storage.get(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addContext(Class context, String storage) {
|
private void addContext(Class context, String storage) {
|
||||||
|
s_log.debug(String.format("Adding context '%s', storage '%s'...",
|
||||||
|
context.getName(), storage));
|
||||||
m_contexts.add(context);
|
m_contexts.add(context);
|
||||||
m_storage.put(context, storage);
|
m_storage.put(context, storage);
|
||||||
}
|
}
|
||||||
|
|
@ -258,7 +253,6 @@ public class ConfigRegistry {
|
||||||
* @return true iff this ConfigRegistry contains a mapping for
|
* @return true iff this ConfigRegistry contains a mapping for
|
||||||
* <code>context</code>
|
* <code>context</code>
|
||||||
**/
|
**/
|
||||||
|
|
||||||
public boolean isConfigured(Class context) {
|
public boolean isConfigured(Class context) {
|
||||||
return m_contexts.contains(context);
|
return m_contexts.contains(context);
|
||||||
}
|
}
|
||||||
|
|
@ -275,9 +269,8 @@ public class ConfigRegistry {
|
||||||
* @throws IllegalArgumentException if this ConfigRegistry does
|
* @throws IllegalArgumentException if this ConfigRegistry does
|
||||||
* not contain a mapping for <code>ctx.getClass()</code>
|
* not contain a mapping for <code>ctx.getClass()</code>
|
||||||
**/
|
**/
|
||||||
|
|
||||||
public void load(ParameterContext ctx, ErrorList errs) {
|
public void load(ParameterContext ctx, ErrorList errs) {
|
||||||
for (Iterator it = m_loaders.iterator(); it.hasNext(); ) {
|
for (Iterator it = m_loaders.iterator(); it.hasNext();) {
|
||||||
ClassLoader ldr = (ClassLoader) it.next();
|
ClassLoader ldr = (ClassLoader) it.next();
|
||||||
load(ctx, errs, ldr);
|
load(ctx, errs, ldr);
|
||||||
}
|
}
|
||||||
|
|
@ -300,7 +293,9 @@ public class ConfigRegistry {
|
||||||
for (int i = m_loaders.size() - 1; i >= 0; i--) {
|
for (int i = m_loaders.size() - 1; i >= 0; i--) {
|
||||||
ClassLoader ldr = (ClassLoader) m_loaders.get(i);
|
ClassLoader ldr = (ClassLoader) m_loaders.get(i);
|
||||||
InputStream is = ldr.getResourceAsStream(resource);
|
InputStream is = ldr.getResourceAsStream(resource);
|
||||||
if (is != null) { return is; }
|
if (is != null) {
|
||||||
|
return is;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return m_loader.getResourceAsStream(resource);
|
return m_loader.getResourceAsStream(resource);
|
||||||
|
|
@ -316,12 +311,14 @@ public class ConfigRegistry {
|
||||||
Properties props = new Properties();
|
Properties props = new Properties();
|
||||||
InputStream is = ldr.getResourceAsStream(resource);
|
InputStream is = ldr.getResourceAsStream(resource);
|
||||||
if (is != null) {
|
if (is != null) {
|
||||||
try { props.load(is); }
|
try {
|
||||||
catch (IOException e) {
|
props.load(is);
|
||||||
|
} catch (IOException e) {
|
||||||
throw new UncheckedWrapperException(e);
|
throw new UncheckedWrapperException(e);
|
||||||
} finally {
|
} finally {
|
||||||
try { is.close(); }
|
try {
|
||||||
catch (IOException e) {
|
is.close();
|
||||||
|
} catch (IOException e) {
|
||||||
throw new UncheckedWrapperException(e);
|
throw new UncheckedWrapperException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -330,6 +327,7 @@ public class ConfigRegistry {
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ConfigRegistryParser extends DefaultHandler {
|
private class ConfigRegistryParser extends DefaultHandler {
|
||||||
|
|
||||||
public void startElement(String uri, String localName, String qn,
|
public void startElement(String uri, String localName, String qn,
|
||||||
Attributes attrs) {
|
Attributes attrs) {
|
||||||
if (localName.equals("config")) {
|
if (localName.equals("config")) {
|
||||||
|
|
@ -338,8 +336,8 @@ public class ConfigRegistry {
|
||||||
// XXX: Is there a better way to handle errors that
|
// XXX: Is there a better way to handle errors that
|
||||||
// includes line number information?
|
// includes line number information?
|
||||||
if (klass == null || storage == null) {
|
if (klass == null || storage == null) {
|
||||||
throw new IllegalArgumentException
|
throw new IllegalArgumentException(
|
||||||
("class and storage attributes are required");
|
"class and storage attributes are required");
|
||||||
}
|
}
|
||||||
|
|
||||||
Class context = Classes.loadClass(klass);
|
Class context = Classes.loadClass(klass);
|
||||||
|
|
@ -347,5 +345,4 @@ public class ConfigRegistry {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -133,34 +133,26 @@ import org.apache.log4j.Logger;
|
||||||
public class URL {
|
public class URL {
|
||||||
|
|
||||||
private static final Logger s_log = Logger.getLogger(URL.class);
|
private static final Logger s_log = Logger.getLogger(URL.class);
|
||||||
|
|
||||||
private static final String INTERNAL_DIR = "/__ccm__";
|
private static final String INTERNAL_DIR = "/__ccm__";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The standard location for JSP files.
|
* The standard location for JSP files.
|
||||||
*/
|
*/
|
||||||
public static final String JSP_DIR = INTERNAL_DIR + "/jsp";
|
public static final String JSP_DIR = INTERNAL_DIR + "/jsp";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The standard location for static files.
|
* The standard location for static files.
|
||||||
*/
|
*/
|
||||||
public static final String STATIC_DIR = INTERNAL_DIR + "/static";
|
public static final String STATIC_DIR = INTERNAL_DIR + "/static";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The standard location for XSL files.
|
* The standard location for XSL files.
|
||||||
*/
|
*/
|
||||||
public static final String XSL_DIR = INTERNAL_DIR + "/xsl";
|
public static final String XSL_DIR = INTERNAL_DIR + "/xsl";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The standard location for servlets.
|
* The standard location for servlets.
|
||||||
*/
|
*/
|
||||||
public static final String SERVLET_DIR = INTERNAL_DIR + "/servlet";
|
public static final String SERVLET_DIR = INTERNAL_DIR + "/servlet";
|
||||||
|
|
||||||
private static final ThreadLocal s_empty = new EmptyParameterMap();
|
private static final ThreadLocal s_empty = new EmptyParameterMap();
|
||||||
|
|
||||||
private StringBuffer m_url;
|
private StringBuffer m_url;
|
||||||
private ParameterMap m_params;
|
private ParameterMap m_params;
|
||||||
|
|
||||||
private int m_schemeEnd = -1;
|
private int m_schemeEnd = -1;
|
||||||
private int m_serverNameEnd = -1;
|
private int m_serverNameEnd = -1;
|
||||||
private int m_serverPortEnd = -1;
|
private int m_serverPortEnd = -1;
|
||||||
|
|
@ -186,24 +178,23 @@ public class URL {
|
||||||
|
|
||||||
Assert.exists(serverName, "String serverName");
|
Assert.exists(serverName, "String serverName");
|
||||||
Assert.isTrue(serverPort > 0,
|
Assert.isTrue(serverPort > 0,
|
||||||
"The serverPort must be greater than 0; " +
|
"The serverPort must be greater than 0; " + "I got "
|
||||||
"I got " + serverPort);
|
+ serverPort);
|
||||||
|
|
||||||
Assert.exists(contextPath, "String contextPath");
|
Assert.exists(contextPath, "String contextPath");
|
||||||
|
|
||||||
if (contextPath.startsWith("/")) {
|
if (contextPath.startsWith("/")) {
|
||||||
Assert.isTrue
|
Assert.isTrue(!contextPath.endsWith("/"),
|
||||||
(!contextPath.endsWith("/"),
|
"A contextPath starting with '/' must not end in '/'; "
|
||||||
"A contextPath starting with '/' must not end in '/'; " +
|
+ "I got '" + contextPath + "'");
|
||||||
"I got '" + contextPath + "'");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Assert.exists(servletPath, "String servletPath");
|
Assert.exists(servletPath, "String servletPath");
|
||||||
|
|
||||||
if (pathInfo != null) {
|
if (pathInfo != null) {
|
||||||
Assert.isTrue(pathInfo.startsWith("/"),
|
Assert.isTrue(pathInfo.startsWith("/"),
|
||||||
"I expected a pathInfo starting with '/' " +
|
"I expected a pathInfo starting with '/' "
|
||||||
"and got '" + pathInfo + "' instead");
|
+ "and got '" + pathInfo + "' instead");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -292,8 +283,8 @@ public class URL {
|
||||||
final String pathInfo,
|
final String pathInfo,
|
||||||
final ParameterMap params) {
|
final ParameterMap params) {
|
||||||
HttpServletRequest req = Web.getRequest();
|
HttpServletRequest req = Web.getRequest();
|
||||||
String dispatcherPrefix = req == null ? null :
|
String dispatcherPrefix = req == null ? null : DispatcherHelper.
|
||||||
DispatcherHelper.getDispatcherPrefix(req);
|
getDispatcherPrefix(req);
|
||||||
|
|
||||||
init(scheme,
|
init(scheme,
|
||||||
serverName,
|
serverName,
|
||||||
|
|
@ -346,17 +337,11 @@ public class URL {
|
||||||
* @return a debugging representation of this URL
|
* @return a debugging representation of this URL
|
||||||
*/
|
*/
|
||||||
public final String toDebugString() {
|
public final String toDebugString() {
|
||||||
return super.toString() + " " +
|
return super.toString() + " " + "[" + getScheme() + ","
|
||||||
"[" +
|
+ getServerName() + "," + getServerPort() + ","
|
||||||
getScheme() + "," +
|
+ getContextPath() + "," + getServletPath() + ","
|
||||||
getServerName() + "," +
|
+ getDispatcherPrefix() + "," + getPathInfo() + ","
|
||||||
getServerPort() + "," +
|
+ getQueryString() + "]";
|
||||||
getContextPath() + "," +
|
|
||||||
getServletPath() + "," +
|
|
||||||
getDispatcherPrefix() + "," +
|
|
||||||
getPathInfo() + "," +
|
|
||||||
getQueryString() +
|
|
||||||
"]";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -606,8 +591,7 @@ public class URL {
|
||||||
public static final URL root() {
|
public static final URL root() {
|
||||||
final WebConfig config = Web.getConfig();
|
final WebConfig config = Web.getConfig();
|
||||||
|
|
||||||
URL url = new URL
|
URL url = new URL(config.getDefaultScheme(),
|
||||||
(config.getDefaultScheme(),
|
|
||||||
config.getServer().getName(),
|
config.getServer().getName(),
|
||||||
config.getServer().getPort(),
|
config.getServer().getPort(),
|
||||||
"",
|
"",
|
||||||
|
|
@ -641,10 +625,9 @@ public class URL {
|
||||||
// If the URL is being generated outside of a WebContext,
|
// If the URL is being generated outside of a WebContext,
|
||||||
// use the request to fill out the URL.
|
// use the request to fill out the URL.
|
||||||
|
|
||||||
return new URL( sreq, params );
|
return new URL(sreq, params);
|
||||||
} else {
|
} else {
|
||||||
return new URL
|
return new URL(url.getScheme(),
|
||||||
(url.getScheme(),
|
|
||||||
url.getServerName(),
|
url.getServerName(),
|
||||||
url.getServerPort(),
|
url.getServerPort(),
|
||||||
url.getContextPath(),
|
url.getContextPath(),
|
||||||
|
|
@ -682,8 +665,7 @@ public class URL {
|
||||||
|
|
||||||
final HttpHost host = new HttpHost(sreq);
|
final HttpHost host = new HttpHost(sreq);
|
||||||
|
|
||||||
return new URL
|
return new URL(sreq.getScheme(),
|
||||||
(sreq.getScheme(),
|
|
||||||
host.getName(),
|
host.getName(),
|
||||||
host.getPort(),
|
host.getPort(),
|
||||||
config.getDispatcherContextPath(),
|
config.getDispatcherContextPath(),
|
||||||
|
|
@ -753,8 +735,7 @@ public class URL {
|
||||||
|
|
||||||
final HttpHost host = new HttpHost(sreq);
|
final HttpHost host = new HttpHost(sreq);
|
||||||
|
|
||||||
return new URL
|
return new URL(sreq.getScheme(),
|
||||||
(sreq.getScheme(),
|
|
||||||
host.getName(),
|
host.getName(),
|
||||||
host.getPort(),
|
host.getPort(),
|
||||||
config.getDispatcherContextPath(),
|
config.getDispatcherContextPath(),
|
||||||
|
|
@ -783,8 +764,7 @@ public class URL {
|
||||||
final ParameterMap params) {
|
final ParameterMap params) {
|
||||||
if (Assert.isEnabled() && pathInfo != null) {
|
if (Assert.isEnabled() && pathInfo != null) {
|
||||||
Assert.isTrue(pathInfo.startsWith("/"),
|
Assert.isTrue(pathInfo.startsWith("/"),
|
||||||
"pathInfo, if not null, must " +
|
"pathInfo, if not null, must " + "start with a slash");
|
||||||
"start with a slash");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pathInfo == null) {
|
if (pathInfo == null) {
|
||||||
|
|
@ -810,8 +790,7 @@ public class URL {
|
||||||
final String pathInfo) {
|
final String pathInfo) {
|
||||||
if (Assert.isEnabled() && pathInfo != null) {
|
if (Assert.isEnabled() && pathInfo != null) {
|
||||||
Assert.isTrue(pathInfo.startsWith("/"),
|
Assert.isTrue(pathInfo.startsWith("/"),
|
||||||
"pathInfo, if not null, must " +
|
"pathInfo, if not null, must " + "start with a slash");
|
||||||
"start with a slash");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pathInfo == null) {
|
if (pathInfo == null) {
|
||||||
|
|
@ -832,8 +811,7 @@ public class URL {
|
||||||
final ParameterMap params) {
|
final ParameterMap params) {
|
||||||
final WebConfig config = Web.getConfig();
|
final WebConfig config = Web.getConfig();
|
||||||
|
|
||||||
return new URL
|
return new URL(config.getDefaultScheme(),
|
||||||
(config.getDefaultScheme(),
|
|
||||||
config.getServer().getName(),
|
config.getServer().getName(),
|
||||||
config.getServer().getPort(),
|
config.getServer().getPort(),
|
||||||
config.getDispatcherContextPath(),
|
config.getDispatcherContextPath(),
|
||||||
|
|
@ -913,10 +891,16 @@ public class URL {
|
||||||
public final String toString() {
|
public final String toString() {
|
||||||
if (m_params == null) {
|
if (m_params == null) {
|
||||||
return m_url.substring(m_serverPortEnd);
|
return m_url.substring(m_serverPortEnd);
|
||||||
|
} else {
|
||||||
|
String str = m_url.substring(m_serverPortEnd);
|
||||||
|
if (str.contains("?")) {
|
||||||
|
return String.format("%s%s", m_url.substring(m_serverPortEnd),
|
||||||
|
m_params.toString().replace('?', '&'));
|
||||||
} else {
|
} else {
|
||||||
return m_url.substring(m_serverPortEnd) + m_params;
|
return m_url.substring(m_serverPortEnd) + m_params;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static final String getDispatcherPath() {
|
public static final String getDispatcherPath() {
|
||||||
final WebConfig config = Web.getConfig();
|
final WebConfig config = Web.getConfig();
|
||||||
|
|
@ -939,6 +923,7 @@ public class URL {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class EmptyParameterMap extends InternalRequestLocal {
|
private static class EmptyParameterMap extends InternalRequestLocal {
|
||||||
|
|
||||||
protected final Object initialValue() {
|
protected final Object initialValue() {
|
||||||
return new ParameterMap();
|
return new ParameterMap();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,5 @@ import com.arsdigita.kernel.ACSObject;
|
||||||
import com.arsdigita.cms.*;
|
import com.arsdigita.cms.*;
|
||||||
|
|
||||||
object type SciMember extends GenericPerson {
|
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 );
|
reference key ( ct_sciorga_members.member_id );
|
||||||
}
|
}
|
||||||
|
|
@ -14,9 +14,9 @@
|
||||||
|
|
||||||
<ctd:authoring-step
|
<ctd:authoring-step
|
||||||
labelKey="cms.contenttypes.shared.basic_properties.title"
|
labelKey="cms.contenttypes.shared.basic_properties.title"
|
||||||
labelBundle="com.arsdigita.cms.ui.CMSResources"
|
labelBundle="com.arsdigita.cms.CMSResources"
|
||||||
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
descriptionKey="cms.contenttypes.shared.basic_properties.description"
|
||||||
descriptionBundle="com.arsdigita.cms.ui.CMSResources"
|
descriptionBundle="com.arsdigita.cms.CMSResources"
|
||||||
component="com.arsdigita.cms.contenttypes.ui.SciMemberPropertiesStep"
|
component="com.arsdigita.cms.contenttypes.ui.SciMemberPropertiesStep"
|
||||||
ordering="1"/>
|
ordering="1"/>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
|
||||||
|
xmlns:define="/WEB-INF/bebop-define.tld"
|
||||||
|
xmlns:show="/WEB-INF/bebop-show.tld"
|
||||||
|
version="1.2">
|
||||||
|
|
||||||
|
<jsp:directive.page
|
||||||
|
import="com.arsdigita.london.navigation.NavigationModel,
|
||||||
|
com.arsdigita.london.navigation.cms.CMSNavigationModel"/>
|
||||||
|
|
||||||
|
<jsp:declaration>
|
||||||
|
NavigationModel model = new CMSNavigationModel();
|
||||||
|
</jsp:declaration>
|
||||||
|
|
||||||
|
<define:page name="itemPage" application="content-section"
|
||||||
|
title="APLAWS" cache="true">
|
||||||
|
|
||||||
|
<define:component name="categoryPath"
|
||||||
|
classname="com.arsdigita.london.navigation.ui.category.Path"/>
|
||||||
|
<jsp:scriptlet>
|
||||||
|
((com.arsdigita.london.navigation.ui.category.Path)categoryPath)
|
||||||
|
.setModel(model);
|
||||||
|
</jsp:scriptlet>
|
||||||
|
<define:component name="categoryMenu"
|
||||||
|
classname="com.arsdigita.london.navigation.ui.category.Menu"/>
|
||||||
|
<jsp:scriptlet>
|
||||||
|
((com.arsdigita.london.navigation.ui.category.Menu)categoryMenu)
|
||||||
|
.setModel(model);
|
||||||
|
</jsp:scriptlet>
|
||||||
|
<define:component name="itemXML"
|
||||||
|
classname="com.arsdigita.cms.dispatcher.ContentPanel"/>
|
||||||
|
<define:component name="orgaXML"
|
||||||
|
classname="com.arsdigita.cms.contenttypes.ui.SciDepartmentPanel"/>
|
||||||
|
|
||||||
|
<define:component name="relatedItems"
|
||||||
|
classname="com.arsdigita.london.navigation.ui.RelatedItems"/>
|
||||||
|
|
||||||
|
<define:component name="assignedTerms"
|
||||||
|
classname="com.arsdigita.aplaws.ui.AssignedItemTerms"/>
|
||||||
|
</define:page>
|
||||||
|
|
||||||
|
<show:all/>
|
||||||
|
|
||||||
|
|
||||||
|
</jsp:root>
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
|
||||||
|
xmlns:define="/WEB-INF/bebop-define.tld"
|
||||||
|
xmlns:show="/WEB-INF/bebop-show.tld"
|
||||||
|
version="1.2">
|
||||||
|
|
||||||
|
<jsp:directive.page
|
||||||
|
import="com.arsdigita.london.navigation.NavigationModel,
|
||||||
|
com.arsdigita.london.navigation.cms.CMSNavigationModel"/>
|
||||||
|
|
||||||
|
<jsp:declaration>
|
||||||
|
NavigationModel model = new CMSNavigationModel();
|
||||||
|
</jsp:declaration>
|
||||||
|
|
||||||
|
<define:page name="itemPage" application="content-section"
|
||||||
|
title="APLAWS" cache="true">
|
||||||
|
|
||||||
|
<define:component name="categoryPath"
|
||||||
|
classname="com.arsdigita.london.navigation.ui.category.Path"/>
|
||||||
|
<jsp:scriptlet>
|
||||||
|
((com.arsdigita.london.navigation.ui.category.Path)categoryPath)
|
||||||
|
.setModel(model);
|
||||||
|
</jsp:scriptlet>
|
||||||
|
<define:component name="categoryMenu"
|
||||||
|
classname="com.arsdigita.london.navigation.ui.category.Menu"/>
|
||||||
|
<jsp:scriptlet>
|
||||||
|
((com.arsdigita.london.navigation.ui.category.Menu)categoryMenu)
|
||||||
|
.setModel(model);
|
||||||
|
</jsp:scriptlet>
|
||||||
|
<define:component name="itemXML"
|
||||||
|
classname="com.arsdigita.cms.dispatcher.ContentPanel"/>
|
||||||
|
<define:component name="orgaXML"
|
||||||
|
classname="com.arsdigita.cms.contenttypes.ui.SciOrganizationPanel"/>
|
||||||
|
|
||||||
|
<define:component name="relatedItems"
|
||||||
|
classname="com.arsdigita.london.navigation.ui.RelatedItems"/>
|
||||||
|
|
||||||
|
<define:component name="assignedTerms"
|
||||||
|
classname="com.arsdigita.aplaws.ui.AssignedItemTerms"/>
|
||||||
|
</define:page>
|
||||||
|
|
||||||
|
<show:all/>
|
||||||
|
|
||||||
|
|
||||||
|
</jsp:root>
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
|
||||||
|
xmlns:define="/WEB-INF/bebop-define.tld"
|
||||||
|
xmlns:show="/WEB-INF/bebop-show.tld"
|
||||||
|
version="1.2">
|
||||||
|
|
||||||
|
<jsp:directive.page
|
||||||
|
import="com.arsdigita.london.navigation.NavigationModel,
|
||||||
|
com.arsdigita.london.navigation.cms.CMSNavigationModel"/>
|
||||||
|
|
||||||
|
<jsp:declaration>
|
||||||
|
NavigationModel model = new CMSNavigationModel();
|
||||||
|
</jsp:declaration>
|
||||||
|
|
||||||
|
<define:page name="itemPage" application="content-section"
|
||||||
|
title="APLAWS" cache="true">
|
||||||
|
|
||||||
|
<define:component name="categoryPath"
|
||||||
|
classname="com.arsdigita.london.navigation.ui.category.Path"/>
|
||||||
|
<jsp:scriptlet>
|
||||||
|
((com.arsdigita.london.navigation.ui.category.Path)categoryPath)
|
||||||
|
.setModel(model);
|
||||||
|
</jsp:scriptlet>
|
||||||
|
<define:component name="categoryMenu"
|
||||||
|
classname="com.arsdigita.london.navigation.ui.category.Menu"/>
|
||||||
|
<jsp:scriptlet>
|
||||||
|
((com.arsdigita.london.navigation.ui.category.Menu)categoryMenu)
|
||||||
|
.setModel(model);
|
||||||
|
</jsp:scriptlet>
|
||||||
|
<define:component name="itemXML"
|
||||||
|
classname="com.arsdigita.cms.dispatcher.ContentPanel"/>
|
||||||
|
<define:component name="orgaXML"
|
||||||
|
classname="com.arsdigita.cms.contenttypes.ui.SciProjectPanel"/>
|
||||||
|
|
||||||
|
<define:component name="relatedItems"
|
||||||
|
classname="com.arsdigita.london.navigation.ui.RelatedItems"/>
|
||||||
|
|
||||||
|
<define:component name="assignedTerms"
|
||||||
|
classname="com.arsdigita.aplaws.ui.AssignedItemTerms"/>
|
||||||
|
</define:page>
|
||||||
|
|
||||||
|
<show:all/>
|
||||||
|
|
||||||
|
|
||||||
|
</jsp:root>
|
||||||
|
|
@ -10,7 +10,10 @@
|
||||||
<xrd:context name="com.arsdigita.cms.dispatcher.SimpleXMLGenerator">
|
<xrd:context name="com.arsdigita.cms.dispatcher.SimpleXMLGenerator">
|
||||||
<xrd:adapter objectType="com.arsdigita.cms.contenttypes.SciOrganization"
|
<xrd:adapter objectType="com.arsdigita.cms.contenttypes.SciOrganization"
|
||||||
extends="com.arsdigita.cms.ContentPage">
|
extends="com.arsdigita.cms.ContentPage">
|
||||||
<xrd:associations rule="include">
|
<xrd:attributes rule="exclude">
|
||||||
|
<xrd:property name="/object/organizationDescription"/>
|
||||||
|
</xrd:attributes>
|
||||||
|
<!-- <xrd:associations rule="include">
|
||||||
<xrd:property name="/object/addendum"/>
|
<xrd:property name="/object/addendum"/>
|
||||||
<xrd:property name="/object/contacts"/>
|
<xrd:property name="/object/contacts"/>
|
||||||
<xrd:property name="/object/contacts/person"/>
|
<xrd:property name="/object/contacts/person"/>
|
||||||
|
|
@ -27,7 +30,7 @@
|
||||||
<xrd:property name="/object/persons/contacts"/>
|
<xrd:property name="/object/persons/contacts"/>
|
||||||
<xrd:property name="/object/persons/contacts/address"/>
|
<xrd:property name="/object/persons/contacts/address"/>
|
||||||
<xrd:property name="/object/persons/contacts/contactentries"/>
|
<xrd:property name="/object/persons/contacts/contactentries"/>
|
||||||
</xrd:associations>
|
</xrd:associations>-->
|
||||||
</xrd:adapter>
|
</xrd:adapter>
|
||||||
</xrd:context>
|
</xrd:context>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,14 @@
|
||||||
*/
|
*/
|
||||||
package com.arsdigita.cms.contenttypes;
|
package com.arsdigita.cms.contenttypes;
|
||||||
|
|
||||||
|
import com.arsdigita.cms.ContentSection;
|
||||||
|
import com.arsdigita.cms.ContentType;
|
||||||
|
import com.arsdigita.cms.lifecycle.LifecycleDefinition;
|
||||||
|
import com.arsdigita.util.parameter.Parameter;
|
||||||
|
import com.arsdigita.util.parameter.ResourceParameter;
|
||||||
|
import com.arsdigita.workflow.simple.WorkflowTemplate;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loader for {@link SciDepartment}.
|
* Loader for {@link SciDepartment}.
|
||||||
*
|
*
|
||||||
|
|
@ -26,12 +34,40 @@ package com.arsdigita.cms.contenttypes;
|
||||||
*/
|
*/
|
||||||
public class SciDepartmentLoader extends AbstractContentTypeLoader {
|
public class SciDepartmentLoader extends AbstractContentTypeLoader {
|
||||||
|
|
||||||
|
private ResourceParameter m_template;
|
||||||
private static final String[] TYPES = {
|
private static final String[] TYPES = {
|
||||||
"/WEB-INF/content-types/com/arsdigita/cms/contenttypes/SciDepartment.xml"
|
"/WEB-INF/content-types/com/arsdigita/cms/contenttypes/SciDepartment.xml"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public SciDepartmentLoader() {
|
||||||
|
super();
|
||||||
|
|
||||||
|
m_template = new ResourceParameter(
|
||||||
|
"com.arsdigita.cms.contenttypes.SciDepartmentTemplate",
|
||||||
|
Parameter.REQUIRED,
|
||||||
|
"/WEB-INF/content-types/com/arsdigita/"
|
||||||
|
+ "cms/contenttypes/scidepartment-item.jsp");
|
||||||
|
|
||||||
|
register(m_template);
|
||||||
|
}
|
||||||
|
|
||||||
public String[] getTypes() {
|
public String[] getTypes() {
|
||||||
return TYPES;
|
return TYPES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void prepareSection(final ContentSection section,
|
||||||
|
final ContentType type,
|
||||||
|
final LifecycleDefinition lifecycle,
|
||||||
|
final WorkflowTemplate workflow) {
|
||||||
|
super.prepareSection(section, type, lifecycle, workflow);
|
||||||
|
|
||||||
|
setDefaultTemplate("SciDepartment Item",
|
||||||
|
"scidepartment-item",
|
||||||
|
(InputStream) get(m_template),
|
||||||
|
section,
|
||||||
|
type,
|
||||||
|
lifecycle,
|
||||||
|
workflow);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -40,8 +40,6 @@ import java.math.BigDecimal;
|
||||||
*/
|
*/
|
||||||
public class SciMember extends GenericPerson {
|
public class SciMember extends GenericPerson {
|
||||||
|
|
||||||
public static final String ASSOCIATED_MEMBER = "associatedMember";
|
|
||||||
public static final String FORMER_MEMBER = "formerMember";
|
|
||||||
public static final String BASE_DATA_OBJECT_TYPE =
|
public static final String BASE_DATA_OBJECT_TYPE =
|
||||||
"com.arsdigita.cms.contenttypes.SciMember";
|
"com.arsdigita.cms.contenttypes.SciMember";
|
||||||
private static final SciOrganizationConfig s_config =
|
private static final SciOrganizationConfig s_config =
|
||||||
|
|
@ -74,20 +72,4 @@ public class SciMember extends GenericPerson {
|
||||||
public static SciOrganizationConfig getConfig() {
|
public static SciOrganizationConfig getConfig() {
|
||||||
return s_config;
|
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_MEMBER);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAssociatedMember(Boolean associatedMember) {
|
|
||||||
set(ASSOCIATED_MEMBER, associatedMember);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,10 @@ public class SciOrganizationConfig extends AbstractConfig {
|
||||||
private final Parameter m_organizationAddDepartmentHide;
|
private final Parameter m_organizationAddDepartmentHide;
|
||||||
private final Parameter m_organizationAddProjectHide;
|
private final Parameter m_organizationAddProjectHide;
|
||||||
private final Parameter m_organizationAddContactHide;
|
private final Parameter m_organizationAddContactHide;
|
||||||
|
private final Parameter m_organizationMembersAllInOne;
|
||||||
|
private final Parameter m_organizationMembersMerge;
|
||||||
|
private final Parameter m_organizationProjectsAllInOne;
|
||||||
|
private final Parameter m_organizationProjectsMerge;
|
||||||
private final Parameter m_departmentAddPersonHide;
|
private final Parameter m_departmentAddPersonHide;
|
||||||
private final Parameter m_departmentAddSubDepartmentHide;
|
private final Parameter m_departmentAddSubDepartmentHide;
|
||||||
private final Parameter m_departmentAddProjectHide;
|
private final Parameter m_departmentAddProjectHide;
|
||||||
|
|
@ -33,6 +37,8 @@ public class SciOrganizationConfig extends AbstractConfig {
|
||||||
private final Parameter m_projectFundingHide;
|
private final Parameter m_projectFundingHide;
|
||||||
private final Parameter m_projectFundingDhtml;
|
private final Parameter m_projectFundingDhtml;
|
||||||
private final Parameter m_projectMaterialsHide;
|
private final Parameter m_projectMaterialsHide;
|
||||||
|
private final Parameter m_projectMembersAllInOne;
|
||||||
|
private final Parameter m_projectMembersMerge;
|
||||||
|
|
||||||
public SciOrganizationConfig() {
|
public SciOrganizationConfig() {
|
||||||
|
|
||||||
|
|
@ -52,6 +58,22 @@ public class SciOrganizationConfig extends AbstractConfig {
|
||||||
"com.arsdigita.cms.contenttypes.sciorganization.add_contact_hide",
|
"com.arsdigita.cms.contenttypes.sciorganization.add_contact_hide",
|
||||||
Parameter.REQUIRED,
|
Parameter.REQUIRED,
|
||||||
Boolean.FALSE);
|
Boolean.FALSE);
|
||||||
|
m_organizationMembersAllInOne = new BooleanParameter(
|
||||||
|
"com.arsdigita.cms.contenttypes.sciorganization.members_all_in_one",
|
||||||
|
Parameter.REQUIRED,
|
||||||
|
Boolean.FALSE);
|
||||||
|
m_organizationMembersMerge = new BooleanParameter(
|
||||||
|
"com.arsdigita.cms.contenttypes.sciorganization.members_merge",
|
||||||
|
Parameter.REQUIRED,
|
||||||
|
Boolean.TRUE);
|
||||||
|
m_organizationProjectsAllInOne = new BooleanParameter(
|
||||||
|
"com.arsdigita.cms.contenttypes.sciorganization.projects_all_in_one",
|
||||||
|
Parameter.REQUIRED,
|
||||||
|
Boolean.FALSE);
|
||||||
|
m_organizationProjectsMerge = new BooleanParameter(
|
||||||
|
"com.arsdigita.cms.contenttypes.sciorganization.projects_merge",
|
||||||
|
Parameter.REQUIRED,
|
||||||
|
Boolean.TRUE);
|
||||||
m_departmentAddPersonHide = new BooleanParameter(
|
m_departmentAddPersonHide = new BooleanParameter(
|
||||||
"com.arsdigita.cms.contenttypes.scidepartment.add_person_hide",
|
"com.arsdigita.cms.contenttypes.scidepartment.add_person_hide",
|
||||||
Parameter.REQUIRED,
|
Parameter.REQUIRED,
|
||||||
|
|
@ -59,7 +81,7 @@ public class SciOrganizationConfig extends AbstractConfig {
|
||||||
m_departmentAddSubDepartmentHide = new BooleanParameter(
|
m_departmentAddSubDepartmentHide = new BooleanParameter(
|
||||||
"com.arsdigita.cms.contenttypes.scidepartment.add_subdepartment_hide",
|
"com.arsdigita.cms.contenttypes.scidepartment.add_subdepartment_hide",
|
||||||
Parameter.REQUIRED,
|
Parameter.REQUIRED,
|
||||||
Boolean.FALSE);
|
Boolean.TRUE);
|
||||||
m_departmentAddProjectHide = new BooleanParameter(
|
m_departmentAddProjectHide = new BooleanParameter(
|
||||||
"com.arsdigita.cms.contenttypes.scidepartment.add_project_hide",
|
"com.arsdigita.cms.contenttypes.scidepartment.add_project_hide",
|
||||||
Parameter.REQUIRED,
|
Parameter.REQUIRED,
|
||||||
|
|
@ -71,7 +93,7 @@ public class SciOrganizationConfig extends AbstractConfig {
|
||||||
m_departmentSetSuperDepartmentHide = new BooleanParameter(
|
m_departmentSetSuperDepartmentHide = new BooleanParameter(
|
||||||
"com.arsdigita.cms.contenttypes.scidepartment.set_superdepartment_hide",
|
"com.arsdigita.cms.contenttypes.scidepartment.set_superdepartment_hide",
|
||||||
Parameter.REQUIRED,
|
Parameter.REQUIRED,
|
||||||
Boolean.FALSE);
|
Boolean.TRUE);
|
||||||
m_departmentAddContactHide = new BooleanParameter(
|
m_departmentAddContactHide = new BooleanParameter(
|
||||||
"com.arsdigita.cms.contenttypes.scidepartment.add_contact_hide",
|
"com.arsdigita.cms.contenttypes.scidepartment.add_contact_hide",
|
||||||
Parameter.REQUIRED,
|
Parameter.REQUIRED,
|
||||||
|
|
@ -91,11 +113,11 @@ public class SciOrganizationConfig extends AbstractConfig {
|
||||||
m_projectAddSubProjectHide = new BooleanParameter(
|
m_projectAddSubProjectHide = new BooleanParameter(
|
||||||
"com.arsdigita.cms.contenttypes.sciproject.add_subproject_hide",
|
"com.arsdigita.cms.contenttypes.sciproject.add_subproject_hide",
|
||||||
Parameter.REQUIRED,
|
Parameter.REQUIRED,
|
||||||
Boolean.FALSE);
|
Boolean.TRUE);
|
||||||
m_projectSetSuperProjectHide = new BooleanParameter(
|
m_projectSetSuperProjectHide = new BooleanParameter(
|
||||||
"com.arsdigita.cms.contenttypes.sciproject.set_superproject_hide",
|
"com.arsdigita.cms.contenttypes.sciproject.set_superproject_hide",
|
||||||
Parameter.REQUIRED,
|
Parameter.REQUIRED,
|
||||||
Boolean.FALSE);
|
Boolean.TRUE);
|
||||||
m_projectAddContactHide = new BooleanParameter(
|
m_projectAddContactHide = new BooleanParameter(
|
||||||
"com.arsdigita.cms.contenttypes.sciorganization.add_project_hide",
|
"com.arsdigita.cms.contenttypes.sciorganization.add_project_hide",
|
||||||
Parameter.REQUIRED,
|
Parameter.REQUIRED,
|
||||||
|
|
@ -126,22 +148,39 @@ public class SciOrganizationConfig extends AbstractConfig {
|
||||||
Parameter.REQUIRED,
|
Parameter.REQUIRED,
|
||||||
Boolean.FALSE);
|
Boolean.FALSE);
|
||||||
|
|
||||||
|
m_projectMembersAllInOne = new BooleanParameter(
|
||||||
|
"com.arsdigita.cms.contenttypes.sciproject.members_all_in_one",
|
||||||
|
Parameter.REQUIRED,
|
||||||
|
Boolean.TRUE);
|
||||||
|
m_projectMembersMerge = new BooleanParameter(
|
||||||
|
"com.arsdigita.cms.contenttypes.sciproject.members_merge",
|
||||||
|
Parameter.REQUIRED,
|
||||||
|
Boolean.FALSE);
|
||||||
|
|
||||||
register(m_organizationAddPersonHide);
|
register(m_organizationAddPersonHide);
|
||||||
register(m_organizationAddDepartmentHide);
|
register(m_organizationAddDepartmentHide);
|
||||||
register(m_organizationAddProjectHide);
|
register(m_organizationAddProjectHide);
|
||||||
|
register(m_organizationMembersAllInOne);
|
||||||
|
register(m_organizationMembersMerge);
|
||||||
|
register(m_organizationProjectsAllInOne);
|
||||||
|
register(m_organizationProjectsMerge);
|
||||||
|
|
||||||
register(m_departmentAddPersonHide);
|
register(m_departmentAddPersonHide);
|
||||||
register(m_departmentAddSubDepartmentHide);
|
register(m_departmentAddSubDepartmentHide);
|
||||||
register(m_departmentAddProjectHide);
|
register(m_departmentAddProjectHide);
|
||||||
register(m_departmentSetOrganizationHide);
|
register(m_departmentSetOrganizationHide);
|
||||||
register(m_departmentSetSuperDepartmentHide);
|
register(m_departmentSetSuperDepartmentHide);
|
||||||
|
|
||||||
register(m_projectAddPersonHide);
|
register(m_projectAddPersonHide);
|
||||||
register(m_projectAddOrganizationHide);
|
register(m_projectAddOrganizationHide);
|
||||||
register(m_projectAddDepartmentHide);
|
register(m_projectAddDepartmentHide);
|
||||||
register(m_projectAddSubProjectHide);
|
register(m_projectAddSubProjectHide);
|
||||||
register(m_projectSetSuperProjectHide);
|
register(m_projectSetSuperProjectHide);
|
||||||
|
|
||||||
register(m_organizationDescriptionDhtml);
|
register(m_organizationDescriptionDhtml);
|
||||||
register(m_departmentDescriptionDhtml);
|
register(m_departmentDescriptionDhtml);
|
||||||
register(m_projectDescriptionDhtml);
|
register(m_projectDescriptionDhtml);
|
||||||
|
|
||||||
register(m_organizationAddContactHide);
|
register(m_organizationAddContactHide);
|
||||||
register(m_departmentAddContactHide);
|
register(m_departmentAddContactHide);
|
||||||
register(m_projectAddContactHide);
|
register(m_projectAddContactHide);
|
||||||
|
|
@ -150,6 +189,9 @@ public class SciOrganizationConfig extends AbstractConfig {
|
||||||
register(m_projectFundingDhtml);
|
register(m_projectFundingDhtml);
|
||||||
register(m_projectMaterialsHide);
|
register(m_projectMaterialsHide);
|
||||||
|
|
||||||
|
register(m_projectMembersAllInOne);
|
||||||
|
register(m_projectMembersMerge);
|
||||||
|
|
||||||
loadInfo();
|
loadInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -169,6 +211,22 @@ public class SciOrganizationConfig extends AbstractConfig {
|
||||||
return (Boolean) get(m_organizationAddContactHide);
|
return (Boolean) get(m_organizationAddContactHide);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final boolean getOrganizationMembersAllInOne() {
|
||||||
|
return (Boolean) get(m_organizationMembersAllInOne);
|
||||||
|
}
|
||||||
|
|
||||||
|
public final boolean getOrganizationMembersMerge() {
|
||||||
|
return (Boolean) get(m_organizationMembersMerge);
|
||||||
|
}
|
||||||
|
|
||||||
|
public final boolean getOrganizationProjectsAllInOne() {
|
||||||
|
return (Boolean) get(m_organizationProjectsAllInOne);
|
||||||
|
}
|
||||||
|
|
||||||
|
public final boolean getOrganizationProjectsMerge() {
|
||||||
|
return (Boolean) get(m_organizationProjectsMerge);
|
||||||
|
}
|
||||||
|
|
||||||
public final boolean getDepartmentAddPersonHide() {
|
public final boolean getDepartmentAddPersonHide() {
|
||||||
return (Boolean) get(m_departmentAddPersonHide);
|
return (Boolean) get(m_departmentAddPersonHide);
|
||||||
}
|
}
|
||||||
|
|
@ -240,4 +298,12 @@ public class SciOrganizationConfig extends AbstractConfig {
|
||||||
public final boolean getProjectMaterialsHide() {
|
public final boolean getProjectMaterialsHide() {
|
||||||
return (Boolean) get(m_projectMaterialsHide);
|
return (Boolean) get(m_projectMaterialsHide);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final boolean getProjectMembersAllInOne() {
|
||||||
|
return (Boolean) get(m_projectMembersAllInOne);
|
||||||
|
}
|
||||||
|
|
||||||
|
public final boolean getProjectMembersMerge() {
|
||||||
|
return (Boolean) get(m_projectMembersMerge);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,26 @@ com.arsdigita.cms.contenttypes.sciorganization.add_contact_hide.purpose = Hide t
|
||||||
com.arsdigita.cms.contenttypes.sciorganization.add_contact_hide.example = false
|
com.arsdigita.cms.contenttypes.sciorganization.add_contact_hide.example = false
|
||||||
com.arsdigita.cms.contenttypes.sciorganization.add_contact_hide.format = [boolean]
|
com.arsdigita.cms.contenttypes.sciorganization.add_contact_hide.format = [boolean]
|
||||||
|
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.members_all_in_one.title = Members All-in-one
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.members_all_in_one.purpose = Show all members (active, associated and former) in one instead in three seprated lists
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.members_all_in_one.example = false
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.members_all_in_one.format = [boolean]
|
||||||
|
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.members_merge.title = Merge members
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.members_merge.purpose = Merge members from all departments and the organization into one list (or three list, for each status)
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.members_merge.example = true
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.members_merge.format = [boolean]
|
||||||
|
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.projects_all_in_one.title = Project All-in-one
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.projects_all_in_one.purpose = Show all projects (ongoing and finished) in one instead of two seperated lists.
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.projects_all_in_one.example = false
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.projects_all_in_one.format = [boolean]
|
||||||
|
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.projects_merge.title = Merge projects
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.projects_merge.purpose = Merge all projects from the organization and its departments into one list (or two list for ongoing and finished projects)
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.projects_merge.examle = true
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.projects_merge.format = [boolean]
|
||||||
|
|
||||||
com.arsdigita.cms.contenttypes.scidepartment.add_person_hide.title = Hide the person add step of SciDepartment
|
com.arsdigita.cms.contenttypes.scidepartment.add_person_hide.title = Hide the person add step of SciDepartment
|
||||||
com.arsdigita.cms.contenttypes.scidepartment.add_person_hide.purpose = Hide the person add step of SciDepartment
|
com.arsdigita.cms.contenttypes.scidepartment.add_person_hide.purpose = Hide the person add step of SciDepartment
|
||||||
com.arsdigita.cms.contenttypes.scidepartment.add_person_hide.example = false
|
com.arsdigita.cms.contenttypes.scidepartment.add_person_hide.example = false
|
||||||
|
|
@ -25,7 +45,7 @@ com.arsdigita.cms.contenttypes.scidepartment.add_person_hide.format = [boolean]
|
||||||
|
|
||||||
com.arsdigita.cms.contenttypes.scidepartment.add_subdepartment_hide.title = Hide the subdepartment add step of SciDepartment
|
com.arsdigita.cms.contenttypes.scidepartment.add_subdepartment_hide.title = Hide the subdepartment add step of SciDepartment
|
||||||
com.arsdigita.cms.contenttypes.scidepartment.add_subdepartment_hide.purpose = Hide the subdepartment add step of SciDepartment
|
com.arsdigita.cms.contenttypes.scidepartment.add_subdepartment_hide.purpose = Hide the subdepartment add step of SciDepartment
|
||||||
com.arsdigita.cms.contenttypes.scidepartment.add_subdepartment_hide.example = false
|
com.arsdigita.cms.contenttypes.scidepartment.add_subdepartment_hide.example = true
|
||||||
com.arsdigita.cms.contenttypes.scidepartment.add_subdepartment_hide.format = [boolean]
|
com.arsdigita.cms.contenttypes.scidepartment.add_subdepartment_hide.format = [boolean]
|
||||||
|
|
||||||
com.arsdigita.cms.contenttypes.scidepartment.set_organization_hide.title = Hide the organization set step of SciDepartment
|
com.arsdigita.cms.contenttypes.scidepartment.set_organization_hide.title = Hide the organization set step of SciDepartment
|
||||||
|
|
@ -35,7 +55,7 @@ com.arsdigita.cms.contenttypes.scidepartment.set_organization_hide.format = [boo
|
||||||
|
|
||||||
com.arsdigita.cms.contenttypes.scidepartment.set_superdepartment_hide.title = Hide the superdepartment set step of SciDepartment
|
com.arsdigita.cms.contenttypes.scidepartment.set_superdepartment_hide.title = Hide the superdepartment set step of SciDepartment
|
||||||
com.arsdigita.cms.contenttypes.scidepartment.set_superdepartment_hide.purpose = Hide the superdepartment set step of SciDepartment
|
com.arsdigita.cms.contenttypes.scidepartment.set_superdepartment_hide.purpose = Hide the superdepartment set step of SciDepartment
|
||||||
com.arsdigita.cms.contenttypes.scidepartment.set_superdepartment_hide.example = false
|
com.arsdigita.cms.contenttypes.scidepartment.set_superdepartment_hide.example = true
|
||||||
com.arsdigita.cms.contenttypes.scidepartment.set_superdepartment_hide.format = [boolean]
|
com.arsdigita.cms.contenttypes.scidepartment.set_superdepartment_hide.format = [boolean]
|
||||||
|
|
||||||
com.arsdigita.cms.contenttypes.scidepartment.add_contact_hide.title = Hide the contact add step of Scidepartment
|
com.arsdigita.cms.contenttypes.scidepartment.add_contact_hide.title = Hide the contact add step of Scidepartment
|
||||||
|
|
@ -60,12 +80,12 @@ com.arsdigita.cms.contenttypes.sciproject.add_department_hide = [boolean]
|
||||||
|
|
||||||
com.arsdigita.cms.contenttypes.sciproject.add_subproject_hide.title = Hide the subproject add step of SciProject
|
com.arsdigita.cms.contenttypes.sciproject.add_subproject_hide.title = Hide the subproject add step of SciProject
|
||||||
com.arsdigita.cms.contenttypes.sciproject.add_subproject_hide.purpose = Hide the subproject add step of SciProject
|
com.arsdigita.cms.contenttypes.sciproject.add_subproject_hide.purpose = Hide the subproject add step of SciProject
|
||||||
com.arsdigita.cms.contenttypes.sciproject.add_subproject_hide.example = false
|
com.arsdigita.cms.contenttypes.sciproject.add_subproject_hide.example = true
|
||||||
com.arsdigita.cms.contenttypes.sciproject.add_subproject_hide.format = [boolean]
|
com.arsdigita.cms.contenttypes.sciproject.add_subproject_hide.format = [boolean]
|
||||||
|
|
||||||
com.arsdigita.cms.contenttypes.sciproject.set_superproject_hide.title = Hide the superproject add step of SciProject
|
com.arsdigita.cms.contenttypes.sciproject.set_superproject_hide.title = Hide the superproject add step of SciProject
|
||||||
com.arsdigita.cms.contenttypes.sciproject.set_superproject_hide.purpose = Hide the superprojecft add step of SciProject
|
com.arsdigita.cms.contenttypes.sciproject.set_superproject_hide.purpose = Hide the superprojecft add step of SciProject
|
||||||
com.arsdigita.cms.contenttypes.sciproject.set_superproject_hide.example = false
|
com.arsdigita.cms.contenttypes.sciproject.set_superproject_hide.example = true
|
||||||
com.arsdigita.cms.contenttypes.sciproject.set_superproject_hide.format = [boolean]
|
com.arsdigita.cms.contenttypes.sciproject.set_superproject_hide.format = [boolean]
|
||||||
|
|
||||||
com.arsdigita.cms.contenttypes.sciorganization.description_dhtml.title = Toggles the DHTML for the description of SciOrganization
|
com.arsdigita.cms.contenttypes.sciorganization.description_dhtml.title = Toggles the DHTML for the description of SciOrganization
|
||||||
|
|
@ -103,3 +123,13 @@ com.arsdigita.cms.contenttypes.sciproject.materials_hide.purpose = Hides the ste
|
||||||
com.arsdigita.cms.contenttypes.sciproject.materials_hide.example = false
|
com.arsdigita.cms.contenttypes.sciproject.materials_hide.example = false
|
||||||
com.arsdigita.cms.contenttypes.sciproject.materials_hide.format = [boolean]
|
com.arsdigita.cms.contenttypes.sciproject.materials_hide.format = [boolean]
|
||||||
|
|
||||||
|
com.arsdigita.cms.contenttypes.sciproject.members_all_in_one.title = Members All-in-one
|
||||||
|
com.arsdigita.cms.contenttypes.sciproject.members_all_in_one.purpose = Show all members (active, associated and former) in one instead in three separated lists
|
||||||
|
com.arsdigita.cms.contenttypes.sciproject.members_all_in_one.example = true
|
||||||
|
com.arsdigita.cms.contenttypes.sciproject.members_all_in_one.format = [boolean]
|
||||||
|
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.members_merge.title = Merge members
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.members_merge.purpose = Merge members from all subproject into one list (or three list, for each status)
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.members_merge.example = false
|
||||||
|
com.arsdigita.cms.contenttypes.sciorganization.members_merge.format = [boolean]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,14 @@
|
||||||
*/
|
*/
|
||||||
package com.arsdigita.cms.contenttypes;
|
package com.arsdigita.cms.contenttypes;
|
||||||
|
|
||||||
|
import com.arsdigita.cms.ContentSection;
|
||||||
|
import com.arsdigita.cms.ContentType;
|
||||||
|
import com.arsdigita.cms.lifecycle.LifecycleDefinition;
|
||||||
|
import com.arsdigita.util.parameter.Parameter;
|
||||||
|
import com.arsdigita.util.parameter.ResourceParameter;
|
||||||
|
import com.arsdigita.workflow.simple.WorkflowTemplate;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loader for {@link SciOrganization}
|
* Loader for {@link SciOrganization}
|
||||||
*
|
*
|
||||||
|
|
@ -26,15 +34,21 @@ package com.arsdigita.cms.contenttypes;
|
||||||
*/
|
*/
|
||||||
public class SciOrganizationLoader extends AbstractContentTypeLoader {
|
public class SciOrganizationLoader extends AbstractContentTypeLoader {
|
||||||
|
|
||||||
|
private ResourceParameter m_template;
|
||||||
|
|
||||||
public SciOrganizationLoader() {
|
public SciOrganizationLoader() {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
/* Template.create("SciOrganization Description Only",
|
m_template = new ResourceParameter(
|
||||||
"Display only the description of a SciOrganization",
|
"com.arsdigita.cms.contenttypes.SciOrganizationTemplate",
|
||||||
"/WEB-INF/content-types/com/arsdigita/cms/contenttypes/"
|
Parameter.REQUIRED,
|
||||||
+ "SciOrganizationDescription.jsp");*/
|
"/WEB-INF/content-types/com/arsdigita/"
|
||||||
|
+ "cms/contenttypes/sciorganization-item.jsp");
|
||||||
|
|
||||||
|
register(m_template);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final String[] TYPES = {
|
private static final String[] TYPES = {
|
||||||
"/WEB-INF/content-types/com/arsdigita/cms/contenttypes/"
|
"/WEB-INF/content-types/com/arsdigita/cms/contenttypes/"
|
||||||
+ "SciOrganization.xml"
|
+ "SciOrganization.xml"
|
||||||
|
|
@ -44,4 +58,20 @@ public class SciOrganizationLoader extends AbstractContentTypeLoader {
|
||||||
public String[] getTypes() {
|
public String[] getTypes() {
|
||||||
return TYPES;
|
return TYPES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void prepareSection(final ContentSection section,
|
||||||
|
final ContentType type,
|
||||||
|
final LifecycleDefinition lifecycle,
|
||||||
|
final WorkflowTemplate workflow) {
|
||||||
|
super.prepareSection(section, type, lifecycle, workflow);
|
||||||
|
|
||||||
|
setDefaultTemplate("SciOrganization Item",
|
||||||
|
"sciorganization-item",
|
||||||
|
(InputStream) get(m_template),
|
||||||
|
section,
|
||||||
|
type,
|
||||||
|
lifecycle,
|
||||||
|
workflow);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,14 @@
|
||||||
*/
|
*/
|
||||||
package com.arsdigita.cms.contenttypes;
|
package com.arsdigita.cms.contenttypes;
|
||||||
|
|
||||||
|
import com.arsdigita.cms.ContentSection;
|
||||||
|
import com.arsdigita.cms.ContentType;
|
||||||
|
import com.arsdigita.cms.lifecycle.LifecycleDefinition;
|
||||||
|
import com.arsdigita.util.parameter.Parameter;
|
||||||
|
import com.arsdigita.util.parameter.ResourceParameter;
|
||||||
|
import com.arsdigita.workflow.simple.WorkflowTemplate;
|
||||||
|
import java.io.InputStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loader for {@link SciProject}
|
* Loader for {@link SciProject}
|
||||||
*
|
*
|
||||||
|
|
@ -26,12 +34,41 @@ package com.arsdigita.cms.contenttypes;
|
||||||
*/
|
*/
|
||||||
public class SciProjectLoader extends AbstractContentTypeLoader {
|
public class SciProjectLoader extends AbstractContentTypeLoader {
|
||||||
|
|
||||||
|
private ResourceParameter m_template;
|
||||||
private static final String[] TYPES = {
|
private static final String[] TYPES = {
|
||||||
"/WEB-INF/content-types/com/arsdigita/cms/contenttypes/SciProject.xml"
|
"/WEB-INF/content-types/com/arsdigita/cms/contenttypes/SciProject.xml"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public SciProjectLoader() {
|
||||||
|
super();
|
||||||
|
|
||||||
|
m_template = new ResourceParameter(
|
||||||
|
"com.arsdigita.cms.contenttypes.SciProjectTemplate",
|
||||||
|
Parameter.REQUIRED,
|
||||||
|
"/WEB-INF/content-types/com/arsdigita/"
|
||||||
|
+ "cms/contenttypes/sciproject-item.jsp");
|
||||||
|
|
||||||
|
register(m_template);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String[] getTypes() {
|
public String[] getTypes() {
|
||||||
return TYPES;
|
return TYPES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void prepareSection(final ContentSection section,
|
||||||
|
final ContentType type,
|
||||||
|
final LifecycleDefinition lifecycle,
|
||||||
|
final WorkflowTemplate workflow) {
|
||||||
|
super.prepareSection(section, type, lifecycle, workflow);
|
||||||
|
|
||||||
|
setDefaultTemplate("SciProject Item",
|
||||||
|
"sciproject-item",
|
||||||
|
(InputStream) get(m_template),
|
||||||
|
section,
|
||||||
|
type,
|
||||||
|
lifecycle,
|
||||||
|
workflow);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,478 @@
|
||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
import com.arsdigita.cms.ContentItem;
|
||||||
|
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitContactCollection;
|
||||||
|
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitPersonCollection;
|
||||||
|
import com.arsdigita.cms.contenttypes.GenericPerson;
|
||||||
|
import com.arsdigita.cms.contenttypes.SciDepartment;
|
||||||
|
import com.arsdigita.cms.contenttypes.SciDepartmentProjectsCollection;
|
||||||
|
import com.arsdigita.cms.contenttypes.SciDepartmentSubDepartmentsCollection;
|
||||||
|
import com.arsdigita.cms.contenttypes.SciOrganizationConfig;
|
||||||
|
import com.arsdigita.cms.contenttypes.SciProject;
|
||||||
|
import com.arsdigita.xml.Element;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Jens Pelzetter
|
||||||
|
*/
|
||||||
|
public class SciDepartmentPanel extends SciOrganizationBasePanel {
|
||||||
|
|
||||||
|
private static final Logger s_log = Logger.getLogger(
|
||||||
|
SciDepartmentPanel.class);
|
||||||
|
public static final String SHOW_DESCRIPTION = "description";
|
||||||
|
public static final String SHOW_MEMBERS_ACTIVE = "membersActive";
|
||||||
|
public static final String SHOW_MEMBERS_ASSOCIATED = "membersAssociated";
|
||||||
|
public static final String SHOW_MEMBERS_FORMER = "membersFormer";
|
||||||
|
public static final String SHOW_SUBDEPARTMENTS = "subdepartments";
|
||||||
|
public static final String SHOW_PROJECTS = "projects";
|
||||||
|
public static final String SHOW_PROJECTS_ONGOING = "projectsOngoing";
|
||||||
|
public static final String SHOW_PROJECTS_FINISHED = "projectsFinished";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getDefaultForShowParam() {
|
||||||
|
return SHOW_DESCRIPTION;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Class<? extends ContentItem> getAllowedClass() {
|
||||||
|
return SciDepartment.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean hasMembers(final SciDepartment department,
|
||||||
|
final List<String> filters) {
|
||||||
|
if (department.getPersons() != null) {
|
||||||
|
GenericOrganizationalUnitPersonCollection persons;
|
||||||
|
persons = department.getPersons();
|
||||||
|
for (String filter : filters) {
|
||||||
|
persons.addFilter(filter);
|
||||||
|
}
|
||||||
|
if (persons.size() > 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean hasMembers;
|
||||||
|
hasMembers = false;
|
||||||
|
|
||||||
|
if (SciDepartment.getConfig().getOrganizationMembersMerge()) {
|
||||||
|
SciDepartmentSubDepartmentsCollection subDepartments;
|
||||||
|
subDepartments = department.getSubDepartments();
|
||||||
|
while (subDepartments.next()) {
|
||||||
|
SciDepartment subDepartment = subDepartments.getSubDepartment();
|
||||||
|
|
||||||
|
hasMembers = hasMembers(subDepartment, filters);
|
||||||
|
if (hasMembers) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean hasProjects(final SciDepartment department,
|
||||||
|
final List<String> filters) {
|
||||||
|
if (department.getProjects() != null) {
|
||||||
|
SciDepartmentProjectsCollection projects;
|
||||||
|
projects = department.getProjects();
|
||||||
|
for (String filter : filters) {
|
||||||
|
projects.addFilter(filter);
|
||||||
|
}
|
||||||
|
if (projects.size() > 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean hasProjects;
|
||||||
|
hasProjects = false;
|
||||||
|
|
||||||
|
if (SciDepartment.getConfig().getOrganizationProjectsMerge()) {
|
||||||
|
SciDepartmentSubDepartmentsCollection subDepartments;
|
||||||
|
subDepartments = department.getSubDepartments();
|
||||||
|
|
||||||
|
while (subDepartments.next()) {
|
||||||
|
SciDepartment subDepartment = subDepartments.getSubDepartment();
|
||||||
|
|
||||||
|
hasProjects = hasProjects(subDepartment, filters);
|
||||||
|
if (hasProjects) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void generateSubDepartmentsXML(final SciDepartment department,
|
||||||
|
final Element parent,
|
||||||
|
final PageState state) {
|
||||||
|
SciDepartmentSubDepartmentsCollection subDepartments;
|
||||||
|
subDepartments = department.getSubDepartments();
|
||||||
|
subDepartments.addOrder("departmentOrder asc");
|
||||||
|
|
||||||
|
long pageNumber = getPageNumber(state);
|
||||||
|
|
||||||
|
Element subDepartmentsElem = parent.newChildElement("subDepartments");
|
||||||
|
|
||||||
|
long pageCount = getPageCount(subDepartments.size());
|
||||||
|
long begin = getPaginatorBegin(pageNumber);
|
||||||
|
long count = getPaginatorCount(begin, subDepartments.size());
|
||||||
|
long end = getPaginatorEnd(begin, count);
|
||||||
|
pageNumber = normalizePageNumber(pageCount, pageNumber);
|
||||||
|
|
||||||
|
subDepartments.setRange((int) begin, (int) end);
|
||||||
|
createPaginatorElement(
|
||||||
|
parent, pageNumber, pageCount, begin, end, count);
|
||||||
|
|
||||||
|
while (subDepartments.next()) {
|
||||||
|
SciDepartment subDepartment;
|
||||||
|
subDepartment = subDepartments.getSubDepartment();
|
||||||
|
|
||||||
|
Element subDepartmentElem = subDepartmentsElem.newChildElement(
|
||||||
|
"subDepartment");
|
||||||
|
subDepartmentElem.addAttribute("order", Integer.toString(subDepartments.
|
||||||
|
getSubDepartmentOrder()));
|
||||||
|
subDepartmentElem.addAttribute("oid", subDepartment.getOID().
|
||||||
|
toString());
|
||||||
|
|
||||||
|
Element title = subDepartmentElem.newChildElement("title");
|
||||||
|
title.setText(department.getTitle());
|
||||||
|
|
||||||
|
if ((subDepartment.getAddendum() != null)
|
||||||
|
&& !(subDepartment.getAddendum().isEmpty())) {
|
||||||
|
Element addendum = subDepartmentElem.newChildElement("addendum");
|
||||||
|
addendum.setText(subDepartment.getAddendum());
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((subDepartment.getDepartmentShortDescription() != null)
|
||||||
|
&& !(subDepartment.getDepartmentShortDescription().isEmpty())) {
|
||||||
|
Element shortDesc = subDepartmentElem.newChildElement(
|
||||||
|
"shortDescription");
|
||||||
|
shortDesc.setText(subDepartment.getDepartmentShortDescription());
|
||||||
|
}
|
||||||
|
|
||||||
|
GenericOrganizationalUnitPersonCollection heads;
|
||||||
|
heads = subDepartment.getPersons();
|
||||||
|
heads.addFilter(("role_name = 'head'"));
|
||||||
|
heads.addOrder("surname asc, givenname asc");
|
||||||
|
|
||||||
|
if (heads.size() > 0) {
|
||||||
|
Element headsElem = subDepartmentElem.newChildElement("heads");
|
||||||
|
|
||||||
|
while (heads.next()) {
|
||||||
|
GenericPerson head = heads.getPerson();
|
||||||
|
Element headElem = headsElem.newChildElement("head");
|
||||||
|
Element titlePre = headElem.newChildElement("titlePre");
|
||||||
|
titlePre.setText(head.getTitlePre());
|
||||||
|
Element givenName = headElem.newChildElement("givenname");
|
||||||
|
givenName.setText(head.getGivenName());
|
||||||
|
Element surname = headElem.newChildElement("surname");
|
||||||
|
surname.setText(head.getSurname());
|
||||||
|
Element titlePost = headElem.newChildElement("titlePost");
|
||||||
|
titlePost.setText(head.getTitlePost());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GenericOrganizationalUnitContactCollection contacts;
|
||||||
|
contacts = subDepartment.getContacts();
|
||||||
|
if (contacts.size() > 0) {
|
||||||
|
Element contactsElem = subDepartmentElem.newChildElement(
|
||||||
|
"contacts");
|
||||||
|
|
||||||
|
while (contacts.next()) {
|
||||||
|
generateContactXML(contacts.getContact(),
|
||||||
|
contactsElem,
|
||||||
|
state,
|
||||||
|
Integer.toString(
|
||||||
|
contacts.getContactOrder()),
|
||||||
|
true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void generateMembersXML(final SciDepartment department,
|
||||||
|
final Element parent,
|
||||||
|
final PageState state,
|
||||||
|
final List<String> filters) {
|
||||||
|
if (SciDepartment.getConfig().getOrganizationMembersMerge()) {
|
||||||
|
List<MemberListItem> members;
|
||||||
|
members = new LinkedList<MemberListItem>();
|
||||||
|
GenericOrganizationalUnitPersonCollection departmentMembers;
|
||||||
|
departmentMembers = department.getPersons();
|
||||||
|
for(String filter : filters) {
|
||||||
|
departmentMembers.addFilter(filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
SciDepartmentSubDepartmentsCollection subDepartments;
|
||||||
|
subDepartments = department.getSubDepartments();
|
||||||
|
|
||||||
|
while (departmentMembers.next()) {
|
||||||
|
addMember(departmentMembers.getPerson(),
|
||||||
|
departmentMembers.getRoleName(),
|
||||||
|
departmentMembers.getStatus(),
|
||||||
|
members);
|
||||||
|
}
|
||||||
|
|
||||||
|
mergeMembers(subDepartments, members, filters);
|
||||||
|
|
||||||
|
Collections.sort(members, new MemberListItemComparator());
|
||||||
|
|
||||||
|
long pageNumber = getPageNumber(state);
|
||||||
|
long pageCount = getPageCount(members.size());
|
||||||
|
long begin = getPaginatorBegin(pageNumber);
|
||||||
|
long count = getPaginatorCount(begin, members.size());
|
||||||
|
long end = getPaginatorEnd(begin, count);
|
||||||
|
pageNumber = normalizePageNumber(pageCount, pageNumber);
|
||||||
|
|
||||||
|
List<MemberListItem> membersToShow = members.subList((int) begin,
|
||||||
|
(int) end);
|
||||||
|
|
||||||
|
createPaginatorElement(
|
||||||
|
parent, pageNumber, pageCount, begin,
|
||||||
|
end,
|
||||||
|
count);
|
||||||
|
Element membersElem = parent.newChildElement("members");
|
||||||
|
|
||||||
|
for (MemberListItem memberItem : membersToShow) {
|
||||||
|
generateMemberXML(memberItem.getMember(),
|
||||||
|
membersElem,
|
||||||
|
memberItem.getRole(),
|
||||||
|
memberItem.getStatus(),
|
||||||
|
state);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
GenericOrganizationalUnitPersonCollection departmentMembers;
|
||||||
|
departmentMembers = department.getPersons();
|
||||||
|
for(String filter : filters) {
|
||||||
|
departmentMembers.addFilter(filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<MemberListItem> members = new LinkedList<MemberListItem>();
|
||||||
|
|
||||||
|
while (departmentMembers.next()) {
|
||||||
|
addMember(departmentMembers.getPerson(),
|
||||||
|
departmentMembers.getRoleName(),
|
||||||
|
departmentMembers.getStatus(),
|
||||||
|
members);
|
||||||
|
}
|
||||||
|
|
||||||
|
Collections.sort(members, new MemberListItemComparator());
|
||||||
|
|
||||||
|
long pageNumber = getPageNumber(state);
|
||||||
|
|
||||||
|
Element membersElem = parent.newChildElement("members");
|
||||||
|
|
||||||
|
long pageCount = getPageCount(members.size());
|
||||||
|
long begin = getPaginatorBegin(pageNumber);
|
||||||
|
long count = getPaginatorCount(begin, members.size());
|
||||||
|
long end = getPaginatorEnd(begin, count);
|
||||||
|
pageNumber = normalizePageNumber(pageCount, pageNumber);
|
||||||
|
|
||||||
|
List<MemberListItem> membersToShow = members.subList((int) begin,
|
||||||
|
(int) end);
|
||||||
|
createPaginatorElement(
|
||||||
|
parent, pageNumber, pageCount, begin, end,
|
||||||
|
count);
|
||||||
|
|
||||||
|
for (MemberListItem memberItem : membersToShow) {
|
||||||
|
generateMemberXML(memberItem.getMember(),
|
||||||
|
membersElem,
|
||||||
|
memberItem.getRole(),
|
||||||
|
memberItem.getStatus(),
|
||||||
|
state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void generateProjectsXML(final SciDepartment department,
|
||||||
|
final Element parent,
|
||||||
|
final PageState state,
|
||||||
|
final List<String> filters) {
|
||||||
|
if (SciDepartment.getConfig().getOrganizationProjectsMerge()) {
|
||||||
|
List<SciProject> projects;
|
||||||
|
projects = new LinkedList<SciProject>();
|
||||||
|
SciDepartmentProjectsCollection departmentProjects;
|
||||||
|
departmentProjects = department.getProjects();
|
||||||
|
|
||||||
|
if ((filters != null)
|
||||||
|
&& !(filters.isEmpty())) {
|
||||||
|
for (String filter : filters) {
|
||||||
|
departmentProjects.addFilter(filter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SciDepartmentSubDepartmentsCollection subDepartments;
|
||||||
|
subDepartments = department.getSubDepartments();
|
||||||
|
|
||||||
|
while (departmentProjects.next()) {
|
||||||
|
projects.add(departmentProjects.getProject());
|
||||||
|
}
|
||||||
|
|
||||||
|
mergeProjects(subDepartments, projects, filters);
|
||||||
|
|
||||||
|
Collections.sort(projects, new SciProjectComparator());
|
||||||
|
|
||||||
|
long pageNumber = getPageNumber(state);
|
||||||
|
long pageCount = getPageCount(projects.size());
|
||||||
|
long begin = getPaginatorBegin(pageNumber);
|
||||||
|
long count = getPaginatorCount(begin, projects.size());
|
||||||
|
long end = getPaginatorEnd(begin, count);
|
||||||
|
pageNumber = normalizePageNumber(pageCount, pageNumber);
|
||||||
|
|
||||||
|
List<SciProject> projectsToShow = projects.subList((int) begin,
|
||||||
|
(int) end);
|
||||||
|
|
||||||
|
createPaginatorElement(
|
||||||
|
parent, pageNumber, pageCount, begin,
|
||||||
|
end,
|
||||||
|
count);
|
||||||
|
|
||||||
|
Element projectsElem = parent.newChildElement("projects");
|
||||||
|
for (SciProject project : projectsToShow) {
|
||||||
|
generateProjectXML(project, projectsElem, state);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
SciDepartmentProjectsCollection departmentProjects;
|
||||||
|
departmentProjects = department.getProjects();
|
||||||
|
|
||||||
|
if ((filters != null)
|
||||||
|
&& !(filters.isEmpty())) {
|
||||||
|
for (String filter : filters) {
|
||||||
|
departmentProjects.addFilter(filter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
List<SciProject> projects = new LinkedList<SciProject>();
|
||||||
|
|
||||||
|
while (departmentProjects.next()) {
|
||||||
|
projects.add(departmentProjects.getProject());
|
||||||
|
}
|
||||||
|
|
||||||
|
Collections.sort(projects, new SciProjectComparator());
|
||||||
|
|
||||||
|
long pageNumber = getPageNumber(state);
|
||||||
|
long pageCount = getPageCount(projects.size());
|
||||||
|
long begin = getPaginatorBegin(pageNumber);
|
||||||
|
long count = getPaginatorCount(begin, projects.size());
|
||||||
|
long end = getPaginatorEnd(begin, count);
|
||||||
|
pageNumber = normalizePageNumber(pageCount, pageNumber);
|
||||||
|
|
||||||
|
List<SciProject> projectsToShow = projects.subList((int) begin,
|
||||||
|
(int) end);
|
||||||
|
|
||||||
|
createPaginatorElement(
|
||||||
|
parent, pageNumber, pageCount, begin,
|
||||||
|
end,
|
||||||
|
count);
|
||||||
|
|
||||||
|
Element projectsElem = parent.newChildElement("projects");
|
||||||
|
for (SciProject project : projectsToShow) {
|
||||||
|
generateProjectXML(project, projectsElem, state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void generateXML(ContentItem item,
|
||||||
|
Element element,
|
||||||
|
PageState state) {
|
||||||
|
Element content = generateBaseXML(item, element, state);
|
||||||
|
|
||||||
|
Element availableData = content.newChildElement("availableData");
|
||||||
|
|
||||||
|
SciDepartment department = (SciDepartment) item;
|
||||||
|
|
||||||
|
SciOrganizationConfig config = SciDepartment.getConfig();
|
||||||
|
|
||||||
|
if ((department.getDepartmentDescription() != null)
|
||||||
|
&& !department.getDepartmentDescription().isEmpty()) {
|
||||||
|
availableData.newChildElement("description");
|
||||||
|
}
|
||||||
|
if ((department.getContacts() != null)
|
||||||
|
&& (department.getContacts().size() > 0)) {
|
||||||
|
availableData.newChildElement("contacts");
|
||||||
|
}
|
||||||
|
if ((department.getSubDepartments() != null)
|
||||||
|
&& (department.getSubDepartments().size() > 0)) {
|
||||||
|
availableData.newChildElement("subDepartments");
|
||||||
|
}
|
||||||
|
if (config.getOrganizationMembersAllInOne()) {
|
||||||
|
if (hasMembers(department, new LinkedList<String>())) {
|
||||||
|
availableData.newChildElement("members");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (hasMembers(department, getFiltersForActiveMembers())) {
|
||||||
|
availableData.newChildElement("membersActive");
|
||||||
|
}
|
||||||
|
if (hasMembers(department, getFiltersForAssociatedMembers())) {
|
||||||
|
availableData.newChildElement("membersAssociated");
|
||||||
|
}
|
||||||
|
if (hasMembers(department, getFiltersForFormerMembers())) {
|
||||||
|
availableData.newChildElement("membersFormer");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (config.getOrganizationProjectsAllInOne()) {
|
||||||
|
if (hasProjects(department, new LinkedList<String>())) {
|
||||||
|
availableData.newChildElement("projects");
|
||||||
|
} else {
|
||||||
|
if (hasProjects(department, getFiltersForOngoingProjects())) {
|
||||||
|
availableData.newChildElement("projectsOngoing");
|
||||||
|
}
|
||||||
|
if (hasProjects(department, getFiltersForFinishedProjects())) {
|
||||||
|
availableData.newChildElement("projectsFinished");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String show = getShowParam(state);
|
||||||
|
|
||||||
|
if (SHOW_DESCRIPTION.equals(show)) {
|
||||||
|
String desc;
|
||||||
|
desc = department.getDepartmentDescription();
|
||||||
|
|
||||||
|
Element description = content.newChildElement("description");
|
||||||
|
description.setText(desc);
|
||||||
|
} else if (SHOW_CONTACTS.equals(show)) {
|
||||||
|
generateContactsXML(department, content, state);
|
||||||
|
} else if (SHOW_MEMBERS.equals(show)) {
|
||||||
|
generateMembersXML(department, content, state, new LinkedList<String>());
|
||||||
|
} else if (SHOW_MEMBERS_ACTIVE.equals(show)) {
|
||||||
|
generateMembersXML(department, content, state, getFiltersForActiveMembers());
|
||||||
|
} else if (SHOW_MEMBERS_ASSOCIATED.equals(show)) {
|
||||||
|
generateMembersXML(department, content, state, getFiltersForAssociatedMembers());
|
||||||
|
} else if (SHOW_MEMBERS_FORMER.equals(show)) {
|
||||||
|
generateMembersXML(department, content, state, getFiltersForFormerMembers());
|
||||||
|
} else if (SHOW_PROJECTS.equals(show)) {
|
||||||
|
generateProjectsXML(department, content, state, new LinkedList<String>());
|
||||||
|
} else if (SHOW_PROJECTS_ONGOING.equals(show)) {
|
||||||
|
generateProjectsXML(department, content, state, getFiltersForOngoingProjects());
|
||||||
|
} else if (SHOW_PROJECTS_FINISHED.equals(show)) {
|
||||||
|
generateProjectsXML(department, content, state, getFiltersForFinishedProjects());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -85,7 +85,7 @@ public class SciDepartmentProjectsTable
|
||||||
SciOrganizationGlobalizationUtil.globalize(
|
SciOrganizationGlobalizationUtil.globalize(
|
||||||
"sciorganization.ui.department.project.remove").localize(),
|
"sciorganization.ui.department.project.remove").localize(),
|
||||||
TABLE_COL_DEL));
|
TABLE_COL_DEL));
|
||||||
colModel.add(new TableColumn(
|
/*colModel.add(new TableColumn(
|
||||||
2,
|
2,
|
||||||
SciOrganizationGlobalizationUtil.globalize(
|
SciOrganizationGlobalizationUtil.globalize(
|
||||||
"sciorganization.ui.department.project.up").localize(),
|
"sciorganization.ui.department.project.up").localize(),
|
||||||
|
|
@ -94,15 +94,15 @@ public class SciDepartmentProjectsTable
|
||||||
3,
|
3,
|
||||||
SciOrganizationGlobalizationUtil.globalize(
|
SciOrganizationGlobalizationUtil.globalize(
|
||||||
"sciorganization.ui.department.project.down").localize(),
|
"sciorganization.ui.department.project.down").localize(),
|
||||||
TABLE_COL_DOWN));
|
TABLE_COL_DOWN));*/
|
||||||
|
|
||||||
setModelBuilder(
|
setModelBuilder(
|
||||||
new SciDepartmentProjectsTableModelBuilder(itemModel));
|
new SciDepartmentProjectsTableModelBuilder(itemModel));
|
||||||
|
|
||||||
colModel.get(0).setCellRenderer(new EditCellRenderer());
|
colModel.get(0).setCellRenderer(new EditCellRenderer());
|
||||||
colModel.get(1).setCellRenderer(new DeleteCellRenderer());
|
colModel.get(1).setCellRenderer(new DeleteCellRenderer());
|
||||||
colModel.get(2).setCellRenderer(new UpCellRenderer());
|
//colModel.get(2).setCellRenderer(new UpCellRenderer());
|
||||||
colModel.get(3).setCellRenderer(new DownCellRenderer());
|
//colModel.get(3).setCellRenderer(new DownCellRenderer());
|
||||||
|
|
||||||
addTableActionListener(this);
|
addTableActionListener(this);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -46,51 +46,6 @@ public class SciMemberPropertiesStep extends SimpleEditStep {
|
||||||
sheet = (DomainObjectPropertySheet) GenericPersonPropertiesStep.
|
sheet = (DomainObjectPropertySheet) GenericPersonPropertiesStep.
|
||||||
getGenericPersonPropertySheet(itemModel);
|
getGenericPersonPropertySheet(itemModel);
|
||||||
|
|
||||||
DomainObjectPropertySheet.AttributeFormatter associatedFormatter =
|
|
||||||
new DomainObjectPropertySheet.AttributeFormatter() {
|
|
||||||
|
|
||||||
public String format(DomainObject obj, String attribute,
|
|
||||||
PageState state) {
|
|
||||||
SciMember member;
|
|
||||||
|
|
||||||
member = (SciMember) obj;
|
|
||||||
|
|
||||||
if ((member.isAssociatedMember() != null) && member.isAssociatedMember()) {
|
|
||||||
return (String) SciOrganizationGlobalizationUtil.globalize(
|
|
||||||
"sciorganization.ui.member.yes").localize();
|
|
||||||
} else {
|
|
||||||
return (String) SciOrganizationGlobalizationUtil.globalize(
|
|
||||||
"sciorganization.ui.member.no").localize();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
DomainObjectPropertySheet.AttributeFormatter formerFormatter =
|
|
||||||
new DomainObjectPropertySheet.AttributeFormatter() {
|
|
||||||
|
|
||||||
public String format(DomainObject obj, String attribute,
|
|
||||||
PageState state) {
|
|
||||||
SciMember member;
|
|
||||||
|
|
||||||
member = (SciMember) obj;
|
|
||||||
|
|
||||||
if ((member.isFormerMember() != null) && member.isFormerMember()) {
|
|
||||||
return (String) SciOrganizationGlobalizationUtil.globalize(
|
|
||||||
"sciorganization.ui.member.yes").localize();
|
|
||||||
} else {
|
|
||||||
return (String) SciOrganizationGlobalizationUtil.globalize(
|
|
||||||
"sciorganization.ui.member.no").localize();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
sheet.add(SciOrganizationGlobalizationUtil.globalize(
|
|
||||||
"sciorganization.ui.member.associatedMember"),
|
|
||||||
SciMember.ASSOCIATED_MEMBER, associatedFormatter);
|
|
||||||
sheet.add(SciOrganizationGlobalizationUtil.globalize(
|
|
||||||
"sciorganization.ui.member.formerMember"),
|
|
||||||
SciMember.FORMER_MEMBER, formerFormatter);
|
|
||||||
|
|
||||||
return sheet;
|
return sheet;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -68,23 +68,6 @@ public class SciMemberPropertyForm
|
||||||
@Override
|
@Override
|
||||||
protected void addWidgets() {
|
protected void addWidgets() {
|
||||||
super.addWidgets();
|
super.addWidgets();
|
||||||
|
|
||||||
add(new Label(SciOrganizationGlobalizationUtil.globalize(
|
|
||||||
"sciorganization.ui.member.associatedMember")));
|
|
||||||
ParameterModel isAssociated = new BooleanParameter(
|
|
||||||
SciMember.ASSOCIATED_MEMBER);
|
|
||||||
ArrayParameter associatedParam = new ArrayParameter(isAssociated);
|
|
||||||
m_associated = new CheckboxGroup(associatedParam);
|
|
||||||
m_associated.addOption(new Option("assoc", ""));
|
|
||||||
add(m_associated);
|
|
||||||
|
|
||||||
add(new Label(SciOrganizationGlobalizationUtil.globalize(
|
|
||||||
"sciorganization.ui.member.formerMember")));
|
|
||||||
ParameterModel isFormer = new BooleanParameter(SciMember.FORMER_MEMBER);
|
|
||||||
ArrayParameter formerParam = new ArrayParameter(isFormer);
|
|
||||||
m_former = new CheckboxGroup(formerParam);
|
|
||||||
m_former.addOption(new Option("former", ""));
|
|
||||||
add(m_former);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -93,14 +76,6 @@ public class SciMemberPropertyForm
|
||||||
|
|
||||||
FormData data = fse.getFormData();
|
FormData data = fse.getFormData();
|
||||||
SciMember member = (SciMember) super.initBasicWidgets(fse);
|
SciMember member = (SciMember) super.initBasicWidgets(fse);
|
||||||
|
|
||||||
if ((member.isAssociatedMember() != null) &&
|
|
||||||
member.isAssociatedMember()) {
|
|
||||||
m_associated.setValue(fse.getPageState(), "assoc");
|
|
||||||
}
|
|
||||||
if ((member.isFormerMember() != null) && member.isFormerMember()) {
|
|
||||||
m_former.setValue(fse.getPageState(), "former");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -112,20 +87,6 @@ public class SciMemberPropertyForm
|
||||||
|
|
||||||
if ((member != null) && getSaveCancelSection().getSaveButton().
|
if ((member != null) && getSaveCancelSection().getSaveButton().
|
||||||
isSelected(fse.getPageState())) {
|
isSelected(fse.getPageState())) {
|
||||||
if (m_associated.getValue(state) == null) {
|
|
||||||
logger.debug("Setting associated member status to false...");
|
|
||||||
member.setAssociatedMember(false);
|
|
||||||
} else {
|
|
||||||
logger.debug("Setting associated member status to true...");
|
|
||||||
member.setAssociatedMember(true);
|
|
||||||
}
|
|
||||||
if (m_former.getValue(state) == null) {
|
|
||||||
logger.debug("Setting former member status to false...");
|
|
||||||
member.setFormerMember(false);
|
|
||||||
} else {
|
|
||||||
logger.debug("Setting former member status to true...");
|
|
||||||
member.setFormerMember(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
member.save();
|
member.save();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,414 @@
|
||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitContactCollection;
|
||||||
|
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitPersonCollection;
|
||||||
|
import com.arsdigita.cms.contenttypes.GenericPerson;
|
||||||
|
import com.arsdigita.cms.contenttypes.GenericPersonContactCollection;
|
||||||
|
import com.arsdigita.cms.contenttypes.SciDepartment;
|
||||||
|
import com.arsdigita.cms.contenttypes.SciDepartmentProjectsCollection;
|
||||||
|
import com.arsdigita.cms.contenttypes.SciDepartmentSubDepartmentsCollection;
|
||||||
|
import com.arsdigita.cms.contenttypes.SciProject;
|
||||||
|
import com.arsdigita.xml.Element;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.GregorianCalendar;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base class for all panels of the sci-types-organization module.
|
||||||
|
*
|
||||||
|
* @see SciOrganizationPanel
|
||||||
|
* @see SciDepartmentPanel
|
||||||
|
* @see SciProjectPanel
|
||||||
|
* @author Jens Pelzetter
|
||||||
|
*/
|
||||||
|
public abstract class SciOrganizationBasePanel
|
||||||
|
extends GenericOrganizationalUnitPanel {
|
||||||
|
|
||||||
|
private final static Logger s_log = Logger.getLogger(
|
||||||
|
SciOrganizationBasePanel.class);
|
||||||
|
|
||||||
|
protected class MemberListItem {
|
||||||
|
|
||||||
|
private GenericPerson member;
|
||||||
|
private String role;
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
public MemberListItem(final GenericPerson member,
|
||||||
|
final String role,
|
||||||
|
final String status) {
|
||||||
|
this.member = member;
|
||||||
|
this.role = role;
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GenericPerson getMember() {
|
||||||
|
return member;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRole() {
|
||||||
|
return role;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (obj == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (getClass() != obj.getClass()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
final MemberListItem other = (MemberListItem) obj;
|
||||||
|
if (this.member != other.member && (this.member == null || !this.member.
|
||||||
|
equals(other.member))) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if ((this.role == null) ? (other.role != null)
|
||||||
|
: !this.role.equals(other.role)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if ((this.status == null) ? (other.status != null)
|
||||||
|
: !this.status.equals(other.status)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
int hash = 7;
|
||||||
|
hash =
|
||||||
|
79 * hash + (this.member != null ? this.member.hashCode() : 0);
|
||||||
|
hash = 79 * hash + (this.role != null ? this.role.hashCode() : 0);
|
||||||
|
hash =
|
||||||
|
79 * hash + (this.status != null ? this.status.hashCode() : 0);
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected class MemberListItemComparator
|
||||||
|
implements Comparator<MemberListItem> {
|
||||||
|
|
||||||
|
public int compare(MemberListItem member1, MemberListItem member2) {
|
||||||
|
int result = 0;
|
||||||
|
|
||||||
|
result =
|
||||||
|
member1.getMember().getSurname().compareToIgnoreCase(member2.
|
||||||
|
getMember().
|
||||||
|
getSurname());
|
||||||
|
|
||||||
|
if (result == 0) {
|
||||||
|
result = member1.getMember().getGivenName().compareTo(
|
||||||
|
member2.getMember().getGivenName());
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected class SciProjectComparator implements Comparator<SciProject> {
|
||||||
|
|
||||||
|
public int compare(SciProject project1, SciProject project2) {
|
||||||
|
int result = 0;
|
||||||
|
|
||||||
|
result = project1.getBegin().compareTo(project2.getBegin());
|
||||||
|
|
||||||
|
if (result == 0) {
|
||||||
|
result = project1.getEnd().compareTo(project2.getEnd());
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected List<String> getFiltersForActiveMembers() {
|
||||||
|
List<String> filters;
|
||||||
|
filters = new LinkedList<String>();
|
||||||
|
|
||||||
|
filters.add("link.status = 'active'");
|
||||||
|
|
||||||
|
return filters;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected List<String> getFiltersForAssociatedMembers() {
|
||||||
|
List<String> filters;
|
||||||
|
filters = new LinkedList<String>();
|
||||||
|
|
||||||
|
filters.add("link.status = 'associated'");
|
||||||
|
|
||||||
|
return filters;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected List<String> getFiltersForFormerMembers() {
|
||||||
|
List<String> filters;
|
||||||
|
filters = new LinkedList<String>();
|
||||||
|
|
||||||
|
filters.add("link.status = 'former'");
|
||||||
|
|
||||||
|
return filters;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected List<String> getFiltersForOngoingProjects() {
|
||||||
|
List<String> filters;
|
||||||
|
Calendar today;
|
||||||
|
|
||||||
|
filters = new LinkedList<String>();
|
||||||
|
today = new GregorianCalendar();
|
||||||
|
filters.add(String.format("projectend > '%d-%02d-%02d'",
|
||||||
|
today.get(java.util.Calendar.YEAR),
|
||||||
|
today.get(java.util.Calendar.MONTH)
|
||||||
|
+ 1,
|
||||||
|
today.get(java.util.Calendar.DAY_OF_MONTH)));
|
||||||
|
return filters;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected List<String> getFiltersForFinishedProjects() {
|
||||||
|
List<String> filters;
|
||||||
|
Calendar today;
|
||||||
|
|
||||||
|
filters = new LinkedList<String>();
|
||||||
|
today = new GregorianCalendar();
|
||||||
|
filters.add(String.format("projectend <= '%d-%02d-%02d'",
|
||||||
|
today.get(java.util.Calendar.YEAR),
|
||||||
|
today.get(java.util.Calendar.MONTH)
|
||||||
|
+ 1,
|
||||||
|
today.get(java.util.Calendar.DAY_OF_MONTH)));
|
||||||
|
return filters;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void generateMemberXML(final GenericPerson person,
|
||||||
|
final Element parent,
|
||||||
|
final String roleName,
|
||||||
|
final String status,
|
||||||
|
final PageState state) {
|
||||||
|
Element memberElem = parent.newChildElement("member");
|
||||||
|
|
||||||
|
memberElem.addAttribute("role", roleName);
|
||||||
|
memberElem.addAttribute("status", status);
|
||||||
|
memberElem.addAttribute("oid", person.getOID().toString());
|
||||||
|
|
||||||
|
Element title = memberElem.newChildElement("title");
|
||||||
|
title.setText(person.getTitle());
|
||||||
|
|
||||||
|
if ((person.getTitlePre() != null)
|
||||||
|
&& !person.getTitlePre().isEmpty()) {
|
||||||
|
Element titlePre = memberElem.newChildElement("titlePre");
|
||||||
|
titlePre.setText(person.getTitlePre());
|
||||||
|
}
|
||||||
|
|
||||||
|
Element surname = memberElem.newChildElement("surname");
|
||||||
|
surname.setText(person.getSurname());
|
||||||
|
|
||||||
|
Element givenName = memberElem.newChildElement("givenname");
|
||||||
|
givenName.setText(person.getGivenName());
|
||||||
|
|
||||||
|
if ((person.getTitlePost() != null)
|
||||||
|
&& !person.getTitlePost().isEmpty()) {
|
||||||
|
Element titlePost = memberElem.newChildElement("titlePost");
|
||||||
|
titlePost.setText(person.getTitlePost());
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((person.getContacts() != null)
|
||||||
|
&& (person.getContacts().size() > 0)) {
|
||||||
|
GenericPersonContactCollection contacts;
|
||||||
|
contacts = person.getContacts();
|
||||||
|
|
||||||
|
Element contactsElem =
|
||||||
|
memberElem.newChildElement("contacts");
|
||||||
|
|
||||||
|
while (contacts.next()) {
|
||||||
|
generateContactXML(
|
||||||
|
contacts.getContact(),
|
||||||
|
contactsElem,
|
||||||
|
state,
|
||||||
|
contacts.getContactOrder(),
|
||||||
|
false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void addMember(final GenericPerson person,
|
||||||
|
final String roleName,
|
||||||
|
final String status,
|
||||||
|
final List<MemberListItem> members) {
|
||||||
|
members.add(new MemberListItem(person, roleName, status));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void mergeMembers(
|
||||||
|
final SciDepartmentSubDepartmentsCollection subDepartments,
|
||||||
|
final List<MemberListItem> members,
|
||||||
|
final List<String> filters) {
|
||||||
|
while (subDepartments.next()) {
|
||||||
|
SciDepartment subDepartment = subDepartments.getSubDepartment();
|
||||||
|
GenericOrganizationalUnitPersonCollection departmentMembers;
|
||||||
|
departmentMembers = subDepartment.getPersons();
|
||||||
|
for (String filter : filters) {
|
||||||
|
departmentMembers.addFilter(filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
while (departmentMembers.next()) {
|
||||||
|
addMember(departmentMembers.getPerson(),
|
||||||
|
departmentMembers.getRoleName(),
|
||||||
|
departmentMembers.getStatus(),
|
||||||
|
members);
|
||||||
|
}
|
||||||
|
|
||||||
|
SciDepartmentSubDepartmentsCollection subSubDepartments;
|
||||||
|
subSubDepartments = subDepartment.getSubDepartments();
|
||||||
|
|
||||||
|
if ((subSubDepartments != null)
|
||||||
|
&& (subSubDepartments.size() > 0)) {
|
||||||
|
mergeMembers(subSubDepartments, members, filters);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void generateMembersListXML(final List<MemberListItem> members,
|
||||||
|
final Element parent,
|
||||||
|
final PageState state) {
|
||||||
|
Set<MemberListItem> membersSet;
|
||||||
|
List<MemberListItem> membersWithoutDoubles;
|
||||||
|
membersSet = new HashSet<MemberListItem>(members);
|
||||||
|
membersWithoutDoubles = new LinkedList<MemberListItem>(membersSet);
|
||||||
|
|
||||||
|
Collections.sort(membersWithoutDoubles, new MemberListItemComparator());
|
||||||
|
|
||||||
|
long pageNumber = getPageNumber(state);
|
||||||
|
long pageCount = getPageCount(membersWithoutDoubles.size());
|
||||||
|
long begin = getPaginatorBegin(pageNumber);
|
||||||
|
long count = getPaginatorCount(begin, membersWithoutDoubles.size());
|
||||||
|
long end = getPaginatorEnd(begin, count);
|
||||||
|
pageNumber = normalizePageNumber(pageCount, pageNumber);
|
||||||
|
|
||||||
|
List<MemberListItem> membersWithoutDoublesToShow = membersWithoutDoubles.
|
||||||
|
subList((int) begin,
|
||||||
|
(int) end);
|
||||||
|
|
||||||
|
createPaginatorElement(
|
||||||
|
parent, pageNumber, pageCount, begin,
|
||||||
|
end,
|
||||||
|
count);
|
||||||
|
Element membersWithoutDoublesElem = parent.newChildElement(
|
||||||
|
"members");
|
||||||
|
|
||||||
|
for (MemberListItem memberItem : membersWithoutDoublesToShow) {
|
||||||
|
generateMemberXML(memberItem.getMember(),
|
||||||
|
membersWithoutDoublesElem,
|
||||||
|
memberItem.getRole(),
|
||||||
|
memberItem.getStatus(),
|
||||||
|
state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void generateProjectXML(final SciProject project,
|
||||||
|
final Element parent,
|
||||||
|
final PageState state) {
|
||||||
|
Element projectElem = parent.newChildElement("project");
|
||||||
|
projectElem.addAttribute("oid", project.toString());
|
||||||
|
|
||||||
|
Element title = projectElem.newChildElement("title");
|
||||||
|
title.setText(project.getTitle());
|
||||||
|
|
||||||
|
if ((project.getAddendum() != null)
|
||||||
|
&& !(project.getAddendum().isEmpty())) {
|
||||||
|
Element addendum = projectElem.newChildElement("addendum");
|
||||||
|
addendum.setText(project.getAddendum());
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((project.getProjectShortDescription() != null)
|
||||||
|
&& !(project.getProjectShortDescription().isEmpty())) {
|
||||||
|
Element shortDesc = projectElem.newChildElement("shortDescription");
|
||||||
|
shortDesc.setText(project.getProjectShortDescription());
|
||||||
|
}
|
||||||
|
|
||||||
|
GenericOrganizationalUnitPersonCollection members;
|
||||||
|
members = project.getPersons();
|
||||||
|
members.addOrder("surname asc, givenname asc");
|
||||||
|
|
||||||
|
if (members.size() > 0) {
|
||||||
|
Element membersElem = projectElem.newChildElement("mebers");
|
||||||
|
|
||||||
|
while (members.next()) {
|
||||||
|
generateMemberXML(members.getPerson(),
|
||||||
|
membersElem,
|
||||||
|
members.getRoleName(),
|
||||||
|
members.getStatus(),
|
||||||
|
state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GenericOrganizationalUnitContactCollection contacts;
|
||||||
|
contacts = project.getContacts();
|
||||||
|
|
||||||
|
if (contacts.size() > 0) {
|
||||||
|
Element contactsElem = projectElem.newChildElement("contacts");
|
||||||
|
|
||||||
|
while (contacts.next()) {
|
||||||
|
generateContactXML(contacts.getContact(),
|
||||||
|
contactsElem,
|
||||||
|
state,
|
||||||
|
Integer.toString(contacts.getContactOrder()),
|
||||||
|
true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void mergeProjects(
|
||||||
|
final SciDepartmentSubDepartmentsCollection subDepartments,
|
||||||
|
final List<SciProject> projects,
|
||||||
|
final List<String> filters) {
|
||||||
|
while (subDepartments.next()) {
|
||||||
|
SciDepartmentProjectsCollection departmentProjects;
|
||||||
|
departmentProjects = subDepartments.getSubDepartment().getProjects();
|
||||||
|
|
||||||
|
if ((filters != null)
|
||||||
|
&& !(filters.isEmpty())) {
|
||||||
|
for (String filter : filters) {
|
||||||
|
departmentProjects.addFilter(filter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
while (departmentProjects.next()) {
|
||||||
|
projects.add(departmentProjects.getProject());
|
||||||
|
}
|
||||||
|
|
||||||
|
SciDepartmentSubDepartmentsCollection subSubDepartments;
|
||||||
|
subSubDepartments = subDepartments.getSubDepartment().
|
||||||
|
getSubDepartments();
|
||||||
|
|
||||||
|
if ((subSubDepartments != null)
|
||||||
|
&& subSubDepartments.size() > 0) {
|
||||||
|
mergeProjects(subSubDepartments, projects, filters);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,587 @@
|
||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
import com.arsdigita.cms.ContentItem;
|
||||||
|
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitContactCollection;
|
||||||
|
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitPersonCollection;
|
||||||
|
import com.arsdigita.cms.contenttypes.GenericPerson;
|
||||||
|
import com.arsdigita.cms.contenttypes.SciDepartment;
|
||||||
|
import com.arsdigita.cms.contenttypes.SciDepartmentProjectsCollection;
|
||||||
|
import com.arsdigita.cms.contenttypes.SciDepartmentSubDepartmentsCollection;
|
||||||
|
import com.arsdigita.cms.contenttypes.SciOrganization;
|
||||||
|
import com.arsdigita.cms.contenttypes.SciOrganizationConfig;
|
||||||
|
import com.arsdigita.cms.contenttypes.SciOrganizationDepartmentsCollection;
|
||||||
|
import com.arsdigita.cms.contenttypes.SciOrganizationProjectsCollection;
|
||||||
|
import com.arsdigita.cms.contenttypes.SciProject;
|
||||||
|
import com.arsdigita.xml.Element;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.GregorianCalendar;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Panel for rendering the properties of a SciOrganization. The property to show
|
||||||
|
* is selected via the <code>show</code> parameter.
|
||||||
|
*
|
||||||
|
* @author Jens Pelzetter
|
||||||
|
*/
|
||||||
|
public class SciOrganizationPanel extends SciOrganizationBasePanel {
|
||||||
|
|
||||||
|
private static final Logger s_log = Logger.getLogger(
|
||||||
|
SciOrganizationPanel.class);
|
||||||
|
public static final String SHOW_DESCRIPTION = "description";
|
||||||
|
public static final String SHOW_MEMBERS_ACTIVE = "membersActive";
|
||||||
|
public static final String SHOW_MEMBERS_ASSOCIATED = "membersAssociated";
|
||||||
|
public static final String SHOW_MEMBERS_FORMER = "membersFormer";
|
||||||
|
public static final String SHOW_DEPARTMENTS = "departments";
|
||||||
|
public static final String SHOW_PROJECTS = "projects";
|
||||||
|
public static final String SHOW_PROJECTS_ONGOING = "projectsOngoing";
|
||||||
|
public static final String SHOW_PROJECTS_FINISHED = "projectsFinished";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getDefaultForShowParam() {
|
||||||
|
return SHOW_DESCRIPTION;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Class<? extends ContentItem> getAllowedClass() {
|
||||||
|
return SciOrganization.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param orga
|
||||||
|
* @param filters
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
protected boolean hasMembers(final SciOrganization orga,
|
||||||
|
final List<String> filters) {
|
||||||
|
|
||||||
|
if (orga.getPersons() != null) {
|
||||||
|
GenericOrganizationalUnitPersonCollection persons;
|
||||||
|
persons = orga.getPersons();
|
||||||
|
for (String filter : filters) {
|
||||||
|
persons.addFilter(filter);
|
||||||
|
}
|
||||||
|
if (persons.size() > 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SciOrganization.getConfig().getOrganizationMembersMerge()) {
|
||||||
|
boolean hasMembers;
|
||||||
|
hasMembers = false;
|
||||||
|
SciOrganizationDepartmentsCollection departments;
|
||||||
|
departments = orga.getDepartments();
|
||||||
|
while (departments.next()) {
|
||||||
|
SciDepartment department = departments.getDepartment();
|
||||||
|
|
||||||
|
hasMembers = hasMembers(department, filters);
|
||||||
|
if (hasMembers) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean hasMembers(final SciDepartment department,
|
||||||
|
final List<String> filters) {
|
||||||
|
|
||||||
|
if (department.getPersons() != null) {
|
||||||
|
GenericOrganizationalUnitPersonCollection persons;
|
||||||
|
persons = department.getPersons();
|
||||||
|
for (String filter : filters) {
|
||||||
|
persons.addFilter(filter);
|
||||||
|
}
|
||||||
|
if (persons.size() > 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
boolean hasMembers;
|
||||||
|
hasMembers = false;
|
||||||
|
|
||||||
|
SciDepartmentSubDepartmentsCollection subDepartments;
|
||||||
|
subDepartments = department.getSubDepartments();
|
||||||
|
while (subDepartments.next()) {
|
||||||
|
SciDepartment subDepartment = subDepartments.getSubDepartment();
|
||||||
|
|
||||||
|
hasMembers = hasMembers(subDepartment, filters);
|
||||||
|
if (hasMembers) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param orga
|
||||||
|
* @param filters
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
protected boolean hasProjects(final SciOrganization orga,
|
||||||
|
final List<String> filters) {
|
||||||
|
if (orga.getProjects() != null) {
|
||||||
|
SciOrganizationProjectsCollection projects;
|
||||||
|
projects = orga.getProjects();
|
||||||
|
for (String filter : filters) {
|
||||||
|
projects.addFilter(filter);
|
||||||
|
}
|
||||||
|
if (projects.size() > 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean hasProjects;
|
||||||
|
hasProjects = false;
|
||||||
|
|
||||||
|
if (SciOrganization.getConfig().getOrganizationProjectsMerge()) {
|
||||||
|
SciOrganizationDepartmentsCollection departments;
|
||||||
|
departments = orga.getDepartments();
|
||||||
|
|
||||||
|
while (departments.next()) {
|
||||||
|
SciDepartment department = departments.getDepartment();
|
||||||
|
|
||||||
|
hasProjects = hasProjects(department, filters);
|
||||||
|
if (hasProjects) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean hasProjects(final SciDepartment department,
|
||||||
|
final List<String> filters) {
|
||||||
|
if (department.getProjects() != null) {
|
||||||
|
SciDepartmentProjectsCollection projects;
|
||||||
|
projects = department.getProjects();
|
||||||
|
for (String filter : filters) {
|
||||||
|
projects.addFilter(filter);
|
||||||
|
}
|
||||||
|
if (projects.size() > 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean hasProjects;
|
||||||
|
hasProjects = false;
|
||||||
|
|
||||||
|
SciDepartmentSubDepartmentsCollection subDepartments;
|
||||||
|
subDepartments = department.getSubDepartments();
|
||||||
|
while (subDepartments.next()) {
|
||||||
|
SciDepartment subDepartment = subDepartments.getSubDepartment();
|
||||||
|
|
||||||
|
hasProjects = hasProjects(subDepartment, filters);
|
||||||
|
if (hasProjects) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void generateDepartmentsXML(final SciOrganization orga,
|
||||||
|
final Element parent,
|
||||||
|
final PageState state) {
|
||||||
|
SciOrganizationDepartmentsCollection departments;
|
||||||
|
departments = orga.getDepartments();
|
||||||
|
departments.addOrder("departmentOrder asc");
|
||||||
|
|
||||||
|
long pageNumber = getPageNumber(state);
|
||||||
|
|
||||||
|
Element departmentsElem = parent.newChildElement("departments");
|
||||||
|
|
||||||
|
long pageCount = getPageCount(departments.size());
|
||||||
|
long begin = getPaginatorBegin(pageNumber);
|
||||||
|
long count = getPaginatorCount(begin, departments.size());
|
||||||
|
long end = getPaginatorEnd(begin, count);
|
||||||
|
pageNumber = normalizePageNumber(pageCount, pageNumber);
|
||||||
|
|
||||||
|
departments.setRange((int) begin, (int) end);
|
||||||
|
createPaginatorElement(
|
||||||
|
parent, pageNumber, pageCount, begin, end, count);
|
||||||
|
|
||||||
|
while (departments.next()) {
|
||||||
|
SciDepartment department;
|
||||||
|
department = departments.getDepartment();
|
||||||
|
|
||||||
|
Element departmentElem = departmentsElem.newChildElement(
|
||||||
|
"department");
|
||||||
|
departmentElem.addAttribute("order", Integer.toString(departments.
|
||||||
|
getDepartmentOrder()));
|
||||||
|
departmentElem.addAttribute("oid", department.getOID().toString());
|
||||||
|
|
||||||
|
Element title = departmentElem.newChildElement("title");
|
||||||
|
title.setText(department.getTitle());
|
||||||
|
|
||||||
|
if ((department.getAddendum() != null)
|
||||||
|
&& !(department.getAddendum().isEmpty())) {
|
||||||
|
Element addendum = departmentElem.newChildElement("addendum");
|
||||||
|
addendum.setText(department.getAddendum());
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((department.getDepartmentShortDescription() != null)
|
||||||
|
&& !(department.getDepartmentShortDescription().isEmpty())) {
|
||||||
|
Element shortDesc = departmentElem.newChildElement(
|
||||||
|
"shortDescription");
|
||||||
|
shortDesc.setText(department.getDepartmentShortDescription());
|
||||||
|
}
|
||||||
|
|
||||||
|
GenericOrganizationalUnitPersonCollection heads;
|
||||||
|
heads = department.getPersons();
|
||||||
|
heads.addFilter("role_name = 'head'");
|
||||||
|
heads.addOrder("surname asc, givenname asc");
|
||||||
|
|
||||||
|
if (heads.size() > 0) {
|
||||||
|
Element headsElem = departmentElem.newChildElement("heads");
|
||||||
|
|
||||||
|
while (heads.next()) {
|
||||||
|
GenericPerson head = heads.getPerson();
|
||||||
|
Element headElem = headsElem.newChildElement("head");
|
||||||
|
Element titlePre = headElem.newChildElement("titlePre");
|
||||||
|
titlePre.setText(head.getTitlePre());
|
||||||
|
Element givenName = headElem.newChildElement("givenname");
|
||||||
|
givenName.setText(head.getGivenName());
|
||||||
|
Element surname = headElem.newChildElement("surname");
|
||||||
|
surname.setText(head.getSurname());
|
||||||
|
Element titlePost = headElem.newChildElement("titlePost");
|
||||||
|
titlePost.setText(head.getTitlePost());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GenericOrganizationalUnitContactCollection contacts;
|
||||||
|
contacts = department.getContacts();
|
||||||
|
if (contacts.size() > 0) {
|
||||||
|
Element contactsElem =
|
||||||
|
departmentElem.newChildElement("contacts");
|
||||||
|
|
||||||
|
while (contacts.next()) {
|
||||||
|
generateContactXML(contacts.getContact(),
|
||||||
|
contactsElem,
|
||||||
|
state,
|
||||||
|
Integer.toString(
|
||||||
|
contacts.getContactOrder()),
|
||||||
|
true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void mergeMembers(
|
||||||
|
final SciOrganizationDepartmentsCollection departments,
|
||||||
|
final List<MemberListItem> members,
|
||||||
|
final List<String> filters) {
|
||||||
|
|
||||||
|
while (departments.next()) {
|
||||||
|
SciDepartment department = departments.getDepartment();
|
||||||
|
GenericOrganizationalUnitPersonCollection departmentsMembers;
|
||||||
|
departmentsMembers = department.getPersons();
|
||||||
|
for (String filter : filters) {
|
||||||
|
departmentsMembers.addFilter(filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
while (departmentsMembers.next()) {
|
||||||
|
addMember(departmentsMembers.getPerson(),
|
||||||
|
departmentsMembers.getRoleName(),
|
||||||
|
departmentsMembers.getStatus(),
|
||||||
|
members);
|
||||||
|
}
|
||||||
|
|
||||||
|
SciDepartmentSubDepartmentsCollection subDepartments;
|
||||||
|
subDepartments = department.getSubDepartments();
|
||||||
|
|
||||||
|
|
||||||
|
if ((subDepartments != null)
|
||||||
|
&& subDepartments.size() > 0) {
|
||||||
|
mergeMembers(subDepartments, members, filters);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void generateMembersXML(final SciOrganization orga,
|
||||||
|
final Element parent,
|
||||||
|
final PageState state,
|
||||||
|
final List<String> filters) {
|
||||||
|
if (SciOrganization.getConfig().getOrganizationMembersMerge()) {
|
||||||
|
List<MemberListItem> members;
|
||||||
|
members = new LinkedList<MemberListItem>();
|
||||||
|
GenericOrganizationalUnitPersonCollection orgaMembers;
|
||||||
|
orgaMembers = orga.getPersons();
|
||||||
|
for (String filter : filters) {
|
||||||
|
orgaMembers.addFilter(filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
SciOrganizationDepartmentsCollection departments;
|
||||||
|
departments = orga.getDepartments();
|
||||||
|
|
||||||
|
while (orgaMembers.next()) {
|
||||||
|
addMember(orgaMembers.getPerson(),
|
||||||
|
orgaMembers.getRoleName(),
|
||||||
|
orgaMembers.getStatus(),
|
||||||
|
members);
|
||||||
|
}
|
||||||
|
|
||||||
|
mergeMembers(departments, members, filters);
|
||||||
|
|
||||||
|
generateMembersListXML(members, parent, state);
|
||||||
|
} else {
|
||||||
|
GenericOrganizationalUnitPersonCollection orgaMembers;
|
||||||
|
orgaMembers = orga.getPersons();
|
||||||
|
for(String filter : filters) {
|
||||||
|
orgaMembers.addFilter(filter);
|
||||||
|
}
|
||||||
|
List<MemberListItem> members = new LinkedList<MemberListItem>();
|
||||||
|
|
||||||
|
while (orgaMembers.next()) {
|
||||||
|
addMember(orgaMembers.getPerson(),
|
||||||
|
orgaMembers.getRoleName(),
|
||||||
|
orgaMembers.getStatus(),
|
||||||
|
members);
|
||||||
|
}
|
||||||
|
|
||||||
|
generateMembersListXML(members, parent, state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void mergeProjects(
|
||||||
|
final SciOrganizationDepartmentsCollection departments,
|
||||||
|
final List<SciProject> projects,
|
||||||
|
final List<String> filters) {
|
||||||
|
|
||||||
|
while (departments.next()) {
|
||||||
|
SciDepartmentProjectsCollection departmentProjects;
|
||||||
|
departmentProjects = departments.getDepartment().getProjects();
|
||||||
|
|
||||||
|
if ((filters != null)
|
||||||
|
&& !(filters.isEmpty())) {
|
||||||
|
for (String filter : filters) {
|
||||||
|
departmentProjects.addFilter(filter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
while (departmentProjects.next()) {
|
||||||
|
projects.add(departmentProjects.getProject());
|
||||||
|
}
|
||||||
|
|
||||||
|
SciDepartmentSubDepartmentsCollection subDepartments;
|
||||||
|
subDepartments = departments.getDepartment().getSubDepartments();
|
||||||
|
|
||||||
|
if ((subDepartments != null)
|
||||||
|
&& subDepartments.size() > 0) {
|
||||||
|
mergeProjects(subDepartments, projects, filters);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void generateProjectsXML(final SciOrganization orga,
|
||||||
|
final Element parent,
|
||||||
|
final PageState state,
|
||||||
|
final List<String> filters) {
|
||||||
|
if (SciOrganization.getConfig().getOrganizationProjectsMerge()) {
|
||||||
|
List<SciProject> projects;
|
||||||
|
projects = new LinkedList<SciProject>();
|
||||||
|
SciOrganizationProjectsCollection orgaProjects;
|
||||||
|
orgaProjects = orga.getProjects();
|
||||||
|
|
||||||
|
if ((filters != null)
|
||||||
|
&& !(filters.isEmpty())) {
|
||||||
|
for (String filter : filters) {
|
||||||
|
orgaProjects.addFilter(filter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SciOrganizationDepartmentsCollection departments;
|
||||||
|
departments = orga.getDepartments();
|
||||||
|
|
||||||
|
while (orgaProjects.next()) {
|
||||||
|
projects.add(orgaProjects.getProject());
|
||||||
|
}
|
||||||
|
|
||||||
|
mergeProjects(departments, projects, filters);
|
||||||
|
|
||||||
|
Set<SciProject> projectsSet;
|
||||||
|
List<SciProject> projectsWithoutDoubles;
|
||||||
|
projectsSet = new HashSet<SciProject>(projects);
|
||||||
|
projectsWithoutDoubles = new LinkedList<SciProject>(projectsSet);
|
||||||
|
|
||||||
|
Collections.sort(projectsWithoutDoubles, new SciProjectComparator());
|
||||||
|
|
||||||
|
long pageNumber = getPageNumber(state);
|
||||||
|
long pageCount = getPageCount(projectsWithoutDoubles.size());
|
||||||
|
long begin = getPaginatorBegin(pageNumber);
|
||||||
|
long count = getPaginatorCount(begin, projectsWithoutDoubles.size());
|
||||||
|
long end = getPaginatorEnd(begin, count);
|
||||||
|
pageNumber = normalizePageNumber(pageCount, pageNumber);
|
||||||
|
|
||||||
|
List<SciProject> projectsWithoutDoublesToShow = projectsWithoutDoubles.
|
||||||
|
subList((int) begin,
|
||||||
|
(int) end);
|
||||||
|
|
||||||
|
createPaginatorElement(
|
||||||
|
parent, pageNumber, pageCount, begin,
|
||||||
|
end,
|
||||||
|
count);
|
||||||
|
|
||||||
|
Element projectsWithoutDoublesElem = parent.newChildElement(
|
||||||
|
"projectsWithoutDoubles");
|
||||||
|
for (SciProject project : projectsWithoutDoublesToShow) {
|
||||||
|
generateProjectXML(project, projectsWithoutDoublesElem, state);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
SciOrganizationProjectsCollection orgaProjects;
|
||||||
|
orgaProjects = orga.getProjects();
|
||||||
|
|
||||||
|
if ((filters != null)
|
||||||
|
&& !(filters.isEmpty())) {
|
||||||
|
for (String filter : filters) {
|
||||||
|
orgaProjects.addFilter(filter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
List<SciProject> projects = new LinkedList<SciProject>();
|
||||||
|
|
||||||
|
while (orgaProjects.next()) {
|
||||||
|
projects.add(orgaProjects.getProject());
|
||||||
|
}
|
||||||
|
|
||||||
|
Collections.sort(projects, new SciProjectComparator());
|
||||||
|
|
||||||
|
long pageNumber = getPageNumber(state);
|
||||||
|
long pageCount = getPageCount(projects.size());
|
||||||
|
long begin = getPaginatorBegin(pageNumber);
|
||||||
|
long count = getPaginatorCount(begin, projects.size());
|
||||||
|
long end = getPaginatorEnd(begin, count);
|
||||||
|
pageNumber = normalizePageNumber(pageCount, pageNumber);
|
||||||
|
|
||||||
|
List<SciProject> projectsToShow = projects.subList((int) begin,
|
||||||
|
(int) end);
|
||||||
|
|
||||||
|
createPaginatorElement(
|
||||||
|
parent, pageNumber, pageCount, begin,
|
||||||
|
end,
|
||||||
|
count);
|
||||||
|
|
||||||
|
Element projectsElem = parent.newChildElement("projects");
|
||||||
|
for (SciProject project : projectsToShow) {
|
||||||
|
generateProjectXML(project, projectsElem, state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void generateXML(ContentItem item,
|
||||||
|
Element element,
|
||||||
|
PageState state) {
|
||||||
|
Element content = generateBaseXML(item, element, state);
|
||||||
|
|
||||||
|
Element availableData = content.newChildElement("availableData");
|
||||||
|
|
||||||
|
SciOrganization orga = (SciOrganization) item;
|
||||||
|
|
||||||
|
SciOrganizationConfig config;
|
||||||
|
config = SciOrganization.getConfig();
|
||||||
|
|
||||||
|
if ((orga.getOrganizationDescription() != null)
|
||||||
|
&& !(orga.getOrganizationDescription().isEmpty())) {
|
||||||
|
availableData.newChildElement("description");
|
||||||
|
}
|
||||||
|
if ((orga.getContacts() != null)
|
||||||
|
&& (orga.getContacts().size() > 0)) {
|
||||||
|
availableData.newChildElement("contacts");
|
||||||
|
}
|
||||||
|
if ((orga.getDepartments() != null)
|
||||||
|
&& (orga.getDepartments().size() > 0)) {
|
||||||
|
availableData.newChildElement("departments");
|
||||||
|
}
|
||||||
|
if (config.getOrganizationMembersAllInOne()) {
|
||||||
|
if (hasMembers(orga, new LinkedList<String>())) {
|
||||||
|
availableData.newChildElement("members");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (hasMembers(orga, getFiltersForActiveMembers())) {
|
||||||
|
availableData.newChildElement("membersActive");
|
||||||
|
}
|
||||||
|
if (hasMembers(orga, getFiltersForAssociatedMembers())) {
|
||||||
|
availableData.newChildElement("membersAssociated");
|
||||||
|
}
|
||||||
|
if (hasMembers(orga, getFiltersForFormerMembers())) {
|
||||||
|
availableData.newChildElement("membersFormer");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (config.getOrganizationProjectsAllInOne()) {
|
||||||
|
if (hasProjects(orga, new LinkedList<String>())) {
|
||||||
|
availableData.newChildElement("projects");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (hasProjects(orga, getFiltersForOngoingProjects())) {
|
||||||
|
availableData.newChildElement("projectsOngoing");
|
||||||
|
}
|
||||||
|
if (hasProjects(orga, getFiltersForFinishedProjects())) {
|
||||||
|
availableData.newChildElement("projectsFinished");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String show = getShowParam(state);
|
||||||
|
|
||||||
|
if (SHOW_DESCRIPTION.equals(show)) {
|
||||||
|
String desc;
|
||||||
|
desc = orga.getOrganizationDescription();
|
||||||
|
|
||||||
|
Element description = content.newChildElement("description");
|
||||||
|
description.setText(desc);
|
||||||
|
} else if (SHOW_CONTACTS.equals(show)) {
|
||||||
|
generateContactsXML(orga, content, state);
|
||||||
|
} else if (SHOW_DEPARTMENTS.equals(show)) {
|
||||||
|
generateDepartmentsXML(orga, content, state);
|
||||||
|
} else if (SHOW_MEMBERS.equals(show)) {
|
||||||
|
generateMembersXML(orga, content, state, new LinkedList<String>());
|
||||||
|
} else if (SHOW_MEMBERS_ACTIVE.equals(show)) {
|
||||||
|
generateMembersXML(orga, content, state,
|
||||||
|
getFiltersForActiveMembers());
|
||||||
|
} else if (SHOW_MEMBERS_ASSOCIATED.equals(show)) {
|
||||||
|
generateMembersXML(orga, content, state,
|
||||||
|
getFiltersForAssociatedMembers());
|
||||||
|
} else if (SHOW_MEMBERS_FORMER.equals(show)) {
|
||||||
|
generateMembersXML(orga, content, state,
|
||||||
|
getFiltersForFormerMembers());
|
||||||
|
} else if (SHOW_PROJECTS.equals(show)) {
|
||||||
|
generateProjectsXML(orga, content, state, new LinkedList<String>());
|
||||||
|
} else if (SHOW_PROJECTS_ONGOING.equals(show)) {
|
||||||
|
generateProjectsXML(
|
||||||
|
orga, content, state, getFiltersForOngoingProjects());
|
||||||
|
} else if (SHOW_PROJECTS_FINISHED.equals(show)) {
|
||||||
|
Calendar today = new GregorianCalendar();
|
||||||
|
generateProjectsXML(
|
||||||
|
orga, content, state, getFiltersForFinishedProjects());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -86,7 +86,7 @@ public class SciOrganizationProjectsTable
|
||||||
SciOrganizationGlobalizationUtil.globalize(
|
SciOrganizationGlobalizationUtil.globalize(
|
||||||
"sciorganization.ui.organization.project.remove").localize(),
|
"sciorganization.ui.organization.project.remove").localize(),
|
||||||
TABLE_COL_DEL));
|
TABLE_COL_DEL));
|
||||||
colModel.add(new TableColumn(
|
/*colModel.add(new TableColumn(
|
||||||
2,
|
2,
|
||||||
SciOrganizationGlobalizationUtil.globalize(
|
SciOrganizationGlobalizationUtil.globalize(
|
||||||
"sciorganization.ui.organization.project.up").localize(),
|
"sciorganization.ui.organization.project.up").localize(),
|
||||||
|
|
@ -95,15 +95,15 @@ public class SciOrganizationProjectsTable
|
||||||
3,
|
3,
|
||||||
SciOrganizationGlobalizationUtil.globalize(
|
SciOrganizationGlobalizationUtil.globalize(
|
||||||
"sciorganization.ui.organization.project.down").localize(),
|
"sciorganization.ui.organization.project.down").localize(),
|
||||||
TABLE_COL_DOWN));
|
TABLE_COL_DOWN));*/
|
||||||
|
|
||||||
setModelBuilder(
|
setModelBuilder(
|
||||||
new SciOrganizationProjectsTableModelBuilder(itemModel));
|
new SciOrganizationProjectsTableModelBuilder(itemModel));
|
||||||
|
|
||||||
colModel.get(0).setCellRenderer(new EditCellRenderer());
|
colModel.get(0).setCellRenderer(new EditCellRenderer());
|
||||||
colModel.get(1).setCellRenderer(new DeleteCellRenderer());
|
colModel.get(1).setCellRenderer(new DeleteCellRenderer());
|
||||||
colModel.get(2).setCellRenderer(new UpCellRenderer());
|
//colModel.get(2).setCellRenderer(new UpCellRenderer());
|
||||||
colModel.get(3).setCellRenderer(new DownCellRenderer());
|
//colModel.get(3).setCellRenderer(new DownCellRenderer());
|
||||||
|
|
||||||
addTableActionListener(this);
|
addTableActionListener(this);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,256 @@
|
||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
import com.arsdigita.cms.ContentItem;
|
||||||
|
import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitPersonCollection;
|
||||||
|
import com.arsdigita.cms.contenttypes.GenericPerson;
|
||||||
|
import com.arsdigita.cms.contenttypes.SciMember;
|
||||||
|
import com.arsdigita.cms.contenttypes.SciOrganizationConfig;
|
||||||
|
import com.arsdigita.cms.contenttypes.SciProject;
|
||||||
|
import com.arsdigita.cms.contenttypes.SciProjectSubProjectsCollection;
|
||||||
|
import com.arsdigita.xml.Element;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.GregorianCalendar;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Jens Pelzetter
|
||||||
|
*/
|
||||||
|
public class SciProjectPanel extends SciOrganizationBasePanel {
|
||||||
|
|
||||||
|
private static final Logger s_log = Logger.getLogger(SciProjectPanel.class);
|
||||||
|
public static final String SHOW_DESCRIPTION = "description";
|
||||||
|
public static final String SHOW_SUBPROJECTS = "subprojects";
|
||||||
|
public static final String SHOW_SUBPROJECTS_ONGOING = "subprojectsOngoing";
|
||||||
|
public static final String SHOW_SUBPROJECTS_FINISHED = "subprojectsFinished";
|
||||||
|
public static final String SHOW_PUBLICATIONS = "publications";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getDefaultForShowParam() {
|
||||||
|
return SHOW_DESCRIPTION;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Class<? extends ContentItem> getAllowedClass() {
|
||||||
|
return SciProject.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean hasMembers(final SciProject project,
|
||||||
|
final List<String> filters) {
|
||||||
|
if (project.getPersons() != null) {
|
||||||
|
GenericOrganizationalUnitPersonCollection persons;
|
||||||
|
persons = project.getPersons();
|
||||||
|
for(String filter : filters) {
|
||||||
|
persons.addFilter(filter);
|
||||||
|
}
|
||||||
|
if (persons.size() > 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean hasMembers;
|
||||||
|
hasMembers = false;
|
||||||
|
if (SciProject.getConfig().getOrganizationMembersMerge()) {
|
||||||
|
SciProjectSubProjectsCollection subProjects;
|
||||||
|
subProjects = project.getSubProjects();
|
||||||
|
|
||||||
|
while (subProjects.next()) {
|
||||||
|
SciProject subProject = subProjects.getSubProject();
|
||||||
|
|
||||||
|
hasMembers = hasMembers(subProject, filters);
|
||||||
|
if (hasMembers) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean hasSubProjects(final SciProject project,
|
||||||
|
final List<String> filters) {
|
||||||
|
if (project.getSubProjects() != null) {
|
||||||
|
|
||||||
|
SciProjectSubProjectsCollection subProjects;
|
||||||
|
subProjects = project.getSubProjects();
|
||||||
|
for(String filter : filters) {
|
||||||
|
subProjects.addFilter(filter);
|
||||||
|
}
|
||||||
|
if (subProjects.size() > 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void generateSubProjectsXML(final SciProject project,
|
||||||
|
final Element parent,
|
||||||
|
final PageState state,
|
||||||
|
final List<String> filters) {
|
||||||
|
SciProjectSubProjectsCollection subProjects;
|
||||||
|
subProjects = project.getSubProjects();
|
||||||
|
for(String filter : filters) {
|
||||||
|
subProjects.addFilter(filter);
|
||||||
|
}
|
||||||
|
subProjects.addOrder("begin desc, end desc");
|
||||||
|
|
||||||
|
long pageNumber = getPageNumber(state);
|
||||||
|
|
||||||
|
Element subProjectsElem = parent.newChildElement("subProjects");
|
||||||
|
|
||||||
|
long pageCount = getPageCount(subProjects.size());
|
||||||
|
long begin = getPaginatorBegin(pageNumber);
|
||||||
|
long count = getPaginatorCount(begin, subProjects.size());
|
||||||
|
long end = getPaginatorEnd(begin, count);
|
||||||
|
pageNumber = normalizePageNumber(pageCount, pageNumber);
|
||||||
|
|
||||||
|
subProjects.setRange((int) begin, (int) end);
|
||||||
|
createPaginatorElement(parent, pageNumber, pageCount, begin, end, count);
|
||||||
|
|
||||||
|
while (subProjects.next()) {
|
||||||
|
SciProject subProject;
|
||||||
|
subProject = subProjects.getSubProject();
|
||||||
|
|
||||||
|
generateProjectXML(subProject, subProjectsElem, state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void mergeMembers(
|
||||||
|
final SciProjectSubProjectsCollection subProjects,
|
||||||
|
final List<MemberListItem> members,
|
||||||
|
final boolean active,
|
||||||
|
final boolean associated,
|
||||||
|
final boolean former) {
|
||||||
|
while (subProjects.next()) {
|
||||||
|
SciProject subProject = subProjects.getSubProject();
|
||||||
|
GenericOrganizationalUnitPersonCollection projectMembers;
|
||||||
|
projectMembers = subProject.getPersons();
|
||||||
|
|
||||||
|
while (projectMembers.next()) {
|
||||||
|
addMember(projectMembers.getPerson(),
|
||||||
|
projectMembers.getRoleName(),
|
||||||
|
projectMembers.getStatus(),
|
||||||
|
members);
|
||||||
|
}
|
||||||
|
|
||||||
|
SciProjectSubProjectsCollection subSubProjects;
|
||||||
|
subSubProjects = subProject.getSubProjects();
|
||||||
|
if ((subSubProjects != null) && (subSubProjects.size() > 0)) {
|
||||||
|
mergeMembers(subProjects, members, active, associated, former);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void generateMembersXML(final SciProject project,
|
||||||
|
final Element parent,
|
||||||
|
final PageState state,
|
||||||
|
final boolean active,
|
||||||
|
final boolean associated,
|
||||||
|
final boolean former) {
|
||||||
|
GenericOrganizationalUnitPersonCollection projectMembers;
|
||||||
|
projectMembers = project.getPersons();
|
||||||
|
|
||||||
|
List<MemberListItem> members;
|
||||||
|
members = new LinkedList<MemberListItem>();
|
||||||
|
|
||||||
|
while (projectMembers.next()) {
|
||||||
|
addMember(projectMembers.getPerson(),
|
||||||
|
projectMembers.getRoleName(),
|
||||||
|
projectMembers.getStatus(),
|
||||||
|
members);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SciProject.getConfig().getProjectMembersMerge()) {
|
||||||
|
|
||||||
|
SciProjectSubProjectsCollection subProjects;
|
||||||
|
subProjects = project.getSubProjects();
|
||||||
|
|
||||||
|
mergeMembers(subProjects, members, active, associated, former);
|
||||||
|
}
|
||||||
|
|
||||||
|
generateMembersListXML(members, parent, state);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void generateXML(ContentItem item,
|
||||||
|
Element element,
|
||||||
|
PageState state) {
|
||||||
|
Element content = generateBaseXML(item, element, state);
|
||||||
|
|
||||||
|
Element availableData = content.newChildElement("availableData");
|
||||||
|
|
||||||
|
SciProject project = (SciProject) item;
|
||||||
|
|
||||||
|
SciOrganizationConfig config = SciProject.getConfig();
|
||||||
|
|
||||||
|
if ((project.getProjectDescription() != null)
|
||||||
|
&& !project.getProjectDescription().isEmpty()) {
|
||||||
|
availableData.newChildElement("description");
|
||||||
|
}
|
||||||
|
if ((project.getContacts() != null)
|
||||||
|
&& (project.getContacts().size() > 0)) {
|
||||||
|
availableData.newChildElement("contacts");
|
||||||
|
}
|
||||||
|
if ((project.getSubProjects() != null)
|
||||||
|
&& (project.getSubProjects().size() > 0)) {
|
||||||
|
availableData.newChildElement("subProjects");
|
||||||
|
}
|
||||||
|
if (config.getProjectMembersAllInOne()) {
|
||||||
|
if (hasMembers(project, new LinkedList<String>())) {
|
||||||
|
availableData.newChildElement("members");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (hasMembers(project, getFiltersForActiveMembers())) {
|
||||||
|
availableData.newChildElement("activeMembers");
|
||||||
|
}
|
||||||
|
if (hasMembers(project,getFiltersForAssociatedMembers())) {
|
||||||
|
availableData.newChildElement("associatedMembers");
|
||||||
|
}
|
||||||
|
if (hasMembers(project, getFiltersForFormerMembers())) {
|
||||||
|
availableData.newChildElement("formerMembers");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String show = getShowParam(state);
|
||||||
|
|
||||||
|
if (SHOW_DESCRIPTION.equals(show)) {
|
||||||
|
String desc;
|
||||||
|
desc = project.getProjectDescription();
|
||||||
|
|
||||||
|
Element description = content.newChildElement("description");
|
||||||
|
description.setText(desc);
|
||||||
|
} else if (SHOW_CONTACTS.equals(show)) {
|
||||||
|
generateContactsXML(project, content, state);
|
||||||
|
} else if (SHOW_SUBPROJECTS.equals(show)) {
|
||||||
|
generateSubProjectsXML(project, content, state, new LinkedList<String>());
|
||||||
|
} else if (SHOW_SUBPROJECTS_ONGOING.equals(show)) {
|
||||||
|
generateSubProjectsXML(project, content, state, getFiltersForOngoingProjects());
|
||||||
|
} else if (SHOW_SUBPROJECTS_FINISHED.equals(show)) {
|
||||||
|
generateSubProjectsXML(project, content, state, getFiltersForFinishedProjects());
|
||||||
|
} else if (SHOW_MEMBERS.equals(show)) {
|
||||||
|
generateMembersXML(project, content, state, true, true, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -82,7 +82,7 @@ public class SciProjectSubProjectsTable
|
||||||
SciOrganizationGlobalizationUtil.globalize(
|
SciOrganizationGlobalizationUtil.globalize(
|
||||||
"sciorganization.ui.project.subproject.remove").localize(),
|
"sciorganization.ui.project.subproject.remove").localize(),
|
||||||
TABLE_COL_DEL));
|
TABLE_COL_DEL));
|
||||||
colModel.add(new TableColumn(
|
/*colModel.add(new TableColumn(
|
||||||
2,
|
2,
|
||||||
SciOrganizationGlobalizationUtil.globalize(
|
SciOrganizationGlobalizationUtil.globalize(
|
||||||
"sciorganization.ui.project.subproject.up").localize(),
|
"sciorganization.ui.project.subproject.up").localize(),
|
||||||
|
|
@ -91,14 +91,14 @@ public class SciProjectSubProjectsTable
|
||||||
3,
|
3,
|
||||||
SciOrganizationGlobalizationUtil.globalize(
|
SciOrganizationGlobalizationUtil.globalize(
|
||||||
"sciorganization.ui.project.subproject.down").localize(),
|
"sciorganization.ui.project.subproject.down").localize(),
|
||||||
TABLE_COL_DOWN));
|
TABLE_COL_DOWN));*/
|
||||||
|
|
||||||
setModelBuilder(
|
setModelBuilder(
|
||||||
new SciProjectSubProjectsTableModelBuilder(itemModel));
|
new SciProjectSubProjectsTableModelBuilder(itemModel));
|
||||||
colModel.get(0).setCellRenderer(new EditCellRenderer());
|
colModel.get(0).setCellRenderer(new EditCellRenderer());
|
||||||
colModel.get(1).setCellRenderer(new DeleteCellRenderer());
|
colModel.get(1).setCellRenderer(new DeleteCellRenderer());
|
||||||
colModel.get(2).setCellRenderer(new UpCellRenderer());
|
//colModel.get(2).setCellRenderer(new UpCellRenderer());
|
||||||
colModel.get(3).setCellRenderer(new DownCellRenderer());
|
//colModel.get(3).setCellRenderer(new DownCellRenderer());
|
||||||
|
|
||||||
addTableActionListener(this);
|
addTableActionListener(this);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -231,127 +231,6 @@ public class Loader extends PackageLoader {
|
||||||
"ZeS Welcome Page for navigation",
|
"ZeS Welcome Page for navigation",
|
||||||
"/packages/navigation/templates/zes-welcome.jsp");
|
"/packages/navigation/templates/zes-welcome.jsp");
|
||||||
|
|
||||||
template = Template.create(
|
|
||||||
"SciProject List",
|
|
||||||
"List of SciProjects",
|
|
||||||
"/packages/navigation/templates/SciProjectList.jsp");
|
|
||||||
|
|
||||||
template = Template.create(
|
|
||||||
"SciOrganization Description Only",
|
|
||||||
"Display only the description of a SciOrganization",
|
|
||||||
"/packages/navigation/templates/"
|
|
||||||
+ "SciOrganizationDescription.jsp");
|
|
||||||
|
|
||||||
template = Template.create(
|
|
||||||
"SciOrganization Members",
|
|
||||||
"Displays only the members of a SciOrganization "
|
|
||||||
+ "(and the short description)",
|
|
||||||
"/packages/navigation/templates/SciOrganizationMembers.jsp");
|
|
||||||
|
|
||||||
template =
|
|
||||||
Template.create(
|
|
||||||
"SciOrganization Active Members",
|
|
||||||
"Displays only the active members of a SciOrganization "
|
|
||||||
+ "(and the short description)",
|
|
||||||
"/packages/navigation/templates/SciOrganizationActiveMembers.jsp");
|
|
||||||
|
|
||||||
template =
|
|
||||||
Template.create(
|
|
||||||
"SciOrganization Associated Members",
|
|
||||||
"Displays only the associated members of a SciOrganization "
|
|
||||||
+ "(and the short description)",
|
|
||||||
"/packages/navigation/templates/SciOrganizationAssociatedMembers.jsp");
|
|
||||||
|
|
||||||
template =
|
|
||||||
Template.create(
|
|
||||||
"SciOrganization Former Members",
|
|
||||||
"Displays only the former members of a SciOrganization "
|
|
||||||
+ "(and the short description)",
|
|
||||||
"/packages/navigation/templates/SciOrganizationFormerMembers.jsp");
|
|
||||||
|
|
||||||
template = Template.create(
|
|
||||||
"SciOrganization Departments",
|
|
||||||
"Displays only the departments of a SciOrganization",
|
|
||||||
"/packages/naviagation/templates/"
|
|
||||||
+ "SciOrganizationDepartments.jsp");
|
|
||||||
|
|
||||||
template = Template.create(
|
|
||||||
"SciOrganization Projects",
|
|
||||||
"Displays only the projects of a SciOrganization (and its "
|
|
||||||
+ "departments",
|
|
||||||
"/packages/navigation/templates/SciOrganizationProjects.jsp");
|
|
||||||
|
|
||||||
template =
|
|
||||||
Template.create(
|
|
||||||
"SciOrganization Ongoing Projects",
|
|
||||||
"Displays only the ongoging projects of a SciOrganization "
|
|
||||||
+ "(and its departments)",
|
|
||||||
"/packages/navigation/templates/SciOrganizationOngoingProjects.jsp");
|
|
||||||
|
|
||||||
template =
|
|
||||||
Template.create(
|
|
||||||
"SciOrganization Finished Projects",
|
|
||||||
"Displays only the finished projects of a SciOrganization "
|
|
||||||
+ "(and its departments)",
|
|
||||||
"/packages/navigation/templates/SciOrganizationFinishedProjects.jsp");
|
|
||||||
|
|
||||||
template = Template.create(
|
|
||||||
"SciDepartment Description Only",
|
|
||||||
"Display only the description of a SciDepartment",
|
|
||||||
"/packages/navigation/templates/"
|
|
||||||
+ "SciDepartmentDescription.jsp");
|
|
||||||
|
|
||||||
template = Template.create(
|
|
||||||
"SciDepartment Members",
|
|
||||||
"Displays only the members of a SciDepartment "
|
|
||||||
+ "(and the short description)",
|
|
||||||
"/packages/navigation/templates/SciDepartmentMembers.jsp");
|
|
||||||
|
|
||||||
template = Template.create(
|
|
||||||
"SciDepartment Active Members",
|
|
||||||
"Displays only the active members of a SciDepartment "
|
|
||||||
+ "(and the short description)",
|
|
||||||
"/packages/navigation/templates/SciDepartmentActiveMembers.jsp");
|
|
||||||
|
|
||||||
template =
|
|
||||||
Template.create(
|
|
||||||
"SciDepartment Associated Members",
|
|
||||||
"Displays only the associated members of a SciDepartment "
|
|
||||||
+ "(and the short description)",
|
|
||||||
"/packages/navigation/templates/SciDepartmentAssociatedMembers.jsp");
|
|
||||||
|
|
||||||
template = Template.create(
|
|
||||||
"SciDepartment Former Members",
|
|
||||||
"Displays only the former members of a SciDepartment "
|
|
||||||
+ "(and the short description)",
|
|
||||||
"/packages/navigation/templates/SciDepartmentFormerMembers.jsp");
|
|
||||||
|
|
||||||
template = Template.create(
|
|
||||||
"SciDepartment Departments",
|
|
||||||
"Displays only the subdepartments of a SciDepartment",
|
|
||||||
"/packages/naviagation/templates/"
|
|
||||||
+ "SciDepartmentDepartments.jsp");
|
|
||||||
|
|
||||||
template = Template.create(
|
|
||||||
"SciDepartment Projects",
|
|
||||||
"Displays only the projects of a SciDepartment (and its "
|
|
||||||
+ "departments",
|
|
||||||
"/packages/navigation/templates/SciDepartmentProjects.jsp");
|
|
||||||
|
|
||||||
template =
|
|
||||||
Template.create(
|
|
||||||
"SciDepartment Ongoing Projects",
|
|
||||||
"Displays only the ongoing projects of a SciDepartment (and its "
|
|
||||||
+ "subdepartments",
|
|
||||||
"/packages/navigation/templates/SciDepartmentOngoingProjects.jsp");
|
|
||||||
|
|
||||||
template =
|
|
||||||
Template.create(
|
|
||||||
"SciDepartment Finished Projects",
|
|
||||||
"Displays only the finished projects of a SciDepartment (and its "
|
|
||||||
+ "subdepartments",
|
|
||||||
"/packages/navigation/templates/SciDepartmentFinishedProjects.jsp");
|
|
||||||
|
|
||||||
template =
|
template =
|
||||||
Template.create(
|
Template.create(
|
||||||
"MultiPartArticle as Index Item",
|
"MultiPartArticle as Index Item",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue