Current File : /home/escuelai/public_html/biblioteca.escuelaintegral.edu.uy/javascript/dojo/apps/pmb/authForm.js
// +-------------------------------------------------+
// � 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
// +-------------------------------------------------+
// $Id: authForm.js,v 1.7 2021/09/06 13:32:22 dgoron Exp $


define(["dojo/_base/declare", "dojo/dom", "dojo/on", "dojo/topic", "dojo/_base/lang","dijit/form/TextBox", "dijit/form/Button", "dojo/dom-construct"], function(declare, dom, on, topic, lang, TextBox, Button, domConstruct){
	
	return declare([TextBox], {
		
		templateString:'<div class="dijit dijitReset dijitInline dijitLeft" id="widget_${id}" role="presentation" style="width:auto !important;"><div class="dijitReset dijitInputField dijitInputContainer">	<form name="form_${id}" ><input class="dijitReset dijitInputInner" data-dojo-attach-point="textbox,focusNode" autocomplete="off" ${!nameAttrSetting} type="${type}"  style="display:none;width:20em !important;"/>        <input id="f_${id}0" type="text" name="f_${id}0" style="width:20em" completion="${completion}" autfield="f_${id}_id0">   <input id="f_${id}_id0" type="hidden" value="" name="f_${id}_id0"><input id="max_${id}" type="hidden" value="1" name="max_${id}"><div id="button_open_popup_${id}"></div> <div id="button_delete_${id}0"></div> <div id="button_add_${id}"></div> <div id="add_part_${id}"></div></form> </div></div>',
		constructor:function(){
			
		},
		postCreate: function(){
			this.inherited(arguments);
			
			this.own( new Button({
				label: "...",
			}, "button_open_popup_"+this.id).on('click', lang.hitch(this,this.selector)));

			this.own( new Button({
				label: "X",
			}, "button_delete_"+this.id+"0").on('click', lang.hitch(this,this.raz,"0")));
			
			this.own( new Button({
				label: "+",
			}, "button_add_"+this.id).on('click', lang.hitch(this,this.add,"")));

			if(this.data.length) {
				for(var i=0; i<this.data.length; i++){
					if(i==0){
						dojo.byId("f_"+this.id+"0").value=this.data[0].label;
						dojo.byId("f_"+this.id+"_id0").value=this.data[0].id;
					} else {
						this.add(this.data[i]);
					}
				}
			} else {
				if(dojo.byId("f_"+this.id+"0")) {
					ajax_pack_element(dojo.byId("f_"+this.id+"0"));
				}
			}
			
			// this.add_function ...
			if(!window.add_categ){
				window.add_categ=lang.hitch(this,this.add,"");
			}
			//function callback
			if(!window.callback_categ){
				window.callback_categ=lang.hitch(this,this.authChange,"");
			}
		},	
		/*
		id: "categ",
		what_sel: "select_categ",
		completion: "categories_mul",
		selectUrl: "./select.php?what=categorie&dyn=1",
		inputIdUrl: "p1",
		inputNameUrl: "p2",
		data: data.item.categs
		*/
		selector:function(){	
			var name_id="xx";
			var name="xx";
			var select_prop= 'scrollbars=yes, toolbar=no, dependent=yes, resizable=yes';
			openPopUp(this.selectUrl+'&caller=form_'+this.id+'&'+this.inputIdUrl+'='+name_id+'&'+this.inputNameUrl+'='+name+'&callback='+this.callback, 'selector');		 
		},
		
		raz: function (index) {			
			dojo.byId("f_"+this.id+index).value="";
			dojo.byId("f_"+this.id+"_id"+index).value="";
			topic.publish('autForm',"autFormChange",{action:"raz"});
		},
		
		add: function (data) {		
			var suffixe=dojo.byId("max_"+this.id).value;
			var val_id="";
			var val_label="";
			
			if(data){
				val_id=data.id;
				val_label=data.label;	
			}
			if(data==""){ // appel issu du selecteur et bouton +
				topic.publish('autForm',"autFormChange",{action:"add"});				
			}
			domConstruct.place('<div class="row" id="row_'+this.id+suffixe+'"> </div>', "add_part_"+this.id);			
			var input_name =domConstruct.create("input",{
				id:"f_"+this.id+suffixe,
				name:"f_"+this.id+suffixe,
				value:val_label,
				type:"text",
				style:"width:20em",
				completion:this.completion,
				autfield:"f_"+this.id+"_id"+suffixe			
			});
			var input_name_id =domConstruct.create("input",{
				id:"f_"+this.id+"_id"+suffixe,
				name:"f_"+this.id+"_id"+suffixe,
				value:val_id,
				type:"hidden",
				onChange:lang.hitch(this,this.authChange)
			});
			
			domConstruct.place(input_name, "row_"+this.id+suffixe);
			domConstruct.place(input_name_id, "row_"+this.id+suffixe);
			domConstruct.place("<div id='button_delete_"+this.id+suffixe+"'></div>", "row_"+this.id+suffixe);
			
			this.own( new Button({
				label: "X",
			}, "button_delete_"+this.id+suffixe).on('click', lang.hitch(this,this.raz,suffixe)));		
			
			dojo.byId("max_"+this.id).value=suffixe*1+1*1;
			
			ajax_pack_element(dojo.byId("f_"+this.id+suffixe));
	    },
	    authChange: function (){
			topic.publish('autForm',"autFormChange",{action:"authChange"});
	    },
	    get_data: function (){
			var index=0;
			var data= new Array();
			if(dojo.byId("max_"+this.id)) {
				var nb=dojo.byId("max_"+this.id).value;
				for(var i=0; i<nb; i++){				
					//var label=dojo.byId("f_"+this.id+i).value;
					var id=dojo.byId("f_"+this.id+"_id"+i).value;
					if(id){					
						data[index]=id;
						index++;
					}
				}
			}
			return (data);
	    }
	});
});