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