diff --git a/trunk/includes/class/class.LSformElement_select.php b/trunk/includes/class/class.LSformElement_select.php index f058d93f..2d792809 100644 --- a/trunk/includes/class/class.LSformElement_select.php +++ b/trunk/includes/class/class.LSformElement_select.php @@ -32,6 +32,9 @@ class LSformElement_select extends LSformElement { + var $template = 'LSformElement_select.tpl'; + var $fieldTemplate = 'LSformElement_select.tpl'; + /** * Retourn les infos d'affichage de l'élément * @@ -41,38 +44,12 @@ class LSformElement_select extends LSformElement { */ function getDisplay(){ $return = $this -> getLabelInfos(); - // value + $params = array(); if (!$this -> isFreeze()) { - if ($this -> params['multiple']==0) { - $multiple_tag=''; - } - else { - $multiple_tag='multiple'; - } - - $return['html'] = "\n"; $GLOBALS['LSsession'] -> addJSscript('LSformElement_select.js'); } - else { - $return['html']="\n"; - } + $params['possible_values'] = $this -> params['text_possible_values']; + $return['html'] = $this -> fetchTemplate(NULL,$params); return $return; } diff --git a/trunk/includes/js/LSformElement_password_field.js b/trunk/includes/js/LSformElement_password_field.js new file mode 100644 index 00000000..2959d79f --- /dev/null +++ b/trunk/includes/js/LSformElement_password_field.js @@ -0,0 +1,107 @@ +var LSformElement_password_field = new Class({ + initialize: function(name,input){ + this.name = name; + this.input = input; + this.params = varLSdefault.getParams(this.name); + LSdebug(this.params); + this.initialiseLSformElement_password_field(); + }, + + initialiseLSformElement_password_field: function() { + // ViewBtn + this.viewBtn = new Element('img'); + this.viewBtn.src = varLSdefault.imagePath('view.png'); + this.viewBtn.addClass('btn'); + this.viewBtn.addEvent('click',this.changeInputType.bind(this)); + this.viewBtn.injectAfter(this.input); + + // Verify + if (this.params['verify']) { + this.bgColor = this.input.getStyle('background-color'); + this.verifyFx = new Fx.Tween(this.input,{property: 'background-color',duration:600}); + this.verifyBtn = new Element('img'); + this.verifyBtn.src = varLSdefault.imagePath('verify.png'); + this.verifyBtn.addClass('btn'); + this.verifyBtn.addEvent('click',this.onVerifyBtnClick.bind(this)); + this.verifyBtn.injectAfter(this.input); + } + + if (this.params['generate']) { + this.generateBtn = new Element('img'); + this.generateBtn.src = varLSdefault.imagePath('generate.png'); + this.generateBtn.addClass('btn'); + this.generateBtn.addEvent('click',this.onGenerateBtnClick.bind(this)); + this.generateBtn.injectAfter(this.input); + } + }, + + onGenerateBtnClick: function() { + var data = { + template: 'LSform', + action: 'generatePassword', + attribute: this.name, + objecttype: varLSform.objecttype, + idform: varLSform.idform + }; + data.imgload=varLSdefault.loadingImgDisplay(this.generateBtn); + new Request({url: 'index_ajax.php', data: data, onSuccess: this.onGenerateBtnClickComplete.bind(this)}).send(); + }, + + onGenerateBtnClickComplete: function(responseText, responseXML) { + var data = JSON.decode(responseText); + if ( varLSdefault.checkAjaxReturn(data) ) { + this.input.value=data.generatePassword; + this.changeInputType(); + } + }, + + changeInputType: function() { + if (this.input.type=='password') { + var newType = 'text'; + this.viewBtn.src=varLSdefault.imagePath('hide.png'); + } + else { + var newType = 'password'; + this.viewBtn.src=varLSdefault.imagePath('view.png'); + } + var newInput = new Element('input'); + newInput.setProperty('name',this.input.getProperty('name')); + newInput.setProperty('type',newType); + newInput.setProperty('class',this.input.getProperty('class')); + newInput.setProperty('value',this.input.getProperty('value')); + newInput.injectAfter(this.input); + this.input.destroy(); + this.input = newInput; + return newInput; + }, + + onVerifyBtnClick: function() { + var data = { + template: 'LSform', + action: 'verifyPassword', + attribute: this.name, + objecttype: varLSform.objecttype, + idform: varLSform.idform, + objectdn: varLSform.objectdn, + fieldValue: this.input.value + }; + LSdebug(data); + data.imgload=varLSdefault.loadingImgDisplay(this.verifyBtn); + new Request({url: 'index_ajax.php', data: data, onSuccess: this.onVerifyBtnClickComplete.bind(this)}).send(); + }, + + onVerifyBtnClickComplete: function(responseText, responseXML) { + var data = JSON.decode(responseText); + if ( varLSdefault.checkAjaxReturn(data) ) { + if (data.verifyPassword) { + // ok + this.verifyFx.start('#73F386'); + } + else { + // nok + this.verifyFx.start('#f59a67'); + } + (function(){this.verifyFx.start(this.bgColor);}).delay(1000, this); + } + } +}); diff --git a/trunk/includes/js/LSformElement_select.js b/trunk/includes/js/LSformElement_select.js index 0a3e17a7..bdd757c7 100644 --- a/trunk/includes/js/LSformElement_select.js +++ b/trunk/includes/js/LSformElement_select.js @@ -4,7 +4,7 @@ var LSformElement_select = new Class({ }, initialiseLSformElement_select: function() { - $$('select.LSform').each(function(el) { + $$('select.LSformElement_select').each(function(el) { var btn = new Element('img'); btn.setProperties({ src: varLSdefault.imagePath('clear.png'), @@ -13,13 +13,12 @@ var LSformElement_select = new Class({ }); btn.addClass('btn'); btn.setStyle('vertical-align','top'); - btn.addEvent('click',this.onClearBtnClick.bind(this,btn)); + btn.addEvent('click',this.onClearBtnClick.bind(this,el)); btn.injectAfter(el); }, this); }, - onClearBtnClick: function(btn) { - var select = btn.getPrevious(); + onClearBtnClick: function(select) { this.resetSelect(select); }, diff --git a/trunk/templates/default/LSformElement_select.tpl b/trunk/templates/default/LSformElement_select.tpl new file mode 100644 index 00000000..aee2e602 --- /dev/null +++ b/trunk/templates/default/LSformElement_select.tpl @@ -0,0 +1,13 @@ +{if $freeze} + +{else} + +{/if}