⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 editcomment.pm

📁 codestriker is a develop useful tool to review code on web user interface.
💻 PM
字号:
################################################################################ Codestriker: Copyright (c) 2001, 2002 David Sitsky.  All rights reserved.# sits@users.sourceforge.net## This program is free software; you can redistribute it and modify it under# the terms of the GPL.# Action object for adding a comment to a topic line.package Codestriker::Action::EditComment;use strict;use Codestriker::Model::Topic;# Create an appropriate form for adding a comment to a topic.sub process($$$) {    my ($type, $http_input, $http_response) = @_;    # Obtain a new URL builder object.    my $query = $http_response->get_query();    my $url_builder = Codestriker::Http::UrlBuilder->new($query);    # Retrieve the appropriate input fields.    my $line = $http_input->get('line');    my $fn = $http_input->get('fn');    my $new = $http_input->get('new');    my $topicid = $http_input->get('topic');    my $context = $http_input->get('context');    my $email = $http_input->get('email');    my $mode = $http_input->get('mode');    my $tabwidth = $http_input->get('tabwidth');    my $anchor = $http_input->get('a');    my $fview = $http_input->get('fview');    # Retrieve the appropriate topic details.    my $topic = Codestriker::Model::Topic->new($topicid);    # Retrieve the comment details for this topic.    my @comments = $topic->read_comments();    # Retrieve line-by-line versions of the description.    my @document_description = split /\n/, $topic->{description};    # Display the header of this page.    $http_response->generate_header(topic=>$topic,                                    topic_title=>"Edit Comment: $topic->{title}",                                    email=>$email,                                    mode=>$mode,                                    tabwidth=>$tabwidth,                                    repository=>$Codestriker::repository_name_map->{$topic->{repository}},                                    reload=>0, cache=>0);    # Create the hash for the template variables.    my $vars = {};    $vars->{'topic_title'} = $topic->{title};    Codestriker::Action::ViewTopic::ProcessTopicHeader($vars, $topic,                                                       $url_builder, $fview,                                                       $tabwidth, 1, 0);    my $view_topic_url = $url_builder->view_url(topicid => $topicid, projectid => $topic->{project_id},                                                mode => $mode, fview => $fn, filenumber => $fn,                                                new => $new, line => $line);    my $view_comments_url = $url_builder->view_comments_url(topicid => $topicid,                                                            projectid => $topic->{project_id});    my $add_comment_url = $url_builder->add_comment_url(topicid => $topicid, projectid => $topic->{project_id},                                                        filenumber => $fn, new => $new, line => $line);    $vars->{'view_topic_url'} = $view_topic_url;    $vars->{'view_comments_url'} = $view_comments_url;    $vars->{'doc_url'} = $url_builder->doc_url();    $vars->{'action_url'} = $add_comment_url;    # Retrieve the context in question.  Allow the user to increase it    # or decrease it appropriately.    my $inc_context = ($context <= 0) ? 1 : $context*2;    my $dec_context = ($context <= 0) ? 0 : int($context/2);    my $inc_context_url =      $url_builder->edit_url(filenumber => $fn, line => $line, new => $new,                             topicid => $topicid, projectid => $topic->{project_id},                             context => $inc_context, anchor => $anchor);    my $dec_context_url =      $url_builder->edit_url(filenumber => $fn, line => $line, new => $new,                             topicid => $topicid, projectid => $topic->{project_id},                             context => $dec_context, anchor => $anchor);    $vars->{'inc_context_url'} = $inc_context_url;    $vars->{'dec_context_url'} = $dec_context_url;    $vars->{'context'} = "";    if ($line != -1) {        # Retrieve the context for a comment made against a specific line.        my $delta = Codestriker::Model::Delta->get_delta($topicid, $fn,                                                         $line, $new);        my @text = ();        my $offset = $delta->retrieve_context($line, $new, $context, \@text);        for (my $i = 0; $i <= $#text; $i++) {            $text[$i] = HTML::Entities::encode($text[$i]);            if ($i == $offset) {                $text[$i] = "<font color=\"red\">" . $text[$i] . "</font>";            }        }        $vars->{'context'} = $query->pre(join "\n", @text) . $query->p;    }    # Display the comments which have been made for this line number    # in chronological order.    my @display_comments = ();    for (my $i = 0; $i <= $#comments; $i++) {        if ($comments[$i]{fileline} == $line &&            $comments[$i]{filenumber} == $fn &&            $comments[$i]{filenew} == $new) {            my $display_comment = {};            my $author = $comments[$i]{author};            $display_comment->{author} = Codestriker->filter_email($author);            $display_comment->{date} = $comments[$i]{date};            $display_comment->{data} = $comments[$i]{data};            $display_comment->{metrics} = $comments[$i]{metrics};            $display_comment->{line} = "";            $display_comment->{lineurl} = "";            $display_comment->{linename} = "";            $display_comment->{line} = "";            $display_comment->{lineurl} = "";            $display_comment->{linename} = "";            push @display_comments, $display_comment;        }    }    $vars->{'comments'} = \@display_comments;    # Store the metrics associated with this comment, if any.  Store the    # metrics configuration, in addition to the current values set for this    # comment state, if any.    my @metrics = ();    my $current_metrics_for_comment;    if ($#display_comments > -1) {        $current_metrics_for_comment = $display_comments[0]->{metrics};    }    foreach my $metric_config (@{ $Codestriker::comment_state_metrics }) {        my $metric_data = {};        $metric_data->{name} = $metric_config->{name};        $metric_data->{values} = $metric_config->{values};        $metric_data->{default_value} = $metric_config->{default_value};        $metric_data->{current_value} =          $current_metrics_for_comment->{$metric_config->{name}};        push @metrics, $metric_data;    }    $vars->{'metrics'} = \@metrics;    # Populate the form values.    $vars->{'line'} = $line;    $vars->{'topic'} = $topicid;    $vars->{'mode'} = $mode;    $vars->{'anchor'} = $anchor;    $vars->{'email'} = $email;    $vars->{'fn'} = $fn;    $vars->{'new'} = $new;    # Add the "other" reviewers, which is all the reviewers without the    # address set in $email.    my @reviewers = split ', ', $topic->{reviewers};    @reviewers = grep !/^$email$/, @reviewers;    $vars->{'reviewers'} = \@reviewers;    # Display the output via the template.    my $template = Codestriker::Http::Template->new("editcomment");    $template->process($vars);    $http_response->generate_footer();    # Fire the topic listener to indicate that the user has viewed the topic.    Codestriker::TopicListeners::Manager::topic_viewed($email, $topic);}1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -