00001 <?php
00002
00015
00016 import('lib.pkp.classes.form.Form');
00017
00018 class InstallLanguageForm extends Form {
00019
00023 function InstallLanguageForm($wizardMode = false) {
00024 parent::Form('controllers/grid/languages/installLanguageForm.tpl');
00025 }
00026
00027
00028
00029
00033 function initData(&$request) {
00034 parent::initData($request);
00035
00036 $site =& $request->getSite();
00037 $this->setData('installedLocales', $site->getInstalledLocales());
00038 }
00039
00043 function fetch(&$request) {
00044 $site =& $request->getSite();
00045 $allLocales = AppLocale::getAllLocales();
00046 $installedLocales = $this->getData('installedLocales');
00047 $notInstalledLocales = array_diff(array_keys($allLocales), $installedLocales);
00048
00049 $templateMgr =& TemplateManager::getManager();
00050 $templateMgr->assign('allLocales', $allLocales);
00051 $templateMgr->assign('notInstalledLocales', $notInstalledLocales);
00052
00053 import('classes.i18n.LanguageAction');
00054 $languageAction = new LanguageAction();
00055 if ($languageAction->isDownloadAvailable()) {
00056 $downloadableLocales = $languageAction->getDownloadableLocales();
00057 $downloadableLocaleLinks = array();
00058
00059 import('lib.pkp.classes.linkAction.request.AjaxAction');
00060 $router =& $request->getRouter();
00061 foreach ($downloadableLocales as $locale => $name) {
00062 $downloadableLocaleLinks[$locale] = new LinkAction($locale,
00063 new AjaxAction($router->url($request, null, null, 'downloadLocale', array('locale' => $locale))),
00064 $name . ' (' . $locale . ')');
00065 }
00066
00067 $templateMgr->assign('downloadAvailable', true);
00068 $templateMgr->assign('downloadableLocaleLinks', $downloadableLocaleLinks);
00069 }
00070
00071 return parent::fetch(&$request);
00072 }
00073
00077 function readInputData(&$request) {
00078 parent::readInputData($request);
00079
00080 $localesToInstall = $request->getUserVar('localesToInstall');
00081 $this->setData('localesToInstall', $localesToInstall);
00082 }
00083
00087 function execute(&$request) {
00088 $site =& $request->getSite();
00089 $localesToInstall = $this->getData('localesToInstall');
00090
00091 if (isset($localesToInstall) && is_array($localesToInstall)) {
00092 $installedLocales = $site->getInstalledLocales();
00093 $supportedLocales = $site->getSupportedLocales();
00094
00095 foreach ($localesToInstall as $locale) {
00096 if (AppLocale::isLocaleValid($locale) && !in_array($locale, $installedLocales)) {
00097 array_push($installedLocales, $locale);
00098
00099 if (!in_array($locale, $supportedLocales)) array_push($supportedLocales, $locale);
00100 AppLocale::installLocale($locale);
00101 }
00102 }
00103
00104 $site->setInstalledLocales($installedLocales);
00105 $site->setSupportedLocales($supportedLocales);
00106 $siteDao =& DAORegistry::getDAO('SiteDAO');
00107 $siteDao->updateObject($site);
00108 }
00109 }
00110 }
00111
00112 ?>