User: sits    
  Date: 08/03/12 01:29:15

  Modified:    lib/Codestriker/Action ViewTopicFile.pm
               template/en/default viewdeltas.html.tmpl
  Added:       template/en/default viewtopicfile.html.tmpl
  Log:
  Reuse the templates for the view topic file action.
  
  
  
  Index: ViewTopicFile.pm
  ===================================================================
  RCS file: 
/cvsroot/codestriker/codestriker/lib/Codestriker/Action/ViewTopicFile.pm,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- ViewTopicFile.pm  15 Jan 2006 21:20:05 -0000      1.12
  +++ ViewTopicFile.pm  12 Mar 2008 08:29:14 -0000      1.13
  @@ -42,7 +42,7 @@
   
       # Retrieve the corresponding repository object.
       my $repository =
  -         
Codestriker::Repository::RepositoryFactory->get($topic->{repository});
  +     Codestriker::Repository::RepositoryFactory->get($topic->{repository});
   
       # Retrieve the deltas corresponding to this file.
       my @deltas = Codestriker::Model::Delta->get_deltas($topicid, $fn);
  @@ -66,25 +66,6 @@
                              "$revision: $!");
       }
   
  -    # This could be done more efficiently, but for now, read through the
  -    # file, and determine the longest line length for the resulting
  -    # data that is to be viewed.  Note it is not 100% accurate, but it will
  -    # do for now, to reduce the resulting page size.
  -    my $max_line_length = $filedata_max_line_length;
  -    for (my $d = 0; $d <= $#deltas; $d++) {
  -     my @difflines = split /\n/, $deltas[$d]->{text};
  -     for (my $i = 0; $i <= $#difflines; $i++) {
  -         my $line = $difflines[$i];
  -         if ($line =~ /^\s(.*)$/o || $line =~ /^\+(.*)$/o ||
  -             $line =~ /^\-(.*)$/o) {
  -             my $line_length = length($1);
  -             if ($line_length > $max_line_length) {
  -                 $max_line_length = $line_length;
  -             }
  -         }
  -     }
  -    }
  -
       # Output the new file, with the deltas applied.
       my $title;
       if ($parallel) {
  @@ -103,85 +84,69 @@
                                    
repository=>$Codestriker::repository_name_map->{$topic->{repository}}, 
                                       reload=>0, cache=>1);
   
  -    # Render the HTML header.
  -    my $vars = {};
  -    $vars->{'closehead'} = 1;
  -
  -    my $header = Codestriker::Http::Template->new("header");
  -    $header->process($vars);
  -
  -    my $max_digit_width = length($#filedata);
  -
  -    # Create a new render object to perform the line rendering.
  -    my @toc_filenames = ();
  -    my @toc_revisions = ();
  -    my @toc_binaries = ();
  -    my $url_builder = Codestriker::Http::UrlBuilder->new($query);
  -    my $render =
  -     Codestriker::Http::Render->new($query, $url_builder, $parallel,
  -                                    $max_digit_width, $topicid, $mode,
  -                                    [EMAIL PROTECTED], $tabwidth,
  -                                    $repository, [EMAIL PROTECTED],
  -                                    [EMAIL PROTECTED], [EMAIL PROTECTED],
  -                                    undef, $max_line_length, $brmode,
  -                                    $fview);
  -    # Prepare the output.
  -
  -    if ($parallel) {
  -     $render->print_coloured_table();
  -    }
  -    else {
  -     print "<PRE class=\"ms\">\n";
  +    # Need to create a single delta object that combines all of the deltas
  +    # together.
  +    my $merged_delta = {};
  +    if (@deltas > 0) {
  +     my $delta = $deltas[0];
  +     $merged_delta->{filename} = $delta->{filename};
  +     $merged_delta->{revision} = $delta->{revision};
  +     $merged_delta->{binary} = $delta->{binary};
  +     $merged_delta->{filenumber} = $delta->{filenumber};
  +     $merged_delta->{repmatch} = $delta->{repmatch};
  +     $merged_delta->{old_linenumber} = 1;
  +     $merged_delta->{new_linenumber} = 1;
  +     $merged_delta->{only_delta_in_file} = 1;
       }
  -
  -    # Read through all the deltas, and apply them to the original form of the
  -    # file.
  -    my $delta = undef;
  +    
  +    # Now compute the delta text of all the merged deltas.
  +    my $delta_text = "";
  +    my $old_linenumber = 1;
       for (my $delta_index = 0; $delta_index <= $#deltas; $delta_index++) {
  -     $delta = $deltas[$delta_index];
  +     my $delta = $deltas[$delta_index];
   
        # Output those lines leading up to the start of the next delta.
        # Build up a delta with no changes, and render it.
  -     my $delta_text = "";
        my $next_delta_linenumber = $delta->{old_linenumber};
  -     for (my $i = $render->{old_linenumber};
  -          $i < $next_delta_linenumber; $i++) {
  +     for (my $i = $old_linenumber; $i < $next_delta_linenumber; $i++) {
            $delta_text .= " $filedata[$i]\n";
  +         $old_linenumber++;
  +     }
  +
  +     # Keep track of the old linenumber so the blanks between the
  +     # deltas can be filled in.
  +     my @diff_lines = split /\n/, $delta->{text};
  +     foreach my $line (@diff_lines) {
  +         if ($line =~ /^\-/o || $line =~ /^\s/o) {
  +             $old_linenumber++;
  +         }
        }
  -     $render->delta_text($filename, $fn, $revision,
  -                         $render->{old_linenumber},
  -                         $render->{new_linenumber},
  -                         $delta_text, 0, $new, 0);
  -                         
  -     # Render the actual change delta.
  -     $render->delta_text($filename, $fn, $revision,
  -                         $delta->{old_linenumber},
  -                         $delta->{new_linenumber}, $delta->{text}, 1,
  -                         $new, 1);
  +
  +     # Add the text of this delta to the final text.
  +     $delta_text .= $delta->{text};
       }
   
  -    # Render the tail part of the file, again by building up a delta.
  -    my $delta_text = "";
  -    for (my $i = $render->{old_linenumber}; $i <= $#filedata; $i++) {
  +    # Add the text from the tail-end of the file.
  +    for (my $i = $old_linenumber; $i <= $#filedata; $i++) {
        $delta_text .= " $filedata[$i]\n";
       }
  -    $render->delta_text($filename, $fn, $revision, $render->{old_linenumber},
  -                     $render->{new_linenumber}, $delta_text, 0, $new, 0);
  -    
  -    # Close off the rendering.    
  -    if ($parallel) {
  -     print $query->end_table();
  -    }
  -    else {
  -     print "</PRE>\n";
  -    }
   
  -    # Render the HTML trailer.
  -    my $trailer = Codestriker::Http::Template->new("trailer");
  -    $trailer->process();
  +    # Now update the merged delta with this text.
  +    $merged_delta->{text} = $delta_text;
   
  -    print $query->end_html();
  +    # Render this delta.
  +    my @merged_deltas = ();
  +    push @merged_deltas, $merged_delta;
  +    my $delta_renderer =
  +     Codestriker::Http::DeltaRenderer->new($topic, [EMAIL PROTECTED],
  +                                           [EMAIL PROTECTED], $query,
  +                                           $mode, $brmode, $tabwidth);
  +    $delta_renderer->annotate_deltas();
   
  +    my $vars = {};
  +    $vars->{'deltas'} = [EMAIL PROTECTED];
  +    my $template = Codestriker::Http::Template->new("viewtopicfile");
  +    $template->process($vars);
       $http_response->generate_footer();
   
       # Fire the topic listener to indicate that the user has viewed the topic.
  
  
  
  
  
  Index: viewdeltas.html.tmpl
  ===================================================================
  RCS file: 
/cvsroot/codestriker/codestriker/template/en/default/viewdeltas.html.tmpl,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- viewdeltas.html.tmpl      9 Mar 2008 19:57:08 -0000       1.1
  +++ viewdeltas.html.tmpl      12 Mar 2008 08:29:15 -0000      1.2
  @@ -23,6 +23,7 @@
            [% ELSE %]
                 File [% delta.filename | html_entity %]
            [% END %]
  +            (Revision [% delta.revision %])
            </td>
   
               <td class="file" align="right">
  
  
  
  
  
  Index: viewtopicfile.html.tmpl
  ===================================================================
  RCS file: viewtopicfile.html.tmpl
  diff -N viewtopicfile.html.tmpl
  --- /dev/null 1 Jan 1970 00:00:00 -0000
  +++ viewtopicfile.html.tmpl   12 Mar 2008 08:29:15 -0000      1.1
  @@ -0,0 +1,6 @@
  +[%# Screen for displaying a complete file from a topic. #%]
  +
  +[% PROCESS header.html.tmpl version = version displaymenu = 1 
  +                            closehead = 1 %]
  +
  +[% PROCESS viewdeltas.html.tmpl deltas = deltas %]
  
  
  

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Codestriker-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/codestriker-commits

Reply via email to