1 <div crm-ui-accordion
crm-title=
"ts('Debug')" crm-collapsed=
"true">
2 <pre>{{abtest.ab|json}}
</pre>
3 <pre>{{abtest.mailings|json}}
</pre>
7 An ABTest includes two mailings, but we don't require the user to enter two complete mailings. For
8 simplicity, the email composition UI generally displays A (unless we specifically decided to expose an
9 individual field from B). At the end of the composition process, the controller's "sync" operation will
10 merge shared settings from "A" into "B".
12 <div ng-show=
"isSubmitted()">
13 {{ts('This mailing has been submitted.')}}
16 <form name=
"crmMailingAB" novalidate
ng-hide=
"isSubmitted()" crm-autosave=
"save()" crm-autosave-model=
"abtest.getAutosaveSignature()" crm-autosave-if=
"sync()">
17 <div class=
"crm-block crm-form-block crmMailing">
19 <div crm-ui-wizard-step=
"10" crm-title=
"ts('Setup')" ng-form=
"setupForm">
21 crm-mailing-ab-block-setup=
"{
27 crm-abtest=
"abtest"></div>
29 <div crm-ui-wizard-step=
"11" crm-title=
"ts('Target')" ng-form=
"targetForm">
31 crm-mailing-ab-block-setup=
"{
35 crm-abtest=
"abtest"></div>
37 <div crm-ui-wizard-step=
"20" crm-title=
"ts('Compose')" ng-if=
"criteriaName != 'Two different emails'" ng-form=
"composeForm">
39 <div crm-ui-tab
id=
"tab-mailing" crm-title=
"ts('Mailing')">
41 ng-if=
"criteriaName == 'From names'"
42 crm-mailing-ab-block-mailing=
"{
48 crm-abtest=
"abtest"></div>
50 ng-if=
"criteriaName == 'Subject lines'"
51 crm-mailing-ab-block-mailing=
"{
58 crm-abtest=
"abtest"></div>
59 <div crm-ui-accordion
crm-title=
"ts('HTML')">
60 <div crm-mailing-body-html
crm-mailing=
"abtest.mailings.a"/>
62 <div crm-ui-accordion
crm-title=
"ts('Plain Text')" crm-collapsed='!abtest.mailings.a.body_text'
>
63 <div crm-mailing-body-text
crm-mailing=
"abtest.mailings.a"/>
67 FIXME: Attachment UI works, but we haven't implemented backend logic for copying/sharing
68 of attachments among mailings A/B/C.
69 <div crm-ui-tab id="tab-attachment" crm-title="ts('Attachments')">
70 <div crm-attachments="abtest.attachments.a"/>
73 <div crm-ui-tab
id=
"tab-header" crm-title=
"ts('Header and Footer')">
74 <div crm-mailing-block-header-footer
crm-mailing=
"abtest.mailings.a"/>
76 <div crm-ui-tab
id=
"tab-pub" crm-title=
"ts('Publication')">
77 <div crm-mailing-block-publication
crm-mailing=
"abtest.mailings.a"/>
79 <div crm-ui-tab
id=
"tab-response" crm-title=
"ts('Responses')">
80 <div crm-mailing-block-responses
crm-mailing=
"abtest.mailings.a"/>
83 <div crm-ui-accordion
crm-title=
"ts('Preview (A)')">
84 <div crm-mailing-block-preview
crm-mailing=
"abtest.mailings.a" on-preview=
"previewMailing('a', preview.mode)" on-send=
"sendTest('a', preview.recipient)" />
86 <div crm-ui-accordion
crm-title=
"ts('Preview (B)')">
87 <div crm-mailing-block-preview
crm-mailing=
"abtest.mailings.b" on-preview=
"previewMailing('b', preview.mode)" on-send=
"sendTest('b', preview.recipient)" />
90 <div crm-ui-wizard-step=
"21" crm-title=
"ts('Compose (A)')" ng-if=
"criteriaName == 'Two different emails'" ng-form=
"composeAForm">
92 <div crm-ui-tab
id=
"tab-mailingA" crm-title=
"ts('Mailing')">
94 crm-mailing-ab-block-mailing=
"{
100 crm-abtest=
"abtest"></div>
101 <div crm-ui-accordion
crm-title=
"ts('HTML')">
102 <div crm-mailing-body-html
crm-mailing=
"abtest.mailings.a"/>
104 <div crm-ui-accordion
crm-title=
"ts('Plain Text')" crm-collapsed='!abtest.mailings.a.body_text'
>
105 <div crm-mailing-body-text
crm-mailing=
"abtest.mailings.a"/>
108 <div crm-ui-tab
id=
"tab-attachmentA" crm-title=
"ts('Attachments')">
109 <div crm-attachments=
"abtest.attachments.a"/>
111 <div crm-ui-tab
id=
"tab-headerA" crm-title=
"ts('Header and Footer')">
112 <div crm-mailing-block-header-footer
crm-mailing=
"abtest.mailings.a"/>
114 <div crm-ui-tab
id=
"tab-pubA" crm-title=
"ts('Publication')">
115 <div crm-mailing-block-publication
crm-mailing=
"abtest.mailings.a"/>
117 <div crm-ui-tab
id=
"tab-responseA" crm-title=
"ts('Responses')">
118 <div crm-mailing-block-responses
crm-mailing=
"abtest.mailings.a"/>
121 <div crm-ui-accordion
crm-title=
"ts('Preview')">
122 <div crm-mailing-block-preview
crm-mailing=
"abtest.mailings.a" on-preview=
"previewMailing('a', preview.mode)" on-send=
"sendTest('a', preview.recipient)" />
125 <div crm-ui-wizard-step=
"22" crm-title=
"ts('Compose (B)')" ng-if=
"criteriaName == 'Two different emails'" ng-form=
"composeBForm">
127 <div crm-ui-tab
id=
"tab-mailingB" crm-title=
"ts('Mailing')">
129 crm-mailing-ab-block-mailing=
"{
135 crm-abtest=
"abtest"></div>
136 <div crm-ui-accordion
crm-title=
"ts('HTML')">
137 <div crm-mailing-body-html
crm-mailing=
"abtest.mailings.b"/>
139 <div crm-ui-accordion
crm-title=
"ts('Plain Text')" crm-collapsed='!abtest.mailings.b.body_text'
>
140 <div crm-mailing-body-text
crm-mailing=
"abtest.mailings.b"/>
143 <div crm-ui-tab
id=
"tab-attachmentB" crm-title=
"ts('Attachments')">
144 <div crm-attachments=
"abtest.attachments.b"/>
146 <div crm-ui-tab
id=
"tab-headerB" crm-title=
"ts('Header and Footer')">
147 <div crm-mailing-block-header-footer
crm-mailing=
"abtest.mailings.b"/>
149 <div crm-ui-tab
id=
"tab-pubB" crm-title=
"ts('Publication')">
150 <div crm-mailing-block-publication
crm-mailing=
"abtest.mailings.b"/>
152 <div crm-ui-tab
id=
"tab-responseB" crm-title=
"ts('Responses')">
153 <div crm-mailing-block-responses
crm-mailing=
"abtest.mailings.b"/>
156 <div crm-ui-accordion
crm-title=
"ts('Preview')">
157 <div crm-mailing-block-preview
crm-mailing=
"abtest.mailings.b" on-preview=
"previewMailing('b', preview.mode)" on-send=
"sendTest('b', preview.recipient)" />
160 <div crm-ui-wizard-step=
"30" crm-title=
"ts('Schedule')" ng-form=
"schedForm">
162 crm-mailing-ab-block-setup=
"{
164 declare_winning_time: 1
166 crm-abtest=
"abtest"></div>
168 <a class=
"crmMailing-submit-button" ng-click=
"submit()" ng-class=
"{blocking: block.check(), disabled: crmMailingAB.$invalid}">
169 <div>{{ts('Submit Mailing')}}
</div>
173 <span crm-ui-wizard-buttons
style=
"float:right;">
176 ng-disabled=
"block.check()"
177 crm-confirm=
"{title:ts('Delete Draft'), message:ts('Are you sure you want to permanently delete this mailing?')}"
178 on-yes=
"delete()">{{ts('Delete Draft')}}
180 <button crm-icon=
"disk" ng-disabled=
"block.check()" ng-click=
"save().then(leave) ">{{ts('Save Draft')}}
</button>