Merge pull request #17640 from samuelsov/bugreportcivigrant
[civicrm-core.git] / ang / crmMailingAB / EditCtrl / edit.html
1 <!--
2 Implicit Controller: CrmMailingABEditCtrl
3
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".
8 -->
9 <div ng-form="crmMailingABEdit">
10 <div class="crm-block crm-form-block crmMailing">
11 <div crm-ui-wizard>
12 <div crm-ui-wizard-step="10" crm-title="ts('Setup')" ng-form="setupForm">
13 <div
14 crm-mailing-ab-block-setup="{
15 help: 1,
16 abName: 1,
17 campaign: 1,
18 testing_criteria: 1
19 }"
20 crm-abtest="abtest"></div>
21 </div>
22 <div crm-ui-wizard-step="11" crm-title="ts('Target')" ng-form="targetForm">
23 <div
24 crm-mailing-ab-block-setup="{
25 recipients: 1,
26 group_percentage: 1
27 }"
28 crm-abtest="abtest"></div>
29 </div>
30 <div crm-ui-wizard-step="20" crm-title="ts('Compose')" ng-if="abtest.ab.testing_criteria != 'full_email'" ng-form="composeForm">
31 <div crm-ui-tab-set>
32 <div crm-ui-tab id="tab-mailing" crm-title="ts('Mailing')">
33 <div
34 ng-if="abtest.ab.testing_criteria == 'from'"
35 crm-mailing-ab-block-mailing="{
36 msg_template_id: 1,
37 fromAddressA: 1,
38 fromAddressB: 1,
39 subject: 1
40 }"
41 crm-abtest="abtest"></div>
42 <div
43 ng-if="abtest.ab.testing_criteria == 'subject'"
44 crm-mailing-ab-block-mailing="{
45 msg_template_id: 1,
46 fromAddress: 1,
47 replyTo: 1,
48 subjectA: 1,
49 subjectB: 1
50 }"
51 crm-abtest="abtest"></div>
52 <div crm-ui-accordion="{title: ts('HTML')}">
53 <div crm-mailing-body-html crm-mailing="abtest.mailings.a"></div>
54 </div>
55 <div crm-ui-accordion="{title: ts('Plain Text'), collapsed: !abtest.mailings.a.body_text}">
56 <div crm-mailing-body-text crm-mailing="abtest.mailings.a"></div>
57 </div>
58 </div>
59 <!--
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"></div>
64 </div>
65 -->
66 <div crm-ui-tab id="tab-header" crm-title="ts('Header and Footer')" ng-if="mailingFields.header_id.options.length > 0 || mailingFields.footer_id.options.length > 0">
67 <div crm-mailing-block-header-footer crm-mailing="abtest.mailings.a"></div>
68 </div>
69 <div crm-ui-tab id="tab-pub" crm-title="ts('Publication')">
70 <div crm-mailing-block-publication crm-mailing="abtest.mailings.a"></div>
71 </div>
72 <div crm-ui-tab id="tab-response" crm-title="ts('Responses')">
73 <div crm-mailing-block-responses crm-mailing="abtest.mailings.a"></div>
74 </div>
75 </div>
76 <div crm-ui-accordion="{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)"></div>
78 </div>
79 <div crm-ui-accordion="{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)"></div>
81 </div>
82 </div>
83 <div crm-ui-wizard-step="21" crm-title="ts('Compose (A)')" ng-if="abtest.ab.testing_criteria == 'full_email'" ng-form="composeAForm">
84 <div crm-ui-tab-set>
85 <div crm-ui-tab id="tab-mailingA" crm-title="ts('Mailing')">
86 <div
87 crm-mailing-ab-block-mailing="{
88 msg_template_idA: 1,
89 fromAddressA: 1,
90 replyToA: 1,
91 subjectA: 1
92 }"
93 crm-abtest="abtest"></div>
94 <div crm-ui-accordion="{title: ts('HTML')}">
95 <div crm-mailing-body-html crm-mailing="abtest.mailings.a"></div>
96 </div>
97 <div crm-ui-accordion="{title: ts('Plain Text'), collapsed: !abtest.mailings.a.body_text}">
98 <div crm-mailing-body-text crm-mailing="abtest.mailings.a"></div>
99 </div>
100 </div>
101 <div crm-ui-tab id="tab-attachmentA" crm-title="ts('Attachments')">
102 <div crm-attachments="abtest.attachments.a"></div>
103 </div>
104 <div crm-ui-tab id="tab-headerA" crm-title="ts('Header and Footer')" ng-if="mailingFields.header_id.options.length > 0 || mailingFields.footer_id.options.length > 0">
105 <div crm-mailing-block-header-footer crm-mailing="abtest.mailings.a"></div>
106 </div>
107 <div crm-ui-tab id="tab-pubA" crm-title="ts('Publication')">
108 <div crm-mailing-block-publication crm-mailing="abtest.mailings.a"></div>
109 </div>
110 <div crm-ui-tab id="tab-responseA" crm-title="ts('Responses')">
111 <div crm-mailing-block-responses crm-mailing="abtest.mailings.a"></div>
112 </div>
113 </div>
114 <div crm-ui-accordion="{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)"></div>
116 </div>
117 </div>
118 <div crm-ui-wizard-step="22" crm-title="ts('Compose (B)')" ng-if="abtest.ab.testing_criteria == 'full_email'" ng-form="composeBForm">
119 <div crm-ui-tab-set>
120 <div crm-ui-tab id="tab-mailingB" crm-title="ts('Mailing')">
121 <div
122 crm-mailing-ab-block-mailing="{
123 msg_template_idB: 1,
124 fromAddressB: 1,
125 replyToB: 1,
126 subjectB: 1
127 }"
128 crm-abtest="abtest"></div>
129 <div crm-ui-accordion="{title: ts('HTML')}">
130 <div crm-mailing-body-html crm-mailing="abtest.mailings.b"></div>
131 </div>
132 <div crm-ui-accordion="{title: ts('Plain Text'), collapsed: !abtest.mailings.b.body_text}">
133 <div crm-mailing-body-text crm-mailing="abtest.mailings.b"></div>
134 </div>
135 </div>
136 <div crm-ui-tab id="tab-attachmentB" crm-title="ts('Attachments')">
137 <div crm-attachments="abtest.attachments.b"></div>
138 </div>
139 <div crm-ui-tab id="tab-headerB" crm-title="ts('Header and Footer')" ng-if="mailingFields.header_id.options.length > 0 || mailingFields.footer_id.options.length > 0">
140 <div crm-mailing-block-header-footer crm-mailing="abtest.mailings.b"></div>
141 </div>
142 <div crm-ui-tab id="tab-pubB" crm-title="ts('Publication')">
143 <div crm-mailing-block-publication crm-mailing="abtest.mailings.b"></div>
144 </div>
145 <div crm-ui-tab id="tab-responseB" crm-title="ts('Responses')">
146 <div crm-mailing-block-responses crm-mailing="abtest.mailings.b"></div>
147 </div>
148 </div>
149 <div crm-ui-accordion="{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)"></div>
151 </div>
152 </div>
153 <div crm-ui-wizard-step="30" crm-title="ts('Schedule')" ng-form="schedForm">
154 <div
155 crm-mailing-ab-block-setup="{
156 scheduled_date: 1,
157 declare_winning_time: 1
158 }"
159 crm-abtest="abtest"></div>
160 <center>
161 <a class="button crmMailing-submit-button" crm-icon="fa-paper-plane" ng-click="submit()" ng-class="{blocking: block.check(), disabled: crmMailingAB.$invalid}">{{:: ts('Submit Mailing') }}</a>
162 </center>
163 </div>
164 <span crm-ui-wizard-buttons style="float:right;">
165 <button
166 crm-icon="fa-trash"
167 ng-show="checkPerm('delete in CiviMail')"
168 ng-disabled="block.check()"
169 crm-confirm="{title:ts('Delete Draft'), message:ts('Are you sure you want to permanently delete this mailing?')}"
170 on-yes="delete()">{{:: ts('Delete Draft') }}
171 </button>
172 <button crm-icon="fa-floppy-o" ng-disabled="block.check()" ng-click="save().then(leave) ">{{:: ts('Save Draft') }}</button>
173 </span>
174 </div>
175 </div>
176 </div>