00001 <?php
00002
00016
00017 import('controllers.tab.settings.form.PressSettingsForm');
00018
00019 class AppearanceForm extends PressSettingsForm {
00020
00022 var $_imagesSettingsName;
00023
00024
00028 function AppearanceForm($wizardMode = false) {
00029
00030
00031 $this->setImagesSettingsName(array(
00032 'homepageImage' => 'common.pressHomepageImage.altText',
00033 'pageHeaderTitleImage' => 'common.pageHeader.altText',
00034 'pageHeaderLogoImage' => 'common.pageHeaderLogo.altText'
00035 ));
00036
00037 $settings = array(
00038 'pageHeaderTitleType' => 'int',
00039 'pageHeaderTitle' => 'string',
00040 'additionalHomeContent' => 'string',
00041 'pressPageHeader' => 'string',
00042 'pressPageFooter' => 'string',
00043 'navItems' => 'object',
00044 'itemsPerPage' => 'int',
00045 'numPageLinks' => 'int'
00046 );
00047
00048 AppLocale::requireComponents(LOCALE_COMPONENT_APPLICATION_COMMON);
00049
00050 parent::PressSettingsForm($settings, 'controllers/tab/settings/appearance/form/appearanceForm.tpl', $wizardMode);
00051 }
00052
00053
00054
00055
00056
00061 function getImagesSettingsName() {
00062 return $this->_imagesSettingsName;
00063 }
00064
00070 function setImagesSettingsName($imagesSettingsName) {
00071 $this->_imagesSettingsName = $imagesSettingsName;
00072 }
00073
00074
00075
00076
00080 function getLocaleFieldNames() {
00081 return array(
00082 'pageHeaderTitleType',
00083 'pageHeaderTitle',
00084 'additionalHomeContent',
00085 'pressPageHeader',
00086 'pressPageFooter'
00087 );
00088 }
00089
00090
00091
00092
00093
00097 function fetch(&$request) {
00098 $press =& $request->getPress();
00099
00100
00101 $uploadImageLinkActions = array();
00102 foreach ($this->getImagesSettingsName() as $settingName => $altText) {
00103 $uploadImageLinkActions[$settingName] =& $this->_getFileUploadLinkAction($settingName, 'image', $request);
00104 }
00105
00106 $uploadCssLinkAction =& $this->_getFileUploadLinkAction('pressStyleSheet', 'css', $request);
00107
00108 $imagesViews = $this->_renderAllFormImagesViews($request);
00109 $cssView = $this->renderFileView('pressStyleSheet', $request);
00110
00111 $templateMgr =& TemplateManager::getManager();
00112 $templateMgr->assign_by_ref('uploadImageLinkActions', $uploadImageLinkActions);
00113 $templateMgr->assign_by_ref('uploadCssLinkAction', $uploadCssLinkAction);
00114
00115 $params = array(
00116 'imagesViews' => $imagesViews,
00117 'pressStyleSheetView' => $cssView,
00118 'locale' => AppLocale::getLocale()
00119 );
00120
00121 return parent::fetch(&$request, $params);
00122 }
00123
00124
00125
00126
00127
00135 function renderFileView($fileSettingName, &$request) {
00136 $file = $this->getData($fileSettingName);
00137 $locale = AppLocale::getLocale();
00138
00139
00140 if (!is_null($file) && key_exists($locale, $file)) {
00141
00142 $file = $file[$locale];
00143 }
00144
00145
00146 if (is_array($file)) {
00147 $templateMgr = TemplateManager::getManager();
00148 $deleteLinkAction =& $this->_getDeleteFileLinkAction($fileSettingName, $request);
00149
00150
00151 $imagesSettingsName = $this->getImagesSettingsName();
00152 if (in_array($fileSettingName, array_keys($imagesSettingsName))) {
00153 $template = 'controllers/tab/settings/formImageView.tpl';
00154
00155
00156 $localeKey = $imagesSettingsName[$fileSettingName];
00157 $commonAltText = __($localeKey);
00158 $templateMgr->assign('commonAltText', $commonAltText);
00159 } else {
00160 $template = 'controllers/tab/settings/formFileView.tpl';
00161 }
00162
00163 $templateMgr->assign('file', $file);
00164 $templateMgr->assign_by_ref('deleteLinkAction', $deleteLinkAction);
00165 $templateMgr->assign('fileSettingName', $fileSettingName);
00166
00167 return $templateMgr->fetch($template);
00168 } else {
00169 return null;
00170 }
00171 }
00172
00178 function deleteFile($fileSettingName, &$request) {
00179 $press =& $request->getPress();
00180 $locale = AppLocale::getLocale();
00181
00182
00183 $file = $this->getData($fileSettingName);
00184
00185
00186 if (key_exists($locale, $file)) {
00187
00188 $file = $file[$locale];
00189 } else {
00190 $locale = null;
00191 }
00192
00193
00194 import('classes.file.PublicFileManager');
00195 $publicFileManager = new PublicFileManager();
00196 if ($publicFileManager->removePressFile($press->getId(), $file['uploadName'])) {
00197 $settingsDao =& DAORegistry::getDAO('PressSettingsDAO');
00198 $settingsDao->deleteSetting($press->getId(), $fileSettingName, $locale);
00199 return true;
00200 } else {
00201 return false;
00202 }
00203 }
00204
00208 function execute($request) {
00209 parent::execute($request);
00210
00211
00212 import('lib.pkp.classes.controllers.listbuilder.ListbuilderHandler');
00213 ListbuilderHandler::unpack($request, $request->getUserVar('blocks'));
00214 }
00215
00222 function updateEntry(&$request, $rowId, $newRowId) {
00223 $plugins =& PluginRegistry::loadCategory('blocks');
00224 $plugin =& $plugins[$rowId];
00225 switch ($newRowId['listId']) {
00226 case 'unselected':
00227 $plugin->setEnabled(false);
00228 break;
00229 case 'leftContext':
00230 $plugin->setEnabled(true);
00231 $plugin->setBlockContext(BLOCK_CONTEXT_LEFT_SIDEBAR);
00232 $plugin->setSeq((int) $newRowId['sequence']);
00233 break;
00234 case 'rightContext':
00235 $plugin->setEnabled(true);
00236 $plugin->setBlockContext(BLOCK_CONTEXT_RIGHT_SIDEBAR);
00237 $plugin->setSeq((int) $newRowId['sequence']);
00238 break;
00239 default:
00240 assert(false);
00241 }
00242 }
00243
00247 function deleteEntry() {
00248 return false;
00249 }
00250
00254 function insertEntry() {
00255 return false;
00256 }
00257
00258
00259
00260
00261
00267 function _renderAllFormImagesViews(&$request) {
00268 $imagesViews = array();
00269 foreach ($this->getImagesSettingsName() as $imageSettingName => $altText) {
00270 $imagesViews[$imageSettingName] = $this->renderFileView($imageSettingName, $request);
00271 }
00272
00273 return $imagesViews;
00274 }
00275
00283 function &_getFileUploadLinkAction($settingName, $fileType, &$request) {
00284 $router =& $request->getRouter();
00285 import('lib.pkp.classes.linkAction.request.AjaxModal');
00286
00287 $ajaxModal = new AjaxModal(
00288 $router->url(
00289 $request, null, null, 'showFileUploadForm', null, array(
00290 'fileSettingName' => $settingName,
00291 'fileType' => $fileType
00292 )
00293 ),
00294 __('common.upload'),
00295 'modal_add_file'
00296 );
00297 $linkAction = new LinkAction(
00298 'uploadFile-' . $settingName,
00299 $ajaxModal,
00300 __('common.upload'),
00301 'add'
00302 );
00303
00304 return $linkAction;
00305 }
00306
00313 function &_getDeleteFileLinkAction($settingName, &$request) {
00314 $router =& $request->getRouter();
00315 import('lib.pkp.classes.linkAction.request.RemoteActionConfirmationModal');
00316
00317 $confirmationModal = new RemoteActionConfirmationModal(
00318 __('common.confirmDelete'), null,
00319 $router->url(
00320 $request, null, null, 'deleteFile', null, array(
00321 'fileSettingName' => $settingName,
00322 'tab' => 'appearance'
00323 )
00324 ),
00325 'modal_delete'
00326 );
00327 $linkAction = new LinkAction(
00328 'deleteFile-' . $settingName,
00329 $confirmationModal,
00330 __('common.delete'),
00331 null
00332 );
00333
00334 return $linkAction;
00335 }
00336 }
00337
00338 ?>