Ejemplo n.º 1
0
 /**
  * Admin constructor.
  *
  * @param string                  $id
  * @param string                  $type
  * @param string[]                $classes
  * @param array                   $data
  * @param string                  $title
  * @param string                  $baseHref
  * @param VisitorInterface        $initializer
  * @param VisitorInterface        $renderer
  * @param WritableInterface       $pageContents
  * @param QueryWrapperInterface[] $queries
  * @throws \Exception If an invalid object manager mode is provided.
  */
 public function __construct($id, $type, array $classes, array $data, $title, $baseHref, VisitorInterface $initializer, VisitorInterface $renderer, WritableInterface $pageContents, array $queries)
 {
     /** @var string $mode */
     $mode = $this->getParameter(static::MODE_FIELD, static::MODE_PAGE);
     $this->queries = $queries;
     switch ($mode) {
         case static::MODE_PAGE:
             $writable = $pageContents;
             $type = static::TYPE_MINI_HEADER;
             break;
         case static::MODE_TABLE:
             $sectionBuilder = SectionBuilder::begin()->setId('admin-tables-container');
             foreach ($this->makeTables() as $table) {
                 $sectionBuilder->addWritable($table);
             }
             $writable = WritableBearerBuilder::begin()->addWritable($sectionBuilder->build())->build();
             $type = static::TYPE_MINI_HEADER;
             break;
         case static::MODE_DETAIL:
             $writable = $this->makeDetail();
             $type = static::TYPE_BARE;
             break;
         case static::MODE_DELETE:
             $writable = $this->makeDelete();
             $type = static::TYPE_BARE;
             break;
         default:
             throw new \Exception("Invalid object manager mode '{$mode}' provided in URL parameters.");
     }
     parent::__construct($id, $type, $classes, $data, $title, $baseHref, $initializer, $renderer, $writable);
 }
Ejemplo n.º 2
0
 /**
  * @return PageInterface
  * @throws Exception If the a query has not been provided.
  */
 public function build()
 {
     $this->validateInitializer();
     $this->validateRenderer();
     if ($this->queries === []) {
         throw new Exception("For an object manager page, you must provide a Propel query(ies) using ::addQuery.");
     }
     $pageContents = WritableBearerBuilder::begin()->addWritable(SectionBuilder::begin()->setType(SectionBuilder::TYPE_DIV)->setId('page-content')->addWritable(SectionBuilder::begin()->setType(SectionBuilder::TYPE_DIV)->setId('page-content-head')->addWritable($this->buildTopMatter())->build())->addWritable(SectionBuilder::begin()->setType(SectionBuilder::TYPE_DIV)->setId('page-content-body')->addWritable($this->buildWritableBearer())->addWritable(SectionBuilder::begin()->setId('admin-tables-container')->build())->build())->build())->build();
     $admin = new Admin($this->id, $this->type, $this->classes, $this->data, $this->title, $this->baseHref, $this->initializer, $this->renderer, $pageContents, $this->queries);
     return $admin;
 }
Ejemplo n.º 3
0
 /**
  * Basic tests for the Form builder classes.
  *
  * Any test here could potentially fail because of a failure in the constructed form.
  *
  * @throws \Exception
  */
 public function testBuilder()
 {
     $action = new FormAction([], [], "label", "method", "");
     $formFoundValid = false;
     $onValidFunc = function () use($formFoundValid) {
         $formFoundValid = true;
     };
     $formFoundInvalid = false;
     $onInvalidFunc = function () use($formFoundInvalid) {
         $formFoundInvalid = true;
     };
     $field = new Field([], [], 'literal', 'A literal field', []);
     $fieldName = "field";
     $id = "f" . (string) rand();
     $type = "t" . (string) rand();
     $method = "m" . (string) rand();
     $target = "t" . (string) rand();
     $classes = [(string) rand(), (string) rand()];
     $form = FormBuilder::begin()->clear()->setId($id)->addClass($classes[0])->addClass($classes[1])->setType($type)->setMethod($method)->setTarget($target)->addAction($action)->addWritable($field, $fieldName)->addOnInvalidFunc($onInvalidFunc)->addOnValidFunc($onValidFunc)->build();
     $this->assertEquals([$action], $form->getActions());
     $this->assertContains($field, $form->getWritables());
     $this->assertEquals($id, $form->getId());
     $this->assertEquals($classes, $form->getClasses());
     $this->assertEquals($type, $form->getType());
     $this->assertEquals($method, $form->getMethod());
     $this->assertEquals($target, $form->getTarget());
     /* Test default type/method/target */
     $form = FormBuilder::begin()->setId($id)->build();
     $this->assertEquals("base", $form->getType());
     $this->assertEquals("post", $form->getMethod());
     $this->assertEquals("_self", $form->getTarget());
     $object = $this->instances[0];
     $form = FormBuilder::begin()->clear()->setId("f-" . (string) rand())->addObject($object)->build();
     $expectedFieldNames = $object->getQualifiedPascalCasedColumnNames();
     $this->assertEquals($expectedFieldNames, array_keys($form->getWritables()));
     /* Test FormBuilder::addFieldBearer */
     $field = new Field([], [], 'literal', 'A literal field', []);
     $writableBearer = WritableBearerBuilder::begin()->addWritable($field, "field")->build();
     $form = FormBuilder::begin()->setId("f-" . (string) rand())->addWritableBearer($writableBearer)->build();
     $this->assertContains("field", array_keys($form->getWritables()));
     /* Test FormBuilder::addSubForms */
     $field = new Field([], [], 'literal', 'A literal field', []);
     $writableBearer = WritableBearerBuilder::begin()->addWritable($field, "field")->build();
     $form1 = FormBuilder::begin()->setId("f-" . (string) rand())->addWritableBearer($writableBearer)->build();
     $form2 = FormBuilder::begin()->setId("f-" . (string) rand())->addWritableBearer($writableBearer)->build();
     $form = FormBuilder::begin()->setId("f-" . (string) rand())->addWritable($form1, "Form1")->addWritable($form2, "Form2")->build();
     $this->assertEquals(2, sizeof($form->getWritables()));
     $this->assertContains($form1, $form->getWritables());
     $this->assertContains($form2, $form->getWritables());
 }
