Thread: [Codestriker-commits] CVS update: codestriker/lib/Codestriker/TopicListeners Email.pm
Brought to you by:
sits
From: <si...@us...> - 2006-06-10 03:01:42
|
User: sits Date: 06/06/09 19:58:34 Modified: . CHANGELOG codestriker.conf bin install.pl doc codestriker.sgml lib Codestriker.pm lib/Codestriker/FileParser Parser.pm lib/Codestriker/Repository ClearCaseSnapshot.pm Cvs.pm lib/Codestriker/TopicListeners Email.pm Log: * Support for sending email via SMTP authentication, via the optional $mailuser and $mailpasswd configuration parameters in codestriker.conf. Contributed by "Hertz Wang" <wa...@ne...>. * The ClearCase Snapshot repository was not using the $tmpdir setting in codestriker.conf if it was set when creating temporary files. This has now been fixed. Contributed by "John Farrelly (AT/LMI)" <joh...@er...>. * Make sure the diffs in the topic are presented in a sorted order by filename. Some SCMs create topic texts in a "semi-sorted" order, such as Subversion. Contributed by "Vladimir Vysotsky" <vvy...@av...>. Index: CHANGELOG =================================================================== RCS file: /cvsroot/codestriker/codestriker/CHANGELOG,v retrieving revision 1.189 retrieving revision 1.190 diff -u -r1.189 -r1.190 --- CHANGELOG 9 Jun 2006 03:20:03 -0000 1.189 +++ CHANGELOG 10 Jun 2006 02:58:32 -0000 1.190 @@ -69,6 +69,20 @@ * Defining new entries in $comment_state_metrics in codestriker.conf could not be used for existing topics. This has now been fixed. +* Support for sending email via SMTP authentication, via the optional + $mailuser and $mailpasswd configuration parameters in + codestriker.conf. Contributed by "Hertz Wang" <wa...@ne...>. + +* The ClearCase Snapshot repository was not using the $tmpdir setting + in codestriker.conf if it was set when creating temporary files. + This has now been fixed. + Contributed by "John Farrelly (AT/LMI)" <joh...@er...>. + +* Make sure the diffs in the topic are presented in a sorted order by + filename. Some SCMs create topic texts in a "semi-sorted" order, + such as Subversion. + Contributed by "Vladimir Vysotsky" <vvy...@av...>. + Version 1.9.1 * Correct problem introduced in 1.9.0 release where the email address Index: codestriker.conf =================================================================== RCS file: /cvsroot/codestriker/codestriker/codestriker.conf,v retrieving revision 1.81 retrieving revision 1.82 diff -u -r1.81 -r1.82 --- codestriker.conf 30 May 2006 07:18:09 -0000 1.81 +++ codestriker.conf 10 Jun 2006 02:58:32 -0000 1.82 @@ -35,6 +35,12 @@ # comments. $mailhost = 'localhost'; +# Set the user and password parameters if $mailhost requires SMTP +# authentication. If commented out, it is assumed authentication is +# not required. +#$mailuser = 'smtpuser'; +#$mailpasswd = 'smtppasswd'; + # Indicate whether to try and compress output if the client browser # supports it. This can make a tremendous difference in bandwidth, # especially over slow links. Index: install.pl =================================================================== RCS file: /cvsroot/codestriker/codestriker/bin/install.pl,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- install.pl 30 May 2006 07:18:09 -0000 1.6 +++ install.pl 10 Jun 2006 02:58:33 -0000 1.7 @@ -1,4 +1,4 @@ -#!/usr/bin/perl -w +#!/usr/local/bin/perl -w ############################################################################### # Codestriker: Copyright (c) 2001, 2002 David Sitsky. All rights reserved. @@ -109,6 +109,11 @@ name => 'Encode::Unicode', version => '0', optional => 0 + }, + { + name => 'Authen::SASL', + version => '0', + optional => 0 } ]; Index: codestriker.sgml =================================================================== RCS file: /cvsroot/codestriker/codestriker/doc/codestriker.sgml,v retrieving revision 1.53 retrieving revision 1.54 diff -u -r1.53 -r1.54 --- codestriker.sgml 31 May 2006 07:02:19 -0000 1.53 +++ codestriker.sgml 10 Jun 2006 02:58:33 -0000 1.54 @@ -393,6 +393,20 @@ # comments. $mailhost = 'localhost'; </programlisting> + If your mail server requires SMTP authentication for + sending emails, the username and password can be set via + the + <varname>$mailuser</varname> and + <varname>$mailpasswd</varname> parameters. + <programlisting> +# Set the user and password parameters if $mailhost requires SMTP +# authentication. If commented out, it is assumed authentication is +# not required. +$mailuser = 'smtpuser'; +$mailpasswd = 'smtppasswd'; + </programlisting> + If these values are commented out, it is assumed SMTP + authentication is not required. </para> </sect2> Index: Codestriker.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker.pm,v retrieving revision 1.90 retrieving revision 1.91 diff -u -r1.90 -r1.91 --- Codestriker.pm 7 Jun 2006 00:35:01 -0000 1.90 +++ Codestriker.pm 10 Jun 2006 02:58:33 -0000 1.91 @@ -15,7 +15,8 @@ use Time::Local; # Export codestriker.conf configuration variables. -use vars qw ( $mailhost $use_compression $gzip $cvs $svn $ssh $p4 $vss $bugtracker +use vars qw ( $mailhost $mailuser $mailpasswd $use_compression + $gzip $cvs $svn $ssh $p4 $vss $bugtracker @valid_repositories $default_topic_create_mode $default_tabwidth $file_reviewer $db $dbuser $dbpasswd $codestriker_css $NORMAL_MODE $COLOURED_MODE $COLOURED_MONO_MODE $topic_states @@ -24,7 +25,8 @@ $allow_delete $allow_searchlist $default_file_to_view $allow_projects $antispam_email $VERSION $title $BASEDIR $metric_config $tmpdir @metric_schema $comment_state_metrics - $project_states $rss_enabled $repository_name_map $repository_url_map + $project_states $rss_enabled + $repository_name_map $repository_url_map @valid_repository_names $topic_text_encoding ); Index: Parser.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/FileParser/Parser.pm,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- Parser.pm 7 Jun 2006 00:35:02 -0000 1.22 +++ Parser.pm 10 Jun 2006 02:58:34 -0000 1.23 @@ -166,6 +166,10 @@ seek($fh, 0, 0) || die "Unable to seek to the start of the temporary file. $!"; + # Sort the diff chunks by filename, then old linenumber. + @diffs = sort { $a->{filename} cmp $b->{filename} || + $a->{old_linenumber} <=> $b->{old_linenumber} } @diffs; + # Only include those files whose extension is not in # @Codestriker::exclude_file_types, provided it is defined. return @diffs unless defined @Codestriker::exclude_file_types; Index: ClearCaseSnapshot.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Repository/ClearCaseSnapshot.pm,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- ClearCaseSnapshot.pm 7 Jun 2006 00:35:02 -0000 1.4 +++ ClearCaseSnapshot.pm 10 Jun 2006 02:58:34 -0000 1.5 @@ -38,7 +38,14 @@ } # Create a temporary directory to store the results of 'cleartool get'. - my $tempdir = tempdir(); + my $tempdir; + if (defined $Codestriker::tmpdir && $Codestriker::tmpdir ne "") { + $tempdir = tempdir(DIR => $Codestriker::tmpdir, CLEANUP => 1); + } + else { + $tempdir = tempdir(CLEANUP => 1); + } + my $tempfile = File::Spec->catfile($tempdir, "Temp_YouCanDeleteThis"); my $errorfile = File::Spec->catfile($tempdir, "Error_YouCanDeleteThis"); Index: Cvs.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Repository/Cvs.pm,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- Cvs.pm 7 Jun 2006 00:35:02 -0000 1.4 +++ Cvs.pm 10 Jun 2006 02:58:34 -0000 1.5 @@ -19,8 +19,8 @@ my $self = {}; $self->{cvsroot} = $cvsroot; - $self->{optional_prefix} = - defined $optional_prefix ? $optional_prefix : ""; + $optional_prefix = "" unless defined $optional_prefix; + $self->{optional_prefix} = $optional_prefix; $self->{url} = "${optional_prefix}${cvsroot}"; bless $self, $type; } @@ -30,7 +30,8 @@ my ($type, $optional_args, $username, $password, $hostname, $cvsroot) = @_; my $self = {}; - $self->{optional_args} = defined $optional_args ? $optional_args : ""; + $optional_args = "" unless defined $optional_args; + $self->{optional_args} = $optional_args; $self->{username} = $username; $self->{password} = $password; $self->{hostname} = $hostname; @@ -45,7 +46,8 @@ my ($type, $optional_args, $username, $hostname, $cvsroot) = @_; my $self = {}; - $self->{optional_args} = defined $optional_args ? $optional_args : ""; + $optional_args = "" unless defined $optional_args; + $self->{optional_args} = $optional_args; $self->{username} = $username; $self->{hostname} = $hostname; $self->{cvsroot} = $cvsroot; Index: Email.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/TopicListeners/Email.pm,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- Email.pm 22 May 2006 23:19:06 -0000 1.19 +++ Email.pm 10 Jun 2006 02:58:34 -0000 1.20 @@ -17,6 +17,7 @@ use MIME::Base64; use Sys::Hostname; use Encode qw(encode); +use Authen::SASL; use Codestriker::TopicListeners::TopicListener; @@ -443,6 +444,11 @@ my $smtp = Net::SMTP->new($Codestriker::mailhost); defined $smtp || return "Unable to connect to mail server: $!"; + # Perform SMTP authentication if required. + if (defined $Codestriker::mailuser && defined $Codestriker::mailpasswd) { + $smtp->auth($Codestriker::mailuser, $Codestriker::mailpasswd); + } + $smtp->mail($from); $smtp->ok() || return "Couldn't set sender to \"$from\" $!, " . $smtp->message(); |
From: <si...@us...> - 2006-06-15 06:41:07
|
User: sits Date: 06/06/14 23:40:54 Modified: lib/Codestriker/TopicListeners Email.pm Log: The create new topic email had an extra newline inserted after the subject, which meant some mail servers (Exchange) thought this was the end of the headers section, and then ignored the Content-Type and Content-Transfer-Encoding headers, which created a malformed email. Index: Email.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/TopicListeners/Email.pm,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- Email.pm 10 Jun 2006 02:58:34 -0000 1.20 +++ Email.pm 15 Jun 2006 06:40:54 -0000 1.21 @@ -419,7 +419,7 @@ "", "", "", $query->url(), 0); - my $subject = "[REVIEW] Topic $event_name \"" . $topic->{title} . "\" \n"; + my $subject = "[REVIEW] Topic $event_name \"" . $topic->{title} . "\""; my $body = "Topic \"$topic->{title}\"\n" . "Author: $topic->{author}\n" . |
From: <si...@us...> - 2007-06-29 06:54:29
|
User: sits Date: 07/06/28 23:54:28 Modified: . CHANGELOG lib/Codestriker/TopicListeners Email.pm Log: Add the MIME-Version header to emails to ensure RFC2045 complaince. Index: CHANGELOG =================================================================== RCS file: /cvsroot/codestriker/codestriker/CHANGELOG,v retrieving revision 1.204 retrieving revision 1.205 diff -u -r1.204 -r1.205 --- CHANGELOG 29 Jun 2007 05:38:30 -0000 1.204 +++ CHANGELOG 29 Jun 2007 06:54:27 -0000 1.205 @@ -15,6 +15,10 @@ * Improved patch file parsing for handling binary file changes. +* Ensure emails sent contain the header "MIME-Version: 1.0" for + RFC2045 conformance. Submitted by Vadim Zeitlin + <va...@us...>. + Version 1.9.3 * The project list screen now displays for each project, the total Index: Email.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/TopicListeners/Email.pm,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- Email.pm 15 Jun 2006 06:40:54 -0000 1.21 +++ Email.pm 29 Jun 2007 06:54:28 -0000 1.22 @@ -497,6 +497,7 @@ # unicode characters. $smtp->datasend("Content-Type: text/plain; charset=\"utf-8\"\n"); $smtp->datasend("Content-Transfer-Encoding: quoted-printable\n"); + $smtp->datasend("MIME-Version: 1.0\n"); # Insert a blank line for the body. $smtp->datasend("\n"); |
From: <si...@us...> - 2007-11-30 20:47:27
|
User: sits Date: 07/11/30 12:46:55 Modified: lib/Codestriker/TopicListeners Email.pm Log: Fixed a typo which prevented error messages being shown in some situations. Index: Email.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/TopicListeners/Email.pm,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- Email.pm 29 Jun 2007 06:54:28 -0000 1.22 +++ Email.pm 30 Nov 2007 20:46:54 -0000 1.23 @@ -506,10 +506,10 @@ # characters. $smtp->datasend(encode_qp(encode("UTF-8", $body))); $smtp->dataend(); - $smtp->ok() || return "Couldn't send email $!, " . smtp->message(); + $smtp->ok() || return "Couldn't send email $!, " . $smtp->message(); $smtp->quit(); - $smtp->ok() || return "Couldn't send email $!, " . smtp->message(); + $smtp->ok() || return "Couldn't send email $!, " . $smtp->message(); return ''; } |
From: <si...@us...> - 2008-01-09 04:08:54
|
User: sits Date: 08/01/08 20:08:53 Modified: . CHANGELOG lib Codestriker.pm lib/Codestriker/TopicListeners Email.pm Log: Make sure the email subject field properly encodes underscores and question marks. Submitted by jo...@us.... Index: CHANGELOG =================================================================== RCS file: /cvsroot/codestriker/codestriker/CHANGELOG,v retrieving revision 1.218 retrieving revision 1.219 diff -u -r1.218 -r1.219 --- CHANGELOG 24 Oct 2007 10:09:36 -0000 1.218 +++ CHANGELOG 9 Jan 2008 04:08:52 -0000 1.219 @@ -6,6 +6,9 @@ * Allow the ability to specify just a filename (for the module field) and a revision number (for the start or end tag) to create a review for a specific version of a file in a subversion repository. + +* Make sure the email subject field properly encodes underscores and + question marks. Submitted by jo...@us.... Version 1.9.4 Index: Codestriker.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker.pm,v retrieving revision 1.105 retrieving revision 1.106 diff -u -r1.105 -r1.106 --- Codestriker.pm 2 Oct 2007 04:38:21 -0000 1.105 +++ Codestriker.pm 9 Jan 2008 04:08:52 -0000 1.106 @@ -36,7 +36,7 @@ ); # Version of Codestriker. -$Codestriker::VERSION = "1.9.4"; +$Codestriker::VERSION = "1.9.5"; # Default title to display on each Codestriker screen. $Codestriker::title = "Codestriker $Codestriker::VERSION"; Index: Email.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/TopicListeners/Email.pm,v retrieving revision 1.23 retrieving revision 1.24 diff -u -r1.23 -r1.24 --- Email.pm 30 Nov 2007 20:46:54 -0000 1.23 +++ Email.pm 9 Jan 2008 04:08:53 -0000 1.24 @@ -489,9 +489,13 @@ # Make sure the subject is appropriately encoded to handle UTF-8 # characters. - $smtp->datasend('Subject: =?UTF-8?Q?' . - encode_qp(encode("UTF-8", $subject), '') . - '?=' . "\n"); + $subject = encode_qp(encode("UTF-8", $subject), ""); + + # RFC 2047 fixup that is a documented deviation from quoted-printable + $subject =~ s/\?/=3F/g; + $subject =~ s/_/=5F/g; + $subject =~ s/ /_/g; + $smtp->datasend("Subject: =?UTF-8?Q?${subject}?=\n"); # Set the content type to be text/plain with UTF8 encoding, to handle # unicode characters. |
From: <si...@us...> - 2008-01-09 06:16:07
|
User: sits Date: 08/01/08 22:16:06 Modified: . CHANGELOG bin install.pl lib/Codestriker/TopicListeners Email.pm Log: * Only require Authen::SASL as a pre-requisite if SMTP authentication is needed. For some deployments, installing Authen::SASL can be inconvenient. Index: CHANGELOG =================================================================== RCS file: /cvsroot/codestriker/codestriker/CHANGELOG,v retrieving revision 1.219 retrieving revision 1.220 diff -u -r1.219 -r1.220 --- CHANGELOG 9 Jan 2008 04:08:52 -0000 1.219 +++ CHANGELOG 9 Jan 2008 06:16:05 -0000 1.220 @@ -9,6 +9,10 @@ * Make sure the email subject field properly encodes underscores and question marks. Submitted by jo...@us.... + +* Only require Authen::SASL as a pre-requisite if SMTP authentication + is needed. For some deployments, installing Authen::SASL can be + inconvenient. Version 1.9.4 Index: install.pl =================================================================== RCS file: /cvsroot/codestriker/codestriker/bin/install.pl,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- install.pl 10 Aug 2006 23:56:56 -0000 1.12 +++ install.pl 9 Jan 2008 06:16:05 -0000 1.13 @@ -109,11 +109,6 @@ name => 'Encode::Unicode', version => '0', optional => 0 - }, - { - name => 'Authen::SASL', - version => '0', - optional => 0 } ]; @@ -126,6 +121,16 @@ push @{$modules}, $database->get_module_dependencies(); }; +# Check if Authen::SASL is required. +if (defined $Codestriker::mailuser && $Codestriker::mailuser ne "" && + defined $Codestriker::mailpasswd) { + # The next statement is a no-op, but it stops perl from issuing + # a warning about mailpasswd only being used once. Unlike the + # username, the password could be empty. + $Codestriker::mailpasswd = $Codestriker::mailpasswd; + push @{$modules}, { name => 'Authen::SASL', version => '0' }; +} + # Check for various character encoding modules that are required. if (defined $Codestriker::topic_text_encoding) { if ($Codestriker::topic_text_encoding =~ /euc\-cn|gb2312|hz|gbk/) { Index: Email.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/TopicListeners/Email.pm,v retrieving revision 1.24 retrieving revision 1.25 diff -u -r1.24 -r1.25 --- Email.pm 9 Jan 2008 04:08:53 -0000 1.24 +++ Email.pm 9 Jan 2008 06:16:05 -0000 1.25 @@ -17,7 +17,6 @@ use MIME::Base64; use Sys::Hostname; use Encode qw(encode); -use Authen::SASL; use Codestriker::TopicListeners::TopicListener; @@ -445,7 +444,10 @@ defined $smtp || return "Unable to connect to mail server: $!"; # Perform SMTP authentication if required. - if (defined $Codestriker::mailuser && defined $Codestriker::mailpasswd) { + if (defined $Codestriker::mailuser && $Codestriker::mailuser ne "" && + defined $Codestriker::mailpasswd) { + eval 'use Authen::SASL'; + die "Unable to load Authen::SASL module: $@\n" if $@; $smtp->auth($Codestriker::mailuser, $Codestriker::mailpasswd); } |
From: <si...@us...> - 2008-08-04 11:22:58
|
User: sits Date: 08/08/04 04:22:57 Modified: . CHANGELOG lib/Codestriker/Action ViewTopic.pm template/en/default viewtopic.html.tmpl lib/Codestriker/TopicListeners Email.pm Log: * Show total added/removed line count after table of contents on view topic screen. Also show same line counts on create topic email. Index: CHANGELOG =================================================================== RCS file: /cvsroot/codestriker/codestriker/CHANGELOG,v retrieving revision 1.251 retrieving revision 1.252 diff -u -r1.251 -r1.252 --- CHANGELOG 4 Aug 2008 10:33:34 -0000 1.251 +++ CHANGELOG 4 Aug 2008 11:22:55 -0000 1.252 @@ -36,7 +36,10 @@ * Fixed the parsing of Subversion diffs which contained modifications within property sets. Also fixed case where file in diff is empty. - Reported by cle...@us.... + Reported by cle...@us.... + +* Show total added/removed line count after table of contents on view + topic screen. Also show same line counts on create topic email. Version 1.9.5 Index: ViewTopic.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Action/ViewTopic.pm,v retrieving revision 1.63 retrieving revision 1.64 diff -u -r1.63 -r1.64 --- ViewTopic.pm 24 Jun 2008 02:56:15 -0000 1.63 +++ ViewTopic.pm 4 Aug 2008 11:22:55 -0000 1.64 @@ -188,11 +188,17 @@ # Setup the filetable template variable for displaying the table of # contents. my @filetable = (); + my $total_old_changes = 0; + my $total_new_changes = 0; for (my $i = 0; $i <= $#filenames; $i++) { my $filerow = {}; my $filename = $filenames[$i]; $filerow->{filename} = $filename; $filerow->{numchanges} = $numchanges[$i]; + if (defined $numchanges[$i] && $numchanges[$i] =~ /^\+(\d+),\-(\d+)$/o) { + $total_old_changes += $2; + $total_new_changes += $1; + } $filerow->{href_filename_url} = $url_builder->view_url($topicid, -1, $mode, $i) . "#" . $filename; @@ -212,6 +218,8 @@ push @filetable, $filerow; } $vars->{'filetable'} = \@filetable; + $vars->{'total_old_changes'} = $total_old_changes; + $vars->{'total_new_changes'} = $total_new_changes; # Determine which deltas are to be retrieved. my @deltas = (); Index: viewtopic.html.tmpl =================================================================== RCS file: /cvsroot/codestriker/codestriker/template/en/default/viewtopic.html.tmpl,v retrieving revision 1.52 retrieving revision 1.53 diff -u -r1.52 -r1.53 --- viewtopic.html.tmpl 27 Jun 2008 00:19:10 -0000 1.52 +++ viewtopic.html.tmpl 4 Aug 2008 11:22:56 -0000 1.53 @@ -78,6 +78,9 @@ </td> </tr> [% END %] + <tr> + <td class="pf" colspan="3" align="right"><font size="-1">{+[% total_new_changes %],-[% total_old_changes %]}</font></td> + </tr> </table> </table> Index: Email.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/TopicListeners/Email.pm,v retrieving revision 1.26 retrieving revision 1.27 diff -u -r1.26 -r1.27 --- Email.pm 14 Mar 2008 01:30:53 -0000 1.26 +++ Email.pm 4 Aug 2008 11:22:56 -0000 1.27 @@ -47,12 +47,13 @@ my $bcc = $topic->{author}; # Send out the list of files changes when creating a new topic. - my (@filenames, @revisions, @offsets, @binary); + my (@filenames, @revisions, @offsets, @binary, @numchanges); $topic->get_filestable( \@filenames, \@revisions, \@offsets, - \@binary); + \@binary, + \@numchanges); # Determine if any topics are obsoleted by this topic. my $query = new CGI; @@ -74,8 +75,22 @@ "$topic->{description}\n\n" . $obsolete_text . "$EMAIL_HR\n\n" . - "The topic was created with the following files:\n\n" . - join("\n",@filenames); + "The topic was created with the following files:\n\n"; + + my $total_old_changes = 0; + my $total_new_changes = 0; + for (my $i = 0; $i <= $#filenames; $i++) { + $notes .= $filenames[$i]; + if (defined $numchanges[$i]) { + $notes .= " {" . $numchanges[$i] . "}"; + if ($numchanges[$i] =~ /^\+(\d+),\-(\d+)$/o) { + $total_old_changes += $2; + $total_new_changes += $1; + } + } + $notes .= "\n"; + } + $notes .= "\nTotal line count: {+" . $total_new_changes . ",-" . $total_old_changes . "}\n"; return $self->_send_topic_email($topic, 1, "Created", 1, $from, $to, $cc, $bcc, $notes); |
From: <si...@us...> - 2008-08-06 01:51:44
|
User: sits Date: 08/08/05 18:51:42 Modified: lib/Codestriker/TopicListeners Email.pm Log: Missed this reference to the old view_url_extended method. Index: Email.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/TopicListeners/Email.pm,v retrieving revision 1.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- Email.pm 5 Aug 2008 10:35:34 -0000 1.28 +++ Email.pm 6 Aug 2008 01:51:42 -0000 1.29 @@ -432,9 +432,7 @@ my $query = new CGI; my $url_builder = Codestriker::Http::UrlBuilder->new($query); - my $topic_url = $url_builder->view_url_extended($topic->{topicid}, -1, - "", "", "", - $query->url(), 0); + my $topic_url = $url_builder->view_url(topicid => $topic); my $subject = "[REVIEW] Topic $event_name \"" . $topic->{title} . "\""; my $body = |
From: <si...@us...> - 2008-08-07 06:48:13
|
User: sits Date: 08/08/06 23:48:12 Modified: . CHANGELOG lib/Codestriker/TopicListeners Email.pm Log: * In the create topic email, show the URL to the associated bug records if $bugtracker is defined in codestriker.conf rather than just the bug IDs. Index: CHANGELOG =================================================================== RCS file: /cvsroot/codestriker/codestriker/CHANGELOG,v retrieving revision 1.254 retrieving revision 1.255 diff -u -r1.254 -r1.255 --- CHANGELOG 6 Aug 2008 05:24:42 -0000 1.254 +++ CHANGELOG 7 Aug 2008 06:48:12 -0000 1.255 @@ -48,7 +48,11 @@ * Use pegged revisions instead of operative revisions when retrieving files from Subversion to handle situations where files have been moved within the repository since the review was created. Fixed by - cle...@us.... + cle...@us.... + +* In the create topic email, show the URL to the associated bug records + if $bugtracker is defined in codestriker.conf rather than just the bug + IDs. Version 1.9.5 Index: Email.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/TopicListeners/Email.pm,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- Email.pm 6 Aug 2008 01:51:42 -0000 1.29 +++ Email.pm 7 Aug 2008 06:48:12 -0000 1.30 @@ -432,13 +432,33 @@ my $query = new CGI; my $url_builder = Codestriker::Http::UrlBuilder->new($query); - my $topic_url = $url_builder->view_url(topicid => $topic); + my $topic_url = $url_builder->view_url(topicid => $topic->{topicid}); my $subject = "[REVIEW] Topic $event_name \"" . $topic->{title} . "\""; + + # Set the bug ID line to report the actual URL links if possible. + my $bug_id_line = ""; + if (defined $topic->{bug_ids} && $topic->{bug_ids} ne "") { + $bug_id_line = "Bug IDs: "; + if (defined $Codestriker::bugtracker) { + my @bug_id_array = split /[\s,]+/, $topic->{bug_ids}; + for (my $i = 0; $i <= $#bug_id_array; $i++) { + $bug_id_line .= $Codestriker::bugtracker . $bug_id_array[$i]; + if ($i < $#bug_id_array) { + $bug_id_line .= "\n "; + } + } + $bug_id_line .= "\n"; + } + else { + $bug_id_line .= $topic->{bug_ids} . "\n"; + } + } + my $body = "Topic \"$topic->{title}\"\n" . "Author: $topic->{author}\n" . - (($topic->{bug_ids} ne "") ? "Bug IDs: $topic->{bug_ids}\n" : "") . + $bug_id_line . "Reviewers: $topic->{reviewers}\n" . (($include_url) ? "URL: $topic_url\n\n" : "") . "$EMAIL_HR\n" . |
From: <si...@us...> - 2008-08-15 00:14:09
|
User: sits Date: 08/08/14 17:14:08 Modified: lib/Codestriker/TopicListeners Email.pm Log: Protect case where a comment is being made on a line where we can't retrieve the delta for it. Index: Email.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/TopicListeners/Email.pm,v retrieving revision 1.31 retrieving revision 1.32 diff -u -r1.31 -r1.32 --- Email.pm 10 Aug 2008 12:18:43 -0000 1.31 +++ Email.pm 15 Aug 2008 00:14:07 -0000 1.32 @@ -387,19 +387,22 @@ $comment->{filenumber}, $comment->{fileline}, $comment->{filenew}); - my @text = (); - my $offset = $delta->retrieve_context($comment->{fileline}, $comment->{filenew}, - $email_context, \@text); - for (my $i = 0; $i <= $#text; $i++) { - if ($i == $offset) { - $text[$i] = "* " . $text[$i]; - } else { - $text[$i] = " " . $text[$i]; + + if (defined $delta) { + my @text = (); + my $offset = $delta->retrieve_context($comment->{fileline}, $comment->{filenew}, + $email_context, \@text); + for (my $i = 0; $i <= $#text; $i++) { + if ($i == $offset) { + $text[$i] = "* " . $text[$i]; + } else { + $text[$i] = " " . $text[$i]; + } } + $body .= join "\n", @text; + $body .= "\n\n"; + $body .= "$EMAIL_HR"; } - $body .= join "\n", @text; - $body .= "\n\n"; - $body .= "$EMAIL_HR"; } $body .= "\n\n"; |
From: <si...@us...> - 2008-08-17 22:25:38
|
User: sits Date: 08/08/17 15:25:37 Modified: lib/Codestriker/Action Search.pm SubmitNewTopic.pm CreateTopic.pm lib/Codestriker/Http UrlBuilder.pm lib/Codestriker/Http/Method AddTopicMethod.pm ViewTopicTextMethod.pm template/en/default createtopic.html.tmpl lib/Codestriker/TopicListeners Email.pm Log: More tweaks to get the system going in the new system. Still more work to be done. Index: Search.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Action/Search.pm,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- Search.pm 19 Jun 2004 23:56:34 -0000 1.6 +++ Search.pm 17 Aug 2008 22:25:36 -0000 1.7 @@ -12,6 +12,7 @@ use strict; use Codestriker::Model::Project; use Codestriker::DB::Database; +use Codestriker::Http::UrlBuilder; # Create an appropriate form for topic searching. sub process($$$) { @@ -71,6 +72,9 @@ $vars->{'enable_body'} = 0; $vars->{'enable_filename'} = 1; } + + # Target URL to divert the post to. + $vars->{'submit_search_url'} = $url_builder->submit_search_url(); my $template = Codestriker::Http::Template->new("search"); $template->process($vars); Index: SubmitNewTopic.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Action/SubmitNewTopic.pm,v retrieving revision 1.35 retrieving revision 1.36 diff -u -r1.35 -r1.36 --- SubmitNewTopic.pm 10 Aug 2008 12:18:43 -0000 1.35 +++ SubmitNewTopic.pm 17 Aug 2008 22:25:36 -0000 1.36 @@ -348,7 +348,7 @@ $feedback = Codestriker::TopicListeners::Manager::topic_create($topic); # Obtain a URL builder object and determine the URL to the topic. - my $topic_url = $url_builder->view_url(topicid => $topicid, projectid => $topic->{project_id}); + my $topic_url = $url_builder->view_url(topicid => $topicid, projectid => $projectid); # Indicate to the user that the topic has been created and an email has # been sent. Index: CreateTopic.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Action/CreateTopic.pm,v retrieving revision 1.31 retrieving revision 1.32 diff -u -r1.31 -r1.32 --- CreateTopic.pm 10 Aug 2008 12:18:43 -0000 1.31 +++ CreateTopic.pm 17 Aug 2008 22:25:36 -0000 1.32 @@ -40,6 +40,9 @@ # url. $vars->{'doc_url'} = $url_builder->doc_url(); $vars->{'search_url'} = $url_builder->search_url(); + + # TODO: fix this once create topic is only done within context of a project. + $vars->{'add_topic_url'} = $url_builder->add_topic_url(projectid => 0); # Retrieve the email, reviewers, cc, repository and projectid from # the cookie. Index: UrlBuilder.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Http/UrlBuilder.pm,v retrieving revision 1.41 retrieving revision 1.42 diff -u -r1.41 -r1.42 --- UrlBuilder.pm 15 Aug 2008 06:30:39 -0000 1.41 +++ UrlBuilder.pm 17 Aug 2008 22:25:36 -0000 1.42 @@ -46,6 +46,7 @@ use Codestriker::Http::Method::EditProjectMethod; use Codestriker::Http::Method::ListProjectsMethod; use Codestriker::Http::Method::SearchTopicsMethod; +use Codestriker::Http::Method::SubmitSearchTopicsMethod; use Codestriker::Http::Method::StaticResourcesMethod; use Codestriker::Http::Method::ViewMetricsMethod; @@ -114,6 +115,12 @@ return Codestriker::Http::Method::CreateTopicMethod->new($self->{query})->url($obsoletes); } +# Create the URL for adding a topic to a project. +sub add_topic_url { + my ($self, %args) = @_; + return Codestriker::Http::Method::AddTopicMethod->new($self->{query})->url(%args); +} + # Create the URL for editing a topic. sub edit_url { my ($self, %args) = @_; @@ -132,6 +139,12 @@ return Codestriker::Http::Method::SearchTopicsMethod->new($self->{query})->url(); } +# The submit search URL. +sub submit_search_url { + my ($self) = @_; + return Codestriker::Http::Method::SubmitSearchTopicsMethod->new($self->{query})->url(); +} + # Create the URL for the documentation page. sub doc_url { my ($self) = @_; Index: AddTopicMethod.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Http/Method/AddTopicMethod.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- AddTopicMethod.pm 11 Aug 2008 22:32:39 -0000 1.1 +++ AddTopicMethod.pm 17 Aug 2008 22:25:37 -0000 1.2 @@ -47,7 +47,7 @@ sub execute { my ($self, $http_input, $http_output) = @_; - Codestriker::Action::CreateTopic->process($http_input, $http_output); + Codestriker::Action::SubmitNewTopic->process($http_input, $http_output); } 1; Index: ViewTopicTextMethod.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Http/Method/ViewTopicTextMethod.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ViewTopicTextMethod.pm 10 Aug 2008 12:18:42 -0000 1.1 +++ ViewTopicTextMethod.pm 17 Aug 2008 22:25:37 -0000 1.2 @@ -10,6 +10,7 @@ package Codestriker::Http::Method::ViewTopicTextMethod; use strict; +use Carp; use Codestriker::Http::Method; @Codestriker::Http::Method::ViewTopicTextMethod::ISA = @@ -19,8 +20,8 @@ sub url() { my ($self, %args) = @_; - die "Parameter topicid missing" unless defined $args{topicid}; - die "Parameter projectid missing" unless defined $args{projectid}; + confess "Parameter topicid missing" unless defined $args{topicid}; + confess "Parameter projectid missing" unless defined $args{projectid}; if ($self->{cgi_style}) { return $self->{url_prefix} . "?action=view&topic=$args{topicid}" . Index: createtopic.html.tmpl =================================================================== RCS file: /cvsroot/codestriker/codestriker/template/en/default/createtopic.html.tmpl,v retrieving revision 1.54 retrieving revision 1.55 diff -u -r1.54 -r1.55 --- createtopic.html.tmpl 24 Jun 2008 03:26:50 -0000 1.54 +++ createtopic.html.tmpl 17 Aug 2008 22:25:37 -0000 1.55 @@ -20,8 +20,8 @@ <p> [% END %] -<FORM METHOD="post" ENCTYPE="multipart/form-data" ACCEPT-CHARSET="UTF-8"> -<INPUT TYPE="hidden" NAME="action" VALUE="submit_new_topic" /> +<FORM METHOD="post" ENCTYPE="multipart/form-data" ACCEPT-CHARSET="UTF-8" action="[% add_topic_url %]"> +<!-- <INPUT TYPE="hidden" NAME="action" VALUE="submit_new_topic" /> --> <INPUT TYPE="hidden" NAME="obsoletes" VALUE="[% obsoletes %]" /> [%# The topic title input field #%] Index: Email.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/TopicListeners/Email.pm,v retrieving revision 1.32 retrieving revision 1.33 diff -u -r1.32 -r1.33 --- Email.pm 15 Aug 2008 00:14:07 -0000 1.32 +++ Email.pm 17 Aug 2008 22:25:37 -0000 1.33 @@ -438,7 +438,8 @@ my $query = new CGI; my $url_builder = Codestriker::Http::UrlBuilder->new($query); - my $topic_url = $url_builder->view_url(topicid => $topic->{topicid}); + my $topic_url = $url_builder->view_url(topicid => $topic->{topicid}, + projectid => $topic->{project_id}); my $subject = "[REVIEW] Topic $event_name \"" . $topic->{title} . "\""; |
From: <si...@us...> - 2008-08-18 11:11:38
|
User: sits Date: 08/08/18 04:11:36 Modified: lib/Codestriker/Http Dispatcher.pm Response.pm UrlBuilder.pm lib/Codestriker/Http/Method AddCommentMethod.pm lib/Codestriker/Model Comment.pm lib/Codestriker/Action ViewTopicComments.pm t/Http/Method submit-search-topics.t add-comment.t lib/Codestriker/TopicListeners Email.pm Added: lib/Codestriker/Http/Method CreateCommentMethod.pm t/Http/Method create-comment.t Log: Adding comments now works. Have to work on remaining submit actions. Index: Dispatcher.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Http/Dispatcher.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Dispatcher.pm 15 Aug 2008 06:10:40 -0000 1.2 +++ Dispatcher.pm 18 Aug 2008 11:11:28 -0000 1.3 @@ -21,6 +21,7 @@ use Codestriker::Http::Method::ViewTopicMetricsMethod; use Codestriker::Http::Method::ViewTopicPropertiesMethod; use Codestriker::Http::Method::AddCommentMethod; +use Codestriker::Http::Method::CreateCommentMethod; use Codestriker::Http::Method::AddTopicMethod; use Codestriker::Http::Method::CreateProjectMethod; use Codestriker::Http::Method::DownloadMetricsMethod; @@ -49,6 +50,7 @@ push @methods, Codestriker::Http::Method::ViewTopicMetricsMethod->new($query); push @methods, Codestriker::Http::Method::ViewTopicPropertiesMethod->new($query); push @methods, $self->{list_topics_method}; + push @methods, Codestriker::Http::Method::CreateCommentMethod->new($query); push @methods, Codestriker::Http::Method::AddCommentMethod->new($query); push @methods, Codestriker::Http::Method::AddTopicMethod->new($query); push @methods, Codestriker::Http::Method::CreateProjectMethod->new($query); Index: Response.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Http/Response.pm,v retrieving revision 1.47 retrieving revision 1.48 diff -u -r1.47 -r1.48 --- Response.pm 1 Jul 2008 10:06:46 -0000 1.47 +++ Response.pm 18 Aug 2008 11:11:28 -0000 1.48 @@ -75,14 +75,14 @@ # $tabwidth parameters. my %cookie = (); - if (!exists $params{email} || $params{email} eq "") { + if (! defined $params{email} || $params{email} eq "") { $email = Codestriker::Http::Cookie->get_property($query, 'email'); } else { $email = $params{email}; } - if (!exists $params{reviewers} || $params{reviewers} eq "") { + if (! defined $params{reviewers} || $params{reviewers} eq "") { $reviewers = Codestriker::Http::Cookie->get_property($query, 'reviewers'); } @@ -90,14 +90,14 @@ $reviewers = $params{reviewers}; } - if (!exists $params{cc} || $params{cc} eq "") { + if (! defined $params{cc} || $params{cc} eq "") { $cc = Codestriker::Http::Cookie->get_property($query, 'cc'); } else { $cc = $params{cc}; } - if (!exists $params{tabwidth} || $params{tabwidth} eq "") { + if (! defined $params{tabwidth} || $params{tabwidth} eq "") { $tabwidth = Codestriker::Http::Cookie->get_property($query, 'tabwidth'); } @@ -105,14 +105,14 @@ $tabwidth = $params{tabwidth}; } - if (!exists $params{mode} || $params{mode} eq "") { + if (! defined $params{mode} || $params{mode} eq "") { $mode = Codestriker::Http::Cookie->get_property($query, 'mode'); } else { $mode = $params{mode}; } - if (!exists $params{repository} || $params{repository} eq "") { + if (! defined $params{repository} || $params{repository} eq "") { $repository = Codestriker::Http::Cookie->get_property($query, 'repository'); } @@ -120,7 +120,7 @@ $repository = $params{repository}; } - if (!exists $params{projectid} || $params{projectid} eq "") { + if (! defined $params{projectid} || $params{projectid} eq "") { $projectid = Codestriker::Http::Cookie->get_property($query, 'projectid'); } @@ -128,7 +128,7 @@ $projectid = $params{projectid}; } - if (!exists $params{topicsort} || $params{topicsort} eq "") { + if (! defined $params{topicsort} || $params{topicsort} eq "") { $topicsort = Codestriker::Http::Cookie->get_property($query, 'topicsort'); } @@ -289,7 +289,7 @@ # output an error message. This is usually due to a # misconfiguration. print " if ('function' != typeof window.add_comment_html) {\n"; - print " alert('Oh oh... can\\'t find codestriker.js, please check your apache config.');\n"; + print " alert('Oh oh... can\\'t find codestriker.js, please check your web-server config.');\n"; print " }\n"; print "</script>\n"; Index: UrlBuilder.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Http/UrlBuilder.pm,v retrieving revision 1.42 retrieving revision 1.43 diff -u -r1.42 -r1.43 --- UrlBuilder.pm 17 Aug 2008 22:25:36 -0000 1.42 +++ UrlBuilder.pm 18 Aug 2008 11:11:28 -0000 1.43 @@ -124,7 +124,7 @@ # Create the URL for editing a topic. sub edit_url { my ($self, %args) = @_; - return Codestriker::Http::Method::AddCommentMethod->new($self->{query})->url(%args); + return Codestriker::Http::Method::CreateCommentMethod->new($self->{query})->url(%args); } # Create the URL for viewing a new file. Index: AddCommentMethod.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Http/Method/AddCommentMethod.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- AddCommentMethod.pm 10 Aug 2008 12:18:42 -0000 1.1 +++ AddCommentMethod.pm 18 Aug 2008 11:11:29 -0000 1.2 @@ -5,7 +5,7 @@ # This program is free software; you can redistribute it and modify it under # the terms of the GPL. -# Method for adding a comment to a topic. +# Method for submitting a searching topic form. package Codestriker::Http::Method::AddCommentMethod; @@ -16,20 +16,16 @@ # Generate a URL for this method. sub url() { - my ($self, %args) = @_; + my ($self, %args) = @_; - die "Parameter topicid missing" unless defined $args{topicid}; - die "Parameter projectid missing" unless defined $args{projectid}; - if ($self->{cgi_style}) { - return $self->{url_prefix} . "?action=edit&fn=$args{filenumber}&line=$args{line}&new=$args{new}&topic=$args{topicid}" . - (defined $args{anchor} ? "&a=$args{anchor}" : "") . - (defined $args{context} ? "&context=$args{context}" : ""); + return $self->{url_prefix} . "?action=submit_comment"; } else { + die "Parameter topicid missing" unless defined $args{topicid}; + die "Parameter projectid missing" unless defined $args{projectid}; + return $self->{url_prefix} . "/project/$args{projectid}/topic/$args{topicid}/comment/" . - "$args{filenumber}|$args{line}|$args{new}/add" . - (defined $args{anchor} ? "/anchor/$args{anchor}" : "") . - (defined $args{context} ? "/context/$args{context}" : ""); + "$args{filenumber}|$args{line}|$args{new}/add"; } } @@ -38,7 +34,7 @@ my $action = $http_input->{query}->param('action'); my $path_info = $http_input->{query}->path_info(); - if ($self->{cgi_style} && defined $action && $action eq "edit") { + if ($self->{cgi_style} && defined $action && $action eq "submit_comment") { $http_input->extract_cgi_parameters(); return 1; } elsif ($path_info =~ m{^$self->{url_prefix}/project/\d+/topic/\d+/comment/(\d+)\|(\d+)\|(\d+)/add}) { @@ -57,7 +53,7 @@ sub execute { my ($self, $http_input, $http_output) = @_; - Codestriker::Action::EditComment->process($http_input, $http_output); + Codestriker::Action::SubmitNewComment->process($http_input, $http_output); } 1; Index: CreateCommentMethod.pm =================================================================== RCS file: CreateCommentMethod.pm diff -N CreateCommentMethod.pm --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ CreateCommentMethod.pm 18 Aug 2008 11:11:29 -0000 1.1 @@ -0,0 +1,64 @@ +############################################################################### +# Codestriker: Copyright (c) 2001, 2002 David Sitsky. All rights reserved. +# si...@us... +# +# This program is free software; you can redistribute it and modify it under +# the terms of the GPL. + +# Method for adding a comment to a topic. + +package Codestriker::Http::Method::CreateCommentMethod; + +use strict; +use Carp; +use Codestriker::Http::Method; + +@Codestriker::Http::Method::CreateCommentMethod::ISA = ("Codestriker::Http::Method"); + +# Generate a URL for this method. +sub url() { + my ($self, %args) = @_; + + confess "Parameter topicid missing" unless defined $args{topicid}; + confess "Parameter projectid missing" unless defined $args{projectid}; + + if ($self->{cgi_style}) { + return $self->{url_prefix} . "?action=edit&fn=$args{filenumber}&line=$args{line}&new=$args{new}&topic=$args{topicid}" . + (defined $args{anchor} ? "&a=$args{anchor}" : "") . + (defined $args{context} ? "&context=$args{context}" : ""); + } else { + return $self->{url_prefix} . "/project/$args{projectid}/topic/$args{topicid}/comment/" . + "$args{filenumber}|$args{line}|$args{new}/create" . + (defined $args{anchor} ? "/anchor/$args{anchor}" : "") . + (defined $args{context} ? "/context/$args{context}" : ""); + } +} + +sub extract_parameters { + my ($self, $http_input) = @_; + + my $action = $http_input->{query}->param('action'); + my $path_info = $http_input->{query}->path_info(); + if ($self->{cgi_style} && defined $action && $action eq "edit") { + $http_input->extract_cgi_parameters(); + return 1; + } elsif ($path_info =~ m{^$self->{url_prefix}/project/\d+/topic/\d+/comment/(\d+)\|(\d+)\|(\d+)/create}) { + $http_input->{fn} = $1; + $http_input->{line} = $2; + $http_input->{new} = $3; + $self->_extract_nice_parameters($http_input, + project => 'projectid', topic => 'topicid', + anchor => 'anchor', context => 'context'); + return 1; + } else { + return 0; + } +} + +sub execute { + my ($self, $http_input, $http_output) = @_; + + Codestriker::Action::EditComment->process($http_input, $http_output); +} + +1; Index: Comment.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Model/Comment.pm,v retrieving revision 1.23 retrieving revision 1.24 diff -u -r1.23 -r1.24 --- Comment.pm 9 Jun 2006 03:20:02 -0000 1.23 +++ Comment.pm 18 Aug 2008 11:11:29 -0000 1.24 @@ -368,7 +368,8 @@ my $filteredByAuthor = Codestriker->filter_email($filtered_by_author); - if ($filteredByAuthor ne "" && $filteredAuthor ne $filteredByAuthor) { + if (defined $filteredByAuthor && $filteredByAuthor ne "" && + $filteredAuthor ne $filteredByAuthor) { # Don't keep this record. $keep_comment = 0; } Index: ViewTopicComments.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Action/ViewTopicComments.pm,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- ViewTopicComments.pm 10 Aug 2008 12:18:43 -0000 1.19 +++ ViewTopicComments.pm 18 Aug 2008 11:11:29 -0000 1.20 @@ -112,7 +112,8 @@ $last_filenumber = $comment->{filenumber}; } - if ($show_context ne "" && $show_context > 0 && + if (defined $show_context && $show_context ne "" && + $show_context > 0 && $comment->{filenumber} != -1 && $comment->{fileline} != -1) { my $delta = Codestriker::Model::Delta->get_delta($topicid, $comment->{filenumber}, Index: submit-search-topics.t =================================================================== RCS file: /cvsroot/codestriker/codestriker/t/Http/Method/submit-search-topics.t,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- submit-search-topics.t 15 Aug 2008 06:10:42 -0000 1.1 +++ submit-search-topics.t 18 Aug 2008 11:11:36 -0000 1.2 @@ -6,7 +6,7 @@ use lib '../../../lib'; use Test::MockObject; use Codestriker; -use Codestriker::Http::Method::SearchTopicsMethod; +use Codestriker::Http::Method::SubmitSearchTopicsMethod; # Create a CGI mock object for these tests. my $mock_query = Test::MockObject->new(); Index: add-comment.t =================================================================== RCS file: /cvsroot/codestriker/codestriker/t/Http/Method/add-comment.t,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- add-comment.t 10 Aug 2008 12:18:42 -0000 1.1 +++ add-comment.t 18 Aug 2008 11:11:36 -0000 1.2 @@ -1,7 +1,7 @@ # Tests for the AddComment method. use strict; -use Test::More tests => 8; +use Test::More tests => 7; use lib '../../../lib'; use Test::MockObject; @@ -19,12 +19,12 @@ is($url_cgi->url(filenumber => 3, line => 55, new => 0, topicid => 1234, projectid => 10, context => 3), - $mock_query->url() . '?action=edit&fn=3&line=55&new=0&topic=1234&context=3', + $mock_query->url() . '?action=submit_comment', "Add comment URL CGI syntax"); is($url_nice->url(filenumber => 3, line => 55, new => 0, topicid => 1234, projectid => 10, context => 3), - $mock_query->url() . '/project/10/topic/1234/comment/3|55|0/add/context/3', + $mock_query->url() . '/project/10/topic/1234/comment/3|55|0/add', "Add comment URL nice syntax"); # Check that the parameters extracted correctly. @@ -32,7 +32,7 @@ $mock_http_input->{query} = $mock_query; $mock_query->mock('path_info', sub { - return $mock_query->url() . '/project/10/topic/1234/comment/3|55|0/add/context/3'; + return $mock_query->url() . '/project/10/topic/1234/comment/3|55|0/add'; }); $mock_query->mock('param', sub { return undef; }); $url_nice->extract_parameters($mock_http_input); @@ -41,6 +41,5 @@ is ($mock_http_input->{fn}, "3", "fn nice URL parameter extraction"); is ($mock_http_input->{line}, "55", "line nice URL parameter extraction"); is ($mock_http_input->{new}, "0", "new nice URL parameter extraction"); -is ($mock_http_input->{context}, "3", "context nice URL parameter extraction"); \ No newline at end of file Index: create-comment.t =================================================================== RCS file: create-comment.t diff -N create-comment.t --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ create-comment.t 18 Aug 2008 11:11:36 -0000 1.1 @@ -0,0 +1,46 @@ +# Tests for the CreateComment method. + +use strict; +use Test::More tests => 8; + +use lib '../../../lib'; +use Test::MockObject; +use Codestriker; +use Codestriker::Http::Method::CreateCommentMethod; + +# Create a CGI mock object for these tests. +my $mock_query = Test::MockObject->new(); +$mock_query->mock('url', + sub { 'http://localhost.localdomain/codestriker/codestriker.pl' } ); + +# Create two method objects to test each URL scheme. +my $url_cgi = Codestriker::Http::Method::CreateCommentMethod->new($mock_query, 1); +my $url_nice = Codestriker::Http::Method::CreateCommentMethod->new($mock_query, 0); + +is($url_cgi->url(filenumber => 3, line => 55, new => 0, topicid => 1234, + projectid => 10, context => 3), + $mock_query->url() . '?action=edit&fn=3&line=55&new=0&topic=1234&context=3', + "Create comment URL CGI syntax"); + +is($url_nice->url(filenumber => 3, line => 55, new => 0, topicid => 1234, + projectid => 10, context => 3), + $mock_query->url() . '/project/10/topic/1234/comment/3|55|0/create/context/3', + "Create comment URL nice syntax"); + +# Check that the parameters extracted correctly. +my $mock_http_input = Test::MockObject->new(); +$mock_http_input->{query} = $mock_query; +$mock_query->mock('path_info', + sub { + return $mock_query->url() . '/project/10/topic/1234/comment/3|55|0/create/context/3'; + }); +$mock_query->mock('param', sub { return undef; }); +$url_nice->extract_parameters($mock_http_input); +is ($mock_http_input->{projectid}, "10", "projectid nice URL parameter extraction"); +is ($mock_http_input->{topicid}, "1234", "topicid nice URL parameter extraction"); +is ($mock_http_input->{fn}, "3", "fn nice URL parameter extraction"); +is ($mock_http_input->{line}, "55", "line nice URL parameter extraction"); +is ($mock_http_input->{new}, "0", "new nice URL parameter extraction"); +is ($mock_http_input->{context}, "3", "context nice URL parameter extraction"); + + \ No newline at end of file Index: Email.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/TopicListeners/Email.pm,v retrieving revision 1.33 retrieving revision 1.34 diff -u -r1.33 -r1.34 --- Email.pm 17 Aug 2008 22:25:37 -0000 1.33 +++ Email.pm 18 Aug 2008 11:11:36 -0000 1.34 @@ -333,7 +333,7 @@ line => $comment->{fileline}, new => $comment->{filenew}, topicid => $topic->{topicid}, - projectid => $topic->{projectid}); + projectid => $topic->{project_id}); # Retrieve the comment details for this topic. my @comments = $topic->read_comments(); |
From: <si...@us...> - 2008-08-27 09:11:38
|
User: sits Date: 08/08/27 02:11:37 Modified: lib/Codestriker/Http Input.pm lib/Codestriker/Action SubmitNewTopic.pm bin commit-email-codestriker.pl CodestrikerClient.pm lib/Codestriker/TopicListeners Email.pm Log: Provided the ability to specify when creating a topic not to send out an email. Used primarily with post-commit scripts, which already send an email out with the Codestriker URL. Index: Input.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Http/Input.pm,v retrieving revision 1.49 retrieving revision 1.50 diff -u -r1.49 -r1.50 --- Input.pm 19 Aug 2008 10:50:16 -0000 1.49 +++ Input.pm 27 Aug 2008 09:11:36 -0000 1.50 @@ -105,6 +105,7 @@ my @selected_comments = $query->param('selected_comments'); $self->{selected_comments} = \@selected_comments; $self->{default_to_head} = $query->param('default_to_head'); + $self->{email_event} = $query->param('email_event'); # Set any missing parameters from the cookie. my %cookie = Codestriker::Http::Cookie->get($query); @@ -126,6 +127,7 @@ $self->{format} = "html" if ! defined $self->{format}; $self->{obsoletes} = "" if ! defined $self->{obsoletes}; $self->{default_to_head} = 0 if ! defined $self->{default_to_head}; + $self->{email_event} = 1 if ! defined $self->{email_event}; my @topic_metrics = $query->param('topic_metric'); $self->{topic_metric} = \@topic_metrics; Index: SubmitNewTopic.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Action/SubmitNewTopic.pm,v retrieving revision 1.37 retrieving revision 1.38 diff -u -r1.37 -r1.38 --- SubmitNewTopic.pm 19 Aug 2008 10:50:17 -0000 1.37 +++ SubmitNewTopic.pm 27 Aug 2008 09:11:36 -0000 1.38 @@ -46,6 +46,7 @@ my $obsoletes = $http_input->get('obsoletes'); my $default_to_head = $http_input->get('default_to_head'); my $topic_state = $http_input->get('topic_state'); + my $email_event = $http_input->get('email_event'); my $feedback = ""; my $topic_text = ""; @@ -351,6 +352,7 @@ # Tell all of the topic listener classes that a topic has # just been created. + $topic->{email_event} = $email_event; $feedback = Codestriker::TopicListeners::Manager::topic_create($topic); # Obtain a URL builder object and determine the URL to the topic. Index: commit-email-codestriker.pl =================================================================== RCS file: /cvsroot/codestriker/codestriker/bin/commit-email-codestriker.pl,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- commit-email-codestriker.pl 22 Aug 2008 01:41:31 -0000 1.2 +++ commit-email-codestriker.pl 27 Aug 2008 09:11:36 -0000 1.3 @@ -399,6 +399,7 @@ reviewers => $current_project->{codestriker_reviewers}, cc => $current_project->{codestriker_cc}, topic_state => $current_project->{codestriker_state}, + email_event => 0, topic_text => join("\n", @difflines) }); } Index: CodestrikerClient.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/bin/CodestrikerClient.pm,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- CodestrikerClient.pm 20 Aug 2008 00:43:34 -0000 1.6 +++ CodestrikerClient.pm 27 Aug 2008 09:11:36 -0000 1.7 @@ -18,6 +18,7 @@ # bug_ids => '1', # email => 'sits', # reviewers => 'root', +# email_event => 0, # topic_text => "Here is some text\nHere is some\n\nMore and more...\n"}); package CodestrikerClient; @@ -58,6 +59,7 @@ reviewers => $params->{reviewers}, cc => $params->{cc}, topic_state => $params->{topic_state}, + email_event => $params->{email_event}, topic_file => [$tempfile_filename]]; my $response = $ua->request(HTTP::Request::Common::POST($self->{url}, Index: Email.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/TopicListeners/Email.pm,v retrieving revision 1.34 retrieving revision 1.35 diff -u -r1.34 -r1.35 --- Email.pm 18 Aug 2008 11:11:36 -0000 1.34 +++ Email.pm 27 Aug 2008 09:11:36 -0000 1.35 @@ -38,6 +38,11 @@ sub topic_create($$) { my ($self, $topic) = @_; + # Check if this action doesn't need to be logged. + if (defined $topic->{email_event} && ! $topic->{email_event}) { + return ''; + } + # Send an email to the document author and all contributors with the # relevant information. The person who wrote the comment is indicated # in the "From" field, and is BCCed the email so they retain a copy. @@ -101,6 +106,11 @@ sub topic_changed($$$$) { my ($self, $user_that_made_the_change, $topic_orig, $topic) = @_; + # Check if this action doesn't need to be logged. + if (defined $topic->{email_event} && $topic->{email_event} == 0) { + return ''; + } + # Not all changes in the topic changes needs to be sent out to everybody # who is working on the topic. The policy of this function is that # the following changes will cause an email to be sent. Otherwise, @@ -191,6 +201,11 @@ sub send_topic_changed_email { my ($self, $user_that_made_the_change, $topic_orig, $topic,@to_list) = @_; + # Check if this action doesn't need to be logged. + if (defined $topic->{email_event} && $topic->{email_event} == 0) { + return ''; + } + my $changes = ""; # Check for author change. @@ -323,6 +338,11 @@ sub comment_create($$$) { my ($self, $topic, $comment) = @_; + # Check if this action doesn't need to be logged. + if (defined $topic->{email_event} && $topic->{email_event} == 0) { + return ''; + } + my $query = new CGI; my $url_builder = Codestriker::Http::UrlBuilder->new($query); |
From: <si...@us...> - 2008-09-27 04:27:38
|
User: sits Date: 08/09/26 21:27:28 Modified: lib/Codestriker/TopicListeners Email.pm Log: Only show context line in emails if the context is actually available. Index: Email.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/TopicListeners/Email.pm,v retrieving revision 1.36 retrieving revision 1.37 diff -u -r1.36 -r1.37 --- Email.pm 6 Sep 2008 00:31:50 -0000 1.36 +++ Email.pm 27 Sep 2008 04:27:27 -0000 1.37 @@ -395,10 +395,6 @@ if ($comment->{fileline} != -1) { $body .= " line $comment->{fileline}.\n\n"; - # Only show the context for a comment made against a specific line. - $body .= "Context:\n$EMAIL_HR\n\n"; - my $email_context = $Codestriker::EMAIL_CONTEXT; - # Retrieve the diff hunk for this file and line number. my $delta = Codestriker::Model::Delta->get_delta($comment->{topicid}, @@ -407,6 +403,11 @@ $comment->{filenew}); if (defined $delta) { + # Only show the context for a comment made against a specific line + # in the original review text. + $body .= "Context:\n$EMAIL_HR\n\n"; + my $email_context = $Codestriker::EMAIL_CONTEXT; + my @text = (); my $offset = $delta->retrieve_context($comment->{fileline}, $comment->{filenew}, $email_context, \@text); |