69 lines
1.9 KiB
JavaScript
69 lines
1.9 KiB
JavaScript
/**
|
|
* Provides the javascript for managing addressbooks.
|
|
*
|
|
* @copyright 2014-2015 Horde LLC
|
|
* @license LGPL-2.1 (http://www.horde.org/licenses/lgpl21)
|
|
*/
|
|
|
|
var HordeAddressbooksPrefs = {
|
|
|
|
// Variables set by other code: fields, nonetext
|
|
|
|
updateSearchFields: function()
|
|
{
|
|
var tmp,
|
|
sv = $F('selected_sources'),
|
|
sf = $('search_fields_select');
|
|
|
|
sf.childElements().invoke('remove');
|
|
|
|
if (sv.size() == 1) {
|
|
tmp = this.fields.get(sv.first());
|
|
tmp.entries.each(function(o) {
|
|
var opt = new Option(o.label, o.name);
|
|
if (tmp.selected.include(o.name)) {
|
|
opt.selected = true;
|
|
}
|
|
sf.insert(opt);
|
|
});
|
|
} else {
|
|
tmp = new Option(this.nonetext, '');
|
|
tmp.disabled = true;
|
|
sf.insert(tmp);
|
|
}
|
|
},
|
|
|
|
changeSearchFields: function()
|
|
{
|
|
var tmp,
|
|
out = $H(),
|
|
sv = $F('selected_sources');
|
|
|
|
if (sv.size() == 1) {
|
|
tmp = this.fields.get(sv.first());
|
|
tmp.selected = $F('search_fields_select');
|
|
this.fields.set(sv.first(), tmp);
|
|
|
|
this.fields.each(function(f) {
|
|
out.set(f.key, f.value.selected);
|
|
});
|
|
|
|
$('search_fields').setValue(Object.toJSON(out));
|
|
}
|
|
},
|
|
|
|
onDomLoad: function()
|
|
{
|
|
this.fields = $H(this.fields);
|
|
|
|
this.updateSearchFields();
|
|
|
|
$('search_fields_select').observe('change', this.changeSearchFields.bind(this));
|
|
$('selected_sources').observe('change', this.updateSearchFields.bind(this));
|
|
$('selected_sources').observe('HordeSourceSelectPrefs:remove', this.updateSearchFields.bind(this));
|
|
}
|
|
|
|
};
|
|
|
|
document.observe('dom:loaded', HordeAddressbooksPrefs.onDomLoad.bind(HordeAddressbooksPrefs));
|