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
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
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
00055 $uploadCssLinkAction =& $this->_getFileUploadLinkAction($cssSettingName, 'css', $request);
00056 $uploadImageLinkAction =& $this->_getFileUploadLinkAction($imageSettingName, 'image', $request);
00057
00058
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
00079
00084 function initData(&$request) {
00085 $site =& $request->getSite();
00086 $publicFileManager = $publicFileManager = new PublicFileManager();
00087 $siteStyleFilename = $publicFileManager->getSiteFilesPath() . '/' . $site->getSiteStyleFilename();
00088
00089
00090
00091
00092
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
00140
00148 function renderFileView($fileSettingName, &$request) {
00149 $file = $this->getData($fileSettingName);
00150 $locale = AppLocale::getLocale();
00151
00152
00153 if (!is_null($file) && key_exists($locale, $file)) {
00154
00155 $file = $file[$locale];
00156 }
00157
00158
00159 if (is_array($file)) {
00160 $templateMgr = TemplateManager::getManager();
00161 $deleteLinkAction =& $this->_getDeleteFileLinkAction($fileSettingName, $request);
00162
00163
00164 if ($fileSettingName == 'pageHeaderTitleImage') {
00165 $template = 'controllers/tab/settings/formImageView.tpl';
00166
00167
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
00197 $file = $this->getData($fileSettingName);
00198
00199
00200 if (key_exists($locale, $file)) {
00201
00202 $file = $file[$locale];
00203 } else {
00204 $locale = null;
00205 }
00206
00207
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
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 ?>