Backup of db before drupal security update
[yaffs-website] / web / core / modules / locale / locale.admin.js
1 /**
2  * @file
3  * Locale admin behavior.
4  */
5
6 (function ($, Drupal) {
7
8   'use strict';
9
10   /**
11    * Marks changes of translations.
12    *
13    * @type {Drupal~behavior}
14    *
15    * @prop {Drupal~behaviorAttach} attach
16    *   Attaches behavior to show the user if translations has changed.
17    * @prop {Drupal~behaviorDetach} detach
18    *   Detach behavior to show the user if translations has changed.
19    */
20   Drupal.behaviors.localeTranslateDirty = {
21     attach: function () {
22       var $form = $('#locale-translate-edit-form').once('localetranslatedirty');
23       if ($form.length) {
24         // Display a notice if any row changed.
25         $form.one('formUpdated.localeTranslateDirty', 'table', function () {
26           var $marker = $(Drupal.theme('localeTranslateChangedWarning')).hide();
27           $(this).addClass('changed').before($marker);
28           $marker.fadeIn('slow');
29         });
30         // Highlight changed row.
31         $form.on('formUpdated.localeTranslateDirty', 'tr', function () {
32           var $row = $(this);
33           var $rowToMark = $row.once('localemark');
34           var marker = Drupal.theme('localeTranslateChangedMarker');
35
36           $row.addClass('changed');
37           // Add an asterisk only once if row changed.
38           if ($rowToMark.length) {
39             $rowToMark.find('td:first-child .js-form-item').append(marker);
40           }
41         });
42       }
43     },
44     detach: function (context, settings, trigger) {
45       if (trigger === 'unload') {
46         var $form = $('#locale-translate-edit-form').removeOnce('localetranslatedirty');
47         if ($form.length) {
48           $form.off('formUpdated.localeTranslateDirty');
49         }
50       }
51     }
52   };
53
54   /**
55    * Show/hide the description details on Available translation updates page.
56    *
57    * @type {Drupal~behavior}
58    *
59    * @prop {Drupal~behaviorAttach} attach
60    *   Attaches behavior for toggling details on the translation update page.
61    */
62   Drupal.behaviors.hideUpdateInformation = {
63     attach: function (context, settings) {
64       var $table = $('#locale-translation-status-form').once('expand-updates');
65       if ($table.length) {
66         var $tbodies = $table.find('tbody');
67
68         // Open/close the description details by toggling a tr class.
69         $tbodies.on('click keydown', '.description', function (e) {
70           if (e.keyCode && (e.keyCode !== 13 && e.keyCode !== 32)) {
71             return;
72           }
73           e.preventDefault();
74           var $tr = $(this).closest('tr');
75
76           $tr.toggleClass('expanded');
77
78           // Change screen reader text.
79           $tr.find('.locale-translation-update__prefix').text(function () {
80             if ($tr.hasClass('expanded')) {
81               return Drupal.t('Hide description');
82             }
83             else {
84               return Drupal.t('Show description');
85             }
86           });
87         });
88         $table.find('.requirements, .links').hide();
89       }
90     }
91   };
92
93   $.extend(Drupal.theme, /** @lends Drupal.theme */{
94
95     /**
96      * Creates markup for a changed translation marker.
97      *
98      * @return {string}
99      *   Markup for the marker.
100      */
101     localeTranslateChangedMarker: function () {
102       return '<abbr class="warning ajax-changed" title="' + Drupal.t('Changed') + '">*</abbr>';
103     },
104
105     /**
106      * Creates markup for the translation changed warning.
107      *
108      * @return {string}
109      *   Markup for the warning.
110      */
111     localeTranslateChangedWarning: function () {
112       return '<div class="clearfix messages messages--warning">' + Drupal.theme('localeTranslateChangedMarker') + ' ' + Drupal.t('Changes made in this table will not be saved until the form is submitted.') + '</div>';
113     }
114   });
115
116 })(jQuery, Drupal);