$deleted_notebook_page_field_ids = explode(',', $_REQUEST['deleted_page_field_ids']);
 //        util_prePrintR($deleted_notebook_page_field_ids);
 if ($deleted_notebook_page_field_ids) {
     foreach ($deleted_notebook_page_field_ids as $deleted_notebook_page_fied_id) {
         if ($deleted_notebook_page_fied_id) {
             $del_npf = Notebook_Page_Field::getOneFromDb(['notebook_page_field_id' => $deleted_notebook_page_fied_id], $DB);
             if ($del_npf->matchesDb) {
                 $del_npf->doDelete();
             }
         }
     }
 }
 $intitial_notebook_page_field_ids = explode(',', $_REQUEST['initial_page_field_ids']);
 foreach ($intitial_notebook_page_field_ids as $notebook_page_field_id) {
     if (!in_array($notebook_page_field_id, $deleted_notebook_page_field_ids)) {
         $npf = Notebook_Page_Field::getOneFromDb(['notebook_page_field_id' => $notebook_page_field_id], $DB);
         if ($npf->matchesDb) {
             $new_npf_vals = ['notebook_page_field-value_open_' . $notebook_page_field_id => $_REQUEST['page_field_open_value_' . $notebook_page_field_id]];
             if (isset($_REQUEST['page_field_select_' . $notebook_page_field_id])) {
                 $new_term_value_id = $_REQUEST['page_field_select_' . $notebook_page_field_id];
                 if ($new_term_value_id < 1) {
                     $new_term_value_id = 0;
                 }
                 $new_npf_vals['notebook_page_field-value_metadata_term_value_id_' . $notebook_page_field_id] = $new_term_value_id;
             }
             $npf->setFromArray($new_npf_vals);
             $npf->updateDb();
         }
     }
 }
 $created_notebook_page_field_ids = explode(',', $_REQUEST['created_page_field_ids']);
 function testRenderAsListItemEdit_noTermSet()
 {
     $npf = Notebook_Page_Field::getOneFromDb(['notebook_page_field_id' => 1204], $this->DB);
     $mds = Metadata_Structure::getOneFromDb(['metadata_structure_id' => 6004], $this->DB);
     global $USER;
     $USER = User::getOneFromDb(['username' => TESTINGUSER], $this->DB);
     $canonical = '<li id="list_item-notebook_page_field_1204" data-notebook_page_field_id="1204" data-created_at="' . $npf->created_at . '" data-updated_at="' . $npf->updated_at . '" data-notebook_page_id="1101" data-label_metadata_structure_id="6004" data-value_metadata_term_value_id="0" data-value_open="wavy-ish" data-flag_delete="0">' . '<div class="notebook-page-field-label field-label" title="' . htmlentities($mds->description) . '">' . $mds->renderAsFullName() . '</div> : <div class="notebook-page-field-value field-value">' . util_lang('metadata_structure_has_no_term_set') . '; <input type="text" name="page_field_open_value_1204" id="page_field_open_value_1204" class="page_field_open_value" value="wavy-ish"/>' . '</div> <button class="btn btn-danger button-mark-pagefield-for-delete" title="' . util_lang('mark_for_delete', 'ucfirst') . '" data-do-mark-title="' . util_lang('mark_for_delete', 'ucfirst') . '" data-remove-mark-title="' . util_lang('unmark_for_delete', 'ucfirst') . '" data-for_dom_id="list_item-notebook_page_field_1204" data-notebook_page_field_id="1204"><i class="icon-remove-sign icon-white"></i></button></li>';
     $rendered = $npf->renderAsListItemEdit();
     //            echo "<pre>\n".htmlentities($canonical)."\n--------\n".htmlentities($rendered)."\n</pre>";
     $this->assertEqual($canonical, $rendered);
     $this->assertNoPattern('/IMPLEMENTED/', $rendered);
 }
 function testBaseDataUpdate()
 {
     $this->doLoginBasic();
     $this->get('http://localhost/digitalfieldnotebooks/app_code/notebook_page.php?action=edit&notebook_page_id=1101');
     $this->checkBasicAsserts();
     $new_notes = 'new notes for the page';
     $new_specimen_notes = 'new notes for the specimen';
     ////      NOTE: the identifier to use for setField is the value of the name attribute of the field
     $this->setField('notes', $new_notes);
     // page field alteration
     $this->assertTrue($this->setField('page_field_select_1201', '6204'));
     $this->assertTrue($this->setField('page_field_open_value_1204', 'new open value'));
     // page field addition
     //        $this->todo('figure out how to do page field addition');
     //        $this->todo('figure out how to do page deletion');
     // specimen alteration
     $this->assertTrue($this->setField('specimen-notes_8002', $new_specimen_notes));
     //        $this->todo('figure out how to do specimen addition');
     //        $this->todo('figure out how to do specimen deletion');
     //        $this->showContent();
     ////        NOTE: the identifier to use for buttons is the value of the value attribute of the button
     $this->click('<i class="icon-ok-sign icon-white"></i> ' . util_lang('update', 'properize'));
     //
     //        $this->showContent();
     //
     $this->checkBasicAsserts();
     $this->assertText($new_notes);
     //
     $np = Notebook_Page::getOneFromDb(['notebook_page_id' => 1101], $this->DB);
     $this->assertEqual($np->notes, $new_notes);
     //        $this->todo('check page field alteration on 1201');
     $npf = Notebook_Page_Field::getOneFromDb(['notebook_page_field_id' => 1201], $this->DB);
     $this->assertEqual($npf->value_metadata_term_value_id, 6204);
     $npf = Notebook_Page_Field::getOneFromDb(['notebook_page_field_id' => 1204], $this->DB);
     $this->assertEqual($npf->value_open, 'new open value');
     //        $this->todo('check page field addition');
     //        $this->todo('check page field deletion');
     //        $this->todo('check specimen alteration on 8002');
     $s = Specimen::getOneFromDb(['specimen_id' => 8002], $this->DB);
     $this->assertEqual($s->notes, $new_specimen_notes);
     //        $this->todo('check specimen addition');
     //        $this->todo('check specimen deletion');
     //        util_prePrintR(htmlentities($this->getBrowser()->getContent()));
     echo "<br><b>NOTE: skipping create and delete tests for pagefields and specimens because that requires javascript interaction</b><br/>\n";
 }
 function testDoDelete()
 {
     $np = Notebook_Page::getOneFromDb(['notebook_page_id' => 1101], $this->DB);
     $np->loadSpecimens();
     $np->loadPageFields();
     $this->assertTrue($np->matchesDb);
     $this->assertTrue($np->page_fields[0]->matchesDb);
     $this->assertTrue($np->page_fields[1]->matchesDb);
     $this->assertTrue($np->page_fields[2]->matchesDb);
     $this->assertTrue($np->page_fields[3]->matchesDb);
     $this->assertTrue($np->specimens[0]->matchesDb);
     $this->assertTrue($np->specimens[1]->matchesDb);
     //***********
     $np->doDelete();
     //***********
     $np2 = Notebook_Page::createNewNotebookPageForNotebook(1001, $this->DB);
     $this->assertFalse($np2->matchesDb);
     $npf = Notebook_Page_Field::getOneFromDb(['notebook_page_field_id' => 1201], $this->DB);
     $this->assertFalse($npf->matchesDb);
     $npf = Notebook_Page_Field::getOneFromDb(['notebook_page_field_id' => 1202], $this->DB);
     $this->assertFalse($npf->matchesDb);
     $npf = Notebook_Page_Field::getOneFromDb(['notebook_page_field_id' => 1203], $this->DB);
     $this->assertFalse($npf->matchesDb);
     $npf = Notebook_Page_Field::getOneFromDb(['notebook_page_field_id' => 1204], $this->DB);
     $this->assertFalse($npf->matchesDb);
     $s = Specimen::getOneFromDb(['specimen_id' => 8002], $this->DB);
     $this->assertFalse($s->matchesDb);
     $s = Specimen::getOneFromDb(['specimen_id' => 8003], $this->DB);
     $this->assertFalse($s->matchesDb);
     $si = Specimen_Image::getOneFromDb(['specimen_image_id' => 8103], $this->DB);
     $this->assertFalse($si->matchesDb);
     $si = Specimen_Image::getOneFromDb(['specimen_image_id' => 8104], $this->DB);
     $this->assertFalse($si->matchesDb);
 }