/** * @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'); }