Monotone-Parent: 759009bd466f9b73934029fb2e05ae98192c20f5

Monotone-Revision: 2221037a745efee3a1e109e40d7d44e79a62502f

Monotone-Author: flachapelle@inverse.ca
Monotone-Date: 2007-08-02T21:12:42
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Francis Lachapelle 2007-08-02 21:12:42 +00:00
parent 6b361fd2dc
commit 0cf4e792cc
5 changed files with 70 additions and 33 deletions

View File

@ -26,6 +26,7 @@
string="itemZoomText" selection="zoom"/>
<a href="#" class="button _disabled"><var:string label:value="+" /></a>
</div>
<div/>
<div id="freeBusyView">
<table id="freeBusy"
xmlns="http://www.w3.org/1999/xhtml"

View File

@ -168,6 +168,35 @@ Element.addMethods({
if (node.nodeType == 1)
$(node).deselect();
}
}
},
setCaretTo: function(element, pos) {
element = $(element);
if (element.selectionStart) { // For Mozilla and Safari
element.focus();
element.setSelectionRange(pos, pos);
}
else if (element.createTextRange) { // For IE
var range = element.createTextRange();
range.move("character", pos);
range.select();
}
},
selectText: function(element, start, end) {
element = $(element);
if (element.setSelectionRange) { // For Mozilla and Safari
element.setSelectionRange(start, end);
}
else if (element.createTextRange) { // For IE
var textRange = element.createTextRange();
textRange.moveStart("character", start);
textRange.moveEnd("character", end-element.value.length);
textRange.select();
}
else {
element.select();
}
}
});

View File

@ -28,7 +28,8 @@ TABLE#freeBusy TH
TABLE#freeBusy TH.attendees,
TABLE#freeBusy TD.attendees
{ position: absolute;
{ /*position: absolute;*/
position: fixed;
padding: 0px .5em;
margin: 0px;
width: 11em;

View File

@ -14,7 +14,11 @@ var attendeesNames;
var attendeesEmails;
function onContactKeydown(event) {
if (event.keyCode == 9) {
if (event.ctrlKey || event.metaKey) {
this.focussed = true;
return;
}
if (event.keyCode == 9) { // Tab
preventDefault(event);
if (this.confirmedValue)
this.value = this.confirmedValue;
@ -26,14 +30,14 @@ function onContactKeydown(event) {
if (input.readOnly)
newAttendee(null);
else {
input.focus();
input.select();
input.focussed = true;
input.activate();
}
}
else if (!running) {
if (event.keyCode == 8
|| event.keyCode == 32
if (event.keyCode == 0
|| event.keyCode == 8 // Backspace
|| event.keyCode == 32 // Space
|| event.keyCode > 47) {
running = true;
requestField = this;
@ -41,8 +45,8 @@ function onContactKeydown(event) {
setTimeout("triggerRequest()", delay);
}
else if (this.confirmedValue) {
if (event.keyCode == 13) {
this.setSelectionRange(this.value.length, this.value.length);
if (event.keyCode == 13) { // Enter
$(this).setCaretTo(this.value.length);
}
}
}
@ -54,7 +58,8 @@ function triggerRequest() {
document.contactLookupAjaxRequest.abort();
}
var urlstr = ( UserFolderURL + "Contacts/contactSearch?search="
+ requestField.value );
+ escape(requestField.value) );
//log (urlstr);
document.contactLookupAjaxRequest = triggerAjaxRequest(urlstr,
updateResults,
requestField);
@ -81,7 +86,7 @@ function updateResults(http) {
searchField.confirmedValue = completeEmail;
if (searchField.focussed) {
var end = searchField.value.length;
searchField.setSelectionRange(start, end);
$(searchField).selectText(start, end);
}
else
searchField.value = text[1];
@ -182,24 +187,25 @@ function redisplayFreeBusyZone() {
}
function newAttendee(event) {
var table = $("freeBusy");
var tbody = table.tBodies[0];
var model = tbody.rows[tbody.rows.length - 1];
var newAttendeeRow = tbody.rows[tbody.rows.length - 2];
var newRow = model.cloneNode(true);
newRow.setAttribute("class", "");
tbody.insertBefore(newRow, newAttendeeRow);
//table.tBodies[0].appendChild(newRow);
var input = $(newRow.cells[0]).childNodesWithTag("input")[0];
input.setAttribute("autocomplete", "off");
input.serial = "pouet";
Event.observe(input, "blur", checkAttendee.bindAsEventListener(input));
Event.observe(input, "keydown", onContactKeydown.bindAsEventListener(input));
input.focus();
input.focussed = true;
var table = $("freeBusy");
var tbody = table.tBodies[0];
var model = tbody.rows[tbody.rows.length - 1];
var newAttendeeRow = tbody.rows[tbody.rows.length - 2];
var newRow = model.cloneNode(true);
tbody.insertBefore(newRow, newAttendeeRow);
$(newRow).className = "";
var input = $(newRow.cells[0]).childNodesWithTag("input")[0];
input.setAttribute("autocomplete", "off");
Event.observe(input, "blur", checkAttendee.bindAsEventListener(input));
Event.observe(input, "keydown", onContactKeydown.bindAsEventListener(input));
input.focussed = true;
input.activate();
}
function checkAttendee() {
function checkAttendee() { log ("checkAttendee (loosing focus)");
this.focussed = false;
var th = this.parentNode.parentNode;
var tbody = th.parentNode;
@ -221,7 +227,7 @@ function displayFreeBusyForNode(node) {
var nodes = node.parentNode.parentNode.cells;
if (node.uid) {
for (var i = 1; i < nodes.length; i++) {
nodes[i].removeClassName("noFreeBusy");
$(nodes[i]).removeClassName("noFreeBusy");
nodes[i].innerHTML = ('<span class="freeBusyZoneElement"></span>'
+ '<span class="freeBusyZoneElement"></span>'
+ '<span class="freeBusyZoneElement"></span>'
@ -242,7 +248,7 @@ function displayFreeBusyForNode(node) {
node);
} else {
for (var i = 1; i < nodes.length; i++) {
nodes[i].addClassName("noFreeBusy");
$(nodes[i]).addClassName("noFreeBusy");
nodes[i].innerHTML = '';
}
}
@ -296,11 +302,11 @@ function resetAttendeesValue() {
currentInput.setAttribute("uid", null);
}
currentInput.setAttribute("autocomplete", "off");
Event.observe(currentInput, "keydown", onContactKeydown.bindAsEventListener(currentInput), false);
Event.observe(currentInput, "blur", checkAttendee.bindAsEventListener(currentInput), false);
//Event.observe(currentInput, "keydown", onContactKeydown.bindAsEventListener(currentInput));
//Event.observe(currentInput, "blur", checkAttendee.bindAsEventListener(currentInput));
}
inputs[inputs.length - 2].setAttribute("autocomplete", "off");
Event.observe(inputs[inputs.length - 2], "click", newAttendee, false);
Event.observe(inputs[inputs.length - 2], "click", newAttendee);
}
function resetAllFreeBusys() {

View File

@ -2,7 +2,7 @@ function onSearchFormSubmit() {
var searchValue = $("searchValue");
var url = (ApplicationBaseURL
+ "/foldersSearch?ldap-only=YES&search=" + searchValue.value
+ "/foldersSearch?ldap-only=YES&search=" + escape(searchValue.value)
+ "&type=" + window.opener.userFolderType);
if (document.userFoldersRequest) {
document.userFoldersRequest.aborted = true;