diff --git a/src/server/logic/EditorService.php b/src/server/logic/EditorService.php index a627af2..dc17d02 100644 --- a/src/server/logic/EditorService.php +++ b/src/server/logic/EditorService.php @@ -68,10 +68,19 @@ class EditorService { $articleFilename .= '.md'; } - $markdownText = $pageTitle . "\n" . str_repeat('=', strlen($pageTitle)) . "\n\n" - . $this->context->getI18n()['createArticle.content']; + $markdownText = $this->getNewArticleMarkdown($pageTitle); - return $this->saveArticle($articleFilename, $markdownText); + $config = $this->context->getConfig(); + if ($config['demoMode']) { + return $this->previewArticle($articleFilename, $markdownText); + } else { + return $this->saveArticle($articleFilename, $markdownText); + } + } + + public function getNewArticleMarkdown($pageTitle) { + return $pageTitle . "\n" . str_repeat('=', strlen($pageTitle)) . "\n\n" + . $this->context->getI18n()['createArticle.content']; } // Used in demo-mode instead of `saveArticle` diff --git a/src/server/logic/Main.php b/src/server/logic/Main.php index 45a47e9..fcacb82 100644 --- a/src/server/logic/Main.php +++ b/src/server/logic/Main.php @@ -106,7 +106,7 @@ class Main { if ($fatalErrorMessage != null) { $fatalErrorMessage = $this->context->getI18n()['error.editingArticleFailed'] . '
' . $fatalErrorMessage; $mode = 'error'; - } else if (! $renderService->articleExists($articleFilename)) { + } else if (! $renderService->articleExists($articleFilename) && ! $config['demoMode']) { $mode = 'createArticle'; $showCreateUserButton = false; } @@ -131,7 +131,17 @@ class Main { $data['articleFilename'] = $articleFilename; if ($mode == 'view' || $mode == 'edit') { - $articleMarkdown = file_get_contents($this->context->getArticleBaseDir() . $articleFilename); + if ($renderService->articleExists($articleFilename)) { + $articleMarkdown = file_get_contents($this->context->getArticleBaseDir() . $articleFilename); + } else if ($config['demoMode']) { + // Open a fake "new article" for demo mode + + // We have no real page title here -> Create one from the file name + $pageTitle = str_replace('_', ' ', end($requestPathArray)); + + $editorService = $this->context->getEditorService(); + $articleMarkdown = $editorService->getNewArticleMarkdown($pageTitle); + } $data['articleMarkdown'] = $articleMarkdown; $data['articleHtml'] = $renderService->renderMarkdown($articleMarkdown, $mode == 'edit'); }