-<div crm-ui-accordion crm-title="ts('Debug')" crm-collapsed="true">
- <pre>{{abtest.ab|json}}</pre>
- <pre>{{abtest.mailings|json}}</pre>
-</div>
-
<!--
+ Implicit Controller: CrmMailingABEditCtrl
+
An ABTest includes two mailings, but we don't require the user to enter two complete mailings. For
simplicity, the email composition UI generally displays A (unless we specifically decided to expose an
individual field from B). At the end of the composition process, the controller's "sync" operation will
merge shared settings from "A" into "B".
-->
-<div ng-show="isSubmitted()">
- {{ts('This mailing has been submitted.')}}
-</div>
-
-<form name="crmMailingAB" novalidate ng-hide="isSubmitted()">
+<div ng-form="crmMailingABEdit">
<div class="crm-block crm-form-block crmMailing">
<div crm-ui-wizard>
- <div crm-ui-wizard-step="10" crm-title="ts('Setup')">
+ <div crm-ui-wizard-step="10" crm-title="ts('Setup')" ng-form="setupForm">
<div
crm-mailing-ab-block-setup="{
help: 1,
}"
crm-abtest="abtest"></div>
</div>
- <div crm-ui-wizard-step="11" crm-title="ts('Target')">
+ <div crm-ui-wizard-step="11" crm-title="ts('Target')" ng-form="targetForm">
<div
crm-mailing-ab-block-setup="{
recipients: 1,
}"
crm-abtest="abtest"></div>
</div>
- <div crm-ui-wizard-step="20" crm-title="ts('Compose')" ng-if="criteriaName != 'Two different emails'">
+ <div crm-ui-wizard-step="20" crm-title="ts('Compose')" ng-if="abtest.ab.testing_criteria != 'full_email'" ng-form="composeForm">
<div crm-ui-tab-set>
<div crm-ui-tab id="tab-mailing" crm-title="ts('Mailing')">
<div
- ng-if="criteriaName == 'From names'"
+ ng-if="abtest.ab.testing_criteria == 'from'"
crm-mailing-ab-block-mailing="{
msg_template_id: 1,
fromAddressA: 1,
fromAddressB: 1,
- replyToA: 1,
- replyToB: 1,
subject: 1
}"
crm-abtest="abtest"></div>
<div
- ng-if="criteriaName == 'Subject lines'"
+ ng-if="abtest.ab.testing_criteria == 'subject'"
crm-mailing-ab-block-mailing="{
msg_template_id: 1,
fromAddress: 1,
subjectB: 1
}"
crm-abtest="abtest"></div>
- <div crm-ui-accordion crm-title="ts('HTML')">
+ <div crm-ui-accordion="{title: ts('HTML')}" >
<div crm-mailing-body-html crm-mailing="abtest.mailings.a"/>
</div>
- <div crm-ui-accordion crm-title="ts('Plain Text')" crm-collapsed='true'>
+ <div crm-ui-accordion="{title: ts('Plain Text'), collapsed: !abtest.mailings.a.body_text}">
<div crm-mailing-body-text crm-mailing="abtest.mailings.a"/>
</div>
</div>
<div crm-mailing-block-responses crm-mailing="abtest.mailings.a"/>
</div>
</div>
- <div crm-ui-accordion crm-title="ts('Preview (A)')">
+ <div crm-ui-accordion="{title: ts('Preview (A)')}" >
<div crm-mailing-block-preview crm-mailing="abtest.mailings.a" on-preview="previewMailing('a', preview.mode)" on-send="sendTest('a', preview.recipient)" />
</div>
- <div crm-ui-accordion crm-title="ts('Preview (B)')">
+ <div crm-ui-accordion="{title: ts('Preview (B)')}" >
<div crm-mailing-block-preview crm-mailing="abtest.mailings.b" on-preview="previewMailing('b', preview.mode)" on-send="sendTest('b', preview.recipient)" />
</div>
</div>
- <div crm-ui-wizard-step="21" crm-title="ts('Compose (A)')" ng-if="criteriaName == 'Two different emails'">
+ <div crm-ui-wizard-step="21" crm-title="ts('Compose (A)')" ng-if="abtest.ab.testing_criteria == 'full_email'" ng-form="composeAForm">
<div crm-ui-tab-set>
<div crm-ui-tab id="tab-mailingA" crm-title="ts('Mailing')">
<div
subjectA: 1
}"
crm-abtest="abtest"></div>
- <div crm-ui-accordion crm-title="ts('HTML')">
+ <div crm-ui-accordion="{title: ts('HTML')}" >
<div crm-mailing-body-html crm-mailing="abtest.mailings.a"/>
</div>
- <div crm-ui-accordion crm-title="ts('Plain Text')" crm-collapsed='true'>
+ <div crm-ui-accordion="{title: ts('Plain Text'), collapsed: !abtest.mailings.a.body_text}">
<div crm-mailing-body-text crm-mailing="abtest.mailings.a"/>
</div>
</div>
<div crm-mailing-block-responses crm-mailing="abtest.mailings.a"/>
</div>
</div>
- <div crm-ui-accordion crm-title="ts('Preview')">
+ <div crm-ui-accordion="{title: ts('Preview')}" >
<div crm-mailing-block-preview crm-mailing="abtest.mailings.a" on-preview="previewMailing('a', preview.mode)" on-send="sendTest('a', preview.recipient)" />
</div>
</div>
- <div crm-ui-wizard-step="22" crm-title="ts('Compose (B)')" ng-if="criteriaName == 'Two different emails'">
+ <div crm-ui-wizard-step="22" crm-title="ts('Compose (B)')" ng-if="abtest.ab.testing_criteria == 'full_email'" ng-form="composeBForm">
<div crm-ui-tab-set>
<div crm-ui-tab id="tab-mailingB" crm-title="ts('Mailing')">
<div
subjectB: 1
}"
crm-abtest="abtest"></div>
- <div crm-ui-accordion crm-title="ts('HTML')">
+ <div crm-ui-accordion="{title: ts('HTML')}" >
<div crm-mailing-body-html crm-mailing="abtest.mailings.b"/>
</div>
- <div crm-ui-accordion crm-title="ts('Plain Text')" crm-collapsed='true'>
+ <div crm-ui-accordion="{title: ts('Plain Text'), collapsed: !abtest.mailings.b.body_text}">
<div crm-mailing-body-text crm-mailing="abtest.mailings.b"/>
</div>
</div>
<div crm-mailing-block-responses crm-mailing="abtest.mailings.b"/>
</div>
</div>
- <div crm-ui-accordion crm-title="ts('Preview')">
+ <div crm-ui-accordion="{title: ts('Preview')}" >
<div crm-mailing-block-preview crm-mailing="abtest.mailings.b" on-preview="previewMailing('b', preview.mode)" on-send="sendTest('b', preview.recipient)" />
</div>
</div>
- <div crm-ui-wizard-step="30" crm-title="ts('Schedule')">
+ <div crm-ui-wizard-step="30" crm-title="ts('Schedule')" ng-form="schedForm">
<div
crm-mailing-ab-block-setup="{
scheduled_date: 1,
}"
crm-abtest="abtest"></div>
<center>
- <a class="crmMailing-submit-button" ng-click="submit()">
+ <a class="button crmMailing-submit-button" ng-click="submit()" ng-class="{blocking: block.check(), disabled: crmMailingAB.$invalid}">
<div>{{ts('Submit Mailing')}}</div>
</a>
</center>
</div>
<span crm-ui-wizard-buttons style="float:right;">
<button
- crm-confirm="{title:ts('Delete Draft?'), message:ts('Are you sure you want to delete the draft mailing?')}"
+ crm-icon="trash"
+ ng-show="checkPerm('delete in CiviMail')"
+ ng-disabled="block.check()"
+ crm-confirm="{title:ts('Delete Draft'), message:ts('Are you sure you want to permanently delete this mailing?')}"
on-yes="delete()">{{ts('Delete Draft')}}
</button>
- <button ng-click="save()">{{ts('Save Draft')}}</button>
+ <button crm-icon="disk" ng-disabled="block.check()" ng-click="save().then(leave) ">{{ts('Save Draft')}}</button>
</span>
</div>
-</form>
+</div>