00001 <?php
00002
00020
00021
00022
00023 import('form.Form');
00024
00025 class ArticleGalleyForm extends Form {
00027 var $articleId;
00028
00030 var $galleyId;
00031
00033 var $galley;
00034
00040 function ArticleGalleyForm($articleId, $galleyId = null) {
00041 parent::Form('submission/layout/galleyForm.tpl');
00042 $journal =& Request::getJournal();
00043 $this->articleId = $articleId;
00044
00045 if (isset($galleyId) && !empty($galleyId)) {
00046 $galleyDao = &DAORegistry::getDAO('ArticleGalleyDAO');
00047 $this->galley = &$galleyDao->getGalley($galleyId, $articleId);
00048 if (isset($this->galley)) {
00049 $this->galleyId = $galleyId;
00050 }
00051 }
00052
00053
00054 $this->addCheck(new FormValidator($this, 'label', 'required', 'submission.layout.galleyLabelRequired'));
00055 $this->addCheck(new FormValidator($this, 'galleyLocale', 'required', 'submission.layout.galleyLocaleRequired'), create_function('$galleyLocale,$availableLocales', 'return in_array($galleyLocale,$availableLocales);'), array_keys($journal->getSupportedLocaleNames()));
00056 $this->addCheck(new FormValidatorPost($this));
00057 }
00058
00062 function display() {
00063 $journal =& Request::getJournal();
00064 $templateMgr = &TemplateManager::getManager();
00065
00066 $templateMgr->assign('articleId', $this->articleId);
00067 $templateMgr->assign('galleyId', $this->galleyId);
00068 $templateMgr->assign('supportedLocales', $journal->getSupportedLocaleNames());
00069 $templateMgr->assign('enablePublicGalleyId', $journal->getSetting('enablePublicGalleyId'));
00070
00071 if (isset($this->galley)) {
00072 $templateMgr->assign_by_ref('galley', $this->galley);
00073 }
00074 $templateMgr->assign('helpTopicId', 'editorial.layoutEditorsRole.layout');
00075 parent::display();
00076 }
00077
00081 function validate() {
00082
00083 $journal =& Request::getJournal();
00084 $galleyDao =& DAORegistry::getDAO('ArticleGalleyDAO');
00085
00086 $publicGalleyId = $this->getData('publicGalleyId');
00087 if ($publicGalleyId && $galleyDao->publicGalleyIdExists($publicGalleyId, $this->galleyId)) {
00088 $this->addError('publicGalleyId', Locale::translate('submission.layout.galleyPublicIdentificationExists'));
00089 $this->addErrorField('publicIssueId');
00090 }
00091
00092 return parent::validate();
00093 }
00094
00098 function initData() {
00099 if (isset($this->galley)) {
00100 $galley = &$this->galley;
00101 $this->_data = array(
00102 'label' => $galley->getLabel(),
00103 'publicGalleyId' => $galley->getPublicGalleyId(),
00104 'galleyLocale' => $galley->getLocale()
00105 );
00106
00107 } else {
00108 $this->_data = array();
00109 }
00110
00111 }
00112
00116 function readInputData() {
00117 $this->readUserVars(
00118 array(
00119 'label',
00120 'publicGalleyId',
00121 'deleteStyleFile',
00122 'galleyLocale'
00123 )
00124 );
00125 }
00126
00131 function execute($fileName = null) {
00132 import('file.ArticleFileManager');
00133 $articleFileManager = &new ArticleFileManager($this->articleId);
00134 $galleyDao = &DAORegistry::getDAO('ArticleGalleyDAO');
00135
00136 $fileName = isset($fileName) ? $fileName : 'galleyFile';
00137 $journal =& Request::getJournal();
00138
00139 if (isset($this->galley)) {
00140 $galley = &$this->galley;
00141
00142
00143 if ($articleFileManager->uploadedFileExists($fileName)) {
00144 if($galley->getFileId()) {
00145 $articleFileManager->uploadPublicFile($fileName, $galley->getFileId());
00146 } else {
00147 $fileId = $articleFileManager->uploadPublicFile($fileName);
00148 $galley->setFileId($fileId);
00149 }
00150
00151
00152 import('search.ArticleSearchIndex');
00153 ArticleSearchIndex::updateFileIndex($this->articleId, ARTICLE_SEARCH_GALLEY_FILE, $galley->getFileId());
00154 }
00155
00156 if ($articleFileManager->uploadedFileExists('styleFile')) {
00157
00158 $styleFileId = $articleFileManager->uploadPublicFile('styleFile', $galley->getStyleFileId());
00159 $galley->setStyleFileId($styleFileId);
00160
00161 } else if($this->getData('deleteStyleFile')) {
00162
00163 $styleFile = &$galley->getStyleFile();
00164 if (isset($styleFile)) {
00165 $articleFileManager->deleteFile($styleFile->getFileId());
00166 }
00167 }
00168
00169
00170 $galley->setLabel($this->getData('label'));
00171 if ($journal->getSetting('enablePublicGalleyId')) {
00172 $galley->setPublicGalleyId($this->getData('publicGalleyId'));
00173 }
00174 $galley->setLocale($this->getData('galleyLocale'));
00175 $galleyDao->updateGalley($galley);
00176
00177 } else {
00178
00179 if ($articleFileManager->uploadedFileExists($fileName)) {
00180 $fileType = $articleFileManager->getUploadedFileType($fileName);
00181 $fileId = $articleFileManager->uploadPublicFile($fileName);
00182
00183
00184 import('search.ArticleSearchIndex');
00185 ArticleSearchIndex::updateFileIndex($this->articleId, ARTICLE_SEARCH_GALLEY_FILE, $fileId);
00186 } else {
00187 $fileId = 0;
00188 }
00189
00190 if (isset($fileType) && strstr($fileType, 'html')) {
00191
00192 $galley = &new ArticleHTMLGalley();
00193 } else {
00194 $galley = &new ArticleGalley();
00195 }
00196
00197 $galley->setArticleId($this->articleId);
00198 $galley->setFileId($fileId);
00199
00200 if ($this->getData('label') == null) {
00201
00202 $enablePublicGalleyId = $journal->getSetting('enablePublicGalleyId');
00203 if ($galley->isHTMLGalley()) {
00204 $galley->setLabel('HTML');
00205 if ($enablePublicGalleyId) $galley->setPublicGalleyId('html');
00206 } else if (isset($fileType)) {
00207 if(strstr($fileType, 'pdf')) {
00208 $galley->setLabel('PDF');
00209 if ($enablePublicGalleyId) $galley->setPublicgalleyId('pdf');
00210 } else if (strstr($fileType, 'postscript')) {
00211 $galley->setLabel('PostScript');
00212 if ($enablePublicGalleyId) $galley->setPublicgalleyId('ps');
00213 } else if (strstr($fileType, 'xml')) {
00214 $galley->setLabel('XML');
00215 if ($enablePublicGalleyId) $galley->setPublicgalleyId('xml');
00216 }
00217 }
00218
00219 if ($galley->getLabel() == null) {
00220 $galley->setLabel(Locale::translate('common.untitled'));
00221 }
00222
00223 } else {
00224 $galley->setLabel($this->getData('label'));
00225 }
00226 $galley->setLocale($this->getData('galleyLocale'));
00227
00228
00229 $galleyDao->insertGalley($galley);
00230 $this->galleyId = $galley->getGalleyId();
00231 }
00232
00233 return $this->galleyId;
00234 }
00235
00240 function uploadImage() {
00241 import('file.ArticleFileManager');
00242 $fileManager = &new ArticleFileManager($this->articleId);
00243 $galleyDao = &DAORegistry::getDAO('ArticleGalleyDAO');
00244
00245 $fileName = 'imageFile';
00246
00247 if (isset($this->galley) && $fileManager->uploadedFileExists($fileName)) {
00248 $type = $fileManager->getUploadedFileType($fileName);
00249 $extension = $fileManager->getImageExtension($type);
00250 if (!$extension) {
00251 $this->addError('imageFile', Locale::translate('submission.layout.imageInvalid'));
00252 return false;
00253 }
00254
00255 if ($fileId = $fileManager->uploadPublicFile($fileName)) {
00256 $galleyDao->insertGalleyImage($this->galleyId, $fileId);
00257
00258
00259 $this->galley->setImageFiles($galleyDao->getGalleyImages($this->galleyId));
00260 }
00261
00262 }
00263 }
00264
00269 function deleteImage($imageId) {
00270 import('file.ArticleFileManager');
00271 $fileManager = &new ArticleFileManager($this->articleId);
00272 $galleyDao = &DAORegistry::getDAO('ArticleGalleyDAO');
00273
00274 if (isset($this->galley)) {
00275 $images = &$this->galley->getImageFiles();
00276 if (isset($images)) {
00277 for ($i=0, $count=count($images); $i < $count; $i++) {
00278 if ($images[$i]->getFileId() == $imageId) {
00279 $fileManager->deleteFile($images[$i]->getFileId());
00280 $galleyDao->deleteGalleyImage($this->galleyId, $imageId);
00281 unset($images[$i]);
00282 break;
00283 }
00284 }
00285 }
00286 }
00287 }
00288 }
00289
00290 ?>