source: sipes/modules_contrib/cck/content.js @ ca33cb0

stableversion-3.0
Last change on this file since ca33cb0 was 177a560, checked in by José Gregorio Puentes <jpuentes@…>, 8 años ago

se agrego el directorio de modulos contribuidos de drupal

  • Propiedad mode establecida a 100755
File size: 3.4 KB
Línea 
1// $Id: content.js,v 1.1.2.3 2008/10/06 14:30:01 karens Exp $
2
3Drupal.behaviors.cckManageFields = function(context) {
4  attachUpdateSelects(context);
5};
6
7function attachUpdateSelects(context) {
8  var widgetTypes = Drupal.settings.contentWidgetTypes;
9  var fields = Drupal.settings.contentFields;
10
11  // Store the default text of widget selects.
12  $('#content-field-overview .content-widget-type-select', context).each(function() {
13    this.initialValue = this.options[0].text;
14  });
15
16  // 'Field type' select updates its 'Widget' select.
17  $('#content-field-overview .content-field-type-select', context).each(function() {
18    this.targetSelect = $('.content-widget-type-select', $(this).parents('tr').eq(0));
19
20    $(this).change(function() {
21      var selectedFieldType = this.options[this.selectedIndex].value;
22      var options = (selectedFieldType in widgetTypes) ? widgetTypes[selectedFieldType] : [ ];
23      this.targetSelect.contentPopulateOptions(options);
24    });
25
26    // Trigger change on initial pageload to get the right widget options
27    // when field type comes pre-selected (on failed validation).
28    $(this).trigger('change');
29  });
30
31  // 'Existing field' select updates its 'Widget' select and 'Label' textfield.
32  $('#content-field-overview .content-field-select', context).each(function() {
33    this.targetSelect = $('.content-widget-type-select', $(this).parents('tr').eq(0));
34    this.targetTextfield = $('.content-label-textfield', $(this).parents('tr').eq(0));
35
36    $(this).change(function(e, updateText) {
37      var updateText = (typeof(updateText) == 'undefined') ? true : updateText;
38      var selectedField = this.options[this.selectedIndex].value;
39      var selectedFieldType = (selectedField in fields) ? fields[selectedField].type : null;
40      var selectedFieldWidget = (selectedField in fields) ? fields[selectedField].widget : null
41      var options = (selectedFieldType && (selectedFieldType in widgetTypes)) ? widgetTypes[selectedFieldType] : [ ];
42      this.targetSelect.contentPopulateOptions(options, selectedFieldWidget);
43
44      if (updateText) {
45        $(this.targetTextfield).attr('value', (selectedField in fields) ? fields[selectedField].label : '');
46      }
47    });
48
49    // Trigger change on initial pageload to get the right widget options
50    // and label when field type comes pre-selected (on failed validation).
51    $(this).trigger('change', false);
52  });
53}
54
55jQuery.fn.contentPopulateOptions = function(options, selected) {
56  return this.each(function() {
57    var disabled = false;
58    if (options.length == 0) {
59      options = [this.initialValue];
60      disabled = true;
61    }
62
63    // If possible, keep the same widget selected when changing field type.
64    // This is based on textual value, since the internal value might be
65    // different (optionwidgets_buttons vs. nodereference_buttons).
66    var previousSelectedText = this.options[this.selectedIndex].text;
67
68    var html = '';
69    jQuery.each(options, function(value, text) {
70      // Figure out which value should be selected. The 'selected' param
71      // takes precedence.
72      var is_selected = ((typeof(selected) !== 'undefined' && value == selected) || (typeof(selected) == 'undefined' && text == previousSelectedText));
73      html += '<option value="' + value + '"' + (is_selected ? ' selected="selected"' : '') +'>' + text + '</option>';
74    });
75
76    $(this)
77      .html(html)
78      .attr('disabled', disabled ? 'disabled' : '');
79  });
80}
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.