Core update (Smultron remix)

This commit is contained in:
markseu 2015-05-24 17:31:17 +02:00
parent 227fbcacb3
commit 9eeede1d58
7 changed files with 45 additions and 9 deletions

View file

@ -1,4 +1,4 @@
Yellow 0.5.15
Yellow 0.5.16
=============
[![Yellow](https://raw.githubusercontent.com/wiki/datenstrom/yellow/images/yellow.jpg)](http://datenstrom.se/yellow)

Binary file not shown.

View file

@ -23,6 +23,8 @@ webinterfaceCancelButton = Cancel
webinterfaceEdit = Edit page
webinterfaceCreate = +
webinterfaceDelete = -
webinterfaceCreateTitle = New page
webinterfaceDeleteTitle = Delete page
webinterfaceUserHelp = Help
webinterfaceUserHelpUrl = https://github.com/datenstrom/yellow/wiki
webinterfaceUserAccountUrl = https://github.com/datenstrom/yellow/wiki/How-to-add-a-user-account

View file

@ -1,9 +1,9 @@
/* Yellow web interface 0.5.15 */
/* Yellow web interface 0.5.16 */
.yellow-bar { position:relative; overflow:hidden; line-height:2em; margin-bottom:10px; }
.yellow-bar-left { display:block; float:left; }
.yellow-bar-right { display:block; float:right; }
.yellow-bar-right a { padding-left:0.5em; }
.yellow-bar-right a { margin-left:1em; }
.yellow-bar-right #yellow-pane-create-link { padding:0 0.5em; }
.yellow-bar-right #yellow-pane-delete-link { padding:0 0.5em; }
.yellow-body-modal-open { overflow:hidden; }
@ -80,8 +80,9 @@
#yellow-pane-login h1 { margin:0.5em 0.5em; }
#yellow-pane-login p { margin:0.5em; text-align:right; }
#yellow-pane-edit { }
#yellow-pane-edit h1 { margin:4px 0; color:#000; font-size:1.3em; text-align:center; }
#yellow-pane-edit-page { margin:0; padding:5px; border:1px solid #bbb; outline:none; resize:none; font-size:0.9em; }
#yellow-pane-edit-buttons { margin:8px 0; }
#yellow-pane-edit-buttons { margin:4px 0; }
#yellow-pane-edit-buttons input { margin-right:5px; }
#yellow-pane-user { cursor:pointer; }
#yellow-pane-user a { text-decoration:none; }

View file

@ -4,7 +4,7 @@
// Yellow main API
var yellow =
{
version: "0.5.15",
version: "0.5.16",
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)); },
@ -123,6 +123,7 @@ yellow.webinterface =
} else if(paneId == "yellow-pane-edit") {
elementDiv.innerHTML =
"<form method=\"post\">"+
"<h1 id=\"yellow-pane-edit-title\">"+this.getText("Edit")+"</h1>"+
"<textarea id=\"yellow-pane-edit-page\" name=\"rawdataedit\"></textarea>"+
"<div id=\"yellow-pane-edit-buttons\">"+
"<input id=\"yellow-pane-edit-send\" class=\"yellow-btn\" type=\"button\" onclick=\"yellow.action('send'); return false;\" value=\""+this.getText("EditButton")+"\" />"+
@ -147,7 +148,14 @@ yellow.webinterface =
{
if(init)
{
var string = paneType=="create" ? yellow.page.rawDataNew : yellow.page.rawDataEdit;
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;
}
var action = this.getPaneAction(paneId, paneType)
@ -531,6 +539,16 @@ yellow.toolbox =
.replace(/[\r]/g, "%0d")
.replace(/[\n]/g, "%0a");
},
// Encode HTML special characters
encodeHtml: function(string)
{
return string
.replace(/&/g, "&amp;")
.replace(/</g, "&lt;")
.replace(/>/g, "&gt;")
.replace(/"/g, "&quot;");
},
// Submit form with post method
submitForm: function(params, encodeNewline)

View file

@ -5,7 +5,7 @@
// Web interface core plugin
class YellowWebinterface
{
const Version = "0.5.15";
const Version = "0.5.16";
var $yellow; //access to API
var $active; //web interface is active? (boolean)
var $userLoginFailed; //web interface login failed? (boolean)
@ -85,10 +85,11 @@ class YellowWebinterface
$output .= "// <![CDATA[\n";
if($this->isUser())
{
$output .= "yellow.page.userPermission = ".json_encode($this->userPermission).";\n";
$output .= "yellow.page.title = ".json_encode($this->getDataTitle($this->rawDataEdit)).";\n";
$output .= "yellow.page.rawDataSource = ".json_encode($this->rawDataSource).";\n";
$output .= "yellow.page.rawDataEdit = ".json_encode($this->rawDataEdit).";\n";
$output .= "yellow.page.rawDataNew = ".json_encode($this->getDataNew()).";\n";
$output .= "yellow.page.userPermission = ".json_encode($this->userPermission).";\n";
$output .= "yellow.page.parserSafeMode = ".json_encode($this->yellow->page->parserSafeMode).";\n";
$output .= "yellow.page.statusCode = ".json_encode($this->yellow->page->statusCode).";\n";
}
@ -391,6 +392,20 @@ class YellowWebinterface
return $rawDataNew;
}
// Return page data title
function getDataTitle($rawData)
{
$title = $this->yellow->page->get("title");
if(preg_match("/^(\xEF\xBB\xBF)?\-\-\-[\r\n]+(.+?)[\r\n]+\-\-\-[\r\n]+/s", $rawData))
{
foreach($this->yellow->toolbox->getTextLines($rawData) as $line)
{
if(preg_match("/^(\s*Title\s*:\s*)(.*?)(\s*)$/i", $line, $matches)) { $title = $matches[2]; break; }
}
}
return $title;
}
// Return new page
function getPageNew($serverScheme, $serverName, $base, $location, $fileName, $rawData)
{

View file

@ -5,7 +5,7 @@
// Yellow main class
class Yellow
{
const Version = "0.5.15";
const Version = "0.5.16";
var $page; //current page
var $pages; //pages from file system
var $files; //files from file system