/** * (non-PHPdoc) * @see JSNPowerAdminBarPreviewAdapter::getPreviewLink() */ public function getPreviewLink() { $matchedMap = null; foreach ($this->maps as $map) { $params = array(); parse_str($map['params'], $params); $isMatched = true; foreach ($params as $key => $value) { if (!isset($this->params[$key]) || $this->params[$key] != $value) { $isMatched = false; break; } } if ($isMatched) { $matchedMap = $map; break; } } if ($matchedMap != null) { $link = $matchedMap['link']; $_linkParts = array(); if (preg_match_all('/{@*([^\\}]+)}/i', $link, $_linkParts)) { $found = $_linkParts[0]; $replaced = $_linkParts[1]; foreach ($found as $k => $value) { $link = str_replace($value, @$this->params[$replaced[$k]], $link); } } if (strpos($link, 'option=') === false) { $link = 'option=' . $this->option . '&' . $link; } return sprintf('index.php?%s', $link); } return parent::getPreviewLink(); }
/** * Retrieve preview link based on params. If not match, default link will be returned * @return string */ public function getPreviewLink() { if ($this->adapter == null || !$this->adapter instanceof JSNPowerAdminBarPreviewAdapter) { return JUri::root(); } $preview = $this->adapter->getPreviewLink(); if (strpos($preview, '&Itemid=') === false && strpos($preview, 'option=') !== false) { $dbo = JFactory::getDBO(); $dbo->setQuery(sprintf('SELECT id FROM #__menu WHERE link LIKE "%s" LIMIT 1', $preview)); $itemId = $dbo->loadResult(); if (!is_numeric($itemId)) { $dbo->setQuery(sprintf('SELECT id FROM #__menu WHERE home=1 LIMIT 1', $preview)); $itemId = $dbo->loadResult(); } $preview .= sprintf('&Itemid=%d', $itemId); } return JUri::root() . $preview; }
public function getPreviewLink() { if (!isset($this->params['view']) || !isset($this->params['layout']) || !isset($this->params['id']) || $this->params['view'] != 'item' || $this->params['layout'] != 'edit') { return parent::getPreviewLink(); } $dbo = JFactory::getDBO(); $dbo->setQuery(sprintf('SELECT id, link FROM #__menu WHERE id=%d', $this->params['id'])); $result = $dbo->loadObject(); if (empty($result)) { return parent::getPreviewLink(); } return sprintf('%s&Itemid=%d', $result->link, $result->id); }