Mercurial > hg > rr-repo
comparison sites/all/modules/token/token.js @ 0:ff03f76ab3fe
initial version
author | danieleb <danielebarchiesi@me.com> |
---|---|
date | Wed, 21 Aug 2013 18:51:11 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:ff03f76ab3fe |
---|---|
1 | |
2 (function ($) { | |
3 | |
4 Drupal.behaviors.tokenTree = { | |
5 attach: function (context, settings) { | |
6 $('table.token-tree', context).once('token-tree', function () { | |
7 $(this).treeTable(); | |
8 }); | |
9 } | |
10 }; | |
11 | |
12 Drupal.behaviors.tokenDialog = { | |
13 attach: function (context, settings) { | |
14 $('a.token-dialog', context).once('token-dialog').click(function() { | |
15 var url = $(this).attr('href'); | |
16 var dialog = $('<div style="display: none" class="loading">' + Drupal.t('Loading token browser...') + '</div>').appendTo('body'); | |
17 | |
18 // Emulate the AJAX data sent normally so that we get the same theme. | |
19 var data = {}; | |
20 data['ajax_page_state[theme]'] = Drupal.settings.ajaxPageState.theme; | |
21 data['ajax_page_state[theme_token]'] = Drupal.settings.ajaxPageState.theme_token; | |
22 | |
23 dialog.dialog({ | |
24 title: $(this).attr('title') || Drupal.t('Available tokens'), | |
25 width: 700, | |
26 close: function(event, ui) { | |
27 dialog.remove(); | |
28 } | |
29 }); | |
30 // Load the token tree using AJAX. | |
31 dialog.load( | |
32 url, | |
33 data, | |
34 function (responseText, textStatus, XMLHttpRequest) { | |
35 dialog.removeClass('loading'); | |
36 } | |
37 ); | |
38 // Prevent browser from following the link. | |
39 return false; | |
40 }); | |
41 } | |
42 } | |
43 | |
44 Drupal.behaviors.tokenInsert = { | |
45 attach: function (context, settings) { | |
46 // Keep track of which textfield was last selected/focused. | |
47 $('textarea, input[type="text"]', context).focus(function() { | |
48 Drupal.settings.tokenFocusedField = this; | |
49 }); | |
50 | |
51 $('.token-click-insert .token-key', context).once('token-click-insert', function() { | |
52 var newThis = $('<a href="javascript:void(0);" title="' + Drupal.t('Insert this token into your form') + '">' + $(this).html() + '</a>').click(function(){ | |
53 if (typeof Drupal.settings.tokenFocusedField == 'undefined') { | |
54 alert(Drupal.t('First click a text field to insert your tokens into.')); | |
55 } | |
56 else { | |
57 var myField = Drupal.settings.tokenFocusedField; | |
58 var myValue = $(this).text(); | |
59 | |
60 //IE support | |
61 if (document.selection) { | |
62 myField.focus(); | |
63 sel = document.selection.createRange(); | |
64 sel.text = myValue; | |
65 } | |
66 | |
67 //MOZILLA/NETSCAPE support | |
68 else if (myField.selectionStart || myField.selectionStart == '0') { | |
69 var startPos = myField.selectionStart; | |
70 var endPos = myField.selectionEnd; | |
71 myField.value = myField.value.substring(0, startPos) | |
72 + myValue | |
73 + myField.value.substring(endPos, myField.value.length); | |
74 } else { | |
75 myField.value += myValue; | |
76 } | |
77 | |
78 $('html,body').animate({scrollTop: $(myField).offset().top}, 500); | |
79 } | |
80 return false; | |
81 }); | |
82 $(this).html(newThis); | |
83 }); | |
84 } | |
85 }; | |
86 | |
87 })(jQuery); |