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);