Mercurial > hg > rr-repo
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sites/all/modules/token/token.js Wed Aug 21 18:51:11 2013 +0100 @@ -0,0 +1,87 @@ + +(function ($) { + +Drupal.behaviors.tokenTree = { + attach: function (context, settings) { + $('table.token-tree', context).once('token-tree', function () { + $(this).treeTable(); + }); + } +}; + +Drupal.behaviors.tokenDialog = { + attach: function (context, settings) { + $('a.token-dialog', context).once('token-dialog').click(function() { + var url = $(this).attr('href'); + var dialog = $('<div style="display: none" class="loading">' + Drupal.t('Loading token browser...') + '</div>').appendTo('body'); + + // Emulate the AJAX data sent normally so that we get the same theme. + var data = {}; + data['ajax_page_state[theme]'] = Drupal.settings.ajaxPageState.theme; + data['ajax_page_state[theme_token]'] = Drupal.settings.ajaxPageState.theme_token; + + dialog.dialog({ + title: $(this).attr('title') || Drupal.t('Available tokens'), + width: 700, + close: function(event, ui) { + dialog.remove(); + } + }); + // Load the token tree using AJAX. + dialog.load( + url, + data, + function (responseText, textStatus, XMLHttpRequest) { + dialog.removeClass('loading'); + } + ); + // Prevent browser from following the link. + return false; + }); + } +} + +Drupal.behaviors.tokenInsert = { + attach: function (context, settings) { + // Keep track of which textfield was last selected/focused. + $('textarea, input[type="text"]', context).focus(function() { + Drupal.settings.tokenFocusedField = this; + }); + + $('.token-click-insert .token-key', context).once('token-click-insert', function() { + var newThis = $('<a href="javascript:void(0);" title="' + Drupal.t('Insert this token into your form') + '">' + $(this).html() + '</a>').click(function(){ + if (typeof Drupal.settings.tokenFocusedField == 'undefined') { + alert(Drupal.t('First click a text field to insert your tokens into.')); + } + else { + var myField = Drupal.settings.tokenFocusedField; + var myValue = $(this).text(); + + //IE support + if (document.selection) { + myField.focus(); + sel = document.selection.createRange(); + sel.text = myValue; + } + + //MOZILLA/NETSCAPE support + else if (myField.selectionStart || myField.selectionStart == '0') { + var startPos = myField.selectionStart; + var endPos = myField.selectionEnd; + myField.value = myField.value.substring(0, startPos) + + myValue + + myField.value.substring(endPos, myField.value.length); + } else { + myField.value += myValue; + } + + $('html,body').animate({scrollTop: $(myField).offset().top}, 500); + } + return false; + }); + $(this).html(newThis); + }); + } +}; + +})(jQuery);