System update (web interface settings)
This commit is contained in:
parent
5ed65a06ff
commit
2e771bd19a
8 changed files with 498 additions and 434 deletions
|
@ -3,4 +3,4 @@ Title: Home
|
|||
---
|
||||
Your website works!
|
||||
|
||||
You can now [edit this page] or use your text editor.
|
||||
You can [edit this page] or use your text editor.
|
|
@ -3,7 +3,7 @@
|
|||
Language: de
|
||||
LanguageDescription: Deutsch
|
||||
LanguageAuthor: David Fehrmann
|
||||
LanguageVersion: 0.6.4
|
||||
LanguageVersion: 0.6.5
|
||||
|
||||
BlogBy: von
|
||||
BlogFilter: Blog:
|
||||
|
@ -29,10 +29,8 @@ SearchQuery: Suche:
|
|||
SearchResultsNone: Bitte einen Suchbegriff eingeben.
|
||||
SearchResultsEmpty: Keine Treffer für diese Suchanfrage.
|
||||
SearchButton: Suchen
|
||||
WebinterfaceInstallationTitle: Willkommen
|
||||
WebinterfaceInstallationSitename: Webseite:
|
||||
WebinterfaceInstallationAuthor: Name:
|
||||
WebinterfaceInstallationHomePage: ---\nTitle: Home\n---\nDeine Webseite funktioniert!\n\nDu kannst [edit - diese Seite bearbeiten] oder einen Texteditor benutzen.
|
||||
WebinterfaceInstallationTitle: Hallo
|
||||
WebinterfaceInstallationHomePage: Deine Webseite funktioniert!\n\nDu kannst [edit - diese Seite bearbeiten] oder einen Texteditor benutzen.
|
||||
WebinterfaceLoginTitle: Yellow
|
||||
WebinterfaceLoginEmail: E-Mail:
|
||||
WebinterfaceLoginPassword: Kennwort:
|
||||
|
@ -73,7 +71,7 @@ WebinterfaceRecoverStatusExpire: Benutzerkonto kann nicht wiederhergestellt werd
|
|||
WebinterfaceWelcomeSubject: Willkommen
|
||||
WebinterfaceWelcomeMessage: Hallo @usershort, dein Benutzerkonto wurde erstellt. Viel Spass beim Bearbeiten der Webseite.
|
||||
WebinterfaceInformationSubject: Willkommen zurück
|
||||
WebinterfaceInformationMessage: Hallo @usershort, dein Benutzerkonto wurde wiederhergestellt. Viel Spass beim Bearbeiten der Webseite.
|
||||
WebinterfaceInformationMessage: Hallo @usershort, dein Benutzerkonto wurde geändert. Viel Spass beim Bearbeiten der Webseite.
|
||||
WebinterfaceOkButton: Ok
|
||||
WebinterfaceCancelButton: Abbruch
|
||||
WebinterfaceCreateButton: Erzeugen
|
||||
|
@ -85,6 +83,9 @@ WebinterfaceDelete: -
|
|||
WebinterfaceCreateTitle: Neue Seite
|
||||
WebinterfaceDeleteTitle: Seite löschen
|
||||
WebinterfaceMarkdownHelp: Markdown
|
||||
WebinterfaceSettingsTitle: Einstellungen
|
||||
WebinterfaceSettingsChangeEmail: Email ändern
|
||||
WebinterfaceSettingsChangePassword: Kennwort ändern
|
||||
WebinterfaceUserHelp: Hilfe
|
||||
WebinterfaceUserLogout: Abmelden
|
||||
WikiFilter: Wiki:
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
Language: en
|
||||
LanguageDescription: English
|
||||
LanguageAuthor: Mark Seuffert
|
||||
LanguageVersion: 0.6.4
|
||||
LanguageVersion: 0.6.5
|
||||
|
||||
BlogBy: by
|
||||
BlogFilter: Blog:
|
||||
|
@ -29,10 +29,8 @@ SearchQuery: Search:
|
|||
SearchResultsNone: Enter a search term.
|
||||
SearchResultsEmpty: No results found.
|
||||
SearchButton: Search
|
||||
WebinterfaceInstallationTitle: Welcome
|
||||
WebinterfaceInstallationSitename: Website:
|
||||
WebinterfaceInstallationAuthor: Name:
|
||||
WebinterfaceInstallationHomePage: ---\nTitle: Home\n---\nYour website works!\n\nYou can now [edit this page] or use your text editor.
|
||||
WebinterfaceInstallationTitle: Hello
|
||||
WebinterfaceInstallationHomePage: Your website works!\n\nYou can [edit this page] or use your text editor.
|
||||
WebinterfaceLoginTitle: Yellow
|
||||
WebinterfaceLoginEmail: Email:
|
||||
WebinterfaceLoginPassword: Password:
|
||||
|
@ -73,7 +71,7 @@ WebinterfaceRecoverStatusExpire: User account can not be recovered. Link has exp
|
|||
WebinterfaceWelcomeSubject: Welcome
|
||||
WebinterfaceWelcomeMessage: Hi @usershort, your user account has been created. Have fun editing the website.
|
||||
WebinterfaceInformationSubject: Welcome back
|
||||
WebinterfaceInformationMessage: Hi @usershort, your user account has been recovered. Have fun editing the website.
|
||||
WebinterfaceInformationMessage: Hi @usershort, your user account has been changed. Have fun editing the website.
|
||||
WebinterfaceOkButton: Ok
|
||||
WebinterfaceCancelButton: Cancel
|
||||
WebinterfaceCreateButton: Create
|
||||
|
@ -85,6 +83,9 @@ WebinterfaceDelete: -
|
|||
WebinterfaceCreateTitle: New page
|
||||
WebinterfaceDeleteTitle: Delete page
|
||||
WebinterfaceMarkdownHelp: Markdown
|
||||
WebinterfaceSettingsTitle: Settings
|
||||
WebinterfaceSettingsChangeEmail: Change your email
|
||||
WebinterfaceSettingsChangePassword: Change your password
|
||||
WebinterfaceUserHelp: Help
|
||||
WebinterfaceUserLogout: Logout
|
||||
WikiFilter: Wiki:
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
Language: fr
|
||||
LanguageDescription: Français
|
||||
LanguageAuthor: Juh Nibreh
|
||||
LanguageVersion: 0.6.4
|
||||
LanguageVersion: 0.6.5
|
||||
|
||||
BlogBy: par
|
||||
BlogFilter: Blog:
|
||||
|
@ -29,10 +29,8 @@ SearchQuery: Rechercher:
|
|||
SearchResultsNone: Entrez un mot dans le champ de recherche.
|
||||
SearchResultsEmpty: Pas de résultats.
|
||||
SearchButton: Rechercher
|
||||
WebinterfaceInstallationTitle: Bienvenue
|
||||
WebinterfaceInstallationSitename: Site web:
|
||||
WebinterfaceInstallationAuthor: Nom:
|
||||
WebinterfaceInstallationHomePage: ---\nTitle: Home\n---\nVotre site web fonctionne!\n\nVous pouvez [edit - modifier cette page] ou utiliser un éditeur de texte.
|
||||
WebinterfaceInstallationTitle: Bonjour
|
||||
WebinterfaceInstallationHomePage: Votre site web fonctionne!\n\nVous pouvez [edit - modifier cette page] ou utiliser un éditeur de texte.
|
||||
WebinterfaceLoginTitle: Yellow
|
||||
WebinterfaceLoginEmail: Email:
|
||||
WebinterfaceLoginPassword: Mot de passe:
|
||||
|
@ -73,7 +71,7 @@ WebinterfaceRecoverStatusExpire: Le compte ne peut pas être restauré. Le lien
|
|||
WebinterfaceWelcomeSubject: Bienvenue
|
||||
WebinterfaceWelcomeMessage: Bonjour @usershort, votre compte utilisateur a bien été créé. Amusez-vous bien en éditant le site web.
|
||||
WebinterfaceInformationSubject: Bienvenue à nouveau
|
||||
WebinterfaceInformationMessage: Bonjour @usershort, votre compte utilisateur a bien été restauré. Amusez-vous bien en éditant le site web.
|
||||
WebinterfaceInformationMessage: Bonjour @usershort, votre compte utilisateur a bien été changé. Amusez-vous bien en éditant le site web.
|
||||
WebinterfaceOkButton: Ok
|
||||
WebinterfaceCancelButton: Annuler
|
||||
WebinterfaceCreateButton: Créer
|
||||
|
@ -85,6 +83,9 @@ WebinterfaceDelete: -
|
|||
WebinterfaceCreateTitle: Nouvelle page
|
||||
WebinterfaceDeleteTitle: Supprimer page
|
||||
WebinterfaceMarkdownHelp: Markdown
|
||||
WebinterfaceSettingsTitle: Paramètres
|
||||
WebinterfaceSettingsChangeEmail: Changez email
|
||||
WebinterfaceSettingsChangePassword: Changez mot de passe
|
||||
WebinterfaceUserHelp: Aide
|
||||
WebinterfaceUserLogout: Déconnexion
|
||||
WikiFilter: Wiki:
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// Language plugin
|
||||
class YellowLanguage
|
||||
{
|
||||
const Version = "0.6.4";
|
||||
const Version = "0.6.5";
|
||||
var $yellow; //access to API
|
||||
|
||||
// Handle initialisation
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Yellow web interface 0.6.6 */
|
||||
/* Yellow web interface 0.6.7 */
|
||||
|
||||
.yellow-bar { position:relative; overflow:hidden; height:2em; margin-bottom:10px; }
|
||||
.yellow-bar-left { display:block; float:left; }
|
||||
|
@ -20,8 +20,8 @@
|
|||
.yellow-pane p { margin:0.5em; }
|
||||
.yellow-pane ul { list-style:none; margin:0 0.5em; padding:0; }
|
||||
.yellow-pane div { overflow:hidden; }
|
||||
.yellow-cancel { display:block; float:right; padding:0 0.5em; color:#bbb; }
|
||||
.yellow-cancel:hover { text-decoration:none; color:#000; }
|
||||
.yellow-close { display:block; float:right; padding:0 0.5em; color:#bbb; }
|
||||
.yellow-close:hover { text-decoration:none; color:#000; }
|
||||
.yellow-arrow { position:absolute; top:0; left:0; }
|
||||
.yellow-arrow:after, .yellow-arrow:before {
|
||||
position:absolute;
|
||||
|
@ -91,7 +91,7 @@
|
|||
|
||||
#yellow-pane-login { text-align:center; white-space:nowrap; }
|
||||
#yellow-pane-login h1 { margin:0 1em; font-size:2em; }
|
||||
#yellow-pane-login input { width:15em; box-sizing:border-box; }
|
||||
#yellow-pane-login .yellow-form-control { width:15em; box-sizing:border-box; }
|
||||
#yellow-pane-login .yellow-btn { width:15em; margin:1em 1em 0.5em 0; }
|
||||
#yellow-pane-login-fields { width:15em; text-align:left; margin:0 auto; }
|
||||
#yellow-pane-login-buttons { margin:0.5em 0; }
|
||||
|
@ -99,7 +99,7 @@
|
|||
|
||||
#yellow-pane-signup { text-align:center; white-space:nowrap; }
|
||||
#yellow-pane-signup h1 { margin:0 1em; font-size:2em; }
|
||||
#yellow-pane-signup input { width:15em; box-sizing:border-box; }
|
||||
#yellow-pane-signup .yellow-form-control { width:15em; box-sizing:border-box; }
|
||||
#yellow-pane-signup .yellow-btn { width:15em; margin:1em 1em 0.5em 0; }
|
||||
#yellow-pane-signup-status { margin:0.5em 0; display:inline-block; }
|
||||
#yellow-pane-signup-fields { width:15em; text-align:left; margin:0 auto; }
|
||||
|
@ -107,18 +107,26 @@
|
|||
|
||||
#yellow-pane-recover { text-align:center; white-space:nowrap; }
|
||||
#yellow-pane-recover h1 { margin:0 1em; font-size:2em; }
|
||||
#yellow-pane-recover input { width:15em; box-sizing:border-box; }
|
||||
#yellow-pane-recover .yellow-form-control { width:15em; box-sizing:border-box; }
|
||||
#yellow-pane-recover .yellow-btn { width:15em; margin:1em 1em 0.5em 0; }
|
||||
#yellow-pane-recover-status { margin:0.5em 0; display:inline-block; }
|
||||
#yellow-pane-recover-fields-first, #yellow-pane-recover-fields-second { width:15em; text-align:left; margin:0 auto; }
|
||||
#yellow-pane-recover-buttons { margin-top:-0.5em; }
|
||||
|
||||
#yellow-pane-settings { text-align:center; white-space:nowrap; }
|
||||
#yellow-pane-settings h1 { margin:0 1em; font-size:2em; }
|
||||
#yellow-pane-settings .yellow-form-control { width:15em; box-sizing:border-box; }
|
||||
#yellow-pane-settings .yellow-btn { width:15em; margin:1em 1em 0.5em 0; }
|
||||
#yellow-pane-settings-fields { width:15em; text-align:left; margin:0 auto; }
|
||||
#yellow-pane-settings-buttons p { margin-top:0; margin-bottom:0; }
|
||||
|
||||
#yellow-pane-edit { }
|
||||
#yellow-pane-edit h1 { margin:0 0 10px 0; font-size:1.5em; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
|
||||
#yellow-pane-edit-page { padding:5px; outline:none; resize:none; }
|
||||
#yellow-pane-edit-buttons { margin-top:5px; }
|
||||
#yellow-pane-edit-buttons input { margin-right:10px; }
|
||||
#yellow-pane-edit-help { float:right; }
|
||||
|
||||
#yellow-pane-user { cursor:pointer; }
|
||||
#yellow-pane-user a { text-decoration:none; }
|
||||
#yellow-pane-user a:hover { text-decoration:underline; }
|
||||
|
|
|
@ -4,89 +4,59 @@
|
|||
// Yellow API
|
||||
var yellow =
|
||||
{
|
||||
version: "0.6.6",
|
||||
version: "0.6.7",
|
||||
action: function(text) { yellow.webinterface.action(text); },
|
||||
onClick: function(e) { yellow.webinterface.hidePanesOnClick(yellow.toolbox.getEventElement(e)); },
|
||||
onKeydown: function(e) { yellow.webinterface.hidePanesOnKeydown(yellow.toolbox.getEventKeycode(e)); },
|
||||
onResize: function() { yellow.webinterface.resizePane(yellow.webinterface.paneId); },
|
||||
onUpdate: function() { yellow.webinterface.updatePane(yellow.webinterface.paneId, yellow.webinterface.paneType); },
|
||||
webinterface:{}, toolbox:{}, page:{}, config:{}, text:{}
|
||||
onIntervall: function() { yellow.webinterface.updateIntervall(); }
|
||||
}
|
||||
|
||||
// Yellow web interface
|
||||
yellow.webinterface =
|
||||
{
|
||||
loaded: false, //web interface loaded? (boolean)
|
||||
intervalId: 0, //timer interval ID
|
||||
paneId: 0, //visible pane ID
|
||||
paneType: 0, //visible pane type
|
||||
intervalId: 0, //timer interval ID
|
||||
|
||||
// Initialise web interface
|
||||
init: function()
|
||||
{
|
||||
this.intervalId = setInterval("yellow.webinterface.load()", 1);
|
||||
yellow.toolbox.addEvent(document, "click", yellow.onClick);
|
||||
yellow.toolbox.addEvent(document, "keydown", yellow.onKeydown);
|
||||
yellow.toolbox.addEvent(window, "resize", yellow.onResize);
|
||||
},
|
||||
|
||||
// Load web interface
|
||||
load: function()
|
||||
{
|
||||
var body = document.getElementsByTagName("body")[0];
|
||||
if(body && body.firstChild && !this.loaded)
|
||||
{
|
||||
this.loaded = true;
|
||||
if(yellow.config.webinterfaceLocation)
|
||||
{
|
||||
if(yellow.debug) console.log("yellow.webinterface.load email:"+yellow.config.userEmail+" "+yellow.config.userName);
|
||||
if(yellow.config.userEmail)
|
||||
{
|
||||
this.createBar("yellow-bar", true, body.firstChild);
|
||||
this.createPane("yellow-pane-edit", true, body.firstChild);
|
||||
this.createPane("yellow-pane-user", true, body.firstChild);
|
||||
yellow.toolbox.addEvent(document.getElementById("yellow-pane-edit-page"), "keyup", yellow.onUpdate);
|
||||
yellow.toolbox.addEvent(document.getElementById("yellow-pane-edit-page"), "change", yellow.onUpdate);
|
||||
} else {
|
||||
this.createBar("yellow-bar", false, body.firstChild);
|
||||
this.createPane("yellow-pane-login", false, body.firstChild);
|
||||
this.createPane("yellow-pane-signup", false, body.firstChild);
|
||||
this.createPane("yellow-pane-recover", false, body.firstChild);
|
||||
yellow.action(yellow.page.loginAction);
|
||||
}
|
||||
}
|
||||
clearInterval(this.intervalId);
|
||||
}
|
||||
},
|
||||
|
||||
// Execute action
|
||||
// Handle action
|
||||
action: function(text)
|
||||
{
|
||||
if(yellow.config.debug) console.log("yellow.webinterface.action action:"+text);
|
||||
switch(text)
|
||||
{
|
||||
case "login": this.togglePane("yellow-pane-login"); break;
|
||||
case "logout": yellow.toolbox.submitForm({"action":"logout"}); break;
|
||||
case "signup": this.togglePane("yellow-pane-signup", "signup"); break;
|
||||
case "confirm": this.togglePane("yellow-pane-signup", "confirm"); break;
|
||||
case "approve": this.togglePane("yellow-pane-signup", "approve"); break;
|
||||
case "recover": this.togglePane("yellow-pane-recover", "recover"); break;
|
||||
case "create": this.togglePane("yellow-pane-edit", "create", true); break;
|
||||
case "edit": this.togglePane("yellow-pane-edit", "edit", true); break;
|
||||
case "delete": this.togglePane("yellow-pane-edit", "delete", true); break;
|
||||
case "user": this.togglePane("yellow-pane-user"); break;
|
||||
case "login": this.showPane("yellow-pane-login"); break;
|
||||
case "logout": this.sendPane("yellow-pane-logout", "logout"); break;
|
||||
case "signup": this.showPane("yellow-pane-signup", "signup"); break;
|
||||
case "confirm": this.showPane("yellow-pane-signup", "confirm"); break;
|
||||
case "approve": this.showPane("yellow-pane-signup", "approve"); break;
|
||||
case "recover": this.showPane("yellow-pane-recover", "recover"); break;
|
||||
case "settings": this.showPane("yellow-pane-settings", "settings"); break;
|
||||
case "create": this.showPane("yellow-pane-edit", "create", true); break;
|
||||
case "edit": this.showPane("yellow-pane-edit", "edit", true); break;
|
||||
case "delete": this.showPane("yellow-pane-edit", "delete", true); break;
|
||||
case "user": this.showPane("yellow-pane-user"); break;
|
||||
case "send": this.sendPane(this.paneId, this.paneType); break;
|
||||
case "close": this.hidePane(this.paneId); break;
|
||||
case "help": this.hidePane(this.paneId); location.href = this.getText("UserHelpUrl", "yellow"); break;
|
||||
}
|
||||
},
|
||||
|
||||
// Create bar
|
||||
createBar: function(id, normal, elementReference)
|
||||
createBar: function(barId)
|
||||
{
|
||||
if(yellow.debug) console.log("yellow.webinterface.createBar id:"+id);
|
||||
if(yellow.config.debug) console.log("yellow.webinterface.createBar id:"+barId);
|
||||
var elementBar = document.createElement("div");
|
||||
elementBar.className = "yellow-bar";
|
||||
elementBar.setAttribute("id", id);
|
||||
if(normal)
|
||||
elementBar.setAttribute("id", barId);
|
||||
if(barId=="yellow-bar")
|
||||
{
|
||||
yellow.toolbox.addEvent(document, "click", yellow.onClick);
|
||||
yellow.toolbox.addEvent(document, "keydown", yellow.onKeydown);
|
||||
yellow.toolbox.addEvent(window, "resize", yellow.onResize);
|
||||
}
|
||||
if(yellow.config.userName)
|
||||
{
|
||||
elementBar.innerHTML =
|
||||
"<div class=\"yellow-bar-left\">"+
|
||||
|
@ -95,21 +65,27 @@ yellow.webinterface =
|
|||
"<div class=\"yellow-bar-right\">"+
|
||||
"<a href=\"#\" onclick=\"yellow.action('create'); return false;\" id=\"yellow-pane-create-link\">"+this.getText("Create")+"</a>"+
|
||||
"<a href=\"#\" onclick=\"yellow.action('delete'); return false;\" id=\"yellow-pane-delete-link\">"+this.getText("Delete")+"</a>"+
|
||||
"<a href=\"#\" onclick=\"yellow.action('user'); return false;\" id=\"yellow-pane-user-link\">"+yellow.config.userName+"</a>"+
|
||||
"<a href=\"#\" onclick=\"yellow.action('user'); return false;\" id=\"yellow-pane-user-link\">"+yellow.toolbox.encodeHtml(yellow.config.userName)+"</a>"+
|
||||
"</div>";
|
||||
}
|
||||
yellow.toolbox.insertBefore(elementBar, elementReference);
|
||||
yellow.toolbox.insertBefore(elementBar, document.getElementsByTagName("body")[0].firstChild);
|
||||
return elementBar;
|
||||
},
|
||||
|
||||
// Create pane
|
||||
createPane: function(paneId, bubble, elementReference)
|
||||
createPane: function(paneId, paneType)
|
||||
{
|
||||
if(yellow.debug) console.log("yellow.webinterface.createPane id:"+paneId);
|
||||
if(yellow.config.debug) console.log("yellow.webinterface.createPane id:"+paneId);
|
||||
var elementPane = document.createElement("div");
|
||||
elementPane.className = "yellow-pane";
|
||||
elementPane.setAttribute("id", paneId);
|
||||
elementPane.style.display = "none";
|
||||
if(bubble)
|
||||
if(paneId=="yellow-pane-edit")
|
||||
{
|
||||
yellow.toolbox.addEvent(elementPane, "keyup", yellow.onUpdate);
|
||||
yellow.toolbox.addEvent(elementPane, "change", yellow.onUpdate);
|
||||
}
|
||||
if(paneId=="yellow-pane-edit" || paneId=="yellow-pane-user")
|
||||
{
|
||||
var elementArrow = document.createElement("span");
|
||||
elementArrow.className = "yellow-arrow";
|
||||
|
@ -118,16 +94,17 @@ yellow.webinterface =
|
|||
}
|
||||
var elementDiv = document.createElement("div");
|
||||
elementDiv.setAttribute("id", paneId+"-content");
|
||||
if(paneId == "yellow-pane-login")
|
||||
switch(paneId)
|
||||
{
|
||||
elementDiv.innerHTML =
|
||||
case "yellow-pane-login":
|
||||
elementDiv.innerHTML =
|
||||
"<form method=\"post\">"+
|
||||
"<a href=\"#\" onclick=\"yellow.action('close'); return false;\" class=\"yellow-cancel\">x</a>"+
|
||||
"<a href=\"#\" onclick=\"yellow.action('close'); return false;\" class=\"yellow-close\">x</a>"+
|
||||
"<h1>"+this.getText("LoginTitle")+"</h1>"+
|
||||
"<div id=\"yellow-pane-login-fields\">"+
|
||||
"<input type=\"hidden\" name=\"action\" value=\"login\" />"+
|
||||
"<p><label for=\"email\">"+this.getText("LoginEmail")+"</label><br /><input class=\"yellow-form-control\" name=\"email\" id=\"email\" maxlength=\"64\" value=\""+yellow.config.loginEmail+"\" /></p>"+
|
||||
"<p><label for=\"password\">"+this.getText("LoginPassword")+"</label><br /><input class=\"yellow-form-control\" type=\"password\" name=\"password\" id=\"password\" maxlength=\"64\" value=\""+yellow.config.loginPassword+"\" /></p>"+
|
||||
"<p><label for=\"yellow-pane-login-email\">"+this.getText("LoginEmail")+"</label><br /><input class=\"yellow-form-control\" name=\"email\" id=\"yellow-pane-login-email\" maxlength=\"64\" value=\""+yellow.toolbox.encodeHtml(yellow.config.loginEmail)+"\" /></p>"+
|
||||
"<p><label for=\"yellow-pane-login-password\">"+this.getText("LoginPassword")+"</label><br /><input class=\"yellow-form-control\" type=\"password\" name=\"password\" id=\"yellow-pane-login-password\" maxlength=\"64\" value=\""+yellow.toolbox.encodeHtml(yellow.config.loginPassword)+"\" /></p>"+
|
||||
"<p><input class=\"yellow-btn\" type=\"submit\" value=\""+this.getText("LoginButton")+"\" /></p>"+
|
||||
"</div>"+
|
||||
"<div id=\"yellow-pane-login-buttons\">"+
|
||||
|
@ -135,44 +112,62 @@ yellow.webinterface =
|
|||
"<p><a href=\"#\" onclick=\"yellow.action('signup'); return false;\">"+this.getText("LoginSignup")+"</a><p>"+
|
||||
"</div>"+
|
||||
"</form>";
|
||||
} else if(paneId == "yellow-pane-signup") {
|
||||
elementDiv.innerHTML =
|
||||
break;
|
||||
case "yellow-pane-signup":
|
||||
elementDiv.innerHTML =
|
||||
"<form method=\"post\">"+
|
||||
"<a href=\"#\" onclick=\"yellow.action('close'); return false;\" class=\"yellow-cancel\">x</a>"+
|
||||
"<a href=\"#\" onclick=\"yellow.action('close'); return false;\" class=\"yellow-close\">x</a>"+
|
||||
"<h1>"+this.getText("SignupTitle")+"</h1>"+
|
||||
"<div id=\"yellow-pane-signup-status\" class=\""+yellow.page.loginStatus+"\">"+this.getText("SignupStatus", "", yellow.page.loginStatus)+"</div>"+
|
||||
"<div id=\"yellow-pane-signup-status\" class=\""+yellow.page.status+"\">"+this.getText("SignupStatus", "", yellow.page.status)+"</div>"+
|
||||
"<div id=\"yellow-pane-signup-fields\">"+
|
||||
"<input type=\"hidden\" name=\"action\" value=\"signup\" />"+
|
||||
"<p><label for=\"name\">"+this.getText("SignupName")+"</label><br /><input class=\"yellow-form-control\" name=\"name\" id=\"name\" maxlength=\"64\" value=\""+yellow.toolbox.encodeHtml(this.getRequest("Name"))+"\" /></p>"+
|
||||
"<p><label for=\"email\">"+this.getText("SignupEmail")+"</label><br /><input class=\"yellow-form-control\" name=\"email\" id=\"email\" maxlength=\"64\" value=\""+yellow.toolbox.encodeHtml(this.getRequest("Email"))+"\" /></p>"+
|
||||
"<p><label for=\"password\">"+this.getText("SignupPassword")+"</label><br /><input class=\"yellow-form-control\" type=\"password\" name=\"password\" id=\"password\" maxlength=\"64\" value=\"\" /></p>"+
|
||||
"<p><label for=\"yellow-pane-signup-name\">"+this.getText("SignupName")+"</label><br /><input class=\"yellow-form-control\" name=\"name\" id=\"yellow-pane-signup-name\" maxlength=\"64\" value=\""+yellow.toolbox.encodeHtml(this.getRequest("Name"))+"\" /></p>"+
|
||||
"<p><label for=\"yellow-pane-signup-email\">"+this.getText("SignupEmail")+"</label><br /><input class=\"yellow-form-control\" name=\"email\" id=\"yellow-pane-signup-email\" maxlength=\"64\" value=\""+yellow.toolbox.encodeHtml(this.getRequest("Email"))+"\" /></p>"+
|
||||
"<p><label for=\"yellow-pane-signup-password\">"+this.getText("SignupPassword")+"</label><br /><input class=\"yellow-form-control\" type=\"password\" name=\"password\" id=\"yellow-pane-signup-password\" maxlength=\"64\" value=\"\" /></p>"+
|
||||
"<p><input class=\"yellow-btn\" type=\"submit\" value=\""+this.getText("SignupButton")+"\" /></p>"+
|
||||
"</div>"+
|
||||
"<div id=\"yellow-pane-signup-buttons\">"+
|
||||
"<p><input class=\"yellow-btn\" type=\"button\" onclick=\"yellow.action('close'); return false;\" value=\""+this.getText("OkButton")+"\" /></p>"+
|
||||
"</div>"+
|
||||
"</form>";
|
||||
} else if(paneId == "yellow-pane-recover") {
|
||||
elementDiv.innerHTML =
|
||||
break;
|
||||
case "yellow-pane-recover":
|
||||
elementDiv.innerHTML =
|
||||
"<form method=\"post\">"+
|
||||
"<a href=\"#\" onclick=\"yellow.action('close'); return false;\" class=\"yellow-cancel\">x</a>"+
|
||||
"<a href=\"#\" onclick=\"yellow.action('close'); return false;\" class=\"yellow-close\">x</a>"+
|
||||
"<h1>"+this.getText("RecoverTitle")+"</h1>"+
|
||||
"<div id=\"yellow-pane-recover-status\" class=\""+yellow.page.loginStatus+"\">"+this.getText("RecoverStatus", "", yellow.page.loginStatus)+"</div>"+
|
||||
"<div id=\"yellow-pane-recover-status\" class=\""+yellow.page.status+"\">"+this.getText("RecoverStatus", "", yellow.page.status)+"</div>"+
|
||||
"<div id=\"yellow-pane-recover-fields-first\">"+
|
||||
"<input type=\"hidden\" name=\"action\" value=\"recover\" />"+
|
||||
"<p><label for=\"email\">"+this.getText("RecoverEmail")+"</label><br /><input class=\"yellow-form-control\" name=\"email\" id=\"email\" maxlength=\"64\" value=\""+yellow.toolbox.encodeHtml(this.getRequest("Email"))+"\" /></p>"+
|
||||
"<p><label for=\"yellow-pane-recover-email\">"+this.getText("RecoverEmail")+"</label><br /><input class=\"yellow-form-control\" name=\"email\" id=\"yellow-pane-recover-email\" maxlength=\"64\" value=\""+yellow.toolbox.encodeHtml(this.getRequest("Email"))+"\" /></p>"+
|
||||
"<p><input class=\"yellow-btn\" type=\"submit\" value=\""+this.getText("RecoverButton")+"\" /></p>"+
|
||||
"</div>"+
|
||||
"<div id=\"yellow-pane-recover-fields-second\">"+
|
||||
"<p><label for=\"password\">"+this.getText("RecoverPassword")+"</label><br /><input class=\"yellow-form-control\" type=\"password\" name=\"password\" id=\"password\" maxlength=\"64\" value=\"\" /></p>"+
|
||||
"<p><input class=\"yellow-btn\" type=\"submit\" value=\""+this.getText("RecoverButton")+"\" /></p>"+
|
||||
"<p><label for=\"yellow-pane-recover-password\">"+this.getText("RecoverPassword")+"</label><br /><input class=\"yellow-form-control\" type=\"password\" name=\"password\" id=\"yellow-pane-recover-password\" maxlength=\"64\" value=\"\" /></p>"+
|
||||
"<p><input class=\"yellow-btn\" type=\"submit\" value=\""+this.getText("OkButton")+"\" /></p>"+
|
||||
"</div>"+
|
||||
"<div id=\"yellow-pane-recover-buttons\">"+
|
||||
"<p><input class=\"yellow-btn\" type=\"button\" onclick=\"yellow.action('close'); return false;\" value=\""+this.getText("OkButton")+"\" /></p>"+
|
||||
"</div>"+
|
||||
"</form>";
|
||||
} else if(paneId == "yellow-pane-edit") {
|
||||
elementDiv.innerHTML =
|
||||
break;
|
||||
case "yellow-pane-settings":
|
||||
elementDiv.innerHTML =
|
||||
"<form method=\"post\">"+
|
||||
"<a href=\"#\" onclick=\"yellow.action('close'); return false;\" class=\"yellow-close\">x</a>"+
|
||||
"<h1 id=\"yellow-pane-settings-title\">"+this.getText("SettingsTitle")+"</h1>"+
|
||||
"<div id=\"yellow-pane-settings-fields\">"+
|
||||
"<input type=\"hidden\" name=\"action\" value=\"settings\" />"+
|
||||
"<p><label for=\"yellow-pane-settings-name\">"+this.getText("SignupName")+"</label><br /><input class=\"yellow-form-control\" name=\"name\" id=\"yellow-pane-settings-name\" maxlength=\"64\" value=\"\" /></p>"+
|
||||
"<div id=\"yellow-pane-settings-buttons\">"+
|
||||
"<p><a href=\"#\" onclick=\"yellow.action('recover'); return false;\">"+this.getText("SettingsChangePassword")+"</a><p>"+
|
||||
"</div>"+this.getPaneLanguages(paneId)+
|
||||
"<p><input class=\"yellow-btn\" type=\"submit\" value=\""+this.getText("OkButton")+"\" /></p>"+
|
||||
"</div>"+
|
||||
"</form>";
|
||||
break;
|
||||
case "yellow-pane-edit":
|
||||
elementDiv.innerHTML =
|
||||
"<form method=\"post\">"+
|
||||
"<h1 id=\"yellow-pane-edit-title\">"+this.getText("Edit")+"</h1>"+
|
||||
"<textarea id=\"yellow-pane-edit-page\" class=\"yellow-form-control\" name=\"rawdataedit\"></textarea>"+
|
||||
|
@ -182,91 +177,162 @@ yellow.webinterface =
|
|||
"<a href=\""+this.getText("MarkdownHelpUrl", "yellow")+"\" target=\"_blank\" id=\"yellow-pane-edit-help\">"+this.getText("MarkdownHelp")+"</a>" +
|
||||
"</div>"+
|
||||
"</form>";
|
||||
} else if(paneId == "yellow-pane-user") {
|
||||
elementDiv.innerHTML =
|
||||
"<p>"+yellow.config.userEmail+"</p>"+
|
||||
"<p><a href=\""+this.getText("UserHelpUrl", "yellow")+"\" onclick=\"yellow.action('user'); return true;\">"+this.getText("UserHelp")+"</a></p>" +
|
||||
break;
|
||||
case "yellow-pane-user":
|
||||
elementDiv.innerHTML =
|
||||
"<p>"+yellow.toolbox.encodeHtml(yellow.config.userEmail)+"</p>"+
|
||||
"<p><a href=\"#\" onclick=\"yellow.action('settings'); return false;\">"+this.getText("SettingsTitle")+"</a></p>" +
|
||||
"<p><a href=\"#\" onclick=\"yellow.action('help'); return false;\">"+this.getText("UserHelp")+"</a></p>" +
|
||||
"<p><a href=\"#\" onclick=\"yellow.action('logout'); return false;\">"+this.getText("UserLogout")+"</a></p>";
|
||||
break;
|
||||
}
|
||||
elementPane.appendChild(elementDiv);
|
||||
yellow.toolbox.insertAfter(elementPane, elementReference);
|
||||
yellow.toolbox.insertAfter(elementPane, document.getElementsByTagName("body")[0].firstChild);
|
||||
return elementPane;
|
||||
},
|
||||
|
||||
// Update pane
|
||||
updatePane: function(paneId, paneType, init)
|
||||
{
|
||||
if(yellow.debug) console.log("yellow.webinterface.updatePane id:"+paneId);
|
||||
if(paneId == "yellow-pane-login")
|
||||
switch(paneId)
|
||||
{
|
||||
if(!yellow.config.loginExtra)
|
||||
{
|
||||
document.getElementById("yellow-pane-login-buttons").style.display = "none";
|
||||
}
|
||||
} else if(paneId == "yellow-pane-signup") {
|
||||
switch(paneType)
|
||||
{
|
||||
case "signup": text = this.getText("SignupStatus", "", yellow.page.loginStatus); break;
|
||||
case "confirm": text = this.getText("ConfirmStatus", "", yellow.page.loginStatus); break;
|
||||
case "approve": text = this.getText("ApproveStatus", "", yellow.page.loginStatus); break;
|
||||
}
|
||||
document.getElementById("yellow-pane-signup-status").innerHTML = yellow.toolbox.encodeHtml(text);
|
||||
if(yellow.page.loginStatus=="next" || yellow.page.loginStatus=="done" || yellow.page.loginStatus=="expire")
|
||||
{
|
||||
document.getElementById("yellow-pane-signup-fields").style.display = "none";
|
||||
} else {
|
||||
document.getElementById("yellow-pane-signup-buttons").style.display = "none";
|
||||
}
|
||||
} else if(paneId == "yellow-pane-recover") {
|
||||
if(yellow.page.loginStatus=="next" || yellow.page.loginStatus=="done" || yellow.page.loginStatus=="expire")
|
||||
{
|
||||
document.getElementById("yellow-pane-recover-fields-first").style.display = "none";
|
||||
document.getElementById("yellow-pane-recover-fields-second").style.display = "none";
|
||||
} else {
|
||||
document.getElementById("yellow-pane-recover-buttons").style.display = "none";
|
||||
if(this.getRequest("Id"))
|
||||
case "yellow-pane-login":
|
||||
if(!yellow.config.loginButtons)
|
||||
{
|
||||
document.getElementById("yellow-pane-recover-fields-first").style.display = "none";
|
||||
} else {
|
||||
document.getElementById("yellow-pane-recover-fields-second").style.display = "none";
|
||||
document.getElementById("yellow-pane-login-buttons").style.display = "none";
|
||||
}
|
||||
break;
|
||||
case "yellow-pane-signup":
|
||||
if(yellow.page.status=="next" || yellow.page.status=="done" || yellow.page.status=="expire")
|
||||
{
|
||||
document.getElementById("yellow-pane-signup-fields").style.display = "none";
|
||||
} else {
|
||||
document.getElementById("yellow-pane-signup-buttons").style.display = "none";
|
||||
}
|
||||
}
|
||||
} else if(paneId == "yellow-pane-edit") {
|
||||
if(init)
|
||||
{
|
||||
var title = yellow.page.title;
|
||||
var string = yellow.page.rawDataEdit;
|
||||
switch(paneType)
|
||||
{
|
||||
case "create": title = this.getText("CreateTitle"); string = yellow.page.rawDataNew; break;
|
||||
case "delete": title = this.getText("DeleteTitle"); break;
|
||||
case "signup": text = this.getText("SignupStatus", "", yellow.page.status); break;
|
||||
case "confirm": text = this.getText("ConfirmStatus", "", yellow.page.status); break;
|
||||
case "approve": text = this.getText("ApproveStatus", "", yellow.page.status); break;
|
||||
}
|
||||
document.getElementById("yellow-pane-edit-title").innerHTML = yellow.toolbox.encodeHtml(title);
|
||||
document.getElementById("yellow-pane-edit-page").value = string;
|
||||
yellow.toolbox.setCursorPosition(document.getElementById("yellow-pane-edit-page"), 0);
|
||||
}
|
||||
var action = this.getPaneAction(paneId, paneType)
|
||||
if(action)
|
||||
{
|
||||
var key, className;
|
||||
switch(action)
|
||||
document.getElementById("yellow-pane-signup-status").innerHTML = yellow.toolbox.encodeHtml(text);
|
||||
break;
|
||||
case "yellow-pane-recover":
|
||||
if(yellow.page.status=="next" || yellow.page.status=="done" || yellow.page.status=="expire")
|
||||
{
|
||||
case "create": key = "CreateButton"; className = "yellow-btn yellow-btn-create"; break;
|
||||
case "edit": key = "EditButton"; className = "yellow-btn yellow-btn-edit"; break;
|
||||
case "delete": key = "DeleteButton"; className = "yellow-btn yellow-btn-delete"; break;
|
||||
document.getElementById("yellow-pane-recover-fields-first").style.display = "none";
|
||||
document.getElementById("yellow-pane-recover-fields-second").style.display = "none";
|
||||
} else {
|
||||
document.getElementById("yellow-pane-recover-buttons").style.display = "none";
|
||||
if(this.getRequest("Id"))
|
||||
{
|
||||
document.getElementById("yellow-pane-recover-fields-first").style.display = "none";
|
||||
} else {
|
||||
document.getElementById("yellow-pane-recover-fields-second").style.display = "none";
|
||||
}
|
||||
}
|
||||
document.getElementById("yellow-pane-edit-send").value = this.getText(key);
|
||||
document.getElementById("yellow-pane-edit-send").className = className;
|
||||
} else {
|
||||
document.getElementById("yellow-pane-edit-send").style.display = "none";
|
||||
}
|
||||
if(yellow.config.userEmail)
|
||||
{
|
||||
document.getElementById("yellow-pane-recover-email").value = yellow.config.userEmail;
|
||||
}
|
||||
break;
|
||||
case "yellow-pane-settings":
|
||||
document.getElementById("yellow-pane-settings-name").value = yellow.config.userName;
|
||||
document.getElementById("yellow-pane-settings-"+yellow.config.userLanguage).checked = true;
|
||||
break;
|
||||
case "yellow-pane-edit":
|
||||
if(init)
|
||||
{
|
||||
var title = yellow.page.title;
|
||||
var string = yellow.page.rawDataEdit;
|
||||
switch(paneType)
|
||||
{
|
||||
case "create": title = this.getText("CreateTitle"); string = yellow.page.rawDataNew; break;
|
||||
case "delete": title = this.getText("DeleteTitle"); break;
|
||||
}
|
||||
document.getElementById("yellow-pane-edit-title").innerHTML = yellow.toolbox.encodeHtml(title);
|
||||
document.getElementById("yellow-pane-edit-page").value = string;
|
||||
yellow.toolbox.setCursorPosition(document.getElementById("yellow-pane-edit-page"), 0);
|
||||
}
|
||||
var action = this.getPaneAction(paneId, paneType)
|
||||
if(action)
|
||||
{
|
||||
var key, className;
|
||||
switch(action)
|
||||
{
|
||||
case "create": key = "CreateButton"; className = "yellow-btn yellow-btn-create"; break;
|
||||
case "edit": key = "EditButton"; className = "yellow-btn yellow-btn-edit"; break;
|
||||
case "delete": key = "DeleteButton"; className = "yellow-btn yellow-btn-delete"; break;
|
||||
}
|
||||
document.getElementById("yellow-pane-edit-send").value = this.getText(key);
|
||||
document.getElementById("yellow-pane-edit-send").className = className;
|
||||
} else {
|
||||
document.getElementById("yellow-pane-edit-send").style.display = "none";
|
||||
}
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
// Update timer intervall
|
||||
updateIntervall: function()
|
||||
{
|
||||
var body = document.getElementsByTagName("body")[0];
|
||||
if(body && body.firstChild && !document.getElementById("yellow-bar"))
|
||||
{
|
||||
this.createBar("yellow-bar");
|
||||
this.action(yellow.page.action);
|
||||
clearInterval(this.intervalId);
|
||||
}
|
||||
},
|
||||
|
||||
// Resize pane
|
||||
resizePane: function(paneId)
|
||||
{
|
||||
if(yellow.config.debug) console.log("yellow.webinterface.resizePane id:"+paneId);
|
||||
var elementBar = document.getElementById("yellow-bar");
|
||||
var paneTop = yellow.toolbox.getOuterTop(elementBar) + yellow.toolbox.getOuterHeight(elementBar);
|
||||
var paneWidth = yellow.toolbox.getOuterWidth(elementBar, true);
|
||||
var paneHeight = yellow.toolbox.getWindowHeight() - paneTop - yellow.toolbox.getOuterHeight(elementBar);
|
||||
switch(paneId)
|
||||
{
|
||||
case "yellow-pane-login":
|
||||
case "yellow-pane-signup":
|
||||
case "yellow-pane-recover":
|
||||
case "yellow-pane-settings":
|
||||
yellow.toolbox.setOuterTop(document.getElementById(paneId), paneTop);
|
||||
yellow.toolbox.setOuterWidth(document.getElementById(paneId), paneWidth);
|
||||
break;
|
||||
case "yellow-pane-edit":
|
||||
yellow.toolbox.setOuterTop(document.getElementById("yellow-pane-edit"), paneTop);
|
||||
yellow.toolbox.setOuterHeight(document.getElementById("yellow-pane-edit"), paneHeight);
|
||||
yellow.toolbox.setOuterWidth(document.getElementById("yellow-pane-edit"), paneWidth);
|
||||
yellow.toolbox.setOuterWidth(document.getElementById("yellow-pane-edit-page"), yellow.toolbox.getWidth(document.getElementById("yellow-pane-edit")));
|
||||
var height1 = yellow.toolbox.getHeight(document.getElementById("yellow-pane-edit"));
|
||||
var height2 = yellow.toolbox.getOuterHeight(document.getElementById("yellow-pane-edit-content"));
|
||||
var height3 = yellow.toolbox.getOuterHeight(document.getElementById("yellow-pane-edit-page"));
|
||||
yellow.toolbox.setOuterHeight(document.getElementById("yellow-pane-edit-page"), height1 - height2 + height3);
|
||||
var elementLink = document.getElementById("yellow-pane-"+this.paneType+"-link");
|
||||
var position = yellow.toolbox.getOuterLeft(elementLink) + yellow.toolbox.getOuterWidth(elementLink)/2;
|
||||
position -= yellow.toolbox.getOuterLeft(document.getElementById("yellow-pane-edit")) + 1;
|
||||
yellow.toolbox.setOuterLeft(document.getElementById("yellow-pane-edit-arrow"), position);
|
||||
break;
|
||||
case "yellow-pane-user":
|
||||
yellow.toolbox.setOuterTop(document.getElementById("yellow-pane-user"), paneTop);
|
||||
yellow.toolbox.setOuterHeight(document.getElementById("yellow-pane-user"), paneHeight, true);
|
||||
yellow.toolbox.setOuterLeft(document.getElementById("yellow-pane-user"), paneWidth - yellow.toolbox.getOuterWidth(document.getElementById("yellow-pane-user")), true);
|
||||
var elementLink = document.getElementById("yellow-pane-user-link");
|
||||
var position = yellow.toolbox.getOuterLeft(elementLink) + yellow.toolbox.getOuterWidth(elementLink)/2;
|
||||
position -= yellow.toolbox.getOuterLeft(document.getElementById("yellow-pane-user"));
|
||||
yellow.toolbox.setOuterLeft(document.getElementById("yellow-pane-user-arrow"), position);
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
// Send pane
|
||||
sendPane: function(paneId, paneType)
|
||||
{
|
||||
if(yellow.debug) console.log("yellow.webinterface.sendPane id:"+paneId);
|
||||
if(paneId == "yellow-pane-edit")
|
||||
if(yellow.config.debug) console.log("yellow.webinterface.sendPane id:"+paneId);
|
||||
if(paneId=="yellow-pane-edit")
|
||||
{
|
||||
var action = this.getPaneAction(paneId, paneType);
|
||||
if(action)
|
||||
|
@ -279,38 +345,35 @@ yellow.webinterface =
|
|||
} else {
|
||||
this.hidePane(paneId);
|
||||
}
|
||||
} else {
|
||||
yellow.toolbox.submitForm({"action":paneType});
|
||||
}
|
||||
},
|
||||
|
||||
// Show or hide pane
|
||||
togglePane: function(paneId, paneType, modal)
|
||||
showPane: function(paneId, paneType, modal)
|
||||
{
|
||||
if(this.paneId!=paneId || this.paneType!=paneType)
|
||||
{
|
||||
this.hidePane(this.paneId);
|
||||
this.showPane(paneId, paneType, modal);
|
||||
} else {
|
||||
this.hidePane(paneId);
|
||||
}
|
||||
},
|
||||
|
||||
// Show pane
|
||||
showPane: function(paneId, paneType, modal)
|
||||
{
|
||||
var element = document.getElementById(paneId);
|
||||
if(!yellow.toolbox.isVisible(element))
|
||||
{
|
||||
if(yellow.debug) console.log("yellow.webinterface.showPane id:"+paneId);
|
||||
element.style.display = "block";
|
||||
if(modal)
|
||||
var element = document.getElementById(paneId);
|
||||
if(!element) element = this.createPane(paneId, paneType);
|
||||
if(!yellow.toolbox.isVisible(element))
|
||||
{
|
||||
yellow.toolbox.addClass(document.body, "yellow-body-modal-open");
|
||||
yellow.toolbox.addValue("meta[name=viewport]", "content", ", maximum-scale=1, user-scalable=0");
|
||||
if(yellow.config.debug) console.log("yellow.webinterface.showPane id:"+paneId);
|
||||
element.style.display = "block";
|
||||
if(modal)
|
||||
{
|
||||
yellow.toolbox.addClass(document.body, "yellow-body-modal-open");
|
||||
yellow.toolbox.addValue("meta[name=viewport]", "content", ", maximum-scale=1, user-scalable=0");
|
||||
}
|
||||
this.paneId = paneId;
|
||||
this.paneType = paneType;
|
||||
this.resizePane(paneId);
|
||||
this.updatePane(paneId, paneType, true);
|
||||
}
|
||||
this.paneId = paneId;
|
||||
this.paneType = paneType;
|
||||
this.resizePane(paneId);
|
||||
this.updatePane(paneId, paneType, true);
|
||||
} else {
|
||||
this.hidePane(this.paneId);
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -320,7 +383,7 @@ yellow.webinterface =
|
|||
var element = document.getElementById(paneId);
|
||||
if(yellow.toolbox.isVisible(element))
|
||||
{
|
||||
if(yellow.debug) console.log("yellow.webinterface.hidePane id:"+paneId);
|
||||
if(yellow.config.debug) console.log("yellow.webinterface.hidePane id:"+paneId);
|
||||
yellow.toolbox.removeClass(document.body, "yellow-body-modal-open");
|
||||
yellow.toolbox.removeValue("meta[name=viewport]", "content", ", maximum-scale=1, user-scalable=0");
|
||||
element.style.display = "none";
|
||||
|
@ -357,61 +420,16 @@ yellow.webinterface =
|
|||
// Hide all panes on ESC key
|
||||
hidePanesOnKeydown: function(keycode)
|
||||
{
|
||||
if(keycode == 27) this.hidePanes();
|
||||
},
|
||||
|
||||
// Resize panes where needed
|
||||
resizePane: function(paneId)
|
||||
{
|
||||
if(document.getElementById("yellow-bar"))
|
||||
{
|
||||
var elementBar = document.getElementById("yellow-bar");
|
||||
var paneTop = yellow.toolbox.getOuterTop(elementBar) + yellow.toolbox.getOuterHeight(elementBar);
|
||||
var paneWidth = yellow.toolbox.getOuterWidth(elementBar, true);
|
||||
var paneHeight = yellow.toolbox.getWindowHeight() - paneTop - yellow.toolbox.getOuterHeight(elementBar);
|
||||
switch(paneId)
|
||||
{
|
||||
case "yellow-pane-login":
|
||||
case "yellow-pane-signup":
|
||||
case "yellow-pane-recover":
|
||||
yellow.toolbox.setOuterTop(document.getElementById(paneId), paneTop);
|
||||
yellow.toolbox.setOuterWidth(document.getElementById(paneId), paneWidth);
|
||||
break;
|
||||
case "yellow-pane-edit":
|
||||
yellow.toolbox.setOuterTop(document.getElementById("yellow-pane-edit"), paneTop);
|
||||
yellow.toolbox.setOuterHeight(document.getElementById("yellow-pane-edit"), paneHeight);
|
||||
yellow.toolbox.setOuterWidth(document.getElementById("yellow-pane-edit"), paneWidth);
|
||||
yellow.toolbox.setOuterWidth(document.getElementById("yellow-pane-edit-page"), yellow.toolbox.getWidth(document.getElementById("yellow-pane-edit")));
|
||||
var height1 = yellow.toolbox.getHeight(document.getElementById("yellow-pane-edit"));
|
||||
var height2 = yellow.toolbox.getOuterHeight(document.getElementById("yellow-pane-edit-content"));
|
||||
var height3 = yellow.toolbox.getOuterHeight(document.getElementById("yellow-pane-edit-page"));
|
||||
yellow.toolbox.setOuterHeight(document.getElementById("yellow-pane-edit-page"), height1 - height2 + height3);
|
||||
var elementLink = document.getElementById("yellow-pane-"+this.paneType+"-link");
|
||||
var position = yellow.toolbox.getOuterLeft(elementLink) + yellow.toolbox.getOuterWidth(elementLink)/2;
|
||||
position -= yellow.toolbox.getOuterLeft(document.getElementById("yellow-pane-edit")) + 1;
|
||||
yellow.toolbox.setOuterLeft(document.getElementById("yellow-pane-edit-arrow"), position);
|
||||
break;
|
||||
case "yellow-pane-user":
|
||||
yellow.toolbox.setOuterTop(document.getElementById("yellow-pane-user"), paneTop);
|
||||
yellow.toolbox.setOuterHeight(document.getElementById("yellow-pane-user"), paneHeight, true);
|
||||
yellow.toolbox.setOuterLeft(document.getElementById("yellow-pane-user"), paneWidth - yellow.toolbox.getOuterWidth(document.getElementById("yellow-pane-user")), true);
|
||||
var elementLink = document.getElementById("yellow-pane-user-link");
|
||||
var position = yellow.toolbox.getOuterLeft(elementLink) + yellow.toolbox.getOuterWidth(elementLink)/2;
|
||||
position -= yellow.toolbox.getOuterLeft(document.getElementById("yellow-pane-user"));
|
||||
yellow.toolbox.setOuterLeft(document.getElementById("yellow-pane-user-arrow"), position);
|
||||
break;
|
||||
}
|
||||
if(yellow.debug) console.log("yellow.webinterface.resizePane bar:"+elementBar.offsetWidth+"/"+elementBar.offsetHeight);
|
||||
}
|
||||
if(keycode==27) this.hidePanes();
|
||||
},
|
||||
|
||||
// Return pane action
|
||||
getPaneAction: function(paneId, paneType)
|
||||
{
|
||||
var action = "";
|
||||
if(paneId == "yellow-pane-edit")
|
||||
if(paneId=="yellow-pane-edit")
|
||||
{
|
||||
if(!yellow.page.userRestrictions)
|
||||
if(!yellow.config.userRestrictions)
|
||||
{
|
||||
var string = document.getElementById("yellow-pane-edit-page").value;
|
||||
switch(paneType)
|
||||
|
@ -425,6 +443,22 @@ yellow.webinterface =
|
|||
}
|
||||
return action;
|
||||
},
|
||||
|
||||
// Return pane languages
|
||||
getPaneLanguages: function(paneId)
|
||||
{
|
||||
var languages = "";
|
||||
if(yellow.toolbox.getLength(yellow.config.serverLanguages)>1)
|
||||
{
|
||||
languages += "<p>";
|
||||
for(var language in yellow.config.serverLanguages)
|
||||
{
|
||||
languages += "<label for=\""+paneId+"-"+language+"\"><input type=\"radio\" name=\"language\" id=\""+paneId+"-"+language+"\" value=\""+language+"\"> "+yellow.config.serverLanguages[language]+"</label><br />";
|
||||
}
|
||||
languages += "</p>";
|
||||
}
|
||||
return languages;
|
||||
},
|
||||
|
||||
// Return request string
|
||||
getRequest: function(key, prefix)
|
||||
|
@ -515,6 +549,12 @@ yellow.toolbox =
|
|||
return e.keyCode
|
||||
},
|
||||
|
||||
// Return element length
|
||||
getLength: function(element)
|
||||
{
|
||||
return Object.keys ? Object.keys(element).length : 0;
|
||||
},
|
||||
|
||||
// Set element width/height in pixel, including padding and border
|
||||
setOuterWidth: function(element, width, maxWidth)
|
||||
{
|
||||
|
@ -727,4 +767,4 @@ yellow.toolbox =
|
|||
}
|
||||
}
|
||||
|
||||
yellow.webinterface.init();
|
||||
yellow.webinterface.intervalId = setInterval("yellow.onIntervall()", 1);
|
||||
|
|
|
@ -5,12 +5,14 @@
|
|||
// Web interface plugin
|
||||
class YellowWebinterface
|
||||
{
|
||||
const Version = "0.6.6";
|
||||
const Version = "0.6.7";
|
||||
var $yellow; //access to API
|
||||
var $active; //web interface is active? (boolean)
|
||||
var $loginAction; //web interface login action
|
||||
var $loginStatus; //web interface login status
|
||||
var $userEmail; //web interface user
|
||||
var $userLanguage; //web interface user language
|
||||
var $userRestrictions; //web interface user can change page? (boolean)
|
||||
var $action; //web interface action
|
||||
var $status; //web interface status
|
||||
var $users; //web interface users
|
||||
var $merge; //web interface merge
|
||||
var $rawDataSource; //raw data of page for comparison
|
||||
|
@ -40,20 +42,10 @@ class YellowWebinterface
|
|||
function onRequest($serverScheme, $serverName, $base, $location, $fileName)
|
||||
{
|
||||
$statusCode = 0;
|
||||
if($this->checkRequest($location))
|
||||
if($this->checkRequest($location, $fileName))
|
||||
{
|
||||
list($serverScheme, $serverName, $base, $location, $fileName) = $this->updateRequestInformation();
|
||||
$statusCode = $this->processRequest($serverScheme, $serverName, $base, $location, $fileName);
|
||||
} else {
|
||||
$activeLocation = $this->yellow->config->get("webinterfaceLocation");
|
||||
if(rtrim($location, '/') == rtrim($activeLocation, '/'))
|
||||
{
|
||||
$statusCode = 301;
|
||||
$location = $this->yellow->lookup->normaliseUrl(
|
||||
$this->yellow->config->get("webinterfaceServerScheme"),
|
||||
$this->yellow->config->get("webinterfaceServerName"), $base, $activeLocation);
|
||||
$this->yellow->sendStatus($statusCode, $location);
|
||||
}
|
||||
}
|
||||
return $statusCode;
|
||||
}
|
||||
|
@ -67,16 +59,12 @@ class YellowWebinterface
|
|||
{
|
||||
if(empty($this->rawDataSource)) $this->rawDataSource = $page->rawData;
|
||||
if(empty($this->rawDataEdit)) $this->rawDataEdit = $page->rawData;
|
||||
if($page->statusCode == 424)
|
||||
{
|
||||
$title = $this->yellow->toolbox->createTextTitle($page->location);
|
||||
$this->rawDataEdit = $this->getRawDataNew($title);
|
||||
}
|
||||
} else {
|
||||
if(empty($this->loginAction)) $this->loginAction = "login";
|
||||
if(empty($this->loginStatus)) $this->loginStatus = "none";
|
||||
if($this->loginStatus == "error") $this->loginAction = "error";
|
||||
if($page->statusCode == 424) $this->rawDataEdit = $this->getRawDataNew($page->location);
|
||||
}
|
||||
if(empty($this->userLanguage)) $this->userLanguage = $page->get("language");
|
||||
if(empty($this->action)) $this->action = $this->isUser() ? "none" : "login";
|
||||
if(empty($this->status)) $this->status = "none";
|
||||
if($this->status == "error") $this->action = "error";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -107,7 +95,6 @@ class YellowWebinterface
|
|||
$output .= "yellow.page = ".json_encode($this->getPageData()).";\n";
|
||||
$output .= "yellow.config = ".json_encode($this->getConfigData()).";\n";
|
||||
$output .= "yellow.text = ".json_encode($this->getTextData()).";\n";
|
||||
if(defined("DEBUG") && DEBUG>=1) $output .= "yellow.debug = ".json_encode(DEBUG).";\n";
|
||||
$output .= "// ]]>\n";
|
||||
$output .= "</script>\n";
|
||||
}
|
||||
|
@ -184,10 +171,10 @@ class YellowWebinterface
|
|||
case "confirm": $statusCode = $this->processRequestConfirm($serverScheme, $serverName, $base, $location, $fileName); break;
|
||||
case "approve": $statusCode = $this->processRequestApprove($serverScheme, $serverName, $base, $location, $fileName); break;
|
||||
case "recover": $statusCode = $this->processRequestRecover($serverScheme, $serverName, $base, $location, $fileName); break;
|
||||
case "settings": $statusCode = $this->processRequestSettings($serverScheme, $serverName, $base, $location, $fileName); break;
|
||||
case "create": $statusCode = $this->processRequestCreate($serverScheme, $serverName, $base, $location, $fileName); break;
|
||||
case "edit": $statusCode = $this->processRequestEdit($serverScheme, $serverName, $base, $location, $fileName); break;
|
||||
case "delete": $statusCode = $this->processRequestDelete($serverScheme, $serverName, $base, $location, $fileName); break;
|
||||
case "install": $statusCode = $this->processRequestInstall($serverScheme, $serverName, $base, $location, $fileName); break;
|
||||
}
|
||||
} else {
|
||||
switch($_REQUEST["action"])
|
||||
|
@ -202,7 +189,9 @@ class YellowWebinterface
|
|||
if($statusCode == 0)
|
||||
{
|
||||
$statusCode = $this->yellow->processRequest($serverScheme, $serverName, $base, $location, $fileName, false);
|
||||
if($this->loginAction == "fail") $this->yellow->page->error(500, "Login failed, [please log in](javascript:yellow.action('login');)!");
|
||||
$fileNameConfig = $this->yellow->config->get("configDir").$this->yellow->config->get("configFile");
|
||||
if($this->action == "off") $this->yellow->page->error(500, "Please configure webmaster email in file '$fileNameConfig'!");
|
||||
if($this->action == "fail") $this->yellow->page->error(500, "Login failed, [please log in](javascript:yellow.action('login');)!");
|
||||
}
|
||||
return $statusCode;
|
||||
}
|
||||
|
@ -218,7 +207,7 @@ class YellowWebinterface
|
|||
if($this->yellow->isRequestContentDirectory($location))
|
||||
{
|
||||
$statusCode = 301;
|
||||
$location = $this->yellow->lookup->isFileLocation($location) ? "$location/" : "/".$this->yellow->getRequestLanguage()."/";
|
||||
$location = $this->yellow->lookup->isFileLocation($location) ? "$location/" : "/".$this->yellow->getRequestLanguage(true)."/";
|
||||
$location = $this->yellow->lookup->normaliseUrl($serverScheme, $serverName, $base, $location);
|
||||
$this->yellow->sendStatus($statusCode, $location);
|
||||
} else {
|
||||
|
@ -234,7 +223,7 @@ class YellowWebinterface
|
|||
function processRequestLogin($serverScheme, $serverName, $base, $location, $fileName)
|
||||
{
|
||||
$statusCode = 0;
|
||||
$home = $this->users->getHome();
|
||||
$home = $this->users->getHome($this->userEmail);
|
||||
if(substru($location, 0, strlenu($home)) == $home)
|
||||
{
|
||||
$statusCode = 303;
|
||||
|
@ -252,8 +241,8 @@ class YellowWebinterface
|
|||
function processRequestLogout($serverScheme, $serverName, $base, $location, $fileName)
|
||||
{
|
||||
$statusCode = 302;
|
||||
$this->userEmail = "";
|
||||
$this->users->destroyCookie("login");
|
||||
$this->users->email = "";
|
||||
$location = $this->yellow->lookup->normaliseUrl(
|
||||
$this->yellow->config->get("serverScheme"),
|
||||
$this->yellow->config->get("serverName"),
|
||||
|
@ -265,25 +254,25 @@ class YellowWebinterface
|
|||
// Process request for user signup
|
||||
function processRequestSignup($serverScheme, $serverName, $base, $location, $fileName)
|
||||
{
|
||||
$this->loginAction = "signup";
|
||||
$this->loginStatus = "ok";
|
||||
$this->action = "signup";
|
||||
$this->status = "ok";
|
||||
$name = trim(preg_replace("/[^\pL\d\-\. ]/u", "-", $_REQUEST["name"]));
|
||||
$email = trim($_REQUEST["email"]);
|
||||
$password = trim($_REQUEST["password"]);
|
||||
if(empty($name) || empty($email) || empty($password)) $this->loginStatus = "incomplete";
|
||||
if($this->loginStatus == "ok") $this->loginStatus = $this->getUserAccount($email, $password, $this->loginAction);
|
||||
if($this->loginStatus == "ok" && !$this->isExtra()) $this->loginStatus = "next";
|
||||
if($this->loginStatus == "ok" && $this->users->isExisting($email)) $this->loginStatus = "next";
|
||||
if($this->loginStatus == "ok")
|
||||
if(empty($name) || empty($email) || empty($password)) $this->status = "incomplete";
|
||||
if($this->status == "ok") $this->status = $this->getUserAccount($email, $password, $this->action);
|
||||
if($this->status == "ok" && !$this->users->isWebmaster()) $this->status = "next";
|
||||
if($this->status == "ok" && $this->users->isExisting($email)) $this->status = "next";
|
||||
if($this->status == "ok")
|
||||
{
|
||||
$fileNameUser = $this->yellow->config->get("configDir").$this->yellow->config->get("webinterfaceUserFile");
|
||||
$this->loginStatus = $this->users->update($fileNameUser, $email, $password, $name, "", "unconfirmed") ? "ok" : "error";
|
||||
if($this->loginStatus == "error") $this->yellow->page->error(500, "Can't write file '$fileNameUser'!");
|
||||
$this->status = $this->users->update($fileNameUser, $email, $password, $name, "", "unconfirmed") ? "ok" : "error";
|
||||
if($this->status == "error") $this->yellow->page->error(500, "Can't write file '$fileNameUser'!");
|
||||
}
|
||||
if($this->loginStatus == "ok")
|
||||
if($this->status == "ok")
|
||||
{
|
||||
$this->loginStatus = $this->sendMail($serverScheme, $serverName, $base, $email, "confirm") ? "next" : "error";
|
||||
if($this->loginStatus == "error") $this->yellow->page->error(500, "Can't send email on this server!");
|
||||
$this->status = $this->sendMail($serverScheme, $serverName, $base, $email, "confirm") ? "next" : "error";
|
||||
if($this->status == "error") $this->yellow->page->error(500, "Can't send email on this server!");
|
||||
}
|
||||
$statusCode = $this->yellow->processRequest($serverScheme, $serverName, $base, $location, $fileName, false);
|
||||
return $statusCode;
|
||||
|
@ -292,20 +281,20 @@ class YellowWebinterface
|
|||
// Process request to confirm user signup
|
||||
function processRequestConfirm($serverScheme, $serverName, $base, $location, $fileName)
|
||||
{
|
||||
$this->loginAction = "confirm";
|
||||
$this->loginStatus = "ok";
|
||||
$this->action = "confirm";
|
||||
$this->status = "ok";
|
||||
$email = $_REQUEST["email"];
|
||||
$this->loginStatus = $this->getUserRequest($email, $_REQUEST["action"], $_REQUEST["expire"], $_REQUEST["id"]);
|
||||
if($this->loginStatus == "ok")
|
||||
$this->status = $this->getUserRequest($email, $_REQUEST["action"], $_REQUEST["expire"], $_REQUEST["id"]);
|
||||
if($this->status == "ok")
|
||||
{
|
||||
$fileNameUser = $this->yellow->config->get("configDir").$this->yellow->config->get("webinterfaceUserFile");
|
||||
$this->loginStatus = $this->users->update($fileNameUser, $email, "", "", "", "unapproved") ? "ok" : "error";
|
||||
if($this->loginStatus == "error") $this->yellow->page->error(500, "Can't write file '$fileNameUser'!");
|
||||
$this->status = $this->users->update($fileNameUser, $email, "", "", "", "unapproved") ? "ok" : "error";
|
||||
if($this->status == "error") $this->yellow->page->error(500, "Can't write file '$fileNameUser'!");
|
||||
}
|
||||
if($this->loginStatus == "ok")
|
||||
if($this->status == "ok")
|
||||
{
|
||||
$this->loginStatus = $this->sendMail($serverScheme, $serverName, $base, $email, "approve") ? "done" : "error";
|
||||
if($this->loginStatus == "error") $this->yellow->page->error(500, "Can't send email on this server!");
|
||||
$this->status = $this->sendMail($serverScheme, $serverName, $base, $email, "approve") ? "done" : "error";
|
||||
if($this->status == "error") $this->yellow->page->error(500, "Can't send email on this server!");
|
||||
}
|
||||
$statusCode = $this->yellow->processRequest($serverScheme, $serverName, $base, $location, $fileName, false);
|
||||
return $statusCode;
|
||||
|
@ -314,20 +303,20 @@ class YellowWebinterface
|
|||
// Process request to approve user signup
|
||||
function processRequestApprove($serverScheme, $serverName, $base, $location, $fileName)
|
||||
{
|
||||
$this->loginAction = "approve";
|
||||
$this->loginStatus = "ok";
|
||||
$this->action = "approve";
|
||||
$this->status = "ok";
|
||||
$email = $_REQUEST["email"];
|
||||
$this->loginStatus = $this->getUserRequest($email, $_REQUEST["action"], $_REQUEST["expire"], $_REQUEST["id"]);
|
||||
if($this->loginStatus == "ok")
|
||||
$this->status = $this->getUserRequest($email, $_REQUEST["action"], $_REQUEST["expire"], $_REQUEST["id"]);
|
||||
if($this->status == "ok")
|
||||
{
|
||||
$fileNameUser = $this->yellow->config->get("configDir").$this->yellow->config->get("webinterfaceUserFile");
|
||||
$this->loginStatus = $this->users->update($fileNameUser, $email, "", "", "", "active") ? "ok" : "error";
|
||||
if($this->loginStatus == "error") $this->yellow->page->error(500, "Can't write file '$fileNameUser'!");
|
||||
$this->status = $this->users->update($fileNameUser, $email, "", "", "", "active") ? "ok" : "error";
|
||||
if($this->status == "error") $this->yellow->page->error(500, "Can't write file '$fileNameUser'!");
|
||||
}
|
||||
if($this->loginStatus == "ok")
|
||||
if($this->status == "ok")
|
||||
{
|
||||
$this->loginStatus = $this->sendMail($serverScheme, $serverName, $base, $email, "welcome") ? "done" : "error";
|
||||
if($this->loginStatus == "error") $this->yellow->page->error(500, "Can't send email on this server!");
|
||||
$this->status = $this->sendMail($serverScheme, $serverName, $base, $email, "welcome") ? "done" : "error";
|
||||
if($this->status == "error") $this->yellow->page->error(500, "Can't send email on this server!");
|
||||
}
|
||||
$statusCode = $this->yellow->processRequest($serverScheme, $serverName, $base, $location, $fileName, false);
|
||||
return $statusCode;
|
||||
|
@ -336,42 +325,67 @@ class YellowWebinterface
|
|||
// Process request to recover password
|
||||
function processRequestRecover($serverScheme, $serverName, $base, $location, $fileName)
|
||||
{
|
||||
$this->loginAction = "recover";
|
||||
$this->loginStatus = "ok";
|
||||
$this->action = "recover";
|
||||
$this->status = "ok";
|
||||
$email = trim($_REQUEST["email"]);
|
||||
$password = trim($_REQUEST["password"]);
|
||||
if(empty($_REQUEST["id"]))
|
||||
{
|
||||
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) $this->loginStatus = "invalid";
|
||||
if($this->loginStatus == "ok" && !$this->isExtra()) $this->loginStatus = "next";
|
||||
if($this->loginStatus == "ok" && !$this->users->isExisting($email)) $this->loginStatus = "next";
|
||||
if($this->loginStatus == "ok")
|
||||
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) $this->status = "invalid";
|
||||
if($this->status == "ok" && !$this->users->isWebmaster()) $this->status = "next";
|
||||
if($this->status == "ok" && !$this->users->isExisting($email)) $this->status = "next";
|
||||
if($this->status == "ok")
|
||||
{
|
||||
$this->loginStatus = $this->sendMail($serverScheme, $serverName, $base, $email, "recover") ? "next" : "error";
|
||||
if($this->loginStatus == "error") $this->yellow->page->error(500, "Can't send email on this server!");
|
||||
$this->status = $this->sendMail($serverScheme, $serverName, $base, $email, "recover") ? "next" : "error";
|
||||
if($this->status == "error") $this->yellow->page->error(500, "Can't send email on this server!");
|
||||
}
|
||||
} else {
|
||||
$this->loginStatus = $this->getUserRequest($email, $_REQUEST["action"], $_REQUEST["expire"], $_REQUEST["id"]);
|
||||
if($this->loginStatus == "ok")
|
||||
$this->status = $this->getUserRequest($email, $_REQUEST["action"], $_REQUEST["expire"], $_REQUEST["id"]);
|
||||
if($this->status == "ok")
|
||||
{
|
||||
if(empty($password)) $this->loginStatus = "password";
|
||||
if($this->loginStatus == "ok") $this->loginStatus = $this->getUserAccount($email, $password, $this->loginAction);
|
||||
if($this->loginStatus == "ok")
|
||||
if(empty($password)) $this->status = "password";
|
||||
if($this->status == "ok") $this->status = $this->getUserAccount($email, $password, $this->action);
|
||||
if($this->status == "ok")
|
||||
{
|
||||
$fileNameUser = $this->yellow->config->get("configDir").$this->yellow->config->get("webinterfaceUserFile");
|
||||
$this->loginStatus = $this->users->update($fileNameUser, $email, $password) ? "ok" : "error";
|
||||
if($this->loginStatus == "error") $this->yellow->page->error(500, "Can't write file '$fileNameUser'!");
|
||||
$this->status = $this->users->update($fileNameUser, $email, $password) ? "ok" : "error";
|
||||
if($this->status == "error") $this->yellow->page->error(500, "Can't write file '$fileNameUser'!");
|
||||
}
|
||||
if($this->loginStatus == "ok")
|
||||
if($this->status == "ok")
|
||||
{
|
||||
$this->loginStatus = $this->sendMail($serverScheme, $serverName, $base, $email, "information") ? "done" : "error";
|
||||
if($this->loginStatus == "error") $this->yellow->page->error(500, "Can't send email on this server!");
|
||||
$this->userEmail = "";
|
||||
$this->users->destroyCookie("login");
|
||||
$this->status = $this->sendMail($serverScheme, $serverName, $base, $email, "information") ? "done" : "error";
|
||||
if($this->status == "error") $this->yellow->page->error(500, "Can't send email on this server!");
|
||||
}
|
||||
}
|
||||
}
|
||||
$statusCode = $this->yellow->processRequest($serverScheme, $serverName, $base, $location, $fileName, false);
|
||||
return $statusCode;
|
||||
}
|
||||
|
||||
// Process request to change settings
|
||||
function processRequestSettings($serverScheme, $serverName, $base, $location, $fileName)
|
||||
{
|
||||
$statusCode = 0;
|
||||
if($this->getUserAccount($this->userEmail, "", "settings") == "ok")
|
||||
{
|
||||
$name = trim(preg_replace("/[^\pL\d\-\. ]/u", "-", $_REQUEST["name"]));
|
||||
$language = trim($_REQUEST["language"]);
|
||||
$fileNameUser = $this->yellow->config->get("configDir").$this->yellow->config->get("webinterfaceUserFile");
|
||||
if($this->users->update($fileNameUser, $this->userEmail, "", $name, $language))
|
||||
{
|
||||
$statusCode = 303;
|
||||
$location = $this->yellow->lookup->normaliseUrl($serverScheme, $serverName, $base, $location);
|
||||
$this->yellow->sendStatus($statusCode, $location);
|
||||
} else {
|
||||
$statusCode = 500;
|
||||
$this->yellow->processRequest($serverScheme, $serverName, $base, $location, $fileName, false);
|
||||
$this->yellow->page->error(500, "Can't write file '$fileNameUser'!");
|
||||
}
|
||||
}
|
||||
return $statusCode;
|
||||
}
|
||||
|
||||
// Process request to create page
|
||||
function processRequestCreate($serverScheme, $serverName, $base, $location, $fileName)
|
||||
|
@ -460,7 +474,7 @@ class YellowWebinterface
|
|||
function processRequestInstall($serverScheme, $serverName, $base, $location, $fileName)
|
||||
{
|
||||
$statusCode = 0;
|
||||
if($this->yellow->config->get("installationMode") && !$this->yellow->isStaticFile($location, $fileName, false))
|
||||
if($this->yellow->config->get("installationMode"))
|
||||
{
|
||||
$fileName = $this->yellow->config->get("configDir")."page-installation.txt";
|
||||
$this->yellow->pages->pages["root/"] = array();
|
||||
|
@ -469,7 +483,7 @@ class YellowWebinterface
|
|||
$this->yellow->page->parseData($this->getRawDataInstallation($fileName, $this->yellow->getRequestLanguage()), false, 404);
|
||||
$this->yellow->page->parserSafeMode = false;
|
||||
$this->yellow->page->parseContent();
|
||||
$author = trim($_REQUEST["author"]);
|
||||
$name = trim(preg_replace("/[^\pL\d\-\. ]/u", "-", $_REQUEST["name"]));
|
||||
$email = trim($_REQUEST["email"]);
|
||||
$password = trim($_REQUEST["password"]);
|
||||
$language = trim($_REQUEST["language"]);
|
||||
|
@ -477,26 +491,26 @@ class YellowWebinterface
|
|||
if($status == "install")
|
||||
{
|
||||
$status = "ok";
|
||||
$fileNamePage = $this->yellow->lookup->findFileFromLocation("/");
|
||||
$rawData = strreplaceu("\\n", "\n", $this->yellow->text->getText("webinterfaceInstallationHomePage", "en"));
|
||||
if($this->yellow->toolbox->readFile($fileNamePage)==$rawData && $language!="en")
|
||||
$fileNameHome = $this->yellow->lookup->findFileFromLocation("/");
|
||||
$fileData = strreplaceu("\r\n", "\n", $this->yellow->toolbox->readFile($fileNameHome));
|
||||
if($fileData==$this->getRawDataHome("en") && $language!="en")
|
||||
{
|
||||
$rawData = strreplaceu("\\n", "\n", $this->yellow->text->getText("webinterfaceInstallationHomePage", $language));
|
||||
$status = $this->yellow->toolbox->createFile($fileNamePage, $rawData) ? "ok" : "error";
|
||||
if($status == "error") $this->yellow->page->error(500, "Can't write file '$fileNamePage'!");
|
||||
$status = $this->yellow->toolbox->createFile($fileNameHome, $this->getRawDataHome($language)) ? "ok" : "error";
|
||||
if($status == "error") $this->yellow->page->error(500, "Can't write file '$fileNameHome'!");
|
||||
}
|
||||
}
|
||||
if($status == "ok")
|
||||
{
|
||||
if($this->getUserAccount($email, $password, "install") == "ok")
|
||||
if(!empty($email) && !empty($password) && $this->getUserAccount($email, $password, "install") == "ok")
|
||||
{
|
||||
$fileNameUser = $this->yellow->config->get("configDir").$this->yellow->config->get("webinterfaceUserFile");
|
||||
$status = $this->users->update($fileNameUser, $email, $password, $author, $language, "active", "/") ? "ok" : "error";
|
||||
$status = $this->users->update($fileNameUser, $email, $password, $name, $language, "active", "/") ? "ok" : "error";
|
||||
if($status == "error") $this->yellow->page->error(500, "Can't write file '$fileNameUser'!");
|
||||
}
|
||||
}
|
||||
if($status == "ok")
|
||||
{
|
||||
if($this->yellow->config->get("sitename") == "Yellow") $_REQUEST["sitename"] = $name;
|
||||
$fileNameConfig = $this->yellow->config->get("configDir").$this->yellow->config->get("configFile");
|
||||
$status = $this->yellow->config->update($fileNameConfig, $this->getInstallationData()) ? "done" : "error";
|
||||
if($status == "error") $this->yellow->page->error(500, "Can't write file '$fileNameConfig'!");
|
||||
|
@ -516,13 +530,13 @@ class YellowWebinterface
|
|||
// Send mail to web interface user
|
||||
function sendMail($serverScheme, $serverName, $base, $email, $action)
|
||||
{
|
||||
if($action=="welcome" || $action == "information")
|
||||
if($action=="welcome" || $action=="information")
|
||||
{
|
||||
$url = "$serverScheme://$serverName$base/";
|
||||
} else {
|
||||
$expire = time()+60*60*24*30;
|
||||
$id = $this->users->createRequestId($email, $action, $expire);
|
||||
$url = "$serverScheme://$serverName$base"."/action:$action/email:$email/expire:$expire/id:$id";
|
||||
$expire = time()+60*60*24;
|
||||
$id = $this->users->createUserRequestId($email, $action, $expire);
|
||||
$url = "$serverScheme://$serverName$base"."/action:$action/email:$email/expire:$expire/id:$id/";
|
||||
}
|
||||
if($action == "approve")
|
||||
{
|
||||
|
@ -554,18 +568,18 @@ class YellowWebinterface
|
|||
}
|
||||
|
||||
// Check web interface request
|
||||
function checkRequest($location)
|
||||
function checkRequest($location, $fileName)
|
||||
{
|
||||
if($this->yellow->toolbox->getServerScheme()==$this->yellow->config->get("webinterfaceServerScheme") &&
|
||||
$this->yellow->toolbox->getServerName()==$this->yellow->config->get("webinterfaceServerName"))
|
||||
{
|
||||
$locationLength = strlenu($this->yellow->config->get("webinterfaceLocation"));
|
||||
$this->active = substru($location, 0, $locationLength) == $this->yellow->config->get("webinterfaceLocation");
|
||||
}
|
||||
if($this->yellow->config->get("installationMode"))
|
||||
{
|
||||
$_REQUEST["action"] = "install";
|
||||
} else {
|
||||
if($this->yellow->toolbox->getServerScheme()==$this->yellow->config->get("webinterfaceServerScheme") &&
|
||||
$this->yellow->toolbox->getServerName()==$this->yellow->config->get("webinterfaceServerName"))
|
||||
{
|
||||
$locationLength = strlenu($this->yellow->config->get("webinterfaceLocation"));
|
||||
$this->active = substru($location, 0, $locationLength) == $this->yellow->config->get("webinterfaceLocation");
|
||||
}
|
||||
$_REQUEST["action"] = $this->yellow->isStaticFile($location, $fileName, false) ? "" : "install";
|
||||
$this->active = false;
|
||||
}
|
||||
return $this->yellow->config->get("installationMode") || $this->isActive();
|
||||
}
|
||||
|
@ -580,51 +594,62 @@ class YellowWebinterface
|
|||
if($this->users->checkUser($email, $password))
|
||||
{
|
||||
$this->users->createCookie("login", $email);
|
||||
$this->users->email = $email;
|
||||
$this->userEmail = $email;
|
||||
$this->userLanguage = $this->getUserLanguage($email);
|
||||
$this->userRestrictions = $this->getUserRestrictions($email, $location, $fileName);
|
||||
} else {
|
||||
$this->loginAction = "fail";
|
||||
$this->action = "fail";
|
||||
}
|
||||
} else if(isset($_COOKIE["login"])) {
|
||||
list($email, $session) = explode(',', $_COOKIE["login"], 2);
|
||||
if($this->users->checkCookie($email, $session))
|
||||
{
|
||||
$this->users->email = $email;
|
||||
$this->userEmail = $email;
|
||||
$this->userLanguage = $this->getUserLanguage($email);
|
||||
$this->userRestrictions = $this->getUserRestrictions($email, $location, $fileName);
|
||||
} else {
|
||||
$this->loginAction = "fail";
|
||||
$this->action = "fail";
|
||||
}
|
||||
}
|
||||
if(!$this->users->getNumber() && !$this->users->isWebmaster()) $this->action = "off";
|
||||
return $this->isUser();
|
||||
}
|
||||
|
||||
// Return user language
|
||||
function getUserLanguage($email)
|
||||
{
|
||||
$language = $this->users->getLanguage($email);
|
||||
if(!$this->yellow->text->isLanguage($language)) $language = $this->yellow->config->get("language");
|
||||
return $language;
|
||||
}
|
||||
|
||||
// Return user account request
|
||||
function getUserRequest($email, $action, $expire, $id)
|
||||
{
|
||||
$loginStatus = $this->users->checkRequest($email, $action, $expire, $id) ? "ok" : "done";
|
||||
if($loginStatus=="done" && $expire<=time()) $loginStatus = "expire";
|
||||
return $loginStatus;
|
||||
$status = $this->users->checkUserRequest($email, $action, $expire, $id) ? "ok" : "done";
|
||||
if($status=="done" && $expire<=time()) $status = "expire";
|
||||
return $status;
|
||||
}
|
||||
|
||||
// Return user account changes
|
||||
function getUserAccount($email, $password, $action)
|
||||
{
|
||||
$loginStatus = NULL;
|
||||
$status = NULL;
|
||||
foreach($this->yellow->plugins->plugins as $key=>$value)
|
||||
{
|
||||
if(method_exists($value["obj"], "onUserAccount"))
|
||||
{
|
||||
$loginStatus = $value["obj"]->onUserAccount($email, $password, $action, $status, $this->users);
|
||||
if(!is_null($loginStatus)) break;
|
||||
$status = $value["obj"]->onUserAccount($email, $password, $action, $status, $this->users);
|
||||
if(!is_null($status)) break;
|
||||
}
|
||||
}
|
||||
if(is_null($loginStatus))
|
||||
if(is_null($status))
|
||||
{
|
||||
$loginStatus = "ok";
|
||||
if(strlenu($password)<$this->yellow->config->get("webinterfaceUserPasswordMinLength")) $loginStatus = "weak";
|
||||
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) $loginStatus = "invalid";
|
||||
$status = "ok";
|
||||
if(!empty($password) && strlenu($password)<$this->yellow->config->get("webinterfaceUserPasswordMinLength")) $status = "weak";
|
||||
if(!empty($email) && !filter_var($email, FILTER_VALIDATE_EMAIL)) $status = "invalid";
|
||||
}
|
||||
return $loginStatus;
|
||||
return $status;
|
||||
}
|
||||
|
||||
// Return user restrictions to change page
|
||||
|
@ -642,7 +667,7 @@ class YellowWebinterface
|
|||
if(is_null($userRestrictions))
|
||||
{
|
||||
$userRestrictions = !is_dir(dirname($fileName)) || strlenu(basename($fileName))>128;
|
||||
$userRestrictions |= substru($location, 0, strlenu($this->users->getHome())) != $this->users->getHome();
|
||||
$userRestrictions |= substru($location, 0, strlenu($this->users->getHome($email))) != $this->users->getHome($email);
|
||||
}
|
||||
return $userRestrictions;
|
||||
}
|
||||
|
@ -715,7 +740,7 @@ class YellowWebinterface
|
|||
if(!$ok) $page->error(500, "Page '".$page->get("title")."' can not be created!");
|
||||
}
|
||||
}
|
||||
if($this->getUserRestrictions($this->users->email, $page->location, $page->fileName))
|
||||
if($this->getUserRestrictions($this->userEmail, $page->location, $page->fileName))
|
||||
{
|
||||
$page->error(500, "Page '".$page->get("title")."' is not allowed!");
|
||||
}
|
||||
|
@ -752,7 +777,7 @@ class YellowWebinterface
|
|||
}
|
||||
}
|
||||
}
|
||||
if($this->getUserRestrictions($this->users->email, $page->location, $page->fileName))
|
||||
if($this->getUserRestrictions($this->userEmail, $page->location, $page->fileName))
|
||||
{
|
||||
$page->error(500, "Page '".$page->get("title")."' is not allowed!");
|
||||
}
|
||||
|
@ -768,10 +793,9 @@ class YellowWebinterface
|
|||
$this->yellow->text->setLanguage($language);
|
||||
$fileData = "---\nTitle:".$this->yellow->text->get("webinterfaceInstallationTitle")."\nLanguage:$language\nNavigation:navigation\n---\n";
|
||||
$fileData .= "<form class=\"installation-form\" action=\"".$this->yellow->page->getLocation()."\" method=\"post\">\n";
|
||||
$fileData .= "<p><label for=\"sitename\">".$this->yellow->text->get("webinterfaceInstallationSitename")."</label><br /><input class=\"form-control\" type=\"text\" name=\"sitename\" id=\"sitename\" value=\"".$this->yellow->config->getHtml("sitename")."\"></p>\n";
|
||||
$fileData .= "<p><label for=\"author\">".$this->yellow->text->get("webinterfaceInstallationAuthor")."</label><br /><input class=\"form-control\" type=\"text\" maxlength=\"64\" name=\"author\" id=\"author\" value=\"\"></p>\n";
|
||||
$fileData .= "<p><label for=\"email\">".$this->yellow->text->get("webinterfaceLoginEmail")."</label><br /><input class=\"form-control\" type=\"text\" maxlength=\"64\" name=\"email\" id=\"email\" value=\"\"></p>\n";
|
||||
$fileData .= "<p><label for=\"password\">".$this->yellow->text->get("webinterfaceLoginPassword")."</label><br /><input class=\"form-control\" type=\"password\" maxlength=\"64\" name=\"password\" id=\"password\" value=\"\"></p>\n";
|
||||
$fileData .= "<p><label for=\"name\">".$this->yellow->text->get("webinterfaceSignupName")."</label><br /><input class=\"form-control\" type=\"text\" maxlength=\"64\" name=\"name\" id=\"name\" value=\"\"></p>\n";
|
||||
$fileData .= "<p><label for=\"email\">".$this->yellow->text->get("webinterfaceSignupEmail")."</label><br /><input class=\"form-control\" type=\"text\" maxlength=\"64\" name=\"email\" id=\"email\" value=\"\"></p>\n";
|
||||
$fileData .= "<p><label for=\"password\">".$this->yellow->text->get("webinterfaceSignupPassword")."</label><br /><input class=\"form-control\" type=\"password\" maxlength=\"64\" name=\"password\" id=\"password\" value=\"\"></p>\n";
|
||||
if(count($this->yellow->text->getLanguages()) > 1)
|
||||
{
|
||||
$fileData .= "<p>";
|
||||
|
@ -789,8 +813,15 @@ class YellowWebinterface
|
|||
return $fileData;
|
||||
}
|
||||
|
||||
// Return raw data for home page
|
||||
function getRawDataHome($language)
|
||||
{
|
||||
$rawData = "---\nTitle: Home\n---\n".strreplaceu("\\n", "\n", $this->yellow->text->getText("webinterfaceInstallationHomePage", $language));
|
||||
return $rawData;
|
||||
}
|
||||
|
||||
// Return raw data for new page
|
||||
function getRawDataNew($title = "")
|
||||
function getRawDataNew($location = "")
|
||||
{
|
||||
$fileName = $this->yellow->lookup->findFileFromLocation($this->yellow->page->location);
|
||||
$fileName = $this->yellow->lookup->findFileNew($fileName,
|
||||
|
@ -799,10 +830,14 @@ class YellowWebinterface
|
|||
$fileData = $this->yellow->toolbox->readFile($fileName);
|
||||
$fileData = preg_replace("/@datetime/i", date("Y-m-d H:i:s"), $fileData);
|
||||
$fileData = preg_replace("/@date/i", date("Y-m-d"), $fileData);
|
||||
$fileData = preg_replace("/@usershort/i", strtok($this->users->getName(), " "), $fileData);
|
||||
$fileData = preg_replace("/@username/i", $this->users->getName(), $fileData);
|
||||
$fileData = preg_replace("/@userlanguage/i", $this->users->getLanguage(), $fileData);
|
||||
if(!empty($title)) $fileData = $this->updateDataTitle($fileData, $title);
|
||||
$fileData = preg_replace("/@usershort/i", strtok($this->users->getName($this->userEmail), " "), $fileData);
|
||||
$fileData = preg_replace("/@username/i", $this->users->getName($this->userEmail), $fileData);
|
||||
$fileData = preg_replace("/@userlanguage/i", $this->users->getLanguage($this->userEmail), $fileData);
|
||||
if(!empty($location))
|
||||
{
|
||||
$title = $this->yellow->toolbox->createTextTitle($location);
|
||||
$fileData = $this->updateDataTitle($fileData, $title);
|
||||
}
|
||||
return $fileData;
|
||||
}
|
||||
|
||||
|
@ -816,15 +851,13 @@ class YellowWebinterface
|
|||
$data["rawDataSource"] = $this->rawDataSource;
|
||||
$data["rawDataEdit"] = $this->rawDataEdit;
|
||||
$data["rawDataNew"] = $this->getRawDataNew();
|
||||
$data["userRestrictions"] = $this->userRestrictions;
|
||||
$data["pageFile"] = $this->yellow->page->get("pageFile");
|
||||
$data["parserSafeMode"] = $this->yellow->page->parserSafeMode;
|
||||
$data["statusCode"] = $this->yellow->page->statusCode;
|
||||
} else {
|
||||
$data["loginAction"] = $this->loginAction;
|
||||
$data["loginStatus"] = $this->loginStatus;
|
||||
if($this->loginAction != "none") $data = array_merge($data, $this->getRequestData());
|
||||
}
|
||||
if($this->action != "none") $data = array_merge($data, $this->getRequestData());
|
||||
$data["action"] = $this->action;
|
||||
$data["status"] = $this->status;
|
||||
$data["statusCode"] = $this->yellow->page->statusCode;
|
||||
return $data;
|
||||
}
|
||||
|
||||
|
@ -834,21 +867,28 @@ class YellowWebinterface
|
|||
$data = $this->yellow->config->getData("", "Location");
|
||||
if($this->isUser())
|
||||
{
|
||||
$data["userEmail"] = $this->users->email;
|
||||
$data["userName"] = $this->users->getName();
|
||||
$data["userLanguage"] = $this->users->getLanguage();
|
||||
$data["userStatus"] = $this->users->getStatus();
|
||||
$data["userHome"] = $this->users->getHome();
|
||||
$data["userEmail"] = $this->userEmail;
|
||||
$data["userName"] = $this->users->getName($this->userEmail);
|
||||
$data["userLanguage"] = $this->users->getLanguage($this->userEmail);
|
||||
$data["userStatus"] = $this->users->getStatus($this->userEmail);
|
||||
$data["userHome"] = $this->users->getHome($this->userEmail);
|
||||
$data["userRestrictions"] = $this->userRestrictions;
|
||||
$data["serverScheme"] = $this->yellow->config->get("serverScheme");
|
||||
$data["serverName"] = $this->yellow->config->get("serverName");
|
||||
$data["serverBase"] = $this->yellow->config->get("serverBase");
|
||||
$data["serverTime"] = $this->yellow->config->get("serverTime");
|
||||
$data["serverLanguages"] = $this->yellow->text->getLanguages();
|
||||
$data["serverLanguages"] = array();
|
||||
foreach($this->yellow->text->getLanguages() as $language)
|
||||
{
|
||||
$data["serverLanguages"][$language] = $this->yellow->text->getTextHtml("languageDescription", $language);
|
||||
}
|
||||
$data["serverVersion"] = YellowCore::Version;
|
||||
} else {
|
||||
$data["loginEmail"] = $this->yellow->config->get("loginEmail");
|
||||
$data["loginPassword"] = $this->yellow->config->get("loginPassword");
|
||||
$data["loginExtra"] = intval($this->isExtra());
|
||||
$data["loginButtons"] = intval($this->users->isWebmaster());
|
||||
}
|
||||
if(defined("DEBUG") && DEBUG>=1) $data["debug"] = DEBUG;
|
||||
return $data;
|
||||
}
|
||||
|
||||
|
@ -875,7 +915,7 @@ class YellowWebinterface
|
|||
$data = array();
|
||||
foreach($_REQUEST as $key=>$value)
|
||||
{
|
||||
if($key == "password") continue;
|
||||
if($key=="login" || $key=="password") continue;
|
||||
$data["request".ucfirst($key)] = trim($value);
|
||||
}
|
||||
return $data;
|
||||
|
@ -896,11 +936,9 @@ class YellowWebinterface
|
|||
// Return text strings
|
||||
function getTextData()
|
||||
{
|
||||
$language = $this->isUser() ? $this->users->getLanguage() : $this->yellow->page->get("language");
|
||||
if(!$this->yellow->text->isLanguage($language)) $language = $this->yellow->config->get("language");
|
||||
$textLanguage = array_merge($this->yellow->text->getData("language", $language));
|
||||
$textWebinterface = array_merge($this->yellow->text->getData("webinterface", $language));
|
||||
$textYellow = array_merge($this->yellow->text->getData("yellow", $language));
|
||||
$textLanguage = array_merge($this->yellow->text->getData("language", $this->userLanguage));
|
||||
$textWebinterface = array_merge($this->yellow->text->getData("webinterface", $this->userLanguage));
|
||||
$textYellow = array_merge($this->yellow->text->getData("yellow", $this->userLanguage));
|
||||
return array_merge($textLanguage, $textWebinterface, $textYellow);
|
||||
}
|
||||
|
||||
|
@ -914,23 +952,17 @@ class YellowWebinterface
|
|||
return $text;
|
||||
}
|
||||
|
||||
// Check if user is logged in
|
||||
function isUser()
|
||||
{
|
||||
return !empty($this->userEmail);
|
||||
}
|
||||
|
||||
// Check if web interface request
|
||||
function isActive()
|
||||
{
|
||||
return $this->active;
|
||||
}
|
||||
|
||||
// Check if extra login features
|
||||
function isExtra()
|
||||
{
|
||||
return strposu($this->yellow->config->get("email"), '@') !== false;
|
||||
}
|
||||
|
||||
// Check if user is logged in
|
||||
function isUser()
|
||||
{
|
||||
return !empty($this->users->email);
|
||||
}
|
||||
}
|
||||
|
||||
// Yellow users
|
||||
|
@ -938,7 +970,6 @@ class YellowUsers
|
|||
{
|
||||
var $yellow; //access to API
|
||||
var $users; //registered users
|
||||
var $email; //current user
|
||||
|
||||
function __construct($yellow)
|
||||
{
|
||||
|
@ -954,7 +985,7 @@ class YellowUsers
|
|||
foreach($this->yellow->toolbox->getTextLines($fileData) as $line)
|
||||
{
|
||||
if(preg_match("/^\#/", $line)) continue;
|
||||
preg_match("/^(.*?)\s*:\s*(.*?),\s*(.*?),\s*(.*?),\s*(.*?),\s*(.*?)\s*$/", $line, $matches);
|
||||
preg_match("/^\s*(.*?)\s*:\s*(.*?),\s*(.*?),\s*(.*?),\s*(.*?),\s*(.*?)\s*$/", $line, $matches);
|
||||
if(!empty($matches[1]) && !empty($matches[2]) && !empty($matches[3]) && !empty($matches[4]) &&
|
||||
!empty($matches[5]) && !empty($matches[6]))
|
||||
{
|
||||
|
@ -994,7 +1025,7 @@ class YellowUsers
|
|||
$fileData = $this->yellow->toolbox->readFile($fileName);
|
||||
foreach($this->yellow->toolbox->getTextLines($fileData) as $line)
|
||||
{
|
||||
preg_match("/^(.*?)\s*:\s*(.*?),\s*(.*?),\s*(.*?),\s*(.*?),\s*(.*?)\s*$/", $line, $matches);
|
||||
preg_match("/^\s*(.*?)\s*:\s*(.*?),\s*(.*?),\s*(.*?),\s*(.*?),\s*(.*?)\s*$/", $line, $matches);
|
||||
if(!empty($matches[1]) && $matches[1]==$email)
|
||||
{
|
||||
$fileDataNew .= "$email: $hash,$name,$language,$status,$home\n";
|
||||
|
@ -1056,75 +1087,51 @@ class YellowUsers
|
|||
}
|
||||
|
||||
// Check user request
|
||||
function checkRequest($email, $action, $expire, $id)
|
||||
function checkUserRequest($email, $action, $expire, $id)
|
||||
{
|
||||
switch($action)
|
||||
{
|
||||
case "confirm": $status = "unconfirmed"; break;
|
||||
case "approve": $status = "unapproved"; break;
|
||||
case "recover": $status = "active"; break;
|
||||
case "confirm": $status = "unconfirmed"; break;
|
||||
case "approve": $status = "unapproved"; break;
|
||||
default: $status = "active"; break;
|
||||
}
|
||||
return $this->isExisting($email) && $this->users[$email]["status"]==$status && $expire>time() &&
|
||||
$this->yellow->toolbox->verifyHash($this->users[$email]["hash"].$action.$expire, "sha256", $id);
|
||||
}
|
||||
|
||||
// Create user request ID
|
||||
function createRequestId($email, $action, $expire)
|
||||
function createUserRequestId($email, $action, $expire)
|
||||
{
|
||||
return $this->yellow->toolbox->createHash($this->users[$email]["hash"].$action.$expire, "sha256");
|
||||
}
|
||||
|
||||
// Retun user login information, TODO: this is an obsolete function and will be removed soon
|
||||
function getUserInfo($email, $password, $name, $language, $home)
|
||||
{
|
||||
$algorithm = $this->yellow->config->get("webinterfaceUserHashAlgorithm");
|
||||
$cost = $this->yellow->config->get("webinterfaceUserHashCost");
|
||||
$hash = $this->yellow->toolbox->createHash($password, $algorithm, $cost);
|
||||
if(!empty($hash))
|
||||
{
|
||||
$email = strreplaceu(',', '-', $email);
|
||||
$hash = strreplaceu(',', '-', $hash);
|
||||
$name = strreplaceu(',', '-', empty($name) ? $this->yellow->config->get("sitename") : $name);
|
||||
$language = strreplaceu(',', '-', empty($language) ? $this->yellow->config->get("language") : $language);
|
||||
$status = strreplaceu(',', '-', empty($status) ? $this->yellow->config->get("webinterfaceUserStatus") : $status);
|
||||
$home = strreplaceu(',', '-', empty($home) ? $this->yellow->config->get("webinterfaceUserHome") : $home);
|
||||
$user = "$email: $hash,$name,$language,$status,$home\n";
|
||||
}
|
||||
return $user;
|
||||
}
|
||||
|
||||
// Return user hash
|
||||
function getHash($email = "")
|
||||
{
|
||||
if(empty($email)) $email = $this->email;
|
||||
return $this->isExisting($email) ? $this->users[$email]["hash"] : "";
|
||||
}
|
||||
|
||||
// Return user name
|
||||
function getName($email = "")
|
||||
{
|
||||
if(empty($email)) $email = $this->email;
|
||||
return $this->isExisting($email) ? $this->users[$email]["name"] : "";
|
||||
}
|
||||
|
||||
// Return user language
|
||||
function getLanguage($email = "")
|
||||
{
|
||||
if(empty($email)) $email = $this->email;
|
||||
return $this->isExisting($email) ? $this->users[$email]["language"] : "";
|
||||
}
|
||||
|
||||
// Return user status
|
||||
function getStatus($email = "")
|
||||
{
|
||||
if(empty($email)) $email = $this->email;
|
||||
return $this->isExisting($email) ? $this->users[$email]["status"] : "";
|
||||
}
|
||||
|
||||
// Return user home
|
||||
function getHome($email = "")
|
||||
{
|
||||
if(empty($email)) $email = $this->email;
|
||||
return $this->isExisting($email) ? $this->users[$email]["home"] : "";
|
||||
}
|
||||
|
||||
|
@ -1133,6 +1140,12 @@ class YellowUsers
|
|||
{
|
||||
return count($this->users);
|
||||
}
|
||||
|
||||
// Check if web master exists
|
||||
function isWebmaster()
|
||||
{
|
||||
return strposu($this->yellow->config->get("email"), '@') !== false;
|
||||
}
|
||||
|
||||
// Check if user exists
|
||||
function isExisting($email)
|
||||
|
|
Loading…
Add table
Reference in a new issue