summaryrefslogtreecommitdiff
path: root/platform/www/inc/Menu/Item/Edit.php
diff options
context:
space:
mode:
Diffstat (limited to 'platform/www/inc/Menu/Item/Edit.php')
-rw-r--r--platform/www/inc/Menu/Item/Edit.php65
1 files changed, 65 insertions, 0 deletions
diff --git a/platform/www/inc/Menu/Item/Edit.php b/platform/www/inc/Menu/Item/Edit.php
new file mode 100644
index 0000000..15d9543
--- /dev/null
+++ b/platform/www/inc/Menu/Item/Edit.php
@@ -0,0 +1,65 @@
+<?php
+
+namespace dokuwiki\Menu\Item;
+
+/**
+ * Class Edit
+ *
+ * Most complex item. Shows the edit button but mutates to show, draft and create based on
+ * current state.
+ */
+class Edit extends AbstractItem {
+
+ /** @inheritdoc */
+ public function __construct() {
+ global $ACT;
+ global $INFO;
+ global $REV;
+
+ parent::__construct();
+
+ if($ACT === 'show') {
+ $this->method = 'post';
+ if($INFO['writable']) {
+ $this->accesskey = 'e';
+ if(!empty($INFO['draft'])) {
+ $this->type = 'draft';
+ $this->params['do'] = 'draft';
+ } else {
+ $this->params['rev'] = $REV;
+ if(!$INFO['exists']) {
+ $this->type = 'create';
+ }
+ }
+ } else {
+ if(!actionOK("source")) throw new \RuntimeException("action disabled: source");
+ $params['rev'] = $REV;
+ $this->type = 'source';
+ $this->accesskey = 'v';
+ }
+ } else {
+ $this->params = array('do' => '');
+ $this->type = 'show';
+ $this->accesskey = 'v';
+ }
+
+ $this->setIcon();
+ }
+
+ /**
+ * change the icon according to what type the edit button has
+ */
+ protected function setIcon() {
+ $icons = array(
+ 'edit' => '01-edit_pencil.svg',
+ 'create' => '02-create_pencil.svg',
+ 'draft' => '03-draft_android-studio.svg',
+ 'show' => '04-show_file-document.svg',
+ 'source' => '05-source_file-xml.svg',
+ );
+ if(isset($icons[$this->type])) {
+ $this->svg = DOKU_INC . 'lib/images/menu/' . $icons[$this->type];
+ }
+ }
+
+}