2 Implicit Controller: CrmMailingABEditCtrl
4 An ABTest includes two mailings, but we don't require the user to enter two complete mailings. For
5 simplicity, the email composition UI generally displays A (unless we specifically decided to expose an
6 individual field from B). At the end of the composition process, the controller's "sync" operation will
7 merge shared settings from "A" into "B".
9 <div ng-form=
"crmMailingABEdit">
10 <div class=
"crm-block crm-form-block crmMailing">
12 <div crm-ui-wizard-step=
"10" crm-title=
"ts('Setup')" ng-form=
"setupForm">
14 crm-mailing-ab-block-setup=
"{
20 crm-abtest=
"abtest"></div>
22 <div crm-ui-wizard-step=
"11" crm-title=
"ts('Target')" ng-form=
"targetForm">
24 crm-mailing-ab-block-setup=
"{
28 crm-abtest=
"abtest"></div>
30 <div crm-ui-wizard-step=
"20" crm-title=
"ts('Compose')" ng-if=
"abtest.ab.testing_criteria != 'full_email'" ng-form=
"composeForm">
32 <div crm-ui-tab
id=
"tab-mailing" crm-title=
"ts('Mailing')">
34 ng-if=
"abtest.ab.testing_criteria == 'from'"
35 crm-mailing-ab-block-mailing=
"{
41 crm-abtest=
"abtest"></div>
43 ng-if=
"abtest.ab.testing_criteria == 'subject'"
44 crm-mailing-ab-block-mailing=
"{
51 crm-abtest=
"abtest"></div>
52 <div crm-ui-accordion
crm-title=
"ts('HTML')">
53 <div crm-mailing-body-html
crm-mailing=
"abtest.mailings.a"/>
55 <div crm-ui-accordion
crm-title=
"ts('Plain Text')" crm-collapsed='!abtest.mailings.a.body_text'
>
56 <div crm-mailing-body-text
crm-mailing=
"abtest.mailings.a"/>
60 FIXME: Attachment UI works, but we haven't implemented backend logic for copying/sharing
61 of attachments among mailings A/B/C.
62 <div crm-ui-tab id="tab-attachment" crm-title="ts('Attachments')">
63 <div crm-attachments="abtest.attachments.a"/>
66 <div crm-ui-tab
id=
"tab-header" crm-title=
"ts('Header and Footer')">
67 <div crm-mailing-block-header-footer
crm-mailing=
"abtest.mailings.a"/>
69 <div crm-ui-tab
id=
"tab-pub" crm-title=
"ts('Publication')">
70 <div crm-mailing-block-publication
crm-mailing=
"abtest.mailings.a"/>
72 <div crm-ui-tab
id=
"tab-response" crm-title=
"ts('Responses')">
73 <div crm-mailing-block-responses
crm-mailing=
"abtest.mailings.a"/>
76 <div crm-ui-accordion
crm-title=
"ts('Preview (A)')">
77 <div crm-mailing-block-preview
crm-mailing=
"abtest.mailings.a" on-preview=
"previewMailing('a', preview.mode)" on-send=
"sendTest('a', preview.recipient)" />
79 <div crm-ui-accordion
crm-title=
"ts('Preview (B)')">
80 <div crm-mailing-block-preview
crm-mailing=
"abtest.mailings.b" on-preview=
"previewMailing('b', preview.mode)" on-send=
"sendTest('b', preview.recipient)" />
83 <div crm-ui-wizard-step=
"21" crm-title=
"ts('Compose (A)')" ng-if=
"abtest.ab.testing_criteria == 'full_email'" ng-form=
"composeAForm">
85 <div crm-ui-tab
id=
"tab-mailingA" crm-title=
"ts('Mailing')">
87 crm-mailing-ab-block-mailing=
"{
93 crm-abtest=
"abtest"></div>
94 <div crm-ui-accordion
crm-title=
"ts('HTML')">
95 <div crm-mailing-body-html
crm-mailing=
"abtest.mailings.a"/>
97 <div crm-ui-accordion
crm-title=
"ts('Plain Text')" crm-collapsed='!abtest.mailings.a.body_text'
>
98 <div crm-mailing-body-text
crm-mailing=
"abtest.mailings.a"/>
101 <div crm-ui-tab
id=
"tab-attachmentA" crm-title=
"ts('Attachments')">
102 <div crm-attachments=
"abtest.attachments.a"/>
104 <div crm-ui-tab
id=
"tab-headerA" crm-title=
"ts('Header and Footer')">
105 <div crm-mailing-block-header-footer
crm-mailing=
"abtest.mailings.a"/>
107 <div crm-ui-tab
id=
"tab-pubA" crm-title=
"ts('Publication')">
108 <div crm-mailing-block-publication
crm-mailing=
"abtest.mailings.a"/>
110 <div crm-ui-tab
id=
"tab-responseA" crm-title=
"ts('Responses')">
111 <div crm-mailing-block-responses
crm-mailing=
"abtest.mailings.a"/>
114 <div crm-ui-accordion
crm-title=
"ts('Preview')">
115 <div crm-mailing-block-preview
crm-mailing=
"abtest.mailings.a" on-preview=
"previewMailing('a', preview.mode)" on-send=
"sendTest('a', preview.recipient)" />
118 <div crm-ui-wizard-step=
"22" crm-title=
"ts('Compose (B)')" ng-if=
"abtest.ab.testing_criteria == 'full_email'" ng-form=
"composeBForm">
120 <div crm-ui-tab
id=
"tab-mailingB" crm-title=
"ts('Mailing')">
122 crm-mailing-ab-block-mailing=
"{
128 crm-abtest=
"abtest"></div>
129 <div crm-ui-accordion
crm-title=
"ts('HTML')">
130 <div crm-mailing-body-html
crm-mailing=
"abtest.mailings.b"/>
132 <div crm-ui-accordion
crm-title=
"ts('Plain Text')" crm-collapsed='!abtest.mailings.b.body_text'
>
133 <div crm-mailing-body-text
crm-mailing=
"abtest.mailings.b"/>
136 <div crm-ui-tab
id=
"tab-attachmentB" crm-title=
"ts('Attachments')">
137 <div crm-attachments=
"abtest.attachments.b"/>
139 <div crm-ui-tab
id=
"tab-headerB" crm-title=
"ts('Header and Footer')">
140 <div crm-mailing-block-header-footer
crm-mailing=
"abtest.mailings.b"/>
142 <div crm-ui-tab
id=
"tab-pubB" crm-title=
"ts('Publication')">
143 <div crm-mailing-block-publication
crm-mailing=
"abtest.mailings.b"/>
145 <div crm-ui-tab
id=
"tab-responseB" crm-title=
"ts('Responses')">
146 <div crm-mailing-block-responses
crm-mailing=
"abtest.mailings.b"/>
149 <div crm-ui-accordion
crm-title=
"ts('Preview')">
150 <div crm-mailing-block-preview
crm-mailing=
"abtest.mailings.b" on-preview=
"previewMailing('b', preview.mode)" on-send=
"sendTest('b', preview.recipient)" />
153 <div crm-ui-wizard-step=
"30" crm-title=
"ts('Schedule')" ng-form=
"schedForm">
155 crm-mailing-ab-block-setup=
"{
157 declare_winning_time: 1
159 crm-abtest=
"abtest"></div>
161 <a class=
"button crmMailing-submit-button" ng-click=
"submit()" ng-class=
"{blocking: block.check(), disabled: crmMailingAB.$invalid}">
162 <div>{{ts('Submit Mailing')}}
</div>
166 <span crm-ui-wizard-buttons
style=
"float:right;">
169 ng-show=
"checkPerm('delete in CiviMail')"
170 ng-disabled=
"block.check()"
171 crm-confirm=
"{title:ts('Delete Draft'), message:ts('Are you sure you want to permanently delete this mailing?')}"
172 on-yes=
"delete()">{{ts('Delete Draft')}}
174 <button crm-icon=
"disk" ng-disabled=
"block.check()" ng-click=
"save().then(leave) ">{{ts('Save Draft')}}
</button>