System update (refactoring)
This commit is contained in:
parent
2e771bd19a
commit
d611025b69
3 changed files with 300 additions and 261 deletions
|
@ -1,4 +1,4 @@
|
|||
/* Yellow web interface 0.6.7 */
|
||||
/* Yellow web interface 0.6.8 */
|
||||
|
||||
.yellow-bar { position:relative; overflow:hidden; height:2em; margin-bottom:10px; }
|
||||
.yellow-bar-left { display:block; float:left; }
|
||||
|
@ -117,8 +117,9 @@
|
|||
#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-status { margin:0.5em 0; display:inline-block; }
|
||||
#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-settings-buttons { margin-top:-0.5em; }
|
||||
|
||||
#yellow-pane-edit { }
|
||||
#yellow-pane-edit h1 { margin:0 0 10px 0; font-size:1.5em; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
|
||||
|
|
|
@ -4,45 +4,58 @@
|
|||
// Yellow API
|
||||
var yellow =
|
||||
{
|
||||
version: "0.6.7",
|
||||
action: function(text) { yellow.webinterface.action(text); },
|
||||
version: "0.6.8",
|
||||
action: function(action) { yellow.webinterface.action(action, "none"); },
|
||||
onLoad: function() { yellow.webinterface.loadInterface(); },
|
||||
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); },
|
||||
onIntervall: function() { yellow.webinterface.updateIntervall(); }
|
||||
onUpdate: function() { yellow.webinterface.updatePane(yellow.webinterface.paneId, yellow.webinterface.paneAction, yellow.webinterface.paneStatus); },
|
||||
onResize: function() { yellow.webinterface.resizePane(yellow.webinterface.paneId, yellow.webinterface.paneAction, yellow.webinterface.paneStatus); }
|
||||
}
|
||||
|
||||
// Yellow web interface
|
||||
yellow.webinterface =
|
||||
{
|
||||
paneId: 0, //visible pane ID
|
||||
paneType: 0, //visible pane type
|
||||
paneAction: 0, //current pane action
|
||||
paneStatus: 0, //current pane status
|
||||
intervalId: 0, //timer interval ID
|
||||
|
||||
// Handle action
|
||||
action: function(text)
|
||||
action: function(action, status)
|
||||
{
|
||||
if(yellow.config.debug) console.log("yellow.webinterface.action action:"+text);
|
||||
switch(text)
|
||||
if(yellow.config.debug) console.log("yellow.webinterface.action action:"+action+" status:"+status);
|
||||
switch(action)
|
||||
{
|
||||
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 "login": this.showPane("yellow-pane-login", action, status); break;
|
||||
case "logout": this.sendPane("yellow-pane-logout", action); break;
|
||||
case "signup": this.showPane("yellow-pane-signup", action, status); break;
|
||||
case "confirm": this.showPane("yellow-pane-signup", action, status); break;
|
||||
case "approve": this.showPane("yellow-pane-signup", action, status); break;
|
||||
case "recover": this.showPane("yellow-pane-recover", action, status); break;
|
||||
case "settings": this.showPane("yellow-pane-settings", action, status); break;
|
||||
case "create": this.showPane("yellow-pane-edit", action, status, true); break;
|
||||
case "edit": this.showPane("yellow-pane-edit", action, status, true); break;
|
||||
case "delete": this.showPane("yellow-pane-edit", action, status, true); break;
|
||||
case "user": this.showPane("yellow-pane-user", action, status); break;
|
||||
case "send": this.sendPane(this.paneId, this.paneAction); break;
|
||||
case "close": this.hidePane(this.paneId); break;
|
||||
case "help": this.hidePane(this.paneId); location.href = this.getText("UserHelpUrl", "yellow"); break;
|
||||
}
|
||||
},
|
||||
|
||||
// Initialise interface
|
||||
loadInterface: function()
|
||||
{
|
||||
var body = document.getElementsByTagName("body")[0];
|
||||
if(body && body.firstChild && !document.getElementById("yellow-bar"))
|
||||
{
|
||||
this.createBar("yellow-bar");
|
||||
this.action(yellow.page.action, yellow.page.status);
|
||||
clearInterval(this.intervalId);
|
||||
}
|
||||
},
|
||||
|
||||
// Create bar
|
||||
createBar: function(barId)
|
||||
{
|
||||
|
@ -73,7 +86,7 @@ yellow.webinterface =
|
|||
},
|
||||
|
||||
// Create pane
|
||||
createPane: function(paneId, paneType)
|
||||
createPane: function(paneId, paneAction, paneStatus)
|
||||
{
|
||||
if(yellow.config.debug) console.log("yellow.webinterface.createPane id:"+paneId);
|
||||
var elementPane = document.createElement("div");
|
||||
|
@ -118,11 +131,11 @@ yellow.webinterface =
|
|||
"<form method=\"post\">"+
|
||||
"<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.status+"\">"+this.getText("SignupStatus", "", yellow.page.status)+"</div>"+
|
||||
"<div id=\"yellow-pane-signup-status\" class=\""+paneStatus+"\">"+this.getText(paneAction+"Status", "", paneStatus)+"</div>"+
|
||||
"<div id=\"yellow-pane-signup-fields\">"+
|
||||
"<input type=\"hidden\" name=\"action\" value=\"signup\" />"+
|
||||
"<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-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>"+
|
||||
|
@ -136,11 +149,11 @@ yellow.webinterface =
|
|||
"<form method=\"post\">"+
|
||||
"<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.status+"\">"+this.getText("RecoverStatus", "", yellow.page.status)+"</div>"+
|
||||
"<div id=\"yellow-pane-recover-status\" class=\""+paneStatus+"\">"+this.getText("RecoverStatus", "", paneStatus)+"</div>"+
|
||||
"<div id=\"yellow-pane-recover-fields-first\">"+
|
||||
"<input type=\"hidden\" name=\"action\" value=\"recover\" />"+
|
||||
"<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>"+
|
||||
"<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("OkButton")+"\" /></p>"+
|
||||
"</div>"+
|
||||
"<div id=\"yellow-pane-recover-fields-second\">"+
|
||||
"<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>"+
|
||||
|
@ -156,14 +169,16 @@ yellow.webinterface =
|
|||
"<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-status\" class=\""+paneStatus+"\">"+this.getText(paneAction+"Status", "", paneStatus)+"</div>"+
|
||||
"<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><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=\""+yellow.toolbox.encodeHtml(this.getRequest("name"))+"\" /></p>"+
|
||||
this.getLanguages(paneId)+
|
||||
"<p><input class=\"yellow-btn\" type=\"submit\" value=\""+this.getText("OkButton")+"\" /></p>"+
|
||||
"</div>"+
|
||||
"<div id=\"yellow-pane-settings-buttons\">"+
|
||||
"<p><input class=\"yellow-btn\" type=\"button\" onclick=\"yellow.action('close'); return false;\" value=\""+this.getText("OkButton")+"\" /></p>"+
|
||||
"</div>"+
|
||||
"</form>";
|
||||
break;
|
||||
case "yellow-pane-edit":
|
||||
|
@ -192,8 +207,9 @@ yellow.webinterface =
|
|||
},
|
||||
|
||||
// Update pane
|
||||
updatePane: function(paneId, paneType, init)
|
||||
updatePane: function(paneId, paneAction, paneStatus, init)
|
||||
{
|
||||
if(yellow.config.debug) console.log("yellow.webinterface.updatePane id:"+paneId);
|
||||
switch(paneId)
|
||||
{
|
||||
case "yellow-pane-login":
|
||||
|
@ -203,49 +219,48 @@ yellow.webinterface =
|
|||
}
|
||||
break;
|
||||
case "yellow-pane-signup":
|
||||
if(yellow.page.status=="next" || yellow.page.status=="done" || yellow.page.status=="expire")
|
||||
if(paneStatus=="next" || paneStatus=="done" || paneStatus=="expire")
|
||||
{
|
||||
document.getElementById("yellow-pane-signup-fields").style.display = "none";
|
||||
} else {
|
||||
document.getElementById("yellow-pane-signup-buttons").style.display = "none";
|
||||
}
|
||||
switch(paneType)
|
||||
{
|
||||
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-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")
|
||||
if(paneStatus=="next" || paneStatus=="done" || paneStatus=="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"))
|
||||
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";
|
||||
}
|
||||
}
|
||||
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;
|
||||
if(paneStatus=="next" || paneStatus=="done" || paneStatus=="expire")
|
||||
{
|
||||
document.getElementById("yellow-pane-settings-fields").style.display = "none";
|
||||
} else {
|
||||
document.getElementById("yellow-pane-settings-buttons").style.display = "none";
|
||||
}
|
||||
if(paneStatus=="none")
|
||||
{
|
||||
document.getElementById("yellow-pane-settings-status").innerHTML = yellow.toolbox.encodeHtml(yellow.config.serverVersion);
|
||||
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)
|
||||
switch(paneAction)
|
||||
{
|
||||
case "create": title = this.getText("CreateTitle"); string = yellow.page.rawDataNew; break;
|
||||
case "delete": title = this.getText("DeleteTitle"); break;
|
||||
|
@ -254,11 +269,11 @@ yellow.webinterface =
|
|||
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)
|
||||
paneAction = this.getPaneAction(paneId, paneAction)
|
||||
if(paneAction)
|
||||
{
|
||||
var key, className;
|
||||
switch(action)
|
||||
switch(paneAction)
|
||||
{
|
||||
case "create": key = "CreateButton"; className = "yellow-btn yellow-btn-create"; break;
|
||||
case "edit": key = "EditButton"; className = "yellow-btn yellow-btn-edit"; break;
|
||||
|
@ -273,22 +288,9 @@ yellow.webinterface =
|
|||
}
|
||||
},
|
||||
|
||||
// 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)
|
||||
resizePane: function(paneId, paneAction, paneStatus)
|
||||
{
|
||||
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);
|
||||
|
@ -311,7 +313,7 @@ yellow.webinterface =
|
|||
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 elementLink = document.getElementById("yellow-pane-"+paneAction+"-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);
|
||||
|
@ -328,36 +330,14 @@ yellow.webinterface =
|
|||
}
|
||||
},
|
||||
|
||||
// Send pane
|
||||
sendPane: function(paneId, paneType)
|
||||
{
|
||||
if(yellow.config.debug) console.log("yellow.webinterface.sendPane id:"+paneId);
|
||||
if(paneId=="yellow-pane-edit")
|
||||
{
|
||||
var action = this.getPaneAction(paneId, paneType);
|
||||
if(action)
|
||||
{
|
||||
var params = {};
|
||||
params.action = action;
|
||||
params.rawdatasource = yellow.page.rawDataSource;
|
||||
params.rawdataedit = document.getElementById("yellow-pane-edit-page").value;
|
||||
yellow.toolbox.submitForm(params, true);
|
||||
} else {
|
||||
this.hidePane(paneId);
|
||||
}
|
||||
} else {
|
||||
yellow.toolbox.submitForm({"action":paneType});
|
||||
}
|
||||
},
|
||||
|
||||
// Show or hide pane
|
||||
showPane: function(paneId, paneType, modal)
|
||||
showPane: function(paneId, paneAction, paneStatus, modal)
|
||||
{
|
||||
if(this.paneId!=paneId || this.paneType!=paneType)
|
||||
if(this.paneId!=paneId || this.paneAction!=paneAction)
|
||||
{
|
||||
this.hidePane(this.paneId);
|
||||
var element = document.getElementById(paneId);
|
||||
if(!element) element = this.createPane(paneId, paneType);
|
||||
if(!element) element = this.createPane(paneId, paneAction, paneStatus);
|
||||
if(!yellow.toolbox.isVisible(element))
|
||||
{
|
||||
if(yellow.config.debug) console.log("yellow.webinterface.showPane id:"+paneId);
|
||||
|
@ -368,9 +348,10 @@ yellow.webinterface =
|
|||
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.paneAction = paneAction;
|
||||
this.paneStatus = paneStatus;
|
||||
this.resizePane(paneId, paneAction, paneStatus);
|
||||
this.updatePane(paneId, paneAction, paneStatus, true);
|
||||
}
|
||||
} else {
|
||||
this.hidePane(this.paneId);
|
||||
|
@ -388,7 +369,8 @@ yellow.webinterface =
|
|||
yellow.toolbox.removeValue("meta[name=viewport]", "content", ", maximum-scale=1, user-scalable=0");
|
||||
element.style.display = "none";
|
||||
this.paneId = 0;
|
||||
this.paneType = 0;
|
||||
this.paneAction = 0;
|
||||
this.paneStatus = 0;
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -423,29 +405,49 @@ yellow.webinterface =
|
|||
if(keycode==27) this.hidePanes();
|
||||
},
|
||||
|
||||
// Return pane action
|
||||
getPaneAction: function(paneId, paneType)
|
||||
// Send pane
|
||||
sendPane: function(paneId, paneAction)
|
||||
{
|
||||
var action = "";
|
||||
if(yellow.config.debug) console.log("yellow.webinterface.sendPane id:"+paneId);
|
||||
if(paneId=="yellow-pane-edit")
|
||||
{
|
||||
if(!yellow.config.userRestrictions)
|
||||
paneAction = this.getPaneAction(paneId, paneAction);
|
||||
if(paneAction)
|
||||
{
|
||||
var string = document.getElementById("yellow-pane-edit-page").value;
|
||||
switch(paneType)
|
||||
{
|
||||
case "create": action = "create"; break;
|
||||
case "edit": action = string ? "edit" : "delete"; break;
|
||||
case "delete": action = "delete"; break;
|
||||
}
|
||||
if(yellow.page.statusCode==424 && paneType!="delete") action = "create";
|
||||
var params = {};
|
||||
params.action = paneAction;
|
||||
params.rawdatasource = yellow.page.rawDataSource;
|
||||
params.rawdataedit = document.getElementById("yellow-pane-edit-page").value;
|
||||
yellow.toolbox.submitForm(params, true);
|
||||
} else {
|
||||
this.hidePane(paneId);
|
||||
}
|
||||
} else {
|
||||
yellow.toolbox.submitForm({"action":paneAction});
|
||||
}
|
||||
return action;
|
||||
},
|
||||
|
||||
// Return pane languages
|
||||
getPaneLanguages: function(paneId)
|
||||
// Return pane action
|
||||
getPaneAction: function(paneId, paneAction)
|
||||
{
|
||||
if(paneId=="yellow-pane-edit")
|
||||
{
|
||||
var string = document.getElementById("yellow-pane-edit-page").value;
|
||||
var paneActionOld = paneAction;
|
||||
switch(paneAction)
|
||||
{
|
||||
case "create": paneAction = "create"; break;
|
||||
case "edit": paneAction = string ? "edit" : "delete"; break;
|
||||
case "delete": paneAction = "delete"; break;
|
||||
}
|
||||
if(yellow.page.statusCode==424 && paneActionOld!="delete") paneAction = "create";
|
||||
if(yellow.config.userRestrictions) paneAction = "";
|
||||
}
|
||||
return paneAction;
|
||||
},
|
||||
|
||||
// Return language selection
|
||||
getLanguages: function(paneId)
|
||||
{
|
||||
var languages = "";
|
||||
if(yellow.toolbox.getLength(yellow.config.serverLanguages)>1)
|
||||
|
@ -453,7 +455,8 @@ yellow.webinterface =
|
|||
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 />";
|
||||
var checked = language==this.getRequest("language") ? " checked=\"checked\"" : "";
|
||||
languages += "<label for=\""+paneId+"-"+language+"\"><input type=\"radio\" name=\"language\" id=\""+paneId+"-"+language+"\" value=\""+language+"\""+checked+"> "+yellow.config.serverLanguages[language]+"</label><br />";
|
||||
}
|
||||
languages += "</p>";
|
||||
}
|
||||
|
@ -464,7 +467,7 @@ yellow.webinterface =
|
|||
getRequest: function(key, prefix)
|
||||
{
|
||||
if(!prefix) prefix = "request";
|
||||
key = prefix + key;
|
||||
key = prefix + key.charAt(0).toUpperCase() + key.slice(1);
|
||||
return (key in yellow.page) ? yellow.page[key] : "";
|
||||
},
|
||||
|
||||
|
@ -473,7 +476,7 @@ yellow.webinterface =
|
|||
{
|
||||
if(!prefix) prefix = "webinterface";
|
||||
if(!postfix) postfix = ""
|
||||
key = prefix + key + postfix.charAt(0).toUpperCase() + postfix.slice(1);
|
||||
key = prefix + key.charAt(0).toUpperCase() + key.slice(1) + postfix.charAt(0).toUpperCase() + postfix.slice(1);
|
||||
return (key in yellow.text) ? yellow.text[key] : "["+key+"]";
|
||||
}
|
||||
}
|
||||
|
@ -767,4 +770,4 @@ yellow.toolbox =
|
|||
}
|
||||
}
|
||||
|
||||
yellow.webinterface.intervalId = setInterval("yellow.onIntervall()", 1);
|
||||
yellow.webinterface.intervalId = setInterval("yellow.onLoad()", 1);
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// Web interface plugin
|
||||
class YellowWebinterface
|
||||
{
|
||||
const Version = "0.6.7";
|
||||
const Version = "0.6.8";
|
||||
var $yellow; //access to API
|
||||
var $active; //web interface is active? (boolean)
|
||||
var $userEmail; //web interface user
|
||||
|
@ -13,6 +13,7 @@ class YellowWebinterface
|
|||
var $userRestrictions; //web interface user can change page? (boolean)
|
||||
var $action; //web interface action
|
||||
var $status; //web interface status
|
||||
var $installation; //web interface installation
|
||||
var $users; //web interface users
|
||||
var $merge; //web interface merge
|
||||
var $rawDataSource; //raw data of page for comparison
|
||||
|
@ -22,6 +23,7 @@ class YellowWebinterface
|
|||
function onLoad($yellow)
|
||||
{
|
||||
$this->yellow = $yellow;
|
||||
$this->installation = new YellowInstallation($yellow);
|
||||
$this->users = new YellowUsers($yellow);
|
||||
$this->merge = new YellowMerge($yellow);
|
||||
$this->yellow->config->setDefault("webinterfaceServerScheme", $this->yellow->config->get("serverScheme"));
|
||||
|
@ -42,9 +44,10 @@ class YellowWebinterface
|
|||
function onRequest($serverScheme, $serverName, $base, $location, $fileName)
|
||||
{
|
||||
$statusCode = 0;
|
||||
if($this->checkRequest($location, $fileName))
|
||||
if($this->yellow->config->get("installationMode"))
|
||||
{
|
||||
list($serverScheme, $serverName, $base, $location, $fileName) = $this->updateRequestInformation();
|
||||
$statusCode = $this->installation->processRequest($serverScheme, $serverName, $base, $location, $fileName);
|
||||
} else if($this->checkRequest($location)) {
|
||||
$statusCode = $this->processRequest($serverScheme, $serverName, $base, $location, $fileName);
|
||||
}
|
||||
return $statusCode;
|
||||
|
@ -107,6 +110,7 @@ class YellowWebinterface
|
|||
list($name, $command) = $args;
|
||||
switch($command)
|
||||
{
|
||||
case "clean": $statusCode = $this->cleanCommand($args); break;
|
||||
case "user": $statusCode = $this->userCommand($args); break;
|
||||
default: $statusCode = 0;
|
||||
}
|
||||
|
@ -118,6 +122,15 @@ class YellowWebinterface
|
|||
{
|
||||
return "user [EMAIL PASSWORD NAME LANGUAGE STATUS HOME]\n";
|
||||
}
|
||||
|
||||
// Clean user accounts
|
||||
function cleanCommand($args)
|
||||
{
|
||||
$fileNameUser = $this->yellow->config->get("configDir").$this->yellow->config->get("webinterfaceUserFile");
|
||||
$statusCode = $this->users->clean($fileNameUser) ? 200 : 500;
|
||||
if($statusCode == 500) echo "ERROR cleaning configuration: Can't write file '$fileNameUser'!\n";
|
||||
return status;
|
||||
}
|
||||
|
||||
// Update user account
|
||||
function userCommand($args)
|
||||
|
@ -160,7 +173,8 @@ class YellowWebinterface
|
|||
function processRequest($serverScheme, $serverName, $base, $location, $fileName)
|
||||
{
|
||||
$statusCode = 0;
|
||||
if($this->isActive() && $this->checkUser($location, $fileName))
|
||||
list($serverScheme, $serverName, $base, $location, $fileName) = $this->updateRequestInformation();
|
||||
if($this->checkUser($location, $fileName))
|
||||
{
|
||||
switch($_REQUEST["action"])
|
||||
{
|
||||
|
@ -183,7 +197,6 @@ 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 "install": $statusCode = $this->processRequestInstall($serverScheme, $serverName, $base, $location, $fileName); break;
|
||||
}
|
||||
}
|
||||
if($statusCode == 0)
|
||||
|
@ -367,22 +380,23 @@ class YellowWebinterface
|
|||
// Process request to change settings
|
||||
function processRequestSettings($serverScheme, $serverName, $base, $location, $fileName)
|
||||
{
|
||||
$statusCode = 0;
|
||||
if($this->getUserAccount($this->userEmail, "", "settings") == "ok")
|
||||
$this->action = "settings";
|
||||
$this->status = $this->getUserAccount($this->userEmail, "", $this->action);
|
||||
if($this->status == "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'!");
|
||||
}
|
||||
$this->status = $this->users->update($fileNameUser, $this->userEmail, "", $name, $language) ? "done" : "error";
|
||||
if($this->status == "error") $this->yellow->page->error(500, "Can't write file '$fileNameUser'!");
|
||||
}
|
||||
if($this->status == "done")
|
||||
{
|
||||
$statusCode = 303;
|
||||
$location = $this->yellow->lookup->normaliseUrl($serverScheme, $serverName, $base, $location);
|
||||
$this->yellow->sendStatus($statusCode, $location);
|
||||
} else {
|
||||
$statusCode = $this->yellow->processRequest($serverScheme, $serverName, $base, $location, $fileName, false);
|
||||
}
|
||||
return $statusCode;
|
||||
}
|
||||
|
@ -470,63 +484,6 @@ class YellowWebinterface
|
|||
return $statusCode;
|
||||
}
|
||||
|
||||
// Process request to install
|
||||
function processRequestInstall($serverScheme, $serverName, $base, $location, $fileName)
|
||||
{
|
||||
$statusCode = 0;
|
||||
if($this->yellow->config->get("installationMode"))
|
||||
{
|
||||
$fileName = $this->yellow->config->get("configDir")."page-installation.txt";
|
||||
$this->yellow->pages->pages["root/"] = array();
|
||||
$this->yellow->page = new YellowPage($this->yellow);
|
||||
$this->yellow->page->setRequestInformation($serverScheme, $serverName, $base, $location, $fileName);
|
||||
$this->yellow->page->parseData($this->getRawDataInstallation($fileName, $this->yellow->getRequestLanguage()), false, 404);
|
||||
$this->yellow->page->parserSafeMode = false;
|
||||
$this->yellow->page->parseContent();
|
||||
$name = trim(preg_replace("/[^\pL\d\-\. ]/u", "-", $_REQUEST["name"]));
|
||||
$email = trim($_REQUEST["email"]);
|
||||
$password = trim($_REQUEST["password"]);
|
||||
$language = trim($_REQUEST["language"]);
|
||||
$status = trim($_REQUEST["status"]);
|
||||
if($status == "install")
|
||||
{
|
||||
$status = "ok";
|
||||
$fileNameHome = $this->yellow->lookup->findFileFromLocation("/");
|
||||
$fileData = strreplaceu("\r\n", "\n", $this->yellow->toolbox->readFile($fileNameHome));
|
||||
if($fileData==$this->getRawDataHome("en") && $language!="en")
|
||||
{
|
||||
$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(!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, $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'!");
|
||||
}
|
||||
if($status == "done")
|
||||
{
|
||||
$statusCode = 303;
|
||||
$location = $this->yellow->lookup->normaliseUrl($serverScheme, $serverName, $base, $location);
|
||||
$this->yellow->sendStatus($statusCode, $location);
|
||||
} else {
|
||||
$statusCode = $this->yellow->sendPage();
|
||||
}
|
||||
}
|
||||
return $statusCode;
|
||||
}
|
||||
|
||||
// Send mail to web interface user
|
||||
function sendMail($serverScheme, $serverName, $base, $email, $action)
|
||||
{
|
||||
|
@ -568,7 +525,7 @@ class YellowWebinterface
|
|||
}
|
||||
|
||||
// Check web interface request
|
||||
function checkRequest($location, $fileName)
|
||||
function checkRequest($location)
|
||||
{
|
||||
if($this->yellow->toolbox->getServerScheme()==$this->yellow->config->get("webinterfaceServerScheme") &&
|
||||
$this->yellow->toolbox->getServerName()==$this->yellow->config->get("webinterfaceServerName"))
|
||||
|
@ -576,12 +533,7 @@ class YellowWebinterface
|
|||
$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"] = $this->yellow->isStaticFile($location, $fileName, false) ? "" : "install";
|
||||
$this->active = false;
|
||||
}
|
||||
return $this->yellow->config->get("installationMode") || $this->isActive();
|
||||
return $this->isActive();
|
||||
}
|
||||
|
||||
// Check web interface user
|
||||
|
@ -784,42 +736,6 @@ class YellowWebinterface
|
|||
return $page;
|
||||
}
|
||||
|
||||
// Return raw data for installation page
|
||||
function getRawDataInstallation($fileName, $language)
|
||||
{
|
||||
$fileData = $this->yellow->toolbox->readFile($fileName);
|
||||
if(empty($fileData))
|
||||
{
|
||||
$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=\"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>";
|
||||
foreach($this->yellow->text->getLanguages() as $language)
|
||||
{
|
||||
$checked = $language==$this->yellow->text->language ? " checked=\"checked\"" : "";
|
||||
$fileData .= "<label for=\"$language\"><input type=\"radio\" name=\"language\" id=\"$language\" value=\"$language\"$checked> ".$this->yellow->text->getTextHtml("languageDescription", $language)."</label><br />";
|
||||
}
|
||||
$fileData .= "</p>\n";
|
||||
}
|
||||
$fileData .= "<input class=\"btn\" type=\"submit\" value=\"".$this->yellow->text->get("webinterfaceOkButton")."\" />\n";
|
||||
$fileData .= "<input type=\"hidden\" name=\"status\" value=\"install\" />\n";
|
||||
$fileData .= "</form>\n";
|
||||
}
|
||||
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($location = "")
|
||||
{
|
||||
|
@ -827,18 +743,18 @@ class YellowWebinterface
|
|||
$fileName = $this->yellow->lookup->findFileNew($fileName,
|
||||
$this->yellow->config->get("webinterfaceNewFile"), $this->yellow->config->get("configDir"),
|
||||
$this->yellow->config->get("template"));
|
||||
$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($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);
|
||||
$rawData = $this->yellow->toolbox->readFile($fileName);
|
||||
$rawData = preg_replace("/@datetime/i", date("Y-m-d H:i:s"), $rawData);
|
||||
$rawData = preg_replace("/@date/i", date("Y-m-d"), $rawData);
|
||||
$rawData = preg_replace("/@usershort/i", strtok($this->users->getName($this->userEmail), " "), $rawData);
|
||||
$rawData = preg_replace("/@username/i", $this->users->getName($this->userEmail), $rawData);
|
||||
$rawData = preg_replace("/@userlanguage/i", $this->users->getLanguage($this->userEmail), $rawData);
|
||||
if(!empty($location))
|
||||
{
|
||||
$title = $this->yellow->toolbox->createTextTitle($location);
|
||||
$fileData = $this->updateDataTitle($fileData, $title);
|
||||
$rawData = $this->updateDataTitle($rawData, $title);
|
||||
}
|
||||
return $fileData;
|
||||
return $rawData;
|
||||
}
|
||||
|
||||
// Return page data including login information
|
||||
|
@ -882,7 +798,7 @@ class YellowWebinterface
|
|||
{
|
||||
$data["serverLanguages"][$language] = $this->yellow->text->getTextHtml("languageDescription", $language);
|
||||
}
|
||||
$data["serverVersion"] = YellowCore::Version;
|
||||
$data["serverVersion"] = "Yellow ".YellowCore::Version;
|
||||
} else {
|
||||
$data["loginEmail"] = $this->yellow->config->get("loginEmail");
|
||||
$data["loginPassword"] = $this->yellow->config->get("loginPassword");
|
||||
|
@ -892,23 +808,6 @@ class YellowWebinterface
|
|||
return $data;
|
||||
}
|
||||
|
||||
// Return installation data
|
||||
function getInstallationData()
|
||||
{
|
||||
$data = array();
|
||||
foreach($_REQUEST as $key=>$value)
|
||||
{
|
||||
if(!$this->yellow->config->isExisting($key)) continue;
|
||||
$data[$key] = trim($value);
|
||||
}
|
||||
$data["# serverScheme"] = $this->yellow->toolbox->getServerScheme();
|
||||
$data["# serverName"] = $this->yellow->toolbox->getServerName();
|
||||
$data["# serverBase"] = $this->yellow->toolbox->getServerBase();
|
||||
$data["# serverTime"] = $this->yellow->toolbox->getServerTime();
|
||||
$data["installationMode"] = "0";
|
||||
return $data;
|
||||
}
|
||||
|
||||
// Return request strings
|
||||
function getRequestData()
|
||||
{
|
||||
|
@ -964,6 +863,127 @@ class YellowWebinterface
|
|||
return $this->active;
|
||||
}
|
||||
}
|
||||
|
||||
// Yellow installation
|
||||
class YellowInstallation
|
||||
{
|
||||
var $yellow; //access to API
|
||||
|
||||
function __construct($yellow)
|
||||
{
|
||||
$this->yellow = $yellow;
|
||||
}
|
||||
|
||||
// Process request to install
|
||||
function processRequest($serverScheme, $serverName, $base, $location, $fileName)
|
||||
{
|
||||
$statusCode = 0;
|
||||
if(!$this->yellow->isStaticFile($location, $fileName, false))
|
||||
{
|
||||
$fileName = $this->yellow->config->get("configDir")."page-installation.txt";
|
||||
$this->yellow->pages->pages["root/"] = array();
|
||||
$this->yellow->page = new YellowPage($this->yellow);
|
||||
$this->yellow->page->setRequestInformation($serverScheme, $serverName, $base, $location, $fileName);
|
||||
$this->yellow->page->parseData($this->getRawDataWelcome($fileName, $this->yellow->getRequestLanguage()), false, 404);
|
||||
$this->yellow->page->parserSafeMode = false;
|
||||
$this->yellow->page->parseContent();
|
||||
$name = trim(preg_replace("/[^\pL\d\-\. ]/u", "-", $_REQUEST["name"]));
|
||||
$email = trim($_REQUEST["email"]);
|
||||
$password = trim($_REQUEST["password"]);
|
||||
$language = trim($_REQUEST["language"]);
|
||||
$status = trim($_REQUEST["status"]);
|
||||
if($status == "install")
|
||||
{
|
||||
$status = "ok";
|
||||
$fileNameHome = $this->yellow->lookup->findFileFromLocation("/");
|
||||
$fileData = strreplaceu("\r\n", "\n", $this->yellow->toolbox->readFile($fileNameHome));
|
||||
if($fileData==$this->getRawDataHome("en") && $language!="en")
|
||||
{
|
||||
$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(!empty($email) && !empty($password))
|
||||
{
|
||||
$fileNameUser = $this->yellow->config->get("configDir").$this->yellow->config->get("webinterfaceUserFile");
|
||||
$status = $this->yellow->plugins->get("webinterface")->users->update($fileNameUser, $email, $password, $name, $language) ? "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->getConfigData()) ? "done" : "error";
|
||||
if($status == "error") $this->yellow->page->error(500, "Can't write file '$fileNameConfig'!");
|
||||
}
|
||||
if($status == "done")
|
||||
{
|
||||
$statusCode = 303;
|
||||
$location = $this->yellow->lookup->normaliseUrl($serverScheme, $serverName, $base, $location);
|
||||
$this->yellow->sendStatus($statusCode, $location);
|
||||
} else {
|
||||
$statusCode = $this->yellow->sendPage();
|
||||
}
|
||||
}
|
||||
return $statusCode;
|
||||
}
|
||||
|
||||
// Return raw data for welcome page
|
||||
function getRawDataWelcome($fileName, $language)
|
||||
{
|
||||
$rawData = $this->yellow->toolbox->readFile($fileName);
|
||||
if(empty($rawData))
|
||||
{
|
||||
$this->yellow->text->setLanguage($language);
|
||||
$rawData = "---\nTitle:".$this->yellow->text->get("webinterfaceInstallationTitle")."\nLanguage:$language\nNavigation:navigation\n---\n";
|
||||
$rawData .= "<form class=\"installation-form\" action=\"".$this->yellow->page->getLocation()."\" method=\"post\">\n";
|
||||
$rawData .= "<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";
|
||||
$rawData .= "<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";
|
||||
$rawData .= "<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)
|
||||
{
|
||||
$rawData .= "<p>";
|
||||
foreach($this->yellow->text->getLanguages() as $language)
|
||||
{
|
||||
$checked = $language==$this->yellow->text->language ? " checked=\"checked\"" : "";
|
||||
$rawData .= "<label for=\"$language\"><input type=\"radio\" name=\"language\" id=\"$language\" value=\"$language\"$checked> ".$this->yellow->text->getTextHtml("languageDescription", $language)."</label><br />";
|
||||
}
|
||||
$rawData .= "</p>\n";
|
||||
}
|
||||
$rawData .= "<input class=\"btn\" type=\"submit\" value=\"".$this->yellow->text->get("webinterfaceOkButton")."\" />\n";
|
||||
$rawData .= "<input type=\"hidden\" name=\"status\" value=\"install\" />\n";
|
||||
$rawData .= "</form>\n";
|
||||
}
|
||||
return $rawData;
|
||||
}
|
||||
|
||||
// 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 configuration data
|
||||
function getConfigData()
|
||||
{
|
||||
$data = array();
|
||||
foreach($_REQUEST as $key=>$value)
|
||||
{
|
||||
if(!$this->yellow->config->isExisting($key)) continue;
|
||||
$data[$key] = trim($value);
|
||||
}
|
||||
$data["# serverScheme"] = $this->yellow->toolbox->getServerScheme();
|
||||
$data["# serverName"] = $this->yellow->toolbox->getServerName();
|
||||
$data["# serverBase"] = $this->yellow->toolbox->getServerBase();
|
||||
$data["# serverTime"] = $this->yellow->toolbox->getServerTime();
|
||||
$data["installationMode"] = "0";
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
|
||||
// Yellow users
|
||||
class YellowUsers
|
||||
|
@ -995,6 +1015,21 @@ class YellowUsers
|
|||
}
|
||||
}
|
||||
|
||||
// Clean users in file
|
||||
function clean($fileName)
|
||||
{
|
||||
$fileData = $this->yellow->toolbox->readFile($fileName);
|
||||
foreach($this->yellow->toolbox->getTextLines($fileData) as $line)
|
||||
{
|
||||
preg_match("/^\s*(.*?)\s*:\s*(.*?),\s*(.*?),\s*(.*?),\s*(.*?),\s*(.*?)\s*$/", $line, $matches);
|
||||
if(empty($matches[5]) || $matches[5]=="active" || $matches[5]=="inactive")
|
||||
{
|
||||
$fileDataNew .= $line;
|
||||
}
|
||||
}
|
||||
return $this->yellow->toolbox->createFile($fileName, $fileDataNew);
|
||||
}
|
||||
|
||||
// Update users in file
|
||||
function update($fileName, $email, $password = "", $name = "", $language = "", $status = "", $home = "")
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue