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