/**
  * Sets the gridfield config ensuring that the save handler is in place
  * @param {GridFieldConfig} $config
  * @return {GridField}
  */
 public function setConfig(GridFieldConfig $config)
 {
     parent::setConfig($config);
     //Force the StatefulGridFieldListSaveHandler into the config
     $config->addComponent(new StatefulGridFieldListSaveHandler());
     return $this;
 }
Пример #2
0
 /**
  * @return FieldList
  */
 public function getCMSFields()
 {
     $fields = parent::getCMSFields();
     $fields->removeByName('Values');
     $values = new GridField("Values", "SubmittedFormField", $this->Values()->sort('Created', 'ASC'));
     $config = new GridFieldConfig();
     $config->addComponent(new GridFieldDataColumns());
     $config->addComponent(new GridFieldExportButton());
     $config->addComponent(new GridFieldPrintButton());
     $values->setConfig($config);
     $fields->addFieldToTab('Root.Main', $values);
     return $fields;
 }
 /**
  * @return FieldList
  */
 public function getCMSFields()
 {
     $self = $this;
     $this->beforeUpdateCMSFields(function ($fields) use($self) {
         $fields->removeByName('Values');
         $fields->dataFieldByName('SubmittedByID')->setDisabled(true);
         $values = new GridField('Values', 'SubmittedFormField', $self->Values()->sort('Created', 'ASC'));
         $config = new GridFieldConfig();
         $config->addComponent(new GridFieldDataColumns());
         $config->addComponent(new GridFieldExportButton());
         $config->addComponent(new GridFieldPrintButton());
         $values->setConfig($config);
         $fields->addFieldToTab('Root.Main', $values);
     });
     $fields = parent::getCMSFields();
     return $fields;
 }
