52 lines
1.7 KiB
JavaScript
52 lines
1.7 KiB
JavaScript
|
(function ($) {
|
||
|
|
||
|
"use strict";
|
||
|
|
||
|
/**
|
||
|
* Markes changes of translations
|
||
|
*/
|
||
|
Drupal.behaviors.localeTranslateDirty = {
|
||
|
attach: function () {
|
||
|
var $form = $("#locale-translate-edit-form").once('localetranslatedirty');
|
||
|
if ($form.length) {
|
||
|
// Display a notice if any row changed.
|
||
|
$form.one('change.localeTranslateDirty', 'table', function () {
|
||
|
var $marker = $(Drupal.theme('localeTranslateChangedWarning')).hide();
|
||
|
$(this).addClass('changed').before($marker);
|
||
|
$marker.fadeIn('slow');
|
||
|
});
|
||
|
// Highlight changed row.
|
||
|
$form.on('change.localeTranslateDirty', 'tr', function (e) {
|
||
|
var
|
||
|
$row = $(this),
|
||
|
$rowToMark = $row.once('localemark'),
|
||
|
marker = Drupal.theme('localeTranslateChangedMarker');
|
||
|
|
||
|
$row.addClass('changed');
|
||
|
// Add an asterisk only once if row changed.
|
||
|
if ($rowToMark.length) {
|
||
|
$rowToMark.find('td:first-child .form-item').append(marker);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
},
|
||
|
detach: function (context, settings, trigger) {
|
||
|
if (trigger === 'unload') {
|
||
|
var $form = $("#locale-translate-edit-form").removeOnce('localetranslatedirty');
|
||
|
if ($form.length) {
|
||
|
$form.off('change.localeTranslateDirty');
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
Drupal.theme.prototype.localeTranslateChangedMarker = function () {
|
||
|
return '<abbr class="warning ajax-changed" title="' + Drupal.t('Changed') + '">*</abbr>';
|
||
|
};
|
||
|
|
||
|
Drupal.theme.prototype.localeTranslateChangedWarning = function () {
|
||
|
return '<div class="localetranslate-changed-warning messages warning">' + Drupal.theme('localeTranslateChangedMarker') + ' ' + Drupal.t('Changes made in this table will not be saved until the form is submitted.') + '</div>';
|
||
|
};
|
||
|
|
||
|
})(jQuery);
|