From adfb794ce2a668eafcb72191ea3e1dfd8439ea8c Mon Sep 17 00:00:00 2001 From: Erik Amaru Ortiz Date: Tue, 4 Jan 2011 20:51:36 +0000 Subject: [PATCH] BUG: IE Incompatibilty - "Al utilizar IE en la parte de holidays cuando se utilizan mas de 3 filas, es decir a partir de la 4ta fila los datos de las fechas del calendario empiezan a ser cambiados con los datos de la primera fila, no registrando nada a partir de la cuarta fila" SOLVED! --- gulliver/js/common/core/common.js | 17 +++--------- gulliver/js/grid/core/grid.js | 43 ++++++++++++++++++++++++------- gulliver/system/class.xmlform.php | 18 ++++++++----- 3 files changed, 49 insertions(+), 29 deletions(-) diff --git a/gulliver/js/common/core/common.js b/gulliver/js/common/core/common.js index f7ec14964..9fd4d594c 100755 --- a/gulliver/js/common/core/common.js +++ b/gulliver/js/common/core/common.js @@ -1848,7 +1848,7 @@ function removeValue(id){ } function datePicker4(obj, id, mask, startDate, endDate, showTIme){ - + //alert('->'+id); new Calendar({ inputField: id, dateFormat: mask, @@ -1861,20 +1861,10 @@ function datePicker4(obj, id, mask, startDate, endDate, showTIme){ opacity: 1, onSelect: function() { this.hide(); - - fireEvent(document.getElementById(id),'change'); - - - //if(document.getElementById(id).onchange) - //document.getElementById(id).onchange(); + fireEvent(document.getElementById(id), 'change'); } -} - ); - - if( _BROWSER.name != 'msie' ) - obj.onmouseover = undefined; - + }); } function fireEvent(element,event){ @@ -1910,3 +1900,4 @@ function elementAttributesNS(e, ns) { } return result; } + diff --git a/gulliver/js/grid/core/grid.js b/gulliver/js/grid/core/grid.js index b2391f5c1..49ba28c33 100644 --- a/gulliver/js/grid/core/grid.js +++ b/gulliver/js/grid/core/grid.js @@ -164,8 +164,13 @@ var G_Grid = function(oForm, sGridName) { newID = aObjects[0].id.replace(/\[1\]/g, '\[' + (this.oGrid.rows.length - 2) + '\]'); aObjects[0].setAttribute('id', newID); - aObjects[0].setAttribute('name', newID); - + aObjects[0].name = newID; + if (/*@cc_on!@*/0) { // Internet Explorer test (needs to be modified for IE8) + aObjects[0].mergeAttributes(document.createElement(""), false); + } + + //alert(aObjects[0].name); + if (aObjects[0].type != 'checkbox') { aObjects[0].value = ''; } else { @@ -180,20 +185,38 @@ var G_Grid = function(oForm, sGridName) { } } - //verifying if it is a datepickey + //verifying if it is a datepicker tags = oNewRow.getElementsByTagName('td')[i].getElementsByTagName('a'); + if( tags.length == 2 ){ //then it is a datepicker + scriptTags = oNewRow.getElementsByTagName('td')[i].getElementsByTagName('script'); + datePickerTriggerId = tags[1].id.replace(/\[1\]/g, '\[' + (this.oGrid.rows.length - 2) + '\]'); + attributes = elementAttributesNS(aObjects[0], 'pm'); + + oNewRow.getElementsByTagName('td')[i].removeChild(scriptTags[0]); + oNewRow.getElementsByTagName('td')[i].removeChild(tags[1]); if (tags[0].onclick) { evOnclick = new String(tags[0].onclick); eval('tags[0].onclick = ' + evOnclick.replace(/\[1\]/g, '\[' + (this.oGrid.rows.length - 2) + '\]') + ';'); } - tags[1].id = tags[1].id.replace(/\[1\]/g, '\[' + (this.oGrid.rows.length - 2) + '\]'); - //alert(tags[1].onmouseover); - if (tags[1].onmouseover) { - evOnclick = new String(tags[1].onmouseover); - eval('tags[1].onmouseover = ' + evOnclick.replace(/\[1\]/g, '\[' + (this.oGrid.rows.length - 2) + '\]') + ';'); - } + + var datePickerTrigger = document.createElement('a'); + datePickerTrigger.id = datePickerTriggerId; + datePickerTrigger.name = datePickerTriggerId; + + var datePickerTriggerImg = document.createElement('img'); + datePickerTriggerImg.src = '/images/pmdateicon.png'; + datePickerTriggerImg.border = 0; + datePickerTriggerImg.width = 12; + datePickerTriggerImg.height = 12; + datePickerTriggerImg.style.position = 'relative'; + datePickerTriggerImg.style.left = '-17px'; + datePickerTriggerImg.style.top = '0px'; + + datePickerTrigger.appendChild(datePickerTriggerImg); + oNewRow.getElementsByTagName('td')[i].appendChild(datePickerTrigger); + datePicker4("", newID, attributes.mask, attributes.start, attributes.end, attributes.time); } } aObjects = oNewRow.getElementsByTagName('td')[i].getElementsByTagName('span'); @@ -237,6 +260,8 @@ var G_Grid = function(oForm, sGridName) { } } } + + //alert(oNewRow.getElementsByTagName('td')[i].innerHTML); break; case 'select': aObjects = oNewRow.getElementsByTagName('td')[i].getElementsByTagName('select'); diff --git a/gulliver/system/class.xmlform.php b/gulliver/system/class.xmlform.php index 18426a619..3c7447611 100644 --- a/gulliver/system/class.xmlform.php +++ b/gulliver/system/class.xmlform.php @@ -3147,13 +3147,17 @@ class XmlForm_Field_Date extends XmlForm_Field_SimpleText $sizeend = $maskleng + 2; } if ( $this->editable != "0") { - $html = ' - - '; + $html = '' + . ' ' + . '' + . '' + . ''; } else { - $html = ' - - '; + $html = '' + . ' ' + . '' + . '' + . ''; } } else { @@ -4184,4 +4188,4 @@ class XmlForm_Field_Image extends XmlForm_Field (($this->style)?'style="'.$this->style.'"':'') .' alt ="'.htmlentities($value,ENT_QUOTES,'utf-8').'"/>'; } -} \ No newline at end of file +}