summaryrefslogtreecommitdiffstats
path: root/colchange.cgi
diff options
context:
space:
mode:
Diffstat (limited to 'colchange.cgi')
-rwxr-xr-xcolchange.cgi204
1 files changed, 105 insertions, 99 deletions
diff --git a/colchange.cgi b/colchange.cgi
index bc18c3851..2e31207a5 100755
--- a/colchange.cgi
+++ b/colchange.cgi
@@ -26,132 +26,138 @@ use Storable qw(dclone);
# Maps parameters that control columns to the names of columns.
use constant COLUMN_PARAMS => {
- 'useclassification' => ['classification'],
- 'usebugaliases' => ['alias'],
- 'usetargetmilestone' => ['target_milestone'],
- 'useqacontact' => ['qa_contact', 'qa_contact_realname'],
- 'usestatuswhiteboard' => ['status_whiteboard'],
+ 'useclassification' => ['classification'],
+ 'usebugaliases' => ['alias'],
+ 'usetargetmilestone' => ['target_milestone'],
+ 'useqacontact' => ['qa_contact', 'qa_contact_realname'],
+ 'usestatuswhiteboard' => ['status_whiteboard'],
};
# We only show these columns if an object of this type exists in the
# database.
-use constant COLUMN_CLASSES => {
- 'Bugzilla::Flag' => 'flagtypes.name',
- 'Bugzilla::Keyword' => 'keywords',
-};
+use constant COLUMN_CLASSES =>
+ {'Bugzilla::Flag' => 'flagtypes.name', 'Bugzilla::Keyword' => 'keywords',};
Bugzilla->login();
-my $cgi = Bugzilla->cgi;
+my $cgi = Bugzilla->cgi;
my $template = Bugzilla->template;
-my $vars = {};
+my $vars = {};
my $columns = dclone(Bugzilla::Search::COLUMNS);
# You can't manually select "relevance" as a column you want to see.
delete $columns->{'relevance'};
-foreach my $param (keys %{ COLUMN_PARAMS() }) {
- next if Bugzilla->params->{$param};
- foreach my $column (@{ COLUMN_PARAMS->{$param} }) {
- delete $columns->{$column};
- }
+foreach my $param (keys %{COLUMN_PARAMS()}) {
+ next if Bugzilla->params->{$param};
+ foreach my $column (@{COLUMN_PARAMS->{$param}}) {
+ delete $columns->{$column};
+ }
}
-foreach my $class (keys %{ COLUMN_CLASSES() }) {
- require_module($class);
- my $column = COLUMN_CLASSES->{$class};
- delete $columns->{$column} if !$class->any_exist;
+foreach my $class (keys %{COLUMN_CLASSES()}) {
+ require_module($class);
+ my $column = COLUMN_CLASSES->{$class};
+ delete $columns->{$column} if !$class->any_exist;
}
if (!Bugzilla->user->is_timetracker) {
- foreach my $column (TIMETRACKING_FIELDS) {
- delete $columns->{$column};
- }
+ foreach my $column (TIMETRACKING_FIELDS) {
+ delete $columns->{$column};
+ }
}
$vars->{'columns'} = $columns;
my @collist;
if (defined $cgi->param('rememberedquery')) {
- my $search;
- if (defined $cgi->param('saved_search')) {
- $search = new Bugzilla::Search::Saved($cgi->param('saved_search'));
- }
-
- my $token = $cgi->param('token');
- if ($search) {
- check_hash_token($token, [$search->id, $search->name]);
- }
- else {
- check_hash_token($token, ['default-list']);
- }
-
- my $splitheader = 0;
- if (defined $cgi->param('resetit')) {
- @collist = DEFAULT_COLUMN_LIST;
- } else {
- if (defined $cgi->param("selected_columns")) {
- @collist = grep { exists $columns->{$_} }
- $cgi->param("selected_columns");
- }
- if (defined $cgi->param('splitheader')) {
- $splitheader = $cgi->param('splitheader')? 1: 0;
- }
- }
- my $list = join(" ", @collist);
-
- if ($list) {
- # Only set the cookie if this is not a saved search.
- # Saved searches have their own column list
- if (!$cgi->param('save_columns_for_search')) {
- $cgi->send_cookie(-name => 'COLUMNLIST',
- -value => $list,
- -expires => 'Fri, 01-Jan-2038 00:00:00 GMT');
- }
- }
- else {
- $cgi->remove_cookie('COLUMNLIST');
+ my $search;
+ if (defined $cgi->param('saved_search')) {
+ $search = new Bugzilla::Search::Saved($cgi->param('saved_search'));
+ }
+
+ my $token = $cgi->param('token');
+ if ($search) {
+ check_hash_token($token, [$search->id, $search->name]);
+ }
+ else {
+ check_hash_token($token, ['default-list']);
+ }
+
+ my $splitheader = 0;
+ if (defined $cgi->param('resetit')) {
+ @collist = DEFAULT_COLUMN_LIST;
+ }
+ else {
+ if (defined $cgi->param("selected_columns")) {
+ @collist = grep { exists $columns->{$_} } $cgi->param("selected_columns");
}
- if ($splitheader) {
- $cgi->send_cookie(-name => 'SPLITHEADER',
- -value => $splitheader,
- -expires => 'Fri, 01-Jan-2038 00:00:00 GMT');
+ if (defined $cgi->param('splitheader')) {
+ $splitheader = $cgi->param('splitheader') ? 1 : 0;
}
- else {
- $cgi->remove_cookie('SPLITHEADER');
+ }
+ my $list = join(" ", @collist);
+
+ if ($list) {
+
+ # Only set the cookie if this is not a saved search.
+ # Saved searches have their own column list
+ if (!$cgi->param('save_columns_for_search')) {
+ $cgi->send_cookie(
+ -name => 'COLUMNLIST',
+ -value => $list,
+ -expires => 'Fri, 01-Jan-2038 00:00:00 GMT'
+ );
}
-
- $vars->{'message'} = "change_columns";
-
- if ($cgi->param('save_columns_for_search')
- && defined $search && $search->user->id == Bugzilla->user->id)
- {
- my $params = new Bugzilla::CGI($search->url);
- $params->param('columnlist', join(",", @collist));
- $search->set_url($params->query_string());
- $search->update();
- }
-
- my $params = new Bugzilla::CGI($cgi->param('rememberedquery'));
+ }
+ else {
+ $cgi->remove_cookie('COLUMNLIST');
+ }
+ if ($splitheader) {
+ $cgi->send_cookie(
+ -name => 'SPLITHEADER',
+ -value => $splitheader,
+ -expires => 'Fri, 01-Jan-2038 00:00:00 GMT'
+ );
+ }
+ else {
+ $cgi->remove_cookie('SPLITHEADER');
+ }
+
+ $vars->{'message'} = "change_columns";
+
+ if ( $cgi->param('save_columns_for_search')
+ && defined $search
+ && $search->user->id == Bugzilla->user->id)
+ {
+ my $params = new Bugzilla::CGI($search->url);
$params->param('columnlist', join(",", @collist));
- $vars->{'redirect_url'} = "buglist.cgi?".$params->query_string();
-
- # If we're running on Microsoft IIS, $cgi->redirect discards
- # the Set-Cookie lines. In mod_perl, $cgi->redirect with cookies
- # causes the page to be rendered as text/plain.
- # Workaround is to use the old-fashioned redirection mechanism.
- # See bug 214466 and bug 376044 for details.
- print $cgi->redirect($vars->{'redirect_url'});
- exit;
+ $search->set_url($params->query_string());
+ $search->update();
+ }
+
+ my $params = new Bugzilla::CGI($cgi->param('rememberedquery'));
+ $params->param('columnlist', join(",", @collist));
+ $vars->{'redirect_url'} = "buglist.cgi?" . $params->query_string();
+
+ # If we're running on Microsoft IIS, $cgi->redirect discards
+ # the Set-Cookie lines. In mod_perl, $cgi->redirect with cookies
+ # causes the page to be rendered as text/plain.
+ # Workaround is to use the old-fashioned redirection mechanism.
+ # See bug 214466 and bug 376044 for details.
+ print $cgi->redirect($vars->{'redirect_url'});
+ exit;
}
if (defined $cgi->param('columnlist')) {
- @collist = split(/[ ,]+/, $cgi->param('columnlist'));
-} elsif (defined $cgi->cookie('COLUMNLIST')) {
- @collist = split(/ /, $cgi->cookie('COLUMNLIST'));
-} else {
- @collist = DEFAULT_COLUMN_LIST;
+ @collist = split(/[ ,]+/, $cgi->param('columnlist'));
+}
+elsif (defined $cgi->cookie('COLUMNLIST')) {
+ @collist = split(/ /, $cgi->cookie('COLUMNLIST'));
+}
+else {
+ @collist = DEFAULT_COLUMN_LIST;
}
$vars->{'collist'} = \@collist;
@@ -161,12 +167,12 @@ $vars->{'buffer'} = $cgi->query_string();
my $search;
if (defined $cgi->param('query_based_on')) {
- my $searches = Bugzilla->user->queries;
- my ($search) = grep($_->name eq $cgi->param('query_based_on'), @$searches);
+ my $searches = Bugzilla->user->queries;
+ my ($search) = grep($_->name eq $cgi->param('query_based_on'), @$searches);
- if ($search) {
- $vars->{'saved_search'} = $search;
- }
+ if ($search) {
+ $vars->{'saved_search'} = $search;
+ }
}
# Generate and return the UI (HTML page) from the appropriate template.