From 2e67f1bd21ff59e40c7d305ce151be67221af0ee Mon Sep 17 00:00:00 2001 From: quasi Date: Wed, 11 Jan 2012 08:40:55 +0000 Subject: [PATCH] =?UTF-8?q?Sprachunabh=C3=A4ngige=20Content=20Items?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Interface LanguageInvariantContentItem hinzugefügt * GenericPerson implementiert dieses Interface und liefert mit isLanguageInvariant() true zurück * ContentItemPage so angepaßt, daß der LanguageTab bei sprachunabhängigen Content Items ausgeblendet wird. Um Content Items als sprachunabhängig zu kennzeichnen, muß das Interface implementiert werden und die Methode isLanguageIndependent() true zurückliefern. Dieser Ansatz wurde gewählt, so daß man von sprachunabhängigen Content Items auch sprachabhängige Content Items ableiten kann. Da man das Interface später nicht entfernen kann, muß die Entscheidung über die Methode laufen. Eine Anpassung von ContentItem kommt nicht in frage, da man dann immer die Methode von ContentItem ausführt, es sei denn man macht jedesmal, wenn man diese Information abfragen möchte, einen sehr umständlichen Cast auf die konkrete Klasse des ContentItems. git-svn-id: https://svn.libreccm.org/ccm/trunk@1438 8810af33-2d31-482b-a856-94f89814c4df --- .../cms/LanguageInvariantContentItem.java | 17 ++++++++++++++++ .../cms/contenttypes/GenericPerson.java | 8 +++++++- .../com/arsdigita/cms/ui/ContentItemPage.java | 20 ++++++++++++------- 3 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 ccm-cms/src/com/arsdigita/cms/LanguageInvariantContentItem.java diff --git a/ccm-cms/src/com/arsdigita/cms/LanguageInvariantContentItem.java b/ccm-cms/src/com/arsdigita/cms/LanguageInvariantContentItem.java new file mode 100644 index 000000000..3bfef110e --- /dev/null +++ b/ccm-cms/src/com/arsdigita/cms/LanguageInvariantContentItem.java @@ -0,0 +1,17 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.arsdigita.cms; + +/** + * + * Content Items implementing this interface are be language invariant, if + * isLanguageInvariant returns true + * + * @author Sören Bernstein (quasimodo) + */ +public interface LanguageInvariantContentItem { + + public abstract boolean isLanguageInvariant(); +} diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericPerson.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericPerson.java index f88f87ad4..f5bfc2a1e 100644 --- a/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericPerson.java +++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericPerson.java @@ -20,6 +20,7 @@ package com.arsdigita.cms.contenttypes; import com.arsdigita.cms.ContentType; import com.arsdigita.cms.ContentPage; +import com.arsdigita.cms.LanguageInvariantContentItem; import com.arsdigita.cms.RelationAttributeInterface; import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.domain.DomainObjectFactory; @@ -38,7 +39,8 @@ import java.util.Date; * @author Jens Pelzetter */ public class GenericPerson extends ContentPage implements - RelationAttributeInterface { + RelationAttributeInterface, + LanguageInvariantContentItem { public static final String PERSON = "person"; public static final String SURNAME = "surname"; @@ -311,4 +313,8 @@ public class GenericPerson extends ContentPage implements public String getSearchSummary() { return getFullName(); } + + public boolean isLanguageInvariant() { + return true; + } } diff --git a/ccm-cms/src/com/arsdigita/cms/ui/ContentItemPage.java b/ccm-cms/src/com/arsdigita/cms/ui/ContentItemPage.java index 48dc95231..dd9a41599 100755 --- a/ccm-cms/src/com/arsdigita/cms/ui/ContentItemPage.java +++ b/ccm-cms/src/com/arsdigita/cms/ui/ContentItemPage.java @@ -36,13 +36,7 @@ import com.arsdigita.bebop.event.PrintListener; import com.arsdigita.bebop.parameters.BigDecimalParameter; import com.arsdigita.bebop.parameters.NotNullValidationListener; import com.arsdigita.bebop.parameters.StringParameter; -import com.arsdigita.cms.CMS; -import com.arsdigita.cms.ContentItem; -import com.arsdigita.cms.ContentSection; -import com.arsdigita.cms.ContentType; -import com.arsdigita.cms.ItemSelectionModel; -import com.arsdigita.cms.PageLocations; -import com.arsdigita.cms.Template; +import com.arsdigita.cms.*; import com.arsdigita.cms.contenttypes.CustomizedPreviewLink; import com.arsdigita.cms.dispatcher.CMSDispatcher; import com.arsdigita.cms.dispatcher.CMSPage; @@ -73,6 +67,8 @@ import org.apache.log4j.Logger; * @author Michael Pih * @author Stanislav Freidin <sfreidin@redhat.com> * @author Jack Chung + * @author Sören Bernstein (quasimodo) + * * @version $Id: ContentItemPage.java 754 2005-09-02 13:26:17Z sskracic $ */ public class ContentItemPage extends CMSPage implements ActionListener { @@ -337,6 +333,16 @@ public class ContentItemPage extends CMSPage implements ActionListener { m_tabbedPane.setTabVisible(state, m_templatesPane, !ContentSection. getConfig().getHideTemplatesTab()); } + + // Added by: Sören Bernstein + // If the content item is a language invariant content item, don't show + // the language pane + if (item instanceof LanguageInvariantContentItem) { + LanguageInvariantContentItem li_item = (LanguageInvariantContentItem) item; + if(li_item.isLanguageInvariant()) { + m_tabbedPane.setTabVisible(state, m_languagesPane, false); + } + } // Set the current tab based on parameters if (setTab != null) {