This repository has been archived on 2020-08-21. You can view files and clone it, but cannot push or open issues or pull requests.
pa4home/htdocs/js/app.js
2012-01-15 15:50:31 +01:00

247 lines
8.3 KiB
JavaScript

function Application(XMLproperties)
{
this.name = XMLproperties.getElementsByTagName("name")[0].firstChild.data;
this.dir = XMLproperties.getElementsByTagName("dir")[0].firstChild.data;
if (XMLproperties.getElementsByTagName("description")[0])
this.description = XMLproperties.getElementsByTagName("description")[0].firstChild.data;
else
this.description = null;
this.etatAvancement = XMLproperties.getElementsByTagName("etatAvancement")[0].firstChild.data;
this.version = XMLproperties.getElementsByTagName("version")[0].firstChild.data;
if (XMLproperties.getElementsByTagName("lang")[0])
this.lang = XMLproperties.getElementsByTagName("lang")[0].firstChild.data;
else
this.lang = null;
if (XMLproperties.getElementsByTagName("developpeur")[0])
this.developpeur = XMLproperties.getElementsByTagName("developpeur")[0].firstChild.data;
else
this.developpeur = null;
if (XMLproperties.getElementsByTagName("corps")[0])
this.corps = XMLproperties.getElementsByTagName("corps")[0].firstChild.data;
else
this.corps = "corps";
this.menu = null;
}
Application.prototype.getHomeElt = function()
{
var app = document.createElement("dl");
app.className = "application " + this.etatAvancement;
var appTitle = document.createElement("dt");
appTitle.innerHTML = this.name;
var appDescription = document.createElement("dd");
appDescription.innerHTML = this.description;
app.observe('click', this.load.bind(this));
app.appendChild(appTitle);
app.appendChild(appDescription);
return app;
}
Application.prototype.load = function()
{
printEtat(6);
var test = new Ajax.Request(
'ajax.php',
{
method: 'get',
parameters: {d: "display", a: this.dir},
onSuccess: this.loaded.bind(this),
onFailure: function() { printEtat(3); }
}
);
}
Application.prototype.loaded = function(transport, json)
{
clearScreen();
var display = transport.responseXML.documentElement.getElementsByTagName("display")[0];
var property = transport.responseXML.documentElement.getElementsByTagName("property")[0];
if (display.getElementsByTagName("titre")[0])
$('titre').src = imgTitres_dir + display.getElementsByTagName("titre")[0].firstChild.data;
if (display.getElementsByTagName("css"))
{
//On supprime le style par défaut
if ($("main_thm"))
document.getElementsByTagName('head')[0].removeChild($("main_thm"));
var styles = display.getElementsByTagName("css");
for (i = styles.length - 1; i >= 0; i--)
{
var css_file = document.createElement("link");
css_file.type = 'text/css';
css_file.rel = 'stylesheet';
css_file.className = 'app';
if (styles[i].getAttribute("media"))
css_file.media = styles[i].getAttribute("media");
css_file.href = "applications/" + this.dir + "/" + styles[i].firstChild.data;
document.getElementsByTagName('head')[0].appendChild(css_file);
}
}
if (display.getElementsByTagName("script"))
{
var scripts = display.getElementsByTagName("script");
for (i = scripts.length - 1; i >= 0; i--)
{
js_file = document.createElement("script");
js_file.type = 'text/javascript';
js_file.className = 'app';
js_file.src = "applications/" + this.dir + "/" + scripts[i].firstChild.data;
js_file.defer = true;
document.getElementsByTagName('head')[0].appendChild(js_file);
}
}
if (display.getElementsByTagName("background").length > 0)
$('body').style.backgroundImage = "url(" + display.getElementsByTagName("background")[0].firstChild.data + ")";
var etat;
if (property.getElementsByTagName("etatAvancement").length > 0)
etat = property.getElementsByTagName("etatAvancement")[0].firstChild.data;
else
etat = "";
if (etat == "En construction" || etat == "en construction" || etat == "enconstruction" || etat == "construction" || etat == "c")
$('etatAvance').src = "images/etats/construction.png";
else if (etat == "Alpha" || etat == "alpha" || etat == "a")
$('etatAvance').src = "images/etats/alpha.png";
else if (etat == "Beta" || etat == "beta" || etat == "Béta" || etat == "béta" || etat == "b")
$('etatAvance').src = "images/etats/beta.png";
else
$('etatAvance').src = "images/etats/final.png";
//On affiche la page
if (display.getElementsByTagName('body')[0])
$('corps').innerHTML = display.getElementsByTagName('body')[0].firstChild.data;
//On prépare le menu
if (property.getElementsByTagName("menu").length > 0)
this.menu = eval(property.getElementsByTagName("menu")[0].firstChild.data);
this.genMenu(username != "");
//On lance l'application
if (display.getElementsByTagName("js")[0])
{
var scripts = display.getElementsByTagName("js");
for (i = scripts.length - 1; i >= 0; i--)
eval(scripts[i].firstChild.data);
runApplication(property, display, json);
}
else
setTimeout("runApplication" + this.dir + "(" + property + ", " + display + ", " + json + ");", 1);
// setTimeout("alert('test')", 0);
printEtat(0);
}
Application.prototype.genMenu = function(online)
{
//On supprime tous les éléments du menu actuel
clearNode($('menu'));
//On ajoute le titre
var item = document.createElement("li");
item.innerHTML = this.name;
item.id = "nameApp";
$('menu').appendChild(item);
//Lien vers la page d'accueil
var item = document.createElement("li");
item.onclick = function() { hideShownMenu(); firstLoad(); };
item.innerHTML = "Accueil";
if (online)
item.className = "item";
else
item.className = "item hr";
$('menu').appendChild(item);
//Lien de déconnexion
if (online)
{
var item = document.createElement("li");
item.onclick = function() { hideShownMenu(); deconnexion(); };
item.innerHTML = "Déconnexion";
item.className = "item hr";
$('menu').appendChild(item);
}
//On insère les éléments de l'app
if (this.menu)
{
for (var i = this.menu.length - 1; i >= 0; i--)
addMenuItem(this.menu[i]["text"], this.menu[i]["eventClick"]);
}
//On insère le about app
var item = document.createElement("li");
item.observe('click', this.about.bind(this));
item.innerHTML = "À propos de ...";
item.className = "item hr";
$('menu').appendChild(item);
//Lien vers la page à propos du site
var item = document.createElement("li");
item.onclick = function() { hideShownMenu(); loadPage('aproposdusite'); };
item.innerHTML = "À propos du site";
item.className = "item";
$('menu').appendChild(item);
}
Application.prototype.about = function()
{
hideShownMenu();
$(this.corps).innerHTML = "";
//Texte correspondant à l'état de l'app
var txtEtat = "";
if (this.etatAvancement == "En construction" || this.etatAvancement == "en construction" || this.etatAvancement == "enconstruction" || this.etatAvancement == "construction" || this.etatAvancement == "c")
txtEtat = "En construction";
else if (this.etatAvancement == "Béta" || this.etatAvancement == "Beta" || this.etatAvancement == "beta" || this.etatAvancement == "béta" || this.etatAvancement == "b")
txtEtat = "Béta";
else if (this.etatAvancement == "Alpha" || this.etatAvancement == "alpha" || this.etatAvancement == "a")
txtEtat = "Alpha";
var titre = document.createElement("h2");
titre.innerHTML = "A propos de " + this.name + " pour Pommultimedia for Home";
$(this.corps).appendChild(titre);
titre = document.createElement("h3");
titre.innerHTML = this.name + "<br />Version " + this.version + " " + txtEtat;
$(this.corps).appendChild(titre);
if (this.description != null)
{
titre = document.createElement("h4");
titre.innerHTML = "<ins>Description :</ins> " + this.description;
$(this.corps).appendChild(titre);
}
if (this.lang != null)
{
titre = document.createElement("h4");
titre.innerHTML = "<ins>Langue :</ins> " + this.lang;
$(this.corps).appendChild(titre);
}
titre = document.createElement("h4");
titre.innerHTML = "<ins>Nom court :</ins> " + this.dir;
$(this.corps).appendChild(titre);
if (this.developpeur != null)
{
titre = document.createElement("h4");
titre.innerHTML = "<ins>Développeur :</ins> " + this.developpeur;
$(this.corps).appendChild(titre);
}
}