mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-18 07:23:13 +00:00
Fix #1243 Phraseanet enabled languages is now configurable
This commit is contained in:
@@ -41,6 +41,7 @@
|
||||
xsendfile mapping depending on databoxes configuration.
|
||||
- bin/console xsendfile:configuration-dumper that dumps your virtual
|
||||
host configuration depending on Phraseanet configuration
|
||||
- Phraseanet enabled languages is now configurable.
|
||||
|
||||
* 3.7.13 (2013-07-04)
|
||||
|
||||
|
@@ -1,6 +1,7 @@
|
||||
main:
|
||||
servername: 'http://local.phrasea/'
|
||||
maintenance: false
|
||||
languages: []
|
||||
database:
|
||||
host: 127.0.0.1
|
||||
port: 3306
|
||||
|
@@ -446,7 +446,7 @@ class Databox implements ControllerProviderInterface
|
||||
public function getDatabaseCGU(Application $app, Request $request, $databox_id)
|
||||
{
|
||||
return $app['twig']->render('admin/databox/cgus.html.twig', array(
|
||||
'languages' => $app->getAvailableLanguages(),
|
||||
'languages' => $app['locales.available'],
|
||||
'cgus' => $app['phraseanet.appbox']->get_databox($databox_id)->get_cgus(),
|
||||
'current_locale' => $app['locale']
|
||||
));
|
||||
|
@@ -144,7 +144,7 @@ class Fields implements ControllerProviderInterface
|
||||
{
|
||||
$languages = array();
|
||||
|
||||
foreach (PhraseaApplication::getAvailableLanguages() as $code => $language) {
|
||||
foreach ($app['locales.available'] as $code => $language) {
|
||||
$data = explode('_', $code);
|
||||
$languages[$data[0]] = $language;
|
||||
}
|
||||
|
@@ -123,7 +123,7 @@ class Root implements ControllerProviderInterface
|
||||
'thesau_js_list' => $thjslist,
|
||||
'thesau_json_sbas' => json_encode($sbas),
|
||||
'thesau_json_bas2sbas' => json_encode($bas2sbas),
|
||||
'thesau_languages' => $app->getAvailableLanguages(),
|
||||
'thesau_languages' => $app['locales.available'],
|
||||
));
|
||||
})->bind('prod');
|
||||
|
||||
|
@@ -369,7 +369,7 @@ class Thesaurus implements ControllerProviderInterface
|
||||
$lng_code = explode('_', $code);
|
||||
|
||||
return $lng_code[0];
|
||||
}, array_keys(PhraseaApplication::getAvailableLanguages()));
|
||||
}, array_keys($app['locales.available']));
|
||||
} else {
|
||||
$t_lng[] = $request->get('piv');
|
||||
}
|
||||
@@ -792,7 +792,7 @@ class Thesaurus implements ControllerProviderInterface
|
||||
$bases[$row['sbas_id']] = \phrasea::sbas_labels($row['sbas_id'], $app);
|
||||
}
|
||||
|
||||
foreach (PhraseaApplication::getAvailableLanguages() as $lng_code => $lng) {
|
||||
foreach ($app['locales.available'] as $lng_code => $lng) {
|
||||
$lng_code = explode('_', $lng_code);
|
||||
$languages[$lng_code[0]] = $lng;
|
||||
}
|
||||
@@ -1125,7 +1125,7 @@ class Thesaurus implements ControllerProviderInterface
|
||||
{
|
||||
$languages = array();
|
||||
|
||||
foreach (PhraseaApplication::getAvailableLanguages() as $lng_code => $lng) {
|
||||
foreach ($app['locales.available'] as $lng_code => $lng) {
|
||||
$lng_code = explode('_', $lng_code);
|
||||
$languages[$lng_code[0]] = $lng;
|
||||
}
|
||||
@@ -1202,7 +1202,7 @@ class Thesaurus implements ControllerProviderInterface
|
||||
);
|
||||
}
|
||||
|
||||
foreach (PhraseaApplication::getAvailableLanguages() as $code => $language) {
|
||||
foreach ($app['locales.available'] as $code => $language) {
|
||||
$lng_code = explode('_', $code);
|
||||
$languages[$lng_code[0]] = $language;
|
||||
}
|
||||
@@ -1229,7 +1229,7 @@ class Thesaurus implements ControllerProviderInterface
|
||||
{
|
||||
$flags = $jsFlags = array();
|
||||
|
||||
foreach (PhraseaApplication::getAvailableLanguages() as $code => $language) {
|
||||
foreach ($app['locales.available'] as $code => $language) {
|
||||
$lng_code = explode('_', $code);
|
||||
$flags[$lng_code[0]] = $language;
|
||||
$jsFlags[$lng_code[0]] = array('w' => 18, 'h' => 13);
|
||||
|
@@ -77,7 +77,7 @@ class PhraseaLocaleSubscriber implements EventSubscriberInterface
|
||||
);
|
||||
}
|
||||
|
||||
$languages = PhraseaApplication::getAvailableLanguages();
|
||||
$languages = $this->app['locales.available'];
|
||||
if ($event->getRequest()->cookies->has('locale')
|
||||
&& isset($languages[$event->getRequest()->cookies->get('locale')])) {
|
||||
$event->getRequest()->setLocale($event->getRequest()->cookies->get('locale'));
|
||||
|
@@ -36,12 +36,38 @@ class LocaleServiceProvider implements ServiceProviderInterface
|
||||
};
|
||||
|
||||
$app['locales.available'] = function (Application $app) {
|
||||
return PhraseaApplication::getAvailableLanguages();
|
||||
$availableLanguages = PhraseaApplication::getAvailableLanguages();
|
||||
|
||||
if (isset($app['phraseanet.configuration']['main']['languages']) && !empty($app['phraseanet.configuration']['main']['languages'])) {
|
||||
$languages = $app['phraseanet.configuration']['main']['languages'];
|
||||
$enabledLanguages = $availableLanguages;
|
||||
|
||||
foreach ($enabledLanguages as $code => $language) {
|
||||
if (in_array($code, $languages)) {
|
||||
continue;
|
||||
}
|
||||
$data = explode('_', $code);
|
||||
if (in_array($data[0], $languages)) {
|
||||
continue;
|
||||
}
|
||||
unset($enabledLanguages[$code]);
|
||||
}
|
||||
|
||||
if (0 === count($enabledLanguages)) {
|
||||
$app['monolog']->error('Wrong language configuration, no language activated');
|
||||
|
||||
return $availableLanguages;
|
||||
}
|
||||
|
||||
return $enabledLanguages;
|
||||
} else {
|
||||
return $availableLanguages;
|
||||
}
|
||||
};
|
||||
|
||||
$app['locales.mapping'] = function (Application $app) {
|
||||
$codes = array();
|
||||
foreach (PhraseaApplication::getAvailableLanguages() as $code => $language) {
|
||||
foreach ($app['locales.available'] as $code => $language) {
|
||||
$data = explode('_', $code);
|
||||
$codes[$data[0]] = $code;
|
||||
}
|
||||
@@ -52,7 +78,8 @@ class LocaleServiceProvider implements ServiceProviderInterface
|
||||
$app['locales.I18n.available'] = $app->share(function (Application $app) {
|
||||
$locales = array();
|
||||
|
||||
foreach (PhraseaApplication::getAvailableLanguages() as $code => $language) {
|
||||
var_dump($app['locales.available']);exit;
|
||||
foreach ($app['locales.available'] as $code => $language) {
|
||||
$data = explode('_', $code);
|
||||
$locales[$data[0]] = $language;
|
||||
}
|
||||
|
@@ -1671,7 +1671,7 @@ class User_Adapter implements User_Interface, cache_cacheableInterface
|
||||
|
||||
public function set_locale($locale)
|
||||
{
|
||||
if (!array_key_exists($locale, $this->app->getAvailableLanguages())) {
|
||||
if (!array_key_exists($locale, $this->app['locales.available'])) {
|
||||
throw new \InvalidArgumentException(sprintf('Locale %s is not recognized', $locale));
|
||||
}
|
||||
|
||||
|
@@ -1380,7 +1380,7 @@ class databox extends base
|
||||
|
||||
$missing_locale = array();
|
||||
|
||||
$avLanguages = $this->app->getAvailableLanguages();
|
||||
$avLanguages = $this->app['locales.available'];
|
||||
foreach ($avLanguages as $code => $language) {
|
||||
if (!isset($TOU[$code])) {
|
||||
$missing_locale[] = $code;
|
||||
|
@@ -4,7 +4,7 @@ use Alchemy\Phrasea\Application;
|
||||
|
||||
return call_user_func_array(function(Application $app) {
|
||||
|
||||
$avLanguages = Application::getAvailableLanguages();
|
||||
$avLanguages = $app['locales.available'];
|
||||
|
||||
$youtube_console_url = '<a href="https://code.google.com/apis/console/" target="_blank">https://code.google.com/apis/console/</a>';
|
||||
$dashboard_youtube = '<a href="https://code.google.com/apis/youtube/dashboard/" target="_blank">https://code.google.com/apis/youtube/dashboard/</a>';
|
||||
|
@@ -1,6 +1,7 @@
|
||||
main:
|
||||
servername: 'http://local.phrasea/'
|
||||
maintenance: false
|
||||
languages: []
|
||||
database:
|
||||
host: 'sql-host'
|
||||
port: 3306
|
||||
|
@@ -18,6 +18,52 @@ class LocaleServiceProvidertest extends \PhraseanetPHPUnitAbstract
|
||||
$this->assertEquals(Application::getAvailableLanguages(), $app['locales.available']);
|
||||
}
|
||||
|
||||
public function testLocalesAvailableCustomized()
|
||||
{
|
||||
$app = new Application();
|
||||
$app->register(new LocaleServiceProvider());
|
||||
$app['phraseanet.configuration'] = $this->getMock('Alchemy\Phrasea\Core\Configuration\ConfigurationInterface');
|
||||
$app['phraseanet.configuration']->expects($this->any())
|
||||
->method('offsetExist')
|
||||
->with('main')
|
||||
->will($this->returnValue(true));
|
||||
$app['phraseanet.configuration']->expects($this->any())
|
||||
->method('offsetGet')
|
||||
->with('main')
|
||||
->will($this->returnValue(array('languages' => array('fr_FR', 'en_US', 'de'))));
|
||||
|
||||
$original = Application::getAvailableLanguages();
|
||||
unset($original['en_GB']);
|
||||
unset($original['nl_NL']);
|
||||
|
||||
$this->assertEquals($original, $app['locales.available']);
|
||||
}
|
||||
|
||||
public function testLocalesCustomizedWithError()
|
||||
{
|
||||
$app = new Application();
|
||||
$app->register(new LocaleServiceProvider());
|
||||
$app['phraseanet.configuration'] = $this->getMock('Alchemy\Phrasea\Core\Configuration\ConfigurationInterface');
|
||||
$app['phraseanet.configuration']->expects($this->any())
|
||||
->method('offsetExist')
|
||||
->with('main')
|
||||
->will($this->returnValue(true));
|
||||
$app['phraseanet.configuration']->expects($this->any())
|
||||
->method('offsetGet')
|
||||
->with('main')
|
||||
->will($this->returnValue(array('languages' => array('en_US'))));
|
||||
$app['monolog'] = $this->getMock('Psr\Log\LoggerInterface');
|
||||
$app['monolog']->expects($this->once())
|
||||
->method('error');
|
||||
|
||||
$original = Application::getAvailableLanguages();
|
||||
unset($original['nl_NL']);
|
||||
unset($original['fr_FR']);
|
||||
unset($original['de_DE']);
|
||||
|
||||
$this->assertEquals($original, $app['locales.available']);
|
||||
}
|
||||
|
||||
public function testLocalesI18nAvailable()
|
||||
{
|
||||
$app = new Application();
|
||||
|
@@ -375,11 +375,7 @@ abstract class SearchEngineAbstractTest extends \PhraseanetPHPUnitAuthenticatedA
|
||||
'nl' => array('word' => 'lichamelijk', 'stemm' => 'licham'),
|
||||
);
|
||||
|
||||
foreach (Application::getAvailableLanguages() as $language => $name) {
|
||||
|
||||
$codes = explode('_', $language);
|
||||
$languageCode = $codes[0];
|
||||
|
||||
foreach (Application::getAvailableLanguages() as $languageCode) {
|
||||
if (!isset($examples[$languageCode])) {
|
||||
$this->fail(sprintf('Missing stemm examples for language %s', $languageCode));
|
||||
}
|
||||
|
Reference in New Issue
Block a user