register_hook('TPL_ACT_RENDER', 'BEFORE', $this, 'renderBanner'); } /** * Add banner to pages under structpublish control */ public function renderBanner(Doku_Event $event) { global $ID; global $INFO; if ($event->data !== 'show') return; $this->permissionsHelper = plugin_load('helper', 'structpublish_permissions'); $this->dbHelper = plugin_load('helper', 'structpublish_permissions'); if (!$this->permissionsHelper->isPublishable()) return; $revision = new Revision($this->permissionsHelper->getDb(), $ID, $INFO['currentrev']); echo $this->getBannerHtml($revision); } /** * @param Revision $revision latest publish data * @return string */ protected function getBannerHtml($revision) { global $ID; $user = $_SERVER['REMOTE_USER']; $html = ''; if ($this->permissionsHelper->isPublisher($ID, $user)) { $status = $revision->getStatus() ?: Revision::STATUS_DRAFT; $version = $revision->getVersion() ?: ''; $html = sprintf( $this->getBannerTemplate(), $status, $version, $status, $this->formHtml() ); } return $html; } protected function formHtml() { $form = new dokuwiki\Form\Form(); $form->addButton('structpublish[review]', 'REVIEWED'); $form->addButton('structpublish[publish]', 'PUBLISH'); return $form->toHTML(); } protected function getBannerTemplate() { $template = '
'; return $template; } }