2015-08-18 00:00:26 +00:00
/ * *
* @ file
* Locale admin behavior .
* /
( function ( $ , Drupal ) {
"use strict" ;
/ * *
* Marks changes of translations .
*
* @ type { Drupal ~ behavior }
2015-09-04 20:20:09 +00:00
*
* @ prop { Drupal ~ behaviorAttach } attach
* Attaches behavior to show the user if translations has changed .
* @ prop { Drupal ~ behaviorDetach } detach
* Detach behavior to show the user if translations has changed .
2015-08-18 00:00:26 +00:00
* /
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 ( 'formUpdated.localeTranslateDirty' , 'table' , function ( ) {
var $marker = $ ( Drupal . theme ( 'localeTranslateChangedWarning' ) ) . hide ( ) ;
$ ( this ) . addClass ( 'changed' ) . before ( $marker ) ;
$marker . fadeIn ( 'slow' ) ;
} ) ;
// Highlight changed row.
$form . on ( 'formUpdated.localeTranslateDirty' , 'tr' , function ( ) {
var $row = $ ( this ) ;
var $rowToMark = $row . once ( 'localemark' ) ;
var marker = Drupal . theme ( 'localeTranslateChangedMarker' ) ;
$row . addClass ( 'changed' ) ;
// Add an asterisk only once if row changed.
if ( $rowToMark . length ) {
2015-10-08 18:40:12 +00:00
$rowToMark . find ( 'td:first-child .js-form-item' ) . append ( marker ) ;
2015-08-18 00:00:26 +00:00
}
} ) ;
}
} ,
detach : function ( context , settings , trigger ) {
if ( trigger === 'unload' ) {
var $form = $ ( "#locale-translate-edit-form" ) . removeOnce ( 'localetranslatedirty' ) ;
if ( $form . length ) {
$form . off ( 'formUpdated.localeTranslateDirty' ) ;
}
}
}
} ;
/ * *
* Show / hide the description details on Available translation updates page .
*
* @ type { Drupal ~ behavior }
2015-09-04 20:20:09 +00:00
*
* @ prop { Drupal ~ behaviorAttach } attach
* Attaches behavior for toggling details on the translation update page .
2015-08-18 00:00:26 +00:00
* /
Drupal . behaviors . hideUpdateInformation = {
attach : function ( context , settings ) {
var $table = $ ( '#locale-translation-status-form' ) . once ( 'expand-updates' ) ;
if ( $table . length ) {
var $tbodies = $table . find ( 'tbody' ) ;
// Open/close the description details by toggling a tr class.
$tbodies . on ( 'click keydown' , '.description' , function ( e ) {
if ( e . keyCode && ( e . keyCode !== 13 && e . keyCode !== 32 ) ) {
return ;
}
e . preventDefault ( ) ;
var $tr = $ ( this ) . closest ( 'tr' ) ;
$tr . toggleClass ( 'expanded' ) ;
// Change screen reader text.
$tr . find ( '.locale-translation-update__prefix' ) . text ( function ( ) {
if ( $tr . hasClass ( 'expanded' ) ) {
return Drupal . t ( 'Hide description' ) ;
}
else {
return Drupal . t ( 'Show description' ) ;
}
} ) ;
} ) ;
$table . find ( '.requirements, .links' ) . hide ( ) ;
}
}
} ;
$ . extend ( Drupal . theme , /** @lends Drupal.theme */ {
/ * *
2015-09-04 20:20:09 +00:00
* Creates markup for a changed translation marker .
2015-08-18 00:00:26 +00:00
*
* @ return { string }
2015-09-04 20:20:09 +00:00
* Markup for the marker .
2015-08-18 00:00:26 +00:00
* /
localeTranslateChangedMarker : function ( ) {
return '<abbr class="warning ajax-changed" title="' + Drupal . t ( 'Changed' ) + '">*</abbr>' ;
} ,
/ * *
2015-09-04 20:20:09 +00:00
* Creates markup for the translation changed warning .
2015-08-18 00:00:26 +00:00
*
* @ return { string }
2015-09-04 20:20:09 +00:00
* Markup for the warning .
2015-08-18 00:00:26 +00:00
* /
localeTranslateChangedWarning : function ( ) {
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>' ;
}
} ) ;
} ) ( jQuery , Drupal ) ;