123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- (function ($) {
- Drupal.PhoneNumber = Drupal.PhoneNumber || {};
- /**
- * Filters checkboxes based on their label.
- * This code is shamelessly taken from checkbox_filter
- */
- Drupal.PhoneNumber.filter = function() {
- var field = $(this);
- var checkboxes = field.parent().parent().find('.form-checkboxes .form-item');
- var found = false;
- var label = "";
- var option = null;
- for (var i = 0; i < checkboxes.length; i++) {
- option = checkboxes.eq(i);
- label = Drupal.PhoneNumber.trim(option.text());
- if (label.toUpperCase().indexOf(field.val().toUpperCase()) < 0) {
- option.hide();
- } else {
- option.show();
- }
- }
- };
- /**
- * Trims whitespace from strings
- */
- Drupal.PhoneNumber.trim = function(str) {
- var str = str.replace(/^\s\s*/, ''),
- ws = /\s/,
- i = str.length;
- while (ws.test(str.charAt(--i)));
- return str.slice(0, i + 1);
- };
- /**
- * Check/Uncheck all checkboxes
- */
- Drupal.PhoneNumber.checkall = function(e) {
- var field = $(this);
- var checkboxes = $('.form-checkboxes .form-item:visible .form-checkbox', field.parent().parent());
- var checked = (field.text() == Drupal.t('Select all'));
- if (checked) {
- checkboxes.attr('checked', true);
- field.text(Drupal.t('Deselect all'));
- }
- else {
- checkboxes.attr('checked', false);
- Drupal.PhoneNumber.checkDefault();
- field.text(Drupal.t('Select all'));
- }
- };
- /**
- * Country selection should include default country code by default.
- */
- Drupal.PhoneNumber.checkDefault = function(e) {
- var defaultCC = $('#edit-instance-settings-default-country').val();
- var span = $('<span class="default-cc"></span>').append(Drupal.t('Default'));
- $('.cck-phone-settings .form-checkboxes').find('.form-checkbox').each(function() {
- if ($(this).val() == defaultCC) {
- $('.cck-phone-default-country')
- .removeClass('cck-phone-default-country')
- .find('span.default-cc').remove();
- // TODO: check for "Enable default country code" only set the checkbox
- $(this)
- // .attr('checked', 'checked')
- .parents('.form-item:first')
- .addClass('cck-phone-default-country')
- .append(span);
- }
- });
- };
- /**
- * Attach a filtering textfield to checkboxes.
- */
- Drupal.behaviors.PhoneNumber = {
- attach: function(context) {
- // Ensure the new default country is checked
- $('#edit-instance-settings-default-country, .cck-phone-settings .form-checkboxes').bind('change', Drupal.PhoneNumber.checkDefault);
- $('#edit-instance-settings-default-country').trigger('change');
- $('form#field-ui-field-edit-form').submit(Drupal.PhoneNumber.checkDefault);
- // Filter for countries
- var form = '<div class="form-item container-inline">'
- + ' <label>' + Drupal.t('Filter') + ':</label> '
- + ' <input class="cck-phone-filter form-text" type="text" size="30" />'
- + ' <a class="cck-phone-check" style="margin-left: 1em;" href="javascript://">' + Drupal.t('Select all') + '</a>'
- + '</div>';
- $('.cck-phone-settings .form-checkboxes', context).before(form);
- $('input.cck-phone-filter').bind('keyup', Drupal.PhoneNumber.filter);
- $('a.cck-phone-check').bind('click', Drupal.PhoneNumber.checkall);
- }
- };
- })(jQuery);
|