[Rt-commit] r17270 - in rtfm/trunk/html: Callbacks/RTFM/Elements/MessageBox
ruz at bestpractical.com
ruz at bestpractical.com
Tue Dec 16 18:25:55 EST 2008
Author: ruz
Date: Tue Dec 16 18:25:55 2008
New Revision: 17270
Modified:
rtfm/trunk/html/Callbacks/RTFM/Elements/MessageBox/Default
rtfm/trunk/html/RTFM/Elements/BeforeMessageBox
Log:
* add support for multiple message boxes on a page, just set MessageBoxName
argument in BeforeMessageBox callback
Modified: rtfm/trunk/html/Callbacks/RTFM/Elements/MessageBox/Default
==============================================================================
--- rtfm/trunk/html/Callbacks/RTFM/Elements/MessageBox/Default (original)
+++ rtfm/trunk/html/Callbacks/RTFM/Elements/MessageBox/Default Tue Dec 16 18:25:55 2008
@@ -46,10 +46,23 @@
%#
%# END BPS TAGGED BLOCK }}}
<%INIT>
+
my $parent_args = $m->caller_args(-1);
+
+my $name_prefix = '';
+$name_prefix = $ARGS{'Name'} .'-'
+ if $ARGS{'Name'}
+ && grep rindex($_, "$ARGS{'Name'}-RTFM-", 0) == 0,
+ keys %$parent_args;
+
foreach my $arg ( keys %$parent_args ) {
+ next if $name_prefix && substr($arg, 0, length($name_prefix)) ne $name_prefix;
+
my $article = RT::FM::Article->new($session{'CurrentUser'});
- $article->LoadByInclude( Field => $arg, Value => $parent_args->{$arg} );
+ $article->LoadByInclude(
+ Field => substr($arg, length($name_prefix)),
+ Value => $parent_args->{$arg},
+ );
next unless $article && $article->id;
my $Ticket = $ARGS{Ticket};
Modified: rtfm/trunk/html/RTFM/Elements/BeforeMessageBox
==============================================================================
--- rtfm/trunk/html/RTFM/Elements/BeforeMessageBox (original)
+++ rtfm/trunk/html/RTFM/Elements/BeforeMessageBox Tue Dec 16 18:25:55 2008
@@ -53,17 +53,17 @@
<table>
<tr>
<td><&|/l&>Search for RTFM articles matching</&></td>
-<td><input size=20 name="RTFM_Content" /></td>
+<td><input size=20 name="<% $name_prefix %>RTFM_Content" /></td>
</tr>
<tr>
<td><&|/l&>Include RTFM article:</&></td>
-<td><input size=20 name="RTFM-Include-Article-Named" /></td>
+<td><input size=20 name="<% $name_prefix %>RTFM-Include-Article-Named" /></td>
<td><input type="submit" value="Go" /></td>
</tr>
% if ($hotlist->Count) {
<tr>
<td><&|/l&>Select an Article to include</&></td>
-<td><select name="RTFM-Include-Article-Named-Hotlist">
+<td><select name="<% $name_prefix %>RTFM-Include-Article-Named-Hotlist">
<option value="" selected><&|/l&>-</&></option>
% while (my $article = $hotlist->Next) {
<option value="<% $article->Id %>"><%$article->Name|| loc('(no name)')%>: <%$article->Summary%></option>
@@ -79,7 +79,7 @@
<tr>
<td> </td>
<td><%$article->Name|| loc('(no name)')%>: <%$article->Summary%></td>
-<td><input type="submit" name="RTFM-Include-Article-<%$article->Id%>" value="Go" /></td>
+<td><input type="submit" name="<% $name_prefix %>RTFM-Include-Article-<%$article->Id%>" value="Go" /></td>
</tr>
% }
% while (my $article = $articles_basics->Next) {
@@ -87,7 +87,7 @@
<tr>
<td> </td>
<td><%$article->Name || loc('(no name)')%>: <%$article->Summary%></td>
-<td><input type="submit" name="RTFM-Include-Article-<%$article->Id%>" value="Go" /></td>
+<td><input type="submit" name="<% $name_prefix %>RTFM-Include-Article-<%$article->Id%>" value="Go" /></td>
</tr>
% }
% if ( @$topics ) {
@@ -96,7 +96,7 @@
<&|/l, $QueueObj->Name &>Choose from Topics for [_1] </&>
</td>
<td>
-<select name="RTFM-Include-Topic">
+<select name="<% $name_prefix %>RTFM-Include-Topic">
<option value="" selected>-</option>
% for ( @$topics ) {
<option value="<% $_->{id} %>"><%' ' x $_->{depth} . ($_->{name}|| loc('(no name)')) |n%>
@@ -107,13 +107,13 @@
<td><input type="submit" value="Go" /></td>
</tr>
-% if ( $ARGS{'RTFM-Include-Topic'} ) {
+% if ( $ARGS{$name_prefix .'RTFM-Include-Topic'} ) {
<tr>
<td>
<&|/l, $included_topic->Name &>Select an Article from [_1]</&>
</td>
<td>
-<select name="RTFM-Include-Article">
+<select name="<% $name_prefix %>RTFM-Include-Article">
<option value="" selected>-</option>
% while ( my $art = $topic_articles->Next ) {
<option value="<% $art->id %>"><%$art->Name||loc('(no name)')%>: <%$art->Summary%></option>
@@ -130,9 +130,14 @@
</table>
<%init>
+my $name_prefix = '';
+if ( $ARGS{'MessageBoxName'} ) {
+ $name_prefix = $ARGS{'MessageBoxName'} .'-';
+}
+
# convert RTFM-Include-Article => $id to RTFM-Include-Article-$id
-if ( $ARGS{'RTFM-Include-Article'} ) {
- $ARGS{"RTFM-Include-Article-$ARGS{'RTFM-Include-Article'}"}++;
+if ( my $tmp = $ARGS{$name_prefix ."RTFM-Include-Article"} ) {
+ $ARGS{$name_prefix ."RTFM-Include-Article-$tmp"}++;
}
my %uri;
@@ -140,12 +145,16 @@
$uri{$_}++ for split ' ', ($ARGS{$ARGS{'id'}.'-RefersTo'} || '');
foreach my $arg (keys %ARGS) {
+ next if $name_prefix && substr($arg, 0, length($name_prefix)) ne $name_prefix;
+
my $article = RT::FM::Article->new($session{'CurrentUser'});
- $article->LoadByInclude( Field => $arg, Value => $ARGS{$arg} );
+ $article->LoadByInclude(
+ Field => substr($arg, length($name_prefix)),
+ Value => $ARGS{$arg},
+ );
if ($article->Id) {
$uri{$article->URI}++;
}
-
}
}
@@ -154,19 +163,20 @@
my $articles_content =
RT::FM::ArticleCollection->new( $session{'CurrentUser'} );
my $articles_basics = RT::FM::ArticleCollection->new( $session{'CurrentUser'} );
-if ( $ARGS{'RTFM_Content'} ) {
- $articles_content->LimitCustomField( VALUE => $ARGS{'RTFM_Content'},
- OPERATOR => 'LIKE' );
+if ( my $tmp = $ARGS{ $name_prefix ."RTFM_Content" } ) {
+ $articles_content->LimitCustomField(
+ VALUE => $tmp, OPERATOR => 'LIKE'
+ );
$articles_basics->Limit( SUBCLAUSE => 'all',
FIELD => 'Name',
OPERATOR => 'LIKE',
- VALUE => $ARGS{'RTFM_Content'},
+ VALUE => $tmp,
ENTRYAGGREGATOR => "OR" );
$articles_basics->Limit( SUBCLAUSE => 'all',
FIELD => 'Summary',
OPERATOR => 'LIKE',
- VALUE => $ARGS{'RTFM_Content'},
+ VALUE => $tmp,
ENTRYAGGREGATOR => "OR" );
}
@@ -214,10 +224,10 @@
# store all topics below $queue_topic to $topics
topics( $queue_topic, $topics, 0 );
- if ( $ARGS{'RTFM-Include-Topic'} ) {
+ if ( my $tmp = $ARGS{ $name_prefix .'RTFM-Include-Topic'} ) {
$included_topic = RT::FM::Topic->new( $session{CurrentUser} );
- $included_topic->Load($ARGS{'RTFM-Include-Topic'});
- $topic_articles->LimitTopics( $ARGS{'RTFM-Include-Topic'} );
+ $included_topic->Load( $tmp );
+ $topic_articles->LimitTopics( $tmp );
$topic_articles->OrderBy( FIELD => 'Name' );
}
}
More information about the Rt-commit
mailing list