diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index e04b73e7d..41ce54ebe 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -25,6 +25,7 @@ - Refactored transaction tmpl_var generation into WebGUI::Shop::Transaction. ( Martin Kamerbeek / Oqapi ) - rfe #9906: Inbox Filtering - rfe #9911: Inbox: Copy Sender + - rfe #9907: Inbox: Notifications 7.7.5 - Adding StoryManager. diff --git a/docs/upgrades/packages-7.7.6/inbox_notification.wgpkg b/docs/upgrades/packages-7.7.6/inbox_notification.wgpkg new file mode 100644 index 000000000..be6497e72 Binary files /dev/null and b/docs/upgrades/packages-7.7.6/inbox_notification.wgpkg differ diff --git a/docs/upgrades/upgrade_7.7.5-7.7.6.pl b/docs/upgrades/upgrade_7.7.5-7.7.6.pl index 1dc7dcefd..e00eafb80 100644 --- a/docs/upgrades/upgrade_7.7.5-7.7.6.pl +++ b/docs/upgrades/upgrade_7.7.5-7.7.6.pl @@ -38,6 +38,7 @@ addTransactionTaxColumns( $session ); addListingsCacheTimeoutToMatrix( $session ); addSurveyFeedbackTemplateColumn( $session ); installCopySender($session); +installNotificationsSettings($session); finish($session); @@ -155,6 +156,12 @@ sub installCopySender { $session->setting->add('inboxCopySender',0); } +sub installNotificationsSettings { + my $session = shift; + $session->setting->add('sendInboxNotificationsOnly', 0); + $session->setting->add('inboxNotificationTemplateId', 'b1316COmd9xRv4fCI3LLGA'); +} + # -------------- DO NOT EDIT BELOW THIS LINE -------------------------------- #---------------------------------------------------------------------------- diff --git a/lib/WebGUI/Account/Inbox.pm b/lib/WebGUI/Account/Inbox.pm index b0d2f9cc7..03c7f130a 100644 --- a/lib/WebGUI/Account/Inbox.pm +++ b/lib/WebGUI/Account/Inbox.pm @@ -229,6 +229,19 @@ sub editSettingsForm { label => $i18n->get("inbox copy sender label"), hoverHelp => $i18n->get("inbox copy sender hoverHelp") ); + $f->yesNo( + name => 'sendInboxNotificationsOnly', + label => $i18n->get('send inbox notifications only'), + hoverHelp => $i18n->get('send inbox notifications only help'), + defaultValue => $setting->get('sendInboxNotificationsOnly'), + ); + $f->template( + name => 'inboxNotificationTemplateId', + label => $i18n->get('inbox notification template'), + hoverHelp => $i18n->get('inbox notification template help'), + defaultValue => $self->getInboxNotificationTemplateId, + namespace => 'Account/Inbox/Notification', + ); return $f->printRowsOnly; } @@ -271,6 +284,10 @@ sub editSettingsFormSave { #General Inbox Settings $setting->set("inboxRichEditorId", $form->process("inboxRichEditorId", "selectRichEditor") ); $setting->set("inboxCopySender", $form->process("inboxCopySender", "yesNo")); + + #Inbox Notification Settings + $setting->set("sendInboxNotificationsOnly", $form->process("sendInboxNotificationsOnly", "yesNo")); + $setting->set("inboxNotificationTemplateId", $form->process("inboxNotificationTemplateId","template")); } @@ -289,6 +306,19 @@ sub getInboxErrorTemplateId { #------------------------------------------------------------------- +=head2 getInboxNotificationTemplateId ( ) + +This method returns the template ID for inbox notifications. + +=cut + +sub getInboxNotificationTemplateId { + my $self = shift; + return $self->session->setting->get("inboxNotificationTemplateId") || "b1316COmd9xRv4fCI3LLGA"; +} + +#------------------------------------------------------------------- + =head2 getInvitationCount ( ) This method returns the total number of invitations in the invitation box. @@ -1236,14 +1266,39 @@ sub www_sendMessageSave { #Let sendMessage deal with displaying errors return $self->www_sendMessage($errorMsg) if $hasError; + my $messageProperties = { + message => $message, + subject => $subject, + status => 'unread', + sentBy => $fromUser->userId + }; + + if ($session->setting->get('sendInboxNotificationsOnly')) { + my $template = WebGUI::Asset::Template->new($session, $self->getInboxNotificationTemplateId); + if ($template) { + ##Create template variables + my $var = { + fromUsername => $fromUser->username, + subject => $messageProperties->{subject}, + message => $messageProperties->{message}, + inboxLink => $session->url->append($session->url->getSiteURL, 'op=account;module=inbox'), + }; + ##Fill in template + my $output = $template->process($var); + ##Evaluate macros by hand + WebGUI::Macro::process($session, \$output); + ##Assign template output to $messageProperties->{emailMessage} + $messageProperties->{emailMessage} = $output; + } + else { + $session->log->warn(sprintf "Unable to instanciate notification template: ". $self->getInboxNotificationTemplateId); + } + + } + foreach my $uid (@toUsers) { - my $message = $inbox->addMessage({ - message => $message, - subject => $subject, - userId => $uid, - status => 'unread', - sentBy => $fromUser->userId - }); + $messageProperties->{userId} = $uid; + $inbox->addMessage($messageProperties); if ($uid eq $session->user->userId) { $message->setRead; } diff --git a/lib/WebGUI/i18n/English/Account_Inbox.pm b/lib/WebGUI/i18n/English/Account_Inbox.pm index 3f3a35ec7..6d0209e38 100644 --- a/lib/WebGUI/i18n/English/Account_Inbox.pm +++ b/lib/WebGUI/i18n/English/Account_Inbox.pm @@ -291,9 +291,9 @@ our $I18N = { }, 'send label' => { - message => q{Send}, - lastUpdated => 1181019679, - }, + message => q{Send}, + lastUpdated => 1181019679, + }, 'no access' => { message => q{You do not have permission to view this message.}, @@ -331,9 +331,9 @@ our $I18N = { }, 'no self error' => { - message => q|You may not send messages to yourself.|, - lastUpdated => 1181019679, - }, + message => q|You may not send messages to yourself.|, + lastUpdated => 1181019679, + }, 'no friends error' => { message => q{You do not have any active friends in the system. If you wish to send a new private message to a user without having to locate their profile, you must first add them as a friend.}, @@ -362,27 +362,27 @@ our $I18N = { 'blocked error' => { message => q|This user does not wish to receive private messages.|, - lastUpdated => 1181019679, + lastUpdated => 1181019679, }, 'remove text' => { message => q{remove}, - lastUpdated => 1181019679, + lastUpdated => 1181019679, }, 'update label' => { message => q{Update}, - lastUpdated => 1181019679, + lastUpdated => 1181019679, }, 'message sent label' => { message => q{Message Sent}, - lastUpdated => 1181019679, + lastUpdated => 1181019679, }, 'message sent text' => { message => q{Your message has been sent successfully}, - lastUpdated => 1181019679, + lastUpdated => 1181019679, }, 'error label' => { @@ -466,24 +466,24 @@ our $I18N = { }, 'missing email' => { - message => q|The invitation cannot be sent because you did not enter an email address.|, - lastUpdated => 1181409056, - }, + message => q|The invitation cannot be sent because you did not enter an email address.|, + lastUpdated => 1181409056, + }, - 'missing message' => { - message => q|Your invitiation must have a message.|, - lastUpdated => 1181409432, - }, + 'missing message' => { + message => q|Your invitiation must have a message.|, + lastUpdated => 1181409432, + }, - 'missing subject' => { - message => q|Your invitation must have a subject.|, - lastUpdated => 1181409433, - }, + 'missing subject' => { + message => q|Your invitation must have a subject.|, + lastUpdated => 1181409433, + }, 'already a member' => { - message => q|The email address you entered is already registered to %s on this site.|, - lastUpdated => 1227715272, - }, + message => q|The email address you entered is already registered to %s on this site.|, + lastUpdated => 1227715272, + }, 'no email' => { message => q{The invitation cannot be sent because you do not have an email address set in your profile.}, @@ -491,54 +491,54 @@ our $I18N = { }, 'invitation sent label' => { - message => q|Invitation Sent|, - lastUpdated => 1181410226, - }, + message => q|Invitation Sent|, + lastUpdated => 1181410226, + }, 'invitation sent text' => { - message => q|Your invitation has been sent successfully.|, - lastUpdated => 1181410226, - }, + message => q|Your invitation has been sent successfully.|, + lastUpdated => 1181410226, + }, 'common account variables' => { - message => q|Common Account, Inbox Plugin, Template Variables.|, - lastUpdated => 1230867391, - }, + message => q|Common Account, Inbox Plugin, Template Variables.|, + lastUpdated => 1230867391, + }, 'view_inbox_url' => { - message => q|URL to view the Inbox screen.|, - lastUpdated => 1230867391, - }, + message => q|URL to view the Inbox screen.|, + lastUpdated => 1230867391, + }, 'view_invitations_url' => { - message => q|URL to view the Invitations screen.|, - lastUpdated => 1230867391, - }, + message => q|URL to view the Invitations screen.|, + lastUpdated => 1230867391, + }, 'unread_message_count' => { - message => q|The number of unread messages in the Inbox.|, - lastUpdated => 1230867391, - }, + message => q|The number of unread messages in the Inbox.|, + lastUpdated => 1230867391, + }, 'invitation_count' => { - message => q|The number of Invitations this user has received.|, - lastUpdated => 1230867391, - }, + message => q|The number of Invitations this user has received.|, + lastUpdated => 1230867391, + }, 'invitations_enabled' => { - message => q|A boolean that is true if the user is willing to receive invitations to join Friends Networks on this site.|, - lastUpdated => 1230867391, - }, + message => q|A boolean that is true if the user is willing to receive invitations to join Friends Networks on this site.|, + lastUpdated => 1230867391, + }, 'user_invitations_enabled' => { - message => q|A boolean that is true if this site is configured to send invitations to users outside of the site.|, - lastUpdated => 1230867391, - }, + message => q|A boolean that is true if this site is configured to send invitations to users outside of the site.|, + lastUpdated => 1230867391, + }, 'invite_friend_url' => { - message => q|The URL to invite this user to be join your Friend Network.|, - lastUpdated => 1230867391, - }, + message => q|The URL to invite this user to be join your Friend Network.|, + lastUpdated => 1230867391, + }, 'inbox rich editor label' => { message => q{Inbox Rich Editor}, @@ -748,6 +748,22 @@ our $I18N = { message => q|If this setting is 'yes', users will receive a copy of messages that they send using the inbox.|, lastUpdated => 0, }, + + 'send inbox notifications only' => { + message => q|Send only Inbox notifications|, + context => q|Site setting. A notification is a short message that a message is in the Inbox.|, + lastUpdated => 1235685248, + }, + + 'send inbox notifications only help' => { + message => q|Should WebGUI just send notifications about Inbox messages, instead of the message itself?|, + lastUpdated => 1235696295, + }, + + 'inbox notification' => { + message => q|You have a new message in your Inbox.|, + lastUpdated => 1235708853, + }, };