[Rt-commit] r9861 - in rt/branches/3.6-EXPERIMENTAL-ABERDEEN: html/Admin/RuleManager html/Callbacks html/Callbacks/RuleManager html/Callbacks/RuleManager/Admin html/Callbacks/RuleManager/Admin/Elements html/Callbacks/RuleManager/Admin/Elements/Tabs lib/RT/Action lib/RT/Extension

audreyt at bestpractical.com audreyt at bestpractical.com
Sun Dec 9 16:25:16 EST 2007


Author: audreyt
Date: Sun Dec  9 16:25:14 2007
New Revision: 9861

Added:
   rt/branches/3.6-EXPERIMENTAL-ABERDEEN/html/Admin/Elements/RuleManagerTabs   (contents, props changed)
   rt/branches/3.6-EXPERIMENTAL-ABERDEEN/html/Admin/RuleManager/
   rt/branches/3.6-EXPERIMENTAL-ABERDEEN/html/Admin/RuleManager/Modify.html   (contents, props changed)
   rt/branches/3.6-EXPERIMENTAL-ABERDEEN/html/Admin/RuleManager/index.html
   rt/branches/3.6-EXPERIMENTAL-ABERDEEN/html/Callbacks/
   rt/branches/3.6-EXPERIMENTAL-ABERDEEN/html/Callbacks/RuleManager/
   rt/branches/3.6-EXPERIMENTAL-ABERDEEN/html/Callbacks/RuleManager/Admin/
   rt/branches/3.6-EXPERIMENTAL-ABERDEEN/html/Callbacks/RuleManager/Admin/Elements/
   rt/branches/3.6-EXPERIMENTAL-ABERDEEN/html/Callbacks/RuleManager/Admin/Elements/Tabs/
   rt/branches/3.6-EXPERIMENTAL-ABERDEEN/html/Callbacks/RuleManager/Admin/Elements/Tabs/Default
   rt/branches/3.6-EXPERIMENTAL-ABERDEEN/lib/RT/Action/RuleManager.pm   (contents, props changed)
   rt/branches/3.6-EXPERIMENTAL-ABERDEEN/lib/RT/Extension/
   rt/branches/3.6-EXPERIMENTAL-ABERDEEN/lib/RT/Extension/RulesManager.pm

Log:
* First cut of RuleManager, done in-branch instead of an extension,
  to be "factored out" later.

Added: rt/branches/3.6-EXPERIMENTAL-ABERDEEN/html/Admin/Elements/RuleManagerTabs
==============================================================================
--- (empty file)
+++ rt/branches/3.6-EXPERIMENTAL-ABERDEEN/html/Admin/Elements/RuleManagerTabs	Sun Dec  9 16:25:14 2007
@@ -0,0 +1,90 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%# 
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+%#                                          <jesse at bestpractical.com>
+%# 
+%# (Except where explicitly superseded by other copyright notices)
+%# 
+%# 
+%# LICENSE:
+%# 
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%# 
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%# 
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/copyleft/gpl.html.
+%# 
+%# 
+%# CONTRIBUTION SUBMISSION POLICY:
+%# 
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%# 
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%# 
+%# END BPS TAGGED BLOCK }}}
+<& /Admin/Elements/Tabs, 
+    subtabs => $tabs,
+    current_tab => 'Admin/RuleManager/', 
+    current_subtab => $current_tab, 
+    Title => $Title &>
+<%INIT>
+my $tabs;
+if ($id) {
+    $tabs->{'this'} = {
+        title => eval { $RuleObj->Name },
+        path => "Admin/Users/Modify.html?id=".$id,
+    };
+}
+if (
+    $session{'CurrentUser'}->HasRight(Right =>'ModifyTemplate', Object => $RT::System)
+) {
+  $tabs->{"A"} = { title => loc('Select rule'),
+  		     	path => "Admin/RuleManager/",
+			   };
+  $tabs->{"B"} = { title => loc('New rule'),
+  		     	path => "Admin/RuleManager/Modify.html?Create=1",
+		separator => 1,
+	};
+}
+  # Now let callbacks add their extra tabs
+  $m->comp('/Elements/Callback', tabs => $tabs, %ARGS);
+
+foreach my $tab ( sort keys %{$tabs->{'this'}->{'subtabs'}} ) {  
+    if ( $tabs->{'this'}->{'subtabs'}->{$tab}->{'path'} eq $current_tab ) {
+        $tabs->{'this'}->{'subtabs'}->{$tab}->{"subtabs"}        = $subtabs; 
+        $tabs->{'this'}->{'subtabs'}->{$tab}->{"current_subtab"} = $current_subtab; 
+    }                                                                           
+}   
+  $current_tab = "Admin/Users/Modify.html?id=".$id if $id;
+</%INIT>
+<%ARGS>
+$RuleObj => undef
+$id => undef
+$current_tab => undef
+$subtabs => undef
+$current_subtab => undef
+$Title => undef
+</%ARGS>

