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

controllers/tab/settings/appearance/form/AppearanceForm.inc.php

00001 <?php
00002 
00016 // Import the base Form.
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       // Define an array with the image setting name as key and its
00030       // common alternate text locale key as value.
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    // Getters and Setters
00056    //
00061    function getImagesSettingsName() {
00062       return $this->_imagesSettingsName;
00063    }
00064 
00070    function setImagesSettingsName($imagesSettingsName) {
00071       $this->_imagesSettingsName = $imagesSettingsName;
00072    }
00073 
00074    //
00075    // Implement template methods from Form.
00076    //
00080    function getLocaleFieldNames() {
00081       return array(
00082          'pageHeaderTitleType',
00083          'pageHeaderTitle',
00084          'additionalHomeContent',
00085          'pressPageHeader',
00086          'pressPageFooter'
00087       );
00088    }
00089 
00090 
00091    //
00092    // Extend methods from PressSettingsForm.
00093    //
00097    function fetch(&$request) {
00098       $press =& $request->getPress();
00099 
00100       // Get all upload form image link actions.
00101       $uploadImageLinkActions = array();
00102       foreach ($this->getImagesSettingsName() as $settingName => $altText) {
00103          $uploadImageLinkActions[$settingName] =& $this->_getFileUploadLinkAction($settingName, 'image', $request);
00104       }
00105       // Get the css upload link action.
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    // Public methods.
00127    //
00135    function renderFileView($fileSettingName, &$request) {
00136       $file = $this->getData($fileSettingName);
00137       $locale = AppLocale::getLocale();
00138 
00139       // Check if the file is localized.
00140       if (!is_null($file) && key_exists($locale, $file)) {
00141          // We use the current localized file value.
00142          $file = $file[$locale];
00143       }
00144 
00145       // Only render the file view if we have a file.
00146       if (is_array($file)) {
00147          $templateMgr = TemplateManager::getManager();
00148          $deleteLinkAction =& $this->_getDeleteFileLinkAction($fileSettingName, $request);
00149 
00150          // Get the right template to render the view.
00151          $imagesSettingsName = $this->getImagesSettingsName();
00152          if (in_array($fileSettingName, array_keys($imagesSettingsName))) {
00153             $template = 'controllers/tab/settings/formImageView.tpl';
00154 
00155             // Get the common alternate text for the image.
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       // Get the file.
00183       $file = $this->getData($fileSettingName);
00184 
00185       // Check if the file is localized.
00186       if (key_exists($locale, $file)) {
00187          // We use the current localized file value.
00188          $file = $file[$locale];
00189       } else {
00190          $locale = null;
00191       }
00192 
00193       // Deletes the file and its settings.
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       // Save block plugins context positions.
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]; // Ref hack
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    // Private helper methods
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 ?>

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