From: <ssk...@vh...> - 2005-12-20 19:07:32
|
Author: sskracic Date: 2005-12-20 20:04:35 +0100 (Tue, 20 Dec 2005) New Revision: 1071 Added: contrib/ccm-ldn-camden-consultation/trunk/src/com/arsdigita/camden/cms/contenttypes/ui/admin/BulkMobileDeletionForm.java Modified: contrib/ccm-ldn-camden-consultation/trunk/web/packages/consultations/www/admin/index.jsp Log: Added bulk mobile number deletion form. Added: contrib/ccm-ldn-camden-consultation/trunk/src/com/arsdigita/camden/cms/contenttypes/ui/admin/BulkMobileDeletionForm.java =================================================================== --- contrib/ccm-ldn-camden-consultation/trunk/src/com/arsdigita/camden/cms/contenttypes/ui/admin/BulkMobileDeletionForm.java 2005-12-20 18:51:56 UTC (rev 1070) +++ contrib/ccm-ldn-camden-consultation/trunk/src/com/arsdigita/camden/cms/contenttypes/ui/admin/BulkMobileDeletionForm.java 2005-12-20 19:04:35 UTC (rev 1071) @@ -0,0 +1,132 @@ +/* + * Copyright (C) 2005 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.camden.cms.contenttypes.ui.admin; + +import com.arsdigita.bebop.FormData; +import com.arsdigita.bebop.FormProcessException; +import com.arsdigita.bebop.Label; +import com.arsdigita.bebop.PageState; +import com.arsdigita.bebop.event.FormProcessListener; +import com.arsdigita.bebop.event.FormSectionEvent; +import com.arsdigita.bebop.form.Submit; +import com.arsdigita.bebop.form.TextArea; +import com.arsdigita.bebop.parameters.ParameterModel; +import com.arsdigita.bebop.parameters.StringParameter; +import com.arsdigita.bebop.parameters.TrimmedStringParameter; +import com.arsdigita.camden.cms.contenttypes.ConsultationAlert; +import com.arsdigita.camden.cms.contenttypes.ConsultationUtil; +import com.arsdigita.cms.ui.BaseForm; +import com.arsdigita.cms.util.GlobalizationUtil; +import com.arsdigita.globalization.GlobalizedMessage; +import com.arsdigita.persistence.DataCollection; +import com.arsdigita.persistence.Filter; +import com.arsdigita.persistence.SessionManager; +import com.arsdigita.web.ParameterMap; +import com.arsdigita.web.RedirectSignal; +import com.arsdigita.web.URL; +import java.util.ArrayList; +import java.util.List; + +public class BulkMobileDeletionForm + extends BaseForm implements FormProcessListener { + + public final static String FORM_NAME = "bulkMobileDeletion"; + public final static String MOBILE_NUMBERS = "mobileNumbers"; + public final static String DELETION_COUNT = "deletionCount"; + public final static String DELETED_PATH = "/admin/deleted.jsp"; + + + private ParameterModel m_number = new StringParameter("mobile"); + + public BulkMobileDeletionForm() { + this(FORM_NAME, ConsultationUtil.globalize("bulk_mobile_deletion")); + } + + + + public BulkMobileDeletionForm(String name, GlobalizedMessage heading) { + super(name, heading); + + addWidgets(); + } + + public BulkMobileDeletionForm(String name, Label heading) { + super(name, heading); + + addWidgets(); + } + + private void addWidgets() { + Label label = new Label(ConsultationUtil.globalize("mobile_numbers")); + TextArea emailAddressesWidget = new TextArea(new TrimmedStringParameter(MOBILE_NUMBERS)); + emailAddressesWidget.setCols(72); + emailAddressesWidget.setRows(10); + addField(label, emailAddressesWidget); + + addAction(new Submit(GlobalizationUtil.globalize("cms.ui.delete"))); + addAction(new Cancel()); + + addProcessListener(this); + } + + public void process(FormSectionEvent fse) throws FormProcessException { + FormData data = fse.getFormData(); + PageState state = fse.getPageState(); + + if (isCancelled(state)) { + URL target = URL.here(state.getRequest(), null); + throw new RedirectSignal(target, false); + } + + String[] mobiles = data.getString(MOBILE_NUMBERS).split("\\n+"); + int deletionCount = 0; + List mobilesToDelete = new ArrayList(); + for (int i = 0; i < mobiles.length; i++) { + StringBuffer mobileBuf = new StringBuffer(mobiles[i]); + List errors = ConsultationUtil.getConfig().getSMSProvider().validateNumber(mobileBuf); + if (errors.size() > 0) { + continue; + } + mobilesToDelete.add(mobileBuf.toString()); + } + + DataCollection alerts = SessionManager.getSession() + .retrieve(ConsultationAlert.BASE_DATA_OBJECT_TYPE); + alerts.addEqualsFilter(ConsultationAlert.EMAIL_CONFIRMED, Boolean.TRUE); + alerts.addEqualsFilter(ConsultationAlert.MOBILE_CONFIRMED, Boolean.TRUE); + Filter f = alerts.addFilter(ConsultationAlert.MOBILE_NUMBER + " in :mobiles"); + f.set("mobiles", mobilesToDelete); + while (alerts.next()) { + ConsultationAlert alert = new ConsultationAlert(alerts.getDataObject()); + alert.setMobileNumber(null); + alert.clearMobilePin(); + alert.setMobileConfirmed(Boolean.FALSE); + alert.save(); + deletionCount++; + } + + ParameterMap parameters = new ParameterMap(); + parameters.setParameter(DELETION_COUNT, String.valueOf(deletionCount)); + URL target = + URL.here(state.getRequest(), DELETED_PATH, parameters); + throw new RedirectSignal(target, true); + } + +} + Property changes on: contrib/ccm-ldn-camden-consultation/trunk/src/com/arsdigita/camden/cms/contenttypes/ui/admin/BulkMobileDeletionForm.java ___________________________________________________________________ Name: svn:keywords + Id Author URL Modified: contrib/ccm-ldn-camden-consultation/trunk/web/packages/consultations/www/admin/index.jsp =================================================================== --- contrib/ccm-ldn-camden-consultation/trunk/web/packages/consultations/www/admin/index.jsp 2005-12-20 18:51:56 UTC (rev 1070) +++ contrib/ccm-ldn-camden-consultation/trunk/web/packages/consultations/www/admin/index.jsp 2005-12-20 19:04:35 UTC (rev 1071) @@ -29,6 +29,8 @@ classname="com.arsdigita.london.navigation.ui.category.Menu"/> <define:component name="alertConfirm" classname="com.arsdigita.camden.cms.contenttypes.ui.admin.BulkDeletionForm"/> + <define:component name="smsAlertConfirm" + classname="com.arsdigita.camden.cms.contenttypes.ui.admin.BulkMobileDeletionForm"/> <jsp:scriptlet> bulkDeletionPage.addRequestListener(new ApplicationAuthenticationListener()); |