mirror of
https://github.com/silverstripe/silverstripe-docsviewer
synced 2024-10-22 11:05:56 +02:00
51 lines
1.2 KiB
PHP
51 lines
1.2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Public facing controller for handling an opensearch interface based on
|
|
* the standard search form.
|
|
*
|
|
* @package docsviewer
|
|
*/
|
|
|
|
class DocumentationOpenSearchController extends Controller
|
|
{
|
|
private static $allowed_actions = array(
|
|
'description'
|
|
);
|
|
|
|
public function index()
|
|
{
|
|
return $this->httpError(404);
|
|
}
|
|
|
|
public function description()
|
|
{
|
|
$viewer = new DocumentationViewer();
|
|
|
|
if (!$viewer->canView()) {
|
|
return Security::permissionFailure($this);
|
|
}
|
|
|
|
if (!Config::inst()->get('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'
|
|
)
|
|
);
|
|
}
|
|
}
|