From 35db285a67e1a1a263bcd7add075583355c23283 Mon Sep 17 00:00:00 2001 From: JT Smith Date: Wed, 16 Aug 2006 22:04:59 +0000 Subject: [PATCH] - rfe: Workflow activity for assigning users to a group - The prevent proxy cache setting also now sets anti-caching meta tags and HTTP headers. --- docs/changelog/7.x.x.txt | 3 + docs/upgrades/upgrade_7.0.5-7.0.6.pl | 15 +-- .../Help/Workflow_Activity_AddUserToGroup.pm | 33 +++++++ lib/WebGUI/Session/Style.pm | 2 +- .../Workflow/Activity/AddUserToGroup.pm | 95 +++++++++++++++++++ .../Workflow_Activity_AddUserToGroup.pm | 41 ++++++++ 6 files changed, 181 insertions(+), 8 deletions(-) create mode 100644 lib/WebGUI/Help/Workflow_Activity_AddUserToGroup.pm create mode 100644 lib/WebGUI/Workflow/Activity/AddUserToGroup.pm create mode 100644 lib/WebGUI/i18n/English/Workflow_Activity_AddUserToGroup.pm diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 12ecdbb7f..f3aedf5a5 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -14,6 +14,9 @@ - fix: Email address with just one character in the user part not accepted - fix: Image (file) added to page shows before committing changes - fix: Typo in fileImport.pl at line 265 (zxp) + - rfe: Workflow activity for assigning users to a group + - The prevent proxy cache setting also now sets anti-caching meta tags and + HTTP headers. - fix: getMedia asset constructor returning wrong object type diff --git a/docs/upgrades/upgrade_7.0.5-7.0.6.pl b/docs/upgrades/upgrade_7.0.5-7.0.6.pl index 9d4350c18..736116257 100644 --- a/docs/upgrades/upgrade_7.0.5-7.0.6.pl +++ b/docs/upgrades/upgrade_7.0.5-7.0.6.pl @@ -20,17 +20,18 @@ my $quiet; # this line required my $session = start(); # this line required -# upgrade functions go here +addNewWorkflowActivity(); finish($session); # this line required -##------------------------------------------------- -#sub exampleFunction { -# my $session = shift; -# print "\tWe're doing some stuff here that you should know about.\n" unless ($quiet); -# # and here's our code -#} +#------------------------------------------------- +sub addNewWorkflowActivity { + print "\tAdding 'add user to group' workflow activity.\n" unless ($quiet); + my $activities = $session->config->get("workflowActivities"); + push(@{$activities->{"WebGUI::User"}}, "WebGUI::Workflow::Activity::AddUserToGroup"); + $session->config->set("workflowActivities", $activities); +} diff --git a/lib/WebGUI/Help/Workflow_Activity_AddUserToGroup.pm b/lib/WebGUI/Help/Workflow_Activity_AddUserToGroup.pm new file mode 100644 index 000000000..892181830 --- /dev/null +++ b/lib/WebGUI/Help/Workflow_Activity_AddUserToGroup.pm @@ -0,0 +1,33 @@ +package WebGUI::Help::Workflow_Activity_AddUserToGroup; + +our $HELP = { + 'add user to group' => { + title => 'activityName', + body => 'add user to group body', + isa => [ + { + namespace => "Workflow_Activity", + tag => "add/edit workflow activity" + }, + ], + fields => [ + { + title => 'group', + description => 'group help', + namespace => 'Workflow_Activity_AddUserToGroup', + }, + { + title => 'expire offset', + description => 'expire offset help', + namespace => 'Workflow_Activity_AddUserToGroup', + }, + ], + variables => [ + ], + related => [ + ], + }, + +}; + +1; ##All perl modules must return true diff --git a/lib/WebGUI/Session/Style.pm b/lib/WebGUI/Session/Style.pm index 4351c0a78..d5542151f 100644 --- a/lib/WebGUI/Session/Style.pm +++ b/lib/WebGUI/Session/Style.pm @@ -180,7 +180,7 @@ return props[propName]; '; -if ($self->session->user->isInGroup(2)) { +if ($self->session->user->isInGroup(2) || $self->session->setting->get("preventProxyCache")) { # This "triple incantation" panders to the delicate tastes of various browsers for reliable cache suppression. $var{'head.tags'} .= ' diff --git a/lib/WebGUI/Workflow/Activity/AddUserToGroup.pm b/lib/WebGUI/Workflow/Activity/AddUserToGroup.pm new file mode 100644 index 000000000..a47c36ce4 --- /dev/null +++ b/lib/WebGUI/Workflow/Activity/AddUserToGroup.pm @@ -0,0 +1,95 @@ +package WebGUI::Workflow::Activity::AddUserToGroup; + + +=head1 LEGAL + + ------------------------------------------------------------------- + WebGUI is Copyright 2001-2006 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::International; + +=head1 NAME + +Package WebGUI::Workflow::Activity::RunCommandAsUser + +=head1 DESCRIPTION + +This activity adds the user (the working object) to a specified group. + +=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_AddUserToGroup"); + push(@{$definition}, { + name=>$i18n->get("activityName"), + properties=> { + groupId => { + fieldType=>"group", + label=>$i18n->get("group"), + defaultValue=>undef, + excludeGroups=>[7,2,1], + hoverHelp=>$i18n->get("group help") + }, + expireOffset => { + fieldType=>"interval", + label=>$i18n->get("expire offset"), + defaultValue=>60*60*24*365, + hoverHelp=>$i18n->get("expire offset help") + } + } + }); + return $class->SUPER::definition($session,$definition); +} + + +#------------------------------------------------------------------- + +=head2 execute ( [ object ] ) + +See WebGUI::Workflow::Activity::execute() for details. + +=cut + +sub execute { + my $self = shift; + my $user = shift; + $user->addToGroups([$self->get("groupId")], $self->get("expireOffset")); + return $self->COMPLETE; +} + + + +1; + + diff --git a/lib/WebGUI/i18n/English/Workflow_Activity_AddUserToGroup.pm b/lib/WebGUI/i18n/English/Workflow_Activity_AddUserToGroup.pm new file mode 100644 index 000000000..eacd064b7 --- /dev/null +++ b/lib/WebGUI/i18n/English/Workflow_Activity_AddUserToGroup.pm @@ -0,0 +1,41 @@ +package WebGUI::i18n::English::Workflow_Activity_AddUserToGroup; + +our $I18N = { + 'expire offset help' => { + message => q|How long should the user remain a member of the group?|, + context => q|the hover help for the expire offset field|, + lastUpdated => 0, + }, + + 'expire offset' => { + message => q|Expire Offset|, + context => q|a label for the expire offset field|, + lastUpdated => 0, + }, + + 'group help' => { + message => q|Choose a group to add this user to.|, + context => q|the hover help for the group field|, + lastUpdated => 0, + }, + + 'group' => { + message => q|Group|, + context => q|a label for the group field|, + lastUpdated => 0, + }, + + 'activityName' => { + message => q|Add User To Group|, + context => q|The name of this workflow activity.|, + lastUpdated => 0, + }, + + 'add user to group body' => { + message => q|

This workflow activity adds a user to a specified group.

|, + lastUpdated => 0, + }, + +}; + +1;