Example #1
0
 public function testPopulateFromModel()
 {
     $this->useEnglish();
     $form = new Admin_Form_Person();
     $person = new Opus_Person();
     $person->setFirstName('John');
     $person->setLastName('Doe');
     $person->setAcademicTitle('PhD');
     $person->setPlaceOfBirth('Berlin');
     $datesHelper = $form->getDatesHelper();
     $person->setDateOfBirth($datesHelper->getOpusDate('1990/01/01'));
     $person->setEmail('*****@*****.**');
     $person->setIdentifierGnd('1234');
     $person->setIdentifierOrcid('3456');
     $person->setIdentifierMisc('5678');
     $person->store();
     $form->populateFromModel($person);
     $personId = $person->getId();
     $person->delete();
     $this->assertEquals($personId, $form->getElement('PersonId')->getValue());
     $this->assertEquals($person->getLastName(), $form->getElement('LastName')->getValue());
     $this->assertEquals($person->getFirstName(), $form->getElement('FirstName')->getValue());
     $this->assertEquals($person->getAcademicTitle(), $form->getElement('AcademicTitle')->getValue());
     $this->assertEquals($person->getEmail(), $form->getElement('Email')->getValue());
     $this->assertEquals($person->getPlaceOfBirth(), $form->getElement('PlaceOfBirth')->getValue());
     $this->assertEquals('1990/01/01', $form->getElement('DateOfBirth')->getValue());
     $this->assertEquals($form->getElement('IdentifierGnd')->getValue(), '1234');
     $this->assertEquals($form->getElement('IdentifierOrcid')->getValue(), '3456');
     $this->assertEquals($form->getElement('IdentifierMisc')->getValue(), '5678');
 }
Example #2
0
 /**
  * Action zum Editieren einer Person, die mit einem Dokument verknüpft ist.
  *
  * Wird über den Edit-Link für eine Person im Metadatenformular eines Dokuments aufgerufen.
  */
 public function editlinkedAction()
 {
     $docId = $this->getRequest()->getParam('document');
     $document = $this->__documentsHelper->getDocumentForId($docId);
     if (!isset($document)) {
         return $this->_redirectTo('index', array('failure' => 'admin_document_error_novalidid'), 'documents', 'admin');
     }
     $form = new Admin_Form_Person();
     if (!$this->getRequest()->isPost()) {
         // Formular anzeigen
         $personId = $this->getRequest()->getParam('personId');
         if (strlen(trim($personId)) == 0 || is_null($personId)) {
             $this->getLogger()->err(__METHOD__ . ' No personId parameter.');
             return $this->returnToMetadataForm($docId);
         }
         if (!is_numeric($personId)) {
             $this->getLogger()->err(__METHOD__ . " Bad personId = '{$personId}' parameter.");
             return $this->returnToMetadataForm($docId);
         }
         try {
             $person = new Opus_Person($personId);
         } catch (Opus_Model_NotFoundException $omnfe) {
             $this->getLogger()->err(__METHOD__ . ' ' . $omnfe->getMessage());
             return $this->returnToMetadataForm($docId);
         }
         $form->populateFromModel($person);
         $this->view->form = $form;
     } else {
         // POST verarbeiten
         $post = $this->getRequest()->getPost();
         $form->populate($post);
         $result = $form->processPost($post, $post);
         switch ($result) {
             case Admin_Form_Person::RESULT_SAVE:
                 if ($form->isValid($post)) {
                     $person = $form->getModel();
                     $person->store();
                     return $this->_redirectToAndExit('edit', null, 'document', 'admin', array('id' => $docId, 'continue' => 'updateperson', 'person' => $person->getId()));
                 } else {
                     // TODO Validierungsfehlernachricht für Formular anzeigen (notwendig?)
                 }
                 break;
             case Admin_Form_Person::RESULT_CANCEL:
                 // Person nicht speichern
                 return $this->returnToMetadataForm($docId);
                 break;
             default:
                 break;
         }
         $this->view->form = $form;
     }
     $this->view->document = $document;
     $this->view->documentAdapter = new Util_DocumentAdapter($this->view, $document);
     // Beim wechseln der Sprache würden Änderungen in editierten Felder verloren gehen
     $this->view->languageSelectorDisabled = true;
     $this->view->breadcrumbsDisabled = true;
 }