User: sits    
  Date: 08/09/05 20:31:08

  Modified:    .        codestriker.conf
               bin      codestriker.pl.base
               lib/Codestriker/Action ListTopics.pm
               lib/Codestriker/Http UrlBuilder.pm
               lib/Codestriker/Http/Method UpdateTopicStateMethod.pm
               t/Http/Method update-topic-states.t
               template/en/default listtopics.html.tmpl
  Log:
  Got the update multiple topic states action working again.
  
  
  
  Index: codestriker.conf
  ===================================================================
  RCS file: /cvsroot/codestriker/codestriker/codestriker.conf,v
  retrieving revision 1.103
  retrieving revision 1.104
  diff -u -r1.103 -r1.104
  --- codestriker.conf  6 Sep 2008 00:31:51 -0000       1.103
  +++ codestriker.conf  6 Sep 2008 03:31:05 -0000       1.104
  @@ -102,7 +102,7 @@
   
   # Indicate what style URLs to support.  The default is CGI-style URLs.  Set
   # this value to 0 for "nicer" URLs. 
  -#$cgi_style = 0; 
  +#$cgi_style = 1; 
   
   # Valid repositories which may be selected at the create topic screen.
   # The order shown here is the order presented in the option list.  Most
  
  
  
  
  
  Index: codestriker.pl.base
  ===================================================================
  RCS file: /cvsroot/codestriker/codestriker/bin/codestriker.pl.base,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- codestriker.pl.base       6 Sep 2008 00:31:50 -0000       1.29
  +++ codestriker.pl.base       6 Sep 2008 03:31:06 -0000       1.30
  @@ -1,141 +1,140 @@
  -        [% hash_ex_line %]
  +[% hash_ex_line %]
   
  -        [% scary_warning %]
  +[% scary_warning %]
   
  -        
###############################################################################
  -        # Codestriker: Copyright (c) 2001, 2002 David Sitsky.  All rights 
reserved.
  -        # [EMAIL PROTECTED]
  -        #
  -        # This program is free software; you can redistribute it and modify 
it under
  -        # the terms of the GPL.
  -
  -        # This is the top level package which receives all HTTP requests, and
  -        # delegates it to the appropriate Action module.
  -
  -        require 5.008_0;
  -
  -        # Set this to the location of the Codestriker libraries on your 
system.
  -        # Ideally, this should be done in the apache configs, but trying to 
do this
  -        # in an easy way for Apache1/Apache2 with/without mod_perl 
with/without taint
  -        # checking turned out to be a major headache.  For mod_perl, setting 
this
  -        # ensures the first time Codestriker is loaded, it can be compiled 
properly,
  -        # even if @INC is blatted later.  Also note all the use declarations 
below
  -        # effectively "pre-load" all of the Codestriker modules in the 
system, as the
  -        # modules below load all of their supporting modules.  That is why 
the
  -        # template plugins are "pre-loaded" here.
  -        [% scmbug_lib %]
  -        [% codestriker_lib %]
  -
  -        use strict;
  -
  -        use CGI qw/:standard :html3/;
  -        use CGI::Carp 'fatalsToBrowser';
  -
  -        use Codestriker;
  -        use Codestriker::Http::Input;
  -        use Codestriker::Http::Response;
  -        use Codestriker::Http::Dispatcher;
  -        use Codestriker::Action::CreateTopic;
  -        use Codestriker::Action::EditComment;
  -        use Codestriker::Action::Search;
  -        use Codestriker::Action::ListTopics;
  -        use Codestriker::Action::DownloadTopic;
  -        use Codestriker::Action::ListProjects;
  -        use Codestriker::Action::EditProject;
  -        use Codestriker::Action::CreateProject;
  -        use Codestriker::Action::MetricsReport;
  -        use Codestriker::Action::SubmitEditTopicProperties;
  -        use Codestriker::Action::SubmitEditTopicMetrics;
  -        use Codestriker::Action::SubmitEditTopicsState;
  -        use Codestriker::Action::SubmitEditCommentsState;
  -        use Codestriker::Action::SubmitEditProject;
  -        use Codestriker::Action::SubmitNewProject;
  -        use Codestriker::Action::SubmitNewTopic;
  -        use Codestriker::Action::SubmitNewComment;
  -        use Codestriker::Action::SubmitSearch;
  -        use Codestriker::Action::ViewTopicFile;
  -        use Codestriker::Action::ViewTopicInfo;
  -        use Codestriker::Action::ViewTopic;
  -        use Codestriker::Action::ViewTopicProperties;
  -        use Codestriker::Action::ViewTopicComments;
  -        [% IF has_rss %]use Codestriker::Action::ListTopicsRSS; [% END %]
  -
  -        use Codestriker::Template::Plugin::AutomagicLinks;
  -        use Codestriker::Template::Plugin::JavascriptEscape;
  -        use Codestriker::Template::Plugin::StringObfuscator;
  -        use Codestriker::Template::Plugin::FormatWhitespace;
  -
  -        # Set the temp file location, if one has been specified.
  -        if (defined $Codestriker::tmpdir && $Codestriker::tmpdir ne '') {
  -            $CGITempFile::TMPDIRECTORY = $Codestriker::tmpdir;
  -            }
  -
  -            # Set the PATH to something sane if we aren't running under 
