/** * 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; }