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}