/**
     *
     * @return \ZfcDatagrid\Datagrid
     */
    private function getGrid()
    {
        /* @var $grid \ZfcDatagrid\Datagrid */
        $grid = $this->getServiceLocator()->get('ZfcDatagrid\\Datagrid');
        $grid->setTitle('Categories');
        $grid->setDefaultItemsPerPage(5);
        $grid->setDataSource($this->getServiceLocator()->get('zfcDatagrid.examples.data.phpArray')->getCategorys());
        $col = new Column\Select('id');
        $col->setIdentity();
        $grid->addColumn($col);
        $colParentId = new Column\Select('parentId');
        $colParentId->setHidden(true);
        $grid->addColumn($colParentId);
        $colHasChildren = new Column\Select('hasChildren');
        $colHasChildren->setHidden(true);
        $grid->addColumn($colHasChildren);
        $colTags = new Column\Select('tags');
        $colTags->setLabel('Tags');
        $colTags->setHidden(true);
        $colTags->setWidth(30);
        $colTags->setType(new Type\PhpArray());
        $grid->addColumn($colTags);
        $toggle = new Column\Action\Button();
        $toggle->setLabel('+');
        $toggle->addShowOnValue($colHasChildren, 'y');
        $toggle->setAttribute('onclick', 'console.log($(this).parent().parent().attr(\'id\'));$.get(\'/zfcDatagrid/category/tree\', function (data) {
            console.log(this);
            $.each(data.data, function (index, value) {
                $(\'#' . $grid->getId() . '\').jqGrid(\'addRowData\', value.idConcated, value, \'after\', 5);
             });
        });');
        $col = new Column\Action();
        $col->setLabel(' ');
        $col->setUniqueId('expandAction');
        $col->addAction($toggle);
        $grid->addColumn($col);
        $col = new Column\Select('name');
        $col->setLabel('Name');
        $col->setWidth(50);
        $col->setSortDefault(1);
        $col->setRendererParameter('formatter', '
            function (cellvalue, options, rowObject) {
                var valuePrint = cellvalue;

                $.each(rowObject.' . $colTags->getUniqueId() . ', function (index, value) {
                    valuePrint += \' <span class="label">\' + value + \'</span>\';
                });

                return valuePrint;
            }
        ', 'jqGrid');
        $grid->addColumn($col);
        $toggle = new Column\Action\Button();
        $toggle->setLabel('other action...');
        $toggle->addShowOnValue($colHasChildren, 'y');
        $toggle->setAttribute('onclick', 'alert(\'clicked\');');
        $col = new Column\Action();
        //         $col->setLabel('A');
        $col->addAction($toggle);
        $grid->addColumn($col);
        return $grid;
    }
Esempio n. 2
0
 public function addCrudColumn()
 {
     if ($this->getTwitterBoostrapVersion() == '2.3.*') {
         $iconEdit = 'icon-pencil';
         $iconView = 'icon-eye-open';
         $iconDelete = 'icon-trash';
     } else {
         $iconEdit = 'glyphicon glyphicon-pencil';
         $iconView = 'glyphicon glyphicon-eye-open';
         $iconDelete = 'glyphicon glyphicon-trash';
     }
     $identity = $this->formatIdentityColumns();
     $actionviewCrud = new Column\Action\Icon();
     $actionviewCrud->setIconTheme($this->getTwitterBoostrapVersion());
     $actionviewCrud->setIconClass($iconView);
     $actionviewCrud->setAttribute('id', 'viewCrud');
     $actionviewCrud->setAttribute('href', "?op=v&{$identity}=" . $actionviewCrud->getRowIdPlaceholder());
     if (isset($this->crudOption['viewCrud'])) {
         $actionviewCrud->addShowOnValue($this->crudOption['viewCrud']['field'], $this->crudOption['viewCrud']['filter']);
         if (isset($this->crudOption['viewCrud']['js'])) {
             $actionviewCrud->setAttribute('onclick', "{$this->crudOption['viewCrud']['js']}");
         }
     }
     // $action = new Column\Action\Button ();
     $actionedit = new Column\Action\Icon();
     // $action->setLabel ( $this->getTranslator ()->translate ( 'Edit' ) );
     $actionedit->setIconTheme($this->getTwitterBoostrapVersion());
     $actionedit->setIconClass($iconEdit);
     $actionedit->setAttribute('id', 'editCrud');
     $actionedit->setAttribute('href', "?op=u&{$identity}=" . $actionedit->getRowIdPlaceholder());
     if (isset($this->crudOption['editCrud'])) {
         $actionedit->addShowOnValue($this->crudOption['editCrud']['field'], $this->crudOption['editCrud']['filter']);
         if (isset($this->crudOption['editCrud']['js'])) {
             $actionedit->setAttribute('onclick', "{$this->crudOption['editCrud']['js']}");
         }
     }
     $actiondel = new Column\Action\Icon();
     // $actiondel->setLabel ( $this->getTranslator ()->translate ( 'Delete' ) );
     $actiondel->setIconClass($iconDelete);
     $actiondel->setIconTheme($this->getTwitterBoostrapVersion());
     $actiondel->setAttribute('id', 'deleteCrud');
     $actiondel->setAttribute('href', "?op=d&{$identity}=" . $actiondel->getRowIdPlaceholder());
     // $actiondel->setAttribute ( 'href', "#");
     if (isset($this->crudOption['deleteCrud'])) {
         $actiondel->addShowOnValue($this->crudOption['deleteCrud']['field'], $this->crudOption['deleteCrud']['filter']);
         if (isset($this->crudOption['deleteCrud']['js'])) {
             $actiondel->setAttribute('onclick', "{$this->crudOption['deleteCrud']['js']}");
         }
     }
     $col = new Column\Action();
     $col->setLabel($this->getTranslator()->translate('Operation'));
     $col->setWidth(0.5);
     if ($this->getisAllowView()) {
         $col->addAction($actionviewCrud);
     }
     if ($this->getisAllowEdit()) {
         $col->addAction($actionedit);
     }
     if ($this->getisAllowDelete()) {
         $col->addAction($actiondel);
     }
     $this->prependColumn($col);
 }
 private function getGrid()
 {
     die('xxx');
     /* @var $grid \ZfcDatagrid\Datagrid */
     $grid = $this->getServiceLocator()->get('ZfcDatagrid\\Datagrid');
     $grid->setTitle('Persons');
     $grid->setDefaultItemsPerPage(5);
     $grid->setDataSource($this->getServiceLocator()->get('zfcDatagrid.examples.data.phpArray')->getPersons());
     $col = new Column\Select('id');
     $col->setIdentity();
     $grid->addColumn($col);
     $action = new Action\Mass();
     $action->setTitle('test');
     $action->setLink('/test');
     $grid->addMassAction($action);
     /**
      * Gravatar example
      * - take the email from the datasource
      * - object makes the rest :-)
      *
      * @note Could be whatever you want -> Grab data from everywhere you want with dynamic parameters :-)
      */
     $colEmail = new Column\Select('email');
     $colEmail->setLabel('E-Mail');
     $colEmail->setHidden(true);
     $grid->addColumn($colEmail);
     $dataPopulation = new Column\DataPopulation\Object();
     $dataPopulation->setObject(new Column\DataPopulation\Object\Gravatar());
     $dataPopulation->addObjectParameterColumn('email', $colEmail);
     $col = new Column\ExternalData('avatar');
     $col->setLabel('Avatar');
     $col->setDataPopulation($dataPopulation);
     $col->setType(new Type\Image());
     $grid->addColumn($col);
     $col = new Column\Select('displayName');
     $col->setLabel('Displayname');
     $col->setWidth(25);
     $col->setSortDefault(1, 'ASC');
     $col->setFormatter(new Email());
     $col->addStyle(new Style\Bold());
     $grid->addColumn($col);
     $col = new Column\Select('familyName');
     $col->setLabel('Familyname');
     $col->setWidth(15);
     $grid->addColumn($col);
     $col = new Column\Select('givenName');
     $col->setLabel('Givenname');
     $col->setWidth(15);
     $col->setSortDefault(2, 'DESC');
     $grid->addColumn($col);
     $style = new Style\BackgroundColor(array(200, 200, 200));
     $style->addByValue($col, 'Martin');
     $grid->addRowStyle($style);
     $col = new Column\Select('gender');
     $col->setLabel('Gender');
     $col->setWidth(10);
     $col->setReplaceValues(array('m' => 'male', 'f' => 'female'));
     $style = new Style\BackgroundColor(array(200, 100, 100));
     $style->addByValue($col, 'male');
     $col->addStyle($style);
     $col->setTranslationEnabled(true);
     $grid->addColumn($col);
     $col = new Column\Select('age');
     $col->setLabel('Age');
     $col->setWidth(5);
     $col->setType(new Type\Number());
     $col->setFilterDefaultValue('>=20');
     $style = new Style\Color(Style\Color::$RED);
     $style->addByValue($col, 20);
     $col->addStyle($style);
     $grid->addColumn($col);
     $colType = new Type\Number();
     $colType->addAttribute(\NumberFormatter::FRACTION_DIGITS, 2);
     $colType->setSuffix(' kg');
     $col = new Column\Select('weight');
     $col->setLabel('Weight');
     $col->setWidth(10);
     $col->setType($colType);
     $col->setFilterDefaultOperation(\ZfcDatagrid\Filter::GREATER_EQUAL);
     $grid->addColumn($col);
     $col = new Column\Select('birthday');
     $col->setLabel('Birthday');
     $col->setWidth(10);
     $col->setType(new Type\DateTime());
     $col->setUserSortDisabled(true);
     $grid->addColumn($col);
     $colType = new Type\DateTime('Y-m-d H:i:s', \IntlDateFormatter::MEDIUM, \IntlDateFormatter::MEDIUM);
     $colType->setSourceTimezone('Europe/Vienna');
     $colType->setOutputTimezone('UTC');
     $col = new Column\Select('changeDate');
     $col->setLabel('Last change');
     $col->setWidth(15);
     $col->setType($colType);
     $grid->addColumn($col);
     $action = new Column\Action\Button();
     $action->setLabel('test');
     $action->setAttribute('href', '/someAction/id/' . $action->getRowIdPlaceholder());
     $col = new Column\Action();
     $col->setLabel('Actions');
     $col->setWidth(10);
     $col->addAction($action);
     $grid->addColumn($col);
     $grid->setRowClickAction($action);
     return $grid;
 }
 public function testAddRemoveAction()
 {
     //$this->markTestIncomplete();
     $column = new Column\Action();
     $this->assertCount(0, $column->getActions());
     $action = $this->getMock('Zf2datatable\\Column\\Action\\Button');
     $column->addAction($action);
     $this->assertCount(1, $column->getActions());
     $action2 = $this->getMock('Zf2datatable\\Column\\Action\\Button');
     $column->addAction($action2);
     $action3 = $this->getMock('Zf2datatable\\Column\\Action\\Button');
     $column->addAction($action3);
     $this->assertCount(3, $column->getActions());
     $this->assertEquals($action2, $column->getAction(1));
     $column->removeAction(2);
     $this->assertCount(2, $column->getActions());
     $actions = array($this->getMock('Zf2datatable\\Column\\Action\\Button'), $this->getMock('Zf2datatable\\Column\\Action\\Button'));
     $column->setActions($actions);
     $this->assertEquals($actions, $column->getActions());
     $column->clearActions();
     $this->assertCount(0, $column->getActions());
 }
 public function testAction()
 {
     $rowData = $this->rowWithId;
     $rowData['action'] = '';
     $helper = new TableRow();
     // must be instanceof Column\Select...
     $myCol = new Column\Select('myCol');
     $action = new Column\Action\Checkbox();
     $action->setLink('http://example.com');
     $colAction = new Column\Action();
     $colAction->addAction($action);
     $cols = array($myCol, $colAction);
     $html = $helper($rowData, $cols);
     $this->assertContains('<input type="checkbox"', $html);
     // row action
     $cols = array($myCol, $colAction);
     $html = $helper($rowData, $cols, $action);
     $this->assertContains('<a href="http://example.com', $html);
 }