Added: rt/branches/3.6-EXPERIMENTAL-ABERDEEN/html/Admin/RuleManager/Modify.html
==============================================================================
--- (empty file)
+++ rt/branches/3.6-EXPERIMENTAL-ABERDEEN/html/Admin/RuleManager/Modify.html	Sun Dec  9 16:25:14 2007
@@ -0,0 +1,110 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%# 
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+%#                                          <jesse at bestpractical.com>
+%# 
+%# (Except where explicitly superseded by other copyright notices)
+%# 
+%# 
+%# LICENSE:
+%# 
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%# 
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%# 
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/copyleft/gpl.html.
+%# 
+%# 
+%# CONTRIBUTION SUBMISSION POLICY:
+%# 
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%# 
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%# 
+%# END BPS TAGGED BLOCK }}}
+<& /Admin/Elements/Header, Title => $title &>
+<& /Admin/Elements/RuleTabs, id => $RuleObj->id, 
+    RuleObj => $RuleObj,
+    current_tab => $current_tab, 
+    Title => $title &>
+<& /Elements/ListActions, actions => \@results &>
+
+
+
+<form action="<%$RT::WebPath%>/Admin/RuleManager/Modify.html" method="post">
+%if ($Create ) { 
+<input type="hidden" class="hidden" name="id" value="new" />
+% } else {
+<input type="hidden" class="hidden" name="id" value="<%$RuleObj->Id%>" />
+% }
+
+<table>
+<tr><td align="right">
+<&|/l&>Rule Name</&>: 
+</td>
+<td><input name="Name" value="<% ($Create) ? "" : $RuleObj->Name %>" /></td>
+</tr>
+
+</table>
+<& /Elements/Submit, Label => loc('Save Changes') &>
+</form>
+
+
+
+<%INIT>
+require RT::Extension::RuleManager;
+my $current_tab;
+my $RuleObj;
+my ($title, @results);
+
+if ($Create) {
+    $current_tab = 'Admin/RuleManager/Modify.html?Create=1';
+    $title = loc("Create a rule");
+} else {
+    if ($id eq 'new') {
+        $RuleObj = RT::Extension::RuleManager->create(Name => $Name);
+        push @results, loc('Rule created.');
+    }
+    elsif ($id =~ /^\d+$/) {
+        $RuleObj = RT::Extension::RuleManager->load($id)
+                || RT::Extension::RuleManager->named($Name)
+                || Abort("Couldn't load rule '$Name'");
+    }
+    $title = loc('Editing Rule [_1]', $RuleObj->Name);
+    
+    $current_tab = 'Admin/RuleManager/Modify.html?id='.$RuleObj->id;
+}
+if ($RuleObj->Id) {
+}
+</%INIT>
+
+
+<%ARGS>
+$id => undef
+$result => undef
+$Name => undef
+$Create => undef
+</%ARGS>

