summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--admin.cgi49
-rw-r--r--skins/standard/admin.css22
-rw-r--r--skins/standard/global.css1
-rw-r--r--template/en/default/admin/admin.html.tmpl126
-rw-r--r--template/en/default/filterexceptions.pl4
-rw-r--r--template/en/default/global/common-links.html.tmpl7
-rw-r--r--template/en/default/global/useful-links.html.tmpl60
-rw-r--r--template/en/default/global/user-error.html.tmpl4
8 files changed, 212 insertions, 61 deletions
diff --git a/admin.cgi b/admin.cgi
new file mode 100644
index 000000000..3edff1338
--- /dev/null
+++ b/admin.cgi
@@ -0,0 +1,49 @@
+#!/usr/bin/perl -wT
+# -*- Mode: perl; indent-tabs-mode: nil -*-
+#
+# The contents of this file are subject to the Mozilla Public
+# License Version 1.1 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS
+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# The Original Code is the Bugzilla Bug Tracking System.
+#
+# The Initial Developer of the Original Code is Frédéric Buclin.
+# Portions created by Frédéric Buclin are Copyright (C) 2007
+# Frédéric Buclin. All Rights Reserved.
+#
+# Contributor(s): Frédéric Buclin <LpSolit@gmail.com>
+
+use strict;
+
+use lib qw(.);
+
+use Bugzilla;
+use Bugzilla::Constants;
+use Bugzilla::Error;
+
+my $cgi = Bugzilla->cgi;
+my $template = Bugzilla->template;
+my $user = Bugzilla->login(LOGIN_REQUIRED);
+
+print $cgi->header();
+
+$user->in_group('admin')
+ || $user->in_group('tweakparams')
+ || $user->in_group('editusers')
+ || $user->can_bless
+ || (Bugzilla->params->{'useclassification'} && $user->in_group('editclassifications'))
+ || $user->in_group('editcomponents')
+ || scalar(@{$user->get_products_by_permission('editcomponents')})
+ || $user->in_group('creategroups')
+ || $user->in_group('editkeywords')
+ || $user->in_group('bz_canusewhines')
+ || ThrowUserError('auth_failure', {action => 'access', object => 'administrative_pages'});
+
+$template->process('admin/admin.html.tmpl')
+ || ThrowTemplateError($template->error());
diff --git a/skins/standard/admin.css b/skins/standard/admin.css
index e94e889da..9fcb46c94 100644
--- a/skins/standard/admin.css
+++ b/skins/standard/admin.css
@@ -43,3 +43,25 @@ p.areyoureallyreallysure {
tr.param_disabled {
background-color: lightgrey;
}
+
+td.admin_links {
+ width: 50%;
+ padding: 1em;
+ vertical-align: top;
+}
+
+td.admin_links dt {
+ margin-top: 1em;
+}
+
+td.admin_links dt.forbidden, td.admin_links dd.forbidden {
+ font-size: smaller;
+ font-style: italic;
+ color: #aaa;
+}
+
+td.admin_links dt.forbidden a, td.admin_links dd.forbidden a {
+ text-decoration: none;
+ color: inherit;
+ cursor: default;
+}
diff --git a/skins/standard/global.css b/skins/standard/global.css
index 0b0a51300..1687a4aa0 100644
--- a/skins/standard/global.css
+++ b/skins/standard/global.css
@@ -139,7 +139,6 @@
}
#footer #links-actions,
- #footer #links-edit,
#footer #links-saved,
#footer #links-special {
display: table-row;
diff --git a/template/en/default/admin/admin.html.tmpl b/template/en/default/admin/admin.html.tmpl
new file mode 100644
index 000000000..15316ed64
--- /dev/null
+++ b/template/en/default/admin/admin.html.tmpl
@@ -0,0 +1,126 @@
+[%# 1.0@bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+ # License Version 1.1 (the "License"); you may not use this file
+ # except in compliance with the License. You may obtain a copy of
+ # the License at http://www.mozilla.org/MPL/
+ #
+ # Software distributed under the License is distributed on an "AS
+ # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ # implied. See the License for the specific language governing
+ # rights and limitations under the License.
+ #
+ # The Original Code is the Bugzilla Bug Tracking System.
+ #
+ # Contributor(s): Frédéric Buclin <LpSolit@gmail.com>
+ #%]
+
+[% PROCESS global/variables.none.tmpl %]
+
+[% title = BLOCK %]
+ Administrate your installation ([% terms.Bugzilla %]
+ [%+ constants.BUGZILLA_VERSION FILTER html %])
+[% END %]
+
+[% PROCESS global/header.html.tmpl title = title
+ style_urls = ['skins/standard/admin.css']
+%]
+
+<div>
+ This page is only accessible to empowered users. You can access administrive pages
+ from here (based on your privileges), letting you configure different aspects of
+ this installation. Note: some sections may not be accessible to you and are marked
+ using a lighter color.
+</div>
+
+<table>
+ <tr>
+ <td class="admin_links">
+ <dl>
+ [% class = user.groups.tweakparams ? "" : "forbidden" %]
+ <dt class="[% class %]"><a href="editparams.cgi">Parameters</a></dt>
+ <dd class="[% class %]">Set core parameters of the installation. That's the
+ place where you specify the URL to access this installation, determine how
+ users authenticate, choose which [% terms.bug %] fields to display, select
+ the mail transfer agent to send email notifications, choose which group of
+ users can use charts and share queries, and much more.</dd>
+
+ <dt class="[% class %]"><a href="editsettings.cgi">User Preferences</a></dt>
+ <dd class="[% class %]">Set the default user preferences. These are the values
+ which will be used by default for all users. Users will be able to edit their
+ own preferences from the <a href="userprefs.cgi?tab=settings">Preferences</a>.</dd>
+
+ [% class = user.groups.editcomponents ? "" : "forbidden" %]
+ <dt class="[% class %]"><a href="sanitycheck.cgi">Sanity Check</a></dt>
+ <dd class="[% class %]">Run sanity checks to locate problems in your database.
+ This may take several tens of minutes depending on the size of your installation.
+ You can also automate this check by running <tt>sanitycheck.pl</tt> from a cron job.
+ A notification will be sent per email to the specified user if errors are detected.</dd>
+
+ [% class = (user.groups.editusers || user.can_bless) ? "" : "forbidden" %]
+ <dt class="[% class %]"><a href="editusers.cgi">Users</a></dt>
+ <dd class="[% class %]">Create new user accounts or edit existing ones. You can
+ also add and remove users from groups (also known as "user privileges").</dd>
+
+ [% class = (Param('useclassification') && user.groups.editclassifications) ? "" : "forbidden" %]
+ <dt class="[% class %]"><a href="editclassifications.cgi">Classifications</a></dt>
+ <dd class="[% class %]">If your installation has to manage many products at once,
+ it's a good idea to group these products into distinct categories. This lets users
+ find information more easily when doing searches or when filing new [% terms.bugs %].</dd>
+
+ [% class = (user.groups.editcomponents
+ || user.get_products_by_permission("editcomponents").size) ? "" : "forbidden" %]
+ <dt class="[% class %]"><a href="editproducts.cgi">Products</a></dt>
+ <dd class="[% class %]">Edit all aspects of products, including group restrictions
+ which let you define who can access [% terms.bugs %] being in these products. You
+ can also edit some specific attributes of products such as
+ <a href="editcomponents.cgi">components</a>, <a href="editversions.cgi">versions</a>
+ and <a href="editmilestones.cgi">milestones</a> directly.</dd>
+ </dl>
+ </td>
+
+ <td class="admin_links">
+ <dl>
+ [% class = user.groups.editcomponents ? "" : "forbidden" %]
+ <dt class="[% class %]"><a href="editflagtypes.cgi">Flags</a></dt>
+ <dd class="[% class %]">A flag is a custom 4-states attribute of [% terms.bugs %]
+ and/or attachments. These states are: granted, denied, requested and undefined.
+ You can set as many flags as desired per [% terms.bug %], and define which users
+ are allowed to edit them.</dd>
+
+ [% class = user.groups.admin ? "" : "forbidden" %]
+ <dt class="[% class %]"><a href="editfields.cgi">Custom Fields</a></dt>
+ <dd class="[% class %]">[% terms.Bugzilla %] lets you define fields which are
+ not implemented by default, based on your local and specific requirements.
+ These fields can then be used as any other field, meaning that you can set
+ them in [% terms.bugs %] and run any search involving them.<br>
+ Before creating new fields, keep in mind that too many fields may make the user
+ interface more complex and harder to use. Be sure you have investigated other ways
+ to satisfy your needs before doing this.</dd>
+
+ <dt class="[% class %]"><a href="editvalues.cgi">Field Values</a></dt>
+ <dd class="[% class %]">Define legal values for fields whose values must belong
+ to some given list. This is also the place where you define legal values for some
+ types of custom fields.</dd>
+
+ [% class = user.groups.creategroups ? "" : "forbidden" %]
+ <dt class="[% class %]"><a href="editgroups.cgi">Groups</a></dt>
+ <dd class="[% class %]">Define groups which will be used in the installation.
+ They can either be used to define new user privileges or to restrict the access
+ to some [% terms.bugs %].</dd>
+
+ [% class = user.groups.editkeywords ? "" : "forbidden" %]
+ <dt class="[% class %]"><a href="editkeywords.cgi">Keywords</a></dt>
+ <dd class="[% class %]">Set keywords to be used with [% terms.bugs %]. Keywords
+ are an easy way to "tag" [% terms.bugs %] to let you find them more easily later.</dd>
+
+ [% class = user.groups.bz_canusewhines ? "" : "forbidden" %]
+ <dt class="[% class %]"><a href="editwhines.cgi">Whining</a></dt>
+ <dd class="[% class %]">Set queries which will be run at some specified date
+ and time, and get the result of these queries directly per email. This is a
+ good way to create reminders and to keep track of the activity in your installation.</dd>
+ </dl>
+ </td>
+ </tr>
+</table>
+
+[% PROCESS global/footer.html.tmpl %]
diff --git a/template/en/default/filterexceptions.pl b/template/en/default/filterexceptions.pl
index 231ad98f5..72ab1550a 100644
--- a/template/en/default/filterexceptions.pl
+++ b/template/en/default/filterexceptions.pl
@@ -460,6 +460,10 @@
'section_num'
],
+'admin/admin.html.tmpl' => [
+ 'class'
+],
+
'admin/table.html.tmpl' => [
'link_uri'
],
diff --git a/template/en/default/global/common-links.html.tmpl b/template/en/default/global/common-links.html.tmpl
index dca5d7262..937f7a955 100644
--- a/template/en/default/global/common-links.html.tmpl
+++ b/template/en/default/global/common-links.html.tmpl
@@ -55,6 +55,13 @@
[% IF user.login %]
<li><span class="separator">| </span><a href="userprefs.cgi">Preferences</a></li>
+ [% IF user.groups.tweakparams || user.groups.editusers || user.can_bless
+ || (Param('useclassification') && user.groups.editclassifications)
+ || user.groups.editcomponents || user.groups.admin || user.groups.creategroups
+ || user.groups.editkeywords || user.groups.bz_canusewhines
+ || user.get_products_by_permission("editcomponents").size %]
+ <li><span class="separator">| </span><a href="admin.cgi">Administration</a></li>
+ [% END %]
<li>
<span class="separator">| </span>
[% IF user.authorizer.can_logout %]
diff --git a/template/en/default/global/useful-links.html.tmpl b/template/en/default/global/useful-links.html.tmpl
index 5dff3d578..998b5a67a 100644
--- a/template/en/default/global/useful-links.html.tmpl
+++ b/template/en/default/global/useful-links.html.tmpl
@@ -32,65 +32,7 @@
[% PROCESS "global/common-links.html.tmpl" btn_id = "find_bottom" %]
</li>
- [%# We have no other choices than enumerating all required privileges to have
- # at least one link in this section. %]
- [% IF user.login
- && (user.groups.tweakparams || user.groups.editusers || user.can_bless
- || (Param('useclassification') && user.groups.editclassifications)
- || user.groups.editcomponents || user.groups.admin || user.groups.creategroups
- || user.groups.editkeywords || user.groups.bz_canusewhines) %]
-
- [% print_pipe = 0 %]
- <li id="links-edit">
- <div class="label">Edit: </div>
- <ul class="links">
- [% IF user.groups.tweakparams %]
- <li>[% '<span class="separator">| </span>' IF print_pipe %]<a href="editparams.cgi">Parameters</a></li>
- [% print_pipe = 1 %]
- <li>[% '<span class="separator">| </span>' IF print_pipe %]<a href="editsettings.cgi">User Preferences</a></li>
- [% END %]
- [% IF user.groups.editcomponents %]
- <li>[% '<span class="separator">| </span>' IF print_pipe %]<a href="sanitycheck.cgi">Sanity Check</a></li>
- [% print_pipe = 1 %]
- [% END %]
- [% IF user.groups.editusers || user.can_bless %]
- <li>[% '<span class="separator">| </span>' IF print_pipe %]<a href="editusers.cgi">Users</a></li>
- [% print_pipe = 1 %]
- [% END %]
- [% IF Param('useclassification') && user.groups.editclassifications %]
- <li>[% '<span class="separator">| </span>' IF print_pipe %]<a href="editclassifications.cgi">Classifications</a></li>
- [% print_pipe = 1 %]
- [% END %]
- [% IF user.groups.editcomponents || user.get_products_by_permission("editcomponents").size %]
- <li>[% '<span class="separator">| </span>' IF print_pipe %]<a href="editproducts.cgi">Products</a></li>
- [% print_pipe = 1 %]
- [% END %]
- [% IF user.groups.editcomponents %]
- <li>[% '<span class="separator">| </span>' IF print_pipe %]<a href="editflagtypes.cgi">Flags</a></li>
- [% print_pipe = 1 %]
- [% END %]
- [% IF user.groups.admin %]
- <li>[% '<span class="separator">| </span>' IF print_pipe %]<a href="editfields.cgi">Custom Fields</a></li>
- [% print_pipe = 1 %]
- <li>[% '<span class="separator">| </span>' IF print_pipe %]<a href="editvalues.cgi">Field Values</a></li>
- [% END %]
- [% IF user.groups.creategroups %]
- <li>[% '<span class="separator">| </span>' IF print_pipe %]<a href="editgroups.cgi">Groups</a></li>
- [% print_pipe = 1 %]
- [% END %]
- [% IF user.groups.editkeywords %]
- <li>[% '<span class="separator">| </span>' IF print_pipe %]<a href="editkeywords.cgi">Keywords</a></li>
- [% print_pipe = 1 %]
- [% END %]
- [% IF user.groups.bz_canusewhines %]
- <li>[% '<span class="separator">| </span>' IF print_pipe %]<a href="editwhines.cgi">Whining</a></li>
- [% print_pipe = 1 %]
- [% END %]
- </ul>
- </li>
- [% END %]
-
- [%# Saved searches %]
+ [%# Saved searches %]
[% IF user.showmybugslink OR user.queries.size
OR user.queries_subscribed.size
diff --git a/template/en/default/global/user-error.html.tmpl b/template/en/default/global/user-error.html.tmpl
index 7452ab8d1..171eb9c20 100644
--- a/template/en/default/global/user-error.html.tmpl
+++ b/template/en/default/global/user-error.html.tmpl
@@ -148,7 +148,9 @@
use
[% END %]
- [% IF object == "attachment" %]
+ [% IF object == "administrative_pages" %]
+ administrative pages
+ [% ELSIF object == "attachment" %]
this attachment
[% ELSIF object == "bugs" %]
[%+ terms.bugs %]