unclecheese / silverstripe-gridfield-betterbuttons

Adds new form actions and buttons to the GridField detail form
GNU General Public License v2.0
80 stars 87 forks source link

Fatal error on the GridFieldDetailFormTest #76

Open jeitzen opened 9 years ago

jeitzen commented 9 years ago

After installing the betterbuttons module the framework test "GridFieldDetailFormTest" will produce an fatal error.

Fatal error: Call to a member function push() on null in /var/www/www.myproject.com/htdocs/framework/forms/gridfield/GridFieldDetailForm.php on line 653

Using a clean 3.1.8 installation of silverstripe.

jeitzen commented 9 years ago

A temporary workaround is to exclude some code in GridFieldBetterButtonsItemRequest::updateItemEditForm() from being tested.

public function updateItemEditForm($form) {
        if ($this->owner->record->stat('better_buttons_enabled') !== true) {
            return false;
        }
        Requirements::css(BETTER_BUTTONS_DIR.'/css/gridfield_betterbuttons.css');
        Requirements::javascript(BETTER_BUTTONS_DIR.'/javascript/gridfield_betterbuttons.js');

        if(!SapphireTest::is_running_test()){
            $actions = $this->owner->record->getBetterButtonsActions();
            $form->setActions($this->filterFieldList($form, $actions));

            if($form->Fields()->hasTabset()) {
                $form->Fields()->findOrMakeTab('Root')->setTemplate('TabSet');
                $form->addExtraClass('cms-tabset');
            }

            $utils = $this->owner->record->getBetterButtonsUtils();
            $form->Utils = $this->filterFieldList($form, $utils);
            $form->setTemplate('BetterButtons_EditForm');
        }
    }