package Lemonldap::NG::Manager::_HTML; # This package contains all subroutines that are provided after a # 'header_public' call. So those functions are called only if the browser # comes for the first time. use AutoLoader qw(AUTOLOAD); our $VERSION = '0.05'; 1; __END__ =pod =cut sub css { print <{dhtmlXTreeImageLocation}"); tree.setXMLAutoLoading("$ENV{SCRIPT_NAME}?lmQuery=conf"); tree.loadXML("$ENV{SCRIPT_NAME}?lmQuery=conf"); tree.setOnClickHandler(onNodeSelect); window.setTimeout("document.body.style.cursor='auto'",1000); }; function win_onresize(){ var cw=X.clientWidth(); var w=X.clientWidth()-12; var h=X.clientHeight()-12; s3.paint(w,h,w/4,w/5); } var indice=-1; function onNodeSelect(nodeId) { var k,v; if(tree.getUserData(nodeId,"modif")) { switch(tree.getUserData(nodeId,"modif")) { case 'text': k='valeur'; v=''; break; case 'both': k=''; v=''; //v=''; break; case 'value': k=tree.getItemText(nodeId); v=''; //v=''; } document.getElementById('formulaire').style.display='block'; document.getElementById('name').innerHTML = k; document.getElementById('value').innerHTML = v; } else { document.getElementById('formulaire').style.display='none'; } var but=''; if(nodeIs(nodeId,"virtualHosts")){ but+=button('Nouvel Hôte Virtuel','newVirtualHost',nodeId); if(nodeIs(nodeId,"virtualHost")){ but+=button('Nouvelle règle','newRule',nodeId); but+=button('Nouvel en-tête','newHeader',nodeId); } help('virtualHosts'); } else if(nodeIs(nodeId,"groups")){ but+=button('Nouveau groupe','newGroup',nodeId); help('groups'); } else if(nodeIs(nodeId,"generalParameters")){ if(nodeIs(nodeId,"ldapParameters")){ help('ldap'); } else if(nodeIs(nodeId,"exportedVars")){ but+=button('Nouvelle variable','newVar',nodeId); help('vars'); } else if(nodeIs(nodeId,'sessionStorage')){ if(nodeIs(nodeId,"globalStorageOptions")){ but+=button('Nouvelle option','newGSOpt',nodeId); } help('storage'); } } if(tree.getUserData(nodeId,"modif")=='both') but+=button("Supprimer",'deleteNode',nodeId); but+=button('Sauvegarder','saveConf'); document.getElementById('buttons').innerHTML = but; } function nodeIs(id,type) { if(id==type)return 1; if(id=="root")return 0; var next=tree.getParentId(id); if(type=="virtualHost" && next=="virtualHosts")return 1; return nodeIs(next,type); } function vhostId(id){ var next=tree.getParentId(id); if(next=="virtualHosts") return id; return vhostId(next); } function button(text,func,nodeId){ return '   '; } function insertNewChild(a,b,c) { tree.insertNewChild(a,b,c); tree.setItemColor(b,"#000000","#0000FF"); } function newVirtualHost() { var rep=prompt("Nouvel hôte virtuel"); if(rep) { insertNewChild('virtualHosts',rep,rep) tree.setUserData(rep,'modif','text'); insertNewChild(rep,rep+'_exportedHeaders','Headers'); insertNewChild(rep+'_exportedHeaders',rep+'_exportedHeaders_1','Auth-User'); tree.setUserData(rep+'_exportedHeaders_1','modif','both'); tree.setUserData(rep+'_exportedHeaders_1','value','\$uid'); insertNewChild(rep,rep+'_locationRules','Règles'); insertNewChild(rep+'_locationRules',rep+'_locationRules_default','default'); tree.setUserData(rep+'_locationRules_default','modif','value'); tree.setUserData(rep+'_locationRules_default','value','deny'); } } function newValue(id,text,type,value){ indice--; insertNewChild(id,'j_'+indice,text); tree.setUserData('j_'+indice,'modif',type); tree.setUserData('j_'+indice,'value',value); tree.selectItem('j_'+indice,true); } function newRule(id){ var lr=tree.getItemIdByIndex(vhostId(id),1); newValue(lr,'New rule','both','deny'); } function newHeader(id){ var eh=tree.getItemIdByIndex(vhostId(id),0); newValue(eh,'New-Header','both','\$uid'); } function newGroup(id){ newValue('groups','New-group','both',''); } function newVar(id){ newValue('exportedVars','New-var','both','uid'); } function newGSOpt(id){ newValue('globalStorageOptions','New-Opt','both',''); } function deleteNode(id){ tree.deleteItem(id); } var xhr_object = null; if(window.XMLHttpRequest) // Firefox xhr_object = new XMLHttpRequest(); else if(window.ActiveXObject) // Internet Explorer xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest: sauvegarde impossible."); } function help(s){ xhr_object.open("GET", "$ENV{SCRIPT_NAME}?lmQuery=help&help="+s, true); xhr_object.onreadystatechange = function() { if(xhr_object.readyState == 4) document.getElementById('help').innerHTML=xhr_object.responseText; } xhr_object.send(null); } function saveConf(){ var h=tree2txt('root'); //document.getElementById('help').innerHTML="
"+h+"
"; xhr_object.open("POST", "$ENV{SCRIPT_NAME}?lmQuery=upload",true); xhr_object.setRequestHeader("Content-type", "text/xml"); xhr_object.setRequestHeader("Content-length", h.length); xhr_object.onreadystatechange = function() { if(xhr_object.readyState == 4){ var r=xhr_object.responseText; if(r>0) { tree.setItemText('root','Configuration '+r); document.getElementById('help').innerHTML='

Configuration sauvegardée sous le numéro : '+r+'

'; } else { document.getElementById('help').innerHTML='

Échec de la sauvegarde

'; } } else document.getElementById('help').innerHTML='

Échec de la sauvegarde

'; } xhr_object.send(h); } function tree2txt(id){ var s=tree.getSubItems(id); var c=s.split(','); var r='<'+id+">"+ec(tree.getItemText(id))+"\\n"; if((!s) || s=='' || c.length==0){ r+= ''+ec(tree.getUserData(id,'value'))+"\\n"; } else { for(var i=0;i\\n"; return r; } function ec(s){ if((!s) || s=='') return s; return s.replace(/>/g,'>').replace(/ [ $args{'-style'} ] } if($args{'-style'} and !ref($args{'-style'})); push @{$args{'-style'}->{'-src'}}, "$ENV{SCRIPT_NAME}?lmQuery=css"; $args{'-title'} ||= 'Lemonldap::NG Configuration'; $self->CGI::start_html(%args); } sub main { # Lemonldap::Manager javascripts; print qq#\n#; print qq#\n#; # HTML code print <
 
 
EOT }