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

controllers/tab/settings/siteSetup/form/SiteSetupForm.inc.php

00001 <?php
00002 
00017 import('lib.pkp.classes.admin.form.PKPSiteSettingsForm');
00018 
00019 class SiteSetupForm extends PKPSiteSettingsForm {
00020 
00024    function SiteSetupForm() {
00025       parent::Form('controllers/tab/settings/siteSetup/form/siteSetupForm.tpl');
00026       $this->siteSettingsDao =& DAORegistry::getDAO('SiteSettingsDAO');
00027 
00028       // Validation checks for this form
00029       $this->addCheck(new FormValidatorLocale($this, 'title', 'required', 'admin.settings.form.titleRequired'));
00030       $this->addCheck(new FormValidatorLocale($this, 'contactName', 'required', 'admin.settings.form.contactNameRequired'));
00031       $this->addCheck(new FormValidatorLocaleEmail($this, 'contactEmail', 'required', 'admin.settings.form.contactEmailRequired'));
00032       $this->addCheck(new FormValidatorCustom($this, 'minPasswordLength', 'required', 'admin.settings.form.minPasswordLengthRequired', create_function('$l', sprintf('return $l >= %d;', SITE_MIN_PASSWORD_LENGTH))));
00033       $this->addCheck(new FormValidatorPost($this));
00034 
00035       AppLocale::requireComponents(LOCALE_COMPONENT_APPLICATION_COMMON);
00036    }
00037 
00038    //
00039    // Extended methods from Form.
00040    //
00044    function fetch(&$request, $params = null) {
00045       $site =& $request->getSite();
00046       $publicFileManager = new PublicFileManager();
00047       $pressDao =& DAORegistry::getDAO('PressDAO');
00048       $presses =& $pressDao->getNames();
00049       $siteStyleFilename = $publicFileManager->getSiteFilesPath() . '/' . $site->getSiteStyleFilename();
00050 
00051       $cssSettingName = 'siteStyleSheet';
00052       $imageSettingName = 'pageHeaderTitleImage';
00053 
00054       // Get link actions.
00055       $uploadCssLinkAction =& $this->_getFileUploadLinkAction($cssSettingName, 'css', $request);
00056       $uploadImageLinkAction =& $this->_getFileUploadLinkAction($imageSettingName, 'image', $request);
00057 
00058       // Get the files view.
00059       $cssView = $this->renderFileView($cssSettingName, $request);
00060       $imageView = $this->renderFileView($imageSettingName, $request);
00061 
00062       $templateMgr =& TemplateManager::getManager();
00063       $templateMgr->assign('locale', AppLocale::getLocale());
00064       $templateMgr->assign('siteStyleFileExists', file_exists($siteStyleFilename));
00065       $templateMgr->assign_by_ref('uploadCssLinkAction', $uploadCssLinkAction);
00066       $templateMgr->assign_by_ref('uploadImageLinkAction', $uploadImageLinkAction);
00067       $templateMgr->assign('cssView', $cssView);
00068       $templateMgr->assign('imageView', $imageView);
00069       $templateMgr->assign('redirectOptions', $presses);
00070       $templateMgr->assign('pageHeaderTitleImage', $site->getSetting($imageSettingName));
00071       $templateMgr->assign('helpTopicId', 'site.siteManagement');
00072 
00073       return parent::fetch(&$request);
00074    }
00075 
00076 
00077    //
00078    // Extend method from PKPSiteSettingsForm
00079    //
00084    function initData(&$request) {
00085       $site =& $request->getSite();
00086       $publicFileManager = $publicFileManager = new PublicFileManager();
00087       $siteStyleFilename = $publicFileManager->getSiteFilesPath() . '/' . $site->getSiteStyleFilename();
00088 
00089       // Get the files settings that can be uploaded within this form.
00090 
00091       // FIXME Change the way we get the style sheet setting when
00092       // it's implemented in site settings table, like pageHeaderTitleImage.
00093       $siteStyleSheet = null;
00094       if (file_exists($siteStyleFilename)) {
00095          $siteStyleSheet = array(
00096             'name' => $site->getOriginalStyleFilename(),
00097             'uploadName' => $site->getSiteStyleFilename(),
00098             'dateUploaded' => filemtime($siteStyleFilename)
00099          );
00100       }
00101 
00102       $pageHeaderTitleImage = $site->getSetting('pageHeaderTitleImage');
00103 
00104       $this->setData('siteStyleSheet', $siteStyleSheet);
00105       $this->setData('pageHeaderTitleImage', $pageHeaderTitleImage);
00106 
00107       parent::initData();
00108    }
00109 
00113    function readInputData() {
00114       $this->readUserVars(
00115          array('pageHeaderTitleType', 'title', 'intro', 'about', 'redirect', 'contactName', 'contactEmail', 'minPasswordLength')
00116       );
00117    }
00118 
00122    function execute() {
00123       $siteDao =& DAORegistry::getDAO('SiteDAO');
00124       $site =& $siteDao->getSite();
00125 
00126       $site->setRedirect($this->getData('redirect'));
00127       $site->setMinPasswordLength($this->getData('minPasswordLength'));
00128 
00129       $siteSettingsDao =& $this->siteSettingsDao;
00130       foreach ($this->getLocaleFieldNames() as $setting) {
00131          $siteSettingsDao->updateSetting($setting, $this->getData($setting), null, true);
00132       }
00133 
00134       $siteDao->updateObject($site);
00135       return true;
00136    }
00137 
00138    //
00139    // Public methods.
00140    //
00148    function renderFileView($fileSettingName, &$request) {
00149       $file = $this->getData($fileSettingName);
00150       $locale = AppLocale::getLocale();
00151 
00152       // Check if the file is localized.
00153       if (!is_null($file) && key_exists($locale, $file)) {
00154          // We use the current localized file value.
00155          $file = $file[$locale];
00156       }
00157 
00158       // Only render the file view if we have a file.
00159       if (is_array($file)) {
00160          $templateMgr = TemplateManager::getManager();
00161          $deleteLinkAction =& $this->_getDeleteFileLinkAction($fileSettingName, $request);
00162 
00163          // Get the right template to render the view.
00164          if ($fileSettingName == 'pageHeaderTitleImage') {
00165             $template = 'controllers/tab/settings/formImageView.tpl';
00166 
00167             // Get the common alternate text for the image.
00168             $localeKey = 'admin.settings.homeHeaderImage.altText';
00169             $commonAltText = __($localeKey);
00170             $templateMgr->assign('commonAltText', $commonAltText);
00171          } else {
00172             $template = 'controllers/tab/settings/formFileView.tpl';
00173          }
00174 
00175          $publicFileManager = $publicFileManager = new PublicFileManager();
00176 
00177          $templateMgr->assign('publicFilesDir', $request->getBasePath() . '/' . $publicFileManager->getSiteFilesPath());
00178          $templateMgr->assign('file', $file);
00179          $templateMgr->assign_by_ref('deleteLinkAction', $deleteLinkAction);
00180          $templateMgr->assign('fileSettingName', $fileSettingName);
00181 
00182          return $templateMgr->fetch($template);
00183       } else {
00184          return null;
00185       }
00186    }
00187 
00193    function deleteFile($fileSettingName, &$request) {
00194       $locale = AppLocale::getLocale();
00195 
00196       // Get the file.
00197       $file = $this->getData($fileSettingName);
00198 
00199       // Check if the file is localized.
00200       if (key_exists($locale, $file)) {
00201          // We use the current localized file value.
00202          $file = $file[$locale];
00203       } else {
00204          $locale = null;
00205       }
00206 
00207       // Deletes the file and its settings.
00208       import('classes.file.PublicFileManager');
00209       $publicFileManager = new PublicFileManager();
00210       if ($publicFileManager->removeSiteFile($file['uploadName'])) {
00211          $settingsDao =& DAORegistry::getDAO('SiteSettingsDAO');
00212          $settingsDao->deleteSetting($fileSettingName, $locale);
00213          return true;
00214       } else {
00215          return false;
00216       }
00217    }
00218 
00219 
00220    //
00221    // Private helper methods.
00222    //
00230    function &_getFileUploadLinkAction($settingName, $fileType, &$request) {
00231       $router =& $request->getRouter();
00232       import('lib.pkp.classes.linkAction.request.AjaxModal');
00233 
00234       $ajaxModal = new AjaxModal(
00235          $router->url(
00236             $request, null, null, 'showFileUploadForm', null, array(
00237                'fileSettingName' => $settingName,
00238                'fileType' => $fileType
00239             )
00240          )
00241       );
00242       $linkAction = new LinkAction(
00243          'uploadFile-' . $settingName,
00244          $ajaxModal,
00245          __('common.upload'),
00246          null
00247       );
00248 
00249       return $linkAction;
00250    }
00251 
00258    function &_getDeleteFileLinkAction($settingName, &$request) {
00259       $router =& $request->getRouter();
00260       import('lib.pkp.classes.linkAction.request.RemoteActionConfirmationModal');
00261 
00262       $confirmationModal = new RemoteActionConfirmationModal(
00263          __('common.confirmDelete'), null,
00264          $router->url(
00265             $request, null, null, 'deleteFile', null, array(
00266                'fileSettingName' => $settingName,
00267                'tab' => 'siteSetup'
00268             )
00269          )
00270       );
00271       $linkAction = new LinkAction(
00272          'deleteFile-' . $settingName,
00273          $confirmationModal,
00274          __('common.delete'),
00275          null
00276       );
00277 
00278       return $linkAction;
00279    }
00280 }
00281 
00282 ?>

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