diff --git a/src/client/js/app-edit.js b/src/client/js/app-edit.js
index 54754e6..b76f06e 100644
--- a/src/client/js/app-edit.js
+++ b/src/client/js/app-edit.js
@@ -4,6 +4,7 @@
updatePreviewDelay = 1000,
updatePreviewTimeout = null,
updatePreviewRunning = false,
+ demoAlertState = null,
previewIsDirty = false;
if (slimwiki.supportedBrowser) {
@@ -76,16 +77,30 @@
}
function onEditorChange() {
+ var isDemoMode = slimwiki.settings.demoMode;
+
+ if (isDemoMode && ! demoAlertState) {
+ var demoAlertElem = document.getElementById('demo-alert');
+ demoAlertElem.style.display = 'block';
+ demoAlertState = 'showing';
+
+ document.getElementById('demoAlertOkBtn').addEventListener('click', function() {
+ demoAlertElem.style.display = 'none';
+ demoAlertState = 'dismissed';
+ });
+ }
+
previewIsDirty = true;
if (! updatePreviewRunning) {
window.clearTimeout(updatePreviewTimeout);
updatePreviewTimeout = window.setTimeout(function() {
previewIsDirty = false;
-
updatePreviewRunning = true;
var start = new Date().getTime(),
- articleFilename = slimwiki.settings.articleFilename;
- callRpc('editor', 'saveArticle', [ articleFilename, editor.getValue() ], function(result, error) {
+ articleFilename = slimwiki.settings.articleFilename,
+ methodName = isDemoMode ? 'previewArticle' : 'saveArticle';
+
+ callRpc('editor', methodName, [ articleFilename, editor.getValue() ], function(result, error) {
updatePreviewRunning = false;
if (error) {
diff --git a/src/client/less/view.less b/src/client/less/view.less
index af9dbdf..1d15ae0 100644
--- a/src/client/less/view.less
+++ b/src/client/less/view.less
@@ -34,6 +34,19 @@ body {
}
}
+#demo-alert {
+ display: none;
+ position: fixed;
+ top: 70px;
+ left: 50%;
+ right: 0;
+
+ .alert {
+ display: block;
+ margin: 0 50px;
+ }
+}
+
.breadcrumbs {
background-color: white;
cursor: default;
diff --git a/src/index.php b/src/index.php
index 74f9db7..80c4c83 100644
--- a/src/index.php
+++ b/src/index.php
@@ -37,7 +37,7 @@ function init() {
require_once __DIR__ . '/server/logic/Main.php';
- (new Main())->dispatch($baseUrl, $basePath, $requestPathArray, $uriParts['query']);
+ (new Main())->dispatch($baseUrl, $basePath, $requestPathArray, isset($uriParts['query']) ? $uriParts['query'] : '');
}
init();
diff --git a/src/server/i18n/de.php b/src/server/i18n/de.php
index ee66119..b1f509c 100644
--- a/src/server/i18n/de.php
+++ b/src/server/i18n/de.php
@@ -7,11 +7,14 @@ $i18n = array(
'error.editingArticleFailed' => 'Der Artikel kann nicht bearbeitet werden.',
'error.missingWritePermissions.article' => 'Der Server hat keine Schreibrechte für die Artikel-Datei:',
'error.missingWritePermissions.backup' => 'Der Server hat keine Schreibrechte für die Backup-Datei:',
+ 'button.ok' => 'OK',
'button.cancel' => 'Abbrechen',
'button.back' => 'Zurück',
'button.edit' => 'Bearbeiten',
'button.createUser' => 'Benutzer erstellen',
'button.createArticle' => 'Artikel anlegen',
+ 'demoAlert.title' => 'Dies ist eine Demo.',
+ 'demoAlert.message' => 'Deine Änderungen werden nicht gespeichert.
Bei einer normalen Installation werden Änderungen automatisch gespeichert, wenn Du kurz mal nichts schreibst. Sobald Du Deine Änderungen auf der rechten Seite siehst, sind sie dann bereits gespeichert (mit täglichem Backup) und veröffentlicht.
In dieser Demo kannst Du etwas Markdown eingeben und dann schauen, wie es aussehen würde.',
'createArticle.text' => 'Diesen Artikel gibt es noch nicht.',
'createArticle.content' => 'Dies ist ihr neuer Artikel.',
'createUser.userName' => 'Benutzername',
diff --git a/src/server/i18n/en.php b/src/server/i18n/en.php
index d15b4b6..5129851 100644
--- a/src/server/i18n/en.php
+++ b/src/server/i18n/en.php
@@ -7,11 +7,14 @@ $i18n = array(
'error.editingArticleFailed' => 'Editing article failed.',
'error.missingWritePermissions.article' => 'The server has no write permissions for the article file:',
'error.missingWritePermissions.backup' => 'The server has no write permissions for the backup file:',
+ 'button.ok' => 'OK',
'button.cancel' => 'Cancel',
'button.back' => 'Back',
'button.edit' => 'Edit',
'button.createUser' => 'Create user',
'button.createArticle' => 'Create article',
+ 'demoAlert.title' => 'This is a demo.',
+ 'demoAlert.message' => 'Your changes won\'t be saved.
On a real installation, your changes are saved automatically as soon as you stop writing for a second. If you see your changes on the right side, they will be already saved (with a daily backup) and public.
In this demo you can now write some markdown and see how it would look like.',
'createArticle.text' => 'This article does not exist yet.',
'createArticle.content' => 'This is your new article.',
'createUser.userName' => 'User name',
diff --git a/src/server/layout/page.php b/src/server/layout/page.php
index 722b170..e167fb3 100644
--- a/src/server/layout/page.php
+++ b/src/server/layout/page.php
@@ -43,6 +43,7 @@ $mode = $data['mode'];
"mode" => $mode
);
if ($mode == 'edit' || $mode == 'createArticle') {
+ $settings['demoMode'] = $data['demoMode'];
$settings['pageTitle'] = end($data['breadcrumbs'])['name'];
$settings['requestPath'] = $data['requestPath'];
$settings['articleFilename'] = $data['articleFilename'];
@@ -127,6 +128,13 @@ if ($mode == 'edit') {
?>