Hi Reinier,

I don't have JSP code for you, but maybe you can "translate" the
attachment into JSP. It's flowscript (serverside Javascript, Rhino).
As input it uses a submitted form with "name", "email", a hidden field
for "htmlversion". If there is only 1 mailgroup for the website that
allowes subscription by users it has a hidden field for this mailgroup,
otherwise it has checkboxes for each mailgroup. 

To get a list of mailgroups, use 
(nl.hippo.hca.newsletter.services.impl.NewsletterServiceImpl)
listMailGroups(int offset, int limit) (returns a List)
Filter this result with:
(nl.hippo.hca.newsletter.impl.MailGroupImpl)
getAllowSubscriptionsByUser() (returns a boolean)
and
(nl.hippo.hca.newsletter.impl.MailgroupImpl) getDomain() (returns an
integer, values: 0 for internet, 1 for intranet and 2 for extranet).

I hope this helps you a bit.

Regards,

Jasha Joachimsthal 

www.onehippo.com
Amsterdam - Hippo B.V. Oosteinde 11 1017 WT Amsterdam +31(0)20-5224466 
San Francisco - Hippo USA Inc. 101 H Street, suite Q Petaluma CA
94952-3329 +1 (707) 773-4646



> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On Behalf Of 
> Reinier van den Born
> Sent: woensdag 23 april 2008 16:24
> To: Hippo CMS development public mailinglist
> Subject: [HippoCMS-dev] Manipulating newsletter subscriptions 
> from thefrontend
> 
> Hi all,
> 
> Forgot to adjust subject. Sorry,
> 
> Reinier
> 
> Reinier van den Born wrote:
> > 
> > Hi,
> > 
> > I would like to check/add newsletter subscribers from the frontend 
> > (result of submitting a form).
> > Frontend is implemented in JSP.
> > 
> > I guess I can mess in the DB tables, but...
> > 
> > Regards,
> > 
> > 
> > Reinier van den Born
> > 
> > ********************************************
> > Hippocms-dev: Hippo CMS development public mailinglist
> 
importClass(Packages.org.springframework.web.context.WebApplicationContext);
importClass(Packages.nl.hippo.hca.profiles.services.ProfileService);
importClass(Packages.nl.hippo.hca.profiles.model.impl.UserImpl);
importClass(Packages.nl.hippo.hca.newsletter.model.impl.SubscriberImpl);

function handleSubscription(){
        
        var email = cocoon.request.getParameter("email");
        var name = cocoon.request.getParameter("name");
        var message='';
        if(email != null && email!=''){
                var validEmail = 
Packages.org.apache.commons.validator.EmailValidator.getInstance().isValid(email);
                
          var subscribe = cocoon.request.getParameter("subscribe");
          var unsubscribe = cocoon.request.getParameter("unsubscribe");
          
          if(validEmail == false){
                message = "newsletterform.status.fail.invalidemail";
          }
          else if(subscribe!=null && subscribe !=''){
             message = makeSubscriptions(email);
          }
          else if(unsubscribe!=null && unsubscribe !=''){
            message =  removeSubscriptions(email);
          }
          else{
            message="ERROR: No action defined";
            // hey dit mag niet...
          }
        }
        else{
          message="newsletterform.status.fail.noemail";
        }

        cocoon.sendPage("subscriptionResult", 
{message:message,name:name,email:email}); 
} 

function makeSubscriptions(email){
  var newsletterService = getFacade("newsletterService");
        
        var profileService = getFacade("profileService");
        
        var subscriber = newsletterService.getSubscriberByEmail(email);
        var user = profileService.getUserByEmail(email);
        var message;
        // user already exists
        if(subscriber != null){
                message = doSubscribe(subscriber);
                newsletterService.saveSubscriber(subscriber);
        }
        else if(user != null ) {
                //maak subscriber aan en subscribe deze
    var subscriber = new SubscriberImpl(user);
                if(cocoon.request.getParameter("versie")=="textversion"){
                  subscriber.setSendHtml(false);
                }
                else{
                  subscriber.setSendHtml(true);
                }
                // TODO: make confirmation
                subscriber.setConfirmed(true);
                
                message = doSubscribe(subscriber);
                newsletterService.saveSubscriber(subscriber);
        }
        else{
                // create new user
          var user = new UserImpl();
                user.setUsername(email);
                user.setEmail(email);
                user.setGender(0);
                user.setLastName(cocoon.request.getParameter("name"));
                var subscriber = new SubscriberImpl(user);
                if(cocoon.request.getParameter("versie")=="textversion"){
                  subscriber.setSendHtml(false);
                }
                else{
                  subscriber.setSendHtml(true);
                }
                // TODO: make confirmation
                subscriber.setConfirmed(true);
                
                message = doSubscribe(subscriber);
                newsletterService.saveSubscriber(subscriber);
        }
        return message;
}

function doSubscribe(subscriber){
        var newsletterService = getFacade("newsletterService");
        
        var mailgroups = cocoon.request.getParameter("mailgroup");
                
                if(mailgroups == null || mailgroups ==''){
                  return "newsletterform.status.fail.nomailgroup";
                }
                else if(mailgroups instanceof Packages.java.lang.String){
                  var mailgroup = 
newsletterService.getMailGroup(Packages.java.lang.Integer.parseInt(mailgroups));
                  newsletterService.addSubscription(subscriber,mailgroup);
                } 
                else{
                  var mailgroupIterator = mailgroups.iterator();
          while (mailgroupIterator.hasNext()){
            var mailgroup = 
newsletterService.getMailGroup(Packages.java.lang.Integer.parseInt(mailgroupIterator.next()));
        newsletterService.addSubscription(subscriber,mailgroup);
          }
                  
                }
                // newsletterService.addSubscription has silent failure
                return "newsletterform.status.subscribe.success";
}

function removeSubscriptions(email){
        var newsletterService = getFacade("newsletterService");
        var subscriber = newsletterService.getSubscriberByEmail(email);
        if(subscriber == null){
                return 
"newsletterform.status.unsubscribe.fail.nosubscriberfound";
        }
        else{
                var mailgroups = cocoon.request.getParameter("mailgroup");
                if(mailgroups == null || mailgroups ==''){
                  return "newsletterform.status.fail.nomailgroup";
                }
                else if(mailgroups instanceof Packages.java.lang.String){
                  var mailgroup = 
newsletterService.getMailGroup(Packages.java.lang.Integer.parseInt(mailgroups));
                  newsletterService.removeSubscription(subscriber,mailgroup);
                } 
                else{
                  var mailgroupIterator = mailgroups.iterator();
          while (mailgroupIterator.hasNext()){
            var mailgroup = 
newsletterService.getMailGroup(Packages.java.lang.Integer.parseInt(mailgroupIterator.next()));
        newsletterService.removeSubscription(subscriber,mailgroup);
          }
                  
                }
        }
        // newsletterService.removeSubscription has silent failure
        return "newsletterform.status.unsubscribe.success";
}



function getFacade(beanName) {
        var spring = 
cocoon.context.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
        return spring.getBean(beanName); 
}
********************************************
Hippocms-dev: Hippo CMS development public mailinglist

Reply via email to