1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-09 16:26:59 +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;
/**
* 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
*
*/
function dblclickLanguageTab(e) {
if(!languageTabsReady) return;
if(clickLanguageTabActive) return;
clickLanguageTabActive = true;
var $tab = $(this);
@@ -85,7 +102,7 @@ function setupLanguageTabs($form) {
var $items = $a.closest('ul').siblings('.LanguageSupport');
var $closeItem = $items.filter('.LanguageSupportCurrent');
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');
} else {
$closeItem.removeClass('LanguageSupportCurrent');
@@ -108,7 +125,11 @@ function setupLanguageTabs($form) {
var value = jQuery.cookie('langTabsDC'); // DC=DoubleClick
if(value && value.indexOf('-' + cfg.requestId) > 0) {
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() {
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
*
* ProcessWire 3.x, Copyright 2021 by Ryan Cramer
* ProcessWire 3.x, Copyright 2023 by Ryan Cramer
* https://processwire.com
*
* @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() {
return array(
'title' => 'Languages Support - Tabs',
'version' => 116,
'version' => 117,
'summary' => 'Organizes multi-language fields into tabs for a cleaner easier to use interface.',
'author' => 'adamspruijt, ryan, flipzoom',
'singular' => true,