diff --git a/op/op.EditOnline.php b/op/op.EditOnline.php new file mode 100644 index 000000000..2c6b1f208 --- /dev/null +++ b/op/op.EditOnline.php @@ -0,0 +1,67 @@ + getMLText("invalid_doc_id"))),getMLText("invalid_doc_id")); +} + +$documentid = $_POST["documentid"]; +$document = $dms->getDocument($documentid); + +if (!is_object($document)) { + UI::exitError(getMLText("document_title", array("documentname" => getMLText("invalid_doc_id"))),getMLText("invalid_doc_id")); +} + +$folder = $document->getFolder(); +$docPathHTML = getFolderPathHTML($folder, true). " / ".$document->getName().""; + +if ($document->getAccessMode($user) < M_READWRITE) { + UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("access_denied")); +} + +if($document->isLocked()) { + $lockingUser = $document->getLockingUser(); + if (($lockingUser->getID() != $user->getID()) && ($document->getAccessMode($user) != M_ALL)) { + UI::exitError(getMLText("document_title", array("documentname" => htmlspecialchars($document->getName()))),getMLText("lock_message", array("email" => $lockingUser->getEmail(), "username" => htmlspecialchars($lockingUser->getFullName())))); + } +} + +$tmpfname = tempnam(sys_get_temp_dir(), 'FOO'); +file_put_contents($tmpfname, $_POST['data']); + +/* Check if the uploaded file is identical to last version */ +$lc = $document->getLatestContent(); +if($lc->getChecksum() == SeedDMS_Core_File::checksum($tmpfname)) { + echo json_encode(array('success'=>false, 'message'=>getMLText('identical_version'))); +} else { + if($document->replaceContent(0, $user, $tmpfname, $lc->getOriginalFileName(), $lc->getFileType(), $lc->getMimeType())) { + echo json_encode(array('success'=>true, 'message'=>getMLText('splash_saved_file'))); + } else { + echo json_encode(array('success'=>false, 'message'=>getMLText('splash_error_saving_file'))); + } +} +unlink($tmpfname); diff --git a/out/out.EditOnline.php b/out/out.EditOnline.php new file mode 100644 index 000000000..d911bf87b --- /dev/null +++ b/out/out.EditOnline.php @@ -0,0 +1,94 @@ + 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 { + $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, $user, $settings); + +$folder = $document->getFolder(); + +$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); +$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user)); +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.EditOnline.php b/views/bootstrap/class.EditOnline.php new file mode 100644 index 000000000..2f53f40de --- /dev/null +++ b/views/bootstrap/class.EditOnline.php @@ -0,0 +1,138 @@ + + * @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_EditOnline extends SeedDMS_Bootstrap_Style { + var $dms; + var $folder_count; + var $document_count; + var $file_count; + var $storage_size; + + function preview() { /* {{{ */ + $dms = $this->params['dms']; + $document = $this->params['document']; + $version = $this->params['version']; +?> + +
+
+text(file_get_contents($dms->contentDir . $version->getPath())); +?> +
+
+".htmlspecialchars(file_get_contents($dms->contentDir . $version->getPath())).""; +?> +
+
+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(''."\n", 'css'); + $this->htmlAddHeader(''."\n", 'css'); + $this->htmlAddHeader(''."\n", 'js'); + $this->htmlAddHeader(''."\n", 'js'); + + $this->htmlStartPage(getMLText("edit_online")); + $this->globalNavigation(); + $this->contentStart(); + $folder = $document->getFolder(); + $this->pageNavigation($this->getFolderPathHTML($folder, true, $document), "view_document", $document); +?> + +\n"; + +echo "
\n"; +$this->contentHeading(getMLText("content")); +?> + +
+ + + +
+\n"; + +echo "
\n"; +$this->contentHeading(getMLText("preview")); +echo "
getId()."\">
"; +echo "
\n"; + +echo "
\n"; + +$this->contentContainerEnd(); +$this->htmlEndPage(); + } /* }}} */ +} +?>