Version Description
Added support for qTranslate-X Remove ACFv5 WYSIWYG implementation as it was very broken
Download this release
Release Info
Developer | funkjedi |
Plugin | ACF qTranslate |
Version | 1.5 |
Comparing to | |
See all releases |
Code changes from version 1.4 to 1.5
- acf-qtranslate.php +124 -10
- qtranslate-compatibility.php +38 -0
- readme.txt +7 -3
- v4/assets/input.css +9 -11
- v4/fields/file.php +165 -0
- v4/init.php +1 -0
- v5/assets/input.css +1 -0
- v5/assets/input.js +1 -344
- v5/fields/wysiwyg.php +0 -170
acf-qtranslate.php
CHANGED
@@ -29,21 +29,135 @@ function acf_qtranslate_acf_major_version() {
|
|
29 |
}
|
30 |
|
31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
|
33 |
-
// qTranslate Monkey Patches
|
34 |
|
35 |
-
|
36 |
-
|
|
|
37 |
global $q_config;
|
38 |
|
39 |
-
//
|
40 |
-
|
41 |
-
|
42 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
|
45 |
-
// https://github.com/funkjedi/acf-qtranslate/issues/2#issuecomment-37612918
|
46 |
-
if (strpos($q_config['js']['qtrans_hook_on_tinyMCE'], 'ed.editorId.match(/^qtrans_/)') === false) {
|
47 |
-
$q_config['js']['qtrans_hook_on_tinyMCE'] = preg_replace("/(qtrans_save\(switchEditors\.pre_wpautop\(o\.content\)\);)/", "if (ed.editorId.match(/^qtrans_/)) \$1", $q_config['js']['qtrans_hook_on_tinyMCE']);
|
48 |
}
|
|
|
|
|
49 |
}
|
29 |
}
|
30 |
|
31 |
|
32 |
+
// if using qTranslate-X include a qTranslate compatibility
|
33 |
+
// layer for all required functions
|
34 |
+
add_action('plugins_loaded', 'acf_qtranslate_compatibility', 3);
|
35 |
+
function acf_qtranslate_compatibility() {
|
36 |
+
if (defined('QTX_VERSION')) {
|
37 |
+
require_once dirname(__FILE__) . '/qtranslate-compatibility.php';
|
38 |
+
}
|
39 |
+
}
|
40 |
|
|
|
41 |
|
42 |
+
// qTranslate Monkey Patches
|
43 |
+
add_action('plugins_loaded', 'acf_qtranslate_monkey_patches', 3);
|
44 |
+
function acf_qtranslate_monkey_patches() {
|
45 |
global $q_config;
|
46 |
|
47 |
+
// qTranslate and mqTranslate init at priority 3 so if they
|
48 |
+
// are active then QTRANS_INIT should be defined
|
49 |
+
if (acf_qtranslate_enabled() && defined('QTRANS_INIT')) {
|
50 |
+
|
51 |
+
// http://www.qianqin.de/qtranslate/forum/viewtopic.php?f=3&t=3497
|
52 |
+
if (strpos($q_config['js']['qtrans_switch'], 'originalSwitchEditors') === false) {
|
53 |
+
$q_config['js']['qtrans_switch'] = "originalSwitchEditors = jQuery.extend(true, {}, switchEditors);\n" . $q_config['js']['qtrans_switch'];
|
54 |
+
$q_config['js']['qtrans_switch'] = preg_replace("/(var vta = document\.getElementById\('qtrans_textarea_' \+ id\);)/", "\$1\nif(!vta)return originalSwitchEditors.go(id, lang);", $q_config['js']['qtrans_switch']);
|
55 |
+
}
|
56 |
+
|
57 |
+
// https://github.com/funkjedi/acf-qtranslate/issues/2#issuecomment-37612918
|
58 |
+
if (strpos($q_config['js']['qtrans_hook_on_tinyMCE'], 'ed.editorId.match(/^qtrans_/)') === false) {
|
59 |
+
$q_config['js']['qtrans_hook_on_tinyMCE'] = preg_replace("/(qtrans_save\(switchEditors\.pre_wpautop\(o\.content\)\);)/", "if (ed.editorId.match(/^qtrans_/)) \$1", $q_config['js']['qtrans_hook_on_tinyMCE']);
|
60 |
+
}
|
61 |
+
|
62 |
+
}
|
63 |
+
}
|
64 |
+
|
65 |
+
|
66 |
+
|
67 |
+
function acf_qtranslate_get_visible_fields($args = false) {
|
68 |
+
global $post, $typenow;
|
69 |
+
if ($args === false) {
|
70 |
+
$args = array(
|
71 |
+
'post_id' => $post->ID,
|
72 |
+
'post_type' => $typenow,
|
73 |
+
);
|
74 |
+
}
|
75 |
+
$supported_field_types = array(
|
76 |
+
'text',
|
77 |
+
'textarea',
|
78 |
+
);
|
79 |
+
$field_ids = array();
|
80 |
+
foreach (acf_get_field_groups($args) as $field_group) {
|
81 |
+
$fields = acf_get_fields($field_group);
|
82 |
+
foreach ($fields as $field) {
|
83 |
+
if (in_array($field['type'], $supported_field_types)) {
|
84 |
+
$field_ids[] = array('id' => 'acf-' . $field['key']);
|
85 |
+
}
|
86 |
+
}
|
87 |
}
|
88 |
+
return $field_ids;
|
89 |
+
}
|
90 |
+
|
91 |
+
|
92 |
+
add_filter('qtranslate_load_admin_page_config', 'acf_qtranslate_load_admin_page_config');
|
93 |
+
function acf_qtranslate_load_admin_page_config($page_configs)
|
94 |
+
{
|
95 |
+
global $pagenow;
|
96 |
+
switch ($pagenow) {
|
97 |
+
|
98 |
+
// add support for regular pages and posts
|
99 |
+
case 'post.php':
|
100 |
+
case 'post-new.php':
|
101 |
+
$page_configs[] = array(
|
102 |
+
'pages' => array(
|
103 |
+
'post.php' => '',
|
104 |
+
'post-new.php' => ''),
|
105 |
+
'forms' => array(
|
106 |
+
array('fields' => acf_qtranslate_get_visible_fields())
|
107 |
+
));
|
108 |
+
break;
|
109 |
+
|
110 |
+
// add support for ACF Option Pages
|
111 |
+
case 'admin.php':
|
112 |
+
foreach (acf_get_options_pages() as $page) {
|
113 |
+
$page_configs[] = array(
|
114 |
+
'pages' => array('admin.php' => 'page=' . $page['menu_slug']),
|
115 |
+
'forms' => array(
|
116 |
+
array('fields' => acf_qtranslate_get_visible_fields())
|
117 |
+
));
|
118 |
+
}
|
119 |
+
break;
|
120 |
+
|
121 |
+
// add support for new user page
|
122 |
+
case 'user-new.php':
|
123 |
+
$args = array(
|
124 |
+
'user_id' => 'new',
|
125 |
+
'user_form' => 'edit',
|
126 |
+
);
|
127 |
+
$page_configs[] = array(
|
128 |
+
'pages' => array('user-new.php' => ''),
|
129 |
+
'forms' => array(
|
130 |
+
array('fields' => acf_qtranslate_get_visible_fields($args))
|
131 |
+
));
|
132 |
+
break;
|
133 |
+
|
134 |
+
// add support for edit user page
|
135 |
+
case 'user-edit.php':
|
136 |
+
$args = array(
|
137 |
+
'user_id' => @$_GET['user_id'],
|
138 |
+
'user_form' => 'edit',
|
139 |
+
);
|
140 |
+
$page_configs[] = array(
|
141 |
+
'pages' => array('user-edit.php' => 'user_id='),
|
142 |
+
'forms' => array(
|
143 |
+
array('fields' => acf_qtranslate_get_visible_fields($args))
|
144 |
+
));
|
145 |
+
break;
|
146 |
+
|
147 |
+
// add support for profile page
|
148 |
+
case 'profile.php':
|
149 |
+
$args = array(
|
150 |
+
'user_id' => get_current_user_id(),
|
151 |
+
'user_form' => 'edit',
|
152 |
+
);
|
153 |
+
$page_configs[] = array(
|
154 |
+
'pages' => array('profile.php' => ''),
|
155 |
+
'forms' => array(
|
156 |
+
array('fields' => acf_qtranslate_get_visible_fields($args))
|
157 |
+
));
|
158 |
+
break;
|
159 |
|
|
|
|
|
|
|
160 |
}
|
161 |
+
|
162 |
+
return $page_configs;
|
163 |
}
|
qtranslate-compatibility.php
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// compatibility with qTranslate-X
|
4 |
+
|
5 |
+
if (function_exists('qtrans_getLanguage') === false):
|
6 |
+
function qtrans_getLanguage() {
|
7 |
+
return qtranxf_getLanguage();
|
8 |
+
}
|
9 |
+
endif;
|
10 |
+
|
11 |
+
if (function_exists('qtrans_getSortedLanguages') === false):
|
12 |
+
function qtrans_getSortedLanguages($reverse = false) {
|
13 |
+
return qtranxf_getSortedLanguages($reverse);
|
14 |
+
}
|
15 |
+
endif;
|
16 |
+
|
17 |
+
if (function_exists('qtrans_join') === false):
|
18 |
+
function qtrans_join($texts) {
|
19 |
+
// qtranxf_join_c doesn't handle non-array values to
|
20 |
+
// maintain compatibility with qtrans_join we must handle it here
|
21 |
+
if (is_array($texts) === false) {
|
22 |
+
$texts = qtranxf_split($texts, false);
|
23 |
+
}
|
24 |
+
return qtranxf_join_c($texts);
|
25 |
+
}
|
26 |
+
endif;
|
27 |
+
|
28 |
+
if (function_exists('qtrans_split') === false):
|
29 |
+
function qtrans_split($text, $quicktags = true) {
|
30 |
+
return qtranxf_split($text, $quicktags);
|
31 |
+
}
|
32 |
+
endif;
|
33 |
+
|
34 |
+
if (function_exists('qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage') === false):
|
35 |
+
function qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($content) {
|
36 |
+
return qtranxf_useCurrentLanguageIfNotFoundUseDefaultLanguage($content);
|
37 |
+
}
|
38 |
+
endif;
|
readme.txt
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
Contributors: funkjedi
|
3 |
Tags: acf, advanced custom fields, qtranslate, add-on, admin
|
4 |
Requires at least: 3.0.0
|
5 |
-
Tested up to:
|
6 |
-
Version: 1.
|
7 |
-
Stable tag: 1.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -48,6 +48,10 @@ The plugin is based on code samples posted to the [ACF support forums](http://ol
|
|
48 |
|
49 |
== Changelog ==
|
50 |
|
|
|
|
|
|
|
|
|
51 |
= 1.4 =
|
52 |
Updated with support for Advanced Customs Fields v5
|
53 |
Tested using mqTranslate in place of qTranslate
|
2 |
Contributors: funkjedi
|
3 |
Tags: acf, advanced custom fields, qtranslate, add-on, admin
|
4 |
Requires at least: 3.0.0
|
5 |
+
Tested up to: 4.1.1
|
6 |
+
Version: 1.5
|
7 |
+
Stable tag: 1.5
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
48 |
|
49 |
== Changelog ==
|
50 |
|
51 |
+
= 1.5 =
|
52 |
+
Added support for qTranslate-X
|
53 |
+
Remove ACFv5 WYSIWYG implementation as it was very broken
|
54 |
+
|
55 |
= 1.4 =
|
56 |
Updated with support for Advanced Customs Fields v5
|
57 |
Tested using mqTranslate in place of qTranslate
|
v4/assets/input.css
CHANGED
@@ -1,4 +1,7 @@
|
|
1 |
|
|
|
|
|
|
|
2 |
|
3 |
.qtrans_title_wrap {
|
4 |
margin-bottom: 20px;
|
@@ -18,14 +21,6 @@
|
|
18 |
|
19 |
.acf_wysiwyg .wp-editor-container { border: 1px solid #e5e5e5 !important; }
|
20 |
|
21 |
-
.multi-language-field {
|
22 |
-
margin-top: -38px;
|
23 |
-
}
|
24 |
-
|
25 |
-
.acf-input-table .multi-language-field {
|
26 |
-
margin-top: -6px;
|
27 |
-
}
|
28 |
-
|
29 |
.multi-language-field .wp-switch-editor {
|
30 |
border-color: #dedede;
|
31 |
position: relative;
|
@@ -60,7 +55,8 @@
|
|
60 |
.multi-language-field > textarea,
|
61 |
.multi-language-field > fieldset,
|
62 |
.multi-language-field .acf_wysiwyg,
|
63 |
-
.multi-language-field .acf-image-uploader
|
|
|
64 |
|
65 |
.multi-language-field .acf_input input,
|
66 |
.multi-language-field .acf_input textarea,
|
@@ -68,13 +64,15 @@
|
|
68 |
|
69 |
.multi-language-field-wysiwyg { margin-top: 0 }
|
70 |
|
71 |
-
.multi-language-field .acf-image-uploader
|
|
|
72 |
padding: 20px 10px 10px;
|
73 |
clear: right;
|
74 |
border: 1px solid #dfdfdf;
|
75 |
}
|
76 |
|
77 |
-
.multi-language-field .acf-image-uploader.current-language
|
|
|
78 |
|
79 |
.multi-language-field-wysiwyg .wp-switch-editor {
|
80 |
background-color: #ebebeb;
|
1 |
|
2 |
+
.multi-language-field { margin-top: -38px; }
|
3 |
+
|
4 |
+
#edit-slug-box { margin-top: -15px; }
|
5 |
|
6 |
.qtrans_title_wrap {
|
7 |
margin-bottom: 20px;
|
21 |
|
22 |
.acf_wysiwyg .wp-editor-container { border: 1px solid #e5e5e5 !important; }
|
23 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
.multi-language-field .wp-switch-editor {
|
25 |
border-color: #dedede;
|
26 |
position: relative;
|
55 |
.multi-language-field > textarea,
|
56 |
.multi-language-field > fieldset,
|
57 |
.multi-language-field .acf_wysiwyg,
|
58 |
+
.multi-language-field .acf-image-uploader,
|
59 |
+
.multi-language-field .acf-file-uploader { display: none }
|
60 |
|
61 |
.multi-language-field .acf_input input,
|
62 |
.multi-language-field .acf_input textarea,
|
64 |
|
65 |
.multi-language-field-wysiwyg { margin-top: 0 }
|
66 |
|
67 |
+
.multi-language-field .acf-image-uploader,
|
68 |
+
.multi-language-field .acf-file-uploader {
|
69 |
padding: 20px 10px 10px;
|
70 |
clear: right;
|
71 |
border: 1px solid #dfdfdf;
|
72 |
}
|
73 |
|
74 |
+
.multi-language-field .acf-image-uploader.current-language,
|
75 |
+
.multi-language-field .acf-file-uploader { background: #fff; }
|
76 |
|
77 |
.multi-language-field-wysiwyg .wp-switch-editor {
|
78 |
background-color: #ebebeb;
|
v4/fields/file.php
ADDED
@@ -0,0 +1,165 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class acf_field_qtranslate_file extends acf_field_file
|
4 |
+
{
|
5 |
+
|
6 |
+
function __construct()
|
7 |
+
{
|
8 |
+
// Grab defaults
|
9 |
+
$this->name = 'qtranslate_file';
|
10 |
+
$this->label = __("File",'acf');
|
11 |
+
$this->category = __("qTranslate", 'acf');
|
12 |
+
$this->defaults = array(
|
13 |
+
'save_format' => 'object',
|
14 |
+
'library' => 'all'
|
15 |
+
);
|
16 |
+
$this->l10n = array(
|
17 |
+
'select' => __("Select File",'acf'),
|
18 |
+
'edit' => __("Edit File",'acf'),
|
19 |
+
'update' => __("Update File",'acf'),
|
20 |
+
'uploadedTo' => __("uploaded to this post",'acf'),
|
21 |
+
);
|
22 |
+
|
23 |
+
acf_field::__construct();
|
24 |
+
|
25 |
+
// filters
|
26 |
+
add_filter('get_media_item_args', array($this, 'get_media_item_args'));
|
27 |
+
add_filter('wp_prepare_attachment_for_js', array($this, 'wp_prepare_attachment_for_js'), 10, 3);
|
28 |
+
|
29 |
+
|
30 |
+
// JSON
|
31 |
+
add_action('wp_ajax_acf/fields/file/get_files', array($this, 'ajax_get_files'));
|
32 |
+
add_action('wp_ajax_nopriv_acf/fields/file/get_files', array($this, 'ajax_get_files'), 10, 1);
|
33 |
+
}
|
34 |
+
|
35 |
+
function create_field($field)
|
36 |
+
{
|
37 |
+
if (!acf_qtranslate_enabled()) {
|
38 |
+
parent::create_field($field);
|
39 |
+
return;
|
40 |
+
}
|
41 |
+
|
42 |
+
global $q_config;
|
43 |
+
$languages = qtrans_getSortedLanguages(true);
|
44 |
+
$values = qtrans_split($field['value'], $quicktags = true);
|
45 |
+
$currentLanguage = qtrans_getLanguage();
|
46 |
+
|
47 |
+
echo '<div class="multi-language-field multi-language-field-file">';
|
48 |
+
|
49 |
+
foreach ($languages as $language) {
|
50 |
+
$class = 'wp-switch-editor';
|
51 |
+
if ($language === $currentLanguage) {
|
52 |
+
$class .= ' current-language';
|
53 |
+
}
|
54 |
+
echo '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>';
|
55 |
+
}
|
56 |
+
|
57 |
+
$base_class = $field['class'];
|
58 |
+
$base_name = $field['name'];
|
59 |
+
foreach ($languages as $language) :
|
60 |
+
$value = $values[$language];
|
61 |
+
$o = array(
|
62 |
+
'class' => '',
|
63 |
+
'icon' => '',
|
64 |
+
'title' => '',
|
65 |
+
'size' => '',
|
66 |
+
'url' => '',
|
67 |
+
'name' => '',
|
68 |
+
);
|
69 |
+
|
70 |
+
if($value && is_numeric($value)) {
|
71 |
+
$file = get_post($value);
|
72 |
+
|
73 |
+
if($file) {
|
74 |
+
$o['class'] = 'active';
|
75 |
+
$o['icon'] = wp_mime_type_icon( $file->ID );
|
76 |
+
$o['title'] = $file->post_title;
|
77 |
+
$o['size'] = size_format(filesize( get_attached_file( $file->ID ) ));
|
78 |
+
$o['url'] = wp_get_attachment_url( $file->ID );
|
79 |
+
|
80 |
+
$explode = explode('/', $o['url']);
|
81 |
+
$o['name'] = end( $explode );
|
82 |
+
}
|
83 |
+
}
|
84 |
+
|
85 |
+
$field['class'] = $base_class;
|
86 |
+
if ($language === $currentLanguage) {
|
87 |
+
$field['class'] .= ' current-language';
|
88 |
+
$o['class'] .= ' current-language';
|
89 |
+
}
|
90 |
+
|
91 |
+
$field['name'] = $base_name . '[' . $language . ']';
|
92 |
+
|
93 |
+
?>
|
94 |
+
<div class="acf-file-uploader clearfix <?php echo $o['class']; ?>" data-library="<?php echo $field['library']; ?>" data-language="<?php echo $language; ?>">
|
95 |
+
<input class="acf-file-value" type="hidden" name="<?php echo $field['name']; ?>" value="<?php echo $value; ?>" />
|
96 |
+
<div class="has-file">
|
97 |
+
<ul class="hl clearfix">
|
98 |
+
<li>
|
99 |
+
<img class="acf-file-icon" src="<?php echo $o['icon']; ?>" alt=""/>
|
100 |
+
<div class="hover">
|
101 |
+
<ul class="bl">
|
102 |
+
<li><a href="#" class="acf-button-delete ir">Remove</a></li>
|
103 |
+
<li><a href="#" class="acf-button-edit ir">Edit</a></li>
|
104 |
+
</ul>
|
105 |
+
</div>
|
106 |
+
</li>
|
107 |
+
<li>
|
108 |
+
<p>
|
109 |
+
<strong class="acf-file-title"><?php echo $o['title']; ?></strong>
|
110 |
+
</p>
|
111 |
+
<p>
|
112 |
+
<strong><?php _e('Name', 'acf'); ?>:</strong>
|
113 |
+
<a class="acf-file-name" href="<?php echo $o['url']; ?>" target="_blank"><?php echo $o['name']; ?></a>
|
114 |
+
</p>
|
115 |
+
<p>
|
116 |
+
<strong><?php _e('Size', 'acf'); ?>:</strong>
|
117 |
+
<span class="acf-file-size"><?php echo $o['size']; ?></span>
|
118 |
+
</p>
|
119 |
+
|
120 |
+
</li>
|
121 |
+
</ul>
|
122 |
+
</div>
|
123 |
+
<div class="no-file">
|
124 |
+
<ul class="hl clearfix">
|
125 |
+
<li>
|
126 |
+
<p><?php _e('No File Selected','acf'); ?> <a href="#" class="button add-file"><?php _e('Add File','acf'); ?></p></a>
|
127 |
+
</li>
|
128 |
+
</ul>
|
129 |
+
</div>
|
130 |
+
</div>
|
131 |
+
<?php endforeach;
|
132 |
+
|
133 |
+
echo '</div>';
|
134 |
+
}
|
135 |
+
|
136 |
+
function format_value($value, $post_id, $field)
|
137 |
+
{
|
138 |
+
return $value;
|
139 |
+
}
|
140 |
+
|
141 |
+
function format_value_for_api($value, $post_id, $field)
|
142 |
+
{
|
143 |
+
if (acf_qtranslate_enabled()) {
|
144 |
+
$value = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($value);
|
145 |
+
}
|
146 |
+
|
147 |
+
return parent::format_value_for_api($value, $post_id, $field);
|
148 |
+
}
|
149 |
+
|
150 |
+
function update_value($value, $post_id, $field)
|
151 |
+
{
|
152 |
+
if (acf_qtranslate_enabled()) {
|
153 |
+
$value = qtrans_join($value);
|
154 |
+
}
|
155 |
+
|
156 |
+
return $value;
|
157 |
+
}
|
158 |
+
|
159 |
+
function create_options( $field )
|
160 |
+
{
|
161 |
+
parent::create_options($field);
|
162 |
+
}
|
163 |
+
}
|
164 |
+
|
165 |
+
new acf_field_qtranslate_file();
|
v4/init.php
CHANGED
@@ -14,6 +14,7 @@ function acf_qtranslate_plugin_v4_register_fields() {
|
|
14 |
require_once dirname(__FILE__) . '/fields/textarea.php';
|
15 |
require_once dirname(__FILE__) . '/fields/wysiwyg.php';
|
16 |
require_once dirname(__FILE__) . '/fields/image.php';
|
|
|
17 |
}
|
18 |
|
19 |
add_filter('acf/format_value_for_api', 'acf_qtranslate_plugin_v4_format_value_for_api');
|
14 |
require_once dirname(__FILE__) . '/fields/textarea.php';
|
15 |
require_once dirname(__FILE__) . '/fields/wysiwyg.php';
|
16 |
require_once dirname(__FILE__) . '/fields/image.php';
|
17 |
+
require_once dirname(__FILE__) . '/fields/file.php';
|
18 |
}
|
19 |
|
20 |
add_filter('acf/format_value_for_api', 'acf_qtranslate_plugin_v4_format_value_for_api');
|
v5/assets/input.css
CHANGED
@@ -31,6 +31,7 @@
|
|
31 |
position: relative;
|
32 |
top: 1px;
|
33 |
z-index: 100;
|
|
|
34 |
}
|
35 |
|
36 |
.multi-language-field input,
|
31 |
position: relative;
|
32 |
top: 1px;
|
33 |
z-index: 100;
|
34 |
+
float: right;
|
35 |
}
|
36 |
|
37 |
.multi-language-field input,
|
v5/assets/input.js
CHANGED
@@ -11,7 +11,7 @@ jQuery(function($) {
|
|
11 |
|
12 |
// if a TinyMCE hasn't been initalize for this language then initalize it
|
13 |
if (!parent.find('.current-language .mce-tinymce').length) {
|
14 |
-
acf.do_action('ready', parent.parents('.acf-field'));
|
15 |
}
|
16 |
});
|
17 |
|
@@ -25,346 +25,3 @@ jQuery(function($) {
|
|
25 |
|
26 |
|
27 |
});
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
(function($){
|
32 |
-
|
33 |
-
acf.fields.qtranslate_wysiwyg = acf.field.extend({
|
34 |
-
|
35 |
-
type: 'qtranslate_wysiwyg',
|
36 |
-
$el: null,
|
37 |
-
$textarea: null,
|
38 |
-
toolbars: {},
|
39 |
-
|
40 |
-
actions: {
|
41 |
-
'ready': 'initialize',
|
42 |
-
'append': 'initialize',
|
43 |
-
'remove': 'disable',
|
44 |
-
'sortstart': 'disable',
|
45 |
-
'sortstop': 'enable'
|
46 |
-
},
|
47 |
-
|
48 |
-
focus: function(){
|
49 |
-
|
50 |
-
// update vars
|
51 |
-
this.$el = this.$field.find('.wp-editor-wrap.current-language').last();
|
52 |
-
this.$textarea = this.$el.find('textarea');
|
53 |
-
|
54 |
-
|
55 |
-
// settings
|
56 |
-
this.settings = acf.get_data( this.$el );
|
57 |
-
this.settings.id = this.$textarea.attr('id');
|
58 |
-
},
|
59 |
-
|
60 |
-
initialize: function(){
|
61 |
-
|
62 |
-
// bail early if no tinymce
|
63 |
-
if( typeof tinyMCEPreInit === 'undefined' ) {
|
64 |
-
|
65 |
-
return false;
|
66 |
-
|
67 |
-
}
|
68 |
-
|
69 |
-
|
70 |
-
// vars
|
71 |
-
var mceInit = this.get_mceInit(),
|
72 |
-
qtInit = this.get_qtInit();
|
73 |
-
|
74 |
-
|
75 |
-
// append settings
|
76 |
-
tinyMCEPreInit.mceInit[ mceInit.id ] = mceInit;
|
77 |
-
tinyMCEPreInit.qtInit[ qtInit.id ] = qtInit;
|
78 |
-
|
79 |
-
|
80 |
-
// initialize mceInit
|
81 |
-
if( this.$el.hasClass('tmce-active') ) {
|
82 |
-
|
83 |
-
try {
|
84 |
-
|
85 |
-
tinymce.init( mceInit );
|
86 |
-
|
87 |
-
} catch(e){}
|
88 |
-
|
89 |
-
}
|
90 |
-
|
91 |
-
|
92 |
-
// initialize qtInit
|
93 |
-
try {
|
94 |
-
|
95 |
-
var qtag = quicktags( qtInit );
|
96 |
-
|
97 |
-
this._buttonsInit( qtag );
|
98 |
-
|
99 |
-
} catch(e){}
|
100 |
-
|
101 |
-
},
|
102 |
-
|
103 |
-
|
104 |
-
get_mceInit : function(){
|
105 |
-
|
106 |
-
// reference
|
107 |
-
var $field = this.$field;
|
108 |
-
|
109 |
-
|
110 |
-
// vars
|
111 |
-
var toolbar = this.get_toolbar( this.settings.toolbar ),
|
112 |
-
mceInit = $.extend({}, tinyMCEPreInit.mceInit.acf_content);
|
113 |
-
|
114 |
-
|
115 |
-
// selector
|
116 |
-
mceInit.selector = '#' + this.settings.id;
|
117 |
-
|
118 |
-
|
119 |
-
// id
|
120 |
-
mceInit.id = this.settings.id; // tinymce v4
|
121 |
-
mceInit.elements = this.settings.id; // tinymce v3
|
122 |
-
|
123 |
-
|
124 |
-
// toolbar
|
125 |
-
if( toolbar ) {
|
126 |
-
|
127 |
-
var k = (tinymce.majorVersion < 4) ? 'theme_advanced_buttons' : 'toolbar';
|
128 |
-
|
129 |
-
for( var i = 1; i < 5; i++ ) {
|
130 |
-
|
131 |
-
mceInit[ k + i ] = acf.isset(toolbar, i) ? toolbar[i] : '';
|
132 |
-
|
133 |
-
}
|
134 |
-
|
135 |
-
}
|
136 |
-
|
137 |
-
|
138 |
-
// events
|
139 |
-
if( tinymce.majorVersion < 4 ) {
|
140 |
-
|
141 |
-
mceInit.setup = function( ed ){
|
142 |
-
|
143 |
-
ed.onInit.add(function(ed, event) {
|
144 |
-
|
145 |
-
// focus
|
146 |
-
$(ed.getBody()).on('focus', function(){
|
147 |
-
|
148 |
-
acf.validation.remove_error( $field );
|
149 |
-
|
150 |
-
});
|
151 |
-
|
152 |
-
$(ed.getBody()).on('blur', function(){
|
153 |
-
|
154 |
-
// update the hidden textarea
|
155 |
-
// - This fixes a bug when adding a taxonomy term as the form is not posted and the hidden textarea is never populated!
|
156 |
-
|
157 |
-
// save to textarea
|
158 |
-
ed.save();
|
159 |
-
|
160 |
-
|
161 |
-
// trigger change on textarea
|
162 |
-
$field.find('textarea').trigger('change');
|
163 |
-
|
164 |
-
});
|
165 |
-
|
166 |
-
});
|
167 |
-
|
168 |
-
};
|
169 |
-
|
170 |
-
} else {
|
171 |
-
|
172 |
-
mceInit.setup = function( ed ){
|
173 |
-
|
174 |
-
ed.on('focus', function(e) {
|
175 |
-
|
176 |
-
acf.validation.remove_error( $field );
|
177 |
-
|
178 |
-
});
|
179 |
-
|
180 |
-
ed.on('blur', function(e) {
|
181 |
-
|
182 |
-
// update the hidden textarea
|
183 |
-
// - This fixes a but when adding a taxonomy term as the form is not posted and the hidden textarea is never populated!
|
184 |
-
|
185 |
-
// save to textarea
|
186 |
-
ed.save();
|
187 |
-
|
188 |
-
|
189 |
-
// trigger change on textarea
|
190 |
-
$field.find('textarea').trigger('change');
|
191 |
-
|
192 |
-
});
|
193 |
-
|
194 |
-
};
|
195 |
-
|
196 |
-
}
|
197 |
-
|
198 |
-
|
199 |
-
// hook for 3rd party customization
|
200 |
-
mceInit = acf.apply_filters('wysiwyg_tinymce_settings', mceInit, mceInit.id);
|
201 |
-
|
202 |
-
|
203 |
-
// return
|
204 |
-
return mceInit;
|
205 |
-
|
206 |
-
},
|
207 |
-
|
208 |
-
get_qtInit : function(){
|
209 |
-
|
210 |
-
// vars
|
211 |
-
var qtInit = $.extend({}, tinyMCEPreInit.qtInit.acf_content);
|
212 |
-
|
213 |
-
|
214 |
-
// id
|
215 |
-
qtInit.id = this.settings.id;
|
216 |
-
|
217 |
-
|
218 |
-
// hook for 3rd party customization
|
219 |
-
qtInit = acf.apply_filters('wysiwyg_quicktags_settings', qtInit, qtInit.id);
|
220 |
-
|
221 |
-
|
222 |
-
// return
|
223 |
-
return qtInit;
|
224 |
-
|
225 |
-
},
|
226 |
-
|
227 |
-
/*
|
228 |
-
* disable
|
229 |
-
*
|
230 |
-
* This function will disable the tinymce for a given field
|
231 |
-
* Note: txtarea_el is different from $textarea.val() and is the value that you see, not the value that you save.
|
232 |
-
* this allows text like <--more--> to wok instead of showing as an image when the tinymce is removed
|
233 |
-
*
|
234 |
-
* @type function
|
235 |
-
* @date 1/08/2014
|
236 |
-
* @since 5.0.0
|
237 |
-
*
|
238 |
-
* @param n/a
|
239 |
-
* @return n/a
|
240 |
-
*/
|
241 |
-
|
242 |
-
disable: function(){
|
243 |
-
|
244 |
-
try {
|
245 |
-
|
246 |
-
// vars
|
247 |
-
var ed = tinyMCE.get( this.settings.id ),
|
248 |
-
txtarea_el = tinyMCE.DOM.get( this.settings.id );
|
249 |
-
val = txtarea_el.value;
|
250 |
-
|
251 |
-
|
252 |
-
// destory
|
253 |
-
ed.destroy();
|
254 |
-
|
255 |
-
|
256 |
-
// update value
|
257 |
-
if( this.$field.find('.wp-editor-wrap').hasClass('html-active') ) {
|
258 |
-
|
259 |
-
txtarea_el.value = val;
|
260 |
-
|
261 |
-
}
|
262 |
-
|
263 |
-
|
264 |
-
} catch(e) {}
|
265 |
-
|
266 |
-
},
|
267 |
-
|
268 |
-
enable: function(){
|
269 |
-
|
270 |
-
// bail early if html mode
|
271 |
-
if( this.$field.find('.wp-editor-wrap').hasClass('html-active') ) {
|
272 |
-
|
273 |
-
return;
|
274 |
-
|
275 |
-
}
|
276 |
-
|
277 |
-
|
278 |
-
try {
|
279 |
-
|
280 |
-
tinyMCE.init( tinyMCEPreInit.mceInit[ this.settings.id ] );
|
281 |
-
|
282 |
-
} catch(e) {}
|
283 |
-
|
284 |
-
|
285 |
-
},
|
286 |
-
|
287 |
-
get_toolbar : function( name ){
|
288 |
-
|
289 |
-
// bail early if toolbar doesn't exist
|
290 |
-
if( typeof this.toolbars[ name ] !== 'undefined' ) {
|
291 |
-
|
292 |
-
return this.toolbars[ name ];
|
293 |
-
|
294 |
-
}
|
295 |
-
|
296 |
-
|
297 |
-
// return
|
298 |
-
return false;
|
299 |
-
|
300 |
-
},
|
301 |
-
|
302 |
-
|
303 |
-
/*
|
304 |
-
* _buttonsInit
|
305 |
-
*
|
306 |
-
* This function will add the quicktags HTML to a WYSIWYG field. Normaly, this is added via quicktags on document ready,
|
307 |
-
* however, there is no support for 'append'. Source: wp-includes/js/quicktags.js:245
|
308 |
-
*
|
309 |
-
* @type function
|
310 |
-
* @date 1/08/2014
|
311 |
-
* @since 5.0.0
|
312 |
-
*
|
313 |
-
* @param ed (object) quicktag object
|
314 |
-
* @return n/a
|
315 |
-
*/
|
316 |
-
|
317 |
-
_buttonsInit: function( ed ) {
|
318 |
-
var defaults = ',strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,';
|
319 |
-
|
320 |
-
canvas = ed.canvas;
|
321 |
-
name = ed.name;
|
322 |
-
settings = ed.settings;
|
323 |
-
html = '';
|
324 |
-
theButtons = {};
|
325 |
-
use = '';
|
326 |
-
|
327 |
-
// set buttons
|
328 |
-
if ( settings.buttons ) {
|
329 |
-
use = ','+settings.buttons+',';
|
330 |
-
}
|
331 |
-
|
332 |
-
for ( i in edButtons ) {
|
333 |
-
if ( !edButtons[i] ) {
|
334 |
-
continue;
|
335 |
-
}
|
336 |
-
|
337 |
-
id = edButtons[i].id;
|
338 |
-
if ( use && defaults.indexOf( ',' + id + ',' ) !== -1 && use.indexOf( ',' + id + ',' ) === -1 ) {
|
339 |
-
continue;
|
340 |
-
}
|
341 |
-
|
342 |
-
if ( !edButtons[i].instance || edButtons[i].instance === inst ) {
|
343 |
-
theButtons[id] = edButtons[i];
|
344 |
-
|
345 |
-
if ( edButtons[i].html ) {
|
346 |
-
html += edButtons[i].html(name + '_');
|
347 |
-
}
|
348 |
-
}
|
349 |
-
}
|
350 |
-
|
351 |
-
if ( use && use.indexOf(',fullscreen,') !== -1 ) {
|
352 |
-
theButtons.fullscreen = new qt.FullscreenButton();
|
353 |
-
html += theButtons.fullscreen.html(name + '_');
|
354 |
-
}
|
355 |
-
|
356 |
-
|
357 |
-
if ( 'rtl' === document.getElementsByTagName('html')[0].dir ) {
|
358 |
-
theButtons.textdirection = new qt.TextDirectionButton();
|
359 |
-
html += theButtons.textdirection.html(name + '_');
|
360 |
-
}
|
361 |
-
|
362 |
-
ed.toolbar.innerHTML = html;
|
363 |
-
ed.theButtons = theButtons;
|
364 |
-
|
365 |
-
},
|
366 |
-
|
367 |
-
});
|
368 |
-
|
369 |
-
})(jQuery);
|
370 |
-
|
11 |
|
12 |
// if a TinyMCE hasn't been initalize for this language then initalize it
|
13 |
if (!parent.find('.current-language .mce-tinymce').length) {
|
14 |
+
//acf.do_action('ready', parent.parents('.acf-field'));
|
15 |
}
|
16 |
});
|
17 |
|
25 |
|
26 |
|
27 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
v5/fields/wysiwyg.php
CHANGED
@@ -36,176 +36,6 @@ class acf_field_qtranslate_wysiwyg extends acf_field_wysiwyg
|
|
36 |
acf_field::__construct();
|
37 |
}
|
38 |
|
39 |
-
|
40 |
-
function render_field($field)
|
41 |
-
{
|
42 |
-
if (!acf_qtranslate_enabled()) {
|
43 |
-
acf_field_wysiwyg::render_field($field);
|
44 |
-
return;
|
45 |
-
}
|
46 |
-
|
47 |
-
// enqueue
|
48 |
-
acf_enqueue_uploader();
|
49 |
-
|
50 |
-
|
51 |
-
// vars
|
52 |
-
$id = $field['id'] . '-' . uniqid();
|
53 |
-
$mode = 'html';
|
54 |
-
$show_tabs = true;
|
55 |
-
|
56 |
-
|
57 |
-
// get height
|
58 |
-
$height = acf_get_user_setting('wysiwyg_height', 300);
|
59 |
-
$height = max( $height, 300 ); // minimum height is 300
|
60 |
-
|
61 |
-
|
62 |
-
// detect mode
|
63 |
-
if( $field['tabs'] == 'visual' ) {
|
64 |
-
|
65 |
-
// case: visual tab only
|
66 |
-
$mode = 'tmce';
|
67 |
-
$show_tabs = false;
|
68 |
-
|
69 |
-
} elseif( $field['tabs'] == 'text' ) {
|
70 |
-
|
71 |
-
// case: text tab only
|
72 |
-
$show_tabs = false;
|
73 |
-
|
74 |
-
} elseif( wp_default_editor() == 'tinymce' ) {
|
75 |
-
|
76 |
-
// case: both tabs
|
77 |
-
$mode = 'tmce';
|
78 |
-
|
79 |
-
}
|
80 |
-
|
81 |
-
|
82 |
-
// mode
|
83 |
-
$switch_class = $mode . '-active';
|
84 |
-
|
85 |
-
|
86 |
-
// filter value for editor
|
87 |
-
remove_all_filters( 'acf_the_editor_content' );
|
88 |
-
|
89 |
-
if( $mode == 'tmce' ) {
|
90 |
-
|
91 |
-
add_filter('acf_the_editor_content', 'wp_richedit_pre');
|
92 |
-
|
93 |
-
} else {
|
94 |
-
|
95 |
-
add_filter('acf_the_editor_content', 'wp_htmledit_pre');
|
96 |
-
|
97 |
-
}
|
98 |
-
|
99 |
-
$field['value'] = apply_filters( 'acf_the_editor_content', $field['value'] );
|
100 |
-
|
101 |
-
|
102 |
-
global $q_config, $wp_version;
|
103 |
-
$languages = qtrans_getSortedLanguages(true);
|
104 |
-
$values = qtrans_split($field['value'], $quicktags = true);
|
105 |
-
|
106 |
-
echo '<div class="multi-language-field multi-language-field-wysiwyg">';
|
107 |
-
|
108 |
-
foreach ($languages as $language) {
|
109 |
-
$class = ($language === end($languages)) ? 'wp-switch-editor current-language' : 'wp-switch-editor';
|
110 |
-
echo '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>';
|
111 |
-
}
|
112 |
-
|
113 |
-
$uid = $field['id'] . '-' . uniqid();
|
114 |
-
foreach ($languages as $language):
|
115 |
-
$value = $values[$language];
|
116 |
-
$id = $field['id'] . "-$language";
|
117 |
-
$name = $field['name'] . "[$language]";
|
118 |
-
if ($language === end($languages)) {
|
119 |
-
$switch_class .= ' current-language';
|
120 |
-
}
|
121 |
-
|
122 |
-
?>
|
123 |
-
<div id="wp-<?php echo $id; ?>-wrap" class="acf-wysiwyg-wrap wp-core-ui wp-editor-wrap <?php echo $switch_class; ?>" data-toolbar="<?php echo $field['toolbar']; ?>" data-upload="<?php echo $field['media_upload']; ?>" data-language="<?php echo $language; ?>">
|
124 |
-
<div id="wp-<?php echo $id; ?>-editor-tools" class="wp-editor-tools hide-if-no-js">
|
125 |
-
<?php if( $field['media_upload'] ): ?>
|
126 |
-
<div id="wp-<?php echo $id; ?>-media-buttons" class="wp-media-buttons">
|
127 |
-
<?php do_action( 'media_buttons' ); ?>
|
128 |
-
</div>
|
129 |
-
<?php endif; ?>
|
130 |
-
<?php if( user_can_richedit() && $show_tabs ): ?>
|
131 |
-
<div class="wp-editor-tabs">
|
132 |
-
<a id="<?php echo $id; ?>-html" class="wp-switch-editor switch-html" onclick="switchEditors.switchto(this);"><?php echo _x( 'Text', 'Name for the Text editor tab (formerly HTML)' ); ?></a>
|
133 |
-
<a id="<?php echo $id; ?>-tmce" class="wp-switch-editor switch-tmce" onclick="switchEditors.switchto(this);"><?php echo __('Visual'); ?></a>
|
134 |
-
</div>
|
135 |
-
<?php endif; ?>
|
136 |
-
</div>
|
137 |
-
<div id="wp-<?php echo $id; ?>-editor-container" class="wp-editor-container">
|
138 |
-
<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>
|
139 |
-
</div>
|
140 |
-
</div>
|
141 |
-
<?php endforeach;
|
142 |
-
|
143 |
-
echo '</div>';
|
144 |
-
}
|
145 |
-
|
146 |
-
|
147 |
-
function input_form_data( $args ) {
|
148 |
-
|
149 |
-
// vars
|
150 |
-
$json = array();
|
151 |
-
$toolbars = $this->get_toolbars();
|
152 |
-
|
153 |
-
|
154 |
-
// loop through toolbars
|
155 |
-
if( !empty($toolbars) ) {
|
156 |
-
|
157 |
-
foreach( $toolbars as $label => $rows ) {
|
158 |
-
|
159 |
-
// vars
|
160 |
-
$label = sanitize_title( $label );
|
161 |
-
$label = str_replace('-', '_', $label);
|
162 |
-
|
163 |
-
|
164 |
-
// append to $json
|
165 |
-
$json[ $label ] = array();
|
166 |
-
|
167 |
-
|
168 |
-
// convert to strings
|
169 |
-
if( !empty($rows) ) {
|
170 |
-
|
171 |
-
foreach( $rows as $i => $row ) {
|
172 |
-
|
173 |
-
$json[ $label ][ $i ] = implode(',', $row);
|
174 |
-
|
175 |
-
}
|
176 |
-
// foreach
|
177 |
-
|
178 |
-
}
|
179 |
-
// if
|
180 |
-
|
181 |
-
}
|
182 |
-
// foreach
|
183 |
-
|
184 |
-
}
|
185 |
-
// if
|
186 |
-
|
187 |
-
?>
|
188 |
-
<script type="text/javascript">
|
189 |
-
(function($) {
|
190 |
-
|
191 |
-
acf.fields.qtranslate_wysiwyg.toolbars = <?php echo json_encode( $json ); ?>;
|
192 |
-
|
193 |
-
})(jQuery);
|
194 |
-
</script>
|
195 |
-
<?php
|
196 |
-
|
197 |
-
}
|
198 |
-
|
199 |
-
|
200 |
-
function update_value($value, $post_id, $field)
|
201 |
-
{
|
202 |
-
if (acf_qtranslate_enabled()) {
|
203 |
-
$value = qtrans_join($value);
|
204 |
-
}
|
205 |
-
|
206 |
-
return $value;
|
207 |
-
}
|
208 |
-
|
209 |
}
|
210 |
|
211 |
|
36 |
acf_field::__construct();
|
37 |
}
|
38 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
}
|
40 |
|
41 |
|