Added: rt/branches/3.6-EXPERIMENTAL-ABERDEEN/html/Admin/RuleManager/index.html
==============================================================================
--- (empty file)
+++ rt/branches/3.6-EXPERIMENTAL-ABERDEEN/html/Admin/RuleManager/index.html	Sun Dec  9 16:25:14 2007
@@ -0,0 +1,77 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%# 
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+%#                                          <jesse at bestpractical.com>
+%# 
+%# (Except where explicitly superseded by other copyright notices)
+%# 
+%# 
+%# LICENSE:
+%# 
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%# 
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%# 
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/copyleft/gpl.html.
+%# 
+%# 
+%# CONTRIBUTION SUBMISSION POLICY:
+%# 
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%# 
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%# 
+%# END BPS TAGGED BLOCK }}}
+<& /Admin/Elements/Header, Title => loc('Select a rule') &>
+<& /Admin/Elements/RuleManagerTabs, current_tab => 'Admin/RuleManager/', 
+    current_subtab => 'Admin/RuleManager/',
+    Title => loc('Rule Manager') &>
+
+<h1><&|/l&>All Rules</h1>
+<pre>
+- List rules by order, with move up/down buttons as well as deletion.
+- Clicking on a rule brings Modify.html with the usual controls:
+    - Match
+    - Pattern
+    - Action
+    - Argument
+    - StopAfterProcessingIfMatched
+- Auto-vivify the action/rule/template combination?
+</pre>
+
+<p><&|/l&>Select a rule</&>:</p>
+<ul>
+%if (@$rules == 0) {
+<li><em><&|/l&>No rules found.</&></em></li>
+% }
+%for my $rule (@$rules) {
+<li><a href="Modify.html?id=<%$rule->id%>"><%$rule->Name%></a></li>
+%}
+</ul>
+<%INIT>
+require RT::Extension::RuleManager;
+my $rules = RT::Extension::RuleManager->rules;
+</%INIT>

Added: rt/branches/3.6-EXPERIMENTAL-ABERDEEN/html/Callbacks/RuleManager/Admin/Elements/Tabs/Default
==============================================================================
--- (empty file)
+++ rt/branches/3.6-EXPERIMENTAL-ABERDEEN/html/Callbacks/RuleManager/Admin/Elements/Tabs/Default	Sun Dec  9 16:25:14 2007
@@ -0,0 +1,56 @@
+%# BEGIN BPS TAGGED BLOCK {{{
+%# 
+%# COPYRIGHT:
+%#  
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+%#                                          <jesse at bestpractical.com>
+%# 
+%# (Except where explicitly superseded by other copyright notices)
+%# 
+%# 
+%# LICENSE:
+%# 
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%# 
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%# 
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+%# 02110-1301 or visit their web page on the internet at
+%# http://www.gnu.org/copyleft/gpl.html.
+%# 
+%# 
+%# CONTRIBUTION SUBMISSION POLICY:
+%# 
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%# 
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%# 
+%# END BPS TAGGED BLOCK }}}
+<%INIT>
+$tabs->{RuleManager} = {
+    title => loc('Rule Manager'),
+    path => 'Admin/RuleManager/',
+};
+</%INIT>
+<%ARGS>
+$tabs
+</%ARGS>

