diff options
Diffstat (limited to 'rt/webrt/Admin/Queues/People.html')
-rwxr-xr-x | rt/webrt/Admin/Queues/People.html | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/rt/webrt/Admin/Queues/People.html b/rt/webrt/Admin/Queues/People.html new file mode 100755 index 000000000..b495400ed --- /dev/null +++ b/rt/webrt/Admin/Queues/People.html @@ -0,0 +1,161 @@ +<& /Elements/Header, Title => 'Modify people related to queue ' . $QueueObj->Name &> +<& /Admin/Elements/QueueTabs, id => $id &> + +<& /Elements/ListActions, actions => \@results &> + + +<FORM METHOD=POST ACTION="People.html"> +<INPUT TYPE=HIDDEN NAME=id VALUE="<%$QueueObj->Id%>"> +<& /Elements/TitleBoxStart, title => 'Modify watchers for queue \''.$QueueObj->Name ."'", width => "100%" &> + +<TABLE WIDTH=100%> +<TR> +<TD VALIGN=TOP > + +<h3>Current watchers</h3> +<i>(Check box to delete)</i><br><BR> + + +Cc: + +<ul> + +%# Print out a placeholder if there are none. +%if ($cc->Count == 0 ) { +<li><i>none</i> +% } + +%while (my $watcher=$cc->Next) { +<li> +<INPUT TYPE=CHECKBOX NAME="DelWatcher<%$watcher->id%>" UNCHECKED> +%# account +%if ($watcher->IsUser) { +<a href="<%$RT::WebPath%>/Admin/Users/Modify.html?id=<%$watcher->OwnerObj->id%>"> +<%$watcher->OwnerObj->RealName%></a>: +%} else { +Email address: +%} +<i><%$watcher->Email%></i> +%} +</ul> + + +Administrative Cc: +<UL> +%# Print out a placeholder if there are none. +%if ($admincc->Count == 0 ) { +<li><i>none</i> +% } + +%while (my $watcher=$admincc->Next) { +<li><INPUT TYPE=CHECKBOX NAME="DelWatcher<%$watcher->id%>" UNCHECKED> +%# account +%if ($watcher->IsUser) { +<a href="<%$RT::WebPath%>/Admin/Users/Modify.html?id=<%$watcher->OwnerObj->id%>"> +<%$watcher->OwnerObj->RealName%></a>: +%} else { +Email address: +%} +<i><%$watcher->Email%></i> +%} +</UL> +</TD> + +<TD VALIGN=TOP> +<h3>New watchers</h3> +Find people whose<BR> +<& /Elements/SelectUsers &> + +<BR> +Add new watchers:<br> + +% if ($msg) { +<i><%$msg%></i> +% } elsif ($Users) { +<ul> +% while (my $u = $Users->Next ) { +<li><&/Elements/SelectWatcherType, Scope=>'queue', Name => "WatcherTypeUser".$u->Id &> <%$u->Name%> +(<%$u->RealName%>) +% } +</ul> +% } + +</TD> +</TR> +</TABLE> + + + + + +<& /Elements/TitleBoxEnd &> +<& /Elements/Submit, Label => 'Save Changes', Caption => "If you've updated anything above, be sure to" &> +</form> + +<%INIT> + +my ($field, @results, $User, $Users, $watcher, $key, $msg); +# {{{ Load the queue +#If we get handed two ids, mason will make them an array. bleck. +# We want teh first one. Just because there's no other sensible way +# to deal + + + +my $QueueObj = new RT::Queue($session{'CurrentUser'}); +$QueueObj->Load($id) || Abort("Couldn't load queue '$id'"); +# }}} + +# {{{ Delete deletable watchers + +foreach $key (keys %ARGS) { + if (($key =~ /^DelWatcher(\d*)$/) and + ($ARGS{$key})) { + $RT::Logger->debug("Deleting watcher $1\n"); + my ($code, $msg) = $QueueObj->DeleteWatcher($1); + + push @results, $msg; + } +} +# }}} + +# {{{ Add new watchers +foreach $key (keys %ARGS) { + #They're in this order because otherwise $1 gets clobbered :/ + if ( ($ARGS{$key} =~ /^(AdminCc|Cc)$/) and + ($key =~ /^WatcherTypeUser(\d*)$/) ) { + $RT::Logger->debug("Adding a watcher $1 to ".$ARGS{$key}."\n"); + my ($code, $msg) = + $QueueObj->AddWatcher(Type => $ARGS{$key}, + Owner => $1); + push @results, $msg; + } +} + +# }}} + + + +my $admincc = $QueueObj->AdminCc; +my $cc = $QueueObj->Cc; + + +if (!$ARGS{'UserString'}) { +$msg = "No users selected."; + } +else { + $Users = new RT::Users($session{'CurrentUser'}); + $Users->Limit(FIELD => $ARGS{'UserField'}, + VALUE => $ARGS{'UserString'}, + OPERATOR => $ARGS{'UserOp'}); + } +</%INIT> + +<%ARGS> +$UserField => 'Name' +$UserOp => '=' +$UserString => undef +$Type => undef +$id => undef +</%ARGS> + |