Пример #4
0
 public static function make($name, $label = '', $source, $sortable = true, $gridHeaderType = 'GridFieldConfig_RecordEditor')
 {
     /*
     GridFieldConfig_Base
     GridFieldConfig_RecordViewer
     GridFieldConfig_RecordEditor
     GridFieldConfig_RelationEditor
     */
     if ($label == '') {
         $label = $name;
     }
     $grid = new \GridField($name, $label, $source);
     $config = $gridHeaderType::create();
     $config->removeComponentsByType('GridFieldPaginator')->addComponents(new \GridFieldPaginatorWithShowAll(30));
     if ($sortable) {
         $config->addComponents($sortable = new \GridFieldOrderableRows('SortOrder'));
     }
     $grid->setConfig($config);
     return $grid;
 }
 private function gridBuilder($name, $source, $label = '', $canAdd = false, $gridHeaderType = 'GridFieldConfig_RecordEditor')
 {
     /*
     GridFieldConfig_Base
     GridFieldConfig_RecordViewer
     GridFieldConfig_RecordEditor
     GridFieldConfig_RelationEditor
     */
     if ($label == '') {
         $label = $name;
     }
     $grid = new GridField($name, $label, $source);
     $config = $gridHeaderType::create();
     $config->removeComponentsByType('GridFieldAddNewButton');
     if ($canAdd) {
         $config->removeComponentsByType('GridFieldPaginator')->removeComponentsByType('GridFieldDetailForm')->addComponents(new VersionedForm(), new GridFieldPaginatorWithShowAll(30), $multiClass = new MultiClassSelector(), $sortable = new OrderableBlocks('SortOrder'));
         $subBlocks = BlocksAdmin::getAvaiableTypes();
         $multiClass->setClasses($subBlocks);
     }
     $grid->setConfig($config);
     return $grid;
 }
    /**
     * @return FieldList
     */
    public function getCMSFields()
    {
        $self = $this;
        $this->beforeUpdateCMSFields(function ($fields) use($self) {
            // define tabs
            $fields->findOrMakeTab('Root.FormContent', _t('UserDefinedForm.FORM', 'Form'));
            $fields->findOrMakeTab('Root.FormOptions', _t('UserDefinedForm.CONFIGURATION', 'Configuration'));
            $fields->findOrMakeTab('Root.Recipients', _t('UserDefinedForm.RECIPIENTS', 'Recipients'));
            $fields->findOrMakeTab('Root.Submissions', _t('UserDefinedForm.SUBMISSIONS', 'Submissions'));
            // field editor
            $fields->addFieldToTab('Root.FormContent', new FieldEditor('Fields', 'Fields', '', $self));
            // text to show on complete
            $onCompleteFieldSet = new CompositeField($label = new LabelField('OnCompleteMessageLabel', _t('UserDefinedForm.ONCOMPLETELABEL', 'Show on completion')), $editor = new HtmlEditorField('OnCompleteMessage', '', _t('UserDefinedForm.ONCOMPLETEMESSAGE', $self->OnCompleteMessage)));
            $onCompleteFieldSet->addExtraClass('field');
            $editor->setRows(3);
            $label->addExtraClass('left');
            // Define config for email recipients
            $emailRecipientsConfig = GridFieldConfig_RecordEditor::create(10);
            $emailRecipientsConfig->getComponentByType('GridFieldAddNewButton')->setButtonName(_t('UserDefinedForm.ADDEMAILRECIPIENT', 'Add Email Recipient'));
            // who do we email on submission
            $emailRecipients = new GridField('EmailRecipients', _t('UserDefinedForm.EMAILRECIPIENTS', 'Email Recipients'), $self->EmailRecipients(), $emailRecipientsConfig);
            $emailRecipients->getConfig()->getComponentByType('GridFieldDetailForm')->setItemRequestClass('UserDefinedForm_EmailRecipient_ItemRequest');
            $fields->addFieldsToTab('Root.FormOptions', $onCompleteFieldSet);
            $fields->addFieldToTab('Root.Recipients', $emailRecipients);
            $fields->addFieldsToTab('Root.FormOptions', $self->getFormOptions());
            // view the submissions
            $submissions = new GridField('Submissions', _t('UserDefinedForm.SUBMISSIONS', 'Submissions'), $self->Submissions()->sort('Created', 'DESC'));
            // make sure a numeric not a empty string is checked against this int column for SQL server
            $parentID = !empty($self->ID) ? $self->ID : 0;
            // get a list of all field names and values used for print and export CSV views of the GridField below.
            $columnSQL = <<<SQL
SELECT "Name", "Title"
FROM "SubmittedFormField"
LEFT JOIN "SubmittedForm" ON "SubmittedForm"."ID" = "SubmittedFormField"."ParentID"
WHERE "SubmittedForm"."ParentID" = '{$parentID}'
ORDER BY "Title" ASC
SQL;
            $columns = DB::query($columnSQL)->map();
            $config = new GridFieldConfig();
            $config->addComponent(new GridFieldToolbarHeader());
            $config->addComponent($sort = new GridFieldSortableHeader());
            $config->addComponent($filter = new UserFormsGridFieldFilterHeader());
            $config->addComponent(new GridFieldDataColumns());
            $config->addComponent(new GridFieldEditButton());
            $config->addComponent(new GridState_Component());
            $config->addComponent(new GridFieldDeleteAction());
            $config->addComponent(new GridFieldPageCount('toolbar-header-right'));
            $config->addComponent($pagination = new GridFieldPaginator(25));
            $config->addComponent(new GridFieldDetailForm());
            $config->addComponent($export = new GridFieldExportButton());
            $config->addComponent($print = new GridFieldPrintButton());
            /**
             * Support for {@link https://github.com/colymba/GridFieldBulkEditingTools}
             */
            if (class_exists('GridFieldBulkManager')) {
                $config->addComponent(new GridFieldBulkManager());
            }
            $sort->setThrowExceptionOnBadDataType(false);
            $filter->setThrowExceptionOnBadDataType(false);
            $pagination->setThrowExceptionOnBadDataType(false);
            // attach every column to the print view form
            $columns['Created'] = 'Created';
            $filter->setColumns($columns);
            // print configuration
            $print->setPrintHasHeader(true);
            $print->setPrintColumns($columns);
            // export configuration
            $export->setCsvHasHeader(true);
            $export->setExportColumns($columns);
            $submissions->setConfig($config);
            $fields->addFieldToTab('Root.Submissions', $submissions);
            $fields->addFieldToTab('Root.FormOptions', new CheckboxField('DisableSaveSubmissions', _t('UserDefinedForm.SAVESUBMISSIONS', 'Disable Saving Submissions to Server')));
        });
        $fields = parent::getCMSFields();
        return $fields;
    }
