*/ /** * Class action_plugin_blogtng_entry */ class action_plugin_blogtng_entry extends DokuWiki_Action_Plugin{ /** @var helper_plugin_blogtng_entry */ var $entryhelper = null; /** @var helper_plugin_blogtng_comments */ var $commenthelper = null; function __construct() { $this->entryhelper = plugin_load('helper', 'blogtng_entry'); $this->commenthelper = plugin_load('helper', 'blogtng_comments'); } /** * Registers a callback function for a given event * * @param Doku_Event_Handler $controller */ function register(Doku_Event_Handler $controller) { $controller->register_hook('TPL_ACT_RENDER', 'BEFORE', $this, 'replaceUsualPageViewWithBlogView', array()); $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'addNextPrevNavigationToMetadata', array ()); } /** * Intercept the usual page display and replace it with a * blog template controlled one. * * @param Doku_Event $event event object by reference * @param array $param empty array as passed to register_hook() * @return bool */ function replaceUsualPageViewWithBlogView(Doku_Event $event, $param) { global $ID; if($event->data != 'show') return false; $pid = md5($ID); $this->entryhelper->load_by_pid($pid); if($this->entryhelper->get_blog() == '') return true; // we can handle it $event->preventDefault(); $this->commenthelper->setPid($pid); $this->entryhelper->tpl_content($this->entryhelper->entry['blog'], 'entry'); return true; } /** * Add next and prev meta headers for navigating through * blog posts * * @param Doku_Event $event event object by reference * @param array $param empty array as passed to register_hook() * @return bool */ function addNextPrevNavigationToMetadata(Doku_Event $event, $param) { global $ACT, $ID; if ($ACT != 'show') return false; $pid = md5($ID); $this->entryhelper->load_by_pid($pid); if($this->entryhelper->get_blog() == '') return true; $relatedentries = $this->entryhelper->getAdjacentLinks($ID); if (isset ($relatedentries['prev'])) { $event->data['link'][] = array ( 'rel' => 'prev', 'href' => wl($relatedentries['prev']['page']) ); } if (isset ($relatedentries['next'])) { $event->data['link'][] = array ( 'rel' => 'next', 'href' => wl($relatedentries['next']['page']) ); } return true; } }