/** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { /** @var Journal $journal */ $journal = $options['journal']; $builder->add('translations', 'a2lix_translations', ['fields' => ['title' => ['field_type' => 'text'], 'subtitle' => [], 'subjects' => [], 'keywords' => ['label' => 'keywords', 'field_type' => 'tags'], 'abstract' => ['required' => false, 'attr' => array('class' => ' form-control wysihtml5'), 'field_type' => 'textarea']]])->add('titleTransliterated')->add('issue', 'entity', array('label' => 'issue', 'class' => 'Ojs\\JournalBundle\\Entity\\Issue', 'required' => false, 'attr' => array('class' => ' form-control select2-element'), 'query_builder' => function (EntityRepository $er) use($journal) { $qb = $er->createQueryBuilder('i'); $qb->where('i.journal = :journal')->setParameter('journal', $journal); return $qb; }))->add('status', 'choice', array('label' => 'status', 'attr' => array('class' => ' form-control'), 'choices' => CommonParams::statusText()))->add('doi', 'text', array('label' => 'doi', 'required' => false, 'attr' => array('class' => ' form-control')))->add('otherId', 'text', array('label' => 'otherid', 'required' => false, 'attr' => array('class' => ' form-control')))->add('isAnonymous', 'radio', array('label' => 'isAnonymous', 'required' => false))->add('pubdate', 'collot_datetime', array('label' => 'pubdate', 'date_format' => 'dd-MM-yyyy', 'pickerOptions' => ['format' => 'dd-mm-yyyy', 'startView' => 'month', 'minView' => 'month', 'todayBtn' => 'true', 'todayHighlight' => 'true', 'autoclose' => 'true']))->add('pubdateSeason', 'text', array('label' => 'Pubdateseason', 'required' => false, 'attr' => array('class' => ' form-control')))->add('part', 'text', array('label' => 'part', 'required' => false, 'attr' => array('class' => ' form-control')))->add('firstPage', 'integer', array('label' => 'first_page', 'required' => false, 'attr' => array('class' => ' form-control')))->add('lastPage', 'integer', array('label' => 'last_page', 'required' => false, 'attr' => array('class' => ' form-control')))->add('uri', 'text', array('label' => 'url', 'required' => false, 'attr' => array('class' => ' form-control')))->add('abstractTransliterated', 'textarea', array('label' => 'abstractTransliterated', 'required' => false, 'attr' => array('class' => ' form-control')))->add('articleType', 'entity', array('label' => 'article.type', 'class' => 'Ojs\\JournalBundle\\Entity\\ArticleTypes', 'required' => false))->add('orderNum', 'integer', array('label' => 'order', 'required' => false))->add('submissionDate', 'collot_datetime', array('label' => 'submissionDate', 'date_format' => 'dd-MM-yyyy', 'pickerOptions' => ['format' => 'dd-mm-yyyy', 'startView' => 'month', 'minView' => 'month', 'todayBtn' => 'true', 'todayHighlight' => 'true', 'autoclose' => 'true']))->add('header', 'jb_crop_image_ajax', array('endpoint' => 'article', 'label' => 'Header Image', 'img_width' => 960, 'img_height' => 200, 'crop_options' => array('aspect-ratio' => 960 / 200, 'maxSize' => "[960, 200]"))); }
/** * Lists all new Article submissions entities. * * @param Request $request * @param bool $all * @return RedirectResponse|Response */ public function indexAction(Request $request, $all = false) { $translator = $this->get('translator'); /** @var Journal $currentJournal */ $currentJournal = $this->get('ojs.journal_service')->getSelectedJournal(); if ($all && !$this->isGranted('VIEW', $currentJournal, 'articles') || !$all && !$this->isGranted('CREATE', $currentJournal, 'articles')) { return $this->redirect($this->generateUrl('ojs_user_index')); } $user = $this->getUser(); $source1 = new Entity('OjsJournalBundle:Article', 'submission'); $source2 = new Entity('OjsJournalBundle:Article', 'submission'); $source1TableAlias = $source1->getTableAlias(); $source2TableAlias = $source2->getTableAlias(); $source1->manipulateQuery(function (QueryBuilder $qb) use($source1TableAlias, $user, $currentJournal, $all) { $qb->andWhere($source1TableAlias . '.status IN (:notDraftStatuses)')->setParameter('notDraftStatuses', array(-3, -2, 0, 1)); if (!$all) { $qb->andWhere($source1TableAlias . '.submitterUser = :user')->setParameter('user', $user); } return $qb; }); $source2->manipulateQuery(function (QueryBuilder $qb) use($source2TableAlias, $user, $currentJournal, $all) { $qb->andWhere($source2TableAlias . '.status = :status')->setParameter('status', -1); if (!$all) { $qb->andWhere($source2TableAlias . '.submitterUser = :user')->setParameter('user', $user); } }); $gridManager = $this->get('grid.manager'); $submissionsGrid = $gridManager->createGrid('submission'); $drafts = $gridManager->createGrid('drafts'); $source1->manipulateRow(function (Row $row) use($translator, $currentJournal) { /** @var Article $entity */ $entity = $row->getEntity(); $entity->setDefaultLocale($currentJournal->getMandatoryLang()->getCode()); $statusText = CommonParams::statusText($row->getField('status')); if (!is_array($statusText)) { $row->setField('status', $translator->trans($statusText)); } else { $row->setField('status', $translator->trans('status.unknown')); } $row->setField('title', $entity->getTitle()); return $row; }); $source2->manipulateRow(function (Row $row) use($translator, $request) { $entity = $row->getEntity(); /** @var Article $entity */ $entity->setDefaultLocale($request->getDefaultLocale()); $statusText = CommonParams::statusText($row->getField('status')); if (!is_array($statusText)) { $row->setField('status', $translator->trans($statusText)); } else { $row->setField('status', $translator->trans('status.unknown')); } $row->setField('title', $entity->getTitle()); return $row; }); $submissionsGrid->setSource($source1); $drafts->setSource($source2); /** @var GridAction $gridAction */ $gridAction = $this->get('grid_action'); /** $submissionsGrid->addRowAction( $gridAction->showAction('ojs_journal_article_show', ['id', 'journalId' => $currentJournal->getId()]) ); $submissionsGrid->addRowAction( $gridAction->editAction('ojs_journal_article_edit', ['id', 'journalId' => $currentJournal->getId()]) ); $submissionsGrid->addRowAction( $gridAction->deleteAction('ojs_journal_article_delete', ['id', 'journalId' => $currentJournal->getId()]) ); * **/ $rowAction = []; $actionColumn = new ActionsColumn("actions", 'actions'); $rowAction[] = $gridAction->submissionResumeAction('ojs_journal_submission_edit', ['journalId' => $currentJournal->getId(), 'id']); $rowAction[] = $gridAction->submissionCancelAction('ojs_journal_submission_cancel', ['journalId' => $currentJournal->getId(), 'id']); $actionColumn->setRowActions($rowAction); $drafts->addColumn($actionColumn); $data = ['page' => 'submission', 'submissions' => $submissionsGrid, 'drafts' => $drafts, 'all' => $all]; return $gridManager->getGridManagerResponse('OjsJournalBundle:ArticleSubmission:index.html.twig', $data); }
/** * * @return string */ public function getStatusText() { return CommonParams::statusText($this->status); }