Escape js strings in smarty templates
[civicrm-core.git] / templates / CRM / Custom / Form / Group.tpl
1 {*
2 +--------------------------------------------------------------------+
3 | CiviCRM version 5 |
4 +--------------------------------------------------------------------+
5 | Copyright CiviCRM LLC (c) 2004-2018 |
6 +--------------------------------------------------------------------+
7 | This file is a part of CiviCRM. |
8 | |
9 | CiviCRM is free software; you can copy, modify, and distribute it |
10 | under the terms of the GNU Affero General Public License |
11 | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
12 | |
13 | CiviCRM is distributed in the hope that it will be useful, but |
14 | WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
16 | See the GNU Affero General Public License for more details. |
17 | |
18 | You should have received a copy of the GNU Affero General Public |
19 | License and the CiviCRM Licensing Exception along |
20 | with this program; if not, contact CiviCRM LLC |
21 | at info[AT]civicrm[DOT]org. If you have questions about the |
22 | GNU Affero General Public License or the licensing of CiviCRM, |
23 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
24 +--------------------------------------------------------------------+
25 *}
26 {* add/update/view custom data group *}
27 <div class="help">{ts}Use Custom Field Sets to add logically related fields for a specific type of CiviCRM record (e.g. contact records, contribution records, etc.).{/ts} {help id="id-group_intro"}</div>
28 <div class="crm-block crm-form-block">
29 <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div>
30 <table class="form-layout">
31 <tr>
32 <td class="label">{$form.title.label} {if $action == 2}{include file='CRM/Core/I18n/Dialog.tpl' table='civicrm_custom_group' field='title' id=$gid}{/if}</td>
33 <td class="html-adjust">{$form.title.html} {help id="id-title"}</td>
34 </tr>
35 <tr>
36 <td class="label">{$form.extends.label}</td>
37 <td>{$form.extends.html} {help id="id-extends"}</td>
38 </tr>
39 <tr>
40 <td class="label">{$form.weight.label}</td>
41 <td>{$form.weight.html} {help id="id-weight"}</td>
42 </tr>
43 <tr id="is_multiple_row" class="hiddenElement"> {* This section shown only when Used For = Contact, Individ, Org or Household. *}
44 <td></td>
45 <td class="html-adjust">{$form.is_multiple.html}&nbsp;{$form.is_multiple.label} {help id="id-is_multiple"}</td>
46 </tr>
47 <tr id="multiple_row" class="hiddenElement">
48 <td class="label">{$form.max_multiple.label}</td>
49 <td>{$form.max_multiple.html} {help id="id-max_multiple"}</td>
50 </tr>
51 <tr id="style_row" class="hiddenElement">
52 <td class="label">{$form.style.label}</td>
53 <td>{$form.style.html} {help id="id-display_style"}</td>
54 </tr>
55 <tr class="html-adjust">
56 <td>&nbsp;</td>
57 <td>{$form.collapse_display.html} {$form.collapse_display.label} {help id="id-collapse"}</td>
58 </tr>
59 <tr>
60 <td>&nbsp;</td>
61 <td>{$form.collapse_adv_display.html} {$form.collapse_adv_display.label} {help id="id-collapse-adv"}</td>
62 </tr>
63 <tr>
64 <td>&nbsp;</td>
65 <td>{$form.is_active.html} {$form.is_active.label}</td>
66 </tr>
67 <tr>
68 <td>&nbsp;</td>
69 <td>{$form.is_public.html} {$form.is_public.label}</td>
70 </tr>
71 <tr class="html-adjust">
72 <td class="label">{$form.help_pre.label} <!--{if $action == 2}{include file='CRM/Core/I18n/Dialog.tpl' table='civicrm_custom_group' field='help_pre' id=$gid}{/if}-->{help id="id-help_pre"}</td>
73 <td>{$form.help_pre.html}</td>
74 </tr>
75 <tr class="html-adjust">
76 <td class="label">{$form.help_post.label} <!--{if $action == 2}{include file='CRM/Core/I18n/Dialog.tpl' table='civicrm_custom_group' field='help_post' id=$gid}{/if}-->{help id="id-help_post"}</td>
77 <td>{$form.help_post.html}</td>
78 </tr>
79 </table>
80 <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div>
81 </div>
82 {if $action eq 2 or $action eq 4} {* Update or View*}
83 <p></p>
84 <div class="action-link">
85 {crmButton p='civicrm/admin/custom/group/field' q="action=browse&reset=1&gid=$gid" icon="th-list"}{ts}Custom Fields for this Set{/ts}{/crmButton}
86 </div>
87 {/if}
88 {$initHideBlocks}
89 {literal}
90 <script type="text/Javascript">
91 CRM.$(function($) {
92 var tabWithTableOption;
93
94 $('#extends_0').each(showHideStyle).change(showHideStyle);
95
96 var isGroupEmpty = {/literal}{$isGroupEmpty|@json_encode}{literal};
97 if (isGroupEmpty) {
98 showRange(true);
99 }
100 $('input#is_multiple').change(showRange);
101
102 // "Collapse" is a bad default for "Tab" display
103 $("select#style").change(function() {
104 if ($(this).val() == 'Tab') {
105 $('#collapse_display').prop('checked', false);
106 }
107 });
108
109 /**
110 * Check if this is a contact-related set and show/hide other options accordingly
111 */
112 function showHideStyle() {
113 var
114 extend = $(this).val(),
115 contactTypes = {/literal}{$contactTypes}{literal},
116 showStyle = "{/literal}{$showStyle}{literal}",
117 showMultiple = "{/literal}{$showMultiple}{literal}",
118 showMaxMultiple = "{/literal}{$showMaxMultiple}{literal}",
119 isContact = ($.inArray(extend, contactTypes) >= 0);
120
121 if (isContact) {
122 $("tr#style_row, tr#is_multiple_row").show();
123 if ($('#is_multiple :checked').length) {
124 $("tr#multiple_row").show();
125 }
126 }
127 else {
128 $("tr#style_row, tr#is_multiple_row, tr#multiple_row").hide();
129 }
130
131 if (showStyle) {
132 $("tr#style_row").show();
133 }
134
135 if (showMultiple) {
136 $("tr#style_row, tr#is_multiple_row").show();
137 }
138
139 if (!showMaxMultiple) {
140 $("tr#multiple_row").hide();
141 }
142 else if ($('#is_multiple').prop('checked')) {
143 $("tr#multiple_row").show();
144 }
145 }
146
147 /**
148 * Check if this set supports multiple records and adjust other options accordingly
149 *
150 * @param onFormLoad
151 */
152 function showRange(onFormLoad) {
153 if($("#is_multiple").is(':checked')) {
154 $("tr#multiple_row").show();
155 if (onFormLoad !== true) {
156 $('#collapse_display').prop('checked', false);
157 $("select#style").append(tabWithTableOption);
158 $("select#style").val('Tab with table');
159 }
160 }
161 else {
162 $("tr#multiple_row").hide();
163 if ($("select#style").val() === 'Tab with table') {
164 $("select#style").val('Inline');
165 }
166 tabWithTableOption = $("select#style option[value='Tab with table']").detach();
167 }
168 }
169
170 // In update mode, when 'extends' is set to an option which doesn't have
171 // any options in 2nd selector (for subtypes)
172 var subtypes = document.getElementById('extends_1');
173 if (subtypes) {
174 if (subtypes.options.length <= 0) {
175 subtypes.style.display = 'none';
176 }
177 else {
178 subtypes.style.display = 'inline';
179 }
180 }
181
182 // When removing sub-types
183 $('.crm-warnDataLoss').on('click', function() {
184 var submittedSubtypes = $('#extends_1').val();
185 var defaultSubtypes = {/literal}{$defaultSubtypes}{literal};
186
187 var warning = false;
188 $.each(defaultSubtypes, function(index, subtype) {
189 if ($.inArray(subtype, submittedSubtypes) < 0) {
190 warning = true;
191 }
192 });
193
194 if (warning) {
195 return confirm({/literal}'{ts escape='js'}Warning: You have chosen to remove one or more subtypes. This will cause any custom data records associated with those subtypes to be removed as long as the contact does not have a contact subtype still selected.{/ts}'{literal});
196 }
197 return true;
198 });
199 });
200 </script>
201 {/literal}