| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- (function ($) {
- Drupal.mollom = Drupal.mollom || {};
- /**
- * Open links to Mollom.com in a new window.
- *
- * Required for valid XHTML Strict markup.
- */
- Drupal.behaviors.mollomTarget = {
- attach: function (context) {
- $(context).find('.mollom-target').click(function () {
- this.target = '_blank';
- });
- }
- };
- /**
- * Retrieve and attach the form behavior analysis tracking image if it has not
- * yet been added for the form.
- */
- Drupal.behaviors.mollomFBA = {
- attach: function (context, settings) {
- $(':input[name="mollom[fba]"][value=""]', context).once().each(function() {
- $input = $(this);
- $.ajax({
- url: Drupal.settings.basePath + Drupal.settings.pathPrefix + 'mollom/fba',
- type: 'POST',
- dataType: 'json',
- success: function(data) {
- if (!data.tracking_id || !data.tracking_url) {
- return;
- }
- // Save the tracking id in the hidden field.
- $input.val(data.tracking_id);
- // Attach the tracking image.
- $('<img src="' + data.tracking_url + '" width="1" height="1" alt="" />').appendTo('body');
- }
- })
- });
- }
- };
- /**
- * Attach click event handlers for CAPTCHA links.
- */
- Drupal.behaviors.mollomCaptcha = {
- attach: function (context, settings) {
- $('a.mollom-switch-captcha', context).click(function (e) {
- var $mollomForm = $(this).parents('form');
- var newCaptchaType = $(this).hasClass('mollom-audio-captcha') ? 'audio' : 'image';
- Drupal.mollom.getMollomCaptcha(newCaptchaType, $mollomForm);
- });
- $('a.mollom-refresh-captcha', context).click(function (e) {
- var $mollomForm = $(this).parents('form');
- var currentCaptchaType = $(this).hasClass('mollom-refresh-audio') ? 'audio' : 'image';
- Drupal.mollom.getMollomCaptcha(currentCaptchaType, $mollomForm);
- });
- }
- };
- /**
- * Fetch a Mollom CAPTCHA and output the image or audio into the form.
- *
- * @param captchaType
- * The type of CAPTCHA to retrieve; one of "audio" or "image".
- * @param context
- * The form context for this retrieval.
- */
- Drupal.mollom.getMollomCaptcha = function (captchaType, context) {
- var formBuildId = $('input[name="form_build_id"]', context).val();
- var mollomContentId = $('input.mollom-content-id', context).val();
- var path = 'mollom/captcha/' + captchaType + '/' + formBuildId;
- if (mollomContentId) {
- path += '/' + mollomContentId;
- }
- path += '?cb=' + new Date().getTime();
- // Retrieve a new CAPTCHA.
- $.ajax({
- url: Drupal.settings.basePath + Drupal.settings.pathPrefix + path,
- type: 'POST',
- dataType: 'json',
- success: function (data) {
- if (!(data && data.content)) {
- return;
- }
- // Inject new CAPTCHA.
- $('.mollom-captcha-content', context).parent().replaceWith(data.content);
- // Update CAPTCHA ID.
- $('input.mollom-captcha-id', context).val(data.captchaId);
- // Add an onclick-event handler for the new link.
- Drupal.attachBehaviors(context);
- // Focus on the CAPTCHA input.
- if (captchaType == 'image') {
- $('input[name="mollom[captcha]"]', context).focus();
- } else {
- // Focus on audio player.
- // Fallback player code is responsible for setting focus upon embed.
- if ($('#mollom_captcha_audio').is(":visible")) {
- $('#mollom_captcha_audio').focus();
- }
- }
- }
- });
- return false;
- }
- })(jQuery);
|