*/ include_once(DOKU_PLUGIN . 'cite/code.php'); //this ensures the functions in code.php are always available class action_plugin_cite extends DokuWiki_Action_Plugin { /** * register the eventhandlers * * @param Doku_Event_Handler $controller */ public function register(Doku_Event_Handler $controller) { $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, '_handle_act', array()); $controller->register_hook('TPL_ACT_UNKNOWN', 'BEFORE', $this, '_handle_tpl_act', array()); $controller->register_hook('MENU_ITEMS_ASSEMBLY', 'AFTER', $this, 'addsvgbutton', array()); } public function _handle_act($event, $param) { if ($event->data != 'cite') { return; } $event->preventDefault(); } public function _handle_tpl_act($event, $param) { if ($event->data != 'cite') { return; } $event->preventDefault(); global $conf, $ID, $REV, $INFO; //get always a revision id $revisionId = $REV; //$REV includes converted DATE_AT as well if (!$revisionId) { $revisionId = $INFO['lastmod']; } $pagename = tpl_pagetitle($ID, true); $permanentUrl = wl($ID, ['rev' => $revisionId], true); $author = $this->getConf('cite_author'); if ($author == '') { $author = 'Anonymous Contributors'; } $publisher = $this->getConf('cite_publisher'); if ($publisher == '') { $publisher = hsc($conf['title']); } $revisionDateSummary = date('j F Y H:i T', $revisionId); $revisionDateYear = date('Y', $revisionId); $revisionDateMLA = date('j M Y, H:i T', $revisionId); $revisionDateMHRA = date('j F Y, H:i T', $revisionId); $revisionDateCBECSE = date('Y M j, H:i T', $revisionId); $revisionDateAMA = date('F j, Y, H:i T', $revisionId); $retrieveDateSummary = date('j F Y H:i T'); $retrieveDateAPA = date('H:i, j F, Y'); $retrieveDateMLA = date('j M Y, H:i'); $retrieveDateMHRA = date('j F Y'); $retrieveDateChicago = date('F j, Y'); $retrieveDateCBECSE = date('Y M j'); $retrieveDateBluebook = date('F j, Y'); $retrieveDataAMA = date('F j, Y'); $retrieveDataBibTeX = date('j-F-Y'); echo <<< EOT

Bibliographic details for "$pagename"

Please remember to check with your standards guide or professor’s guidelines for the exact syntax to suit your needs.

Citation styles for "$pagename"

APA style

$author ($revisionDateYear). $pagename. $publisher. Retrieved $retrieveDateAPA from $permanentUrl.

MLA style

“$pagename.” $publisher. $revisionDateMLA. $retrieveDateMLA <$permanentUrl>.

MHRA style

$author, ‘$pagename’, $publisher, $revisionDateMHRA, <$permanentUrl> [accessed $retrieveDateMHRA]

Chicago style

$author, “$pagename,” $publisher, $permanentUrl (accessed $retrieveDateChicago).

CBE/CSE style

$author. $pagename [Internet]. $publisher; $revisionDateCBECSE [cited $retrieveDateCBECSE]. Available from: $permanentUrl.

Bluebook style

$pagename, $permanentUrl (last visited $retrieveDateBluebook).

AMA style

$author. $pagename. $publisher. $revisionDateAMA. Available at: $permanentUrl. Accessed $retrieveDataAMA.

BibTeX entry

 @misc{ wiki:xxx,
   author = "$author",
   title = "$pagename --- $publisher",
   year = "$revisionDateYear",
   url = "$permanentUrl",
   note = "[Online; accessed $retrieveDataBibTeX]"
 }

When using the LaTeX package url (\usepackage{url} somewhere in the preamble), which tends to give much more nicely formatted web addresses, the following may be preferred:

 @misc{ wiki:xxx,
   author = "$author",
   title = "$pagename --- $publisher",
   year = "$revisionDateYear",
   url = "\url{{$permanentUrl}}",
   note = "[Online; accessed $retrieveDataBibTeX]"
 }
EOT; } /** * Add 'cite' button to page tools, new SVG based mechanism * * @param Doku_Event $event */ public function addsvgbutton(Doku_Event $event) { global $INFO; if ($event->data['view'] != 'page' || !$this->getConf('showcitebutton')) { return; } if (!$INFO['exists']) { return; } array_splice($event->data['items'], -1, 0, [new \dokuwiki\plugin\cite\MenuItem()]); } }