blob: 01f30dbedb81a80bb0b14eba7ba29325e3c43a43 [file] [log] [blame]
ddkilzer@apple.com8040bb02017-03-21 16:27:49 +00001#!/usr/bin/perl -T
2# This Source Code Form is subject to the terms of the Mozilla Public
3# License, v. 2.0. If a copy of the MPL was not distributed with this
4# file, You can obtain one at http://mozilla.org/MPL/2.0/.
timothy@apple.comf42518d2008-02-06 20:19:16 +00005#
ddkilzer@apple.com8040bb02017-03-21 16:27:49 +00006# This Source Code Form is "Incompatible With Secondary Licenses", as
7# defined by the Mozilla Public License, v. 2.0.
timothy@apple.comf42518d2008-02-06 20:19:16 +00008
ddkilzer@apple.com8040bb02017-03-21 16:27:49 +00009use 5.10.1;
timothy@apple.comf42518d2008-02-06 20:19:16 +000010use strict;
ddkilzer@apple.com8040bb02017-03-21 16:27:49 +000011use warnings;
12
ddkilzer@apple.com097da082009-07-03 02:14:25 +000013use lib qw(. lib);
timothy@apple.comf42518d2008-02-06 20:19:16 +000014
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +000015use Bugzilla;
timothy@apple.comf42518d2008-02-06 20:19:16 +000016use Bugzilla::Constants;
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +000017use Bugzilla::Util;
18use Bugzilla::Error;
19use Bugzilla::Keyword;
20use Bugzilla::Token;
timothy@apple.comf42518d2008-02-06 20:19:16 +000021
22my $cgi = Bugzilla->cgi;
23my $dbh = Bugzilla->dbh;
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +000024my $template = Bugzilla->template;
25my $vars = {};
timothy@apple.comf42518d2008-02-06 20:19:16 +000026
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +000027my $user = Bugzilla->login(LOGIN_REQUIRED);
timothy@apple.comf42518d2008-02-06 20:19:16 +000028
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +000029print $cgi->header();
timothy@apple.comf42518d2008-02-06 20:19:16 +000030
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +000031$user->in_group('editkeywords')
timothy@apple.comf42518d2008-02-06 20:19:16 +000032 || ThrowUserError("auth_failure", {group => "editkeywords",
33 action => "edit",
34 object => "keywords"});
35
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +000036my $action = trim($cgi->param('action') || '');
37my $key_id = $cgi->param('id');
38my $token = $cgi->param('token');
39
timothy@apple.comf42518d2008-02-06 20:19:16 +000040$vars->{'action'} = $action;
41
42
43if ($action eq "") {
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +000044 $vars->{'keywords'} = Bugzilla::Keyword->get_all_with_bug_count();
timothy@apple.comf42518d2008-02-06 20:19:16 +000045
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +000046 $template->process("admin/keywords/list.html.tmpl", $vars)
timothy@apple.comf42518d2008-02-06 20:19:16 +000047 || ThrowTemplateError($template->error());
timothy@apple.comf42518d2008-02-06 20:19:16 +000048 exit;
49}
timothy@apple.comf42518d2008-02-06 20:19:16 +000050
51if ($action eq 'add') {
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +000052 $vars->{'token'} = issue_session_token('add_keyword');
timothy@apple.comf42518d2008-02-06 20:19:16 +000053
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +000054 $template->process("admin/keywords/create.html.tmpl", $vars)
timothy@apple.comf42518d2008-02-06 20:19:16 +000055 || ThrowTemplateError($template->error());
timothy@apple.comf42518d2008-02-06 20:19:16 +000056 exit;
57}
58
59#
60# action='new' -> add keyword entered in the 'action=add' screen
61#
timothy@apple.comf42518d2008-02-06 20:19:16 +000062if ($action eq 'new') {
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +000063 check_token_data($token, 'add_keyword');
64 my $name = $cgi->param('name') || '';
65 my $desc = $cgi->param('description') || '';
timothy@apple.comf42518d2008-02-06 20:19:16 +000066
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +000067 my $keyword = Bugzilla::Keyword->create(
68 { name => $name, description => $desc });
timothy@apple.comf42518d2008-02-06 20:19:16 +000069
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +000070 delete_token($token);
timothy@apple.comf42518d2008-02-06 20:19:16 +000071
ddkilzer@apple.com097da082009-07-03 02:14:25 +000072 $vars->{'message'} = 'keyword_created';
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +000073 $vars->{'name'} = $keyword->name;
ddkilzer@apple.com097da082009-07-03 02:14:25 +000074 $vars->{'keywords'} = Bugzilla::Keyword->get_all_with_bug_count();
timothy@apple.comf42518d2008-02-06 20:19:16 +000075
ddkilzer@apple.com097da082009-07-03 02:14:25 +000076 $template->process("admin/keywords/list.html.tmpl", $vars)
77 || ThrowTemplateError($template->error());
timothy@apple.comf42518d2008-02-06 20:19:16 +000078 exit;
79}
80
timothy@apple.comf42518d2008-02-06 20:19:16 +000081
82#
83# action='edit' -> present the edit keywords from
84#
85# (next action would be 'update')
86#
87
88if ($action eq 'edit') {
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +000089 my $keyword = new Bugzilla::Keyword($key_id)
ddkilzer@apple.com8040bb02017-03-21 16:27:49 +000090 || ThrowUserError('invalid_keyword_id', { id => $key_id });
timothy@apple.comf42518d2008-02-06 20:19:16 +000091
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +000092 $vars->{'keyword'} = $keyword;
93 $vars->{'token'} = issue_session_token('edit_keyword');
timothy@apple.comf42518d2008-02-06 20:19:16 +000094
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +000095 $template->process("admin/keywords/edit.html.tmpl", $vars)
timothy@apple.comf42518d2008-02-06 20:19:16 +000096 || ThrowTemplateError($template->error());
timothy@apple.comf42518d2008-02-06 20:19:16 +000097 exit;
98}
99
100
101#
102# action='update' -> update the keyword
103#
104
105if ($action eq 'update') {
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +0000106 check_token_data($token, 'edit_keyword');
107 my $keyword = new Bugzilla::Keyword($key_id)
ddkilzer@apple.com8040bb02017-03-21 16:27:49 +0000108 || ThrowUserError('invalid_keyword_id', { id => $key_id });
timothy@apple.comf42518d2008-02-06 20:19:16 +0000109
ddkilzer@apple.com57772842014-10-16 16:00:58 +0000110 $keyword->set_all({
111 name => scalar $cgi->param('name'),
112 description => scalar $cgi->param('description'),
113 });
ddkilzer@apple.com097da082009-07-03 02:14:25 +0000114 my $changes = $keyword->update();
timothy@apple.comf42518d2008-02-06 20:19:16 +0000115
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +0000116 delete_token($token);
timothy@apple.comf42518d2008-02-06 20:19:16 +0000117
ddkilzer@apple.com097da082009-07-03 02:14:25 +0000118 $vars->{'message'} = 'keyword_updated';
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +0000119 $vars->{'keyword'} = $keyword;
ddkilzer@apple.com097da082009-07-03 02:14:25 +0000120 $vars->{'changes'} = $changes;
121 $vars->{'keywords'} = Bugzilla::Keyword->get_all_with_bug_count();
timothy@apple.comf42518d2008-02-06 20:19:16 +0000122
ddkilzer@apple.com097da082009-07-03 02:14:25 +0000123 $template->process("admin/keywords/list.html.tmpl", $vars)
124 || ThrowTemplateError($template->error());
timothy@apple.comf42518d2008-02-06 20:19:16 +0000125 exit;
126}
127
ddkilzer@apple.com097da082009-07-03 02:14:25 +0000128if ($action eq 'del') {
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +0000129 my $keyword = new Bugzilla::Keyword($key_id)
ddkilzer@apple.com8040bb02017-03-21 16:27:49 +0000130 || ThrowUserError('invalid_keyword_id', { id => $key_id });
timothy@apple.comf42518d2008-02-06 20:19:16 +0000131
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +0000132 $vars->{'keyword'} = $keyword;
ddkilzer@apple.com097da082009-07-03 02:14:25 +0000133 $vars->{'token'} = issue_session_token('delete_keyword');
timothy@apple.comf42518d2008-02-06 20:19:16 +0000134
ddkilzer@apple.com097da082009-07-03 02:14:25 +0000135 $template->process("admin/keywords/confirm-delete.html.tmpl", $vars)
136 || ThrowTemplateError($template->error());
137 exit;
138}
timothy@apple.comf42518d2008-02-06 20:19:16 +0000139
ddkilzer@apple.com097da082009-07-03 02:14:25 +0000140if ($action eq 'delete') {
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +0000141 check_token_data($token, 'delete_keyword');
ddkilzer@apple.com097da082009-07-03 02:14:25 +0000142 my $keyword = new Bugzilla::Keyword($key_id)
ddkilzer@apple.com8040bb02017-03-21 16:27:49 +0000143 || ThrowUserError('invalid_keyword_id', { id => $key_id });
timothy@apple.comf42518d2008-02-06 20:19:16 +0000144
ddkilzer@apple.com57772842014-10-16 16:00:58 +0000145 $keyword->remove_from_db();
timothy@apple.comf42518d2008-02-06 20:19:16 +0000146
ddkilzer@apple.comf3615fc2009-07-03 02:13:41 +0000147 delete_token($token);
timothy@apple.comf42518d2008-02-06 20:19:16 +0000148
ddkilzer@apple.com097da082009-07-03 02:14:25 +0000149 $vars->{'message'} = 'keyword_deleted';
ddkilzer@apple.com57772842014-10-16 16:00:58 +0000150 $vars->{'keyword'} = $keyword;
ddkilzer@apple.com097da082009-07-03 02:14:25 +0000151 $vars->{'keywords'} = Bugzilla::Keyword->get_all_with_bug_count();
timothy@apple.comf42518d2008-02-06 20:19:16 +0000152
ddkilzer@apple.com097da082009-07-03 02:14:25 +0000153 $template->process("admin/keywords/list.html.tmpl", $vars)
154 || ThrowTemplateError($template->error());
timothy@apple.comf42518d2008-02-06 20:19:16 +0000155 exit;
156}
157
ddkilzer@apple.com57772842014-10-16 16:00:58 +0000158ThrowUserError('unknown_action', {action => $action});