Example #1
0
 public function setUp()
 {
     $this->view = new View();
     $this->fields = new Fields();
     $this->data = array(array('id' => 2, 'name' => 'Apple'));
     $_SERVER['REQUEST_URI'] = null;
     $field = new Field();
     $field->setId('test-field-id')->setVisible(true)->setSortable(true)->assignHelperCallback('TableCell.Content', function ($helper, $view) {
         return 'test-field-value';
     })->assignHelperCallback('tablecell.tdclassnames', function ($helper, $view) {
         return ['test-field-class'];
     });
     $this->fields->add($field);
 }
 /**
  * Create a field object, configured to render a checkbox for use in selecting
  * items for the supplied BulkActions object.
  *
  * @param BulkActions $bulkActions
  * @param TableCellHelper $renderer
  * @return Field
  * @throws Exception
  */
 public function direct(BulkActions $bulkActions, TableCellHelper $renderer)
 {
     $field = new Field();
     $key = $bulkActions->getPrimaryKey()->getName();
     $field->setId($bulkActions->getId())->setVisible(true);
     $renderer->getHeaderRenderer()->assign($bulkActions->getId(), function () {
         return '';
     });
     $renderer->getContentRenderer()->assign($bulkActions->getId(), function ($helper, array $rowData) use($bulkActions, $key) {
         /* @var $helper \Dewdrop\Fields\Helper\TableCell\Content */
         if (!isset($rowData[$key])) {
             throw new Exception("{$key} not available in row data for bulk action checkbox render.");
         }
         $value = $rowData[$key];
         return sprintf('<input class="bulk-checkbox" type="checkbox" name="%s[]" value="%s" %s />', $helper->getView()->escapeHtmlAttr($bulkActions->getId()), $helper->getView()->escapeHtmlAttr($value), in_array($value, $bulkActions->getSelected()) ? 'checked="checked"' : '');
     });
     return $field;
 }
Example #3
0
 public function testUsage()
 {
     $output = $this->csvCellHeaderFieldsHelper->render($this->field);
     $this->assertInternalType('string', $output);
     $this->assertSame($this->field->getLabel(), $output);
 }
Example #4
0
 /**
  * Prepare to add a field for the supplied arguments.  If $field is a string
  * we'll create a new CustomField.  Otherwise, we'll just directly add the
  * field object itself.
  *
  * @param mixed $field
  * @param string|null $modelName
  * @return FieldInterface
  * @throws Exception
  */
 private function prepareFieldForAdding($field, $modelName = null)
 {
     if (is_string($field)) {
         $id = $field;
         $field = new CustomField();
         $field->setId($id);
     }
     if (!$field instanceof FieldInterface) {
         throw new Exception('Field must be a string or instance of \\Dewdrop\\Fields\\FieldInterface');
     }
     if ($field instanceof DbField) {
         $this->handleModelsForDbField($field, $modelName);
     }
     $field->setFieldsSet($this);
     return $field;
 }
 /**
  * Create a Field object for handling deletion of items.
  *
  * @param RowEditor $editor
  * @return Field
  */
 private function createDeleteField(RowEditor $editor)
 {
     $field = new Field();
     $field->setId('delete')->setEditable(true)->assignHelperCallback('InputFilter', function () {
         $input = new \Zend\InputFilter\Input('delete');
         $input->setAllowEmpty(true);
         return $input;
     })->assignHelperCallback('EditControl.Label', function () {
         return '<span class="glyphicon glyphicon-trash"></span>';
     })->assignHelperCallback('EditControl.Control', function () use($editor) {
         if ($editor->isNew()) {
             $out = '<button data-is-new="1" class="btn btn-danger btn-delete">';
         } elseif ($editor->hasDeleteField()) {
             $out = '<button data-is-new="0" class="btn btn-danger btn-delete">';
         } else {
             $out = '<button data-is-new="0" class="btn btn-danger btn-delete disabled">';
         }
         $out .= '<span class="glyphicon glyphicon-trash"></span>';
         $out .= '</button>';
         return $out;
     });
     return $field;
 }
Example #6
0
 public function testAddingFieldWithDuplicateIdViaArrayInterfaceWithReplacePreviousField()
 {
     $field = new Field();
     $field->setId('visible');
     $newHash = spl_object_hash($field);
     $oldHash = spl_object_hash($this->fields->get('visible'));
     $this->assertEquals($oldHash, spl_object_hash($this->fields->get('visible')));
     $this->fields['visible'] = $field;
     $this->assertEquals($newHash, spl_object_hash($this->fields->get('visible')));
     $count = 0;
     /* @var $field Field */
     foreach ($this->fields as $field) {
         if ('visible' === $field->getId()) {
             $count += 1;
         }
     }
     $this->assertEquals(1, $count);
 }
Example #7
0
 public function testHtmlIdIsEquivalentToId()
 {
     $this->field->setId('test');
     $this->assertEquals('test', $this->field->getHtmlId());
 }
Example #8
0
 /**
  * Create the new field object.
  *
  * @return Field
  */
 public function createInstance()
 {
     $field = new Field();
     $field->setId($this->rowCollectionEditor->getId())->setLabel($this->rowCollectionEditor->getTitle())->setEditable(true)->setVisible(false)->assignHelperCallback('SaveHandler', function () {
         return $this->rowCollectionEditor;
     })->assignHelperCallback('EditControl.Control', function (EditControl $helper) {
         $helperName = $this->editViewHelperName;
         return $helper->getView()->{$helperName}($this->rowCollectionEditor, $this->editViewHelperOptions);
     })->assignHelperCallback('EditControl.Label', function () {
         return null;
     })->assignHelperCallback('InputFilter', function () {
         return $this->getInputFilterFactory()->createInstance();
     })->assignHelperCallback('TableCell.Content', function (TableCell $helper, array $rowData) {
         $helperName = $this->tableCellViewHelperName;
         return $helper->getView()->{$helperName}($this->rowCollectionEditor, array_merge(['rowData' => $rowData, 'mapping' => $this->tableCellMapping, 'renderer' => $helper], $this->tableCellViewHelperOptions));
     });
     return $field;
 }