xref: /template/sprintdoc/tpl.php (revision 02dbc7fa4935709eecf8ca9b08d45813197baec1)
1*02dbc7faSSilke Pisulla<?php
2*02dbc7faSSilke Pisulla
3*02dbc7faSSilke Pisullanamespace dokuwiki\template\sprintdoc;
4*02dbc7faSSilke Pisulla
5*02dbc7faSSilke Pisulla/**
6*02dbc7faSSilke Pisulla * Class tpl
7*02dbc7faSSilke Pisulla *
8*02dbc7faSSilke Pisulla * Provides additional template functions for the dokuwiki template
9*02dbc7faSSilke Pisulla * @package dokuwiki\tpl\dokuwiki
10*02dbc7faSSilke Pisulla */
11*02dbc7faSSilke Pisulla
12*02dbc7faSSilke Pisullaclass tpl {
13*02dbc7faSSilke Pisulla  static $icons = array(
14*02dbc7faSSilke Pisulla              'default' => '00-default_checkbox-blank-circle-outline.svg',
15*02dbc7faSSilke Pisulla              'edit' => '01-edit_pencil.svg',
16*02dbc7faSSilke Pisulla              'create' => '02-create_pencil.svg',
17*02dbc7faSSilke Pisulla              'draft' => '03-draft_android-studio.svg',
18*02dbc7faSSilke Pisulla              'show' => '04-show_file-document.svg',
19*02dbc7faSSilke Pisulla              'source' => '05-source_file-xml.svg',
20*02dbc7faSSilke Pisulla              'revert' => '06-revert_replay.svg',
21*02dbc7faSSilke Pisulla              'revs' => '07-revisions_history.svg',
22*02dbc7faSSilke Pisulla              'backlink' => '08-backlink_link-variant.svg',
23*02dbc7faSSilke Pisulla              'subscribe' => '09-subscribe_email-outline.svg',
24*02dbc7faSSilke Pisulla              'top' => '10-top_arrow-up.svg',
25*02dbc7faSSilke Pisulla              'mediaManager' => '11-mediamanager_folder-image.svg',
26*02dbc7faSSilke Pisulla              'img_backto' => '12-back_arrow-left.svg',
27*02dbc7faSSilke Pisulla          );
28*02dbc7faSSilke Pisulla
29*02dbc7faSSilke Pisulla/**
30*02dbc7faSSilke Pisulla   * Return the HTML for one of the default actions
31*02dbc7faSSilke Pisulla   *
32*02dbc7faSSilke Pisulla   * Reimplements parts of tpl_actionlink
33*02dbc7faSSilke Pisulla   *
34*02dbc7faSSilke Pisulla   * @param string $action
35*02dbc7faSSilke Pisulla   * @return string
36*02dbc7faSSilke Pisulla   */
37*02dbc7faSSilke Pisulla  static public function pageToolAction($action) {
38*02dbc7faSSilke Pisulla              $data = tpl_get_action($action);
39*02dbc7faSSilke Pisulla              if(!is_array($data)) return '';
40*02dbc7faSSilke Pisulla      global $lang;
41*02dbc7faSSilke Pisulla
42*02dbc7faSSilke Pisulla      if($data['id'][0] == '#') {
43*02dbc7faSSilke Pisulla                      $linktarget = $data['id'];
44*02dbc7faSSilke Pisulla                  } else {
45*02dbc7faSSilke Pisulla                      $linktarget = wl($data['id'], $data['params']);
46*02dbc7faSSilke Pisulla                  }
47*02dbc7faSSilke Pisulla      $caption = $lang['btn_' . $data['type']];
48*02dbc7faSSilke Pisulla      if(strpos($caption, '%s')) {
49*02dbc7faSSilke Pisulla                      $caption = sprintf($caption, $data['replacement']);
50*02dbc7faSSilke Pisulla                  }
51*02dbc7faSSilke Pisulla
52*02dbc7faSSilke Pisulla      $svg = __DIR__ . '/images/tools/' . self::$icons[$data['type']];
53*02dbc7faSSilke Pisulla
54*02dbc7faSSilke Pisulla      return self::pageToolItem(
55*02dbc7faSSilke Pisulla                      $linktarget,
56*02dbc7faSSilke Pisulla                      $caption,
57*02dbc7faSSilke Pisulla                      $svg,
58*02dbc7faSSilke Pisulla          array('accesskey' => $data['accesskey'])
59*02dbc7faSSilke Pisulla              );
60*02dbc7faSSilke Pisulla  }
61*02dbc7faSSilke Pisulla
62*02dbc7faSSilke Pisulla/**
63*02dbc7faSSilke Pisulla   * Return the HTML for a page action
64*02dbc7faSSilke Pisulla   *
65*02dbc7faSSilke Pisulla   * Plugins may use this in TEMPLATE_PAGETOOLS_DISPLAY
66*02dbc7faSSilke Pisulla   *
67*02dbc7faSSilke Pisulla   * @param string $link The link
68*02dbc7faSSilke Pisulla   * @param string $caption The label of the action
69*02dbc7faSSilke Pisulla   * @param string $svg The icon to show
70*02dbc7faSSilke Pisulla   * @param string[] $args HTML attributes for the item
71*02dbc7faSSilke Pisulla   * @return string
72*02dbc7faSSilke Pisulla   */
73*02dbc7faSSilke Pisulla  static public function pageToolItem($link, $caption, $svg, $args = array()) {
74*02dbc7faSSilke Pisulla              if(blank($args['title'])) {
75*02dbc7faSSilke Pisulla                      $args['title'] = $caption;
76*02dbc7faSSilke Pisulla                  }
77*02dbc7faSSilke Pisulla
78*02dbc7faSSilke Pisulla      if(!blank($args['accesskey'])) {
79*02dbc7faSSilke Pisulla                      $args['title'] .= ' [' . strtoupper($args['accesskey']) . ']';
80*02dbc7faSSilke Pisulla                  }
81*02dbc7faSSilke Pisulla
82*02dbc7faSSilke Pisulla      if(blank($args['rel'])) {
83*02dbc7faSSilke Pisulla                      $args['rel'] = 'nofollow';
84*02dbc7faSSilke Pisulla                  }
85*02dbc7faSSilke Pisulla
86*02dbc7faSSilke Pisulla      $args['href'] = $link;
87*02dbc7faSSilke Pisulla
88*02dbc7faSSilke Pisulla      $svg = inlineSVG($svg);
89*02dbc7faSSilke Pisulla      if(!$svg) $svg = inlineSVG(__DIR__ . '/images/tools/' . self::$icons['default']);
90*02dbc7faSSilke Pisulla
91*02dbc7faSSilke Pisulla      $attributes = buildAttributes($args, true);
92*02dbc7faSSilke Pisulla
93*02dbc7faSSilke Pisulla      $out = "<a $attributes>";
94*02dbc7faSSilke Pisulla      $out .= '<span>' . hsc($caption) . '</span>';
95*02dbc7faSSilke Pisulla      $out .= $svg;
96*02dbc7faSSilke Pisulla      $out .= '</a>';
97*02dbc7faSSilke Pisulla
98*02dbc7faSSilke Pisulla      return $out;
99*02dbc7faSSilke Pisulla  }
100*02dbc7faSSilke Pisulla}
101