<NME> ContentControllerSearchExtension.php
<BEF> ADDFILE
<MSG> Minor Moved ContentControllerSearchExtension from sapphire/search/ to cms module

<DFF> @@ -0,0 +1,50 @@
+<?php
+/**
+ * Extension to provide a search interface when applied to ContentController
+ *
+ * @package cms
+ * @subpackage search
+ */
+class ContentControllerSearchExtension extends Extension {
+	static $allowed_actions = array(
+		'SearchForm',
+		'results',
+	);
+
+	/**
+	 * Site search form
+	 */
+	function SearchForm() {
+		$searchText =  _t('SearchForm.SEARCH', 'Search');
+
+		if($this->owner->request && $this->owner->request->getVar('Search')) {
+			$searchText = $this->owner->request->getVar('Search');
+		}
+
+		$fields = new FieldSet(
+			new TextField('Search', false, $searchText)
+		);
+		$actions = new FieldSet(
+			new FormAction('results', _t('SearchForm.GO', 'Go'))
+		);
+		$form = new SearchForm($this->owner, 'SearchForm', $fields, $actions);
+		$form->classesToSearch(FulltextSearchable::get_searchable_classes());
+		return $form;
+	}
+
+	/**
+	 * Process and render search results.
+	 *
+	 * @param array $data The raw request data submitted by user
+	 * @param SearchForm $form The form instance that was submitted
+	 * @param SS_HTTPRequest $request Request generated for this action
+	 */
+	function results($data, $form, $request) {
+		$data = array(
+			'Results' => $form->getResults(),
+			'Query' => $form->getSearchQuery(),
+			'Title' => _t('SearchForm.SearchResults', 'Search Results')
+		);
+		return $this->owner->customise($data)->renderWith(array('Page_results', 'Page'));
+	}
+}
\ No newline at end of file

{'addition_count': 50, 'commit_subject': 'Minor Moved ContentControllerSearchExtension from sapphire/search/ to cms module', 'deletion_count': 0, 'file_extension': '.php', 'lang': 'php', 'license': 'bsd-3-clause', 'repo_name': 'silverstripe/silverstripe-cms'}