summaryrefslogtreecommitdiff
path: root/platform/www/lib/plugins/include/syntax/wrap.php
diff options
context:
space:
mode:
Diffstat (limited to 'platform/www/lib/plugins/include/syntax/wrap.php')
-rw-r--r--platform/www/lib/plugins/include/syntax/wrap.php78
1 files changed, 78 insertions, 0 deletions
diff --git a/platform/www/lib/plugins/include/syntax/wrap.php b/platform/www/lib/plugins/include/syntax/wrap.php
new file mode 100644
index 0000000..1cb630c
--- /dev/null
+++ b/platform/www/lib/plugins/include/syntax/wrap.php
@@ -0,0 +1,78 @@
+<?php
+/**
+ * Include plugin (wrapper component)
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Michael Klier <chi@chimeric.de>
+ * @author Michael Hamann <michael@content-space.de>
+ */
+
+class syntax_plugin_include_wrap extends DokuWiki_Syntax_Plugin {
+
+ function getType() {
+ return 'formatting';
+ }
+
+ function getSort() {
+ return 50;
+ }
+
+ function handle($match, $state, $pos, Doku_Handler $handler) {
+ // this is a syntax plugin that doesn't offer any syntax, so there's nothing to handle by the parser
+ }
+
+ /**
+ * Wraps the included page in a div and writes section edits for the action component
+ * so it can detect where an included page starts/ends.
+ *
+ * @author Michael Klier <chi@chimeric.de>
+ * @author Michael Hamann <michael@content-space.de>
+ */
+ function render($mode, Doku_Renderer $renderer, $data) {
+ if ($mode == 'xhtml') {
+ $state = array_shift($data);
+ switch($state) {
+ case 'open':
+ list($page, $redirect, $secid) = $data;
+ if ($redirect) {
+ if (defined('SEC_EDIT_PATTERN')) { // for DokuWiki Greebo and more recent versions
+ $renderer->startSectionEdit(0, array('target' => 'plugin_include_start', 'name' => $page, 'hid' => ''));
+ } else {
+ $renderer->startSectionEdit(0, 'plugin_include_start', $page);
+ }
+ } else {
+ if (defined('SEC_EDIT_PATTERN')) { // for DokuWiki Greebo and more recent versions
+ $renderer->startSectionEdit(0, array('target' => 'plugin_include_start_noredirect', 'name' => $page, 'hid' => ''));
+ } else {
+ $renderer->startSectionEdit(0, 'plugin_include_start_noredirect', $page);
+ }
+ }
+ $renderer->finishSectionEdit();
+ // Start a new section with type != section so headers in the included page
+ // won't print section edit buttons of the parent page
+ if (defined('SEC_EDIT_PATTERN')) { // for DokuWiki Greebo and more recent versions
+ $renderer->startSectionEdit(0, array('target' => 'plugin_include_end', 'name' => $page, 'hid' => ''));
+ } else {
+ $renderer->startSectionEdit(0, 'plugin_include_end', $page);
+ }
+ if ($secid === NULL) {
+ $id = '';
+ } else {
+ $id = ' id="'.$secid.'"';
+ }
+ $renderer->doc .= '<div class="plugin_include_content plugin_include__' . $page .'"'.$id.'>' . DOKU_LF;
+ if (is_a($renderer,'renderer_plugin_dw2pdf')) {
+ $renderer->doc .= '<a name="'.$secid.'" />';
+ }
+ break;
+ case 'close':
+ $renderer->finishSectionEdit();
+ $renderer->doc .= '</div>' . DOKU_LF;
+ break;
+ }
+ return true;
+ }
+ return false;
+ }
+}
+// vim:ts=4:sw=4:et: