commit 9eeede1d5807e824abb67b1ecb0e4932ee45c667
parent 227fbcacb3457d46add4cf2a6cc169b38377702b
Author: markseu <mark2011@mayberg.se>
Date: Sun, 24 May 2015 17:31:17 +0200
Core update (Smultron remix)
Diffstat:
7 files changed, 45 insertions(+), 9 deletions(-)
diff --git a/README.md b/README.md
@@ -1,4 +1,4 @@
-Yellow 0.5.15
+Yellow 0.5.16
=============
[](http://datenstrom.se/yellow)
diff --git a/media/downloads/yellow.pdf b/media/downloads/yellow.pdf
Binary files differ.
diff --git a/system/config/language-en.ini b/system/config/language-en.ini
@@ -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
diff --git a/system/core/core-webinterface.css b/system/core/core-webinterface.css
@@ -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; }
diff --git a/system/core/core-webinterface.js b/system/core/core-webinterface.js
@@ -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, "&")
+ .replace(/</g, "<")
+ .replace(/>/g, ">")
+ .replace(/"/g, """);
+ },
// Submit form with post method
submitForm: function(params, encodeNewline)
diff --git a/system/core/core-webinterface.php b/system/core/core-webinterface.php
@@ -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)
{
diff --git a/system/core/core.php b/system/core/core.php
@@ -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