mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-03-19 13:25:57 +00:00
see ChangeLog
Monotone-Revision: 9054022ef1ca8aeba6e34842d27d9b94ce002b89 Monotone-Author: dev-unix.inverse.qc.ca Monotone-Date: 2006-06-15T19:34:10 Monotone-Branch: ca.inverse.sogo
This commit is contained in:
227
UI/WebServerResources/UIxMailToSelection.js
Normal file
227
UI/WebServerResources/UIxMailToSelection.js
Normal file
@@ -0,0 +1,227 @@
|
||||
/*
|
||||
Copyright (C) 2005 SKYRIX Software AG
|
||||
|
||||
This file is part of OpenGroupware.org.
|
||||
|
||||
OGo is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU Lesser General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
OGo is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with OGo; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA.
|
||||
*/
|
||||
|
||||
/* Dependencies:
|
||||
* It's required that "currentIndex" is defined in a top level context.
|
||||
*
|
||||
* Exports:
|
||||
* defines UIxRecipientSelectorHasRecipients() returning a bool for the
|
||||
* surrounding context to check.
|
||||
*/
|
||||
|
||||
var lastIndex = currentIndex;
|
||||
|
||||
function sanitizedCn(cn) {
|
||||
var parts;
|
||||
parts = cn.split(', ');
|
||||
if(parts.length == 1)
|
||||
return cn;
|
||||
return parts[0];
|
||||
}
|
||||
|
||||
function hasAddress(email) {
|
||||
var e = document.getElementById(email);
|
||||
if(e)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
function rememberAddress(email) {
|
||||
var list, span, idx;
|
||||
|
||||
list = document.getElementById('addr_addresses');
|
||||
span = document.createElement('span');
|
||||
span.id = email;
|
||||
idx = document.createTextNode(currentIndex);
|
||||
span.appendChild(idx);
|
||||
list.appendChild(span);
|
||||
}
|
||||
|
||||
function checkAddresses() {
|
||||
alert("addressCount: " + this.getAddressCount() + " currentIndex: " + currentIndex + " lastIndex: " + lastIndex);
|
||||
}
|
||||
|
||||
function addAddress(type, email, uid, sn, cn, dn) {
|
||||
var shouldAddRow, s, e;
|
||||
|
||||
shouldAddRow = true;
|
||||
if (cn)
|
||||
s = this.sanitizedCn(cn) + ' <' + email + '>';
|
||||
else
|
||||
s = email;
|
||||
|
||||
if(this.hasAddress(email))
|
||||
return;
|
||||
|
||||
e = document.getElementById('addr_0');
|
||||
if(e.value == '') {
|
||||
e.value = s;
|
||||
shouldAddRow = false;
|
||||
}
|
||||
if(shouldAddRow) {
|
||||
this.fancyAddRow(false, s);
|
||||
}
|
||||
this.rememberAddress(email);
|
||||
}
|
||||
|
||||
function fancyAddRow(shouldEdit, text) {
|
||||
var addr, table, lastChild, proto, row, select, input;
|
||||
|
||||
addr = document.getElementById('addr_' + lastIndex);
|
||||
if (addr && addr.value == '') {
|
||||
input = document.getElementById('compose_subject_input');
|
||||
if (input && input.value != '') {
|
||||
input.focus();
|
||||
input.select();
|
||||
return;
|
||||
}
|
||||
}
|
||||
table = this.getTable();
|
||||
lastChild = document.getElementById('row_last');
|
||||
|
||||
currentIndex++;
|
||||
|
||||
proto = document.getElementById('row_' + lastIndex);
|
||||
row = proto.cloneNode(true);
|
||||
row.id = 'row_' + currentIndex;
|
||||
|
||||
// select popup
|
||||
select = row.childNodes[1].childNodes[1];
|
||||
select.name = 'popup_' + currentIndex;
|
||||
select.value = proto.childNodes[1].childNodes[1].value;
|
||||
input = row.childNodes[3].childNodes[1];
|
||||
input.name = 'addr_' + currentIndex;
|
||||
input.id = 'addr_' + currentIndex;
|
||||
input.value = text;
|
||||
|
||||
table.insertBefore(row, lastChild);
|
||||
|
||||
if(shouldEdit) {
|
||||
input.focus();
|
||||
input.select();
|
||||
}
|
||||
this.adjustInlineAttachmentListHeight(this);
|
||||
}
|
||||
|
||||
function addressFieldGotFocus(sender) {
|
||||
var idx;
|
||||
|
||||
idx = this.getIndexFromIdentifier(sender.id);
|
||||
if ((lastIndex == idx) || (idx == 0)) return;
|
||||
this.removeLastEditedRowIfEmpty();
|
||||
}
|
||||
function addressFieldLostFocus(sender) {
|
||||
lastIndex = this.getIndexFromIdentifier(sender.id);
|
||||
}
|
||||
|
||||
function removeLastEditedRowIfEmpty() {
|
||||
var idx, addr, table, senderRow;
|
||||
|
||||
idx = lastIndex;
|
||||
if (idx == 0) return;
|
||||
addr = document.getElementById('addr_' + idx);
|
||||
if (!addr) return;
|
||||
if (addr.value != '') return;
|
||||
addr = this.findAddressWithIndex(idx);
|
||||
if(addr) {
|
||||
var addresses = document.getElementById('addr_addresses');
|
||||
addresses.removeChild(addr);
|
||||
}
|
||||
table = this.getTable();
|
||||
senderRow = this.findRowWithIndex(idx);
|
||||
table.removeChild(senderRow);
|
||||
this.adjustInlineAttachmentListHeight(this);
|
||||
}
|
||||
|
||||
function findAddressWithIndex(idx) {
|
||||
var list, i, count, addr, idx
|
||||
list = document.getElementById('addr_addresses').childNodes;
|
||||
count = list.length;
|
||||
for(i = 0; i < count; i++) {
|
||||
addr = list[i];
|
||||
if(addr.innerHTML == idx)
|
||||
return addr;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function findRowWithIndex(idx) {
|
||||
var id = 'row_' + idx;
|
||||
return document.getElementById(id);
|
||||
}
|
||||
|
||||
function getIndexFromIdentifier(id) {
|
||||
return id.split('_')[1];
|
||||
}
|
||||
|
||||
function getTable() {
|
||||
return document.getElementById('addr_table').childNodes[1];
|
||||
};
|
||||
|
||||
function getAddressIDs() {
|
||||
var table, rows, i, count, addressIDs;
|
||||
|
||||
addressIDs = new Array();
|
||||
|
||||
table = this.getTable();
|
||||
rows = table.childNodes;
|
||||
count = rows.length;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
var row, rowId;
|
||||
|
||||
row = table.childNodes[i];
|
||||
rowId = row.id;
|
||||
if (rowId && rowId != 'row_last') {
|
||||
var idx;
|
||||
|
||||
idx = this.getIndexFromIdentifier(rowId);
|
||||
addressIDs.push(idx);
|
||||
}
|
||||
}
|
||||
return addressIDs;
|
||||
}
|
||||
|
||||
function getAddressCount() {
|
||||
var addressCount, addressIDs, i, count;
|
||||
|
||||
addressCount = 0;
|
||||
addressIDs = this.getAddressIDs();
|
||||
count = addressIDs.length;
|
||||
for (i = 0; i < count; i++) {
|
||||
var idx, input;
|
||||
|
||||
idx = addressIDs[i];
|
||||
input = document.getElementById('addr_' + idx);
|
||||
if (input.value != '')
|
||||
addressCount++;
|
||||
}
|
||||
return addressCount;
|
||||
}
|
||||
|
||||
function UIxRecipientSelectorHasRecipients() {
|
||||
var count;
|
||||
|
||||
count = this.getAddressCount();
|
||||
if (count > 0)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
Reference in New Issue
Block a user