Merge pull request #15810 from eileenmcnaughton/mem_fix
[civicrm-core.git] / templates / CRM / Mailing / Form / InsertTokens.tpl
1 {*
2 +--------------------------------------------------------------------+
3 | Copyright CiviCRM LLC. All rights reserved. |
4 | |
5 | This work is published under the GNU AGPLv3 license with some |
6 | permitted exceptions and without any warranty. For full license |
7 | and copyright information, see https://civicrm.org/licensing |
8 +--------------------------------------------------------------------+
9 *}
10 <script type="text/javascript">
11 cj('form.{$form.formClass}').data('tokens', {$tokens|@json_encode});
12 var text_message = null;
13 var html_message = null;
14 var prefix = '';
15 var isPDF = false;
16 var isMailing = false;
17
18 {if $form.formName eq 'MessageTemplates'}
19 {literal}
20 text_message = "msg_text";
21 html_message = "msg_html";
22 {/literal}
23 {elseif $form.formName eq 'Address'}
24 {literal}
25 text_message = "mailing_format";
26 isMailing = false;
27 {/literal}
28 {elseif $form.formClass eq 'CRM_SMS_Form_Upload' || $form.formClass eq 'CRM_Contact_Form_Task_SMS'}
29 {literal}
30 prefix = "SMS";
31 text_message = "sms_text_message";
32 isMailing = true;
33 {/literal}
34 {else}
35 {literal}
36 text_message = "text_message";
37 html_message = (cj("#edit-html-message-value").length > 0) ? "edit-html-message-value" : "html_message";
38 isMailing = true;
39 {/literal}
40 {/if}
41
42 {if $form.formName eq 'PDF'}
43 {literal}
44 isPDF = true;
45 {/literal}
46 {/if}
47
48 {if $templateSelected}
49 {literal}
50 if ( document.getElementsByName(prefix + "saveTemplate")[0].checked ) {
51 document.getElementById(prefix + "template").selectedIndex = {/literal}{$templateSelected}{literal};
52 }
53 {/literal}
54 {/if}
55 {literal}
56
57 function showSaveUpdateChkBox(prefix) {
58 prefix = prefix || '';
59 if (document.getElementById(prefix + "template") == null) {
60 if (document.getElementsByName(prefix + "saveTemplate")[0].checked){
61 document.getElementById(prefix + "saveDetails").style.display = "block";
62 document.getElementById(prefix + "editMessageDetails").style.display = "block";
63 }
64 else {
65 document.getElementById(prefix + "saveDetails").style.display = "none";
66 document.getElementById(prefix + "updateDetails").style.display = "none";
67 }
68 return;
69 }
70
71 if (document.getElementsByName(prefix + "saveTemplate")[0].checked &&
72 document.getElementsByName(prefix + "updateTemplate")[0].checked == false) {
73 document.getElementById(prefix + "updateDetails").style.display = "none";
74 }
75 else if ( document.getElementsByName(prefix + "saveTemplate")[0].checked &&
76 document.getElementsByName(prefix + "updateTemplate")[0].checked ){
77 document.getElementById(prefix + "editMessageDetails").style.display = "block";
78 document.getElementById(pefix + "saveDetails").style.display = "block";
79 }
80 else if ( document.getElementsByName(prefix + "saveTemplate")[0].checked == false &&
81 document.getElementsByName(prefix + "updateTemplate")[0].checked ) {
82 document.getElementById(prefix + "saveDetails").style.display = "none";
83 document.getElementById(prefix + "editMessageDetails").style.display = "block";
84 }
85 else {
86 document.getElementById(prefix + "saveDetails").style.display = "none";
87 document.getElementById(prefix + "updateDetails").style.display = "none";
88 }
89 }
90
91 function selectValue( val, prefix) {
92 document.getElementsByName(prefix + "saveTemplate")[0].checked = false;
93 document.getElementsByName(prefix + "updateTemplate")[0].checked = false;
94 showSaveUpdateChkBox(prefix);
95 if ( !val ) {
96 if (document.getElementById("subject").length) {
97 document.getElementById("subject").value ="";
98 }
99 if (document.getElementById("subject").length) {
100 document.getElementById("subject").value ="";
101 }
102 if ( !isPDF ) {
103 if (prefix == 'SMS') {
104 document.getElementById("sms_text_message").value ="";
105 return;
106 }
107 else {
108 document.getElementById("text_message").value ="";
109 }
110 }
111 else {
112 cj('.crm-html_email-accordion').show();
113 cj('.crm-document-accordion').hide();
114 cj('#document_type').closest('tr').show();
115 }
116
117 CRM.wysiwyg.setVal('#' + html_message, '');
118 if ( isPDF ) {
119 showBindFormatChkBox();
120 }
121 return;
122 }
123
124 var dataUrl = {/literal}"{crmURL p='civicrm/ajax/template' h=0 }"{literal};
125
126 cj.post( dataUrl, {tid: val}, function( data ) {
127 var hide = (data.document_body && isPDF) ? false : true;
128 cj('.crm-html_email-accordion, .crm-pdf-format-accordion').toggle(hide);
129 cj('.crm-document-accordion').toggle(!hide);
130
131 cj('#document_type').closest('tr').toggle(hide);
132
133 // Unset any uploaded document when any template is chosen
134 if (cj('#document.file').length) {
135 cj('#document_file').val('');
136 }
137
138 if (!hide) {
139 cj("#subject").val( data.subject );
140 cj("#document-preview").html(data.document_body).parent().css({'background': 'white'});
141 return;
142 }
143
144 if ( !isPDF ) {
145 if (prefix == "SMS") {
146 text_message = "sms_text_message";
147 }
148 if ( data.msg_text ) {
149 cj("#"+text_message).val( data.msg_text );
150 cj("div.text").show();
151 cj(".head").find('span').removeClass().addClass('ui-icon ui-icon-triangle-1-s');
152 cj("#helptext").show();
153 }
154 else {
155 cj("#"+text_message).val("");
156 }
157 }
158
159 if (prefix == "SMS") {
160 return;
161 }
162 else {
163 cj("#subject").val( data.subject );
164 }
165
166 CRM.wysiwyg.setVal('#' + html_message, data.msg_html || '');
167
168 if (isPDF) {
169 var bind = data.pdf_format_id ? true : false ;
170 selectFormat( data.pdf_format_id, bind );
171 if (!bind) {
172 document.getElementById("bindFormat").style.display = "none";
173 }
174 }
175 }, 'json');
176 }
177
178 if ( isMailing ) {
179 document.getElementById(prefix + "editMessageDetails").style.display = "block";
180
181 function verify(select, prefix) {
182 prefix = prefix || '';
183 if (document.getElementsByName(prefix + "saveTemplate")[0].checked == false) {
184 document.getElementById(prefix + "saveDetails").style.display = "none";
185 }
186 document.getElementById(prefix + "editMessageDetails").style.display = "block";
187
188 var templateExists = true;
189 if (document.getElementById(prefix + "template") == null) {
190 templateExists = false;
191 }
192
193 if (templateExists && document.getElementById(prefix + "template").value) {
194 document.getElementById(prefix + "updateDetails").style.display = '';
195 }
196 else {
197 document.getElementById(prefix + "updateDetails").style.display = 'none';
198 }
199
200 document.getElementById(prefix + "saveTemplateName").disabled = false;
201 }
202
203 function showSaveDetails(chkbox, prefix) {
204 prefix = prefix || '';
205 if (chkbox.checked) {
206 document.getElementById(prefix + "saveDetails").style.display = "block";
207 document.getElementById(prefix + "saveTemplateName").disabled = false;
208 }
209 else {
210 document.getElementById(prefix + "saveDetails").style.display = "none";
211 document.getElementById(prefix + "saveTemplateName").disabled = true;
212 }
213 }
214
215 if (cj("#sms_text_message").length) {
216 showSaveUpdateChkBox('SMS');
217 }
218 if (cj("#text_message").length) {
219 showSaveUpdateChkBox();
220 }
221
222 cj('#' + html_message).on('focus change', verify);
223 }
224
225 CRM.$(function($) {
226 function insertToken() {
227 var
228 token = $(this).val(),
229 field = $(this).data('field');
230 if (field.indexOf('html') < 0) {
231 field = textMsgID($(this));
232 }
233 CRM.wysiwyg.insert('#' + field, token);
234 $(this).select2('val', '');
235 if (isMailing) {
236 verify();
237 }
238 }
239
240 function textMsgID(obj) {
241 if (obj.parents().is("#sms")) {
242 field = 'sms #' + obj.data('field');
243 }
244 else if(obj.parents().is("#email")) {
245 field = 'email #' + obj.data('field');
246 }
247 else {
248 field = obj.data('field');
249 }
250
251 return field;
252 }
253
254 // Initialize token selector widgets
255 var form = $('form.{/literal}{$form.formClass}{literal}');
256 $('input.crm-token-selector', form)
257 .addClass('crm-action-menu fa-code')
258 .change(insertToken)
259 .crmSelect2({
260 data: form.data('tokens'),
261 placeholder: '{/literal}{ts escape='js'}Tokens{/ts}{literal}'
262 });
263
264 $('.accordion .head').addClass( "ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ")
265 .hover( function() { $(this).addClass( "ui-state-hover");
266 }, function() { $(this).removeClass( "ui-state-hover");
267 }).bind('click', function() {
268 var checkClass = $(this).find('span').attr( 'class' );
269 var len = checkClass.length;
270 if ( checkClass.substring( len - 1, len ) == 's' ) {
271 $(this).find('span').removeClass().addClass('ui-icon ui-icon-triangle-1-e');
272 $("span#help"+$(this).find('span').attr('id')).hide();
273 }
274 else {
275 $(this).find('span').removeClass().addClass('ui-icon ui-icon-triangle-1-s');
276 $("span#help"+$(this).find('span').attr('id')).show();
277 }
278 $(this).next().toggle(); return false;
279 }).next().hide();
280 $('span#html').removeClass().addClass('ui-icon ui-icon-triangle-1-s');
281 $("div.html").show();
282
283 if ( !isMailing ) {
284 $("div.text").show();
285 }
286
287 function setSignature() {
288 var emailID = $("#fromEmailAddress").val( );
289 if ( !isNaN( emailID ) ) {
290 var dataUrl = {/literal}"{crmURL p='civicrm/ajax/signature' h=0 }"{literal};
291 $.post( dataUrl, {emailID: emailID}, function( data ) {
292
293 if (data.signature_text) {
294 var textMessage = $("#"+ text_message).val( ) + '\n\n--\n' + data.signature_text;
295 $("#"+ text_message).val( textMessage );
296 }
297
298 if (data.signature_html) {
299 var htmlMessage = CRM.wysiwyg.getVal("#" + html_message) + '<br/><br/>--<br/>' + data.signature_html;
300 CRM.wysiwyg.setVal("#" + html_message, htmlMessage);
301 }
302 }, 'json');
303 }
304 }
305 $("#fromEmailAddress", form).change(setSignature);
306 });
307
308 </script>
309 {/literal}