17 import(
'lib.pkp.classes.form.Form');
18 import(
'lib.pkp.classes.linkAction.LinkAction');
19 import(
'lib.pkp.classes.linkAction.request.RemoteActionConfirmationModal');
21 import(
'classes.issue.Issue');
32 parent::__construct(
'controllers/grid/issues/form/issueForm.tpl');
36 $this->
addCheck(
new FormValidatorCustom($this,
'showVolume',
'optional',
'editor.issues.volumeRequired',
function($showVolume) use ($form) {
37 return !$showVolume || $form->getData(
'volume') ?
true :
false;
39 $this->
addCheck(
new FormValidatorCustom($this,
'showNumber',
'optional',
'editor.issues.numberRequired',
function($showNumber) use ($form) {
40 return !$showNumber || $form->getData(
'number') ?
true :
false;
42 $this->
addCheck(
new FormValidatorCustom($this,
'showYear',
'optional',
'editor.issues.yearRequired',
function($showYear) use ($form) {
43 return !$showYear || $form->getData(
'year') ?
true :
false;
45 $this->
addCheck(
new FormValidatorCustom($this,
'showTitle',
'optional',
'editor.issues.titleRequired',
function($showTitle) use ($form) {
46 return !$showTitle || implode(
'', $form->getData(
'title'))!=
'' ? true :
false;
60 return $issueDao->getLocaleFieldNames();
66 function fetch($request, $template =
null, $display =
false) {
69 $templateMgr->assign(array(
70 'issue' => $this->issue,
71 'issueId' => $this->issue->getId(),
76 'deleteCoverImageLinkAction',
80 $request->getSession(),
81 __(
'common.confirmDelete'),
null,
82 $request->getRouter()->url(
83 $request,
null,
null,
'deleteCoverImage',
null, array(
84 'coverImage' => $coverImage,
85 'issueId' => $this->issue->getId(),
96 return parent::fetch($request, $template, $display);
102 function validate($callHooks =
true) {
103 if ($temporaryFileId = $this->
getData(
'temporaryFileId')) {
105 $user = $request->getUser();
107 $temporaryFile = $temporaryFileDao->getTemporaryFile($temporaryFileId, $user->getId());
109 import(
'classes.file.PublicFileManager');
111 if (!$publicFileManager->getImageExtension($temporaryFile->getFileType())) {
112 $this->
addError(
'coverImage', __(
'editor.issues.invalidCoverImageFormat'));
117 if ($this->
getData(
'urlPath')) {
118 if (ctype_digit((
string) $this->
getData(
'urlPath'))) {
119 $this->
addError(
'urlPath', __(
'publication.urlPath.numberInvalid'));
125 (!$this->issue || $this->issue->getId() !==
$issue->getId())
127 $this->
addError(
'urlPath', __(
'publication.urlPath.duplicate'));
133 return parent::validate($callHooks);
140 if (isset($this->issue)) {
142 $this->_data = array(
143 'title' => $this->issue->getTitle(
null),
144 'volume' => $this->issue->getVolume(),
145 'number' => $this->issue->getNumber(),
146 'year' => $this->issue->getYear(),
147 'datePublished' => $this->issue->getDatePublished(),
148 'description' => $this->issue->getDescription(
null),
149 'showVolume' => $this->issue->getShowVolume(),
150 'showNumber' => $this->issue->getShowNumber(),
151 'showYear' => $this->issue->getShowYear(),
152 'showTitle' => $this->issue->getShowTitle(),
153 'coverImage' => $this->issue->getCoverImage($locale),
154 'coverImageAltText' => $this->issue->getCoverImageAltText($locale),
155 'urlPath' => $this->issue->getData(
'urlPath'),
159 $this->_data = array(
189 $this->
addCheck(
new FormValidatorCustom($this,
'issueForm',
'required',
'editor.issues.issueIdentificationRequired',
function() use ($form) {
190 return $form->getData(
'showVolume') || $form->getData(
'showNumber') || $form->getData(
'showYear') || $form->getData(
'showTitle');
197 function execute(...$functionArgs) {
198 parent::execute(...$functionArgs);
201 $journal = $request->getJournal();
208 $issue = $issueDao->newDataObject();
209 switch ($journal->getData(
'publishingMode')) {
210 case PUBLISHING_MODE_SUBSCRIPTION:
211 case PUBLISHING_MODE_NONE:
212 $issue->setAccessStatus(ISSUE_ACCESS_SUBSCRIPTION);
214 case PUBLISHING_MODE_OPEN:
216 $issue->setAccessStatus(ISSUE_ACCESS_OPEN);
221 $volume = $this->
getData(
'volume');
222 $number = $this->
getData(
'number');
223 $year = $this->
getData(
'year');
225 $issue->setJournalId($journal->getId());
227 $issue->setVolume(empty($volume) ?
null : $volume);
228 $issue->setNumber(empty($number) ?
null : $number);
229 $issue->setYear(empty($year) ?
null : $year);
233 $issue->setDescription($this->
getData(
'description'),
null);
234 $issue->setShowVolume($this->
getData(
'showVolume'));
235 $issue->setShowNumber($this->
getData(
'showNumber'));
236 $issue->setShowYear($this->
getData(
'showYear'));
237 $issue->setShowTitle($this->
getData(
'showTitle'));
238 $issue->setData(
'urlPath', $this->
getData(
'urlPath'));
245 $issueDao->insertObject(
$issue);
250 if ($temporaryFileId = $this->
getData(
'temporaryFileId')) {
251 $user = $request->getUser();
253 $temporaryFile = $temporaryFileDao->getTemporaryFile($temporaryFileId, $user->getId());
255 import(
'classes.file.PublicFileManager');
257 $newFileName =
'cover_issue_' .
$issue->getId() .
'_' . $locale . $publicFileManager->getImageExtension($temporaryFile->getFileType());
258 $journal = $request->getJournal();
259 $publicFileManager->copyContextFile($journal->getId(), $temporaryFile->getFilePath(), $newFileName);
260 $issue->setCoverImage($newFileName, $locale);
261 $issueDao->updateObject(
$issue);
264 $issue->setCoverImageAltText($this->
getData(
'coverImageAltText'), $locale);
268 $issueDao->updateObject(
$issue);