mirror of
https://github.com/processwire/processwire.git
synced 2025-08-20 21:42:23 +02:00
Add PR #244 - remember language tabs focus between requests after a double-click on a language tab
This commit is contained in:
committed by
Ryan Cramer
parent
96848654a4
commit
5fecec74ec
@@ -24,6 +24,8 @@ function dblclickLanguageTab(e) {
|
|||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
clickLanguageTabActive = false;
|
clickLanguageTabActive = false;
|
||||||
}, 250);
|
}, 250);
|
||||||
|
var cfg = ProcessWire.config.LanguageTabs;
|
||||||
|
jQuery.cookie('langTabsDC', langID + '-' + cfg.requestId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -99,6 +101,12 @@ function setupLanguageTabs($form) {
|
|||||||
$links.eq(cfg.activeTab).click();
|
$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
@@ -20,9 +20,9 @@ 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' => 115,
|
'version' => 116,
|
||||||
'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',
|
'author' => 'adamspruijt, ryan, flipzoom',
|
||||||
'singular' => true,
|
'singular' => true,
|
||||||
'autoload' => "template=admin",
|
'autoload' => "template=admin",
|
||||||
'requires' => 'LanguageSupport'
|
'requires' => 'LanguageSupport'
|
||||||
@@ -74,20 +74,22 @@ class LanguageTabs extends WireData implements Module, ConfigurableModule {
|
|||||||
if(!empty($this->settings)) return $this->settings;
|
if(!empty($this->settings)) return $this->settings;
|
||||||
|
|
||||||
$language = null;
|
$language = null;
|
||||||
|
$input = $this->wire()->input;
|
||||||
|
$languages = $this->wire()->languages;
|
||||||
|
|
||||||
// allow for specifying language in your "edit" page link, from front-end
|
// 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"
|
// 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:
|
// 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>
|
// <a href='{$config->urls->admin}page/edit/?id=$page->id&language=$user->language'>Edit</a>
|
||||||
$id = (int) $this->input->get('language');
|
$id = (int) $input->get('language');
|
||||||
if($id) $language = $this->languages->get($id);
|
if($id) $language = $languages->get($id);
|
||||||
|
|
||||||
// if language is not specified as a GET variable, then use the user's language
|
// if language is not specified as a GET variable, then use the user's language
|
||||||
if(!$language || !$language->id) $language = $this->wire()->user->language;
|
if(!$language || !$language->id) $language = $this->wire()->user->language;
|
||||||
|
|
||||||
// determine the index of the tab for the user's language
|
// determine the index of the tab for the user's language
|
||||||
$activeTab = 0;
|
$activeTab = 0;
|
||||||
foreach($this->wire()->languages as $index => $lang) {
|
foreach($languages as $index => $lang) {
|
||||||
if($lang->id == $language->id) $activeTab = $index;
|
if($lang->id == $language->id) $activeTab = $index;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,6 +107,7 @@ class LanguageTabs extends WireData implements Module, ConfigurableModule {
|
|||||||
'loadStyles' => true,
|
'loadStyles' => true,
|
||||||
'loadScripts' => true,
|
'loadScripts' => true,
|
||||||
'tabField' => $this->get('tabField'),
|
'tabField' => $this->get('tabField'),
|
||||||
|
'requestId' => ((string) $this->wire()->process) . (int) $input->get('id'),
|
||||||
);
|
);
|
||||||
|
|
||||||
$config = $this->wire()->config;
|
$config = $this->wire()->config;
|
||||||
@@ -133,20 +136,21 @@ class LanguageTabs extends WireData implements Module, ConfigurableModule {
|
|||||||
$config = $this->wire()->config;
|
$config = $this->wire()->config;
|
||||||
|
|
||||||
if($settings['jQueryUI']) {
|
if($settings['jQueryUI']) {
|
||||||
$adminTheme = $this->wire('adminTheme');
|
$adminTheme = $this->wire()->adminTheme;
|
||||||
if($adminTheme) $adminTheme->addBodyClass('LanguageTabsJqueryUI');
|
if($adminTheme) $adminTheme->addBodyClass('LanguageTabsJqueryUI');
|
||||||
}
|
}
|
||||||
|
|
||||||
if($settings['loadStyles']) {
|
if($settings['loadStyles']) {
|
||||||
$config->styles->add($config->urls->LanguageTabs . 'LanguageTabs.css');
|
$config->styles->add($config->urls('LanguageTabs') . 'LanguageTabs.css');
|
||||||
}
|
}
|
||||||
if($settings['loadScripts']) {
|
if($settings['loadScripts']) {
|
||||||
$config->scripts->add($config->urls->LanguageTabs . 'LanguageTabs.js');
|
$config->scripts->add($config->urls('LanguageTabs') . 'LanguageTabs.js');
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @var JqueryCore $jQueryCore */
|
/** @var JqueryCore $jQueryCore */
|
||||||
$jQueryCore = $this->wire()->modules->get('JqueryCore');
|
$jQueryCore = $this->wire()->modules->get('JqueryCore');
|
||||||
$jQueryCore->use('longclick');
|
$jQueryCore->use('longclick');
|
||||||
|
$jQueryCore->use('cookie');
|
||||||
|
|
||||||
if(strpos($e->return, 'LanguageSupport') === false) return;
|
if(strpos($e->return, 'LanguageSupport') === false) return;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user