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