Added: rt/branches/3.6-EXPERIMENTAL-ABERDEEN/lib/RT/Action/RuleManager.pm
==============================================================================
--- (empty file)
+++ rt/branches/3.6-EXPERIMENTAL-ABERDEEN/lib/RT/Action/RuleManager.pm	Sun Dec  9 16:25:14 2007
@@ -0,0 +1,140 @@
+# BEGIN BPS TAGGED BLOCK {{{
+# 
+# COPYRIGHT:
+#  
+# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
+#                                          <jesse at bestpractical.com>
+# 
+# (Except where explicitly superseded by other copyright notices)
+# 
+# 
+# LICENSE:
+# 
+# This work is made available to you under the terms of Version 2 of
+# the GNU General Public License. A copy of that license should have
+# been provided with this software, but in any event can be snarfed
+# from www.gnu.org.
+# 
+# This work is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 or visit their web page on the internet at
+# http://www.gnu.org/copyleft/gpl.html.
+# 
+# 
+# CONTRIBUTION SUBMISSION POLICY:
+# 
+# (The following paragraph is not intended to limit the rights granted
+# to you to modify and distribute this software under the terms of
+# the GNU General Public License and is only of importance to you if
+# you choose to contribute your changes and enhancements to the
+# community by submitting them to Best Practical Solutions, LLC.)
+# 
+# By intentionally submitting any modifications, corrections or
+# derivatives to this work, or any other work intended for use with
+# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+# you are the copyright holder for those contributions and you grant
+# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+# royalty-free, perpetual, license to use, copy, create derivative
+# works based on those contributions, and sublicense and distribute
+# those contributions and any derivatives thereof.
+# 
+# END BPS TAGGED BLOCK }}}
+package RT::Action::RulesManager;
+require RT::Action::SendEmail;
+
+use strict;
+use vars qw/@ISA/;
+ at ISA = qw(RT::Action::SendEmail);
+
+=head2 Prepare
+
+Set up the relevant recipients, then call our parent.
+
+=cut
+
+
+sub Prepare {
+    my $self = shift;
+    $self->SetRecipients();
+    $self->SUPER::Prepare();
+}
+
+# {{{ sub SetRecipients
+
+=head2 SetRecipients
+
+Sets the recipients of this message to this ticket's Requestor.
+
+=cut
+
+
+sub SetRecipients {
+    my $self=shift;
+
+    push(@{$self->{'To'}}, $self->TicketObj->Requestors->MemberEmailAddresses);
+    
+    return(1);
+}
+
+# }}}
+
+
+# {{{ sub SetReturnAddress 
+
+=head2 SetReturnAddress
+
+Set this message\'s return address to the apropriate queue address
+
+=cut
+
+sub SetReturnAddress {
+    my $self = shift;
+    my %args = ( is_comment => 0,
+		 @_
+	       );
+    
+    my $replyto;
+    if ($args{'is_comment'}) { 
+	$replyto = $self->TicketObj->QueueObj->CommentAddress || 
+		     $RT::CommentAddress;
+    }
+    else {
+	$replyto = $self->TicketObj->QueueObj->CorrespondAddress ||
+		     $RT::CorrespondAddress;
+    }
+    
+    unless ($self->TemplateObj->MIMEObj->head->get('From')) {
+	if ($RT::UseFriendlyFromLine) {
+	    my $friendly_name = $self->TicketObj->QueueObj->Description ||
+		    $self->TicketObj->QueueObj->Name;
+	    $friendly_name =~ s/"/\\"/g;
+	    $self->SetHeader( 'From',
+		        sprintf($RT::FriendlyFromLineFormat, 
+                $self->MIMEEncodeString( $friendly_name, $RT::EmailOutputEncoding ), $replyto),
+	    );
+	}
+	else {
+	    $self->SetHeader( 'From', $replyto );
+	}
+    }
+    
+    unless ($self->TemplateObj->MIMEObj->head->get('Reply-To')) {
+	$self->SetHeader('Reply-To', "$replyto");
+    }
+    
+}
+  
+# }}}
+
+eval "require RT::Action::Autoreply_Vendor";
+die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/Autoreply_Vendor.pm});
+eval "require RT::Action::Autoreply_Local";
+die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/Autoreply_Local.pm});
+
+1;

Added: rt/branches/3.6-EXPERIMENTAL-ABERDEEN/lib/RT/Extension/RulesManager.pm
==============================================================================
--- (empty file)
+++ rt/branches/3.6-EXPERIMENTAL-ABERDEEN/lib/RT/Extension/RulesManager.pm	Sun Dec  9 16:25:14 2007
@@ -0,0 +1,23 @@
+package RT::Extension::RuleManager;
+use YAML::Syck '1.00';
+
+sub create {
+    my $self = shift;
+}
+
+sub load {
+    my $self = shift;
+    my $id   = shift;
+}
+
+sub named {
+    my $self = shift;
+    my $name = shift;
+}
+
+sub rules {
+    my $self = shift;
+    my $rules = $self->_load;
+}
+
+1;


More information about the Rt-commit mailing list