From 95fb3bc30aa522ee9dfa90d70ac3ef3cca805ab3 Mon Sep 17 00:00:00 2001 From: Nicolas Dumazet <nicolas.dumazet@nexedi.com> Date: Wed, 9 Jun 2010 07:01:10 +0000 Subject: [PATCH] toggle all children of a delegated node This fixes display of DateTime fields, that have several inputs. git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@36122 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5Form/dtml/proxyFieldEdit.dtml | 46 ++++++++++++---------- product/ERP5Form/dtml/proxyFieldTales.dtml | 46 ++++++++++++---------- 2 files changed, 52 insertions(+), 40 deletions(-) diff --git a/product/ERP5Form/dtml/proxyFieldEdit.dtml b/product/ERP5Form/dtml/proxyFieldEdit.dtml index 9f1b5680bd..2c9bb36c00 100644 --- a/product/ERP5Form/dtml/proxyFieldEdit.dtml +++ b/product/ERP5Form/dtml/proxyFieldEdit.dtml @@ -160,13 +160,16 @@ function ignoreEvent() { return false; } var class_deletaged_list = GetElementsWithClassName('td','delegated'); for(var i=0; i<class_deletaged_list.length; i++) { - element = class_deletaged_list[i].childNodes[1]; - if (element.type == 'hidden'){ - element = element.nextSibling; - } - element.readOnly = true; - if (element.type == 'checkbox'){ - element.onclick = ignoreEvent; + var disable_children = class_deletaged_list[i].childNodes; + for (var j=0; j<disable_children.length; j++) { + var element = disable_children[j]; + if (element.type == 'hidden'){ + continue; + } + element.readOnly = true; + if (element.type == 'checkbox'){ + element.onclick = ignoreEvent; + } } } @@ -177,20 +180,23 @@ function toggleFieldState(evt) { allElements = tr_parent.childNodes; for (i=0; i<allElements.length; i++) { if (isClass(allElements[i], 'to_disable')) { - field = allElements[i].childNodes[1]; - if (field.type == 'hidden'){ - field = field.nextSibling; - } - if (field.readOnly){ - field.readOnly = false; - if (field.type == 'checkbox'){ - field.onclick = normalEvent; + var disable_children = allElements[i].childNodes; + for (var j=0; j<disable_children.length; j++) { + var field = disable_children[j]; + if (field.type == 'hidden'){ + continue; } - } - else{ - field.readOnly = true; - if (field.type == 'checkbox'){ - field.onclick = ignoreEvent; + if (field.readOnly){ + field.readOnly = false; + if (field.type == 'checkbox'){ + field.onclick = normalEvent; + } + } + else{ + field.readOnly = true; + if (field.type == 'checkbox'){ + field.onclick = ignoreEvent; + } } } } diff --git a/product/ERP5Form/dtml/proxyFieldTales.dtml b/product/ERP5Form/dtml/proxyFieldTales.dtml index 63d443c24e..c8518e649c 100644 --- a/product/ERP5Form/dtml/proxyFieldTales.dtml +++ b/product/ERP5Form/dtml/proxyFieldTales.dtml @@ -160,13 +160,16 @@ function ignoreEvent() { return false; } var class_deletaged_list = GetElementsWithClassName('td','delegated'); for(var i=0; i<class_deletaged_list.length; i++) { - element = class_deletaged_list[i].childNodes[1]; - if (element.type == 'hidden'){ - element = element.nextSibling; - } - element.readOnly = true; - if (element.type == 'checkbox'){ - element.onclick = ignoreEvent; + var disable_children = class_deletaged_list[i].childNodes; + for (var j=0; j<disable_children.length; j++) { + var element = disable_children[j]; + if (element.type == 'hidden'){ + continue; + } + element.readOnly = true; + if (element.type == 'checkbox'){ + element.onclick = ignoreEvent; + } } } @@ -177,20 +180,23 @@ function toggleFieldState(evt) { allElements = tr_parent.childNodes; for (i=0; i<allElements.length; i++) { if (isClass(allElements[i], 'to_disable')) { - field = allElements[i].childNodes[1]; - if (field.type == 'hidden'){ - field = field.nextSibling; - } - if (field.readOnly){ - field.readOnly = false; - if (field.type == 'checkbox'){ - field.onclick = normalEvent; + var disable_children = allElements[i].childNodes; + for (var j=0; j<disable_children.length; j++) { + var field = disable_children[j]; + if (field.type == 'hidden'){ + continue; } - } - else{ - field.readOnly = true; - if (field.type == 'checkbox'){ - field.onclick = ignoreEvent; + if (field.readOnly){ + field.readOnly = false; + if (field.type == 'checkbox'){ + field.onclick = normalEvent; + } + } + else{ + field.readOnly = true; + if (field.type == 'checkbox'){ + field.onclick = ignoreEvent; + } } } } -- 2.30.9