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); require Lemonldap::NG::Manager::_i18n; our $VERSION = '0.12'; 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('$text{newVirtualHost}','newVirtualHost',nodeId); if(nodeIs(nodeId,"virtualHost")){ but+=button('$text{newRule}','newRule',nodeId); but+=button('$text{newHeader}','newHeader',nodeId); } help('virtualHosts'); } else if(nodeIs(nodeId,"macros")){ but+=button('$text{newMacro}','newMacro',nodeId); help('macros'); } else if(nodeIs(nodeId,"groups")){ but+=button('$text{newGroup}','newGroup',nodeId); help('groups'); } else if(nodeIs(nodeId,"generalParameters")){ if(nodeIs(nodeId,"ldapParameters")){ help('ldap'); } else if(nodeIs(nodeId,"exportedVars")){ but+=button('$text{newVar}','newVar',nodeId); help('vars'); } else if(nodeIs(nodeId,'sessionStorage')){ if(nodeIs(nodeId,"globalStorageOptions")){ but+=button('$text{newGSOpt}','newGSOpt',nodeId); } help('storage'); } else if(nodeIs(nodeId,'authParams')){ help('authParams'); } else if(nodeIs(nodeId,'cookieName')){ help('cookieName'); } else if(nodeIs(nodeId,'domain')){ help('domain'); } } if(tree.getUserData(nodeId,"modif")=='both') but+=button('$text{deleteNode}','deleteNode',nodeId); but+=button('$text{saveConf}','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("$text{newVirtualHost}"); if(rep) { insertNewChild('virtualHosts',rep,rep) tree.setUserData(rep,'modif','text'); insertNewChild(rep,rep+'_exportedHeaders','$text{httpHeaders}'); 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','$text{locationRules}'); 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 newMacro(id){ newValue('macros','newMacro','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('$text{unableToSave}'); } 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='

$text{confSaved} : '+r+'

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

$text{saveFailure}

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

$text{saveFailure}

'; } xhr_object.send(h); } function tree2txt(id){ var s=tree.getSubItems(id); var c=s.split(','); id = id.replace(/^[0-9]*_/,''); 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 }