102dbc7faSSilke Pisulla<?php 202dbc7faSSilke Pisulla 302dbc7faSSilke Pisullanamespace dokuwiki\template\sprintdoc; 402dbc7faSSilke Pisulla 502dbc7faSSilke Pisulla/** 602dbc7faSSilke Pisulla * Class tpl 702dbc7faSSilke Pisulla * 802dbc7faSSilke Pisulla * Provides additional template functions for the dokuwiki template 902dbc7faSSilke Pisulla * @package dokuwiki\tpl\dokuwiki 1002dbc7faSSilke Pisulla */ 1102dbc7faSSilke Pisulla 1202dbc7faSSilke Pisullaclass tpl { 1302dbc7faSSilke Pisulla static $icons = array( 1402dbc7faSSilke Pisulla 'default' => '00-default_checkbox-blank-circle-outline.svg', 1502dbc7faSSilke Pisulla 'edit' => '01-edit_pencil.svg', 1602dbc7faSSilke Pisulla 'create' => '02-create_pencil.svg', 1702dbc7faSSilke Pisulla 'draft' => '03-draft_android-studio.svg', 1802dbc7faSSilke Pisulla 'show' => '04-show_file-document.svg', 1902dbc7faSSilke Pisulla 'source' => '05-source_file-xml.svg', 2002dbc7faSSilke Pisulla 'revert' => '06-revert_replay.svg', 2102dbc7faSSilke Pisulla 'revs' => '07-revisions_history.svg', 2202dbc7faSSilke Pisulla 'backlink' => '08-backlink_link-variant.svg', 2302dbc7faSSilke Pisulla 'subscribe' => '09-subscribe_email-outline.svg', 2402dbc7faSSilke Pisulla 'top' => '10-top_arrow-up.svg', 2502dbc7faSSilke Pisulla 'mediaManager' => '11-mediamanager_folder-image.svg', 2602dbc7faSSilke Pisulla 'img_backto' => '12-back_arrow-left.svg', 2702dbc7faSSilke Pisulla ); 2802dbc7faSSilke Pisulla 2902dbc7faSSilke Pisulla/** 3002dbc7faSSilke Pisulla * Return the HTML for one of the default actions 3102dbc7faSSilke Pisulla * 3202dbc7faSSilke Pisulla * Reimplements parts of tpl_actionlink 3302dbc7faSSilke Pisulla * 3402dbc7faSSilke Pisulla * @param string $action 3502dbc7faSSilke Pisulla * @return string 3602dbc7faSSilke Pisulla */ 3702dbc7faSSilke Pisulla static public function pageToolAction($action) { 3802dbc7faSSilke Pisulla $data = tpl_get_action($action); 3902dbc7faSSilke Pisulla if(!is_array($data)) return ''; 4002dbc7faSSilke Pisulla global $lang; 4102dbc7faSSilke Pisulla 4202dbc7faSSilke Pisulla if($data['id'][0] == '#') { 4302dbc7faSSilke Pisulla $linktarget = $data['id']; 4402dbc7faSSilke Pisulla } else { 45*7910e1c9SSilke Pisulla $linktarget = wl($data['id'], $data['params'], false, '&'); 4602dbc7faSSilke Pisulla } 4702dbc7faSSilke Pisulla $caption = $lang['btn_' . $data['type']]; 4802dbc7faSSilke Pisulla if(strpos($caption, '%s')) { 4902dbc7faSSilke Pisulla $caption = sprintf($caption, $data['replacement']); 5002dbc7faSSilke Pisulla } 5102dbc7faSSilke Pisulla 5202dbc7faSSilke Pisulla $svg = __DIR__ . '/images/tools/' . self::$icons[$data['type']]; 5302dbc7faSSilke Pisulla 5402dbc7faSSilke Pisulla return self::pageToolItem( 5502dbc7faSSilke Pisulla $linktarget, 5602dbc7faSSilke Pisulla $caption, 5702dbc7faSSilke Pisulla $svg, 5802dbc7faSSilke Pisulla array('accesskey' => $data['accesskey']) 5902dbc7faSSilke Pisulla ); 6002dbc7faSSilke Pisulla } 6102dbc7faSSilke Pisulla 6202dbc7faSSilke Pisulla/** 6302dbc7faSSilke Pisulla * Return the HTML for a page action 6402dbc7faSSilke Pisulla * 6502dbc7faSSilke Pisulla * Plugins may use this in TEMPLATE_PAGETOOLS_DISPLAY 6602dbc7faSSilke Pisulla * 6702dbc7faSSilke Pisulla * @param string $link The link 6802dbc7faSSilke Pisulla * @param string $caption The label of the action 6902dbc7faSSilke Pisulla * @param string $svg The icon to show 7002dbc7faSSilke Pisulla * @param string[] $args HTML attributes for the item 7102dbc7faSSilke Pisulla * @return string 7202dbc7faSSilke Pisulla */ 7302dbc7faSSilke Pisulla static public function pageToolItem($link, $caption, $svg, $args = array()) { 7402dbc7faSSilke Pisulla if(blank($args['title'])) { 7502dbc7faSSilke Pisulla $args['title'] = $caption; 7602dbc7faSSilke Pisulla } 7702dbc7faSSilke Pisulla 7802dbc7faSSilke Pisulla if(!blank($args['accesskey'])) { 7902dbc7faSSilke Pisulla $args['title'] .= ' [' . strtoupper($args['accesskey']) . ']'; 8002dbc7faSSilke Pisulla } 8102dbc7faSSilke Pisulla 8202dbc7faSSilke Pisulla if(blank($args['rel'])) { 8302dbc7faSSilke Pisulla $args['rel'] = 'nofollow'; 8402dbc7faSSilke Pisulla } 8502dbc7faSSilke Pisulla 8602dbc7faSSilke Pisulla $args['href'] = $link; 8702dbc7faSSilke Pisulla 8802dbc7faSSilke Pisulla $svg = inlineSVG($svg); 8902dbc7faSSilke Pisulla if(!$svg) $svg = inlineSVG(__DIR__ . '/images/tools/' . self::$icons['default']); 9002dbc7faSSilke Pisulla 9102dbc7faSSilke Pisulla $attributes = buildAttributes($args, true); 9202dbc7faSSilke Pisulla 9302dbc7faSSilke Pisulla $out = "<a $attributes>"; 9402dbc7faSSilke Pisulla $out .= '<span>' . hsc($caption) . '</span>'; 9502dbc7faSSilke Pisulla $out .= $svg; 9602dbc7faSSilke Pisulla $out .= '</a>'; 9702dbc7faSSilke Pisulla 9802dbc7faSSilke Pisulla return $out; 9902dbc7faSSilke Pisulla } 10002dbc7faSSilke Pisulla} 101