diff --git a/code/model/UserDefinedForm.php b/code/model/UserDefinedForm.php index 4a078ec..65d9c8f 100755 --- a/code/model/UserDefinedForm.php +++ b/code/model/UserDefinedForm.php @@ -131,14 +131,13 @@ class UserDefinedForm extends Page /** * @return FieldList */ - public function getCMSFields() - { - Requirements::css(USERFORMS_DIR . '/css/UserForm_cms.css'); + public function getCMSFields() + { + Requirements::css(USERFORMS_DIR . '/css/UserForm_cms.css'); - $self = $this; - - $this->beforeUpdateCMSFields(function ($fields) use ($self) { + $self = $this; + $this->beforeUpdateCMSFields(function ($fields) use ($self) { // define tabs $fields->findOrMakeTab('Root.FormOptions', _t('UserDefinedForm.CONFIGURATION', 'Configuration')); $fields->findOrMakeTab('Root.Recipients', _t('UserDefinedForm.RECIPIENTS', 'Recipients')); @@ -180,12 +179,6 @@ class UserDefinedForm extends Page // 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)) ? (int) $self->ID : 0; @@ -245,6 +238,7 @@ SQL; // attach every column to the print view form $columns['Created'] = 'Created'; + $columns['SubmittedBy.Email'] = 'Submitter'; $filter->setColumns($columns); // print configuration @@ -256,23 +250,33 @@ SQL; $export->setCsvHasHeader(true); $export->setExportColumns($columns); - $submissions->setConfig($config); + $submissions = GridField::create( + 'Submissions', + _t('UserDefinedForm.SUBMISSIONS', 'Submissions'), + $self->Submissions()->sort('Created', 'DESC'), + $config + ); $fields->addFieldToTab('Root.Submissions', $submissions); - $fields->addFieldToTab('Root.FormOptions', new CheckboxField('DisableSaveSubmissions', _t('UserDefinedForm.SAVESUBMISSIONS', 'Disable Saving Submissions to Server'))); - + $fields->addFieldToTab( + 'Root.FormOptions', + CheckboxField::create( + 'DisableSaveSubmissions', + _t('UserDefinedForm.SAVESUBMISSIONS', 'Disable Saving Submissions to Server') + ) + ); }); - $fields = parent::getCMSFields(); + $fields = parent::getCMSFields(); - if ($this->EmailRecipients()->Count() == 0 && static::config()->recipients_warning_enabled) { - $fields->addFieldToTab("Root.Main", new LiteralField("EmailRecipientsWarning", + if ($this->EmailRecipients()->Count() == 0 && static::config()->recipients_warning_enabled) { + $fields->addFieldToTab("Root.Main", new LiteralField("EmailRecipientsWarning", "
"), "Title"); - } + } - return $fields; - } + return $fields; + } /** * Allow overriding the EmailRecipients on a {@link DataExtension} @@ -483,7 +487,7 @@ class UserDefinedForm_Controller extends Page_Controller } if ($watch) { $rules .= $this->buildWatchJS($watch); - } + } // Only add customScript if $default or $rules is defined if ($rules) { diff --git a/code/model/editableformfields/EditableFormField.php b/code/model/editableformfields/EditableFormField.php index a59de75..7cf91f5 100755 --- a/code/model/editableformfields/EditableFormField.php +++ b/code/model/editableformfields/EditableFormField.php @@ -1078,7 +1078,7 @@ class EditableFormField extends DataObject foreach ($this->EffectiveDisplayRules() as $rule) { // Get the field which is effected /** @var EditableFormField $formFieldWatch */ - $formFieldWatch = EditableFormField::get()->byId($rule->ConditionFieldID); + $formFieldWatch = DataObject::get_by_id('EditableFormField', $rule->ConditionFieldID); // Skip deleted fields if (! $formFieldWatch) { continue; diff --git a/code/model/recipients/UserDefinedForm_EmailRecipient.php b/code/model/recipients/UserDefinedForm_EmailRecipient.php index 4b098d5..ad118c5 100644 --- a/code/model/recipients/UserDefinedForm_EmailRecipient.php +++ b/code/model/recipients/UserDefinedForm_EmailRecipient.php @@ -221,14 +221,17 @@ class UserDefinedForm_EmailRecipient extends DataObject 'The email address which the recipient is able to \'reply\' to.' )) )); - + $fields->fieldByName('Root.EmailDetails')->setTitle(_t('UserDefinedForm_EmailRecipient.EMAILDETAILSTAB', 'Email Details')); // Only show the preview link if the recipient has been saved. if (!empty($this->EmailTemplate)) { $preview = sprintf( '%s', - "admin/pages/edit/EditForm/field/EmailRecipients/item/{$this->ID}/preview", + Controller::join_links( + singleton('CMSPageEditController')->getEditForm()->FormAction(), + "field/EmailRecipients/item/{$this->ID}/preview" + ), _t('UserDefinedForm.PREVIEW_EMAIL', 'Preview email'), _t('UserDefinedForm.PREVIEW_EMAIL_DESCRIPTION', 'Note: Unsaved changes will not appear in the preview.') ); diff --git a/code/model/recipients/UserFormRecipientItemRequest.php b/code/model/recipients/UserFormRecipientItemRequest.php index 171efb4..777e92a 100644 --- a/code/model/recipients/UserFormRecipientItemRequest.php +++ b/code/model/recipients/UserFormRecipientItemRequest.php @@ -20,11 +20,19 @@ class UserFormRecipientItemRequest extends GridFieldDetailForm_ItemRequest */ public function preview() { - return $this->customise(new ArrayData(array( + // Enable theme for preview (may be needed for Shortcodes) + Config::nest(); + Config::inst()->update('SSViewer', 'theme_enabled', true); + + $content = $this->customise(new ArrayData(array( 'Body' => $this->record->getEmailBodyContent(), 'HideFormData' => $this->record->HideFormData, 'Fields' => $this->getPreviewFieldData() )))->renderWith($this->record->EmailTemplate); + + Config::unnest(); + + return $content; } /** diff --git a/code/model/submissions/SubmittedForm.php b/code/model/submissions/SubmittedForm.php index f026509..7e8ec61 100755 --- a/code/model/submissions/SubmittedForm.php +++ b/code/model/submissions/SubmittedForm.php @@ -57,7 +57,23 @@ class SubmittedForm extends DataObject $this->beforeUpdateCMSFields(function ($fields) use ($self) { $fields->removeByName('Values'); - $fields->dataFieldByName('SubmittedByID')->setDisabled(true); + + //check to ensure there is a Member to extract an Email from else null value + if($self->SubmittedBy() && $self->SubmittedBy()->exists()){ + $submitter = $self->SubmittedBy()->Email; + } else { + $submitter = null; + } + + //replace scaffolded field with readonly submitter + $fields->replaceField( + 'SubmittedByID', + ReadonlyField::create( + 'Submitter', + 'Submitter', + $submitter + ) + ); $values = new GridField( 'Values', diff --git a/composer.json b/composer.json index 5ff2810..56b4283 100644 --- a/composer.json +++ b/composer.json @@ -30,8 +30,8 @@ } ], "require": { - "silverstripe/framework": "~3.1", - "silverstripe/cms": "~3.1", + "silverstripe/framework": "~3.2", + "silverstripe/cms": "~3.2", "silverstripe-australia/gridfieldextensions": "~1.1", "silverstripe/segment-field": "^1.0" }, diff --git a/javascript/FieldEditor.js b/javascript/FieldEditor.js index 6d998d4..5e9b14e 100644 --- a/javascript/FieldEditor.js +++ b/javascript/FieldEditor.js @@ -47,8 +47,8 @@ // Make sure gridfield buttons stick to top of page when user scrolls down stickyHeaderInterval = setInterval(function () { var offsetTop = fieldEditor.offset().top; - $buttonrow.width(self.width()); - if (offsetTop > navHeight || offsetTop === 0) { + $buttonrow.width('100%'); + if (offsetTop > navHeight || offsetTop === 0) { $buttonrow.removeClass('stickyButtons'); } else { $buttonrow.addClass('stickyButtons');