Version Description
- Bug Fix: Corrected misnamed variable
- Bug Fix: ACF5 issues using WYSIWYG with the repeater field type
- Bug Fix: qTranslate-X saving content using WYSIWYG with repeater field type
- Core: Support for
qtrans_edit_language
cookie set by qTranslate-X - Core: Keep switches between Visual/Html modes in sync across languages
Download this release
Release Info
Developer | funkjedi |
Plugin | ACF qTranslate |
Version | 1.7.2 |
Comparing to | |
See all releases |
Code changes from version 1.7.1 to 1.7.2
- acf-qtranslate.php +1 -1
- assets/acf_5/main.js +2 -22
- assets/common.js +10 -0
- readme.txt +13 -6
- src/acf_4/acf.php +2 -3
- src/acf_4/fields/file.php +1 -1
- src/acf_4/fields/image.php +1 -1
- src/acf_4/fields/text.php +3 -2
- src/acf_4/fields/textarea.php +3 -2
- src/acf_4/fields/wysiwyg.php +4 -3
- src/acf_5/acf.php +6 -5
- src/acf_5/fields/file.php +1 -1
- src/acf_5/fields/image.php +1 -1
- src/acf_5/fields/text.php +4 -2
- src/acf_5/fields/textarea.php +4 -2
- src/acf_5/fields/wysiwyg.php +7 -5
- src/plugin.php +10 -3
- src/qtranslatex.php +33 -4
acf-qtranslate.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Advanced Custom Fields: qTranslate
|
4 |
Plugin URI: http://github.com/funkjedi/acf-qtranslate
|
5 |
Description: Provides multilingual versions of the text, text area, and wysiwyg fields.
|
6 |
-
Version: 1.7.
|
7 |
Author: funkjedi
|
8 |
Author URI: http://funkjedi.com
|
9 |
License: GPLv2 or later
|
3 |
Plugin Name: Advanced Custom Fields: qTranslate
|
4 |
Plugin URI: http://github.com/funkjedi/acf-qtranslate
|
5 |
Description: Provides multilingual versions of the text, text area, and wysiwyg fields.
|
6 |
+
Version: 1.7.2
|
7 |
Author: funkjedi
|
8 |
Author URI: http://funkjedi.com
|
9 |
License: GPLv2 or later
|
assets/acf_5/main.js
CHANGED
@@ -32,35 +32,15 @@ acf.fields.qtranslate_wysiwyg = acf.fields.wysiwyg.extend({
|
|
32 |
this.o = acf.get_data(this.$el);
|
33 |
this.o.id = this.$textarea.attr('id');
|
34 |
},
|
35 |
-
initialize: function(){
|
36 |
-
if (typeof tinyMCEPreInit === 'undefined' || typeof tinymce === 'undefined') {
|
37 |
-
return false;
|
38 |
-
}
|
39 |
var self = this;
|
40 |
this.$field.find('.wp-editor-wrap').each(function() {
|
41 |
self.$el = jQuery(this);
|
42 |
self.$textarea = self.$el.find('textarea');
|
43 |
self.o = acf.get_data(self.$el);
|
44 |
self.o.id = self.$textarea.attr('id');
|
45 |
-
|
46 |
-
var mceInit = self.get_mceInit();
|
47 |
-
var qtInit = self.get_qtInit();
|
48 |
-
// append settings
|
49 |
-
tinyMCEPreInit.mceInit[ mceInit.id ] = mceInit;
|
50 |
-
tinyMCEPreInit.qtInit[ qtInit.id ] = qtInit;
|
51 |
-
// initialize mceInit
|
52 |
-
if (self.$el.hasClass('tmce-active')) {
|
53 |
-
try {
|
54 |
-
tinymce.init( mceInit );
|
55 |
-
} catch(e){}
|
56 |
-
}
|
57 |
-
// initialize qtInit
|
58 |
-
try {
|
59 |
-
var qtag = quicktags( qtInit );
|
60 |
-
self._buttonsInit( qtag );
|
61 |
-
} catch(e){}
|
62 |
});
|
63 |
this.focus();
|
64 |
}
|
65 |
});
|
66 |
-
|
32 |
this.o = acf.get_data(this.$el);
|
33 |
this.o.id = this.$textarea.attr('id');
|
34 |
},
|
35 |
+
initialize: function() {
|
|
|
|
|
|
|
36 |
var self = this;
|
37 |
this.$field.find('.wp-editor-wrap').each(function() {
|
38 |
self.$el = jQuery(this);
|
39 |
self.$textarea = self.$el.find('textarea');
|
40 |
self.o = acf.get_data(self.$el);
|
41 |
self.o.id = self.$textarea.attr('id');
|
42 |
+
acf.fields.wysiwyg.initialize.call(self);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
});
|
44 |
this.focus();
|
45 |
}
|
46 |
});
|
|
assets/common.js
CHANGED
@@ -38,5 +38,15 @@ jQuery(function($) {
|
|
38 |
$(this).parent('.multi-language-field').removeClass('focused');
|
39 |
});
|
40 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
});
|
42 |
|
38 |
$(this).parent('.multi-language-field').removeClass('focused');
|
39 |
});
|
40 |
|
41 |
+
/**
|
42 |
+
* Keep the selected editor in sync across languages.
|
43 |
+
*/
|
44 |
+
$body.on('click', '.wp-editor-tabs .wp-switch-editor', function() {
|
45 |
+
var parent = $(this).parents('.multi-language-field'), editor = $(this).hasClass('switch-tmce') ? 'tmce' : 'html';
|
46 |
+
parent.find('.wp-editor-tabs .wp-switch-editor.switch-' + editor).not(this).each(function() {
|
47 |
+
switchEditors.switchto(this);
|
48 |
+
});
|
49 |
+
});
|
50 |
+
|
51 |
});
|
52 |
|
readme.txt
CHANGED
@@ -3,8 +3,8 @@ Contributors: funkjedi
|
|
3 |
Tags: acf, advanced custom fields, qtranslate, add-on, admin
|
4 |
Requires at least: 3.5.0
|
5 |
Tested up to: 4.1.1
|
6 |
-
Version: 1.7.
|
7 |
-
Stable tag: 1.7.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -56,8 +56,15 @@ The plugin is based on code samples posted to the ACF support forums by taeo bac
|
|
56 |
|
57 |
== Changelog ==
|
58 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
= 1.7.1 =
|
60 |
-
* Core: Added back
|
61 |
* Core: Added qTranslate-X support for the standard WYSIWYG field type
|
62 |
* Core: Bumped version requirement to match ACF
|
63 |
* Bug Fix: qTranslate-X switcher showing up on every admin page
|
@@ -67,14 +74,14 @@ The plugin is based on code samples posted to the ACF support forums by taeo bac
|
|
67 |
* Core: Support for qTranslate-X language switchers
|
68 |
|
69 |
= 1.6 =
|
70 |
-
* Added ACFv4 support for qTranslate-X
|
71 |
|
72 |
= 1.5 =
|
73 |
* Core: Added compatibility for qTranslate-X
|
74 |
-
* Bug Fix: Remove the broken
|
75 |
|
76 |
= 1.4 =
|
77 |
-
* Core: Added support for
|
78 |
* Core: Tested compatibility with mqTranslate
|
79 |
|
80 |
= 1.3 =
|
3 |
Tags: acf, advanced custom fields, qtranslate, add-on, admin
|
4 |
Requires at least: 3.5.0
|
5 |
Tested up to: 4.1.1
|
6 |
+
Version: 1.7.2
|
7 |
+
Stable tag: 1.7.2
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
56 |
|
57 |
== Changelog ==
|
58 |
|
59 |
+
= 1.7.2 =
|
60 |
+
* Bug Fix: Corrected misnamed variable
|
61 |
+
* Bug Fix: ACF5 issues using WYSIWYG with the repeater field type
|
62 |
+
* Bug Fix: qTranslate-X saving content using WYSIWYG with repeater field type
|
63 |
+
* Core: Support for `qtrans_edit_language` cookie set by qTranslate-X
|
64 |
+
* Core: Keep switches between Visual/Html modes in sync across languages
|
65 |
+
|
66 |
= 1.7.1 =
|
67 |
+
* Core: Added back ACF5 support for WYSIWYG
|
68 |
* Core: Added qTranslate-X support for the standard WYSIWYG field type
|
69 |
* Core: Bumped version requirement to match ACF
|
70 |
* Bug Fix: qTranslate-X switcher showing up on every admin page
|
74 |
* Core: Support for qTranslate-X language switchers
|
75 |
|
76 |
= 1.6 =
|
77 |
+
* Core: Added ACFv4 support for qTranslate-X
|
78 |
|
79 |
= 1.5 =
|
80 |
* Core: Added compatibility for qTranslate-X
|
81 |
+
* Bug Fix: Remove the broken ACF5 WYSIWYG implementation
|
82 |
|
83 |
= 1.4 =
|
84 |
+
* Core: Added support for ACF5
|
85 |
* Core: Tested compatibility with mqTranslate
|
86 |
|
87 |
= 1.3 =
|
src/acf_4/acf.php
CHANGED
@@ -68,7 +68,7 @@ class acf implements acf_interface {
|
|
68 |
* @return array
|
69 |
*/
|
70 |
public function get_visible_acf_fields() {
|
71 |
-
global $post, $pagenow, $typenow;
|
72 |
|
73 |
$filter = array();
|
74 |
if ($pagenow === 'post.php' || $pagenow === 'post-new.php') {
|
@@ -77,9 +77,8 @@ class acf implements acf_interface {
|
|
77 |
$filter['post_type'] = $typenow;
|
78 |
}
|
79 |
}
|
80 |
-
elseif ($pagenow === 'admin.php' && isset($
|
81 |
$filter['post_id'] = apply_filters('acf/get_post_id', false);
|
82 |
-
$filter['post_type'] = $typenow;
|
83 |
}
|
84 |
elseif ($pagenow === 'edit-tags.php' && isset($_GET['taxonomy'])) {
|
85 |
$filter['ef_taxonomy'] = filter_var($_GET['taxonomy'], FILTER_SANITIZE_STRING);
|
68 |
* @return array
|
69 |
*/
|
70 |
public function get_visible_acf_fields() {
|
71 |
+
global $post, $pagenow, $typenow, $plugin_page;
|
72 |
|
73 |
$filter = array();
|
74 |
if ($pagenow === 'post.php' || $pagenow === 'post-new.php') {
|
77 |
$filter['post_type'] = $typenow;
|
78 |
}
|
79 |
}
|
80 |
+
elseif ($pagenow === 'admin.php' && isset($plugin_page)) {
|
81 |
$filter['post_id'] = apply_filters('acf/get_post_id', false);
|
|
|
82 |
}
|
83 |
elseif ($pagenow === 'edit-tags.php' && isset($_GET['taxonomy'])) {
|
84 |
$filter['ef_taxonomy'] = filter_var($_GET['taxonomy'], FILTER_SANITIZE_STRING);
|
src/acf_4/fields/file.php
CHANGED
@@ -66,7 +66,7 @@ class file extends acf_field_file {
|
|
66 |
global $q_config;
|
67 |
$languages = qtrans_getSortedLanguages(true);
|
68 |
$values = qtrans_split($field['value'], $quicktags = true);
|
69 |
-
$currentLanguage =
|
70 |
|
71 |
echo '<div class="multi-language-field multi-language-field-file">';
|
72 |
|
66 |
global $q_config;
|
67 |
$languages = qtrans_getSortedLanguages(true);
|
68 |
$values = qtrans_split($field['value'], $quicktags = true);
|
69 |
+
$currentLanguage = $this->plugin->get_active_language();
|
70 |
|
71 |
echo '<div class="multi-language-field multi-language-field-file">';
|
72 |
|
src/acf_4/fields/image.php
CHANGED
@@ -66,7 +66,7 @@ class image extends acf_field_image {
|
|
66 |
global $q_config;
|
67 |
$languages = qtrans_getSortedLanguages(true);
|
68 |
$values = qtrans_split($field['value'], $quicktags = true);
|
69 |
-
$currentLanguage =
|
70 |
|
71 |
echo '<div class="multi-language-field multi-language-field-image">';
|
72 |
|
66 |
global $q_config;
|
67 |
$languages = qtrans_getSortedLanguages(true);
|
68 |
$values = qtrans_split($field['value'], $quicktags = true);
|
69 |
+
$currentLanguage = $this->plugin->get_active_language();
|
70 |
|
71 |
echo '<div class="multi-language-field multi-language-field-image">';
|
72 |
|
src/acf_4/fields/text.php
CHANGED
@@ -47,16 +47,17 @@ class text extends acf_field_text {
|
|
47 |
global $q_config;
|
48 |
$languages = qtrans_getSortedLanguages(true);
|
49 |
$values = qtrans_split($field['value'], $quicktags = true);
|
|
|
50 |
|
51 |
echo '<div class="multi-language-field">';
|
52 |
|
53 |
foreach ($languages as $language) {
|
54 |
-
$class = ($language ===
|
55 |
echo '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>';
|
56 |
}
|
57 |
|
58 |
foreach ($languages as $language) {
|
59 |
-
$class = ($language ===
|
60 |
echo '<input type="text" data-language="' . esc_attr($language) . '" value="' . esc_attr($values[$language]) . '" id="' . esc_attr( $field['id'] ) . '" class="' . esc_attr($class) . '" name="' . esc_attr($field['name'] . "[$language]") . '" />';
|
61 |
}
|
62 |
|
47 |
global $q_config;
|
48 |
$languages = qtrans_getSortedLanguages(true);
|
49 |
$values = qtrans_split($field['value'], $quicktags = true);
|
50 |
+
$currentLanguage = $this->plugin->get_active_language();
|
51 |
|
52 |
echo '<div class="multi-language-field">';
|
53 |
|
54 |
foreach ($languages as $language) {
|
55 |
+
$class = ($language === $currentLanguage) ? 'wp-switch-editor current-language' : 'wp-switch-editor';
|
56 |
echo '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>';
|
57 |
}
|
58 |
|
59 |
foreach ($languages as $language) {
|
60 |
+
$class = ($language === $currentLanguage) ? $field['class'] . ' current-language' : $field['class'];
|
61 |
echo '<input type="text" data-language="' . esc_attr($language) . '" value="' . esc_attr($values[$language]) . '" id="' . esc_attr( $field['id'] ) . '" class="' . esc_attr($class) . '" name="' . esc_attr($field['name'] . "[$language]") . '" />';
|
62 |
}
|
63 |
|
src/acf_4/fields/textarea.php
CHANGED
@@ -47,16 +47,17 @@ class textarea extends acf_field_textarea {
|
|
47 |
global $q_config;
|
48 |
$languages = qtrans_getSortedLanguages(true);
|
49 |
$values = qtrans_split($field['value'], $quicktags = true);
|
|
|
50 |
|
51 |
echo '<div class="multi-language-field">';
|
52 |
|
53 |
foreach ($languages as $language) {
|
54 |
-
$class = ($language ===
|
55 |
echo '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>';
|
56 |
}
|
57 |
|
58 |
foreach ($languages as $language) {
|
59 |
-
$class = ($language ===
|
60 |
echo '<textarea data-language="' . esc_attr($language) . '" id="' . esc_attr( $field['id'] ) . '" rows="4" class="' . esc_attr($class) . '" name="' . esc_attr($field['name'] . "[$language]") . '">' . esc_textarea($values[$language]) . '</textarea>';
|
61 |
}
|
62 |
|
47 |
global $q_config;
|
48 |
$languages = qtrans_getSortedLanguages(true);
|
49 |
$values = qtrans_split($field['value'], $quicktags = true);
|
50 |
+
$currentLanguage = $this->plugin->get_active_language();
|
51 |
|
52 |
echo '<div class="multi-language-field">';
|
53 |
|
54 |
foreach ($languages as $language) {
|
55 |
+
$class = ($language === $currentLanguage) ? 'wp-switch-editor current-language' : 'wp-switch-editor';
|
56 |
echo '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>';
|
57 |
}
|
58 |
|
59 |
foreach ($languages as $language) {
|
60 |
+
$class = ($language === $currentLanguage) ? $field['class'] . ' current-language' : $field['class'];
|
61 |
echo '<textarea data-language="' . esc_attr($language) . '" id="' . esc_attr( $field['id'] ) . '" rows="4" class="' . esc_attr($class) . '" name="' . esc_attr($field['name'] . "[$language]") . '">' . esc_textarea($values[$language]) . '</textarea>';
|
62 |
}
|
63 |
|
src/acf_4/fields/wysiwyg.php
CHANGED
@@ -73,11 +73,12 @@ class wysiwyg extends acf_field_wysiwyg {
|
|
73 |
global $q_config, $wp_version;
|
74 |
$languages = qtrans_getSortedLanguages(true);
|
75 |
$values = qtrans_split($field['value'], $quicktags = true);
|
|
|
76 |
|
77 |
echo '<div class="multi-language-field multi-language-field-wysiwyg">';
|
78 |
|
79 |
foreach ($languages as $language) {
|
80 |
-
$class = ($language ===
|
81 |
echo '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>';
|
82 |
}
|
83 |
|
@@ -85,7 +86,7 @@ class wysiwyg extends acf_field_wysiwyg {
|
|
85 |
$value = $values[$language];
|
86 |
$id = 'wysiwyg' . $field['id'] . "[$language]";
|
87 |
$name = $field['name'] . "[$language]";
|
88 |
-
$class = ($language ===
|
89 |
|
90 |
?>
|
91 |
<div id="wp-<?php echo $id; ?>-wrap" class="<?php echo $class; ?>" data-toolbar="<?php echo $field['toolbar']; ?>" data-upload="<?php echo $field['media_upload']; ?>" data-language="<?php echo $language; ?>">
|
@@ -105,7 +106,7 @@ class wysiwyg extends acf_field_wysiwyg {
|
|
105 |
<?php endif; ?>
|
106 |
<?php endif; ?>
|
107 |
<div id="wp-<?php echo $id; ?>-editor-container" class="wp-editor-container">
|
108 |
-
<textarea id="<?php echo $id; ?>" class="wp-editor-area" name="<?php echo $name; ?>" ><?php echo wp_richedit_pre($value); ?></textarea>
|
109 |
</div>
|
110 |
</div>
|
111 |
<?php endforeach;
|
73 |
global $q_config, $wp_version;
|
74 |
$languages = qtrans_getSortedLanguages(true);
|
75 |
$values = qtrans_split($field['value'], $quicktags = true);
|
76 |
+
$currentLanguage = $this->plugin->get_active_language();
|
77 |
|
78 |
echo '<div class="multi-language-field multi-language-field-wysiwyg">';
|
79 |
|
80 |
foreach ($languages as $language) {
|
81 |
+
$class = ($language === $currentLanguage) ? 'wp-switch-editor current-language' : 'wp-switch-editor';
|
82 |
echo '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>';
|
83 |
}
|
84 |
|
86 |
$value = $values[$language];
|
87 |
$id = 'wysiwyg' . $field['id'] . "[$language]";
|
88 |
$name = $field['name'] . "[$language]";
|
89 |
+
$class = ($language === $currentLanguage) ? 'acf_wysiwyg wp-editor-wrap current-language' : 'acf_wysiwyg wp-editor-wrap';
|
90 |
|
91 |
?>
|
92 |
<div id="wp-<?php echo $id; ?>-wrap" class="<?php echo $class; ?>" data-toolbar="<?php echo $field['toolbar']; ?>" data-upload="<?php echo $field['media_upload']; ?>" data-language="<?php echo $language; ?>">
|
106 |
<?php endif; ?>
|
107 |
<?php endif; ?>
|
108 |
<div id="wp-<?php echo $id; ?>-editor-container" class="wp-editor-container">
|
109 |
+
<textarea id="<?php echo $id; ?>" class="qtx-wp-editor-area" name="<?php echo $name; ?>" ><?php echo wp_richedit_pre($value); ?></textarea>
|
110 |
</div>
|
111 |
</div>
|
112 |
<?php endforeach;
|
src/acf_5/acf.php
CHANGED
@@ -67,7 +67,7 @@ class acf implements acf_interface {
|
|
67 |
* @return array
|
68 |
*/
|
69 |
public function get_visible_acf_fields() {
|
70 |
-
global $post, $pagenow, $typenow;
|
71 |
|
72 |
$filter = array();
|
73 |
if ($pagenow === 'post.php' || $pagenow === 'post-new.php') {
|
@@ -76,9 +76,10 @@ class acf implements acf_interface {
|
|
76 |
$filter['post_type'] = $typenow;
|
77 |
}
|
78 |
}
|
79 |
-
elseif ($pagenow === 'admin.php' && isset($
|
80 |
-
$
|
81 |
-
|
|
|
82 |
}
|
83 |
elseif ($pagenow === 'edit-tags.php' && isset($_GET['taxonomy'])) {
|
84 |
$filter['taxonomy'] = filter_var($_GET['taxonomy'], FILTER_SANITIZE_STRING);
|
@@ -110,7 +111,7 @@ class acf implements acf_interface {
|
|
110 |
);
|
111 |
|
112 |
$visible_fields = array();
|
113 |
-
foreach (acf_get_field_groups($
|
114 |
$fields = acf_get_fields($field_group);
|
115 |
foreach ($fields as $field) {
|
116 |
if (in_array($field['type'], $supported_field_types)) {
|
67 |
* @return array
|
68 |
*/
|
69 |
public function get_visible_acf_fields() {
|
70 |
+
global $post, $pagenow, $typenow, $plugin_page;
|
71 |
|
72 |
$filter = array();
|
73 |
if ($pagenow === 'post.php' || $pagenow === 'post-new.php') {
|
76 |
$filter['post_type'] = $typenow;
|
77 |
}
|
78 |
}
|
79 |
+
elseif ($pagenow === 'admin.php' && isset($plugin_page)) {
|
80 |
+
if (acf_get_options_page($plugin_page)) {
|
81 |
+
$filter['post_id'] = acf_get_valid_post_id('options');
|
82 |
+
}
|
83 |
}
|
84 |
elseif ($pagenow === 'edit-tags.php' && isset($_GET['taxonomy'])) {
|
85 |
$filter['taxonomy'] = filter_var($_GET['taxonomy'], FILTER_SANITIZE_STRING);
|
111 |
);
|
112 |
|
113 |
$visible_fields = array();
|
114 |
+
foreach (acf_get_field_groups($filter) as $field_group) {
|
115 |
$fields = acf_get_fields($field_group);
|
116 |
foreach ($fields as $field) {
|
117 |
if (in_array($field['type'], $supported_field_types)) {
|
src/acf_5/fields/file.php
CHANGED
@@ -69,7 +69,7 @@ class file extends acf_field_file {
|
|
69 |
global $q_config;
|
70 |
$languages = qtrans_getSortedLanguages(true);
|
71 |
$values = qtrans_split($field['value'], $quicktags = true);
|
72 |
-
$currentLanguage =
|
73 |
|
74 |
// enqueue
|
75 |
acf_enqueue_uploader();
|
69 |
global $q_config;
|
70 |
$languages = qtrans_getSortedLanguages(true);
|
71 |
$values = qtrans_split($field['value'], $quicktags = true);
|
72 |
+
$currentLanguage = $this->plugin->get_active_language();
|
73 |
|
74 |
// enqueue
|
75 |
acf_enqueue_uploader();
|
src/acf_5/fields/image.php
CHANGED
@@ -74,7 +74,7 @@ class image extends acf_field_image {
|
|
74 |
global $q_config;
|
75 |
$languages = qtrans_getSortedLanguages(true);
|
76 |
$values = qtrans_split($field['value'], $quicktags = true);
|
77 |
-
$currentLanguage =
|
78 |
|
79 |
// enqueue
|
80 |
acf_enqueue_uploader();
|
74 |
global $q_config;
|
75 |
$languages = qtrans_getSortedLanguages(true);
|
76 |
$values = qtrans_split($field['value'], $quicktags = true);
|
77 |
+
$currentLanguage = $this->plugin->get_active_language();
|
78 |
|
79 |
// enqueue
|
80 |
acf_enqueue_uploader();
|
src/acf_5/fields/text.php
CHANGED
@@ -60,6 +60,7 @@ class text extends acf_field_text {
|
|
60 |
global $q_config;
|
61 |
$languages = qtrans_getSortedLanguages(true);
|
62 |
$values = qtrans_split($field['value'], $quicktags = true);
|
|
|
63 |
|
64 |
// vars
|
65 |
$o = array( 'type', 'id', 'class', 'name', 'value', 'placeholder' );
|
@@ -88,12 +89,13 @@ class text extends acf_field_text {
|
|
88 |
$e .= '<div class="acf-input-wrap multi-language-field">';
|
89 |
|
90 |
foreach ($languages as $language) {
|
91 |
-
$class = ($language ===
|
92 |
$e .= '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>';
|
93 |
}
|
94 |
|
95 |
foreach ($languages as $language) {
|
96 |
-
|
|
|
97 |
$atts['class'] .= ' current-language';
|
98 |
}
|
99 |
$atts['type'] = 'text';
|
60 |
global $q_config;
|
61 |
$languages = qtrans_getSortedLanguages(true);
|
62 |
$values = qtrans_split($field['value'], $quicktags = true);
|
63 |
+
$currentLanguage = $this->plugin->get_active_language();
|
64 |
|
65 |
// vars
|
66 |
$o = array( 'type', 'id', 'class', 'name', 'value', 'placeholder' );
|
89 |
$e .= '<div class="acf-input-wrap multi-language-field">';
|
90 |
|
91 |
foreach ($languages as $language) {
|
92 |
+
$class = ($language === $currentLanguage) ? 'wp-switch-editor current-language' : 'wp-switch-editor';
|
93 |
$e .= '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>';
|
94 |
}
|
95 |
|
96 |
foreach ($languages as $language) {
|
97 |
+
$atts['class'] = $field['class'];
|
98 |
+
if ($language === $currentLanguage) {
|
99 |
$atts['class'] .= ' current-language';
|
100 |
}
|
101 |
$atts['type'] = 'text';
|
src/acf_5/fields/textarea.php
CHANGED
@@ -60,6 +60,7 @@ class textarea extends acf_field_textarea {
|
|
60 |
global $q_config;
|
61 |
$languages = qtrans_getSortedLanguages(true);
|
62 |
$values = qtrans_split($field['value'], $quicktags = true);
|
|
|
63 |
|
64 |
// vars
|
65 |
$o = array( 'id', 'class', 'name', 'placeholder', 'rows' );
|
@@ -93,12 +94,13 @@ class textarea extends acf_field_textarea {
|
|
93 |
$e .= '<div class="acf-input-wrap multi-language-field">';
|
94 |
|
95 |
foreach ($languages as $language) {
|
96 |
-
$class = ($language ===
|
97 |
$e .= '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>';
|
98 |
}
|
99 |
|
100 |
foreach ($languages as $language) {
|
101 |
-
|
|
|
102 |
$atts['class'] .= ' current-language';
|
103 |
}
|
104 |
$atts['name'] = $field['name'] . "[$language]";
|
60 |
global $q_config;
|
61 |
$languages = qtrans_getSortedLanguages(true);
|
62 |
$values = qtrans_split($field['value'], $quicktags = true);
|
63 |
+
$currentLanguage = $this->plugin->get_active_language();
|
64 |
|
65 |
// vars
|
66 |
$o = array( 'id', 'class', 'name', 'placeholder', 'rows' );
|
94 |
$e .= '<div class="acf-input-wrap multi-language-field">';
|
95 |
|
96 |
foreach ($languages as $language) {
|
97 |
+
$class = ($language === $currentLanguage) ? 'wp-switch-editor current-language' : 'wp-switch-editor';
|
98 |
$e .= '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>';
|
99 |
}
|
100 |
|
101 |
foreach ($languages as $language) {
|
102 |
+
$atts['class'] = $field['class'];
|
103 |
+
if ($language === $currentLanguage) {
|
104 |
$atts['class'] .= ' current-language';
|
105 |
}
|
106 |
$atts['name'] = $field['name'] . "[$language]";
|
src/acf_5/fields/wysiwyg.php
CHANGED
@@ -117,11 +117,12 @@ class wysiwyg extends acf_field_wysiwyg {
|
|
117 |
global $q_config, $wp_version;
|
118 |
$languages = qtrans_getSortedLanguages(true);
|
119 |
$values = qtrans_split($field['value'], $quicktags = true);
|
|
|
120 |
|
121 |
echo '<div class="multi-language-field multi-language-field-wysiwyg">';
|
122 |
|
123 |
foreach ($languages as $language) {
|
124 |
-
$class = ($language ===
|
125 |
echo '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>';
|
126 |
}
|
127 |
|
@@ -130,12 +131,13 @@ class wysiwyg extends acf_field_wysiwyg {
|
|
130 |
$value = apply_filters('acf_the_editor_content', $values[$language]);
|
131 |
$id = $uid . "-$language";
|
132 |
$name = $field['name'] . "[$language]";
|
133 |
-
|
134 |
-
|
|
|
135 |
}
|
136 |
|
137 |
?>
|
138 |
-
<div id="wp-<?php echo $id; ?>-wrap" class="
|
139 |
<div id="wp-<?php echo $id; ?>-editor-tools" class="wp-editor-tools hide-if-no-js">
|
140 |
<?php if( $field['media_upload'] ): ?>
|
141 |
<div id="wp-<?php echo $id; ?>-media-buttons" class="wp-media-buttons">
|
@@ -150,7 +152,7 @@ class wysiwyg extends acf_field_wysiwyg {
|
|
150 |
<?php endif; ?>
|
151 |
</div>
|
152 |
<div id="wp-<?php echo $id; ?>-editor-container" class="wp-editor-container">
|
153 |
-
<textarea id="<?php echo $id; ?>" class="wp-editor-area" name="<?php echo $name; ?>" <?php if($height): ?>style="height:<?php echo $height; ?>px;"<?php endif; ?>><?php echo $value; ?></textarea>
|
154 |
</div>
|
155 |
</div>
|
156 |
|
117 |
global $q_config, $wp_version;
|
118 |
$languages = qtrans_getSortedLanguages(true);
|
119 |
$values = qtrans_split($field['value'], $quicktags = true);
|
120 |
+
$currentLanguage = $this->plugin->get_active_language();
|
121 |
|
122 |
echo '<div class="multi-language-field multi-language-field-wysiwyg">';
|
123 |
|
124 |
foreach ($languages as $language) {
|
125 |
+
$class = ($language === $currentLanguage) ? 'wp-switch-editor current-language' : 'wp-switch-editor';
|
126 |
echo '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>';
|
127 |
}
|
128 |
|
131 |
$value = apply_filters('acf_the_editor_content', $values[$language]);
|
132 |
$id = $uid . "-$language";
|
133 |
$name = $field['name'] . "[$language]";
|
134 |
+
$class = $switch_class;
|
135 |
+
if ($language === $currentLanguage) {
|
136 |
+
$class .= ' current-language';
|
137 |
}
|
138 |
|
139 |
?>
|
140 |
+
<div id="wp-<?php echo $id; ?>-wrap" class="acf-editor-wrap wp-core-ui wp-editor-wrap <?php echo $class; ?>" data-toolbar="<?php echo $field['toolbar']; ?>" data-upload="<?php echo $field['media_upload']; ?>" data-language="<?php echo $language; ?>">
|
141 |
<div id="wp-<?php echo $id; ?>-editor-tools" class="wp-editor-tools hide-if-no-js">
|
142 |
<?php if( $field['media_upload'] ): ?>
|
143 |
<div id="wp-<?php echo $id; ?>-media-buttons" class="wp-media-buttons">
|
152 |
<?php endif; ?>
|
153 |
</div>
|
154 |
<div id="wp-<?php echo $id; ?>-editor-container" class="wp-editor-container">
|
155 |
+
<textarea id="<?php echo $id; ?>" class="qtx-wp-editor-area" name="<?php echo $name; ?>" <?php if($height): ?>style="height:<?php echo $height; ?>px;"<?php endif; ?>><?php echo $value; ?></textarea>
|
156 |
</div>
|
157 |
</div>
|
158 |
|
src/plugin.php
CHANGED
@@ -112,24 +112,31 @@ class plugin {
|
|
112 |
}
|
113 |
|
114 |
/**
|
115 |
-
* Check if qTranslate Plus is enabled
|
116 |
*/
|
117 |
public function ppqtranslate_enabled() {
|
118 |
return function_exists('ppqtrans_getLanguage');
|
119 |
}
|
120 |
|
121 |
/**
|
122 |
-
* Check if qTranslate-X is enabled
|
123 |
*/
|
124 |
public function qtranslatex_enabled() {
|
125 |
return function_exists('qtranxf_getLanguage');
|
126 |
}
|
127 |
|
128 |
/**
|
129 |
-
* Check if mqTranslate is enabled
|
130 |
*/
|
131 |
public function mqtranslate_enabled() {
|
132 |
return function_exists('mqtrans_currentUserCanEdit');
|
133 |
}
|
134 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
135 |
}
|
112 |
}
|
113 |
|
114 |
/**
|
115 |
+
* Check if qTranslate Plus is enabled.
|
116 |
*/
|
117 |
public function ppqtranslate_enabled() {
|
118 |
return function_exists('ppqtrans_getLanguage');
|
119 |
}
|
120 |
|
121 |
/**
|
122 |
+
* Check if qTranslate-X is enabled.
|
123 |
*/
|
124 |
public function qtranslatex_enabled() {
|
125 |
return function_exists('qtranxf_getLanguage');
|
126 |
}
|
127 |
|
128 |
/**
|
129 |
+
* Check if mqTranslate is enabled.
|
130 |
*/
|
131 |
public function mqtranslate_enabled() {
|
132 |
return function_exists('mqtrans_currentUserCanEdit');
|
133 |
}
|
134 |
|
135 |
+
/**
|
136 |
+
* Get the active language.
|
137 |
+
*/
|
138 |
+
public function get_active_language() {
|
139 |
+
return apply_filters('acf_qtranslate_get_active_language', qtrans_getLanguage());
|
140 |
+
}
|
141 |
+
|
142 |
}
|
src/qtranslatex.php
CHANGED
@@ -28,9 +28,11 @@ class qtranslatex {
|
|
28 |
// include compatibility functions
|
29 |
require_once ACF_QTRANSLATE_PLUGIN_DIR . 'compatibility/qtranslatex.php';
|
30 |
|
31 |
-
|
32 |
-
|
33 |
-
add_filter('
|
|
|
|
|
34 |
}
|
35 |
|
36 |
/**
|
@@ -40,11 +42,25 @@ class qtranslatex {
|
|
40 |
?>
|
41 |
<style>
|
42 |
.multi-language-field {margin-top:0!important;}
|
43 |
-
.multi-language-field .wp-switch-editor {display:none!important;}
|
44 |
</style>
|
45 |
<?php
|
46 |
}
|
47 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
/**
|
49 |
* Load ACF form element ids into qTranslate-X.
|
50 |
* @return void
|
@@ -79,4 +95,17 @@ class qtranslatex {
|
|
79 |
}
|
80 |
}
|
81 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
}
|
28 |
// include compatibility functions
|
29 |
require_once ACF_QTRANSLATE_PLUGIN_DIR . 'compatibility/qtranslatex.php';
|
30 |
|
31 |
+
add_action('admin_head', array($this, 'admin_head'));
|
32 |
+
add_action('admin_footer', array($this, 'admin_footer'), 9999); //after qTranslate-X
|
33 |
+
add_filter('qtranslate_custom_admin_js', array($this, 'qtranslate_custom_admin_js'));
|
34 |
+
add_filter('qtranslate_load_admin_page_config', array($this, 'qtranslate_load_admin_page_config'));
|
35 |
+
add_filter('acf_qtranslate_get_active_language', array($this, 'get_active_language'));
|
36 |
}
|
37 |
|
38 |
/**
|
42 |
?>
|
43 |
<style>
|
44 |
.multi-language-field {margin-top:0!important;}
|
45 |
+
.multi-language-field .wp-switch-editor[data-language] {display:none!important;}
|
46 |
</style>
|
47 |
<?php
|
48 |
}
|
49 |
|
50 |
+
/**
|
51 |
+
* Load custom version of edit-post.js if needed.
|
52 |
+
*/
|
53 |
+
public function admin_footer() {
|
54 |
+
if (wp_script_is('qtranslate-admin-edit')) {
|
55 |
+
|
56 |
+
//$handle = wp_script_is('qtranslate-admin-edit', 'registered');
|
57 |
+
|
58 |
+
//wp_register_script('qtranslate-admin-edit', $script_url, array(), QTX_VERSION);
|
59 |
+
//wp_enqueue_script('qtranslate-admin-edit');
|
60 |
+
|
61 |
+
}
|
62 |
+
}
|
63 |
+
|
64 |
/**
|
65 |
* Load ACF form element ids into qTranslate-X.
|
66 |
* @return void
|
95 |
}
|
96 |
}
|
97 |
|
98 |
+
/**
|
99 |
+
* Get the active language.
|
100 |
+
*/
|
101 |
+
public function get_active_language($language) {
|
102 |
+
if (empty($_COOKIE['qtrans_edit_language']) === false) {
|
103 |
+
$enabledLanguages = qtrans_getSortedLanguages();
|
104 |
+
if (in_array($_COOKIE['qtrans_edit_language'], $enabledLanguages)) {
|
105 |
+
$language = $_COOKIE['qtrans_edit_language'];
|
106 |
+
}
|
107 |
+
}
|
108 |
+
return $language;
|
109 |
+
}
|
110 |
+
|
111 |
}
|