From 6b40e9103aa8cd102c148b572fc60fc414a37d43 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 18 Nov 2025 14:17:16 +0100 Subject: [PATCH] add javascript based editor (only bootstrap4 theme) --- out/out.EditMarkdown.php | 100 ++++++++++++++++++++ views/bootstrap/class.EditMarkdown.php | 122 +++++++++++++++++++++++++ 2 files changed, 222 insertions(+) create mode 100644 out/out.EditMarkdown.php create mode 100644 views/bootstrap/class.EditMarkdown.php diff --git a/out/out.EditMarkdown.php b/out/out.EditMarkdown.php new file mode 100644 index 000000000..2ba54550d --- /dev/null +++ b/out/out.EditMarkdown.php @@ -0,0 +1,100 @@ +$dms, 'user'=>$user)); + +$documentid = $_GET["documentid"]; +if (!isset($documentid) || !is_numeric($documentid) || intval($documentid)<1) { + UI::exitError(getMLText("document_title", array("documentname" => getMLText("invalid_doc_id"))),getMLText("invalid_doc_id")); +} + +$document = $dms->getDocument($documentid); + +if (!is_object($document)) { + UI::exitError(getMLText("document_title", array("documentname" => getMLText("invalid_doc_id"))),getMLText("invalid_doc_id")); +} + +if ($document->getAccessMode($user) < M_READWRITE) { + UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("access_denied")); +} + +if(isset($_GET["version"])) { + $version = $_GET["version"]; + + if (!is_numeric($version)) { + UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("invalid_version")); + } + + $content = $document->getContentByVersion($version); + $lc = $document->getLatestContent(); + +} else { + $version = 0; + $content = $document->getLatestContent(); + $lc = $document->getLatestContent(); +} + +if (!is_object($content)) { + UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("invalid_version")); +} + +/* Only the latest version may be edited */ +if($content->getVersion() != $lc->getVersion()) { + UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("invalid_version")); +} + +/* +if (!isset($settings->_editOnlineFileTypes) || !is_array($settings->_editOnlineFileTypes) || !in_array(strtolower($content->getFileType()), $settings->_editOnlineFileTypes)) { + UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("invalid_version")); +} + */ + +/* Create object for checking access to certain operations */ +$accessop = new SeedDMS_AccessOperation($dms, $document, $user, $settings); +if(!$accessop->mayEditVersion($version)) { + UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("access_denied")); +} + +$folder = $document->getFolder(); + +if($view) { + $view->setParam('document', $document); + $view->setParam('version', $content); + $view->setParam('folder', $folder); + $view->setParam('accessobject', $accessop); + $view->setParam('cachedir', $settings->_cacheDir); + $view->setParam('previewWidthList', $settings->_previewWidthList); + $view->setParam('previewWidthDetail', $settings->_previewWidthDetail); + $view->setParam('timeout', $settings->_cmdTimeout); + $view($_GET); + exit; +} diff --git a/views/bootstrap/class.EditMarkdown.php b/views/bootstrap/class.EditMarkdown.php new file mode 100644 index 000000000..e6c88a0ff --- /dev/null +++ b/views/bootstrap/class.EditMarkdown.php @@ -0,0 +1,122 @@ + + * @copyright Copyright (C) 2002-2005 Markus Westphal, + * 2006-2008 Malcolm Cowe, 2010 Matteo Lucarelli, + * 2010-2012 Uwe Steinmann + * @version Release: @package_version@ + */ + +/** + * Include parent class + */ +//require_once("class.Bootstrap.php"); + +/** + * Class which outputs the html page for EditOnline view + * + * @category DMS + * @package SeedDMS + * @author Markus Westphal, Malcolm Cowe, Uwe Steinmann + * @copyright Copyright (C) 2002-2005 Markus Westphal, + * 2006-2008 Malcolm Cowe, 2010 Matteo Lucarelli, + * 2010-2012 Uwe Steinmann + * @version Release: @package_version@ + */ +class SeedDMS_View_EditMarkdown extends SeedDMS_Theme_Style { + var $dms; + var $folder_count; + var $document_count; + var $file_count; + var $storage_size; + + function js() { /* {{{ */ + $document = $this->params['document']; + header('Content-Type: application/javascript; charset=UTF-8'); +?> + var editor; + $(function() { + editor = editormd("editor", { + // width: "100%", + height: 560, + // markdown: "xxxx", // dynamic set Markdown text + path : "/views/bootstrap4/vendors/editor.md/lib/" // Autoload modules mode, codemirror, marked... dependents libs path + }); + }); + $(document).ready(function() { + $('#update').click(function(event) { + event.preventDefault(); +// alert(editor.getMarkdown()); + $.post("../op/op.EditOnline.php", $('#form1').serialize(), function(response) { + noty({ + text: response.message, + type: response.success === true ? 'success' : 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500, + }); + }, "json"); + return false; + }); + }); + +params['dms']; + $user = $this->params['user']; + $document = $this->params['document']; + $version = $this->params['version']; + $cachedir = $this->params['cachedir']; + $previewwidthlist = $this->params['previewWidthList']; + $previewwidthdetail = $this->params['previewWidthDetail']; + + $set = 'markdown'; //default or markdown + $skin = 'simple'; // simple or markitup + $this->htmlAddHeader(''); + $this->htmlAddHeader(''); + $this->htmlAddHeader(''); + + $this->htmlStartPage(getMLText("edit_online")); + $this->globalNavigation(); + $this->contentStart(); + $folder = $document->getFolder(); + $this->pageNavigation($this->getFolderPathHTML($folder, true, $document), "view_document", $document); + $this->rowStart(); + $this->columnStart(12); +?> +
+ +
+ +
+getId() == $luser->getId()) { + echo $this->warningMsg(getMLText('edit_online_warning')); + $this->formSubmit(' '.getMLText('save'),'update','','primary'); + } else { + echo $this->errorMsg(getMLText('edit_online_not_allowed')); + } +?> +
+columnEnd(); + $this->rowEnd(); + $this->contentContainerEnd(); + $this->contentEnd(); + $this->htmlEndPage(); + } /* }}} */ +}