--- /dev/null
+/*# 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 Pascal Held.
+ #
+ # Contributor(s): Pascal Held <paheld@gmail.com>
+ #
+*/
+
+function initChangeColumns() {
+ window.onunload = unload;
+ var av_select = document.getElementById("available_columns");
+ var sel_select = document.getElementById("selected_columns");
+ document.getElementById("avail_header").style.display = "inline";
+ document.getElementById("available_columns").style.display = "inline";
+ document.getElementById("select_button").style.display = "inline";
+ document.getElementById("deselect_button").style.display = "inline";
+ document.getElementById("up_button").style.display = "inline";
+ document.getElementById("down_button").style.display = "inline";
+ switch_options(sel_select, av_select, false);
+ sel_select.selectedIndex = -1;
+ updateView();
+}
+
+function switch_options(from_box, to_box, selected) {
+ for (var i = 0; i<from_box.options.length; i++) {
+ var opt = from_box.options[i];
+ if (opt.selected == selected) {
+ var newopt = new Option(opt.text, opt.value, opt.defaultselected, opt.selected);
+ to_box.options[to_box.options.length] = newopt;
+ from_box.options[i] = null;
+ i = i - 1;
+ }
+
+ }
+}
+
+function move_select() {
+ var av_select = document.getElementById("available_columns");
+ var sel_select = document.getElementById("selected_columns");
+ switch_options(av_select, sel_select, true);
+ updateView();
+}
+
+function move_deselect() {
+ var av_select = document.getElementById("available_columns");
+ var sel_select = document.getElementById("selected_columns");
+ switch_options(sel_select, av_select, true);
+ updateView();
+}
+
+function move_up() {
+ var sel_select = document.getElementById("selected_columns");
+ var last = sel_select.options[0];
+ var dummy = new Option("", "", false, false);
+ for (var i = 1; i<sel_select.options.length; i++) {
+ var opt = sel_select.options[i];
+ if (opt.selected) {
+ sel_select.options[i] = dummy;
+ sel_select.options[i-1] = opt;
+ sel_select.options[i] = last;
+ }
+ else{
+ last = opt;
+ }
+ }
+ updateView();
+}
+
+function move_down() {
+ var sel_select = document.getElementById("selected_columns");
+ var last = sel_select.options[sel_select.options.length-1];
+ var dummy = new Option("", "", false, false);
+ for (var i = sel_select.options.length-2; i >= 0; i--) {
+ var opt = sel_select.options[i];
+ if (opt.selected) {
+ sel_select.options[i] = dummy;
+ sel_select.options[i + 1] = opt;
+ sel_select.options[i] = last;
+ }
+ else{
+ last = opt;
+ }
+ }
+ updateView();
+}
+
+function updateView() {
+ var select_button = document.getElementById("select_button");
+ var deselect_button = document.getElementById("deselect_button");
+ var up_button = document.getElementById("up_button");
+ var down_button = document.getElementById("down_button");
+ select_button.disabled = true;
+ deselect_button.disabled = true;
+ up_button.disabled = true;
+ down_button.disabled = true;
+ var av_select = document.getElementById("available_columns");
+ var sel_select = document.getElementById("selected_columns");
+ for (var i = 0; i < av_select.options.length; i++) {
+ if (av_select.options[i].selected) {
+ select_button.disabled = false;
+ break;
+ }
+ }
+ for (var i = 0; i < sel_select.options.length; i++) {
+ if (sel_select.options[i].selected) {
+ deselect_button.disabled = false;
+ up_button.disabled = false;
+ down_button.disabled = false;
+ break;
+ }
+ }
+ if (sel_select.options.length > 0) {
+ if (sel_select.options[0].selected) {
+ up_button.disabled = true;
+ }
+ if (sel_select.options[sel_select.options.length - 1].selected) {
+ down_button.disabled = true;
+ }
+ }
+}
+
+function change_submit() {
+ var sel_select = document.getElementById("selected_columns");
+ for (var i = 0; i < sel_select.options.length; i++) {
+ sel_select.options[i].selected = true;
+ }
+ return false;
+}
+
+function unload() {
+ var sel_select = document.getElementById("selected_columns");
+ for (var i = 0; i < sel_select.options.length; i++) {
+ sel_select.options[i].selected = true;
+ }
+}
# Rights Reserved.
#
# Contributor(s): Dave Lawrence <dkl@redhat.com>
+ # Pascal Held <paheld@gmail.com>
#%]
[% PROCESS global/variables.none.tmpl %]
[% PROCESS global/header.html.tmpl
title = "Change Columns"
+ javascript_urls = "js/change-columns.js"
+ onload = "initChangeColumns()"
%]
<p>
[% field_descs.reporter_realname = "Reporter Realname" %]
[% field_descs.qa_contact_realname = "QA Contact Realname" %]
-<form action="colchange.cgi">
+<form name="changecolumns" action="colchange.cgi" onsubmit="change_submit();">
<input type="hidden" name="rememberedquery" value="[% buffer FILTER html %]">
- [% FOREACH column = masterlist %]
- <input type="checkbox" id="[% column %]" name="column_[% column %]"
- [%+ "checked='checked'" IF lsearch(collist, column) != -1 %]>
- <label for="[% column %]">
- [% (field_descs.${column} || column) FILTER html %]
- </label>
- <br>
- [% END %]
+ <table>
+ <tr>
+ <th><div id="avail_header" class="bz_default_hidden">Available Columns</div></th>
+ <th></th>
+ <th>Selected Columns</th>
+ <th></th>
+ </tr>
+ <tr>
+ <td>
+ <select name="available_columns" id="available_columns"
+ size="15" multiple="multiple" onchange="updateView();"
+ class="bz_default_hidden">
+ </select>
+ </td>
+ <td>
+ <input class="image_button" type="button" id="select_button"
+ name="select" onclick="move_select()">
+ <br><br>
+ <input class="image_button" type="button" id="deselect_button"
+ name="deselect" onclick="move_deselect()">
+ </td>
+ <td>
+ <select name="selected_columns" id="selected_columns"
+ size="15" multiple="multiple" onchange="updateView();">
+ [% FOREACH column = collist %]
+ <option value="[% column FILTER html %]" selected="selected">
+ [% (field_descs.${column} || column) FILTER html %]
+ </option>
+ [% END %]
+ [% FOREACH column = masterlist %]
+ [% IF lsearch(collist, column) == -1 %]
+ <option value="[% column FILTER html %]">
+ [% (field_descs.${column} || column) FILTER html %]
+ </option>
+ [% END %]
+ [% END %]
+ </select>
+ </td>
+ <td>
+ <input class="image_button" type="button" id="up_button"
+ name="up" onclick="move_up()">
+ <br><br>
+ <input class="image_button" type="button" id="down_button"
+ name="down" onclick="move_down()">
+ </td>
+ </tr>
+ </table>
+ </center>
<p>
<input id="nosplitheader" type="radio" name="splitheader" value="0"