From 921ee1ab96725c3c9f46a0de9e05fdb181f7440d Mon Sep 17 00:00:00 2001 From: Chris Nehren Date: Mon, 20 Oct 2008 20:00:51 +0000 Subject: [PATCH] Added the NotifyAboutThing workflow activity. Use this activity to create workflows for the add / edit / delete workflows for a thingy's things. Also fixed a typo in the POD for Thingy. --- docs/changelog/7.x.x.txt | 2 + etc/WebGUI.conf.original | 3 + lib/WebGUI/Asset/Wobject/Thingy.pm | 4 +- .../Workflow/Activity/NotifyAboutThing.pm | 98 +++++++++++++++++++ .../Workflow_Activity_NotifyAboutThing.pm | 28 ++++++ 5 files changed, 133 insertions(+), 2 deletions(-) create mode 100755 lib/WebGUI/Workflow/Activity/NotifyAboutThing.pm create mode 100755 lib/WebGUI/i18n/English/Workflow_Activity_NotifyAboutThing.pm diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 631f721b6..b19695a3c 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -1,4 +1,6 @@ 7.6.2 + - Added the NotifyAboutThing workflow activity. Use this activity to create + workflows for the add / edit / delete workflows for a thingy's things. - fixed #8839: Documentation is wrong for Stock Ticker - Added Guid form control. - Moved Asset ID and Class Name fields to the Meta tab of all assets. diff --git a/etc/WebGUI.conf.original b/etc/WebGUI.conf.original index b45709b46..33ad5c905 100644 --- a/etc/WebGUI.conf.original +++ b/etc/WebGUI.conf.original @@ -746,6 +746,9 @@ "WebGUI::Workflow::Activity::TrashClipboard", "WebGUI::Workflow::Activity::TrashExpiredEvents" ], + "WebGUI::Asset::Wobject::Thingy" : [ + "WebGUI::Workflow::Activity::NotifyAboutThing" + ], "WebGUI::User" : [ "WebGUI::Workflow::Activity::CreateCronJob", "WebGUI::Workflow::Activity::NotifyAboutUser" diff --git a/lib/WebGUI/Asset/Wobject/Thingy.pm b/lib/WebGUI/Asset/Wobject/Thingy.pm index 86e10b335..faa3ae292 100644 --- a/lib/WebGUI/Asset/Wobject/Thingy.pm +++ b/lib/WebGUI/Asset/Wobject/Thingy.pm @@ -1222,9 +1222,9 @@ sub purge { #------------------------------------------------------------------- -=head2 triggerWorkflow ( workflowId, ) +=head2 triggerWorkflow ( workflowId ) -Alters a column for a field if the field's fieldType has changed. +Runs the specified workflow when this Thingy changes. =head3 workflowId diff --git a/lib/WebGUI/Workflow/Activity/NotifyAboutThing.pm b/lib/WebGUI/Workflow/Activity/NotifyAboutThing.pm new file mode 100755 index 000000000..c8e009673 --- /dev/null +++ b/lib/WebGUI/Workflow/Activity/NotifyAboutThing.pm @@ -0,0 +1,98 @@ +package WebGUI::Workflow::Activity::NotifyAboutThing; + + +=head1 LEGAL + + ------------------------------------------------------------------- + WebGUI is Copyright 2001-2008 Plain Black Corporation. + ------------------------------------------------------------------- + Please read the legal notices (docs/legal.txt) and the license + (docs/license.txt) that came with this distribution before using + this software. + ------------------------------------------------------------------- + http://www.plainblack.com info@plainblack.com + ------------------------------------------------------------------- + +=cut + +use strict; +use base 'WebGUI::Workflow::Activity'; +use WebGUI::VersionTag; +use WebGUI::Inbox; + +=head1 NAME + +Package WebGUI::Workflow::Activity::NotifyAboutVersionTag + +=head1 DESCRIPTION + +Send a message to a group when a Thing is modified. + +=head1 SYNOPSIS + +See WebGUI::Workflow::Activity for details on how to use any activity. + +=head1 METHODS + +These methods are available from this class: + +=cut + +#------------------------------------------------------------------- + +=head2 definition ( session, definition ) + +See WebGUI::Workflow::Activity::defintion() for details. + +=cut + +sub definition { + my $class = shift; + my $session = shift; + my $definition = shift; + my $i18n = WebGUI::International->new($session, "Workflow_Activity_NotifyAboutThing"); + push(@{$definition}, { + name=>$i18n->get("notify about thing"), + properties=> { + groupToNotify => { + fieldType=>"group", + defaultValue=>["4"], + label=>$i18n->get("who to notify"), + hoverHelp=>$i18n->get("who to notify help") + }, + message => { + fieldType=>"textarea", + defaultValue => "", + label=> $i18n->get("notify message"), + hoverHelp => $i18n->get("notify message help") + }, + } + }); + return $class->SUPER::definition($session,$definition); +} + + +#------------------------------------------------------------------- + +=head2 execute ( ) + +See WebGUI::Workflow::Activity::execute() for details. + +=cut + +sub execute { + my $self = shift; + my $thingy = shift; + my $inbox = WebGUI::Inbox->new($self->session); + my $messageTemplate = $self->get('messageTemplate'); + my $properties = { + status => 'completed', + subject => 'Thingy at URL ' . $thingy->getUrl . ' changed.', + message => $self->get('message'), + groupId => $self->get('groupToNotify'), + }; + $inbox->addMessage($properties); + return $self->COMPLETE; +} + +1; diff --git a/lib/WebGUI/i18n/English/Workflow_Activity_NotifyAboutThing.pm b/lib/WebGUI/i18n/English/Workflow_Activity_NotifyAboutThing.pm new file mode 100755 index 000000000..d4cae85a6 --- /dev/null +++ b/lib/WebGUI/i18n/English/Workflow_Activity_NotifyAboutThing.pm @@ -0,0 +1,28 @@ +package WebGUI::i18n::English::Workflow_Activity_NotifyAboutThing; +use strict; + +our $I18N = { + 'notify about thing' => { + message => q|Notify About Thing|, + context => q|The name of this workflow activity.|, + lastUpdated => 0, + }, + 'group to notify' => { + message => q|Group to notify|, + lastUpdated => 0, + }, + 'group to notify help' => { + message => q|The group to notify when this Thing changes|, + lastUpdated => 0, + }, + 'notify message' => { + message => q|Message|, + lastUpdated => 0, + }, + 'notify message help' => { + message => q|The message to include in the notification mail|, + lastUpdated => 0, + }, +}; + +1;