You've already forked joomla_test
first commit
This commit is contained in:
256
components/com_finder/views/search/view.html.php
Normal file
256
components/com_finder/views/search/view.html.php
Normal file
@ -0,0 +1,256 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Site
|
||||
* @subpackage com_finder
|
||||
*
|
||||
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
|
||||
* @license GNU General Public License version 2 or later; see LICENSE
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die;
|
||||
|
||||
/**
|
||||
* Search HTML view class for the Finder package.
|
||||
*
|
||||
* @package Joomla.Site
|
||||
* @subpackage com_finder
|
||||
* @since 2.5
|
||||
*/
|
||||
class FinderViewSearch extends JViewLegacy
|
||||
{
|
||||
protected $query;
|
||||
|
||||
protected $params;
|
||||
|
||||
protected $state;
|
||||
|
||||
protected $user;
|
||||
|
||||
/**
|
||||
* Method to display the view.
|
||||
*
|
||||
* @param string $tpl A template file to load. [optional]
|
||||
*
|
||||
* @return mixed JError object on failure, void on success.
|
||||
*
|
||||
* @since 2.5
|
||||
*/
|
||||
public function display($tpl = null)
|
||||
{
|
||||
$app = JFactory::getApplication();
|
||||
$params = $app->getParams();
|
||||
|
||||
// Get view data.
|
||||
$state = $this->get('State');
|
||||
$query = $this->get('Query');
|
||||
JDEBUG ? $GLOBALS['_PROFILER']->mark('afterFinderQuery') : null;
|
||||
$results = $this->get('Results');
|
||||
JDEBUG ? $GLOBALS['_PROFILER']->mark('afterFinderResults') : null;
|
||||
$total = $this->get('Total');
|
||||
JDEBUG ? $GLOBALS['_PROFILER']->mark('afterFinderTotal') : null;
|
||||
$pagination = $this->get('Pagination');
|
||||
JDEBUG ? $GLOBALS['_PROFILER']->mark('afterFinderPagination') : null;
|
||||
|
||||
// Check for errors.
|
||||
if (count($errors = $this->get('Errors')))
|
||||
{
|
||||
JError::raiseError(500, implode("\n", $errors));
|
||||
return false;
|
||||
}
|
||||
|
||||
// Configure the pathway.
|
||||
if (!empty($query->input))
|
||||
{
|
||||
$app->getPathWay()->addItem($this->escape($query->input));
|
||||
}
|
||||
|
||||
// Push out the view data.
|
||||
$this->state = &$state;
|
||||
$this->params = &$params;
|
||||
$this->query = &$query;
|
||||
$this->results = &$results;
|
||||
$this->total = &$total;
|
||||
$this->pagination = &$pagination;
|
||||
|
||||
// Check for a double quote in the query string.
|
||||
if (strpos($this->query->input, '"'))
|
||||
{
|
||||
// Get the application router.
|
||||
$router =& $app->getRouter();
|
||||
|
||||
// Fix the q variable in the URL.
|
||||
if ($router->getVar('q') !== $this->query->input)
|
||||
{
|
||||
$router->setVar('q', $this->query->input);
|
||||
}
|
||||
}
|
||||
|
||||
// Log the search
|
||||
JSearchHelper::logSearch($this->query->input, 'com_finder');
|
||||
|
||||
// Push out the query data.
|
||||
JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
|
||||
$this->suggested = JHtml::_('query.suggested', $query);
|
||||
$this->explained = JHtml::_('query.explained', $query);
|
||||
|
||||
// Escape strings for HTML output
|
||||
$this->pageclass_sfx = htmlspecialchars($params->get('pageclass_sfx'));
|
||||
|
||||
// Check for layout override only if this is not the active menu item
|
||||
// If it is the active menu item, then the view and category id will match
|
||||
$active = $app->getMenu()->getActive();
|
||||
if (isset($active->query['layout']))
|
||||
{
|
||||
// We need to set the layout in case this is an alternative menu item (with an alternative layout)
|
||||
$this->setLayout($active->query['layout']);
|
||||
}
|
||||
|
||||
$this->prepareDocument($query);
|
||||
|
||||
JDEBUG ? $GLOBALS['_PROFILER']->mark('beforeFinderLayout') : null;
|
||||
|
||||
parent::display($tpl);
|
||||
|
||||
JDEBUG ? $GLOBALS['_PROFILER']->mark('afterFinderLayout') : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to get hidden input fields for a get form so that control variables
|
||||
* are not lost upon form submission
|
||||
*
|
||||
* @return string A string of hidden input form fields
|
||||
*
|
||||
* @since 2.5
|
||||
*/
|
||||
protected function getFields()
|
||||
{
|
||||
$fields = null;
|
||||
|
||||
// Get the URI.
|
||||
$uri = JUri::getInstance(JRoute::_($this->query->toURI()));
|
||||
$uri->delVar('q');
|
||||
$uri->delVar('o');
|
||||
$uri->delVar('t');
|
||||
$uri->delVar('d1');
|
||||
$uri->delVar('d2');
|
||||
$uri->delVar('w1');
|
||||
$uri->delVar('w2');
|
||||
$elements = $uri->getQuery(true);
|
||||
|
||||
// Create hidden input elements for each part of the URI.
|
||||
foreach ($elements as $n => $v)
|
||||
{
|
||||
if (is_scalar($v))
|
||||
{
|
||||
$fields .= '<input type="hidden" name="' . $n . '" value="' . $v . '" />';
|
||||
}
|
||||
}
|
||||
|
||||
return $fields;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to get the layout file for a search result object.
|
||||
*
|
||||
* @param string $layout The layout file to check. [optional]
|
||||
*
|
||||
* @return string The layout file to use.
|
||||
*
|
||||
* @since 2.5
|
||||
*/
|
||||
protected function getLayoutFile($layout = null)
|
||||
{
|
||||
// Create and sanitize the file name.
|
||||
$file = $this->_layout . '_' . preg_replace('/[^A-Z0-9_\.-]/i', '', $layout);
|
||||
|
||||
// Check if the file exists.
|
||||
jimport('joomla.filesystem.path');
|
||||
$filetofind = $this->_createFileName('template', array('name' => $file));
|
||||
$exists = JPath::find($this->_path['template'], $filetofind);
|
||||
|
||||
return ($exists ? $layout : 'result');
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepares the document
|
||||
*
|
||||
* @param FinderIndexerQuery $query The search query
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @since 2.5
|
||||
*/
|
||||
protected function prepareDocument($query)
|
||||
{
|
||||
$app = JFactory::getApplication();
|
||||
$menus = $app->getMenu();
|
||||
$title = null;
|
||||
|
||||
// Because the application sets a default page title,
|
||||
// we need to get it from the menu item itself
|
||||
$menu = $menus->getActive();
|
||||
|
||||
if ($menu)
|
||||
{
|
||||
$this->params->def('page_heading', $this->params->get('page_title', $menu->title));
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->params->def('page_heading', JText::_('COM_FINDER_DEFAULT_PAGE_TITLE'));
|
||||
}
|
||||
|
||||
$title = $this->params->get('page_title', '');
|
||||
|
||||
if (empty($title))
|
||||
{
|
||||
$title = $app->getCfg('sitename');
|
||||
}
|
||||
elseif ($app->getCfg('sitename_pagetitles', 0) == 1)
|
||||
{
|
||||
$title = JText::sprintf('JPAGETITLE', $app->getCfg('sitename'), $title);
|
||||
}
|
||||
elseif ($app->getCfg('sitename_pagetitles', 0) == 2)
|
||||
{
|
||||
$title = JText::sprintf('JPAGETITLE', $title, $app->getCfg('sitename'));
|
||||
}
|
||||
|
||||
$this->document->setTitle($title);
|
||||
|
||||
if ($layout = $this->params->get('article_layout'))
|
||||
{
|
||||
$this->setLayout($layout);
|
||||
}
|
||||
|
||||
// Configure the document meta-description.
|
||||
if (!empty($this->explained))
|
||||
{
|
||||
$explained = $this->escape(html_entity_decode(strip_tags($this->explained), ENT_QUOTES, 'UTF-8'));
|
||||
$this->document->setDescription($explained);
|
||||
}
|
||||
|
||||
// Configure the document meta-keywords.
|
||||
if (!empty($query->highlight))
|
||||
{
|
||||
$this->document->setMetadata('keywords', implode(', ', $query->highlight));
|
||||
}
|
||||
|
||||
if ($this->params->get('robots'))
|
||||
{
|
||||
$this->document->setMetadata('robots', $this->params->get('robots'));
|
||||
}
|
||||
|
||||
// Add feed link to the document head.
|
||||
if ($this->params->get('show_feed_link', 1) == 1)
|
||||
{
|
||||
// Add the RSS link.
|
||||
$props = array('type' => 'application/rss+xml', 'title' => 'RSS 2.0');
|
||||
$route = JRoute::_($this->query->toURI() . '&format=feed&type=rss');
|
||||
$this->document->addHeadLink($route, 'alternate', 'rel', $props);
|
||||
|
||||
// Add the ATOM link.
|
||||
$props = array('type' => 'application/atom+xml', 'title' => 'Atom 1.0');
|
||||
$route = JRoute::_($this->query->toURI() . '&format=feed&type=atom');
|
||||
$this->document->addHeadLink($route, 'alternate', 'rel', $props);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user