quips.cgi: code style, simplify show, add admin_table style
parent
e03220940e
commit
41dfcefaa8
113
quips.cgi
113
quips.cgi
|
@ -42,105 +42,104 @@ my $vars = {};
|
|||
my $action = $ARGS->{action} || "";
|
||||
my $token = $ARGS->{token};
|
||||
|
||||
if ($action eq "show") {
|
||||
if ($action eq "show")
|
||||
{
|
||||
# Read in the entire quip list
|
||||
my $quipsref = $dbh->selectall_arrayref(
|
||||
"SELECT quipid, userid, quip, approved FROM quips");
|
||||
|
||||
my $quips;
|
||||
my @quipids;
|
||||
foreach my $quipref (@$quipsref) {
|
||||
my ($quipid, $userid, $quip, $approved) = @$quipref;
|
||||
$quips->{$quipid} = {'userid' => $userid, 'quip' => $quip,
|
||||
'approved' => $approved};
|
||||
push(@quipids, $quipid);
|
||||
my $quips = $dbh->selectall_hashref(
|
||||
"SELECT q.quipid, q.userid, q.quip, q.approved, p.login_name".
|
||||
" FROM quips q LEFT JOIN profiles p ON p.userid=q.userid", 'quipid'
|
||||
);
|
||||
$vars->{quips} = $quips;
|
||||
$vars->{show_quips} = 1;
|
||||
}
|
||||
|
||||
my $users;
|
||||
my $sth = $dbh->prepare("SELECT login_name FROM profiles WHERE userid = ?");
|
||||
foreach my $quipid (@quipids) {
|
||||
my $userid = $quips->{$quipid}{'userid'};
|
||||
if ($userid && not defined $users->{$userid}) {
|
||||
($users->{$userid}) = $dbh->selectrow_array($sth, undef, $userid);
|
||||
}
|
||||
}
|
||||
$vars->{'quipids'} = \@quipids;
|
||||
$vars->{'quips'} = $quips;
|
||||
$vars->{'users'} = $users;
|
||||
$vars->{'show_quips'} = 1;
|
||||
}
|
||||
|
||||
if ($action eq "add") {
|
||||
(Bugzilla->params->{'quip_list_entry_control'} eq "closed") &&
|
||||
if ($action eq "add")
|
||||
{
|
||||
if (Bugzilla->params->{quip_list_entry_control} eq "closed")
|
||||
{
|
||||
ThrowUserError("no_new_quips");
|
||||
}
|
||||
|
||||
check_hash_token($token, [ 'create-quips' ]);
|
||||
|
||||
# Add the quip
|
||||
my $approved = (Bugzilla->params->{'quip_list_entry_control'} eq "open")
|
||||
my $approved = (Bugzilla->params->{quip_list_entry_control} eq "open")
|
||||
|| Bugzilla->user->in_group('admin') || 0;
|
||||
my $comment = $ARGS->{quip};
|
||||
$comment || ThrowUserError("need_quip");
|
||||
trick_taint($comment); # Used in a placeholder below
|
||||
|
||||
$dbh->do("INSERT INTO quips (userid, quip, approved) VALUES (?, ?, ?)",
|
||||
undef, ($user->id, $comment, $approved));
|
||||
$dbh->do(
|
||||
"INSERT INTO quips (userid, quip, approved) VALUES (?, ?, ?)",
|
||||
undef, $user->id, $comment, $approved
|
||||
);
|
||||
|
||||
$vars->{'added_quip'} = $comment;
|
||||
$vars->{added_quip} = $comment;
|
||||
}
|
||||
|
||||
if ($action eq 'approve') {
|
||||
$user->in_group('admin')
|
||||
|| ThrowUserError("auth_failure", {group => "admin",
|
||||
if ($action eq 'approve')
|
||||
{
|
||||
$user->in_group('admin') || ThrowUserError("auth_failure", {
|
||||
group => "admin",
|
||||
action => "approve",
|
||||
object => "quips"});
|
||||
object => "quips",
|
||||
});
|
||||
|
||||
check_hash_token($token, [ 'approve-quips' ]);
|
||||
|
||||
# Read in the entire quip list
|
||||
my $quipsref = $dbh->selectall_arrayref("SELECT quipid, approved FROM quips");
|
||||
|
||||
my %quips;
|
||||
foreach my $quipref (@$quipsref) {
|
||||
foreach my $quipref (@$quipsref)
|
||||
{
|
||||
my ($quipid, $approved) = @$quipref;
|
||||
$quips{$quipid} = $approved;
|
||||
}
|
||||
|
||||
my @approved;
|
||||
my @unapproved;
|
||||
foreach my $quipid (keys %quips) {
|
||||
foreach my $quipid (keys %quips)
|
||||
{
|
||||
# Must check for each quipid being defined for concurrency and
|
||||
# automated usage where only one quipid might be defined.
|
||||
my $quip = $ARGS->{"quipid_$quipid"} ? 1 : 0;
|
||||
if (defined $ARGS->{"defined_quipid_$quipid"}) {
|
||||
if($quips{$quipid} != $quip) {
|
||||
if($quip) {
|
||||
push(@approved, $quipid);
|
||||
} else {
|
||||
push(@unapproved, $quipid);
|
||||
if (defined $ARGS->{"defined_quipid_$quipid"})
|
||||
{
|
||||
if ($quips{$quipid} != $quip)
|
||||
{
|
||||
if ($quip)
|
||||
{
|
||||
push @approved, $quipid;
|
||||
}
|
||||
else
|
||||
{
|
||||
push @unapproved, $quipid;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$dbh->do("UPDATE quips SET approved = 1 WHERE quipid IN (" .
|
||||
join(",", @approved) . ")") if($#approved > -1);
|
||||
$dbh->do("UPDATE quips SET approved = 0 WHERE quipid IN (" .
|
||||
join(",", @unapproved) . ")") if($#unapproved > -1);
|
||||
$vars->{ 'approved' } = \@approved;
|
||||
$vars->{ 'unapproved' } = \@unapproved;
|
||||
$dbh->do("UPDATE quips SET approved = 1 WHERE quipid IN (" . join(",", @approved) . ")") if @approved;
|
||||
$dbh->do("UPDATE quips SET approved = 0 WHERE quipid IN (" . join(",", @unapproved) . ")") if @unapproved;
|
||||
$vars->{approved} = \@approved;
|
||||
$vars->{unapproved} = \@unapproved;
|
||||
}
|
||||
|
||||
if ($action eq "delete") {
|
||||
Bugzilla->user->in_group("admin")
|
||||
|| ThrowUserError("auth_failure", {group => "admin",
|
||||
if ($action eq "delete")
|
||||
{
|
||||
Bugzilla->user->in_group("admin") || ThrowUserError("auth_failure", {
|
||||
group => "admin",
|
||||
action => "delete",
|
||||
object => "quips"});
|
||||
object => "quips",
|
||||
});
|
||||
|
||||
my $quipid = $ARGS->{quipid};
|
||||
ThrowCodeError("need_quipid") unless $quipid =~ /(\d+)/;
|
||||
$quipid = $1;
|
||||
check_hash_token($token, [ 'quips', $quipid ]);
|
||||
|
||||
($vars->{'deleted_quip'}) = $dbh->selectrow_array(
|
||||
"SELECT quip FROM quips WHERE quipid = ?",
|
||||
undef, $quipid);
|
||||
($vars->{deleted_quip}) = $dbh->selectrow_array(
|
||||
"SELECT quip FROM quips WHERE quipid = ?", undef, $quipid
|
||||
);
|
||||
$dbh->do("DELETE FROM quips WHERE quipid = ?", undef, $quipid);
|
||||
}
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
[% IF added_quip %]
|
||||
<p>
|
||||
<font color="red">
|
||||
Your quip '<tt>[% added_quip FILTER html %]</tt>' has been added.
|
||||
Your quip '<tt>[% added_quip | html %]</tt>' has been added.
|
||||
[% IF Param("quip_list_entry_control") == "moderated" AND !user.in_group('admin') %]
|
||||
It will be used as soon as it gets approved.
|
||||
[% END %]
|
||||
|
@ -45,7 +45,7 @@
|
|||
[% IF deleted_quip %]
|
||||
<p>
|
||||
<font color="red">
|
||||
The quip '<tt>[% deleted_quip FILTER html %]</tt>' has been deleted.
|
||||
The quip '<tt>[% deleted_quip | html %]</tt>' has been deleted.
|
||||
</font>
|
||||
</p>
|
||||
[% END %]
|
||||
|
@ -54,7 +54,6 @@
|
|||
<p>[% approved.size %] quips approved and [% unapproved.size %] quips unapproved</p>
|
||||
[% END %]
|
||||
|
||||
|
||||
<p>
|
||||
[% terms.Bugzilla %] will pick a random quip for the headline on each
|
||||
[% terms.bug %] list.
|
||||
|
@ -72,7 +71,7 @@
|
|||
<form method="post" action="quips.cgi">
|
||||
<input type="hidden" name="action" value="add">
|
||||
<input type="hidden" name="token"
|
||||
value="[% issue_hash_token(['create-quips']) FILTER html %]">
|
||||
value="[% issue_hash_token(['create-quips']) | html %]">
|
||||
<input size="80" name="quip">
|
||||
<p>
|
||||
<input type="submit" id="add" value="Add This Quip">
|
||||
|
@ -91,7 +90,7 @@
|
|||
<ul>
|
||||
[% FOREACH quipid = quipids %]
|
||||
[% NEXT IF NOT quips.$quipid.approved %]
|
||||
<li>[% quips.$quipid.quip FILTER html %]</li>
|
||||
<li>[% quips.$quipid.quip | html %]</li>
|
||||
[% END %]
|
||||
</ul>
|
||||
[% ELSE %]
|
||||
|
@ -104,40 +103,37 @@
|
|||
<form name="editform" method="post" action="quips.cgi">
|
||||
<input type="hidden" name="action" value="approve">
|
||||
<input type="hidden" name="token"
|
||||
value="[% issue_hash_token(['approve-quips']) FILTER html %]">
|
||||
<table border="1">
|
||||
value="[% issue_hash_token(['approve-quips']) | html %]">
|
||||
<table class="admin_table">
|
||||
<thead><tr>
|
||||
<th>Quip</th>
|
||||
<th>Author</th>
|
||||
<th>Action</th>
|
||||
<th>Approved</th>
|
||||
</tr></thead><tbody>
|
||||
[% FOREACH quipid = quipids %]
|
||||
<tr>
|
||||
<td>[% quips.$quipid.quip FILTER html %]</td>
|
||||
[% FOREACH quipid = quips.keys.nsort %]
|
||||
<tr class="[% loop.index % 2 ? 'odd_row' : 'even_row' %]">
|
||||
<td>[% quips.$quipid.quip | html %]</td>
|
||||
<td>[% quips.$quipid.login_name || "Unknown" | html %]</td>
|
||||
<td>
|
||||
[% userid = quips.$quipid.userid %]
|
||||
[% users.$userid FILTER html %]
|
||||
[% "Unknown" IF NOT users.$userid %]
|
||||
</td>
|
||||
<td>
|
||||
<a href="quips.cgi?action=delete&quipid=[% quipid FILTER url_quote %]&token=
|
||||
[%- issue_hash_token(['quips', quipid]) FILTER url_quote %]">
|
||||
<a href="quips.cgi?action=delete&quipid=[% quipid | url_quote %]&token=
|
||||
[%- issue_hash_token(['quips', quipid]) | url_quote %]">
|
||||
Delete
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<input type="hidden" name="defined_quipid_[% quipid FILTER html %]"
|
||||
id="defined_quipid_[% quipid FILTER html %]"
|
||||
<input type="hidden" name="defined_quipid_[% quipid | html %]"
|
||||
id="defined_quipid_[% quipid | html %]"
|
||||
value="1">
|
||||
<input type="checkbox" name="quipid_[% quipid FILTER html %]"
|
||||
id="quipid_[% quipid FILTER html %]"
|
||||
<input type="checkbox" name="quipid_[% quipid | html %]"
|
||||
id="quipid_[% quipid | html %]"
|
||||
[%- ' checked="checked"' IF quips.$quipid.approved %]>
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
</tbody>
|
||||
</table>
|
||||
<p>
|
||||
<script type="text/javascript"><!--
|
||||
var numelements = document.forms.editform.elements.length;
|
||||
function SetCheckboxes(value) {
|
||||
|
@ -154,8 +150,9 @@
|
|||
//--></script>
|
||||
|
||||
<input type="submit" id="update" value="Save Changes">
|
||||
</p>
|
||||
</form>
|
||||
<br>
|
||||
<br />
|
||||
[% END %]
|
||||
[% ELSE %]
|
||||
<p>
|
||||
|
|
Loading…
Reference in New Issue