UserPreference split into provider/controller

This commit is contained in:
Benoît Burnichon
2015-06-23 11:10:06 +02:00
parent 7f7e1fd143
commit 2e7731d924
3 changed files with 90 additions and 62 deletions

View File

@@ -14,7 +14,6 @@ namespace Alchemy\Phrasea;
use Alchemy\Geonames\GeonamesServiceProvider;
use Alchemy\Phrasea\ControllerProvider\Thesaurus\Thesaurus;
use Alchemy\Phrasea\ControllerProvider\Thesaurus\Xmlhttp as ThesaurusXMLHttp;
use Alchemy\Phrasea\ControllerProvider\User\Preferences;
use Alchemy\Phrasea\Core\Event\Subscriber\BasketSubscriber;
use Alchemy\Phrasea\Core\Event\Subscriber\BridgeSubscriber;
use Alchemy\Phrasea\Core\Event\Subscriber\ExportSubscriber;
@@ -317,6 +316,7 @@ class Application extends SilexApplication
'Alchemy\Phrasea\ControllerProvider\Root\RSSFeeds' => [],
'Alchemy\Phrasea\ControllerProvider\Root\Session' => [],
'Alchemy\Phrasea\ControllerProvider\User\Notifications' => [],
'Alchemy\Phrasea\ControllerProvider\User\Preferences' => [],
'Alchemy\Phrasea\ControllerProvider\Datafiles' => [],
'Alchemy\Phrasea\ControllerProvider\Lightbox' => [],
'Alchemy\Phrasea\ControllerProvider\MediaAccessor' => [],
@@ -621,8 +621,6 @@ class Application extends SilexApplication
*/
public function bindRoutes()
{
$this->mount('/user/preferences/', new Preferences());
$this->mount('/thesaurus', new Thesaurus());
$this->mount('/xmlhttp', new ThesaurusXMLHttp());
@@ -680,6 +678,7 @@ class Application extends SilexApplication
'/session/' => 'Alchemy\Phrasea\ControllerProvider\Root\Session',
'/setup' => 'Alchemy\Phrasea\ControllerProvider\Setup',
'/user/notifications/' => 'Alchemy\Phrasea\ControllerProvider\User\Notifications',
'/user/preferences/' => 'Alchemy\Phrasea\ControllerProvider\User\Preferences',
'/' => 'Alchemy\Phrasea\ControllerProvider\Root\Root',
];

View File

@@ -0,0 +1,72 @@
<?php
/*
* This file is part of Phraseanet
*
* (c) 2005-2015 Alchemy
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Alchemy\Phrasea\Controller\User;
use Alchemy\Phrasea\Application;
use Alchemy\Phrasea\Controller\Controller;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
class UserPreferenceController extends Controller
{
/**
* Save temporary user preferences
*
* @param Application $app
* @param Request $request
* @return JsonResponse
*/
public function saveTemporaryPref(Application $app, Request $request)
{
if (!$request->isXmlHttpRequest()) {
$app->abort(400);
}
$prop = $request->request->get('prop');
$value = $request->request->get('value');
$success = false;
$msg = $app->trans('Error while saving preference');
if ($prop && $value) {
$app['session']->set('phraseanet.' . $prop, $value);
$success = true;
$msg = $app->trans('Preference saved !');
}
return new JsonResponse(['success' => $success, 'message' => $msg]);
}
/**
* Save user preferenes
*
* @param Application $app
* @param Request $request
* @return JsonResponse
*/
public function saveUserPref(Application $app, Request $request)
{
if (!$request->isXmlHttpRequest()) {
$app->abort(400);
}
$msg = $app->trans('Error while saving preference');
$prop = $request->request->get('prop');
$value = $request->request->get('value');
$success = false;
if (null !== $prop && null !== $value) {
$app['manipulator.user']->setUserSetting($app['authentication']->getUser(), $prop, $value);
$success = true;
$msg = $app->trans('Preference saved !');
}
return new JsonResponse(['success' => $success, 'message' => $msg]);
}
}

View File

@@ -11,23 +11,34 @@
namespace Alchemy\Phrasea\ControllerProvider\User;
use Alchemy\Phrasea\Application as PhraseaApplication;
use Alchemy\Phrasea\Controller\User\UserPreferenceController;
use Alchemy\Phrasea\ControllerProvider\ControllerProviderTrait;
use Silex\Application;
use Silex\ControllerProviderInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Silex\ServiceProviderInterface;
class Preferences implements ControllerProviderInterface
class Preferences implements ControllerProviderInterface, ServiceProviderInterface
{
use ControllerProviderTrait;
public function register(Application $app)
{
$app['controller.user.preferences'] = $app->share(function (PhraseaApplication $app) {
return (new UserPreferenceController($app));
});
}
public function boot(Application $app)
{
// no-op
}
/**
* {@inheritDoc}
*/
public function connect(Application $app)
{
$app['controller.user.preferences'] = $this;
$controllers = $this->createAuthenticatedCollection($app);
$controllers->post('/', 'controller.user.preferences:saveUserPref')
@@ -38,58 +49,4 @@ class Preferences implements ControllerProviderInterface
return $controllers;
}
/**
* Save temporary user preferences
*
* @param Application $app
* @param Request $request
* @return JsonResponse
*/
public function saveTemporaryPref(Application $app, Request $request)
{
if (!$request->isXmlHttpRequest()) {
$app->abort(400);
}
$prop = $request->request->get('prop');
$value = $request->request->get('value');
$success = false;
$msg = $app->trans('Error while saving preference');
if ($prop && $value) {
$app['session']->set('phraseanet.' . $prop, $value);
$success = true;
$msg = $app->trans('Preference saved !');
}
return new JsonResponse(['success' => $success, 'message' => $msg]);
}
/**
* Save user preferenes
*
* @param Application $app
* @param Request $request
* @return JsonResponse
*/
public function saveUserPref(Application $app, Request $request)
{
if (!$request->isXmlHttpRequest()) {
$app->abort(400);
}
$msg = $app->trans('Error while saving preference');
$prop = $request->request->get('prop');
$value = $request->request->get('value');
$success = false;
if (null !== $prop && null !== $value) {
$app['manipulator.user']->setUserSetting($app['authentication']->getUser(), $prop, $value);
$success = true;
$msg = $app->trans('Preference saved !');
}
return new JsonResponse(['success' => $success, 'message' => $msg]);
}
}