From 3db335e4c1db03efbb67b567824b6fecccf091d3 Mon Sep 17 00:00:00 2001 From: Nicolas Le Goff Date: Mon, 30 Jan 2012 17:00:36 +0100 Subject: [PATCH 1/7] add language controller --- config/nginx.rewrite.rules | 1 + lib/Alchemy/Phrasea/Application/Prod.php | 1 + .../Phrasea/Controller/Prod/Language.php | 104 ++++++++++++++++++ .../Phrasea/Controller/Prod/LanguageTest.php | 47 ++++++++ www/.htaccess | 1 + www/prod/page0.js | 7 +- 6 files changed, 156 insertions(+), 5 deletions(-) create mode 100644 lib/Alchemy/Phrasea/Controller/Prod/Language.php create mode 100644 lib/unitTest/Alchemy/Phrasea/Controller/Prod/LanguageTest.php diff --git a/config/nginx.rewrite.rules b/config/nginx.rewrite.rules index 903e060a0f..ecbafe5bf0 100644 --- a/config/nginx.rewrite.rules +++ b/config/nginx.rewrite.rules @@ -28,6 +28,7 @@ rewrite ^/prod/push/.*$ /prod/router.php last; rewrite ^/prod/baskets/.*$ /prod/router.php last; rewrite ^/prod/story/.*$ /prod/router.php last; rewrite ^/prod/WorkZone/.*$ /prod/router.php last; +rewrite ^/prod/language/.*$ /prod/router.php last; rewrite ^/prod/$ /prod/router.php last; rewrite ^/robots.txt$ /index.php last; diff --git a/lib/Alchemy/Phrasea/Application/Prod.php b/lib/Alchemy/Phrasea/Application/Prod.php index b4c97e62f5..b48b89ff9a 100644 --- a/lib/Alchemy/Phrasea/Application/Prod.php +++ b/lib/Alchemy/Phrasea/Application/Prod.php @@ -51,6 +51,7 @@ return call_user_func(function() $app->mount('/printer/', new Controller\Printer()); $app->mount('/feeds', new Controller\Feed()); $app->mount('/tooltip', new Controller\Tooltip()); + $app->mount('/language', new Controller\Language()); $app->mount('/', new Controller\Root()); $app->error(function (\Exception $e, $code) use ($app) diff --git a/lib/Alchemy/Phrasea/Controller/Prod/Language.php b/lib/Alchemy/Phrasea/Controller/Prod/Language.php new file mode 100644 index 0000000000..b93489af76 --- /dev/null +++ b/lib/Alchemy/Phrasea/Controller/Prod/Language.php @@ -0,0 +1,104 @@ +get("/", function(Application $app) + { + $registry = $app["Core"]->getRegistry(); + + $out = array(); + $out['thesaurusBasesChanged'] = _('prod::recherche: Attention : la liste des bases selectionnees pour la recherche a ete changee.'); + $out['confirmDel'] = _('paniers::Vous etes sur le point de supprimer ce panier. Cette action est irreversible. Souhaitez-vous continuer ?'); + $out['serverError'] = _('phraseanet::erreur: Une erreur est survenue, si ce probleme persiste, contactez le support technique'); + $out['serverName'] = $registry->get('GV_ServerName'); + $out['serverTimeout'] = _('phraseanet::erreur: La connection au serveur Phraseanet semble etre indisponible'); + $out['serverDisconnected'] = _('phraseanet::erreur: Votre session est fermee, veuillez vous re-authentifier'); + $out['hideMessage'] = _('phraseanet::Ne plus afficher ce message'); + $out['confirmGroup'] = _('Supprimer egalement les documents rattaches a ces regroupements'); + $out['confirmDelete'] = _('reponses:: Ces enregistrements vont etre definitivement supprimes et ne pourront etre recuperes. Etes vous sur ?'); + $out['cancel'] = _('boutton::annuler'); + $out['deleteTitle'] = _('boutton::supprimer'); + $out['edit_hetero'] = _('prod::editing valeurs heterogenes, choisir \'remplacer\', \'ajouter\' ou \'annuler\''); + $out['confirm_abandon'] = _('prod::editing::annulation: abandonner les modification ?'); + $out['loading'] = _('phraseanet::chargement'); + $out['valider'] = _('boutton::valider'); + $out['annuler'] = _('boutton::annuler'); + $out['rechercher'] = _('boutton::rechercher'); + $out['renewRss'] = _('boutton::renouveller'); + $out['candeletesome'] = _('Vous n\'avez pas les droits pour supprimer certains documents'); + $out['candeletedocuments'] = _('Vous n\'avez pas les droits pour supprimer ces documents'); + $out['needTitle'] = _('Vous devez donner un titre'); + $out['newPreset'] = _('Nouveau modele'); + $out['fermer'] = _('boutton::fermer'); + $out['feed_require_fields'] = _('Vous n\'avez pas rempli tous les champ requis'); + $out['feed_require_feed'] = _('Vous n\'avez pas selectionne de fil de publication'); + $out['removeTitle'] = _('panier::Supression d\'un element d\'un reportage'); + $out['confirmRemoveReg'] = _('panier::Attention, vous etes sur le point de supprimer un element du reportage. Merci de confirmer votre action.'); + $out['advsearch_title'] = _('phraseanet::recherche avancee'); + $out['bask_rename'] = _('panier:: renommer le panier'); + $out['reg_wrong_sbas'] = _('panier:: Un reportage ne peux recevoir que des elements provenants de la base ou il est enregistre'); + $out['error'] = _('phraseanet:: Erreur'); + $out['warningDenyCgus'] = _('cgus :: Attention, si vous refuser les CGUs de cette base, vous n\'y aures plus acces'); + $out['cgusRelog'] = _('cgus :: Vous devez vous reauthentifier pour que vos parametres soient pris en compte.'); + $out['editDelMulti'] = _('edit:: Supprimer %s du champ dans les records selectionnes'); + $out['editAddMulti'] = _('edit:: Ajouter %s au champ courrant pour les records selectionnes'); + $out['editDelSimple'] = _('edit:: Supprimer %s du champ courrant'); + $out['editAddSimple'] = _('edit:: Ajouter %s au champ courrant'); + $out['cantDeletePublicOne'] = _('panier:: vous ne pouvez pas supprimer un panier public'); + $out['wrongsbas'] = _('panier:: Un reportage ne peux recevoir que des elements provenants de la base ou il est enregistre'); + $out['max_record_selected'] = _('Vous ne pouvez pas selectionner plus de 400 enregistrements'); + $out['confirmRedirectAuth'] = _('invite:: Redirection vers la zone d\'authentification, cliquez sur OK pour continuer ou annulez'); + $out['error_test_publi'] = _('Erreur : soit les parametres sont incorrects, soit le serveur distant ne repond pas'); + $out['test_publi_ok'] = _('Les parametres sont corrects, le serveur distant est operationnel'); + $out['some_not_published'] = _('Certaines publications n\'ont pu etre effectuees, verifiez vos parametres'); + $out['error_not_published'] = _('Aucune publication effectuee, verifiez vos parametres'); + $out['warning_delete_publi'] = _('Attention, en supprimant ce preregalge, vous ne pourrez plus modifier ou supprimer de publications prealablement effectues avec celui-ci'); + $out['some_required_fields'] = _('edit::certains documents possedent des champs requis non remplis. Merci de les remplir pour valider votre editing'); + $out['nodocselected'] = _('Aucun document selectionne'); + + + + $Serializer = $app['Core']['Serializer']; + + return new Response( + $Serializer->serialize($out, 'json') + , 200 + , array('Content-Type' => 'application/json') + ); + }); + + return $controller; + } + +} \ No newline at end of file diff --git a/lib/unitTest/Alchemy/Phrasea/Controller/Prod/LanguageTest.php b/lib/unitTest/Alchemy/Phrasea/Controller/Prod/LanguageTest.php new file mode 100644 index 0000000000..a76978b4f0 --- /dev/null +++ b/lib/unitTest/Alchemy/Phrasea/Controller/Prod/LanguageTest.php @@ -0,0 +1,47 @@ +client = $this->createClient(); + } + + public function createApplication() + { + return require __DIR__ . '/../../../../../Alchemy/Phrasea/Application/Prod.php'; + } + + public function testRootPost() + { + $route = '/language/'; + + $this->client->request("GET", $route); + $this->assertTrue($this->client->getResponse()->isOk()); + $this->assertEquals("application/json", $this->client->getResponse()->headers->get("content-type")); + $pageContent = json_decode($this->client->getResponse()->getContent()); + $this->assertTrue(is_object($pageContent)); + } + +} \ No newline at end of file diff --git a/www/.htaccess b/www/.htaccess index 8285676236..8b1e4187a8 100644 --- a/www/.htaccess +++ b/www/.htaccess @@ -30,6 +30,7 @@ RewriteRule ^prod/printer/.*$ /prod/router.php [L] RewriteRule ^prod/story/.*$ /prod/router.php [L] RewriteRule ^prod/WorkZone/.*$ /prod/router.php [L] + RewriteRule ^prod/language/.*$ /prod/router.php [L] RewriteRule ^prod/$ /prod/router.php [L] RewriteRule ^robots.txt$ /index.php [L] diff --git a/www/prod/page0.js b/www/prod/page0.js index 313892de9f..eb3523bab0 100644 --- a/www/prod/page0.js +++ b/www/prod/page0.js @@ -113,12 +113,9 @@ function getHome(cas, page){ function getLanguage(){ $.ajax({ - type: "POST", - url: "/prod/prodFeedBack.php", + type: "GET", + url: "/prod/language/", dataType: 'json', - data: { - action: "LANGUAGE" - }, success: function(data){ language = data; return; From d95f49b6567ee88d8dcc8080dc281e0779b90f9a Mon Sep 17 00:00:00 2001 From: Nicolas Le Goff Date: Mon, 30 Jan 2012 17:02:10 +0100 Subject: [PATCH 2/7] remove case action:language --- www/prod/prodFeedBack.php | 6 ------ 1 file changed, 6 deletions(-) diff --git a/www/prod/prodFeedBack.php b/www/prod/prodFeedBack.php index 083da6b572..aeed89942e 100644 --- a/www/prod/prodFeedBack.php +++ b/www/prod/prodFeedBack.php @@ -66,12 +66,6 @@ switch ($action) break; - case 'LANGUAGE': - $session->close_storage(); - require ($registry->get('GV_RootPath') . 'lib/classes/deprecated/prodUtils.php'); - $module_prod = new module_prod(); - $output = $module_prod->getLanguage(); - break; case 'CSS': require ($registry->get('GV_RootPath') . 'lib/classes/deprecated/prodUtils.php'); $parm = $request->get_parms('color'); From c4f14a8f05ba968331906b3b90e921b8ea3c0ead Mon Sep 17 00:00:00 2001 From: Nicolas Le Goff Date: Mon, 30 Jan 2012 17:02:35 +0100 Subject: [PATCH 3/7] delete prod module --- lib/classes/module/prod.class.php | 83 ------------------------------- 1 file changed, 83 deletions(-) delete mode 100644 lib/classes/module/prod.class.php diff --git a/lib/classes/module/prod.class.php b/lib/classes/module/prod.class.php deleted file mode 100644 index 7f36f7d5a4..0000000000 --- a/lib/classes/module/prod.class.php +++ /dev/null @@ -1,83 +0,0 @@ -get_session(); - $lng = $lng ? $lng : Session_Handler::get_locale(); - $registry = $appbox->get_registry(); - - $out = array(); - $out['thesaurusBasesChanged'] = _('prod::recherche: Attention : la liste des bases selectionnees pour la recherche a ete changee.'); - $out['confirmDel'] = _('paniers::Vous etes sur le point de supprimer ce panier. Cette action est irreversible. Souhaitez-vous continuer ?'); - $out['serverError'] = _('phraseanet::erreur: Une erreur est survenue, si ce probleme persiste, contactez le support technique'); - $out['serverName'] = $registry->get('GV_ServerName'); - $out['serverTimeout'] = _('phraseanet::erreur: La connection au serveur Phraseanet semble etre indisponible'); - $out['serverDisconnected'] = _('phraseanet::erreur: Votre session est fermee, veuillez vous re-authentifier'); - $out['hideMessage'] = _('phraseanet::Ne plus afficher ce message'); - $out['confirmGroup'] = _('Supprimer egalement les documents rattaches a ces regroupements'); - $out['confirmDelete'] = _('reponses:: Ces enregistrements vont etre definitivement supprimes et ne pourront etre recuperes. Etes vous sur ?'); - $out['cancel'] = _('boutton::annuler'); - $out['deleteTitle'] = _('boutton::supprimer'); - $out['edit_hetero'] = _('prod::editing valeurs heterogenes, choisir \'remplacer\', \'ajouter\' ou \'annuler\''); - $out['confirm_abandon'] = _('prod::editing::annulation: abandonner les modification ?'); - $out['loading'] = _('phraseanet::chargement'); - $out['valider'] = _('boutton::valider'); - $out['annuler'] = _('boutton::annuler'); - $out['rechercher'] = _('boutton::rechercher'); - $out['renewRss'] = _('boutton::renouveller'); - $out['candeletesome'] = _('Vous n\'avez pas les droits pour supprimer certains documents'); - $out['candeletedocuments'] = _('Vous n\'avez pas les droits pour supprimer ces documents'); - $out['needTitle'] = _('Vous devez donner un titre'); - $out['newPreset'] = _('Nouveau modele'); - $out['fermer'] = _('boutton::fermer'); - $out['feed_require_fields'] = _('Vous n\'avez pas rempli tous les champ requis'); - $out['feed_require_feed'] = _('Vous n\'avez pas selectionne de fil de publication'); - $out['removeTitle'] = _('panier::Supression d\'un element d\'un reportage'); - $out['confirmRemoveReg'] = _('panier::Attention, vous etes sur le point de supprimer un element du reportage. Merci de confirmer votre action.'); - $out['advsearch_title'] = _('phraseanet::recherche avancee'); - $out['bask_rename'] = _('panier:: renommer le panier'); - $out['reg_wrong_sbas'] = _('panier:: Un reportage ne peux recevoir que des elements provenants de la base ou il est enregistre'); - $out['error'] = _('phraseanet:: Erreur'); - $out['warningDenyCgus'] = _('cgus :: Attention, si vous refuser les CGUs de cette base, vous n\'y aures plus acces'); - $out['cgusRelog'] = _('cgus :: Vous devez vous reauthentifier pour que vos parametres soient pris en compte.'); - $out['editDelMulti'] = _('edit:: Supprimer %s du champ dans les records selectionnes'); - $out['editAddMulti'] = _('edit:: Ajouter %s au champ courrant pour les records selectionnes'); - $out['editDelSimple'] = _('edit:: Supprimer %s du champ courrant'); - $out['editAddSimple'] = _('edit:: Ajouter %s au champ courrant'); - $out['cantDeletePublicOne'] = _('panier:: vous ne pouvez pas supprimer un panier public'); - $out['wrongsbas'] = _('panier:: Un reportage ne peux recevoir que des elements provenants de la base ou il est enregistre'); - $out['max_record_selected'] = _('Vous ne pouvez pas selectionner plus de 400 enregistrements'); - $out['confirmRedirectAuth'] = _('invite:: Redirection vers la zone d\'authentification, cliquez sur OK pour continuer ou annulez'); - $out['error_test_publi'] = _('Erreur : soit les parametres sont incorrects, soit le serveur distant ne repond pas'); - $out['test_publi_ok'] = _('Les parametres sont corrects, le serveur distant est operationnel'); - $out['some_not_published'] = _('Certaines publications n\'ont pu etre effectuees, verifiez vos parametres'); - $out['error_not_published'] = _('Aucune publication effectuee, verifiez vos parametres'); - $out['warning_delete_publi'] = _('Attention, en supprimant ce preregalge, vous ne pourrez plus modifier ou supprimer de publications prealablement effectues avec celui-ci'); - $out['some_required_fields'] = _('edit::certains documents possedent des champs requis non remplis. Merci de les remplir pour valider votre editing'); - $out['nodocselected'] = _('Aucun document selectionne'); - - return p4string::jsonencode($out); - } - -} From 98abdcb1d3ca4a3dcb87c1fbba6f729ae488bb63 Mon Sep 17 00:00:00 2001 From: Nicolas Le Goff Date: Mon, 30 Jan 2012 17:22:36 +0100 Subject: [PATCH 4/7] fix build --- lib/unitTest/Alchemy/Phrasea/Controller/Prod/LanguageTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/unitTest/Alchemy/Phrasea/Controller/Prod/LanguageTest.php b/lib/unitTest/Alchemy/Phrasea/Controller/Prod/LanguageTest.php index a76978b4f0..34e887bd25 100644 --- a/lib/unitTest/Alchemy/Phrasea/Controller/Prod/LanguageTest.php +++ b/lib/unitTest/Alchemy/Phrasea/Controller/Prod/LanguageTest.php @@ -17,7 +17,7 @@ require_once __DIR__ . '/../../../../PhraseanetWebTestCaseAbstract.class.inc'; * @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @link www.phraseanet.com */ -class ControllerBasketTest extends PhraseanetWebTestCaseAbstract +class ControllerLanguageTest extends PhraseanetWebTestCaseAbstract { protected $client; From ba84c9ea77a7f20ae88f6689409d8c5f45880664 Mon Sep 17 00:00:00 2001 From: Nicolas Le Goff Date: Tue, 31 Jan 2012 12:35:12 +0100 Subject: [PATCH 5/7] fix twig strict variable issue --- lib/Alchemy/Phrasea/Application/OAuth2.php | 3 ++- templates/web/api/auth/application_dev_show.twig | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/Alchemy/Phrasea/Application/OAuth2.php b/lib/Alchemy/Phrasea/Application/OAuth2.php index 01fcc88400..b4a1627e2b 100644 --- a/lib/Alchemy/Phrasea/Application/OAuth2.php +++ b/lib/Alchemy/Phrasea/Application/OAuth2.php @@ -271,7 +271,7 @@ return call_user_func(function() $route = "/applications/dev/new"; $app->get($route, function() use ($app) { - $var = array("violations" => null); + $var = array("violations" => null, 'form' => null); return $app['response']('api/auth/application_dev_new.twig', $var); }); @@ -443,6 +443,7 @@ return call_user_func(function() */ $app->error(function (\Exception $e) use ($app) { + var_dump($e->getMessage()); if ($e instanceof NotFoundHttpException || $e instanceof \Exception_NotFound) { return new Response('The requested page could not be found.', 404); diff --git a/templates/web/api/auth/application_dev_show.twig b/templates/web/api/auth/application_dev_show.twig index 3134c16407..d247d76b3e 100644 --- a/templates/web/api/auth/application_dev_show.twig +++ b/templates/web/api/auth/application_dev_show.twig @@ -6,7 +6,7 @@
  • {{app.get_name}} - {{app.get_desciption }} + {{app.get_description }}
  • From 05452bef0e3f87956d7d055a9f306d4cabc26588 Mon Sep 17 00:00:00 2001 From: Nicolas Le Goff Date: Tue, 31 Jan 2012 12:36:11 +0100 Subject: [PATCH 6/7] remove var_dump --- lib/Alchemy/Phrasea/Application/OAuth2.php | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/Alchemy/Phrasea/Application/OAuth2.php b/lib/Alchemy/Phrasea/Application/OAuth2.php index b4a1627e2b..6c943c940a 100644 --- a/lib/Alchemy/Phrasea/Application/OAuth2.php +++ b/lib/Alchemy/Phrasea/Application/OAuth2.php @@ -443,7 +443,6 @@ return call_user_func(function() */ $app->error(function (\Exception $e) use ($app) { - var_dump($e->getMessage()); if ($e instanceof NotFoundHttpException || $e instanceof \Exception_NotFound) { return new Response('The requested page could not be found.', 404); From 50af32532e3c0f7f3c966644fe94daec6a534280 Mon Sep 17 00:00:00 2001 From: Nicolas Le Goff Date: Tue, 31 Jan 2012 17:05:44 +0100 Subject: [PATCH 7/7] correct rfc oauth2.0 V9 issue, scope and state value are no more provided if not filled in authorization response --- lib/classes/API/OAuth2/Adapter.class.php | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/classes/API/OAuth2/Adapter.class.php b/lib/classes/API/OAuth2/Adapter.class.php index 5e93db5c2a..8a36bfc717 100644 --- a/lib/classes/API/OAuth2/Adapter.class.php +++ b/lib/classes/API/OAuth2/Adapter.class.php @@ -406,11 +406,22 @@ class API_OAuth2_Adapter extends OAuth2 'response_type' => $request->get('response_type', false) , 'client_id' => $request->get('client_id', false) , 'redirect_uri' => $request->get('redirect_uri', false) - , 'scope' => $request->get('scope', false) - , 'state' => $request->get('state', false) ); + $scope = $request->get('scope', false); + $state = $request->get('state', false); + + if($state) + { + $datas["state"] = $state; + } + + if($scope) + { + $datas["scope"] = $scope; + } + $filters = array( "client_id" => array( "filter" => FILTER_VALIDATE_REGEXP