diff --git a/components/com_fabrik/layouts/element/fabrik-element-custom-icon-link.php b/components/com_fabrik/layouts/element/fabrik-element-custom-icon-link.php new file mode 100644 index 00000000000..5e69fda4274 --- /dev/null +++ b/components/com_fabrik/layouts/element/fabrik-element-custom-icon-link.php @@ -0,0 +1,32 @@ + +target !== '') : ?> + target="target; ?>" + + opts='opts; ?>' + title="title; ?>" + data-trigger="hover" +> +data; ?> + diff --git a/components/com_fabrik/models/list.php b/components/com_fabrik/models/list.php index 2c8a775d6e5..c6d8862ad1e 100644 --- a/components/com_fabrik/models/list.php +++ b/components/com_fabrik/models/list.php @@ -2320,12 +2320,23 @@ public function _addLink($data, &$elementModel, $row, $repeatCounter = 0) $rowId = $this->getSlug($row); $isAjax = $this->isAjaxLinks() ? '1' : '0'; $isCustom = $customLink !== ''; + $isIcon = FALSE; + + /* Check if the data component is html, if it is an icon lnk and image parse it out */ + if (class_exists('DOMDocument')) { + $html = new DOMDocument; + $html->loadHTML($data); + $a = $html->getElementsByTagName('a')->item(0); + $img = $html->getElementsByTagName('img')->item(0); + if (isset($html) && isset($a) && isset($img)) + $isIcon = TRUE; + } $paths = array( COM_FABRIK_FRONTEND . '/views/list/tmpl/' . $this->getTmpl() . '/layouts/element/' . $elementModel->getFullName(true, false) ); - $layout = $this->getLayout('element.fabrik-element-custom-link', $paths); + $layout = $isIcon ? $this->getLayout('element.fabrik-element-custom-icon-link', $paths) : $this->getLayout('element.fabrik-element-custom-link', $paths); $displayData = new stdClass; $displayData->loadMethod = $loadMethod; $displayData->dataList = $dataList; @@ -2335,8 +2346,16 @@ public function _addLink($data, &$elementModel, $row, $repeatCounter = 0) $displayData->class = $class; $displayData->link = $link; $displayData->rowId = $rowId; - $displayData->data = $data; $displayData->target = $target; + + if ($isIcon) { + $displayData->data_original = $a->nodeValue; + $displayData->opts = $a->getAttribute('opts'); + $displayData->data = $a->ownerDocument->saveHTML($img); + $displayData->title = $a->getAttribute('title'); + } else { + $displayData->data = $data; + } $data = $layout->render($displayData); return $data;