From 8ced11c8ab1a4e4cd03d18f16abf159075e002a0 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Mon, 18 Jun 2007 05:05:18 +0000 Subject: [PATCH] make the user invite email templatable --- .../PBtmpl0userInviteEmail.tmpl | 9 +++++++++ docs/upgrades/upgrade_7.3.19-7.4.0.pl | 1 + lib/WebGUI/Help/Invite.pm | 17 ++++++++++++++++ lib/WebGUI/Operation/Invite.pm | 12 ++++++++--- lib/WebGUI/Operation/Settings.pm | 9 +++++++++ lib/WebGUI/i18n/English/Invite.pm | 20 +++++++++++++++++++ lib/WebGUI/i18n/English/WebGUI.pm | 12 ++++++++++- 7 files changed, 76 insertions(+), 4 deletions(-) create mode 100644 docs/upgrades/templates-7.4.0/PBtmpl0userInviteEmail.tmpl diff --git a/docs/upgrades/templates-7.4.0/PBtmpl0userInviteEmail.tmpl b/docs/upgrades/templates-7.4.0/PBtmpl0userInviteEmail.tmpl new file mode 100644 index 000000000..4a4712f5c --- /dev/null +++ b/docs/upgrades/templates-7.4.0/PBtmpl0userInviteEmail.tmpl @@ -0,0 +1,9 @@ +#PBtmpl0userInviteEmail +#url:userinviteemailtemplate +#title:Default User Invite Email Template +#menuTitle:Default User Invite Email Template +#namespace:userInvite/Email +#create + + + diff --git a/docs/upgrades/upgrade_7.3.19-7.4.0.pl b/docs/upgrades/upgrade_7.3.19-7.4.0.pl index 5f04d1bd1..9c60a96c9 100644 --- a/docs/upgrades/upgrade_7.3.19-7.4.0.pl +++ b/docs/upgrades/upgrade_7.3.19-7.4.0.pl @@ -161,6 +161,7 @@ sub addUserInvitations { ##Add settings $session->setting->add('userInvitationsEnabled', 0); $session->setting->add('userInvitationsEmailExists', 'This email address exists in our system. This means that your friend is already a member of the site. The invitation will not be sent.'); + $session->setting->add('userInvitationsEmailTemplateId', 'PBtmpl0userInviteEmail'); ##Create table for tracking invitations $session->db->write(< { + title => 'invite email template title', + body => 'invite email template body', + variables => [ + { + name => 'inviteFormError', + }, + { + name => 'formHeader', + }, + ], + fields => [ + ], + related => [ + ] + }, + }; 1; ##All perl modules must return true diff --git a/lib/WebGUI/Operation/Invite.pm b/lib/WebGUI/Operation/Invite.pm index e6c5c57a7..f094baf4f 100644 --- a/lib/WebGUI/Operation/Invite.pm +++ b/lib/WebGUI/Operation/Invite.pm @@ -124,10 +124,16 @@ sub www_inviteUserSave { ##No sneaky attack paths... $message = WebGUI::HTML::filter($message); - ##Append the invitation url. + ##Create the invitation url. my $inviteId = $session->id->generate(); my $inviteUrl = $session->url->append($session->url->getSiteURL, 'op=acceptInvite;code='.$inviteId); - $message .= "\n$inviteUrl\n"; + + my $var; + $var->{registrationUrl} = $inviteUrl; + $var->{invitationMessage} = $message; + + my $emailTemplate = WebGUI::Asset::Template->new($session, $session->setting->get('userInvitationsEmailTemplateId')); + my $templatedEmail = $emailTemplate->process($var); ##Create the invitation record. $session->db->setRow( @@ -141,7 +147,7 @@ sub www_inviteUserSave { $inviteId, ); - $invitation->addText($message); + $invitation->addText($templatedEmail); $invitation->send; my $output = sprintf qq!

%s

%s!, diff --git a/lib/WebGUI/Operation/Settings.pm b/lib/WebGUI/Operation/Settings.pm index bbe2f511f..686698499 100644 --- a/lib/WebGUI/Operation/Settings.pm +++ b/lib/WebGUI/Operation/Settings.pm @@ -411,6 +411,15 @@ sub definition { hoverHelp=>$i18n->get("user invitations email exists description"), defaultValue=>$session->setting->get("userInvitationsEmailExists"), }); + push(@fields, { + tab=>"user", + fieldType=>"template", + name=>"userInvitationsEmailTemplateId", + label=>$i18n->get('user email template'), + hoverHelp=>$i18n->get('user email template description'), + namespace=>"userInvite/Email", + defaultValue=>$session->setting->get("userInvitationsEmailTemplateId"), + }); # auth settings my $options; foreach (@{$session->config->get("authMethods")}) { diff --git a/lib/WebGUI/i18n/English/Invite.pm b/lib/WebGUI/i18n/English/Invite.pm index e63a5a8d6..013956357 100644 --- a/lib/WebGUI/i18n/English/Invite.pm +++ b/lib/WebGUI/i18n/English/Invite.pm @@ -123,6 +123,26 @@ our $I18N = { lastUpdated => 1181493546, }, + 'invite email template title' => { + message => q|User Invitation Email Template|, + lastUpdated => 1181970017, + }, + + 'invite email template body' => { + message => q|This template is used to customize and display the invitation that is sent via email.|, + lastUpdated => 1181970016, + }, + + 'registrationUrl' => { + message => q|The URL that the recipient will use to accept the invitation.|, + lastUpdated => 1181970016, + }, + + 'invitationMessage' => { + message => q|The message entered by the user, filtered for HTML to prevent XSS attacks.|, + lastUpdated => 1181970094, + }, + }; 1; diff --git a/lib/WebGUI/i18n/English/WebGUI.pm b/lib/WebGUI/i18n/English/WebGUI.pm index ef0d9e792..7b2caec2c 100644 --- a/lib/WebGUI/i18n/English/WebGUI.pm +++ b/lib/WebGUI/i18n/English/WebGUI.pm @@ -4101,7 +4101,17 @@ Get a copy of wget and use this: wget -p -r --html-extension -k http://the message => q|This is the message displayed to users who try to invite someone whose email address already exists in the system.|, lastUpdated => 1181277914, }, - + + 'user email template' => { + message => q|User Invitation Email Template|, + lastUpdated => 1181969396 + }, + + 'user email template description' => { + message => q|The template used to build the email invitation to the user.|, + lastUpdated => 1181969398, + }, + 'send private message' => { message => q|Send Private Message|, lastUpdated => 1181019679,