Changeset 665 for trunk/expressoCalendar/js
- Timestamp:
- 02/06/09 08:41:18 (15 years ago)
- Location:
- trunk/expressoCalendar/js
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoCalendar/js/calendar_functions.js
r656 r665 29 29 document.getElementById("div_main").style.opacity = 1; 30 30 document.getElementById("div_main").filters.alpha.opacity=100; 31 } catch (e) { }31 } catch (e) {}; 32 32 return true; 33 33 } … … 55 55 divAddDialog.innerHTML = xtools.parse(data, xsl); 56 56 var closeButton = document.getElementById('closeDialog'); 57 if (is_ie){ 57 if (is_ie) 58 { 58 59 closeButton.style.left = '285px'; 59 60 closeButton.style.top = '5px'; 60 }else{ 61 } 62 else 63 { 61 64 closeButton.style.left = '320px'; 62 65 closeButton.style.top = '25px'; … … 112 115 document.getElementById("l_date").innerHTML += "<a href=\"javascript:calendar.getView('div_main','"+viewType+"','&time='+this.nextView);\"> \>\></a>"; 113 116 114 var events = document.getElementById('returnEvents'); 115 while(typeof(events.firstChild.id) == 'string'){ 116 createEventDiv(events.firstChild); 117 var getEventsDay = function (data) 118 { 119 var xsl = XMLTools.load('xsl/events'+type+'.xsl'); 120 var div = document.getElementById('div_main'); 121 div.innerHTML += xtools.parse(data, xsl); 122 var events = document.getElementById('returnEvents'); 123 while(typeof(events.firstChild.id) == 'string') 124 createEventDiv(events.firstChild); 117 125 } 126 XMLTools.__RETURN_MODE__ = 'XML'; 127 XMLTools.request('$this.uicalendar.getEvents'+type+(data?data:'')+'&uid='+calendar.uid, 'GET', getEventsDay); 118 128 119 129 }; … … 137 147 var div = document.getElementById(this.idEl); 138 148 div.innerHTML = xtools.parse(data, xsl); 149 document.getElementById('divAppbox').style.height = "100%"; 139 150 } 140 151 catch(e){ … … 142 153 } 143 154 144 if (type == 'Week' || type == 'Month'){ 155 if (type == 'Week' || type == 'Month') 156 { 145 157 var trWeek = document.getElementById('tr_week'); 146 158 for (var i=0; i < trWeek.childNodes.length; i++) … … 202 214 default: month = ""; break; 203 215 } 204 return get_lang( month);216 return get_lang("%1 of %2",get_lang(month),(obj.getYear()+1900)); 205 217 } 206 218 Calendar.prototype.parseDate = function (timeStamp) { … … 242 254 } 243 255 var calendar = new Calendar(); 256 257 // This array stores the events in table to avoid conflict in screen 258 var screenTable = new Array(); 259 var today = new Date(); 260 var weekDay = today.getDay(); 261 function createEventDiv(eventDiv){ 262 eventDiv.className = "event_div"; 263 eventDiv.style.height = parseInt(eventDiv.childNodes[1].id-eventDiv.childNodes[0].id)/120000+"px"; 264 var end_ = timeStamp2id(eventDiv.childNodes[1].id).substr(8); 265 var start_ = parseInt(timeStamp2id(eventDiv.childNodes[0].id).substr(8),10); 266 if (viewType == "Day"){ 267 if (!screenTable[weekDay]) 268 screenTable[weekDay] = new Array(); 269 eventDiv.style.width = "190px"; 270 271 currentPos = 1; 272 for (var hour = parseInt(start_,10); hour < parseInt(end_,10);(hour%100 == 30)?hour+=70:hour+=30){ 273 if (!screenTable[weekDay][hour]) 274 screenTable[weekDay][hour] = 0; 275 276 if (currentPos <= screenTable[weekDay][hour]) 277 currentPos = screenTable[weekDay][hour]+1; 278 } 279 for (var hour = parseInt(start_,10); hour < parseInt(end_,10);(hour%100 == 30)?hour+=70:hour+=30) 280 screenTable[weekDay][hour] = currentPos; 281 eventDiv.style.left = 90+(205*(currentPos-1)) + "px" ; 282 eventDiv.onmouseover = function(){ createButtons(eventDiv); }; 283 eventDiv.onmouseout = function(){ removeButtons(eventDiv); }; 284 var resizeDiv = document.createElement('DIV'); 285 resizeDiv.id = "resize_" + eventDiv.id; 286 resizeDiv.className = 'resize_div'; 287 resizeDiv.onmousedown = function() { resizeEvent(eventDiv); }; 288 eventDiv.appendChild(resizeDiv); 289 } 290 if (viewType == "Week"){ 291 var tempDate = new Date; 292 tempDate.setTime(eventDiv.childNodes[1].id); 293 if (!screenTable[tempDate.getDay()]) 294 screenTable[tempDate.getDay()] = new Array(); 295 currentPos = 1; 296 if (!screenTable[tempDate.getDay()][start_]) 297 screenTable[tempDate.getDay()][start_] = 0; 298 299 if (currentPos <= screenTable[tempDate.getDay()][start_]) 300 currentPos = screenTable[tempDate.getDay()][start_]+1; 301 screenTable[tempDate.getDay()][start_] = currentPos; 302 303 var widthValue = 100; 304 eventDiv.style.width = widthValue+"px"; 305 306 var headerElement = document.getElementById('weekHeader_'+timeStamp2id(eventDiv.childNodes[1].id).substr(0,8)); 307 if (currentPos > 1) 308 eventDiv.style.left = (10+(tempDate.getDay()*122)+(widthValue*currentPos))+"px"; 309 headerElement.style.width = (widthValue*currentPos)+"px"; 310 eventDiv.style.height = "20px"; 311 eventDiv.style.cursor = "pointer"; 312 eventDiv.onmouseover = function () { this.style.height = "auto"; this.style.zIndex = 2;}; 313 eventDiv.onmouseout = function () { this.style.height = "20px"; this.style.zIndex = 1; }; 314 eventDiv.onclick = function () { calendar.getView('div_main','Day','&time='+timeStamp2id(eventDiv.childNodes[1].id).substr(0,8)); }; 315 } 316 317 var tdElement = document.getElementById(timeStamp2id(eventDiv.childNodes[0].id)); 318 319 if (viewType == "Month"){ 320 var tdElement = document.getElementById(timeStamp2id(eventDiv.childNodes[0].id).substr(0,8)+'0000'); 321 eventDiv.style.width = "60px"; 322 eventDiv.style.height = "15px"; 323 eventDiv.onmouseover = function () { if (this.childNodes[2].length > 9) this.style.width = "auto"; this.style.zIndex = 2; }; 324 eventDiv.onmouseout = function () { this.style.width = "60px"; this.style.zIndex = 1; }; 325 eventDiv.onclick = function () { calendar.getView('div_main','Day','&time='+timeStamp2id(eventDiv.childNodes[1].id).substr(0,8)); }; 326 eventDiv.style.cursor = "pointer"; 327 328 tdElement.style.height = (tdElement.childNodes.length * 10) + "px"; 329 330 if (tdElement.childNodes.length > 3) 331 eventDiv.style.margin = "20 0 0 "+(20+(tdElement.childNodes.length-4)*25); 332 else 333 eventDiv.style.margin = "0 0 0 "+(20+(tdElement.childNodes.length-1)*25); 334 } 335 336 eventDiv.style.top = (tdElement.offsetTop + 160) + "px"; 337 tdElement.appendChild(eventDiv); 338 } 339 340 -
trunk/expressoCalendar/js/common_functions.js
r632 r665 12 12 } 13 13 14 // This array stores the events in table to avoid conflict in screen 15 var screenTable = new Array(); 16 var today = new Date(); 17 var weekDay = today.getDay(); 18 function createEventDiv(eventDiv){ 19 eventDiv.className = "event_div"; 20 eventDiv.style.height = parseInt(eventDiv.childNodes[1].id-eventDiv.childNodes[0].id)/120000+"px"; 21 var end_ = timeStamp2id(eventDiv.childNodes[1].id).substr(8); 22 var start_ = parseInt(timeStamp2id(eventDiv.childNodes[0].id).substr(8),10); 23 if (viewType == "Day"){ 24 if (!screenTable[weekDay]) 25 screenTable[weekDay] = new Array(); 26 eventDiv.style.width = "190px"; 27 28 currentPos = 1; 29 for (var hour = parseInt(start_,10); hour < parseInt(end_,10);(hour%100 == 30)?hour+=70:hour+=30){ 30 if (!screenTable[weekDay][hour]) 31 screenTable[weekDay][hour] = 0; 32 33 if (currentPos <= screenTable[weekDay][hour]) 34 currentPos = screenTable[weekDay][hour]+1; 35 } 36 for (var hour = parseInt(start_,10); hour < parseInt(end_,10);(hour%100 == 30)?hour+=70:hour+=30) 37 screenTable[weekDay][hour] = currentPos; 38 eventDiv.style.left = 90+(205*(currentPos-1)) + "px" ; 39 eventDiv.onmouseover = function(){ createButtons(eventDiv); }; 40 eventDiv.onmouseout = function(){ removeButtons(eventDiv); }; 41 var resizeDiv = document.createElement('DIV'); 42 resizeDiv.id = "resize_" + eventDiv.id; 43 resizeDiv.className = 'resize_div'; 44 resizeDiv.onmousedown = function() { resizeEvent(eventDiv); }; 45 eventDiv.appendChild(resizeDiv); 46 } 47 if (viewType == "Week"){ 48 var tempDate = new Date; 49 tempDate.setTime(eventDiv.childNodes[1].id); 50 if (!screenTable[tempDate.getDay()]) 51 screenTable[tempDate.getDay()] = new Array(); 52 currentPos = 1; 53 if (!screenTable[tempDate.getDay()][start_]) 54 screenTable[tempDate.getDay()][start_] = 0; 55 56 if (currentPos <= screenTable[tempDate.getDay()][start_]) 57 currentPos = screenTable[tempDate.getDay()][start_]+1; 58 screenTable[tempDate.getDay()][start_] = currentPos; 59 60 var widthValue = 100; 61 eventDiv.style.width = widthValue+"px"; 62 63 var headerElement = document.getElementById('weekHeader_'+timeStamp2id(eventDiv.childNodes[1].id).substr(0,8)); 64 if (currentPos > 1) 65 eventDiv.style.left = (10+(tempDate.getDay()*122)+(widthValue*currentPos))+"px"; 66 headerElement.style.width = (widthValue*currentPos)+"px"; 67 eventDiv.style.height = "20px"; 68 eventDiv.style.cursor = "pointer"; 69 eventDiv.onmouseover = function () { this.style.height = "auto"; this.style.zIndex = 2;}; 70 eventDiv.onmouseout = function () { this.style.height = "20px"; this.style.zIndex = 1; }; 71 eventDiv.onclick = function () { calendar.getView('div_main','Day','&time='+timeStamp2id(eventDiv.childNodes[1].id).substr(0,8)); }; 72 } 73 74 var tdElement = document.getElementById(timeStamp2id(eventDiv.childNodes[0].id)); 75 76 if (viewType == "Month"){ 77 var tdElement = document.getElementById(timeStamp2id(eventDiv.childNodes[0].id).substr(0,8)+'0000'); 78 eventDiv.style.width = "60px"; 79 eventDiv.style.height = "15px"; 80 eventDiv.onmouseover = function () { if (this.childNodes[2].length > 9) this.style.width = "auto"; this.style.zIndex = 2; }; 81 eventDiv.onmouseout = function () { this.style.width = "60px"; this.style.zIndex = 1; }; 82 eventDiv.onclick = function () { calendar.getView('div_main','Day','&time='+timeStamp2id(eventDiv.childNodes[1].id).substr(0,8)); }; 83 eventDiv.style.cursor = "pointer"; 84 85 tdElement.style.height = (tdElement.childNodes.length * 10) + "px"; 86 87 if (tdElement.childNodes.length > 3) 88 eventDiv.style.margin = "20 0 0 "+(20+(tdElement.childNodes.length-4)*25); 89 else 90 eventDiv.style.margin = "0 0 0 "+(20+(tdElement.childNodes.length-1)*25); 91 } 92 93 eventDiv.style.top = (tdElement.offsetTop + 145) + "px"; 94 tdElement.appendChild(eventDiv); 14 function write_error (message){ 15 if (headerMsgLock){ 16 setTimeout('write_error("'+message+'");', 300); 17 return; 18 } 19 headerMsgLock = true; 20 headerDiv = document.getElementById("divAppboxHeader"); 21 var labelBefore = headerDiv.innerHTML; 22 headerDiv.innerHTML = '<table width=100% cellspacing="0" cellpadding="0" border="0"><tbody><tr><th width="40%"></th><th noWrap class="action_error_th">'+message+'</th><th width="40%"></th></tr></tbody></table>'; 23 setTimeout('headerMsgLock = false; document.getElementById("divAppboxHeader").innerHTML = \"'+labelBefore+'\";', 2000); 95 24 } 96 25 … … 128 57 } 129 58 } 130 131 function addDetails(title,description,datetime,edatetime){ 132 if (!edatetime) 133 edatetime = ""; 134 if (!datetime || datetime.length == 0) 135 datetime = edatetime; 136 data="<retorno>"+ 137 "<title>"+title+"</title>"+ 138 "<description>"+description+"</description>"+ 139 "<datetime>"+datetime.substr(4,2)+"/"+datetime.substr(6,2)+"/"+datetime.substr(0,4)+"</datetime>"+ 140 "<datehour>"+datetime.substr(8,2)+"</datehour>"+ 141 "<dateminute>"+datetime.substr(10,2)+"</dateminute>"+ 142 "<edatetime>"+edatetime.substr(4,2)+"/"+edatetime.substr(6,2)+"/"+edatetime.substr(0,4)+"</edatetime>"+ 143 "<edatehour>"+edatetime.substr(8,2)+"</edatehour>"+ 144 "<edateminute>"+edatetime.substr(10,2)+"</edateminute>"+ 145 "</retorno>"; 146 147 var divAddDialog = document.getElementById("divAddDialog"); 148 var xsl = XMLTools.load('xsl/detailsDialog.xsl?'+ Date.parse(new Date)); 149 if(!divAddDialog) { 150 divAddDialog = document.createElement("DIV"); 151 divAddDialog.id = 'divAddDialog'; 152 divAddDialog.style.zIndex = "10"; 153 divAddDialog.style.position = "absolute"; 154 divAddDialog.style.display = "none"; 155 document.body.appendChild(divAddDialog); 156 } 157 divAddDialog.style.left = "300px"; 158 divAddDialog.style.top = "200px"; 159 divAddDialog.innerHTML = xtools.parse(data, xsl); 160 divAddDialog.style.display = "block"; 161 } 59 function submitDetailsHandler () { 60 var iframe = document.getElementById('nullFrame'); 61 var Fdoc = iframe.contentDocument || iframe.contentWindow; 62 statusSpan = Fdoc.getElementById('formStatus'); 63 if (statusSpan) 64 { 65 var ErMessage = statusSpan.innerHTML.replace(/<[^>]*>/,''); 66 write_error(ErMessage); 67 divAddDialog = document.getElementById("divAddDialog"); 68 divAddDialog.appendChild(Fdoc.getElementsByName('app_form')[0]); 69 divAddDialog.style.display = "block"; 70 } 71 else 72 { 73 if (Fdoc.getElementById('calendar_overlap_table')){ 74 write_error(get_lang('scheduling conflict')); 75 divAddDialog = document.getElementById("divAddDialog"); 76 document.getElementsByName('app_form')[0].innerHTML = Fdoc.getElementById('divAppbox').innerHTML; 77 document.getElementById('ignore_button').style.display = "none"; 78 document.getElementById('redit_button').style.display = "none"; // TODO: Update the action to submit in background 79 divAddDialog.style.display = "block"; 80 } 81 else 82 write_msg(get_lang('Event updated successfully')); 83 } 84 connector.hideProgressBar(); 85 } 86 87 function addDetails(title,description,datetime,edatetime){ 88 if (!edatetime) 89 edatetime = ""; 90 if (!datetime || datetime.length == 0) 91 datetime = edatetime; 92 var handler_embeddedHTML = function (data) { 93 var divAddDialog = document.getElementById("divAddDialog"); 94 if(!divAddDialog) 95 { 96 divAddDialog = document.createElement("DIV"); 97 divAddDialog.id = 'divAddDialog'; 98 divAddDialog.style.zIndex = "10"; 99 divAddDialog.style.position = "absolute"; 100 divAddDialog.style.display = "none"; 101 document.body.appendChild(divAddDialog); 102 } 103 divAddDialog.style.left = "100px"; 104 divAddDialog.style.top = "100px"; 105 var xsl = XMLTools.load('xsl/windowDialog.xsl'); 106 xml = "<return></return>"; 107 divAddDialog.innerHTML = xtools.parse(xml, xsl); 108 document.getElementById('form_content').innerHTML = data; 109 submitButton = document.getElementById('submit_button'); 110 submitButton.onclick = function () { cExecuteForm('/index.php?menuaction=calendar.bocalendar.update',document.getElementsByName('app_form')[0],'submitDetailsHandler'); return false; } 111 cancelButton = document.getElementById('cancel_button'); 112 cancelButton.onclick = function () { calendar.dialog(); return false; } 113 deleteButton = document.getElementById('delete_button'); 114 deleteButton.onclick = function () { removeEvent(eventId.id.substr(6)); calendar.dialog(); return false; } 115 divAddDialog.style.display = "block"; 116 } 117 cExecute('../index.php?menuaction=calendar.uicalendar.add&plain=True&date='+datetime.substr(0,4)+datetime.substr(6,2)+datetime.substr(4,2)+'&hour='+datetime.substr(8,2)+'&minute='+datetime.substr(10,2),handler_embeddedHTML); 118 } 162 119 163 120 function showDetails(eventId){ 164 var handler_getDetails = function (data) 165 { 121 var handler_embeddedHTML = function (data) { 166 122 var divAddDialog = document.getElementById("divAddDialog"); 167 var xsl = XMLTools.load('xsl/detailsDialog.xsl?'+ Date.parse(new Date)); 168 if(!divAddDialog) { 123 var xsl = XMLTools.load('xsl/windowDialog.xsl'); 124 if(!divAddDialog) 125 { 169 126 divAddDialog = document.createElement("DIV"); 170 127 divAddDialog.id = 'divAddDialog'; … … 174 131 document.body.appendChild(divAddDialog); 175 132 } 176 divAddDialog.style.left = "300px"; 177 divAddDialog.style.top = "200px"; 178 divAddDialog.innerHTML = xtools.parse(data, xsl); 133 divAddDialog.style.left = "100px"; 134 divAddDialog.style.top = "100px"; 135 xml = "<return></return>"; 136 divAddDialog.innerHTML = xtools.parse(xml, xsl); 137 document.getElementById('form_content').innerHTML = data; 138 submitButton = document.getElementById('submit_button'); 139 submitButton.onclick = function () { cExecuteForm('/index.php?menuaction=calendar.bocalendar.update',document.getElementsByName('app_form')[0],'submitDetailsHandler'); calendar.dialog(); return false; } 140 try 141 { 142 cancelButton = document.getElementById('cancel_button'); 143 cancelButton.onclick = function () { calendar.dialog(); return false; } 144 } 145 catch (e) 146 { 147 cancelButton = document.createElement('INPUT'); 148 cancelButton.type = "submit"; 149 cancelButton.value = get_lang('cancel'); 150 cancelButton.onclick = function () { calendar.dialog(); return false; } 151 document.getElementsByName('app_form')[0].appendChild(cancelButton); 152 }; 153 deleteButton = document.getElementById('delete_button'); 154 deleteButton.onclick = function () { removeEvent(eventId.id.substr(6)); calendar.dialog(); return false; } 179 155 divAddDialog.style.display = "block"; 180 var saveBut = document.getElementById("saveLink"); 181 saveBut.onclick = function () { saveEvent(eventId); } 182 var startDate = document.getElementById('startstr'); 183 var endDate = document.getElementById('endstr'); 184 var startHour = document.getElementById('starthour'); 185 var startMin = document.getElementById('startmin'); 186 var endHour = document.getElementById('endhour'); 187 var endMin = document.getElementById('endmin'); 188 objDate = new Date(); 189 objDate.setTime(startDate.value*1000); 190 startDate.value = objDate.getDate()+"/"+(objDate.getMonth()+1)+"/"+objDate.getFullYear(); 191 startHour.value = objDate.getHours(); 192 startMin.value = objDate.getMinutes(); 193 if (startMin.value.length < 2) 194 startMin.value += "0"; 195 objDate.setTime(endDate.value*1000); 196 endDate.value = objDate.getDate()+"/"+(objDate.getMonth()+1)+"/"+objDate.getFullYear(); 197 endHour.value = objDate.getHours(); 198 endMin.value = objDate.getMinutes(); 199 if (endMin.value.length < 2) 200 endMin.value += "0"; 201 } 202 XMLTools.__RETURN_MODE__ = 'XML'; 203 XMLTools.request('$this.uicalendar.getDetails&id='+eventId.id.substr(6), 'GET', handler_getDetails); 156 } 157 cExecute('../index.php?menuaction=calendar.uicalendar.edit&cal_id='+eventId.id.substr(6)+'&plain=True',handler_embeddedHTML); 204 158 } 205 159 function removeButtons(eventDiv){ … … 215 169 var handler_removeEvent = function (data) { 216 170 var xsl = XMLTools.load('xsl/returnData.xsl?'+ Date.parse(new Date)); 217 171 var serverRet = xtools.parse(data, xsl); 218 172 serverRet = serverRet.substr(serverRet.indexOf('>')+1); 219 173 var retStatus = serverRet.substr(0,5); -
trunk/expressoCalendar/js/connector.js
r632 r665 95 95 } 96 96 var connector = new cConnector(); 97 97 function _xml() 98 { 99 var a = false; 100 if ( document.implementation.createDocument ) 101 a = document.implementation.createDocument("", "", null); 102 else if ( ActiveXObject ) 103 a = new ActiveXObject("Msxml2.DOMDocument"); 104 if ( arguments.length == 1 && typeof arguments[0] == 'string' ) 105 a.appendChild(a.createElement(arguments[0])); 106 return a; 107 } 98 108 XMLTools.prototype = { 99 109 "__DEBUG__" : false, … … 282 292 }; 283 293 294 function cExecuteForm(url, form, handler){ 295 connector.showProgressBar(); 296 var iframe_el = document.getElementById('nullFrame'); 297 if (!iframe_el) 298 { 299 iframe_el = document.createElement('IFRAME'); 300 iframe_el.id = "nullFrame"; 301 } 302 iframe_el.style.width = "0px"; 303 iframe_el.style.height = "0px"; 304 iframe_el.style.border = '0px'; 305 iframe_el.name = "nullFrame"; 306 iframe = document.body.appendChild(iframe_el); 307 iframe_el.setAttribute('onload', 'javascript:'+handler+'()'); 308 form.target = "nullFrame"; 309 form.submit(); 310 } 311 312 function cExecute(requestURL,handler,methmd){ 313 var AjaxRequest = function () { 314 Ajax = false; 315 if (window.XMLHttpRequest) //Gecko 316 Ajax = new XMLHttpRequest(); 317 else 318 if (window.ActiveXObject) //Other nav. 319 try 320 { 321 Ajax = new ActiveXObject("Msxml12.XMLHTTP"); 322 } catch (e) 323 { 324 Ajax = new ActiveXObject("Microsoft.XMLHTTP"); 325 } 326 } 327 var responseRequest = function (){ 328 if (Ajax.readyState == 4) 329 if (Ajax.status == 200) 330 handler(Ajax.responseText); 331 else 332 alert("Erro temporario de conexão"); 333 } 334 335 336 AjaxRequest(); 337 if (!Ajax){ 338 alert("Erro ao conectar-se"); 339 return; 340 } 341 342 Ajax.onreadystatechange = responseRequest; 343 if (typeof(method) == 'undefined') 344 method = 'GET'; 345 Ajax.open(method, requestURL, true); 346 Ajax.send(null); 347 } 284 348 var XMLTools = new XMLTools(); 285 349 var xtools = new XTools;
Note: See TracChangeset
for help on using the changeset viewer.