From 78b21abe697a7c0b1f0e8ca887961b9faf8f0c3c Mon Sep 17 00:00:00 2001 From: Nicolas Dumazet <nicolas.dumazet@nexedi.com> Date: Wed, 9 Jun 2010 08:44:59 +0000 Subject: [PATCH] completely inhibit selects when on readonly mode: listing the values is possible, but when selecting a value, the previous value is restored and the save is not visible git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@36132 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5Form/dtml/proxyFieldEdit.dtml | 16 ++++++++++++++++ product/ERP5Form/dtml/proxyFieldTales.dtml | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/product/ERP5Form/dtml/proxyFieldEdit.dtml b/product/ERP5Form/dtml/proxyFieldEdit.dtml index 2c9bb36c00..1b272fb62d 100644 --- a/product/ERP5Form/dtml/proxyFieldEdit.dtml +++ b/product/ERP5Form/dtml/proxyFieldEdit.dtml @@ -158,6 +158,14 @@ function GetElementsWithClassName(elementName,className) { function normalEvent() { return true; } function ignoreEvent() { return false; } +var last_selected; +function registerSelection() { + last_selected = this.selectedIndex; +} +function dontChangeSelection() { + this.selectedIndex = last_selected; +} + var class_deletaged_list = GetElementsWithClassName('td','delegated'); for(var i=0; i<class_deletaged_list.length; i++) { var disable_children = class_deletaged_list[i].childNodes; @@ -169,6 +177,9 @@ for(var i=0; i<class_deletaged_list.length; i++) { element.readOnly = true; if (element.type == 'checkbox'){ element.onclick = ignoreEvent; + } else if (element.tagName == 'SELECT') { + element.onfocus = registerSelection; + element.onchange = dontChangeSelection; } } } @@ -190,12 +201,17 @@ function toggleFieldState(evt) { field.readOnly = false; if (field.type == 'checkbox'){ field.onclick = normalEvent; + } else if (field.tagName == 'SELECT') { + field.onchange = normalEvent; } } else{ field.readOnly = true; if (field.type == 'checkbox'){ field.onclick = ignoreEvent; + } else if (field.tagName == 'SELECT') { + field.onfocus = registerSelection; + field.onchange = dontChangeSelection; } } } diff --git a/product/ERP5Form/dtml/proxyFieldTales.dtml b/product/ERP5Form/dtml/proxyFieldTales.dtml index c8518e649c..42bb87192f 100644 --- a/product/ERP5Form/dtml/proxyFieldTales.dtml +++ b/product/ERP5Form/dtml/proxyFieldTales.dtml @@ -158,6 +158,14 @@ function GetElementsWithClassName(elementName,className) { function normalEvent() { return true; } function ignoreEvent() { return false; } +var last_selected; +function registerSelection() { + last_selected = this.selectedIndex; +} +function dontChangeSelection() { + this.selectedIndex = last_selected; +} + var class_deletaged_list = GetElementsWithClassName('td','delegated'); for(var i=0; i<class_deletaged_list.length; i++) { var disable_children = class_deletaged_list[i].childNodes; @@ -169,6 +177,9 @@ for(var i=0; i<class_deletaged_list.length; i++) { element.readOnly = true; if (element.type == 'checkbox'){ element.onclick = ignoreEvent; + } else if (element.tagName == 'SELECT') { + element.onfocus = registerSelection; + element.onchange = dontChangeSelection; } } } @@ -190,12 +201,17 @@ function toggleFieldState(evt) { field.readOnly = false; if (field.type == 'checkbox'){ field.onclick = normalEvent; + } else if (field.tagName == 'SELECT') { + field.onchange = normalEvent; } } else{ field.readOnly = true; if (field.type == 'checkbox'){ field.onclick = ignoreEvent; + } else if (field.tagName == 'SELECT') { + field.onfocus = registerSelection; + field.onchange = dontChangeSelection; } } } -- 2.30.9