| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 | 
							- /**
 
-  * @file
 
-  * Linkit dashboard functions
 
-  */
 
- (function ($) {
 
- Drupal.behaviors.linkitDashboard = {
 
-   attach: function (context, settings) {
 
-     // Bind the insert link button.
 
-     $('.linkit-insert', context).once('linkit-insert', function() {
 
-       $('.linkit-insert', context).click(function() {
 
-         // Call the insertLink() function.
 
-         Drupal.linkit.getDialogHelper(Drupal.settings.linkit.currentInstance.helper).insertLink(Drupal.linkit.getLink());
 
-         // Close the dialog.
 
-         Drupal.linkit.modalClose();
 
-         return false;
 
-       });
 
-     });
 
-     // Bind the close link.
 
-     $('#linkit-cancel', context).once('linkit-cancel', function() {
 
-       $('#linkit-cancel', context).bind('click', Drupal.linkit.modalClose);
 
-     });
 
-     // Run the validation if the path field is populated directly.
 
-     $('#edit-linkit-path', context).bind('keyup paste input propertychange', function(){
 
-       Drupal.linkit.requiredFieldsValidation();
 
-     });
 
-     $(".ui-dialog-titlebar").show();
 
-     // Run required field validation.
 
-     Drupal.linkit.requiredFieldsValidation();
 
-     if (!Drupal.settings.linkit.currentInstance.suppressProfileChanger) {
 
-       // Make the profile changer
 
-       Drupal.linkit.profileChanger(context);
 
-     }
 
-     if (Drupal.settings.linkit.IMCEurl && !$('#linkit-imce', context).length) {
 
-       var $imceButton = $('<input />')
 
-         .attr({type: 'button', id: 'linkit-imce', name: 'linkit-imce'})
 
-         .addClass('form-submit')
 
-         .val(Drupal.t('Open file browser'))
 
-         .insertAfter($('.form-item-linkit-search', context))
 
-         .click(function(e) {
 
-           e.preventDefault();
 
-           Drupal.linkit.openFileBrowser();
 
-         });
 
-     }
 
-   }
 
- };
 
- /**
 
-  * Check for mandatory fields in the form and disable for submissions
 
-  * if any of the fields are empty.
 
-  */
 
- Drupal.linkit.requiredFieldsValidation = function() {
 
-   var allowed = true;
 
-   $('#linkit-modal .required').each(function() {
 
-     if (!$(this).val()) {
 
-       allowed = false;
 
-       return false;
 
-     }
 
-   });
 
-   if (allowed) {
 
-     $('#linkit-modal .linkit-insert')
 
-       .removeAttr('disabled')
 
-       .removeClass('form-button-disabled');
 
-   }
 
-   else {
 
-     $('#linkit-modal .linkit-insert')
 
-       .attr('disabled', 'disabled')
 
-       .addClass('form-button-disabled');
 
-   }
 
- };
 
- /**
 
-  * Open the IMCE file browser
 
-  */
 
- Drupal.linkit.openFileBrowser = function () {
 
-   window.open(decodeURIComponent(Drupal.settings.linkit.IMCEurl), '', 'width=760,height=560,resizable=1');
 
- };
 
- /**
 
-  * When a file is inserted through IMCE, this function is called.
 
-  * See IMCE api for details.
 
-  *
 
-  * @param file
 
-  *   The file object that was selected inside IMCE
 
-  * @param win
 
-  *   The IMCE window object
 
-  */
 
- Drupal.linkit.IMCECallback = function(file, win) {
 
-   Drupal.linkit.populateFields({
 
-      path: win.imce.decode(Drupal.settings.basePath +
 
-          Drupal.settings.linkit.publicFilesDirectory + '/' + file.relpath)
 
-   });
 
-   win.close();
 
- };
 
- /**
 
-  * Populate fields on the dashboard.
 
-  *
 
-  * @param link
 
-  *   An object with the following properties (all are optional):
 
-  *   - path: The anchor's href.
 
-  *   - attributes: An object with additional attributes for the anchor element.
 
-  */
 
- Drupal.linkit.populateFields = function(link) {
 
-   link = link || {};
 
-   link.attributes = link.attributes || {};
 
-   $('#linkit-modal .linkit-path-element').val(link.path);
 
-   $.each(link.attributes, function(name, value) {
 
-     $('#linkit-modal .linkit-attributes .linkit-attribute-' + name).val(value);
 
-   });
 
-   // Run required field validation.
 
-   Drupal.linkit.requiredFieldsValidation();
 
- };
 
- /**
 
-  * Retrieve a link object by extracting values from the form.
 
-  *
 
-  * @return
 
-  *   The link object.
 
-  */
 
-  Drupal.linkit.getLink = function() {
 
-     var link = {
 
-       path: $('#linkit-modal .linkit-path-element ').val(),
 
-       attributes: {}
 
-     };
 
-     $.each(Drupal.linkit.additionalAttributes(), function(f, name) {
 
-      link.attributes[name] = $('#linkit-modal .linkit-attributes .linkit-attribute-' + name).val();
 
-     });
 
-   return link;
 
- };
 
- /**
 
-  * Retrieve a list of the currently available additional attributes in the
 
-  * dashboard. The attribute "href" is excluded.
 
-  *
 
-  * @return
 
-  *   An array with the names of the attributes.
 
-  */
 
- Drupal.linkit.additionalAttributes = function() {
 
-   var attributes = [];
 
-   $('#linkit-modal .linkit-attributes .linkit-attribute').each(function() {
 
-     // Remove the 'linkit_' prefix.
 
-     attributes.push($(this).attr('name').substr(7));
 
-   });
 
-   return attributes;
 
- };
 
- Drupal.linkit.profileChanger = function(context) {
 
-   $('#linkit-profile-changer > div.form-item', context).once('linkit-change-profile', function() {
 
-     var target = $(this);
 
-     var toggler = $('<div id="linkit-profile-changer-toggler"></div>')
 
-     .html(Drupal.t('Change profile'))
 
-     .click(function() {
 
-       target.slideToggle();
 
-     });
 
-     $(this).after(toggler);
 
-   });
 
-   $('#linkit-profile-changer .form-radio', context).each(function() {
 
-     var id = $(this).attr('id');
 
-     var profile = $(this).val();
 
-     if (typeof Drupal.ajax[id] != 'undefined') {
 
-       // @TODO: Jquery 1.5 accept success setting to be an array of functions.
 
-       // But we have to wait for jquery to get updated in Drupal core.
 
-       // In the meantime we have to override it.
 
-       Drupal.ajax[id].options.success = function (response, status) {
 
-         if (typeof response == 'string') {
 
-           response = $.parseJSON(response);
 
-         }
 
-         // Update the autocomplete url.
 
-         Drupal.settings.linkit.currentInstance.autocompletePathParsed = Drupal.settings.linkit.autocompletePath.replace('___profile___', profile);
 
-         // Call the ajax success method.
 
-         Drupal.ajax[id].success(response, status);
 
-         $('#linkit-profile-changer > div.form-item').slideToggle();
 
-       };
 
-     }
 
-   });
 
- };
 
- Drupal.behaviors.linkitSearch = {
 
-   attach: function(context, settings) {
 
-     $('.linkit-search-element').once('linkit-search', function() {
 
-       // Create a synonym for this to reduce code confusion.
 
-       var searchElement = $('.linkit-search-element');
 
-       var callbacks = {
 
-         constructURL: function(path, search) {
 
-           return path + encodeURIComponent(search);
 
-         },
 
-         insertSuggestionList: function($results, $input) {
 
-           var top = $input.position().top + $input.outerHeight() - 5;
 
-           $results.width($input.outerWidth()).css({
 
-             position: 'absolute',
 
-             // High value because of other overlays like
 
-             // wysiwyg fullscreen (TinyMCE) mode.
 
-             zIndex: 211000,
 
-             maxHeight: $(window).height() - (top + 20)
 
-           })
 
-           .hide()
 
-           .insertAfter($input);
 
-         },
 
-         select: function(result) {
 
-           if (typeof result == 'undefined') {
 
-             return false;
 
-           }
 
-           // Only change the link text if it is empty.
 
-           if (typeof result.disabled != 'undefined' && result.disabled) {
 
-             return false;
 
-           }
 
-           Drupal.linkit.populateFields({
 
-             path: result.path
 
-           });
 
-           // Store the result title (Used when no selection is made by the user).
 
-           Drupal.settings.linkit.currentInstance.linkContent = result.title;
 
-           $('.linkit-path-element', context).focus();
 
-         }
 
-       }
 
-       searchElement.betterAutocomplete('init', Drupal.settings.linkit.currentInstance.autocompletePathParsed, Drupal.settings.linkit.currentInstance.autocomplete, callbacks);
 
-     });
 
-   }
 
- };
 
- })(jQuery);
 
 
  |