Пример #7
0
    /**
     * @return FieldList
     */
    public function getCMSFields()
    {
        // call updateCMSFields after userforms
        SiteTree::disableCMSFieldsExtensions();
        $fields = parent::getCMSFields();
        SiteTree::enableCMSFieldsExtensions();
        // define tabs
        $fields->findOrMakeTab('Root.FormContent', _t('UserDefinedForm.FORM', 'Form'));
        $fields->findOrMakeTab('Root.FormOptions', _t('UserDefinedForm.CONFIGURATION', 'Configuration'));
        $fields->findOrMakeTab('Root.Submissions', _t('UserDefinedForm.SUBMISSIONS', 'Submissions'));
        // field editor
        $fields->addFieldToTab("Root.FormContent", new FieldEditor("Fields", 'Fields', "", $this));
        // text to show on complete
        $onCompleteFieldSet = new CompositeField($label = new LabelField('OnCompleteMessageLabel', _t('UserDefinedForm.ONCOMPLETELABEL', 'Show on completion')), $editor = new HtmlEditorField("OnCompleteMessage", "", _t('UserDefinedForm.ONCOMPLETEMESSAGE', $this->OnCompleteMessage)));
        $onCompleteFieldSet->addExtraClass('field');
        $editor->setRows(3);
        $label->addExtraClass('left');
        // Set the summary fields of UserDefinedForm_EmailRecipient dynamically via config system
        Config::inst()->update('UserDefinedForm_EmailRecipient', 'summary_fields', array('EmailAddress' => _t('UserDefinedForm.EMAILADDRESS', 'Email'), 'EmailSubject' => _t('UserDefinedForm.EMAILSUBJECT', 'Subject'), 'EmailFrom' => _t('UserDefinedForm.EMAILFROM', 'From')));
        // who do we email on submission
        $emailRecipients = new GridField("EmailRecipients", _t('UserDefinedForm.EMAILRECIPIENTS', 'Email Recipients'), $this->EmailRecipients(), GridFieldConfig_RecordEditor::create(10));
        $emailRecipients->getConfig()->getComponentByType('GridFieldAddNewButton')->setButtonName(_t('UserDefinedForm.ADDEMAILRECIPIENT', 'Add Email Recipient'));
        $fields->addFieldsToTab("Root.FormOptions", $onCompleteFieldSet);
        $fields->addFieldToTab("Root.FormOptions", $emailRecipients);
        $fields->addFieldsToTab("Root.FormOptions", $this->getFormOptions());
        // view the submissions
        $submissions = new GridField("Reports", _t('UserDefinedForm.SUBMISSIONS', 'Submissions'), $this->Submissions()->sort('Created', 'DESC'));
        // make sure a numeric not a empty string is checked against this int column for SQL server
        $parentID = !empty($this->ID) ? $this->ID : 0;
        // get a list of all field names and values used for print and export CSV views of the GridField below.
        $columnSQL = <<<SQL
SELECT "Name", "Title"
FROM "SubmittedFormField"
LEFT JOIN "SubmittedForm" ON "SubmittedForm"."ID" = "SubmittedFormField"."ParentID"
WHERE "SubmittedForm"."ParentID" = '{$parentID}'
ORDER BY "Title" ASC
SQL;
        $columns = DB::query($columnSQL)->map();
        $config = new GridFieldConfig();
        $config->addComponent(new GridFieldToolbarHeader());
        $config->addComponent($sort = new GridFieldSortableHeader());
        $config->addComponent($filter = new UserFormsGridFieldFilterHeader());
        $config->addComponent(new GridFieldDataColumns());
        $config->addComponent(new GridFieldEditButton());
        $config->addComponent(new GridState_Component());
        $config->addComponent(new GridFieldDeleteAction());
        $config->addComponent(new GridFieldPageCount('toolbar-header-right'));
        $config->addComponent($pagination = new GridFieldPaginator(25));
        $config->addComponent(new GridFieldDetailForm());
        $config->addComponent($export = new GridFieldExportButton());
        $config->addComponent($print = new GridFieldPrintButton());
        $sort->setThrowExceptionOnBadDataType(false);
        $filter->setThrowExceptionOnBadDataType(false);
        $pagination->setThrowExceptionOnBadDataType(false);
        // attach every column to the print view form
        $columns['Created'] = 'Created';
        $filter->setColumns($columns);
        // print configuration
        $print->setPrintHasHeader(true);
        $print->setPrintColumns($columns);
        // export configuration
        $export->setCsvHasHeader(true);
        $export->setExportColumns($columns);
        $submissions->setConfig($config);
        $fields->addFieldToTab("Root.Submissions", $submissions);
        $fields->addFieldToTab("Root.FormOptions", new CheckboxField('DisableSaveSubmissions', _t('UserDefinedForm.SAVESUBMISSIONS', "Disable Saving Submissions to Server")));
        $this->extend('updateCMSFields', $fields);
        return $fields;
    }
 /**
  * Used in getCSMFields
  * @return GridField
  **/
 protected function getAdditionalImagesField()
 {
     $gridField = new GridField('AdditionalFiles', _t('Product.ADDITIONALIMAGES', 'Additional files and images'), $this->AdditionalFiles(), GridFieldConfig_RelationEditor::create());
     $config = $gridField->getConfig()->removeComponentsByType("GridFieldAddNewButton")->removeComponentsByType("GridFieldAddExistingAutocompleter");
     $gridField->setConfig($config);
     //var_dump($components->items);
     $gridField->setModelClass("Product_Image");
     return $gridField;
 }