• Main Page
  • Modules
  • Classes
  • Files
  • File List

controllers/grid/languages/form/InstallLanguageForm.inc.php

00001 <?php
00002 
00015 // Import the base Form.
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    // Overridden methods from Form.
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                // Activate/support by default.
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 ?>

Generated on Mon Sep 17 2012 13:58:56 for Open Monograph Press by  doxygen 1.7.1