bugzilla-4intranet/js/global.js

225 lines
7.7 KiB
JavaScript

/* 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):
* Guy Pyrzak <guy.pyrzak@gmail.com>
* Max Kanat-Alexander <mkanat@bugzilla.org>
*/
var mini_login_constants;
function show_mini_login_form(suffix)
{
var login_link = document.getElementById('login_link' + suffix);
var login_form = document.getElementById('mini_login' + suffix);
var account_container = document.getElementById('new_account_container' + suffix);
addClass(login_link, 'bz_default_hidden');
removeClass(login_form, 'bz_default_hidden');
addClass(account_container, 'bz_default_hidden');
login_form._shown = true;
return false;
}
function hide_mini_login_form(suffix)
{
var login_link = document.getElementById('login_link' + suffix);
var login_form = document.getElementById('mini_login' + suffix);
var account_container = document.getElementById('new_account_container' + suffix);
removeClass(login_link, 'bz_default_hidden');
addClass(login_form, 'bz_default_hidden');
removeClass(account_container, 'bz_default_hidden');
return false;
}
function show_forgot_form(suffix)
{
var forgot_link = document.getElementById('forgot_link' + suffix);
var forgot_form = document.getElementById('forgot_form' + suffix);
var login_container = document.getElementById('mini_login_container' + suffix);
addClass(forgot_link, 'bz_default_hidden');
removeClass(forgot_form, 'bz_default_hidden');
addClass(login_container, 'bz_default_hidden');
return false;
}
function hide_forgot_form(suffix)
{
var forgot_link = document.getElementById('forgot_link' + suffix);
var forgot_form = document.getElementById('forgot_form' + suffix);
var login_container = document.getElementById('mini_login_container' + suffix);
removeClass(forgot_link, 'bz_default_hidden');
addClass(forgot_form, 'bz_default_hidden');
removeClass(login_container, 'bz_default_hidden');
return false;
}
function init_mini_login_form(suffix)
{
var mini_login = document.getElementById('Bugzilla_login' + suffix );
var mini_password = document.getElementById('Bugzilla_password' + suffix );
var mini_dummy = document.getElementById(
'Bugzilla_password_dummy' + suffix);
// If the login and password are blank when the page loads, we display
// "login" and "password" in the boxes by default.
if (mini_login.value == "" && mini_password.value == "")
{
mini_login.value = mini_login_constants.login;
addClass(mini_login, "bz_mini_login_help");
addClass(mini_password, 'bz_default_hidden');
removeClass(mini_dummy, 'bz_default_hidden');
}
else
show_mini_login_form(suffix);
}
// Clear the words "login" and "password" from the form when you click
// in one of the boxes. We clear them both when you click in either box
// so that the browser's password-autocomplete can work.
function mini_login_on_focus(suffix)
{
var mini_login = document.getElementById('Bugzilla_login' + suffix);
var mini_password = document.getElementById('Bugzilla_password' + suffix);
var mini_dummy = document.getElementById('Bugzilla_password_dummy' + suffix);
removeClass(mini_login, "bz_mini_login_help");
if (mini_login.value == mini_login_constants.login)
mini_login.value = '';
removeClass(mini_password, 'bz_default_hidden');
addClass(mini_dummy, 'bz_default_hidden');
}
function check_mini_login_fields(suffix)
{
var mini_login = document.getElementById('Bugzilla_login' + suffix);
var mini_password = document.getElementById('Bugzilla_password' + suffix);
if (mini_login.value != "" && mini_password.value != "" &&
mini_login.value != mini_login_constants.login)
return true;
window.alert(mini_login_constants.warning);
return false;
}
function set_language(value)
{
setCookie('LANG', value, {
expires: new Date('January 1, 2038'),
path: BUGZILLA.param.cookie_path
});
window.location.reload();
}
// Convert user list from API format for SimpleAutocomplete
function convertUserList(u)
{
var data = [];
for (var i = 0; i < u.length; i++)
data.push([
'<span class="hintRealname">' + htmlspecialchars(u[i].real_name) +
'</span><br /><span class="hintEmail">' + htmlspecialchars(u[i].email) + '</span>',
u[i].email
]);
return data;
}
// Data loader for user autocomplete
function userAutocomplete(hint, emptyOptions, loadAllOnEmpty)
{
if (!hint.input.value && (!loadAllOnEmpty || emptyOptions))
{
hint.emptyText = 'Type at least 3 letters';
if (emptyOptions)
hint.replaceItems(convertUserList(emptyOptions));
else
hint.replaceItems(null);
return;
}
var u = window.location.href.replace(/[^\/]+$/, '');
u += 'xml.cgi?method=User.get&output=json&excludedisabled=1&include_fields=id&include_fields=real_name&include_fields=email&maxusermatches=';
if (hint.input.value)
{
u += '20';
var l = hint.input.value.split(/[\s,]*,[\s,]*/);
for (var i = 0; i < l.length; i++)
u += '&match='+encodeURIComponent(l[i]);
}
else
{
u += '500&match=*';
}
AjaxLoader(u, function(x)
{
var r = {};
try { eval('r = '+x.responseText+';'); } catch (e) { return; }
if (r.status == 'ok')
{
var data = convertUserList(r.users);
// FIXME "3" constant, messages: remove hardcode, also in Bugzilla::User::match()
if (data.length == 0 && hint.input.value.length < 3)
hint.emptyText = 'Type at least 3 letters';
else
hint.emptyText = 'No users found';
hint.replaceItems(data);
}
});
}
// Convert keyword list from API format for SimpleAutocomplete
function convertSimpleList(k)
{
var data = [];
for (var i = 0; i < k.length; i++)
data.push([ '<span class="hintRealname">' + htmlspecialchars(k[i].name) + '</span>', k[i].name ]);
return data;
}
// Data loader for field in buglist autocomplete
function fieldBuglistAutocomplete(hint, field, emptyOptions)
{
var u = window.location.href.replace(/[^\/]+$/, '');
u += 'xml.cgi?method=Field.get_values&output=json&field=' + field;
AjaxLoader(u, function(x) {
var r = {};
try { eval('r = '+x.responseText+';'); } catch (e) { return; }
if (r.status == 'ok')
{
var data = convertSimpleList(r.values);
hint.replaceItems(data);
}
});
}
function showFullComment(oper_id)
{
if (existElement("removed_" + oper_id))
{
document.getElementById("removed_" + oper_id).style.display = 'none';
document.getElementById("text_removed_" + oper_id).style.display = '';
}
if (existElement("added_" + oper_id))
{
document.getElementById("added_" + oper_id).style.display = 'none';
document.getElementById("text_added_" + oper_id).style.display = '';
}
document.getElementById("link_" + oper_id).style.display = 'none';
}
function readNewFunctionality()
{
var u = 'xml.cgi?method=User.read_new_functionality&output=json';
var el = document.getElementById('new_functionality');
el.parentElement.removeChild(el);
AjaxLoader(u, function() {});
return false;
}