Inheritance: extends PKPLanguageAction
 /**
  * @copydoc Form::fetch()
  */
 function fetch($request)
 {
     $site = $request->getSite();
     $allLocales = AppLocale::getAllLocales();
     $installedLocales = $this->getData('installedLocales');
     $notInstalledLocales = array_diff(array_keys($allLocales), $installedLocales);
     $templateMgr = TemplateManager::getManager($request);
     $templateMgr->assign('allLocales', $allLocales);
     $templateMgr->assign('notInstalledLocales', $notInstalledLocales);
     import('classes.i18n.LanguageAction');
     $languageAction = new LanguageAction();
     if ($languageAction->isDownloadAvailable()) {
         $downloadableLocales = $languageAction->getDownloadableLocales();
         $downloadableLocaleLinks = array();
         import('lib.pkp.classes.linkAction.request.AjaxAction');
         $router = $request->getRouter();
         foreach ($downloadableLocales as $locale => $name) {
             $downloadableLocaleLinks[$locale] = new LinkAction($locale, new AjaxAction($router->url($request, null, null, 'downloadLocale', array('locale' => $locale))), $name . ' (' . $locale . ')');
         }
         $templateMgr->assign('downloadAvailable', true);
         $templateMgr->assign('downloadableLocaleLinks', $downloadableLocaleLinks);
     }
     return parent::fetch($request);
 }
 /**
  * Download a locale from the PKP web site.
  * @param $args array
  * @param $request object
  * @return JSONMessage JSON object
  */
 function downloadLocale($args, $request)
 {
     $this->setupTemplate($request, true);
     $locale = $request->getUserVar('locale');
     import('classes.i18n.LanguageAction');
     $languageAction = new LanguageAction();
     if (!$languageAction->isDownloadAvailable() || !preg_match('/^[a-z]{2}_[A-Z]{2}$/', $locale)) {
         $request->redirect(null, 'admin', 'settings');
     }
     $notificationManager = new NotificationManager();
     $user = $request->getUser();
     $json = new JSONMessage(true);
     $errors = array();
     if (!$languageAction->downloadLocale($locale, $errors)) {
         $notificationManager->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_ERROR, array('contents' => $errors));
         $json->setEvent('refreshForm', $this->_fetchReviewerForm($args, $request));
     } else {
         $notificationManager->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_SUCCESS, array('contentLocaleKey' => __('admin.languages.localeInstalled'), 'params' => array('locale' => $locale)));
     }
     // Refresh form.
     $installLanguageForm = new InstallLanguageForm();
     $installLanguageForm->initData($request);
     $json->setEvent('refreshForm', $installLanguageForm->fetch($request));
     return $json;
 }
 /**
  * Download a locale from the PKP web site.
  * @param $args array
  * @param $request object
  */
 function downloadLocale($args, &$request)
 {
     $this->validate();
     $this->setupTemplate(true);
     $locale = $request->getUserVar('locale');
     import('classes.i18n.LanguageAction');
     $languageAction = new LanguageAction();
     if (!$languageAction->isDownloadAvailable()) {
         $request->redirect(null, null, 'languages');
     }
     if (!preg_match('/^[a-z]{2}_[A-Z]{2}$/', $locale)) {
         $request->redirect(null, null, 'languages');
     }
     $templateMgr =& TemplateManager::getManager();
     $errors = array();
     if (!$languageAction->downloadLocale($locale, $errors)) {
         $templateMgr->assign('errors', $errors);
         $templateMgr->display('admin/languageDownloadErrors.tpl');
         return;
     }
     import('lib.pkp.classes.notification.NotificationManager');
     $notificationManager = new NotificationManager();
     $notificationManager->createTrivialNotification(Locale::translate('notification.notification'), Locale::translate('admin.languages.localeInstalled', array('locale' => $locale)), NOTIFICATION_TYPE_SUCCESS, null, false);
     $request->redirect(null, null, 'languages');
 }
 /**
  * Download a locale from the PKP web site.
  * @param $args array
  * @param $request object
  */
 function downloadLocale($args, &$request)
 {
     $this->validate();
     $this->setupTemplate(true);
     $locale = $request->getUserVar('locale');
     import('classes.i18n.LanguageAction');
     $languageAction = new LanguageAction();
     if (!$languageAction->isDownloadAvailable()) {
         $request->redirect(null, null, 'languages');
     }
     if (!preg_match('/^[a-z]{2}_[A-Z]{2}$/', $locale)) {
         $request->redirect(null, null, 'languages');
     }
     $templateMgr =& TemplateManager::getManager();
     $errors = array();
     if (!$languageAction->downloadLocale($locale, $errors)) {
         $templateMgr->assign('errors', $errors);
         $templateMgr->display('admin/languageDownloadErrors.tpl');
         return;
     }
     $user =& $request->getUser();
     import('classes.notification.NotificationManager');
     $notificationManager = new NotificationManager();
     $params = array('locale' => $locale);
     $notificationManager->createTrivialNotification($user->getId(), NOTIFICATION_TYPE_LOCALE_INSTALLED, $params);
     $request->redirect(null, null, 'languages');
 }
 /**
  * Download a locale from the PKP web site.
  * @param $args array
  * @param $request object
  */
 function downloadLocale($args, &$request)
 {
     $this->validate();
     $locale = $request->getUserVar('locale');
     import('i18n.LanguageAction');
     $languageAction = new LanguageAction();
     if (!$languageAction->isDownloadAvailable()) {
         $request->redirect(null, null, 'languages');
     }
     if (!preg_match('/^[a-z]{2}_[A-Z]{2}$/', $locale)) {
         $request->redirect(null, null, 'languages');
     }
     $templateMgr =& TemplateManager::getManager();
     $errors = array();
     if (!$languageAction->downloadLocale($locale, $errors)) {
         $templateMgr->assign('errors', $errors);
         $templateMgr->display('admin/languageDownloadErrors.tpl');
         return;
     }
     $templateMgr->assign('messageTranslated', Locale::translate('admin.languages.localeInstalled', array('locale' => $locale)));
     $templateMgr->assign('backLink', $request->url(null, null, 'languages'));
     $templateMgr->assign('backLinkLabel', 'admin.languages.languageSettings');
     $templateMgr->display('common/message.tpl');
 }