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
}