diff --git a/.upgrade.yml b/.upgrade.yml index d94391e..365a37d 100644 --- a/.upgrade.yml +++ b/.upgrade.yml @@ -2,7 +2,6 @@ mappings: SpellProvider: SilverStripe\SpellCheck\Data\SpellProvider SpellController: SilverStripe\SpellCheck\Handling\SpellController SpellException: SilverStripe\SpellCheck\Handling\SpellException - SpellRequestFilter: SilverStripe\SpellCheck\Handling\SpellRequestFilter HunSpellProvider: SilverStripe\SpellCheck\Providers\HunSpellProvider HunSpellProviderTest: SilverStripe\SpellCheck\Tests\HunSpellProviderTest SpellControllerTest: SilverStripe\SpellCheck\Tests\SpellControllerTest diff --git a/_config/config.yml b/_config/config.yml index 990ef73..f6e425d 100644 --- a/_config/config.yml +++ b/_config/config.yml @@ -17,7 +17,7 @@ SilverStripe\Core\Injector\Injector: Name: spellcheckprocessors --- SilverStripe\Core\Injector\Injector: - SilverStripe\Control\RequestProcessor: + SilverStripe\Control\Director: properties: - filters: - - '%$SilverStripe\SpellCheck\Handling\SpellRequestFilter' + Middlewares: + SpellCheckMiddleware: '%$SilverStripe\SpellCheck\Handling\SpellCheckMiddleware' diff --git a/src/Handling/SpellRequestFilter.php b/src/Handling/SpellCheckMiddleware.php similarity index 60% rename from src/Handling/SpellRequestFilter.php rename to src/Handling/SpellCheckMiddleware.php index 43f4ee1..48b1c20 100644 --- a/src/Handling/SpellRequestFilter.php +++ b/src/Handling/SpellCheckMiddleware.php @@ -3,15 +3,16 @@ namespace SilverStripe\SpellCheck\Handling; use SilverStripe\Control\HTTPRequest; -use SilverStripe\Control\HTTPResponse; -use SilverStripe\Control\RequestFilter; -use SilverStripe\Core\Config\Config; +use SilverStripe\Control\Middleware\HTTPMiddleware; +use SilverStripe\Core\Config\Configurable; use SilverStripe\Forms\HTMLEditor\HTMLEditorConfig; use SilverStripe\i18n\i18n; use SilverStripe\Security\SecurityToken; -class SpellRequestFilter implements RequestFilter +class SpellCheckMiddleware implements HTTPMiddleware { + use Configurable; + /** * HTMLEditorConfig name to use * @@ -20,28 +21,34 @@ class SpellRequestFilter implements RequestFilter */ private static $editor = 'cms'; - public function preRequest(HTTPRequest $request) + public function process(HTTPRequest $request, callable $delegate) { - // Check languages to set - $languages = []; - foreach (SpellController::get_locales() as $locale) { - $languages[] = i18n::getData()->localeName($locale) . '=' . $locale; - } - - // Set settings - $editor = Config::inst()->get(__CLASS__, 'editor'); + $editor = static::config()->get('editor'); HTMLEditorConfig::get($editor)->enablePlugins('spellchecker'); HTMLEditorConfig::get($editor)->addButtonsToLine(2, 'spellchecker'); $token = SecurityToken::inst(); HTMLEditorConfig::get($editor)->setOption('spellchecker_rpc_url', $token->addToUrl('spellcheck/')); HTMLEditorConfig::get($editor)->setOption('browser_spellcheck', false); - HTMLEditorConfig::get($editor)->setOption('spellchecker_languages', '+'.implode(', ', $languages)); - return true; + HTMLEditorConfig::get($editor)->setOption( + 'spellchecker_languages', + '+'.implode(', ', $this->getLanguages()) + ); + + return $delegate($request); } - public function postRequest(HTTPRequest $request, HTTPResponse $response) + /** + * Check languages to set + * + * @return array + */ + public function getLanguages() { - return true; + $languages = []; + foreach (SpellController::get_locales() as $locale) { + $languages[] = i18n::getData()->localeName($locale) . '=' . $locale; + } + return $languages; } }