windows.
  -            # For a lot of annoying reasons, we can't run Codestriker in
  -            # tainted mode under Win32.
  -            if (Codestriker::is_windows()) {
  -                $ENV{'PATH'} = '';
  -                } else {
  -                    $ENV{'PATH'} = '/bin:/usr/bin';
  -                    }
  -
  -                    # Prototypes of subroutines used in this module.
  -                    sub main();
  -
  -                    main;
  -
  -                    sub main() {
  -                        # Initialise Codestriker, load up the configuration 
file.
  -                            Codestriker->initialise([% codestriker_conf %]);
  -
  -                            [% IF has_rss %]
  -                                # Only generated if install.pl found a good 
version of XML::RSS.
  -                                    $Codestriker::rss_enabled = 1;
  -                                    [% ELSE %]
  -                                        # valid XML::RSS not found
  -                                            $Codestriker::rss_enabled = 0;
  -                                            [% END %]
  -
  -                                                # If allow_delete is 
defined, but topic state 'Delete' is not, add it
  -                                                    # in.  This accounts for 
older configuration files.
  -                                                        if (defined 
$Codestriker::allow_delete && $Codestriker::allow_delete &&
  -                                                            (! grep 
/^Deleted$/, @Codestriker::topic_states)) {
  -                                                                push 
@Codestriker::topic_states, 'Deleted';
  -                                                                    }
  -
  -                                                                        # 
Check if the old $allow_comment_email configuration option has been
  -                                                                            
# specified in the config file, rather than the new $email_send_options
  -                                                                             
   # setting.
  -                                                                             
       if (defined $Codestriker::allow_comment_email &&
  -                                                                             
           ! defined $Codestriker::email_send_options) {
  -                                                                             
               $Codestriker::email_send_options =
  -                                                                             
                   {
  -                                                                             
                         comments_sent_to_topic_author => 
$Codestriker::allow_comment_email,
  -                                                                             
                               comments_sent_to_commenter => 
$Codestriker::allow_comment_email,
  -                                                                             
                                     topic_state_change_sent_to_reviewers => 0
  -                                                                             
                                         };
  -                                                                             
                                             }
  -
  -                                                                             
                                                 # Limit the size of the posts 
that can be done.
  -                                                                             
                                                     
$CGI::POST_MAX=$Codestriker::DIFF_SIZE_LIMIT;
  -
  -                                                                             
                                                         # Load the CGI object, 
and prepare the HTTP response.
  -                                                                             
                                                             my $query = new 
CGI;
  -                                                                             
                                                                 my 
$http_response = Codestriker::Http::Response->new($query);
  -
  -                                                                             
                                                                     # TODO: 
need to put in mapping here from new URL scheme to old
  -                                                                             
                                                                         # 
scheme.
  -
  -                                                                             
                                                                             # 
Process the HTTP input to ensure it is consistent.
  -                                                                             
                                                                                
 my $http_input = Codestriker::Http::Input->new($query, $http_response);
  -
  -                                                                             
                                                                                
     my $dispatcher = Codestriker::Http::Dispatcher->new($query);
  -                                                                             
                                                                                
         $dispatcher->dispatch($http_input, $http_response);
  -
  -                                                                             
                                                                                
         #[% IF has_rss %]
  -                                                                             
                                                                                
             # only generated if checksetup.pl found a good version of XML::RSS.
  -                                                                             
                                                                                
             #    } elsif ($action eq "list_topics_rss") {
  -                                                                             
                                                                                
             #    Codestriker::Action::ListTopicsRSS->process($http_input,
  -                                                                             
                                                                                
             #                                $http_response);
  -                                                                             
                                                                                
             #[% END %]
  -                                                                             
                                                                                
             }
  
