2011-08-02 05:30:58 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Public facing controller for handling an opensearch interface based on
|
|
|
|
* the standard search form.
|
|
|
|
*
|
2012-04-08 11:23:49 +02:00
|
|
|
* @package docviewer
|
2011-08-02 05:30:58 +02:00
|
|
|
*/
|
|
|
|
|
|
|
|
class DocumentationOpenSearchController extends ContentController {
|
|
|
|
|
|
|
|
static $allowed_actions = array(
|
|
|
|
'description'
|
|
|
|
);
|
|
|
|
|
|
|
|
function index() {
|
|
|
|
return $this->httpError(404);
|
|
|
|
}
|
|
|
|
|
|
|
|
function description() {
|
|
|
|
$viewer = new DocumentationViewer();
|
|
|
|
|
|
|
|
if(!$viewer->canView()) return Security::permissionFailure($this);
|
|
|
|
if(!DocumentationSearch::enabled()) return $this->httpError('404');
|
|
|
|
|
|
|
|
$data = DocumentationSearch::get_meta_data();
|
|
|
|
$link = Director::absoluteBaseUrl() .
|
|
|
|
$data['SearchPageLink'] = Controller::join_links(
|
|
|
|
$viewer->Link(),
|
|
|
|
'results/?Search={searchTerms}&start={startIndex}&length={count}&action_results=1'
|
|
|
|
);
|
|
|
|
|
|
|
|
$data['SearchPageAtom'] = $data['SearchPageLink'] . '&format=atom';
|
|
|
|
|
|
|
|
return $this->customise(
|
|
|
|
new ArrayData($data)
|
|
|
|
)->renderWith(array('OpenSearchDescription'));
|
|
|
|
}
|
|
|
|
}
|