diff --git a/ccm-cms-types-glossaryitem/src/ccm-cms-types-glossaryitem.config b/ccm-cms-types-glossaryitem/src/ccm-cms-types-glossaryitem.config
index adfdba100..512aee506 100755
--- a/ccm-cms-types-glossaryitem/src/ccm-cms-types-glossaryitem.config
+++ b/ccm-cms-types-glossaryitem/src/ccm-cms-types-glossaryitem.config
@@ -1,4 +1,5 @@
-
+
diff --git a/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/GlossaryItem.java b/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/GlossaryItem.java
index 6fb69df89..63edb2da3 100755
--- a/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/GlossaryItem.java
+++ b/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/GlossaryItem.java
@@ -42,6 +42,14 @@ public class GlossaryItem extends ContentPage {
/** Data object type for this domain object */
public static final String BASE_DATA_OBJECT_TYPE
= "com.arsdigita.cms.contenttypes.GlossaryItem";
+
+ private static GlossaryItemConfig config = new GlossaryItemConfig();
+ static {
+ config.load();
+ }
+ public static GlossaryItemConfig getConfig() {
+ return config;
+ }
public GlossaryItem() {
this( BASE_DATA_OBJECT_TYPE );
diff --git a/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/GlossaryItemConfig.java b/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/GlossaryItemConfig.java
new file mode 100644
index 000000000..da78a2fd3
--- /dev/null
+++ b/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/GlossaryItemConfig.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2009 Permeance Technologies Ptd Ltd. All Rights Reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package com.arsdigita.cms.contenttypes;
+
+import com.arsdigita.runtime.AbstractConfig;
+import com.arsdigita.util.parameter.EnumerationParameter;
+import com.arsdigita.util.parameter.Parameter;
+import com.arsdigita.util.parameter.StringParameter;
+
+/**
+ * Config options for GlossaryItem.
+ * @author timcarpenter
+ */
+public class GlossaryItemConfig extends AbstractConfig {
+ private final EnumerationParameter definitionEditorType;
+ private final Parameter fckEditorConfig;
+
+ /**
+ * Enum of the types of editor that can be used.
+ */
+ public enum EDITOR_TYPE {
+ WYSIWYG,
+ TEXT;
+ }
+
+ public GlossaryItemConfig() {
+ definitionEditorType = new EnumerationParameter(
+ "com.arsdigita.cms.contenttypes.glossaryitem.definition.editor",
+ Parameter.REQUIRED,
+ EDITOR_TYPE.TEXT);
+ definitionEditorType.put(EDITOR_TYPE.WYSIWYG.name().toLowerCase(),
+ EDITOR_TYPE.WYSIWYG);
+ definitionEditorType.put(EDITOR_TYPE.TEXT.name().toLowerCase(),
+ EDITOR_TYPE.TEXT);
+
+ fckEditorConfig = new StringParameter(
+ "com.arsdigita.cms.contenttypes.glossaryitem.fck_editor_config",
+ Parameter.REQUIRED,
+ "/assets/fckeditor/config/fckconfig_glossaryitem.js");
+
+ register(definitionEditorType);
+ register(fckEditorConfig);
+
+ loadInfo();
+ }
+
+ public final EDITOR_TYPE getDefinitionEditorType() {
+ return ((EDITOR_TYPE) get(definitionEditorType));
+ }
+
+ public final String getFckEditorConfig() {
+ return (String) get(fckEditorConfig);
+ }
+}
diff --git a/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/GlossaryItemConfig_parameter.properties b/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/GlossaryItemConfig_parameter.properties
new file mode 100644
index 000000000..1a3785a8c
--- /dev/null
+++ b/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/GlossaryItemConfig_parameter.properties
@@ -0,0 +1,9 @@
+com.arsdigita.cms.contenttypes.glossaryitem.definition.editor.title=Type of editor for the definition field
+com.arsdigita.cms.contenttypes.glossaryitem.definition.editor.purpose=Choose the type of editor that should be used for the definition field
+com.arsdigita.cms.contenttypes.glossaryitem.definition.editor.example=text
+com.arsdigita.cms.contenttypes.glossaryitem.definition.editor.format=[text|wysiwyg]
+
+com.arsdigita.cms.contenttypes.glossaryitem.fck_editor_config.title=FCK Editor Config
+com.arsdigita.cms.contenttypes.glossaryitem.fck_editor_config.purpose=Configuration JS for the FCK Editor
+com.arsdigita.cms.contenttypes.glossaryitem.fck_editor_config.example=/assets/fckeditor/config/fckconfig_glossaryitem.js
+com.arsdigita.cms.contenttypes.glossaryitem.fck_editor_config.format=[string]
diff --git a/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/GlossaryItemInitializer.java b/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/GlossaryItemInitializer.java
index 8897507c4..65789aafd 100755
--- a/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/GlossaryItemInitializer.java
+++ b/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/GlossaryItemInitializer.java
@@ -20,6 +20,7 @@ package com.arsdigita.cms.contenttypes;
import org.apache.log4j.Logger;
+
/**
* The CMS initializer.
*
@@ -27,10 +28,6 @@ import org.apache.log4j.Logger;
* @version $Id: GlossaryItemInitializer.java 757 2005-09-02 14:12:21Z sskracic $
*/
public class GlossaryItemInitializer extends ContentTypeInitializer {
- public final static String versionId =
- "$Id: GlossaryItemInitializer.java 757 2005-09-02 14:12:21Z sskracic $" +
- "$Author: sskracic $" +
- "$DateTime: 2004/08/17 23:15:09 $";
private static final Logger s_log = Logger.getLogger(GlossaryItemInitializer.class);
diff --git a/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/ui/GlossaryItemPropertyForm.java b/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/ui/GlossaryItemPropertyForm.java
index 9d0b8ac70..88b58b7cc 100755
--- a/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/ui/GlossaryItemPropertyForm.java
+++ b/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/ui/GlossaryItemPropertyForm.java
@@ -19,22 +19,14 @@
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.cms.contenttypes.GlossaryItem;
-import com.arsdigita.cms.contenttypes.util.GlossaryGlobalizationUtil;
import com.arsdigita.bebop.FormData;
-import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.event.FormInitListener;
import com.arsdigita.bebop.event.FormProcessListener;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.bebop.event.FormSubmissionListener;
-import com.arsdigita.bebop.form.TextArea;
-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.cms.ItemSelectionModel;
import com.arsdigita.cms.ui.authoring.BasicPageForm;
-
/**
* Form to edit the basic properties of an GlossaryItem. This form can be
* extended to create forms for GlossaryItem subclasses.
@@ -50,7 +42,7 @@ public class GlossaryItemPropertyForm
/** Name of this form */
public static final String ID = "GlossaryItem_edit";
-
+
/**
* Creates a new form to edit the GlossaryItem object specified by the item
* selection model passed in.
@@ -82,16 +74,9 @@ public class GlossaryItemPropertyForm
protected void addWidgets() {
super.addWidgets();
- add( new Label(GlossaryGlobalizationUtil.globalize("cms.contenttypes.ui.glossary.definition") ));
- ParameterModel definitionParam
- = new StringParameter( DEFINITION );
- definitionParam
- .addParameterListener( new NotNullValidationListener() );
- TextArea definition = new TextArea( definitionParam );
- definition.setCols( 40 );
- definition.setRows( 5 );
- add( definition );
-
+ GlossaryItemWidgetBuilder builder = new GlossaryItemWidgetBuilder();
+ add(builder.makeDefinitionLabel());
+ add(builder.makeDefinitionArea());
}
/** Form initialisation hook. Fills widgets with data. */
diff --git a/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/ui/GlossaryItemWidgetBuilder.java b/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/ui/GlossaryItemWidgetBuilder.java
new file mode 100644
index 000000000..9a7927a88
--- /dev/null
+++ b/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/ui/GlossaryItemWidgetBuilder.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2009 Permeance Technologies Ptd Ltd. All Rights Reserved.
+ *
+ * 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.Bebop;
+import com.arsdigita.bebop.Label;
+import com.arsdigita.bebop.form.DHTMLEditor;
+import com.arsdigita.bebop.form.TextArea;
+import com.arsdigita.bebop.parameters.NotNullValidationListener;
+import com.arsdigita.bebop.util.BebopConstants;
+import com.arsdigita.cms.contenttypes.GlossaryItem;
+import com.arsdigita.cms.contenttypes.ui.authoring.GlossaryItemCreate;
+import com.arsdigita.cms.contenttypes.util.GlossaryGlobalizationUtil;
+import com.arsdigita.cms.ui.CMSDHTMLEditor;
+
+import static com.arsdigita.cms.contenttypes.ui.GlossaryItemPropertyForm.DEFINITION;
+
+/**
+ * Helps to build some of the widgets for {@link GlossaryItemPropertyForm}
+ * and {@link GlossaryItemCreate}
+ * @author timcarpenter
+ */
+public class GlossaryItemWidgetBuilder {
+ public TextArea makeDefinitionArea() {
+ TextArea definition = null;
+ switch (GlossaryItem.getConfig().getDefinitionEditorType()) {
+ case WYSIWYG:
+ definition = new CMSDHTMLEditor(DEFINITION);
+ ((CMSDHTMLEditor) definition).setWrap(DHTMLEditor.SOFT);
+ if (Bebop.getConfig().getDHTMLEditor()
+ .equals(BebopConstants.BEBOP_FCKEDITOR))
+ {
+ ((CMSDHTMLEditor) definition).setConfig(
+ new DHTMLEditor.Config("glossaryitem",
+ GlossaryItem.getConfig().getFckEditorConfig()));
+ } else {
+ // remove this so end users cannot browse through back end
+ // folder system
+ ((CMSDHTMLEditor) definition).hideButton("insertlink");
+ }
+ break;
+ default:
+ definition = new TextArea(DEFINITION);
+ definition.setWrap(TextArea.SOFT);
+ break;
+ }
+
+ definition.addValidationListener(new NotNullValidationListener());
+ definition.setCols(40);
+ definition.setRows(5);
+ return definition;
+ }
+
+ public Label makeDefinitionLabel() {
+ return new Label(GlossaryGlobalizationUtil
+ .globalize("cms.contenttypes.ui.glossary.definition"));
+ }
+}
diff --git a/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/ui/authoring/GlossaryItemCreate.java b/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/ui/authoring/GlossaryItemCreate.java
index a92a0f075..235c92be8 100755
--- a/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/ui/authoring/GlossaryItemCreate.java
+++ b/ccm-cms-types-glossaryitem/src/com/arsdigita/cms/contenttypes/ui/authoring/GlossaryItemCreate.java
@@ -21,18 +21,14 @@ package com.arsdigita.cms.contenttypes.ui.authoring;
import com.arsdigita.cms.contenttypes.GlossaryItem;
import com.arsdigita.cms.Folder;
import com.arsdigita.cms.ContentBundle;
-import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.ui.authoring.PageCreate;
import com.arsdigita.cms.ui.authoring.CreationSelector;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.form.TextArea;
import com.arsdigita.bebop.event.FormSectionEvent;
-import com.arsdigita.bebop.parameters.NotNullValidationListener;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.FormData;
import com.arsdigita.bebop.PageState;
-import com.arsdigita.cms.contenttypes.util.GlossaryGlobalizationUtil;
+import com.arsdigita.cms.contenttypes.ui.GlossaryItemWidgetBuilder;
/*
* A page that will create a new GlossaryItem.
@@ -55,27 +51,20 @@ public class GlossaryItemCreate extends PageCreate {
}
protected void addWidgets() {
-
super.addWidgets();
- TextArea definition = new TextArea(DEFINITION);
- definition.addValidationListener(new NotNullValidationListener());
- definition.setCols(40);
- definition.setRows(5);
-
- add(new Label(GlossaryGlobalizationUtil.globalize("cms.contenttypes.ui.glossary.definition")));
- add(definition);
+ GlossaryItemWidgetBuilder builder = new GlossaryItemWidgetBuilder();
+ add(builder.makeDefinitionLabel());
+ add(builder.makeDefinitionArea());
}
public void process(FormSectionEvent e) throws FormProcessException {
FormData data = e.getFormData();
PageState state = e.getPageState();
- ItemSelectionModel m = getItemSelectionModel();
// Try to get the content section from the state parameter
Folder f = m_parent.getFolder(state);
- ContentSection sec = m_parent.getContentSection(state);
GlossaryItem item = (GlossaryItem)createContentPage(state);
item.setLanguage((String) data.get(LANGUAGE));
item.setName((String)data.get(NAME));
diff --git a/ccm-cms-types-glossaryitem/web/assets/fckeditor/config/fckconfig_glossaryitem.js b/ccm-cms-types-glossaryitem/web/assets/fckeditor/config/fckconfig_glossaryitem.js
new file mode 100644
index 000000000..42f2219fe
--- /dev/null
+++ b/ccm-cms-types-glossaryitem/web/assets/fckeditor/config/fckconfig_glossaryitem.js
@@ -0,0 +1,32 @@
+/*
+ * FCKeditor - The text editor for internet
+ * Copyright (C) 2003-2005 Frederico Caldeira Knabben
+ *
+ * Custom amendments for Forum application.
+ */
+FCKConfig.FillEmptyBlocks = false ;
+
+FCKConfig.ToolbarSets["Basic"] = [
+ ['Source','-','Preview','-'],
+ ['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
+ ['Cut','Copy','Paste','PasteText','PasteWord','-','Print'],
+ '/',
+ ['OrderedList','UnorderedList','-','Outdent','Indent'],
+ ['Link','Unlink'],
+ ['Undo','Redo','-','SelectAll'],
+ ['TextColor','BGColor'],
+ ['Rule','SpecialChar','Smiley'],
+ '/',
+ ['FontFormat','FontName','FontSize']
+] ;
+
+//only licenced for private use
+//FCKConfig.SpellChecker = 'ieSpell' ; // 'ieSpell' | 'SpellerPages'
+//FCKConfig.IeSpellDownloadUrl = 'http://www.iespell.com/rel/ieSpellSetup211325.exe' ;
+
+FCKConfig.LinkUpload = false ;
+FCKConfig.LinkBrowser = false ; // forum - don't allow users to browse content centre or server file system
+FCKConfig.ImageBrowser = false ;
+FCKConfig.FlashBrowser = false ;
+
+FCKConfig.SmileyImages = ['regular_smile.gif','sad_smile.gif','wink_smile.gif','teeth_smile.gif','confused_smile.gif','tounge_smile.gif','embaressed_smile.gif','omg_smile.gif','whatchutalkingabout_smile.gif','angry_smile.gif','angel_smile.gif','shades_smile.gif','devil_smile.gif','cry_smile.gif','lightbulb.gif','thumbs_down.gif','thumbs_up.gif','heart.gif','broken_heart.gif','kiss.gif','envelope.gif'] ;