Exemple #1
0
 /**
  * Build link with active definition in listing
  * @param Dom $dom
  * @param array $item
  * @param bool $orderActiveLink
  * @return string
  */
 private static function buildLink($dom, $item, $orderActiveLink = false)
 {
     // set default link data - text and properties
     $text = self::applyEscape($item['text'], $item['html'], $item['!secure']);
     $properties = $item['property'];
     // try to parse link format for controller/action definition (must be array: 'main/index' to ['main/index'])
     if (!Obj::isArray($item['link']) && !Str::startsWith('http', $item['link']) && !Str::startsWith('#', $item['link'])) {
         $item['link'] = [$item['link']];
     }
     // if its a controller/action definition try to work with active class
     if (Obj::isArray($item['link'])) {
         // check if css class for active item is defined
         if (!isset($item['activeClass'])) {
             $item['activeClass'] = 'active';
         }
         // check if element is active on current URI
         if (self::isCurrentLink($item['link'], $item['activeOn'], $orderActiveLink) === true) {
             $properties['class'] = Str::concat(' ', $item['activeClass'], $properties['class']);
         }
     }
     // set href source for link
     $item['linkProperty']['href'] = self::convertLink($item['link']);
     // build output <li@params><a @params>@text</li>
     return $dom->li(function () use($dom, $text, $item) {
         return $dom->a(function () use($text) {
             return $text;
         }, $item['linkProperty']);
     }, $properties);
 }