X-Git-Url: https://git.p6c8.net/selfforum.git/blobdiff_plain/69cc2ea1cf06c310ec4079e301e360f78802c34b..ca5bd65df2cf8a11ce49091dbe666c5792d28aa2:/selfforum-cgi/shared/Template/_thread.pm?ds=sidebyside diff --git a/selfforum-cgi/shared/Template/_thread.pm b/selfforum-cgi/shared/Template/_thread.pm index f4ee5b2..ba7ae87 100644 --- a/selfforum-cgi/shared/Template/_thread.pm +++ b/selfforum-cgi/shared/Template/_thread.pm @@ -5,6 +5,7 @@ package Template::_thread; # File: shared/Template/_thread.pm # # # # Authors: André Malo # +# Christian Kruse # # # # Description: convert parsed thread to HTML # # # @@ -19,6 +20,7 @@ use Encode::Plain; $Encode::Plain::utf8 = 1; use Posting::_lib qw(short_hr_time); use Template; use Template::_query; +use Data::Dumper; ################################################################################ # @@ -41,53 +43,65 @@ use base qw(Exporter); # # create HTML string # -# Params: $msg - Reference of Message-Array +# Params: $msg Reference of Message-Array # (Output of parse_single_thread in Posting::_lib) -# $template - Template object -# $par - Hash Reference (see doc for details) +# $template Template object +# $par Hash Reference (see doc for details) +# $params Additional parameters # # Return: Reference of HTML String # -sub html_thread ($$$) { - my ($msg, $template, $par) = @_; +sub html_thread ($$$;$) { + my ($msg, $template, $par, $params) = @_; + my $additionalVariables = $params->{'additionalVariables'} || {}; + my $actions = { + 'action' => $params->{'action'}, + 'actionDeleted' => $params->{'actionDeleted'} + }; + my $base = $params->{'base_link'}; return \'' unless @$msg; - my $temp = $par -> {template}; - my $i = $par -> {cgi} -> {user}; - my $t = $par -> {cgi} -> {thread}; - my $p = $par -> {cgi} -> {posting}; - my $c = $par -> {cgi} -> {command}; - my $tid = $par -> {thread}; - my $html=''; - my $startlevel=0; - my $oldlevel=0; + my $temp = $par->{'template'}; + my $i = $par->{'cgi'}->{'user'}; + my $t = $par->{'cgi'}->{'thread'}; + my $p = $par->{'cgi'}->{'posting'}; + my $c = $par->{'cgi'}->{'command'}; + my $tid = $par->{'thread'}; + my $html = ''; + my $startlevel = 0; + my $oldlevel = 0; my @indexes; # whole thread - if ($par -> {start} == -1) { - $_ = $msg -> [0]; - @indexes = (1..$_ -> {answers}); + if ($par->{'start'} == -1) { + $_ = $msg->[0]; + @indexes = (1 .. $_->{answers}); - if ($_ -> {answers}) { + my $del = $_->{deleted} ? 'Deleted' : ''; + my $action = $actions->{'action'.$del}; $action =~ s/\Q{mid}\E/$_->{mid}/g; + + if ($_->{answers}) { $html = '
'. - ${$template -> scrap ( - $temp -> { - length $_ -> {cat} + ${$template->scrap( + $temp->{ + (length $_->{'cat'} ? 'start' - : 'startNC' + : 'startNC').$del }, - { $temp -> {name} => $_ -> {name}, - $temp -> {subject} => $_ -> {subject}, - $temp -> {cat} => $_ -> {cat}, - $temp -> {time} => plain(short_hr_time ($_ -> {time})), - $temp -> {link} => query_string({$t => $tid, $p => $_ -> {mid}}), - $temp -> {tid} => $tid, - $temp -> {mid} => $_ -> {mid}, + { $temp->{'name'} => $_->{'name'}, + $temp->{'subject'} => $_->{'subject'}, + $temp->{'cat'} => $_->{'cat'}, + $temp->{'time'} => plain(short_hr_time($_->{'time'})), + $temp->{'link'} => $base.query_string({$t => $tid, $p => $_->{'mid'}}), + $temp->{'tid'} => $tid, + $temp->{'mid'} => $_->{'mid'}, + $temp->{'command'} => $action, + %{$additionalVariables} }, - $par -> {addParam} + $par->{'addParam'} )} . '
'; } @@ -95,21 +109,23 @@ sub html_thread ($$$) { else { $html = '
'. - ${$template -> scrap ( - $temp -> { - length $_ -> {cat} - ? 'start' - : 'startNC' + ${$template->scrap( + $temp->{ + (length $_->{'cat'} + ? 'start' + : 'startNC').$del }, - { $temp -> {name} => $_ -> {name}, - $temp -> {subject} => $_ -> {subject}, - $temp -> {cat} => $_ -> {cat}, - $temp -> {time} => plain(short_hr_time ($_ -> {time})), - $temp -> {link} => query_string({$t => $tid, $p => $_ -> {mid}}), - $temp -> {tid} => $tid, - $temp -> {mid} => $_ -> {mid}, + { $temp->{'name'} => $_->{'name'}, + $temp->{'subject'} => $_->{'subject'}, + $temp->{'cat'} => $_->{'cat'}, + $temp->{'time'} => plain(short_hr_time ($_->{'time'})), + $temp->{'link'} => $base.query_string({$t => $tid, $p => $_->{'mid'}}), + $temp->{'tid'} => $tid, + $temp->{'mid'} => $_->{'mid'}, + $temp->{'command'} => $action, + %{$additionalVariables} }, - $par -> {addParam} + $par->{'addParam'} )}. '
'; @@ -120,68 +136,75 @@ sub html_thread ($$$) { # only subthread # else { - my $start=-1; - for (@$msg) {$start++; last if ($_ -> {mid} == $par -> {start});} - my $end = $start + $msg -> [$start] -> {answers}; + my $start = -1; + for (@$msg) { $start++; last if ($_->{'mid'} == $par->{'start'}); } + my $end = $start + $msg->[$start]->{'answers'}; $start++; - @indexes = ($start..$end); - $oldlevel = $startlevel = $msg -> [$start] -> {level} - if (defined $msg -> [$start] -> {level}); + @indexes = ($start .. $end); + $oldlevel = $startlevel = $msg->[$start]->{'level'} + if (defined $msg->[$start]->{'level'}); } # create HTML # for (@$msg[@indexes]) { + my $del = $_->{'deleted'} ? 'Deleted' : ''; + my $action = $actions->{'action'.$del}; $action =~ s/\Q{mid}\E/$_->{mid}/g; - if ($_ -> {level} < $oldlevel) { - $html.='
' x ($oldlevel - $_ -> {level});} + if ($_->{'level'} < $oldlevel) { + $html .= '' x ($oldlevel - $_->{'level'}); + } - $oldlevel = $_ -> {level}; + $oldlevel = $_->{'level'}; - if ($_ -> {answers}) { - $html.= + if ($_->{'answers'}) { + $html .= '
'. - ${$template -> scrap ( - $temp -> { - length $_ -> {cat} + ${$template->scrap( + $temp->{ + (length $_->{'cat'} ? 'line' - : 'lineNC' + : 'lineNC').$del }, - { $temp -> {name} => $_ -> {name}, - $temp -> {subject} => $_ -> {subject}, - $temp -> {cat} => $_ -> {cat}, - $temp -> {time} => plain(short_hr_time ($_ -> {time})), - $temp -> {link} => query_string({$t => $tid, $p => $_ -> {mid}}), - $temp -> {tid} => $tid, - $temp -> {mid} => $_ -> {mid}, + { $temp->{'name'} => $_->{'name'}, + $temp->{'subject'} => $_->{'subject'}, + $temp->{'cat'} => $_->{'cat'}, + $temp->{'time'} => plain(short_hr_time ($_->{'time'})), + $temp->{'link'} => $base.query_string({$t => $tid, $p => $_->{'mid'}}), + $temp->{'tid'} => $tid, + $temp->{'mid'} => $_->{'mid'}, + $temp->{'command'} => $action, + %{$additionalVariables} }, - $par -> {addParam} + $par->{'addParam'} )}. '
'; } else { - $html.= + $html .= '
'. - ${$template -> scrap ( - $temp -> { - length $_ -> {cat} + ${$template->scrap( + $temp->{ + (length $_->{'cat'} ? 'line' - : 'lineNC' + : 'lineNC').$del }, - { $temp -> {name} => $_ -> {name}, - $temp -> {subject} => $_ -> {subject}, - $temp -> {cat} => $_ -> {cat}, - $temp -> {time} => plain(short_hr_time ($_ -> {time})), - $temp -> {link} => query_string({$t => $tid, $p => $_ -> {mid}}), - $temp -> {tid} => $tid, - $temp -> {mid} => $_ -> {mid}, + { $temp->{'name'} => $_->{'name'}, + $temp->{'subject'} => $_->{'subject'}, + $temp->{'cat'} => $_->{'cat'}, + $temp->{'time'} => plain(short_hr_time ($_->{'time'})), + $temp->{'link'} => $base.query_string({$t => $tid, $p => $_->{'mid'}}), + $temp->{'tid'} => $tid, + $temp->{'mid'} => $_->{'mid'}, + $temp->{'command'} => $action, + %{$additionalVariables} }, - $par -> {addParam} + $par->{'addParam'} )}. '
'; } } - $html.='
' x ($oldlevel - $startlevel); + $html .= '' x ($oldlevel - $startlevel); \$html; } @@ -191,4 +214,4 @@ sub html_thread ($$$) { # # -### end of Template::_thread ################################################### \ No newline at end of file +### end of Template::_thread ###################################################