+###############################################################################
  +# Codestriker: Copyright (c) 2001, 2002 David Sitsky.  All rights reserved.
  +# [EMAIL PROTECTED]
  +#
  +# This program is free software; you can redistribute it and modify it under
  +# the terms of the GPL.
  +
  +# This is the top level package which receives all HTTP requests, and
  +# delegates it to the appropriate Action module.
  +
  +require 5.008_0;
  +
  +# Set this to the location of the Codestriker libraries on your system.
  +# Ideally, this should be done in the apache configs, but trying to do this
  +# in an easy way for Apache1/Apache2 with/without mod_perl with/without taint
  +# checking turned out to be a major headache.  For mod_perl, setting this
  +# ensures the first time Codestriker is loaded, it can be compiled properly,
  +# even if @INC is blatted later.  Also note all the use declarations below
  +# effectively "pre-load" all of the Codestriker modules in the system, as the
  +# modules below load all of their supporting modules.  That is why the
  +# template plugins are "pre-loaded" here.
  +[% scmbug_lib %]
  +[% codestriker_lib %]
  +
  +use strict;
  +
  +use CGI qw/:standard :html3/;
  +use CGI::Carp 'fatalsToBrowser';
  +
  +use Codestriker;
  +use Codestriker::Http::Input;
  +use Codestriker::Http::Response;
  +use Codestriker::Http::Dispatcher;
  +use Codestriker::Action::CreateTopic;
  +use Codestriker::Action::EditComment;
  +use Codestriker::Action::Search;
  +use Codestriker::Action::ListTopics;
  +use Codestriker::Action::DownloadTopic;
  +use Codestriker::Action::ListProjects;
  +use Codestriker::Action::EditProject;
  +use Codestriker::Action::CreateProject;
  +use Codestriker::Action::MetricsReport;
  +use Codestriker::Action::SubmitEditTopicProperties;
  +use Codestriker::Action::SubmitEditTopicMetrics;
  +use Codestriker::Action::SubmitEditTopicsState;
  +use Codestriker::Action::SubmitEditCommentsState;
  +use Codestriker::Action::SubmitEditProject;
  +use Codestriker::Action::SubmitNewProject;
  +use Codestriker::Action::SubmitNewTopic;
  +use Codestriker::Action::SubmitNewComment;
  +use Codestriker::Action::SubmitSearch;
  +use Codestriker::Action::ViewTopicFile;
  +use Codestriker::Action::ViewTopicInfo;
  +use Codestriker::Action::ViewTopic;
  +use Codestriker::Action::ViewTopicProperties;
  +use Codestriker::Action::ViewTopicComments;
  +[% IF has_rss %]use Codestriker::Action::ListTopicsRSS; [% END %]
  +
  +use Codestriker::Template::Plugin::AutomagicLinks;
  +use Codestriker::Template::Plugin::JavascriptEscape;
  +use Codestriker::Template::Plugin::StringObfuscator;
  +use Codestriker::Template::Plugin::FormatWhitespace;
  +
  +# Set the temp file location, if one has been specified.
  +if (defined $Codestriker::tmpdir && $Codestriker::tmpdir ne '') {
  +    $CGITempFile::TMPDIRECTORY = $Codestriker::tmpdir;
  +}
  +
  +# Set the PATH to something sane if we aren't running under windows.
  +# For a lot of annoying reasons, we can't run Codestriker in
  +# tainted mode under Win32.
  +if (Codestriker::is_windows()) {
  +    $ENV{'PATH'} = '';
  +} else {
  +    $ENV{'PATH'} = '/bin:/usr/bin';
  +}
  +
  +# Prototypes of subroutines used in this module.
  +sub main();
  +
  +main;
  +
  +sub main() {
  +    # Initialise Codestriker, load up the configuration file.
  +    Codestriker->initialise([% codestriker_conf %]);
  +
  +    [% IF has_rss %]
  +      # Only generated if install.pl found a good version of XML::RSS.
  +      $Codestriker::rss_enabled = 1;
  +    [% ELSE %]
  +      # valid XML::RSS not found
  +      $Codestriker::rss_enabled = 0;
  +    [% END %]
  +
  +    # If allow_delete is defined, but topic state 'Delete' is not, add it
  +    # in.  This accounts for older configuration files.
  +    if (defined $Codestriker::allow_delete && $Codestriker::allow_delete &&
  +        (! grep /^Deleted$/, @Codestriker::topic_states)) {
  +        push @Codestriker::topic_states, 'Deleted';
  +    }
  +
  +    # Check if the old $allow_comment_email configuration option has been
  +    # specified in the config file, rather than the new $email_send_options
  +    # setting.
  +    if (defined $Codestriker::allow_comment_email &&
  +        ! defined $Codestriker::email_send_options) {
  +        $Codestriker::email_send_options =
  +          {
  +           comments_sent_to_topic_author => 
$Codestriker::allow_comment_email,
  +           comments_sent_to_commenter => $Codestriker::allow_comment_email,
  +           topic_state_change_sent_to_reviewers => 0
  +          };
  +    }
  +
  +    # Limit the size of the posts that can be done.
  +    $CGI::POST_MAX=$Codestriker::DIFF_SIZE_LIMIT;
  +
  +    # Load the CGI object, and prepare the HTTP response.
  +    my $query = new CGI;
  +    my $http_response = Codestriker::Http::Response->new($query);
  +
  +    # TODO: need to put in mapping here from new URL scheme to old
  +    # scheme.
  +
  +    # Process the HTTP input to ensure it is consistent.
  +    my $http_input = Codestriker::Http::Input->new($query, $http_response);
  +
  +    my $dispatcher = Codestriker::Http::Dispatcher->new($query);
  +    $dispatcher->dispatch($http_input, $http_response);
  +
  +    # only generated if checksetup.pl found a good version of XML::RSS.
  +    #    } elsif ($action eq "list_topics_rss") {
  +    #    Codestriker::Action::ListTopicsRSS->process($http_input,
  +    #                                $http_response);
  +    #
  +}
  
  
  
  
  
  Index: ListTopics.pm
  ===================================================================
  RCS file: 