Ejemplo n.º 4
0
 /**
  * Test subforms get unique suffixes.
  */
 public function testUniqueSuffixesForSubforms()
 {
     $initializer = new Initializer();
     $fieldBearer1 = WritableBearerBuilder::begin()->addWritable(new Field([], [], 'literal', 'A literal field', [], "field"))->addWritable(new Field([], [], 'literal', 'A second literal field', []), "field2")->build();
     $fieldBearer2 = WritableBearerBuilder::begin()->addWritable(new Field([], [], 'literal', 'A literal field', [], "field"))->addWritable(new Field([], [], 'literal', 'A second literal field', []), "field2")->build();
     $form1 = FormBuilder::begin()->addWritableBearer($fieldBearer1)->setId("f-" . (string) rand())->build();
     $form2 = FormBuilder::begin()->addWritableBearer($fieldBearer2)->setId("f-" . (string) rand())->build();
     $form = FormBuilder::begin()->setId("f-" . (string) rand())->addWritable($form1, 'Form1')->addWritable($form2, 'Form2')->build();
     // Initialize the form to add suffixes
     $_SERVER["REQUEST_METHOD"] = "GET";
     $initializer->visitForm($form);
     // Grab all of the fields from both of the sub forms
     $writables = array_merge(array_values($form->getWritableBearer()->getWritableByHandle("Form1")->getWritableBearer()->getWritables()), array_values($form->getWritableBearer()->getWritableByHandle("Form2")->getWritableBearer()->getWritables()));
     // Map each field to a serialization of its suffixes
     $suffixes = [];
     foreach ($writables as $writable) {
         if ($writable instanceof FieldInterface) {
             $suffixes[] = serialize($writable->getSuffixes());
         }
     }
     // Assert that every set of suffixes is unique
     $this->assertEquals(sizeof($suffixes), sizeof(array_unique($suffixes)));
 }
Ejemplo n.º 5
0
 /**
  * @return PageInterface
  * @throws \Exception If the type of the page has not been set.
  */
 public function build()
 {
     if ($this->type === null) {
         throw new \Exception("You must set a page type using ::setType before calling this function.");
     }
     $this->validateInitializer();
     $this->validateRenderer();
     $writable = WritableBearerBuilder::begin()->addWritable(SectionBuilder::begin()->setType(SectionBuilder::TYPE_DIV)->setId('page-content')->addWritable(SectionBuilder::begin()->setType(SectionBuilder::TYPE_DIV)->setId('page-content-head')->addWritable($this->buildTopMatter())->build())->addWritable(SectionBuilder::begin()->setType(SectionBuilder::TYPE_DIV)->setId('page-content-body')->addWritable($this->buildWritableBearer())->build())->build())->build();
     return new Page($this->id, $this->type, $this->classes, $this->data, $this->title, $this->baseHref, $this->initializer, $this->renderer, $writable);
 }
 /**
  * @return void
  */
 private function createWritableBearerBuilderIfNull()
 {
     if ($this->writableBearerBuilder === null) {
         $this->writableBearerBuilder = WritableBearerBuilder::begin();
     }
 }