Commit | Line | Data |
---|---|---|
6a488035 TO |
1 | {* |
2 | +--------------------------------------------------------------------+ | |
2c4c49ca | 3 | | CiviCRM version 4.7 | |
6a488035 | 4 | +--------------------------------------------------------------------+ |
2a73d3b0 | 5 | | Copyright CiviCRM LLC (c) 2004-2017 | |
6a488035 TO |
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 | <div class="crm-block crm-form-block crm-contact-merge-form-block"> | |
3bb59daf AH |
27 | <div class="help"> |
28 | {ts}Click <strong>Merge</strong> to move data from the Duplicate Contact on the left into the Main Contact. In addition to the contact data (address, phone, email...), you may choose to move all or some of the related activity records (groups, contributions, memberships, etc.).{/ts} {help id="intro"} | |
29 | </div> | |
ffd39a49 | 30 | |
ffd39a49 J |
31 | <div class="message status"> |
32 | <div class="icon inform-icon"></div> | |
3bb59daf | 33 | <strong>{ts}WARNING: The duplicate contact record WILL BE DELETED after the merge is complete.{/ts}</strong> |
ffd39a49 | 34 | </div> |
ffd39a49 | 35 | |
3bb59daf AH |
36 | {if $user} |
37 | <div class="message status"> | |
38 | <div class="icon inform-icon"></div> | |
39 | <strong>{ts 1=$config->userFramework}WARNING: There are %1 user accounts associated with both the original and duplicate contacts. Ensure that the %1 user you want to retain is on the right - if necessary use the 'Flip between original and duplicate contacts.' option at top to swap the positions of the two records before doing the merge. | |
40 | The user record associated with the duplicate contact will not be deleted, but will be unlinked from the associated contact record (which will be deleted). | |
41 | You will need to manually delete that user (click on the link to open the %1 user account in new screen). You may need to give thought to how you handle any content or contents associated with that user.{/ts}</strong> | |
42 | </div> | |
43 | {/if} | |
44 | ||
45 | <div class="crm-submit-buttons"> | |
46 | {include file="CRM/common/formButtons.tpl" location="top"} | |
47 | </div> | |
6a488035 | 48 | |
3bb59daf AH |
49 | <div class="action-link"> |
50 | {if $prev}<a href="{$prev}" class="crm-hover-button action-item"><i class="crm-i fa-chevron-left"></i> {ts}Previous{/ts}</a>{/if} | |
51 | {if $next}<a href="{$next}" class="crm-hover-button action-item">{ts}Next{/ts} <i class="crm-i fa-chevron-right"></i></a>{/if} | |
52 | <a href="{$flip}" class="action-item crm-hover-button"> | |
53 | <i class="crm-i fa-random"></i> | |
54 | {ts}Flip between original and duplicate contacts.{/ts} | |
55 | </a> | |
56 | </div> | |
6a488035 | 57 | |
3bb59daf | 58 | <div class="action-link"> |
4e052b22 | 59 | <a href="#" class="action-item crm-hover-button crm-notDuplicate" title={ts}Mark this pair as not a duplicate.{/ts} onClick="processDupes( {$main_cid}, {$other_cid}, 'dupe-nondupe', 'merge-contact', '{$browseUrl}' );return false;"> |
3bb59daf AH |
60 | <i class="crm-i fa-times-circle"></i> |
61 | {ts}Mark this pair as not a duplicate.{/ts} | |
62 | </a> | |
63 | </div> | |
6a488035 | 64 | |
3bb59daf AH |
65 | <div class="action-link"> |
66 | <a href="javascript:void(0);" class="action-item crm-hover-button toggle_equal_rows"> | |
67 | <i class="crm-i fa-eye-slash"></i> | |
68 | {ts}Show/hide rows with the same data on each contact record.{/ts} | |
69 | </a> | |
70 | </div> | |
08ef1f91 | 71 | |
3bb59daf AH |
72 | <table class="row-highlight"> |
73 | <tr class="columnheader"> | |
74 | <th> </th> | |
75 | <th><a href="{crmURL p='civicrm/contact/view' q="reset=1&cid=$other_cid"}">{$other_name}</a> ({ts}duplicate{/ts})</th> | |
76 | <th>{ts}Mark All{/ts}<br />=={$form.toggleSelect.html} ==></th> | |
77 | <th><a href="{crmURL p='civicrm/contact/view' q="reset=1&cid=$main_cid"}">{$main_name}</a></th> | |
78 | <th width="300">Add/overwrite?</th> | |
79 | </tr> | |
eb61dc07 | 80 | |
3bb59daf | 81 | {crmAPI var='other_result' entity='Contact' action='get' return="modified_date" id=$other_cid} |
3b8dfec6 | 82 | |
3bb59daf | 83 | {crmAPI var='main_result' entity='Contact' action='get' return="modified_date" id=$main_cid} |
eb61dc07 | 84 | |
3bb59daf AH |
85 | <tr> |
86 | <td>Last modified</td> | |
87 | <td>{$other_result.values.0.modified_date|crmDate} {if $other_result.values.0.modified_date gt $main_result.values.0.modified_date} (Most recent) {/if}</td> | |
88 | <td></td> | |
89 | <td>{$main_result.values.0.modified_date|crmDate} {if $main_result.values.0.modified_date gt $other_result.values.0.modified_date} (Most recent) {/if}</td> | |
90 | <td></td> | |
91 | </tr> | |
eb61dc07 | 92 | |
3bb59daf | 93 | {foreach from=$rows item=row key=field} |
6a488035 | 94 | |
3bb59daf AH |
95 | {if !isset($row.main) && !isset($row.other)} |
96 | <tr style="background-color: #fff !important; border-bottom:1px solid #ccc !important;" class="no-data"> | |
eb61dc07 | 97 | <td> |
3bb59daf | 98 | <strong>{$row.title}</strong> |
eb61dc07 | 99 | </td> |
3bb59daf AH |
100 | {else} |
101 | {if $row.main eq $row.other} | |
102 | <tr class="merge-row-equal crm-row-ok {cycle values="odd-row,even-row"}"> | |
103 | {else} | |
104 | <tr class="crm-row-error {cycle values="odd-row,even-row"}"> | |
105 | {/if} | |
eb61dc07 | 106 | <td> |
3bb59daf | 107 | {$row.title} |
eb61dc07 | 108 | </td> |
3bb59daf | 109 | {/if} |
53e45f60 | 110 | |
3bb59daf AH |
111 | {assign var=position value=$field|strrpos:'_'} |
112 | {assign var=blockId value=$field|substr:$position+1} | |
113 | {assign var=blockName value=$field|substr:14:$position-14} | |
eb61dc07 J |
114 | |
115 | <td> | |
041d6d6b J |
116 | {* @TODO check if this is ever an array or a fileName? *} |
117 | {* This is on one long line for address formatting *} | |
118 | {if $row.title|substr:0:7 == "Address"}<span style="white-space: pre">{else}<span>{/if}{if !is_array($row.other)}{$row.other}{elseif $row.other.fileName}{$row.other.fileName}{else}{', '|implode:$row.other}{/if}</span> | |
eb61dc07 J |
119 | </td> |
120 | ||
3bb59daf AH |
121 | <td style='white-space: nowrap'> |
122 | {if $form.$field}=={$form.$field.html|crmAddClass:"select-row"}==>{/if} | |
123 | </td> | |
124 | ||
125 | {* For location blocks *} | |
126 | {if $row.title|substr:0:5 == "Email" OR | |
127 | $row.title|substr:0:7 == "Address" OR | |
128 | $row.title|substr:0:2 == "IM" OR | |
129 | $row.title|substr:0:7 == "Website" OR | |
130 | $row.title|substr:0:5 == "Phone"} | |
131 | ||
132 | <td> | |
041d6d6b J |
133 | {* @TODO check if this is ever an array or a fileName? *} |
134 | {* This is on one long line for address formatting *} | |
135 | {if $row.title|substr:0:7 == "Address"}<span style="white-space: pre" id="main_{$blockName}_{$blockId}">{else}<span id="main_{$blockName}_{$blockId}">{/if}{if !is_array($row.main)}{$row.main}{elseif $row.main.fileName}{$row.main.fileName}{else}{', '|implode:$row.main}{/if}</span> | |
3bb59daf AH |
136 | </td> |
137 | ||
138 | <td> | |
139 | {* Display location for fields with locations *} | |
140 | {if $blockName eq 'email' || $blockName eq 'phone' || $blockName eq 'address' || $blockName eq 'im' } | |
972947a7 | 141 | {$form.location_blocks.$blockName.$blockId.locTypeId.html} |
3bb59daf AH |
142 | {/if} |
143 | ||
144 | {* Display other_type_id for websites, ims and phones *} | |
145 | {if $blockName eq 'website' || $blockName eq 'im' || $blockName eq 'phone' } | |
972947a7 | 146 | {$form.location_blocks.$blockName.$blockId.typeTypeId.html} |
3bb59daf AH |
147 | {/if} |
148 | ||
149 | {* Display the overwrite/add/add new label *} | |
abd0b852 J |
150 | <span id="main_{$blockName}_{$blockId}_overwrite" class="location_block_controls"> |
151 | ||
152 | <span class="location_primary"> | |
153 | {if $row.main && $row.main_is_primary == "1"}Primary{/if} | |
154 | </span> | |
155 | ||
156 | <span class="location_block_controls_options"> | |
157 | <span class="location_operation_description"> | |
158 | {if $row.main}({ts}overwrite{/ts}){else}({ts}add{/ts}){/if} | |
159 | </span> | |
160 | <span style="display: block" class="location_operation_checkbox"> | |
161 | {if $row.main && ($blockName eq 'email' || $blockName eq 'phone')} | |
162 | {$form.location_blocks.$blockName.$blockId.operation.html} | |
041d6d6b | 163 | {/if} |
041d6d6b | 164 | </span> |
abd0b852 J |
165 | <span style="display: block" class="location_set_other_primary"> |
166 | {if $blockName neq 'website' && (($row.main && $row.main_is_primary != "1") || !$row.main)} | |
167 | {$form.location_blocks.$blockName.$blockId.set_other_primary.html} | |
168 | {/if} | |
169 | </span> | |
170 | </span> | |
3bb59daf | 171 | </span> |
041d6d6b | 172 | |
3bb59daf AH |
173 | </td> |
174 | ||
175 | {* For non-location blocks *} | |
176 | {else} | |
177 | ||
178 | <td> | |
3b8dfec6 | 179 | <span> |
3bb59daf AH |
180 | {if !is_array($row.main)} |
181 | {$row.main} | |
182 | {elseif $row.main.fileName} | |
183 | {$row.main.fileName} | |
184 | {else} | |
185 | {', '|implode:$row.main} | |
eb61dc07 | 186 | {/if} |
08ef1f91 | 187 | </span> |
3bb59daf AH |
188 | </td> |
189 | ||
190 | <td> | |
191 | {if isset($row.main) || isset($row.other)} | |
192 | <span> | |
193 | {if $row.main == $row.other} | |
194 | <span class="action_label">({ts}match{/ts})</span><br /> | |
195 | {elseif $row.main} | |
196 | <span class="action_label">({ts}overwrite{/ts})</span><br /> | |
197 | {else} | |
198 | <span class="action_label">({ts}add{/ts})</span> | |
199 | {/if} | |
200 | </span> | |
201 | {/if} | |
202 | </td> | |
eb61dc07 | 203 | |
3bb59daf | 204 | {/if} |
08ef1f91 | 205 | |
3bb59daf AH |
206 | </tr> |
207 | {/foreach} | |
6a488035 | 208 | |
3bb59daf AH |
209 | {foreach from=$rel_tables item=params key=paramName} |
210 | {if $paramName eq 'move_rel_table_users'} | |
211 | <tr class="{cycle values="even-row,odd-row"}"> | |
212 | <td><strong>{ts}Move related...{/ts}</strong></td><td>{if $otherUfId}<a target="_blank" href="{$params.other_url}">{$otherUfName}</a></td><td style='white-space: nowrap'>=={$form.$paramName.html|crmAddClass:"select-row"}==>{else}<td style='white-space: nowrap'></td>{/if}</td><td>{if $mainUfId}<a target="_blank" href="{$params.main_url}">{$mainUfName}</a>{/if}</td> | |
213 | <td>({ts}migrate{/ts})</td> | |
214 | </tr> | |
215 | {else} | |
6a488035 | 216 | <tr class="{cycle values="even-row,odd-row"}"> |
3bb59daf AH |
217 | <td><strong>{ts}Move related...{/ts}</strong></td><td><a href="{$params.other_url}">{$params.title}</a></td><td style='white-space: nowrap'>=={$form.$paramName.html|crmAddClass:"select-row"}==></td><td><a href="{$params.main_url}">{$params.title}</a>{if $form.operation.$paramName.add.html} {$form.operation.$paramName.add.html}{/if}</td> |
218 | <td>({ts}migrate{/ts})</td> | |
219 | </tr> | |
220 | {/if} | |
221 | {/foreach} | |
222 | </table> | |
223 | <div class='form-item'> | |
224 | <!--<p>{$form.moveBelongings.html} {$form.moveBelongings.label}</p>--> | |
225 | <!--<p>{$form.deleteOther.html} {$form.deleteOther.label}</p>--> | |
226 | </div> | |
6a488035 | 227 | |
3bb59daf AH |
228 | <div class="crm-submit-buttons"> |
229 | {include file="CRM/common/formButtons.tpl" location="bottom"} | |
230 | </div> | |
6a488035 TO |
231 | </div> |
232 | ||
233 | {literal} | |
234 | <script type="text/javascript"> | |
235 | ||
bf43eaac J |
236 | var locationBlockInfo = {/literal}{$locationBlockInfo}{literal}; |
237 | var allBlock = {/literal}{$mainLocBlock}{literal}; | |
238 | ||
149ae679 | 239 | /** |
abd0b852 J |
240 | * Triggered when a 'location' or 'type' destination is changed, and when |
241 | * the operation or 'set primary' checkboxes are changed. | |
242 | * | |
149ae679 J |
243 | * Check to see if the 'main' contact record has a corresponding location |
244 | * block when the destination of a field is changed. Allow existing location | |
245 | * fields to be overwritten with data from the 'other' contact. | |
246 | * | |
abd0b852 | 247 | * @param blockName string |
149ae679 | 248 | * The name of the entity. |
149ae679 | 249 | * @param blockId int |
ca792455 J |
250 | * The block ID being affected. |
251 | * @param event object | |
252 | * The event that triggered the update. | |
149ae679 | 253 | */ |
ca792455 | 254 | function updateMainLocationBlock(blockName, blockId, event) { |
06f557c5 J |
255 | |
256 | // Get type of select list that's been changed (location or type) | |
abd0b852 J |
257 | var locTypeId = CRM.$('select#location_blocks_' + blockName + '_' + blockId + '_locTypeId').val(); |
258 | var typeTypeId = CRM.$('select#location_blocks_' + blockName + '_' + blockId + '_typeTypeId').val(); | |
06f557c5 | 259 | |
34917198 | 260 | // @todo Fix this 'special handling' for websites (no location id) |
abd0b852 J |
261 | if (!locTypeId) { |
262 | locTypeId = 0; | |
263 | } | |
34917198 | 264 | |
bf43eaac | 265 | // Look for a matching block on the main contact |
34917198 J |
266 | var mainBlockId = 0; |
267 | var mainBlockDisplay = ''; | |
abd0b852 J |
268 | var mainBlock = findBlock(blockName, locTypeId, typeTypeId); |
269 | if (mainBlock != false) { | |
bf43eaac J |
270 | mainBlockDisplay = mainBlock['display']; |
271 | mainBlockId = mainBlock['id']; | |
abd0b852 J |
272 | } |
273 | ||
274 | // Update main location display and id | |
275 | CRM.$("input[name='location_blocks[" + blockName + "][" + blockId + "][mainContactBlockId]']").val(mainBlockId); | |
276 | CRM.$("#main_" + blockName + "_" + blockId).html(mainBlockDisplay); | |
34917198 | 277 | |
abd0b852 | 278 | // Update controls area |
041d6d6b | 279 | |
abd0b852 J |
280 | // Get the parent block once for speed |
281 | var this_controls = CRM.$("#main_" + blockName + "_" + blockId + "_overwrite"); | |
282 | ||
283 | // Update primary label | |
284 | if (mainBlock != false && mainBlock['is_primary'] == '1') { | |
285 | this_controls.find(".location_primary").text('Primary'); | |
286 | } | |
287 | else { | |
288 | this_controls.find(".location_primary").text(''); | |
289 | } | |
290 | ||
291 | // Update operation description | |
292 | var operation_description = "{/literal}{ts}add{/ts}{literal}"; | |
293 | var add_new_check_length = this_controls.find(".location_operation_checkbox input:checked").length; | |
294 | if (mainBlock != false) { | |
295 | if (add_new_check_length > 0) { | |
296 | operation_description = "{/literal}{ts}add new{/ts}{literal}"; | |
041d6d6b | 297 | } |
abd0b852 J |
298 | else { |
299 | operation_description = "{/literal}{ts}overwrite{/ts}{literal}"; | |
300 | } | |
301 | } | |
302 | this_controls.find(".location_operation_description").text("(" + operation_description + ")"); | |
303 | ||
304 | // Skip if the 'add new' or 'set primary' checkboxes were clicked | |
305 | if (event.target.id.match(/(operation|set_other_primary)/) === null) { | |
306 | // Display 'Add new' checkbox if there is a main block, and this is an | |
307 | // email or phone type. | |
308 | if (mainBlock != false && (blockName == 'email' || blockName == 'phone')) { | |
309 | var op_id = 'location_blocks[' + blockName + '][' + blockId + '][operation]'; | |
310 | this_controls.find(".location_operation_checkbox").html( | |
311 | '<input id="' + op_id + '" name="' + op_id + '" type="checkbox" value="1" class="crm-form-checkbox"><label for="' + op_id + '">{/literal}{ts}Add new{/ts}{literal}</label>' | |
312 | ); | |
313 | } | |
314 | else { | |
315 | this_controls.find(".location_operation_checkbox").html(''); | |
316 | } | |
317 | } | |
041d6d6b | 318 | |
abd0b852 J |
319 | // Skip if 'set primary' was clicked |
320 | if (event.target.id.match(/(set_other_primary)/) === null) { | |
321 | // Display 'Set primary' checkbox if applicable | |
322 | if (blockName != 'website' && (mainBlock == false || mainBlock['is_primary'] != "1" || add_new_check_length > 0)) { | |
323 | var prim_id = 'location_blocks[' + blockName + '][' + blockId + '][set_other_primary]'; | |
324 | this_controls.find(".location_set_other_primary").html( | |
325 | '<input id="' + prim_id + '" name="' + prim_id + '" type="checkbox" value="1" class="crm-form-checkbox"><label for="' + prim_id + '">{/literal}{ts}Set as primary{/ts}{literal}</label>' | |
326 | ); | |
327 | } | |
328 | else { | |
329 | this_controls.find(".location_set_other_primary").html(''); | |
06f557c5 | 330 | } |
06f557c5 | 331 | } |
204ad1b2 | 332 | |
06f557c5 J |
333 | } |
334 | ||
149ae679 J |
335 | /** |
336 | * Look for a matching 'main' contact location block by entity, location and | |
337 | * type | |
338 | * | |
149ae679 J |
339 | * @param entName string |
340 | * The entity name to lookup. | |
341 | * @param locationID int | |
342 | * The location ID to lookup. | |
343 | * @param typeID int | |
344 | * The type ID to lookup. | |
345 | * | |
346 | * @returns boolean|object | |
347 | * Returns false if no match, otherwise an object with the location ID and | |
348 | * display value. | |
349 | */ | |
edf8e092 | 350 | function findBlock(entName, locationID, typeID) { |
bf43eaac J |
351 | var entityArray = allBlock[entName]; |
352 | var result = false; | |
353 | for (var i = 0; i < entityArray.length; i++) { | |
354 | // Match based on location and type ID, depending on the entity info | |
355 | if (locationBlockInfo[entName]['hasLocation'] == false || locationID == entityArray[i]['location_type_id']) { | |
356 | if (locationBlockInfo[entName]['hasType'] == false || typeID == entityArray[i][locationBlockInfo[entName]['hasType']]) { | |
357 | result = { | |
358 | display: entityArray[i][locationBlockInfo[entName]['displayField']], | |
041d6d6b J |
359 | id: entityArray[i]['id'], |
360 | is_primary: entityArray[i]['is_primary'] | |
bf43eaac J |
361 | }; |
362 | break; | |
363 | } | |
364 | } | |
365 | } | |
366 | return result; | |
367 | } | |
368 | ||
e0aa05fb J |
369 | /** |
370 | * Called when a 'set primary' checkbox is clicked in order to disable any | |
371 | * other 'set primary' checkboxes for blocks of the same entity. So don't let | |
372 | * users try to set two different phone numbers as primary on the form. | |
ca792455 J |
373 | * |
374 | * @param event object | |
375 | * The event that triggered the update | |
e0aa05fb | 376 | */ |
ca792455 | 377 | function updateSetPrimaries(event) { |
e0aa05fb J |
378 | var nameSplit = event.target.name.split('['); |
379 | var blockName = nameSplit[1].slice(0, -1); | |
380 | var controls = CRM.$('span.location_block_controls[id^="main_' + blockName + '"]'); | |
381 | ||
382 | // Enable everything | |
383 | controls.find('input[id$="[set_other_primary]"]:not(:checked)').removeAttr("disabled"); | |
384 | ||
385 | // If one is checked, disable the others | |
386 | if (controls.find('input[id$="[set_other_primary]"]:checked').length > 0) { | |
387 | controls.find('input[id$="[set_other_primary]"]:not(:checked)').attr("disabled", "disabled"); | |
388 | } | |
389 | } | |
390 | ||
ae8f569f | 391 | CRM.$(function($) { |
53e45f60 | 392 | |
ae8f569f | 393 | $('table td input.form-checkbox').each(function() { |
204ad1b2 J |
394 | var ele = null; |
395 | var element = $(this).attr('id').split('_',3); | |
396 | ||
397 | switch ( element['1'] ) { | |
398 | case 'addressee': | |
399 | ele = '#' + element['0'] + '_' + element['1']; | |
400 | break; | |
401 | ||
402 | case 'email': | |
403 | case 'postal': | |
404 | ele = '#' + element['0'] + '_' + element['1'] + '_' + element['2']; | |
405 | break; | |
406 | } | |
eb61dc07 | 407 | |
204ad1b2 | 408 | if( ele ) { |
eb61dc07 J |
409 | $(this).on('click', function() { |
410 | var val = $(this).prop('checked'); | |
411 | $('input' + ele + ', input' + ele + '_custom').prop('checked', val); | |
412 | }); | |
204ad1b2 | 413 | } |
6a488035 | 414 | }); |
53e45f60 | 415 | |
eb61dc07 J |
416 | // Show/hide matching data rows |
417 | $('.toggle_equal_rows').click(function() { | |
13919cf8 | 418 | $('tr.merge-row-equal').toggle(); |
6a488035 | 419 | }); |
53e45f60 | 420 | |
edf8e092 | 421 | // Call mergeBlock whenever a location type is changed |
ca792455 | 422 | $('body').on('change', 'select[id$="locTypeId"],select[id$="typeTypeId"],input[id$="[operation]"],input[id$="[set_other_primary]"]', function(event){ |
e0aa05fb | 423 | |
edf8e092 | 424 | // All the information we need is held in the id, separated by underscores |
abd0b852 | 425 | var nameSplit = this.name.split('['); |
e0aa05fb | 426 | |
edf8e092 | 427 | // Lookup the main value, if any are available |
abd0b852 | 428 | if (allBlock[nameSplit[1].slice(0, -1)] != undefined) { |
ca792455 | 429 | updateMainLocationBlock(nameSplit[1].slice(0, -1), nameSplit[2].slice(0, -1), event); |
edf8e092 | 430 | } |
e0aa05fb J |
431 | |
432 | // Update all 'set primary' checkboxes | |
ca792455 | 433 | updateSetPrimaries(event); |
e0aa05fb | 434 | |
edf8e092 J |
435 | }); |
436 | ||
ae8f569f | 437 | }); |
6a488035 TO |
438 | |
439 | </script> | |
440 | {/literal} | |
441 | ||
442 | {* process the dupe contacts *} | |
443 | {include file="CRM/common/dedupe.tpl"} |