/cvsroot/codestriker/codestriker/lib/Codestriker/Action/ListTopics.pm,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- ListTopics.pm     6 Sep 2008 00:31:45 -0000       1.38
  +++ ListTopics.pm     6 Sep 2008 03:31:06 -0000       1.39
  @@ -52,11 +52,12 @@
            $sort_order) = get_topic_list_query_params($http_input);
   
       # Query the model for the specified data.
  -    my @topics = Codestriker::Model::Topic->query($sauthor, $sreviewer, 
$scc, $sbugid,
  -                                                  $sstate, $sproject, $stext,
  -                                                  $stitle, $sdescription,
  -                                                  $scomments, $sbody, 
$sfilename,
  -                                                  $sort_order);
  +    my @topics =
  +      Codestriker::Model::Topic->query($sauthor, $sreviewer, $scc, $sbugid,
  +                                       $sstate, $sproject, $stext,
  +                                       $stitle, $sdescription,
  +                                       $scomments, $sbody, $sfilename,
  +                                       $sort_order);
   
       # Display the data, with each topic title linked to the view topic 
screen.
       # If only a single project id is being searched over, set that id in the
  @@ -236,6 +237,7 @@
   
       $vars->{'list_projects_url'} = $url_builder->list_projects_url();
       $vars->{'view_metrics_url'} = $url_builder->metric_report_url();
  +    $vars->{'action_url'} = $url_builder->update_topic_states_url();
   
       my $template = Codestriker::Http::Template->new("listtopics");
       $template->process($vars);
  
  
  
  
  
  Index: UrlBuilder.pm
  ===================================================================
  RCS file: 
