[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