1<?php 2/* Copyright (c) 1998-2012 ILIAS open source, Extended GPL, see docs/LICENSE */ 3 4require_once "Services/UIComponent/Button/classes/class.ilButtonBase.php"; 5 6/** 7 * Link Button GUI 8 * 9 * @author Jörg Lützenkirchen <luetzenkirchen@leifos.com> 10 * @version $Id: class.ilTabsGUI.php 45109 2013-09-30 15:46:28Z akill $ 11 * @package ServicesUIComponent 12 */ 13class ilLinkButton extends ilButtonBase 14{ 15 protected $url; // [string] 16 protected $target; // [string] 17 18 public static function getInstance() 19 { 20 return new self(self::TYPE_LINK); 21 } 22 23 24 // 25 // properties 26 // 27 28 /** 29 * Set URL 30 * 31 * @param string $a_value 32 */ 33 public function setUrl($a_value) 34 { 35 $this->url = trim($a_value); 36 } 37 38 /** 39 * Get URL 40 * 41 * @return string 42 */ 43 public function getUrl() 44 { 45 return $this->url; 46 } 47 48 /** 49 * Set target 50 * 51 * @param string $a_value 52 */ 53 public function setTarget($a_value) 54 { 55 $this->target = trim($a_value); 56 } 57 58 /** 59 * Get target 60 * 61 * @return string 62 */ 63 public function getTarget() 64 { 65 return $this->target; 66 } 67 68 69 // 70 // render 71 // 72 73 /** 74 * Prepare caption for render 75 * 76 * @return string 77 */ 78 protected function renderCaption() 79 { 80 return ' ' . $this->getCaption() . ' '; 81 } 82 83 /** 84 * @inheritdoc 85 */ 86 protected function renderAttributes(array $a_additional_attr = null) 87 { 88 if ('_blank' === $this->getTarget()) { 89 $relAttrVal = 'noopener'; 90 91 if (isset($a_additional_attr['rel'])) { 92 if (strpos($a_additional_attr['rel'], $relAttrVal) === false) { 93 $a_additional_attr['rel'] .= ' ' . $relAttrVal; 94 } 95 } else { 96 $a_additional_attr['rel'] = $relAttrVal; 97 } 98 } 99 100 return parent::renderAttributes($a_additional_attr); 101 } 102 103 public function render() 104 { 105 $this->prepareRender(); 106 107 $attr = array(); 108 $attr["href"] = $this->getUrl() ? $this->getUrl() : "#"; 109 $attr["target"] = $this->getTarget(); 110 111 return '<a' . $this->renderAttributes($attr) . '>' . 112 $this->renderCaption() . '</a>'; 113 } 114} 115