This commit is contained in:
Ed Chipman 2023-06-08 05:31:42 +12:00 committed by GitHub
commit ead540349e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 86 additions and 3 deletions

View File

@ -3,6 +3,7 @@
namespace SilverStripe\UserForms;
use Colymba\BulkManager\BulkManager;
use SilverStripe\Core\Convert;
use SilverStripe\Core\Injector\Injector;
use SilverStripe\Forms\CheckboxField;
use SilverStripe\Forms\CompositeField;
@ -269,6 +270,7 @@ trait UserForm
// view the submissions
// make sure a numeric not a empty string is checked against this int column for SQL server
$parentID = (!empty($this->ID)) ? (int) $this->ID : 0;
$parentClass = Convert::raw2sql(get_class($this));
// get a list of all field names and values used for print and export CSV views of the GridField below.
$columnSQL = <<<SQL
@ -279,8 +281,8 @@ SELECT DISTINCT
FROM "SubmittedFormField"
LEFT JOIN "SubmittedForm" ON "SubmittedForm"."ID" = "SubmittedFormField"."ParentID"
LEFT JOIN "EditableFormField" ON "EditableFormField"."Name" = "SubmittedFormField"."Name"
WHERE "SubmittedForm"."ParentID" = '$parentID'
AND "EditableFormField"."ParentID" = '$parentID'
WHERE "SubmittedForm"."ParentID" = '$parentID' AND "SubmittedForm"."ParentClass" = '$parentClass'
AND "EditableFormField"."ParentID" = '$parentID' AND "EditableFormField"."ParentClass" = '$parentClass'
ORDER BY "Sort", "Title"
SQL;
@ -307,7 +309,7 @@ SQL;
'LastEdited' => 'Last Edited'
);
foreach (EditableFormField::get()->filter(['ParentID' => $parentID, 'ShowInSummary' => 1]) as $eff) {
foreach (EditableFormField::get()->filter(['ParentID' => $parentID, 'ParentClass' => get_class($this), 'ShowInSummary' => 1]) as $eff) {
$summaryarray[$eff->Name] = $eff->Title ?: $eff->Name;
}

View File

@ -0,0 +1,53 @@
<?php
namespace SilverStripe\UserForms\Tests\Model;
use SilverStripe\Control\Email\Email;
use SilverStripe\Dev\FunctionalTest;
use SilverStripe\Forms\GridField\GridField;
use SilverStripe\Forms\GridField\GridFieldDataColumns;
use SilverStripe\UserForms\Extension\UserFormFieldEditorExtension;
use SilverStripe\UserForms\Model\UserDefinedForm;
use SilverStripe\UserForms\Tests\Model\SubClassFormTest\SubClassForm;
/**
* @package userforms
*/
class SubClassFormTest extends FunctionalTest
{
protected $usesTransactions = false;
protected static $fixture_file = 'SubClassFormTest.yml';
protected static $required_extensions = [
UserDefinedForm::class => [UserFormFieldEditorExtension::class],
];
protected static $extra_dataobjects = [
SubClassForm::class,
];
protected function setUp(): void
{
parent::setUp();
Email::config()->update('admin_email', 'no-reply@example.com');
}
public function testGetCMSFieldsShowInSummary()
{
$this->logInWithPermission('ADMIN');
$form = $this->objFromFixture(SubClassForm::class, 'summary-rules-form');
$fields = $form->getCMSFields();
$this->assertInstanceOf(GridField::class, $fields->dataFieldByName('Submissions'));
$submissionsgrid = $fields->dataFieldByName('Submissions');
$gridFieldDataColumns = $submissionsgrid->getConfig()->getComponentByType(GridFieldDataColumns::class);
$summaryFields = $gridFieldDataColumns->getDisplayFields($submissionsgrid);
$this->assertContains('SummaryShow', array_keys($summaryFields ?? []), 'Summary field not showing displayed field');
$this->assertNotContains('SummaryHide', array_keys($summaryFields ?? []), 'Summary field showing displayed field');
}
}

View File

@ -0,0 +1,17 @@
SilverStripe\UserForms\Model\EditableFormField\EditableTextField:
summary-show:
Name: SummaryShow
Title: Summary Text Field
ShowInSummary: true
summary-hide:
Name: SummaryHide
Title: Summary Text Field
ShowInSummary: false
SilverStripe\UserForms\Tests\Model\SubClassFormTest\SubClassForm:
summary-rules-form:
Title: Summary Fields Form
Fields:
- =>SilverStripe\UserForms\Model\EditableFormField\EditableTextField.summary-show
- =>SilverStripe\UserForms\Model\EditableFormField\EditableTextField.summary-hide

View File

@ -0,0 +1,11 @@
<?php
namespace SilverStripe\UserForms\Tests\Model\SubClassFormTest;
use SilverStripe\Dev\TestOnly;
use SilverStripe\UserForms\Model\UserDefinedForm;
class SubClassForm extends UserDefinedForm implements TestOnly
{
private static $table_name = 'SubClassForm';
}