/** * (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(); }
/** * Load adapter for detect preview link * @return JSNPowerAdminBarPreviewAdapter */ private function loadAdapter() { $builtInFile = dirname(dirname(__FILE__)) . "/supports/{$this->option}.php"; $builtInXmlFile = dirname(dirname(__FILE__)) . "/supports/{$this->option}.xml"; $xmlFile = JPATH_ADMINISTRATOR . "/components/{$this->option}/preview.xml"; if (is_file($builtInFile)) { require_once $builtInFile; $className = sprintf('JSNPowerAdminBarSupport%s', ucfirst(substr($this->option, strpos($this->option, '_') + 1))); $this->adapter = class_exists($className) ? new $className($this->option, $this->params) : null; } else { require_once dirname(dirname(__FILE__)) . "/supports/base.php"; $this->adapter = new JSNPowerAdminBarSupportBase($this->option, $this->params); if (is_file($builtInXmlFile)) { $this->adapter->parseXml($builtInXmlFile); } elseif (is_file($xmlFile)) { $this->adapter->parseXml($xmlFile); } } }
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); }