/cvsroot/codestriker/codestriker/lib/Codestriker/Http/UrlBuilder.pm,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- UrlBuilder.pm     6 Sep 2008 00:31:47 -0000       1.47
  +++ UrlBuilder.pm     6 Sep 2008 03:31:07 -0000       1.48
  @@ -34,6 +34,7 @@
   use Codestriker::Http::Method::UpdateTopicPropertiesMethod;
   use Codestriker::Http::Method::UpdateTopicMetricsMethod;
   use Codestriker::Http::Method::UpdateCommentMetricsMethod;
  +use Codestriker::Http::Method::UpdateTopicStateMethod;
   
   # Constructor for this class.
   sub new {
  @@ -203,6 +204,12 @@
       return 
Codestriker::Http::Method::UpdateTopicMetricsMethod->new($self->{query})->url(%args);
   }
   
  +# Create the URL for updating a number of topic states.
  +sub update_topic_states_url {
  +    my ($self, %args) = @_;
  +    return 
Codestriker::Http::Method::UpdateTopicStateMethod->new($self->{query})->url(%args);
  +}
  +
   # Create the URL for adding new comments.
   sub add_comment_url {
       my ($self, %args) = @_;
  
  
  
  
  
  Index: UpdateTopicStateMethod.pm
  ===================================================================
  RCS file: 
/cvsroot/codestriker/codestriker/lib/Codestriker/Http/Method/UpdateTopicStateMethod.pm,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- UpdateTopicStateMethod.pm 6 Sep 2008 00:31:45 -0000       1.3
  +++ UpdateTopicStateMethod.pm 6 Sep 2008 03:31:07 -0000       1.4
  @@ -22,8 +22,7 @@
       if ($self->{cgi_style}) {
           return $self->{url_prefix} . "?action=change_topics_state";
       } else {
  -        confess "Parameter projectid missing" unless defined 
$args{projectid};
  -        return $self->{url_prefix} . 
"/project/$args{projectid}/topic/update";
  +        return $self->{url_prefix} . "/topics/update";
       }
   }
   
  @@ -32,12 +31,12 @@
   
       my $action = $http_input->{query}->param('action');
       my $path_info = $http_input->{query}->path_info();
  -    if ($self->{cgi_style} && defined $action && $action eq 
"change_topics_state") {
  +    if ($self->{cgi_style} && defined $action &&
  +        $action eq "change_topics_state") {
           $http_input->extract_cgi_parameters();
           return 1;
  -    } elsif ($path_info =~ m{^/project/\d+/topic/update}) {
  -        $self->_extract_nice_parameters($http_input,
  -                                        project => 'projectid');
  +    } elsif ($path_info =~ m{^/topics/update}) {
  +        $self->_extract_nice_parameters($http_input);
           return 1;
       } else {
           return 0;
  
  
  
  
  
  Index: update-topic-states.t
  ===================================================================
  RCS file: 
/cvsroot/codestriker/codestriker/t/Http/Method/update-topic-states.t,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- update-topic-states.t     31 Aug 2008 12:30:05 -0000      1.2
  +++ update-topic-states.t     6 Sep 2008 03:31:07 -0000       1.3
  @@ -22,7 +22,7 @@
      "Update topic state URL CGI syntax");
      
   is($url_nice->url(projectid => 10),
  -   $mock_query->url() . '/project/10/topic/update',
  +   $mock_query->url() . '/topics/update',
      "Update topic state URL nice syntax");
   
   # Check that the parameters extracted correctly.
  @@ -31,10 +31,9 @@
   $mock_http_input->mock('extract_cgi_parameters', sub { return undef; });     
             
   $mock_query->mock('path_info',
                     sub {
  -                     return '/project/10/topic/update';
  +                     return '/topics/update';
                     });
   $mock_query->mock('param', sub { return undef; });                  
   $url_nice->extract_parameters($mock_http_input);
  -is ($mock_http_input->{projectid}, "10", "project nice URL parameter 
extraction");
   
  -                              
  \ No newline at end of file
  +                              
  
  
  
  
  
  Index: listtopics.html.tmpl
  ===================================================================
  RCS file: 
/cvsroot/codestriker/codestriker/template/en/default/listtopics.html.tmpl,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- listtopics.html.tmpl      24 Jun 2008 03:26:50 -0000      1.44
  +++ listtopics.html.tmpl      6 Sep 2008 03:31:08 -0000       1.45
  @@ -10,7 +10,7 @@
   [% END %]
   
   [%# Display the heading and create the table #%]
  -<FORM METHOD="post" ENCTYPE="multipart/form-data">
  +<FORM METHOD="post" ENCTYPE="multipart/form-data" ACTION="[% action_url %]">
   <input TYPE="hidden" NAME="action" VALUE="change_topics_state" />
   
   [%# Store the search parameters as hidden variables #%]
  
  
  

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Codestriker-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/codestriker-commits

Reply via email to