1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-20 05:21:29 +02:00

Add PR #244 - remember language tabs focus between requests after a double-click on a language tab

This commit is contained in:
FlipZoomMedia
2022-09-16 11:46:32 -04:00
committed by Ryan Cramer
parent 96848654a4
commit 5fecec74ec
3 changed files with 21 additions and 9 deletions

View File

@@ -24,6 +24,8 @@ function dblclickLanguageTab(e) {
setTimeout(function() {
clickLanguageTabActive = false;
}, 250);
var cfg = ProcessWire.config.LanguageTabs;
jQuery.cookie('langTabsDC', langID + '-' + cfg.requestId);
}
/**
@@ -99,6 +101,12 @@ function setupLanguageTabs($form) {
$links.eq(cfg.activeTab).click();
}
});
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();
}
}
/**

File diff suppressed because one or more lines are too long

View File

@@ -20,9 +20,9 @@ class LanguageTabs extends WireData implements Module, ConfigurableModule {
public static function getModuleInfo() {
return array(
'title' => 'Languages Support - Tabs',
'version' => 115,
'version' => 116,
'summary' => 'Organizes multi-language fields into tabs for a cleaner easier to use interface.',
'author' => 'adamspruijt, ryan',
'author' => 'adamspruijt, ryan, flipzoom',
'singular' => true,
'autoload' => "template=admin",
'requires' => 'LanguageSupport'
@@ -74,20 +74,22 @@ class LanguageTabs extends WireData implements Module, ConfigurableModule {
if(!empty($this->settings)) return $this->settings;
$language = null;
$input = $this->wire()->input;
$languages = $this->wire()->languages;
// allow for specifying language in your "edit" page link, from front-end
// so if you want to focus on the Spanish tabs when the user clicks "edit"
// from /es/path/to/page/, then you can by using a page edit link like:
// <a href='{$config->urls->admin}page/edit/?id=$page->id&language=$user->language'>Edit</a>
$id = (int) $this->input->get('language');
if($id) $language = $this->languages->get($id);
$id = (int) $input->get('language');
if($id) $language = $languages->get($id);
// if language is not specified as a GET variable, then use the user's language
if(!$language || !$language->id) $language = $this->wire()->user->language;
// determine the index of the tab for the user's language
$activeTab = 0;
foreach($this->wire()->languages as $index => $lang) {
foreach($languages as $index => $lang) {
if($lang->id == $language->id) $activeTab = $index;
}
@@ -105,6 +107,7 @@ class LanguageTabs extends WireData implements Module, ConfigurableModule {
'loadStyles' => true,
'loadScripts' => true,
'tabField' => $this->get('tabField'),
'requestId' => ((string) $this->wire()->process) . (int) $input->get('id'),
);
$config = $this->wire()->config;
@@ -133,20 +136,21 @@ class LanguageTabs extends WireData implements Module, ConfigurableModule {
$config = $this->wire()->config;
if($settings['jQueryUI']) {
$adminTheme = $this->wire('adminTheme');
$adminTheme = $this->wire()->adminTheme;
if($adminTheme) $adminTheme->addBodyClass('LanguageTabsJqueryUI');
}
if($settings['loadStyles']) {
$config->styles->add($config->urls->LanguageTabs . 'LanguageTabs.css');
$config->styles->add($config->urls('LanguageTabs') . 'LanguageTabs.css');
}
if($settings['loadScripts']) {
$config->scripts->add($config->urls->LanguageTabs . 'LanguageTabs.js');
$config->scripts->add($config->urls('LanguageTabs') . 'LanguageTabs.js');
}
/** @var JqueryCore $jQueryCore */
$jQueryCore = $this->wire()->modules->get('JqueryCore');
$jQueryCore->use('longclick');
$jQueryCore->use('cookie');
if(strpos($e->return, 'LanguageSupport') === false) return;