1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-10 16:54:44 +02:00

Fix issue where sometimes language tabs were pre-selecting the wrong language, or showing a selected tab that didn't match the input language. This might also be related to and fix processwire/processwire-issues#1411 (?)

This commit is contained in:
Ryan Cramer
2023-01-20 09:18:50 -05:00
parent 0b79e38d9d
commit a435e9291c
3 changed files with 33 additions and 6 deletions

View File

@@ -7,12 +7,29 @@
var clickLanguageTabActive = false; var clickLanguageTabActive = false;
/** /**
* Event called when language tab is long-clicked * True after document.ready language tab events have been added
*
* @type {boolean}
*
*/
var languageTabsReady = false;
/**
* Queue of selectors for language tabs to click on document ready
*
* @type {*[]}
*
*/
var languageTabsClickOnReady = [];
/**
* Event called when language tab is double-clicked
* *
* @param e * @param e
* *
*/ */
function dblclickLanguageTab(e) { function dblclickLanguageTab(e) {
if(!languageTabsReady) return;
if(clickLanguageTabActive) return; if(clickLanguageTabActive) return;
clickLanguageTabActive = true; clickLanguageTabActive = true;
var $tab = $(this); var $tab = $(this);
@@ -85,7 +102,7 @@ function setupLanguageTabs($form) {
var $items = $a.closest('ul').siblings('.LanguageSupport'); var $items = $a.closest('ul').siblings('.LanguageSupport');
var $closeItem = $items.filter('.LanguageSupportCurrent'); var $closeItem = $items.filter('.LanguageSupportCurrent');
var $openItem = $items.filter($a.attr('href')); var $openItem = $items.filter($a.attr('href'));
if($closeItem.attr('id') == $openItem.attr('id')) { if(languageTabsReady && $closeItem.attr('id') == $openItem.attr('id')) {
$a.trigger('dblclicklangtab'); $a.trigger('dblclicklangtab');
} else { } else {
$closeItem.removeClass('LanguageSupportCurrent'); $closeItem.removeClass('LanguageSupportCurrent');
@@ -108,7 +125,11 @@ function setupLanguageTabs($form) {
var value = jQuery.cookie('langTabsDC'); // DC=DoubleClick var value = jQuery.cookie('langTabsDC'); // DC=DoubleClick
if(value && value.indexOf('-' + cfg.requestId) > 0) { if(value && value.indexOf('-' + cfg.requestId) > 0) {
value = value.split('-'); // i.e. 123-ProcessPageEdit456 value = value.split('-'); // i.e. 123-ProcessPageEdit456
$('a.langTab' + value[0], $form).click(); var languageId = value[0];
$('a.langTab' + languageId, $form).click();
if(!languageTabsReady) {
languageTabsClickOnReady.push('a.langTab' + languageId);
}
} }
} }
@@ -211,5 +232,11 @@ jQuery(document).ready(function($) {
$(document).on('AjaxUploadDone', '.InputfieldHasFileList .InputfieldFileList', function() { $(document).on('AjaxUploadDone', '.InputfieldHasFileList .InputfieldFileList', function() {
setupLanguageTabs($(this)); setupLanguageTabs($(this));
}); });
for(var n = 0; n < languageTabsClickOnReady.length; n++) {
var selector = languageTabsClickOnReady[n];
$(selector).click();
}
languageTabsClickOnReady = [];
languageTabsReady = true;
}); });

File diff suppressed because one or more lines are too long

View File

@@ -7,7 +7,7 @@
* *
* By Adamspruijt and Ryan Cramer, Copyright 2013/2014 * By Adamspruijt and Ryan Cramer, Copyright 2013/2014
* *
* ProcessWire 3.x, Copyright 2021 by Ryan Cramer * ProcessWire 3.x, Copyright 2023 by Ryan Cramer
* https://processwire.com * https://processwire.com
* *
* @property string $tabField Name of field/property to use for tab labels. * @property string $tabField Name of field/property to use for tab labels.
@@ -20,7 +20,7 @@ class LanguageTabs extends WireData implements Module, ConfigurableModule {
public static function getModuleInfo() { public static function getModuleInfo() {
return array( return array(
'title' => 'Languages Support - Tabs', 'title' => 'Languages Support - Tabs',
'version' => 116, 'version' => 117,
'summary' => 'Organizes multi-language fields into tabs for a cleaner easier to use interface.', 'summary' => 'Organizes multi-language fields into tabs for a cleaner easier to use interface.',
'author' => 'adamspruijt, ryan, flipzoom', 'author' => 'adamspruijt, ryan, flipzoom',
'singular' => true, 'singular' => true,