Пример #1
0
 /**
  * Format a table cell for table() method.
  *
  * @param  array    $cellData
  * @param  string   $type
  * @return string
  */
 public function createElement($element, $item)
 {
     $html = '';
     if (isset($element['ignore']) && $element['ignore']) {
         return $html;
     }
     if (isset($element['conditions']) && is_array($element['conditions'])) {
         $valid = $this->testAttributeConditions($item, $element['conditions']);
         if (!$valid) {
             return $html;
         }
     }
     $class = isset($element['class']) ? $element['class'] : '';
     if (isset($element['classModifiers'])) {
         foreach ($element['classModifiers'] as $potentialClass => $values) {
             $valid = $this->testAttributeConditions($item, $values);
             if ($valid) {
                 if ($class != '') {
                     $class .= ' ';
                 }
                 $class .= $potentialClass;
             }
         }
         if ($class != '') {
             $element['class'] = $class;
         }
     }
     if (!isset($element['tag']) || $element['tag'] == "") {
         $element['tag'] = "a";
     }
     if (!isset($element['attributes'])) {
         $element['attributes'] = [];
     }
     if (isset($element['class'])) {
         $element['attributes']['class'] = $element['class'];
     }
     if (isset($element['selfClosing']) && $element['selfClosing']) {
         $selfClosing = true;
     } else {
         $selfClosing = false;
     }
     if (isset($element['url']) && !isset($element['href'])) {
         $element['href'] = $element['url'];
     }
     if ($element['tag'] == "a") {
         $element['attributes']['href'] = "";
         if (isset($element['uri'])) {
             $element['attributes']['href'] = url($element['uri']);
         } else {
             if (isset($element['href']) && $element['href'] != "") {
                 $element['attributes']['href'] = $element['href'];
             }
         }
     }
     if (isset($element['attributes']) && isset($element['attributes']['href']) && class_exists('Regulus\\Identify\\Facade')) {
         $accessVerb = "get";
         if (isset($element['attributes']['data-action-type'])) {
             $accessVerb = $element['attributes']['data-action-type'];
         }
         $accessible = \Regulus\Identify\Facade::hasAccess($element['attributes']['href'], $accessVerb);
         if (!$accessible) {
             return $html;
         }
     }
     // add data to attributes where necessary
     foreach ($element['attributes'] as $attribute => $value) {
         if (preg_match("/\\:([a-zA-Z\\_].*)/", $value, $match)) {
             $segments = explode('/', $match[1]);
             $segments[0] = isset($item[$segments[0]]) ? $item[$segments[0]] : '';
             $element['attributes'][$attribute] = str_replace($match[0], implode('/', $segments), $element['attributes'][$attribute]);
         }
     }
     $html .= '<' . $element['tag'] . $this->attributes($element['attributes']);
     if (!$selfClosing) {
         $html .= '>';
     }
     if (isset($element['icon']) && $element['icon'] != "") {
         $iconElement = config('html.icon.element');
         $iconClassPrefix = config('html.icon.class_prefix');
         $html .= '<' . $iconElement . ' class="' . $iconClassPrefix . trim($element['icon']) . '"></' . $iconElement . '>';
     }
     if (isset($element['text']) && $element['text'] != "") {
         if (preg_match("/\\:([a-zA-Z\\_].*)/", $value, $match)) {
             $segments = explode('/', $match[1]);
             $segments[0] = isset($item[$segments[0]]) ? $item[$segments[0]] : '';
             $element['text'] = str_replace($match[0], implode('/', $segments), $element['text']);
         }
         $html .= $element['text'];
     }
     if ($selfClosing) {
         $html .= ' />';
     } else {
         $html .= '</' . $element['tag'] . '>';
     }
     return $html;
 }