translations_pack-1.0.0-beta3/js/ajax.js

js/ajax.js
(function(Drupal) {
Drupal.Ajax.prototype.beforeSubmit = function(formValues, element, options) {
  var trigger = options.data._triggering_element_name;
  var button = element[0].querySelector('[name="'+ trigger +'"]');
  if (!button) {
    console.log('button not found');
    return;
  }
  let current_element = button.parentElement;
  var code = null;
  while (current_element.tagName != 'FORM') {
    if ('langPack' in current_element.dataset) {
      code = current_element.dataset.langPack;
      if (code == 'original') {
        code = null;
      }
      break;
    }
    current_element = current_element.parentElement;
  }
  if (!code) {
    return;
  }

  var id_map = {'form_id': {}, 'form_build_id':{}, 'form_token':{}};
  for (index in formValues) {
    for (id in id_map) {
      if (formValues[index].name == id) {
        id_map[id].index = index;
      }
      else if (formValues[index].name == id + '_' + code) {
        id_map[id].value = formValues[index].value;
      }
    }
    if (formValues[index].name == 'translations_pack_active_id') {
      formValues[index].value = code;
    }
  }
  for (id in id_map) {
    formValues[id_map[id].index].value = id_map[id].value;
  }
  var translation_forms = Drupal.behaviors.translation_tabs.forms;
  if (code in translation_forms) {
    var form_data = new FormData(translation_forms[code]);
    for (let data_item of form_data.entries()) {
      let value_item = {name: data_item[0], value: data_item[1]};
      formValues.push(value_item);
    }
  }
};

Drupal.AjaxCommands.prototype.update_build_id =
  function update_build_id(ajax, response, status) {
    let selector = "input[name^=\"form_build_id\"][value=\"".concat(response.old, "\"]");
    document.querySelectorAll(selector).forEach(function (item) {
      item.value = response.new;
    });
  }
})(Drupal);

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc