From f73c6e898435e10b9f56eef3bbac87aeee3d82b5 Mon Sep 17 00:00:00 2001 From: quasi Date: Tue, 2 Mar 2010 06:43:18 +0000 Subject: [PATCH] Survey MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Konfiguration hinzugefügt * Fehlerbereinigung für Submit-Button und Hidden Survey-ID git-svn-id: https://svn.libreccm.org/ccm/trunk@361 8810af33-2d31-482b-a856-94f89814c4df --- .../arsdigita/cms/contenttypes/Survey.java | 48 ++++++++-------- .../cms/contenttypes/SurveyConfig.java | 55 +++++++++++++++++++ .../SurveyConfig_parameter.properties | 9 +++ 3 files changed, 88 insertions(+), 24 deletions(-) create mode 100644 ccm-cms-types-survey/src/com/arsdigita/cms/contenttypes/SurveyConfig.java create mode 100644 ccm-cms-types-survey/src/com/arsdigita/cms/contenttypes/SurveyConfig_parameter.properties diff --git a/ccm-cms-types-survey/src/com/arsdigita/cms/contenttypes/Survey.java b/ccm-cms-types-survey/src/com/arsdigita/cms/contenttypes/Survey.java index 3abaebc65..f414eb654 100755 --- a/ccm-cms-types-survey/src/com/arsdigita/cms/contenttypes/Survey.java +++ b/ccm-cms-types-survey/src/com/arsdigita/cms/contenttypes/Survey.java @@ -12,8 +12,7 @@ import com.arsdigita.cms.CMS; import com.arsdigita.cms.ContentPage; import com.arsdigita.cms.CustomCopy; import com.arsdigita.cms.ItemCopier; -import com.arsdigita.cms.contenttypes.ui.SurveyPersistentProcessListener; -import com.arsdigita.cms.contenttypes.ui.SurveyPersistentProcessListener; + import com.arsdigita.cms.contenttypes.ui.SurveyProcessListener; import com.arsdigita.cms.contenttypes.ui.SurveyProcessListener; import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; @@ -68,18 +67,18 @@ public class Survey extends ContentPage implements XMLGenerator { public static final String RESPONSES_ANONYM = "responsesAnonym"; /** Data object type for this domain object */ public static final String BASE_DATA_OBJECT_TYPE = "com.arsdigita.cms.contenttypes.Survey"; - - /* + + /* Config */ private static final SurveyConfig s_config = new SurveyConfig(); + static { - s_config.load(); + s_config.load(); } - public static final SurveyConfig getConfig() - { - return s_config; + public static final SurveyConfig getConfig() { + return s_config; } - */ + /** * Default constructor. This creates a new (empty) Survey. **/ @@ -136,7 +135,7 @@ public class Survey extends ContentPage implements XMLGenerator { /** * This will handle the mandatory FormSection. If there is no - * FormSection set it will create an empty new form and assign it + * FormSection set it will create an empty new pForm and assign it * to keep the db happy. */ @Override @@ -151,11 +150,11 @@ public class Survey extends ContentPage implements XMLGenerator { // Preset the responsesPublic if (getResponsesPublic() == null) { - setResponsesPublic(false); + setResponsesPublic(getConfig().getShowResultsPublic()); } // Preset the responsesAnonym if (getResponsesAnonym() == null) { - setResponsesAnonym(false); + setResponsesAnonym(getConfig().getAnonymSurvey()); } } @@ -168,9 +167,10 @@ public class Survey extends ContentPage implements XMLGenerator { Property property, ItemCopier copier) { if (property.getName().equals(FORM)) { - PersistentForm pForm = ((Survey) src).getForm(); +// PersistentForm pForm = ((Survey) src).getForm(); + PersistentForm pForm = (new FormCopier()).copyForm(((Survey) src).getForm()); - // Add hideden field with survey id + // Add hidden field with survey id PersistentHidden survey_id = PersistentHidden.create(SURVEY_ID); survey_id.setDefaultValue(((Survey) src).getSurveyID().toString()); pForm.addComponent(survey_id); @@ -178,7 +178,7 @@ public class Survey extends ContentPage implements XMLGenerator { // Add a submit button PersistentSubmit submit = PersistentSubmit.create("submit"); pForm.addComponent(submit); - setAssociation(FORM, (new FormCopier()).copyForm(pForm)); + setAssociation(FORM, pForm); return true; } @@ -260,8 +260,8 @@ public class Survey extends ContentPage implements XMLGenerator { public void generateXML(PageState state, Element parent, String useContext) { - PersistentForm form = getForm(); - Component c = instantiateForm(form, "itemAdminSummary".equals(useContext)); + PersistentForm pForm = getForm(); + Component c = instantiateForm(pForm, "itemAdminSummary".equals(useContext)); // Fake the page context for the item, since we // have no access to the real page context. @@ -277,7 +277,7 @@ public class Survey extends ContentPage implements XMLGenerator { // state.getRequest()), state.getResponse()); // } else { // Really serving the user page, so need the params when - // processing the form + // processing the pForm fake = p.process(state.getRequest(), state.getResponse()); // } } catch (Exception e) { @@ -290,8 +290,8 @@ public class Survey extends ContentPage implements XMLGenerator { // Simply embed the bebop xml as a child of the cms:item tag Element element = parent.newChildElement("cms:item", CMS.CMS_XML_NS); -// generateXMLBody(fake, element, form); - String action = form.getAction(); +// generateXMLBody(fake, element, pForm); + String action = pForm.getAction(); if (action == null) { final URL requestURL = Web.getContext().getRequestURL(); @@ -313,7 +313,7 @@ public class Survey extends ContentPage implements XMLGenerator { renderer.walk(this, SimpleXMLGenerator.ADAPTER_CONTEXT); - // then, if the component is actually a form, we need + // then, if the component is actually a pForm, we need // to print out any possible errors // Ideally we could do this as part of the "walk" but for now // that does not work because we don't pass in the page state @@ -330,9 +330,9 @@ public class Survey extends ContentPage implements XMLGenerator { // infoTraversal.preorder(f); // } - // we need to generate the state so that it can be part of the form - // and correctly included when the form is submitted. We could - // do this by iterating through the form data but it does not + // we need to generate the state so that it can be part of the pForm + // and correctly included when the pForm is submitted. We could + // do this by iterating through the pForm data but it does not // seem like a good idea to just cut and paste the code out // of the PageState class fake.setControlEvent(c); diff --git a/ccm-cms-types-survey/src/com/arsdigita/cms/contenttypes/SurveyConfig.java b/ccm-cms-types-survey/src/com/arsdigita/cms/contenttypes/SurveyConfig.java new file mode 100644 index 000000000..286296ecd --- /dev/null +++ b/ccm-cms-types-survey/src/com/arsdigita/cms/contenttypes/SurveyConfig.java @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2004 Red Hat Inc. 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.Parameter; +import com.arsdigita.util.parameter.BooleanParameter; + +public class SurveyConfig extends AbstractConfig { + + private final Parameter m_showResultsPublic; + private final Parameter m_anonymSurvey; + + public SurveyConfig() { + m_showResultsPublic = new BooleanParameter( + "com.arsdigita.cms.contenttypes.survey.show_results_public", + Parameter.REQUIRED, + new Boolean(true)); + + m_anonymSurvey = new BooleanParameter( + "com.arsdigita.cms.contenttypes.survey.anonym_survey", + Parameter.REQUIRED, + new Boolean(true)); + + + register(m_showResultsPublic); + register(m_anonymSurvey); + + loadInfo(); + } + + public final boolean getShowResultsPublic() { + return ((Boolean) get(m_showResultsPublic)).booleanValue(); + } + public final boolean getAnonymSurvey() { + return ((Boolean) get(m_anonymSurvey)).booleanValue(); + } +} + diff --git a/ccm-cms-types-survey/src/com/arsdigita/cms/contenttypes/SurveyConfig_parameter.properties b/ccm-cms-types-survey/src/com/arsdigita/cms/contenttypes/SurveyConfig_parameter.properties new file mode 100644 index 000000000..e20137e79 --- /dev/null +++ b/ccm-cms-types-survey/src/com/arsdigita/cms/contenttypes/SurveyConfig_parameter.properties @@ -0,0 +1,9 @@ +com.arsdigita.cms.contenttypes.survey.show_results_public.title=Show results public +com.arsdigita.cms.contenttypes.survey.show_results_public.purpose=Default setting for public results +com.arsdigita.cms.contenttypes.survey.show_results_public.example=false +com.arsdigita.cms.contenttypes.survey.show_results_public.format=[boolean] + +com.arsdigita.cms.contenttypes.survey.anonym_survey.title=Anonymous survey +com.arsdigita.cms.contenttypes.survey.anonym_survey.purpose=Default setting for anonymous survey +com.arsdigita.cms.contenttypes.survey.anonym_survey.example=false +com.arsdigita.cms.contenttypes.survey.anonym_survey.format=[boolean]