From bcccebe2c5955d122ce193bf3c2e4a9335e98788 Mon Sep 17 00:00:00 2001 From: "jocuri%softhome.net" <> Date: Wed, 10 Dec 2003 07:12:32 +0000 Subject: Bug 190223: Complete templatization for editkeywords.cgi; reviewed by kiko, jth, gerv; r/a=justdave. --- editkeywords.cgi | 182 +++++++++++++------------------------------------------ 1 file changed, 42 insertions(+), 140 deletions(-) (limited to 'editkeywords.cgi') diff --git a/editkeywords.cgi b/editkeywords.cgi index c51580272..cf20d7a07 100755 --- a/editkeywords.cgi +++ b/editkeywords.cgi @@ -1,4 +1,4 @@ -#!/usr/bin/perl -w +#!/usr/bin/perl -wT # -*- Mode: perl; indent-tabs-mode: nil -*- # # The contents of this file are subject to the Mozilla Public @@ -29,83 +29,19 @@ use Bugzilla::Config qw(:DEFAULT $datadir); use vars qw($template $vars); -my $localtrailer = "edit more keywords"; - - -# -# Displays a text like "a.", "a or b.", "a, b or c.", "a, b, c or d." -# -# XXX This implementation of PutTrailer outputs a default link back to -# the query page instead of the index, which is inconsistent with other -# PutTrailer() implementations. -# - -sub PutTrailer (@) -{ - my (@links) = ("Back to the query page", @_); - - my $count = $#links; - my $num = 0; - print "

\n"; - foreach (@links) { - print $_; - if ($num == $count) { - print ".\n"; - } - elsif ($num == $count-1) { - print " or "; - } - else { - print ", "; - } - $num++; - } - PutFooter(); -} - - -# -# Displays the form to edit a keyword's parameters -# - -sub EmitFormElements ($$$) -{ - my ($id, $name, $description) = @_; - - $name = value_quote($name); - $description = value_quote($description); - - print qq{}; - - print " Name:\n"; - print " \n"; - print "\n"; - - print " Description:\n"; - print " \n"; - print "\n"; - -} - sub Validate ($$) { my ($name, $description) = @_; if ($name eq "") { - print "You must enter a non-blank name for the keyword. Please press\n"; - print "Back and try again.\n"; - PutTrailer($localtrailer); + ThrowUserError("keyword_blank_name"); exit; } if ($name =~ /[\s,]/) { - print "You may not use commas or whitespace in a keyword name.\n"; - print "Please press Back and try again.\n"; - PutTrailer($localtrailer); + ThrowUserError("keyword_invalid_name"); exit; } if ($description eq "") { - print "You must enter a non-blank description of the keyword.\n"; - print "Please press Back and try again.\n"; - PutTrailer($localtrailer); + ThrowUserError("keyword_blank_description"); exit; } } @@ -121,10 +57,7 @@ confirm_login(); print Bugzilla->cgi->header(); unless (UserInGroup("editkeywords")) { - PutHeader("Not allowed"); - print "Sorry, you aren't a member of the 'editkeywords' group.\n"; - print "And so, you aren't allowed to add, modify or delete keywords.\n"; - PutTrailer(); + ThrowUserError("keyword_access_denied"); exit; } @@ -136,51 +69,31 @@ detaint_natural($::FORM{id}); if ($action eq "") { - PutHeader("Select keyword"); - my $tableheader = qq{ - - - - - - - -}; - print $tableheader; - my $line_count = 0; - my $max_table_size = 50; + my @keywords; SendSQL("SELECT keyworddefs.id, keyworddefs.name, keyworddefs.description, COUNT(keywords.bug_id) FROM keyworddefs LEFT JOIN keywords ON keyworddefs.id = keywords.keywordid GROUP BY keyworddefs.id ORDER BY keyworddefs.name"); + while (MoreSQLData()) { my ($id, $name, $description, $bugs) = FetchSQLData(); - $description ||= "missing"; - $bugs ||= 'none'; - if ($line_count == $max_table_size) { - print "
Edit keyword ...DescriptionBugsAction
\n$tableheader"; - $line_count = 0; - } - $line_count++; - - print qq{ - -$name -$description -$bugs -Delete - -}; + my $keyword = {}; + $keyword->{'id'} = $id; + $keyword->{'name'} = $name; + $keyword->{'description'} = $description; + $keyword->{'bug_count'} = $bugs; + push(@keywords, $keyword); } - print qq{ - -Add a new keywordAdd - - -}; - PutTrailer(); + + print Bugzilla->cgi->header(); + + $vars->{'keywords'} = \@keywords; + $template->process("admin/keywords/list.html.tmpl", + $vars) + || ThrowTemplateError($template->error()); + exit; } @@ -200,8 +113,6 @@ if ($action eq 'add') { # if ($action eq 'new') { - PutHeader("Adding new keyword"); - # Cleanups and valididy checks my $name = trim($::FORM{name} || ''); @@ -212,9 +123,8 @@ if ($action eq 'new') { SendSQL("SELECT id FROM keyworddefs WHERE name = " . SqlQuote($name)); if (FetchOneColumn()) { - print "The keyword '$name' already exists. Please press\n"; - print "Back and try again.\n"; - PutTrailer($localtrailer); + $vars->{'name'} = $name; + ThrowUserError("keyword_already_exists"); exit; } @@ -244,9 +154,13 @@ if ($action eq 'new') { # Make versioncache flush unlink "$datadir/versioncache"; - print "OK, done.

\n"; - PutTrailer("edit more keywords", - "add another keyword"); + print Bugzilla->cgi->header(); + + $vars->{'name'} = $name; + $template->process("admin/keywords/created.html.tmpl", + $vars) + || ThrowTemplateError($template->error()); + exit; } @@ -259,8 +173,6 @@ if ($action eq 'new') { # if ($action eq 'edit') { - PutHeader("Edit keyword"); - my $id = trim($::FORM{id} || 0); # get data of keyword SendSQL("SELECT name,description @@ -268,35 +180,28 @@ if ($action eq 'edit') { WHERE id=$id"); my ($name, $description) = FetchSQLData(); if (!$name) { - print "Something screwy is going on. Please try again.\n"; - PutTrailer($localtrailer); + $vars->{'id'} = $id; + ThrowCodeError("invalid_keyword_id", $vars); exit; } - print "

\n"; - print "\n"; - EmitFormElements($id, $name, $description); - - print "\n"; - print " \n"; - print " \n
Bugs:"; SendSQL("SELECT count(*) FROM keywords WHERE keywordid = $id"); my $bugs = ''; $bugs = FetchOneColumn() if MoreSQLData(); - print $bugs || 'none'; - print "
\n"; + $vars->{'keyword_id'} = $id; + $vars->{'name'} = $name; + $vars->{'description'} = $description; + $vars->{'bug_count'} = $bugs; - print "\n"; - print "\n"; + print Bugzilla->cgi->header(); - print "
"; + $template->process("admin/keywords/edit.html.tmpl", + $vars) + || ThrowTemplateError($template->error()); - my $x = $localtrailer; - $x =~ s/more/other/; - PutTrailer($x); exit; } @@ -317,11 +222,8 @@ if ($action eq 'update') { my $tmp = FetchOneColumn(); if ($tmp && $tmp != $id) { - PutHeader("Update keyword"); - - print "The keyword '$name' already exists. Please press\n"; - print "Back and try again.\n"; - PutTrailer($localtrailer); + $vars->{'name'} = $name; + ThrowUserError("keyword_already_exists", $vars); exit; } -- cgit v1.2.3-24-g4f1b