Version Description
- Core: Added qTranslate suffix to field labels
- Core: (asedano) Added ACF5 support for Post Object field
- Bug Fix: Fixed issue with File fields
Download this release
Release Info
Developer | funkjedi |
Plugin | ACF qTranslate |
Version | 1.7.25 |
Comparing to | |
See all releases |
Code changes from version 1.7.24 to 1.7.25
- acf-qtranslate.php +1 -1
- assets/acf_5/main.js +99 -78
- assets/acf_5/qtranslatex.js +11 -4
- assets/common.css +17 -6
- readme.txt +9 -4
- src/acf_5/acf.php +11 -5
- src/acf_5/fields/file.php +1 -1
- src/acf_5/fields/image.php +13 -13
- src/acf_5/fields/post_object.php +164 -0
- src/acf_5/fields/text.php +1 -1
- src/acf_5/fields/textarea.php +1 -1
- src/acf_5/fields/url.php +92 -68
- src/acf_5/fields/wysiwyg.php +1 -1
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.25
|
7 |
Author: funkjedi
|
8 |
Author URI: http://funkjedi.com
|
9 |
License: GPLv2 or later
|
assets/acf_5/main.js
CHANGED
@@ -1,85 +1,154 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
type: 'qtranslate_image',
|
6 |
|
7 |
$control: function(){
|
8 |
-
return this.$('.acf-
|
9 |
},
|
10 |
|
11 |
$input: function(){
|
12 |
-
return this.$('.acf-
|
13 |
},
|
14 |
|
15 |
render: function( attachment ){
|
16 |
-
var control = this.$control();
|
17 |
|
18 |
// vars
|
19 |
attachment = this.validateAttachment( attachment );
|
20 |
|
21 |
// update image
|
22 |
-
control.find('img').attr({
|
23 |
-
src: attachment.
|
24 |
alt: attachment.alt,
|
25 |
title: attachment.title
|
26 |
});
|
27 |
|
|
|
|
|
|
|
|
|
|
|
28 |
// vars
|
29 |
var val = attachment.id || '';
|
30 |
|
31 |
// update val
|
32 |
-
|
33 |
|
34 |
// update class
|
35 |
if( val ) {
|
36 |
-
control.addClass('has-value');
|
37 |
} else {
|
38 |
-
control.removeClass('has-value');
|
39 |
}
|
40 |
}
|
41 |
}));
|
42 |
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
render: function( attachment ){
|
49 |
-
|
50 |
-
|
51 |
// vars
|
52 |
attachment = this.validateAttachment( attachment );
|
53 |
|
54 |
// update image
|
55 |
-
this.$control().find('
|
56 |
-
src: attachment.
|
57 |
alt: attachment.alt,
|
58 |
title: attachment.title
|
59 |
});
|
60 |
|
61 |
-
// update elements
|
62 |
-
control.find('[data-name="title"]').text( attachment.title );
|
63 |
-
control.find('[data-name="filename"]').text( attachment.filename ).attr( 'href', attachment.url );
|
64 |
-
control.find('[data-name="filesize"]').text( attachment.filesizeHumanReadable );
|
65 |
-
|
66 |
// vars
|
67 |
var val = attachment.id || '';
|
68 |
|
69 |
// update val
|
70 |
-
|
71 |
|
72 |
// update class
|
73 |
if( val ) {
|
74 |
-
control.addClass('has-value');
|
75 |
} else {
|
76 |
-
control.removeClass('has-value');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
}
|
78 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
}));
|
80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
acf.registerFieldType(acf.models.WysiwygField.extend({
|
82 |
type: 'qtranslate_wysiwyg',
|
|
|
83 |
initializeEditor: function() {
|
84 |
var self = this;
|
85 |
this.$('.acf-editor-wrap').each(function() {
|
@@ -114,51 +183,3 @@ acf.registerFieldType(acf.models.WysiwygField.extend({
|
|
114 |
}
|
115 |
}));
|
116 |
|
117 |
-
acf.registerFieldType(acf.models.UrlField.extend({
|
118 |
-
type: 'qtranslate_url',
|
119 |
-
$control: function(){
|
120 |
-
return this.$('.acf-input-wrap.current-language');
|
121 |
-
},
|
122 |
-
|
123 |
-
$input: function(){
|
124 |
-
return this.$('.acf-input-wrap.current-language input[type="url"]');
|
125 |
-
},
|
126 |
-
isValid: function(){
|
127 |
-
|
128 |
-
// vars
|
129 |
-
var val = this.val();
|
130 |
-
|
131 |
-
// bail early if no val
|
132 |
-
if( !val ) {
|
133 |
-
return false;
|
134 |
-
}
|
135 |
-
|
136 |
-
// url
|
137 |
-
if( val.indexOf('://') !== -1 ) {
|
138 |
-
return true;
|
139 |
-
}
|
140 |
-
|
141 |
-
// protocol relative url
|
142 |
-
if( val.indexOf('//') === 0 ) {
|
143 |
-
return true;
|
144 |
-
}
|
145 |
-
|
146 |
-
// relative url
|
147 |
-
if( val.indexOf('/') === 0 ) {
|
148 |
-
return true;
|
149 |
-
}
|
150 |
-
|
151 |
-
// return
|
152 |
-
return false;
|
153 |
-
},
|
154 |
-
|
155 |
-
render: function(){
|
156 |
-
|
157 |
-
// add class
|
158 |
-
if( this.isValid() ) {
|
159 |
-
this.$control().addClass('-valid');
|
160 |
-
} else {
|
161 |
-
this.$control().removeClass('-valid');
|
162 |
-
}
|
163 |
-
},
|
164 |
-
}));
|
1 |
+
|
2 |
+
|
3 |
+
acf.registerFieldType(acf.models.FileField.extend({
|
4 |
+
type: 'qtranslate_file',
|
|
|
5 |
|
6 |
$control: function(){
|
7 |
+
return this.$('.acf-file-uploader.current-language');
|
8 |
},
|
9 |
|
10 |
$input: function(){
|
11 |
+
return this.$('.acf-file-uploader.current-language input[type="hidden"]');
|
12 |
},
|
13 |
|
14 |
render: function( attachment ){
|
|
|
15 |
|
16 |
// vars
|
17 |
attachment = this.validateAttachment( attachment );
|
18 |
|
19 |
// update image
|
20 |
+
this.$control().find('img').attr({
|
21 |
+
src: attachment.icon,
|
22 |
alt: attachment.alt,
|
23 |
title: attachment.title
|
24 |
});
|
25 |
|
26 |
+
// update elements
|
27 |
+
this.$control().find('[data-name="title"]').text( attachment.title );
|
28 |
+
this.$control().find('[data-name="filename"]').text( attachment.filename ).attr( 'href', attachment.url );
|
29 |
+
this.$control().find('[data-name="filesize"]').text( attachment.filesizeHumanReadable );
|
30 |
+
|
31 |
// vars
|
32 |
var val = attachment.id || '';
|
33 |
|
34 |
// update val
|
35 |
+
acf.val( this.$input(), val );
|
36 |
|
37 |
// update class
|
38 |
if( val ) {
|
39 |
+
this.$control().addClass('has-value');
|
40 |
} else {
|
41 |
+
this.$control().removeClass('has-value');
|
42 |
}
|
43 |
}
|
44 |
}));
|
45 |
|
46 |
+
|
47 |
+
acf.registerFieldType(acf.models.ImageField.extend({
|
48 |
+
type: 'qtranslate_image',
|
49 |
+
|
50 |
+
$control: function(){
|
51 |
+
return this.$('.acf-image-uploader.current-language');
|
52 |
+
},
|
53 |
+
|
54 |
+
$input: function(){
|
55 |
+
return this.$('.acf-image-uploader.current-language input[type="hidden"]');
|
56 |
+
},
|
57 |
+
|
58 |
render: function( attachment ){
|
59 |
+
|
|
|
60 |
// vars
|
61 |
attachment = this.validateAttachment( attachment );
|
62 |
|
63 |
// update image
|
64 |
+
this.$control().find('img').attr({
|
65 |
+
src: attachment.url,
|
66 |
alt: attachment.alt,
|
67 |
title: attachment.title
|
68 |
});
|
69 |
|
|
|
|
|
|
|
|
|
|
|
70 |
// vars
|
71 |
var val = attachment.id || '';
|
72 |
|
73 |
// update val
|
74 |
+
this.val( val );
|
75 |
|
76 |
// update class
|
77 |
if( val ) {
|
78 |
+
this.$control().addClass('has-value');
|
79 |
} else {
|
80 |
+
this.$control().removeClass('has-value');
|
81 |
+
}
|
82 |
+
}
|
83 |
+
}));
|
84 |
+
|
85 |
+
|
86 |
+
acf.registerFieldType(acf.models.PostObjectField.extend({
|
87 |
+
type: 'qtranslate_post_object',
|
88 |
+
|
89 |
+
$input: function(){
|
90 |
+
return this.$('.acf-post-object.current-language select');
|
91 |
+
},
|
92 |
+
|
93 |
+
initialize: function(){
|
94 |
+
var self = this;
|
95 |
+
|
96 |
+
// vars
|
97 |
+
var $select = this.$input();
|
98 |
+
|
99 |
+
// inherit data
|
100 |
+
this.inherit( $select );
|
101 |
+
|
102 |
+
// select2
|
103 |
+
if( this.get('ui') ) {
|
104 |
+
|
105 |
+
// populate ajax_data (allowing custom attribute to already exist)
|
106 |
+
var ajaxAction = this.get('ajax_action');
|
107 |
+
if( !ajaxAction ) {
|
108 |
+
ajaxAction = 'acf/fields/' + this.get('type') + '/query';
|
109 |
+
}
|
110 |
+
|
111 |
+
// select2
|
112 |
+
this.select2 = [];
|
113 |
+
this.$('.acf-post-object select').each(function() {
|
114 |
+
self.select2.push(acf.newSelect2(self.$(this), {
|
115 |
+
field: self,
|
116 |
+
ajax: self.get('ajax'),
|
117 |
+
multiple: self.get('multiple'),
|
118 |
+
placeholder: self.get('placeholder'),
|
119 |
+
allowNull: self.get('allow_null'),
|
120 |
+
ajaxAction: ajaxAction,
|
121 |
+
}));
|
122 |
+
});
|
123 |
}
|
124 |
},
|
125 |
+
|
126 |
+
onRemove: function(){
|
127 |
+
if( this.select2 ) {
|
128 |
+
for (var i=0; i < this.select2.length; i++) {
|
129 |
+
this.select2[i].destroy();
|
130 |
+
}
|
131 |
+
}
|
132 |
+
}
|
133 |
}));
|
134 |
|
135 |
+
|
136 |
+
acf.registerFieldType(acf.models.UrlField.extend({
|
137 |
+
type: 'qtranslate_url',
|
138 |
+
|
139 |
+
$control: function(){
|
140 |
+
return this.$('.acf-input-wrap.current-language');
|
141 |
+
},
|
142 |
+
|
143 |
+
$input: function(){
|
144 |
+
return this.$('.acf-input-wrap.current-language input[type="url"]');
|
145 |
+
}
|
146 |
+
}));
|
147 |
+
|
148 |
+
|
149 |
acf.registerFieldType(acf.models.WysiwygField.extend({
|
150 |
type: 'qtranslate_wysiwyg',
|
151 |
+
|
152 |
initializeEditor: function() {
|
153 |
var self = this;
|
154 |
this.$('.acf-editor-wrap').each(function() {
|
183 |
}
|
184 |
}));
|
185 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/acf_5/qtranslatex.js
CHANGED
@@ -1,5 +1,6 @@
|
|
1 |
|
2 |
(function(){
|
|
|
3 |
var windowLoadCompleted = false;
|
4 |
jQuery(window).load(function() {
|
5 |
|
@@ -88,16 +89,22 @@
|
|
88 |
// Watch and remove content hooks when fields are removed
|
89 |
// however ACF removes the elements from the DOM early so
|
90 |
// we must hook into handler and perform updates there
|
91 |
-
var
|
92 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
var row = ($el.$el || $el).closest('.acf-row'); // support old versions of ACF5PRO as well
|
94 |
row.find(_.toArray(field_types).join(',')).filter('.qtranxs-translatable').each(function() {
|
95 |
qTranslateConfig.qtx.removeContentHook(this);
|
96 |
});
|
97 |
// call the original handler
|
98 |
-
|
99 |
};
|
100 |
-
|
101 |
});
|
102 |
|
103 |
})();
|
1 |
|
2 |
(function(){
|
3 |
+
|
4 |
var windowLoadCompleted = false;
|
5 |
jQuery(window).load(function() {
|
6 |
|
89 |
// Watch and remove content hooks when fields are removed
|
90 |
// however ACF removes the elements from the DOM early so
|
91 |
// we must hook into handler and perform updates there
|
92 |
+
var repeaterFieldRemove;
|
93 |
+
|
94 |
+
if (acf.models) {
|
95 |
+
repeaterFieldRemove = acf.models.RepeaterField.prototype.remove;
|
96 |
+
} else {
|
97 |
+
repeaterFieldRemove = acf.fields.repeater.remove;
|
98 |
+
}
|
99 |
+
|
100 |
+
function repeaterRemove($el) {
|
101 |
var row = ($el.$el || $el).closest('.acf-row'); // support old versions of ACF5PRO as well
|
102 |
row.find(_.toArray(field_types).join(',')).filter('.qtranxs-translatable').each(function() {
|
103 |
qTranslateConfig.qtx.removeContentHook(this);
|
104 |
});
|
105 |
// call the original handler
|
106 |
+
repeaterFieldRemove.call(this, $el);
|
107 |
};
|
|
|
108 |
});
|
109 |
|
110 |
})();
|
assets/common.css
CHANGED
@@ -35,11 +35,14 @@
|
|
35 |
z-index: 100;
|
36 |
border: 1px solid #ededed;
|
37 |
margin-left: -1px;
|
38 |
-
padding: 6px 7px;
|
39 |
text-transform: uppercase;
|
40 |
cursor: pointer
|
41 |
}
|
42 |
|
|
|
|
|
|
|
|
|
43 |
.multi-language-field input,
|
44 |
.multi-language-field input:focus,
|
45 |
.multi-language-field textarea,
|
@@ -67,10 +70,11 @@
|
|
67 |
.multi-language-field > textarea,
|
68 |
.multi-language-field > fieldset,
|
69 |
.multi-language-field .acf_wysiwyg,
|
70 |
-
.multi-language-field .acf-
|
71 |
.multi-language-field .acf-editor-wrap,
|
72 |
.multi-language-field .acf-file-uploader,
|
73 |
-
.multi-language-field .acf-image-uploader
|
|
|
74 |
|
75 |
.multi-language-field .acf_input input,
|
76 |
.multi-language-field .acf_input textarea,
|
@@ -80,8 +84,9 @@
|
|
80 |
margin-top: 0;
|
81 |
}
|
82 |
|
83 |
-
.
|
84 |
-
|
|
|
85 |
}
|
86 |
|
87 |
.multi-language-field .acf-file-uploader,
|
@@ -104,4 +109,10 @@
|
|
104 |
.multi-language-field-wysiwyg .wp-switch-editor.current-language {
|
105 |
background-color: #f5f5f5;
|
106 |
border-bottom-color: #f5f5f5;
|
107 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
35 |
z-index: 100;
|
36 |
border: 1px solid #ededed;
|
37 |
margin-left: -1px;
|
|
|
38 |
text-transform: uppercase;
|
39 |
cursor: pointer
|
40 |
}
|
41 |
|
42 |
+
.multi-language-field > .wp-switch-editor:last-of-type {
|
43 |
+
margin-left: 5px;
|
44 |
+
}
|
45 |
+
|
46 |
.multi-language-field input,
|
47 |
.multi-language-field input:focus,
|
48 |
.multi-language-field textarea,
|
70 |
.multi-language-field > textarea,
|
71 |
.multi-language-field > fieldset,
|
72 |
.multi-language-field .acf_wysiwyg,
|
73 |
+
.multi-language-field .acf-post-object,
|
74 |
.multi-language-field .acf-editor-wrap,
|
75 |
.multi-language-field .acf-file-uploader,
|
76 |
+
.multi-language-field .acf-image-uploader,
|
77 |
+
.multi-language-field .acf-url > input { display: none }
|
78 |
|
79 |
.multi-language-field .acf_input input,
|
80 |
.multi-language-field .acf_input textarea,
|
84 |
margin-top: 0;
|
85 |
}
|
86 |
|
87 |
+
.multi-language-field .acf-url {
|
88 |
+
position: relative;
|
89 |
+
clear: both;
|
90 |
}
|
91 |
|
92 |
.multi-language-field .acf-file-uploader,
|
109 |
.multi-language-field-wysiwyg .wp-switch-editor.current-language {
|
110 |
background-color: #f5f5f5;
|
111 |
border-bottom-color: #f5f5f5;
|
112 |
+
}
|
113 |
+
|
114 |
+
.multi-language-field-post-object .select2-container--default .select2-selection--multiple,
|
115 |
+
.multi-language-field-post-object .select2-container--default.select2-container--focus .select2-selection--multiple {
|
116 |
+
border-color: #ddd;
|
117 |
+
border-radius: 0;
|
118 |
+
}
|
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.5.0
|
5 |
-
Tested up to: 4.
|
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 |
|
@@ -55,6 +55,11 @@ The plugin is based on code samples posted to the ACF support forums by taeo bac
|
|
55 |
|
56 |
== Changelog ==
|
57 |
|
|
|
|
|
|
|
|
|
|
|
58 |
= 1.7.24 =
|
59 |
* Core: (asedano) Added ACF5 support for URL field
|
60 |
* Bug Fix: (asedano) Added ACF 5.7 compatibility
|
@@ -188,4 +193,4 @@ The plugin is based on code samples posted to the ACF support forums by taeo bac
|
|
188 |
|
189 |
== Upgrade Notice ==
|
190 |
|
191 |
-
Bug Fix: Fixed issue with
|
2 |
Contributors: funkjedi
|
3 |
Tags: acf, advanced custom fields, qtranslate, add-on, admin
|
4 |
Requires at least: 3.5.0
|
5 |
+
Tested up to: 4.9.8
|
6 |
+
Version: 1.7.25
|
7 |
+
Stable tag: 1.7.25
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
55 |
|
56 |
== Changelog ==
|
57 |
|
58 |
+
= 1.7.25 =
|
59 |
+
* Core: Added qTranslate suffix to field labels
|
60 |
+
* Core: (asedano) Added ACF5 support for Post Object field
|
61 |
+
* Bug Fix: Fixed issue with File fields
|
62 |
+
|
63 |
= 1.7.24 =
|
64 |
* Core: (asedano) Added ACF5 support for URL field
|
65 |
* Bug Fix: (asedano) Added ACF 5.7 compatibility
|
193 |
|
194 |
== Upgrade Notice ==
|
195 |
|
196 |
+
Bug Fix: Fixed issue with File fields
|
src/acf_5/acf.php
CHANGED
@@ -29,17 +29,19 @@ class acf_qtranslate_acf_5 implements acf_qtranslate_acf_interface {
|
|
29 |
public function include_fields() {
|
30 |
require_once ACF_QTRANSLATE_PLUGIN_DIR . 'src/acf_5/fields/file.php';
|
31 |
require_once ACF_QTRANSLATE_PLUGIN_DIR . 'src/acf_5/fields/image.php';
|
|
|
32 |
require_once ACF_QTRANSLATE_PLUGIN_DIR . 'src/acf_5/fields/text.php';
|
33 |
require_once ACF_QTRANSLATE_PLUGIN_DIR . 'src/acf_5/fields/textarea.php';
|
34 |
-
require_once ACF_QTRANSLATE_PLUGIN_DIR . 'src/acf_5/fields/wysiwyg.php';
|
35 |
require_once ACF_QTRANSLATE_PLUGIN_DIR . 'src/acf_5/fields/url.php';
|
|
|
36 |
|
|
|
|
|
|
|
37 |
acf()->fields->register_field_type(new acf_qtranslate_acf_5_text($this->plugin));
|
38 |
acf()->fields->register_field_type(new acf_qtranslate_acf_5_textarea($this->plugin));
|
39 |
-
acf()->fields->register_field_type(new acf_qtranslate_acf_5_wysiwyg($this->plugin));
|
40 |
-
acf()->fields->register_field_type(new acf_qtranslate_acf_5_image($this->plugin));
|
41 |
-
acf()->fields->register_field_type(new acf_qtranslate_acf_5_file($this->plugin));
|
42 |
acf()->fields->register_field_type(new acf_qtranslate_acf_5_url($this->plugin));
|
|
|
43 |
}
|
44 |
|
45 |
/**
|
@@ -56,7 +58,9 @@ class acf_qtranslate_acf_5 implements acf_qtranslate_acf_interface {
|
|
56 |
public function format_value($value) {
|
57 |
if (is_string($value)) {
|
58 |
$value = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($value);
|
|
|
59 |
}
|
|
|
60 |
return $value;
|
61 |
}
|
62 |
|
@@ -99,9 +103,11 @@ class acf_qtranslate_acf_5 implements acf_qtranslate_acf_interface {
|
|
99 |
'flexible_content',
|
100 |
'qtranslate_file',
|
101 |
'qtranslate_image',
|
|
|
102 |
'qtranslate_text',
|
103 |
'qtranslate_textarea',
|
104 |
-
'
|
|
|
105 |
);
|
106 |
|
107 |
foreach (acf_get_field_groups($filter) as $field_group) {
|
29 |
public function include_fields() {
|
30 |
require_once ACF_QTRANSLATE_PLUGIN_DIR . 'src/acf_5/fields/file.php';
|
31 |
require_once ACF_QTRANSLATE_PLUGIN_DIR . 'src/acf_5/fields/image.php';
|
32 |
+
require_once ACF_QTRANSLATE_PLUGIN_DIR . 'src/acf_5/fields/post_object.php';
|
33 |
require_once ACF_QTRANSLATE_PLUGIN_DIR . 'src/acf_5/fields/text.php';
|
34 |
require_once ACF_QTRANSLATE_PLUGIN_DIR . 'src/acf_5/fields/textarea.php';
|
|
|
35 |
require_once ACF_QTRANSLATE_PLUGIN_DIR . 'src/acf_5/fields/url.php';
|
36 |
+
require_once ACF_QTRANSLATE_PLUGIN_DIR . 'src/acf_5/fields/wysiwyg.php';
|
37 |
|
38 |
+
acf()->fields->register_field_type(new acf_qtranslate_acf_5_file($this->plugin));
|
39 |
+
acf()->fields->register_field_type(new acf_qtranslate_acf_5_image($this->plugin));
|
40 |
+
acf()->fields->register_field_type(new acf_qtranslate_acf_5_post_object($this->plugin));
|
41 |
acf()->fields->register_field_type(new acf_qtranslate_acf_5_text($this->plugin));
|
42 |
acf()->fields->register_field_type(new acf_qtranslate_acf_5_textarea($this->plugin));
|
|
|
|
|
|
|
43 |
acf()->fields->register_field_type(new acf_qtranslate_acf_5_url($this->plugin));
|
44 |
+
acf()->fields->register_field_type(new acf_qtranslate_acf_5_wysiwyg($this->plugin));
|
45 |
}
|
46 |
|
47 |
/**
|
58 |
public function format_value($value) {
|
59 |
if (is_string($value)) {
|
60 |
$value = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($value);
|
61 |
+
$value = maybe_unserialize($value);
|
62 |
}
|
63 |
+
|
64 |
return $value;
|
65 |
}
|
66 |
|
103 |
'flexible_content',
|
104 |
'qtranslate_file',
|
105 |
'qtranslate_image',
|
106 |
+
'qtranslate_post_object',
|
107 |
'qtranslate_text',
|
108 |
'qtranslate_textarea',
|
109 |
+
'qtranslate_url',
|
110 |
+
'qtranslate_wysiwyg',
|
111 |
);
|
112 |
|
113 |
foreach (acf_get_field_groups($filter) as $field_group) {
|
src/acf_5/fields/file.php
CHANGED
@@ -47,7 +47,7 @@ class acf_qtranslate_acf_5_file extends acf_field_file {
|
|
47 |
|
48 |
// vars
|
49 |
$this->name = 'qtranslate_file';
|
50 |
-
$this->label = __("File",'acf');
|
51 |
$this->category = __("qTranslate", 'acf');
|
52 |
$this->defaults = array(
|
53 |
'return_format' => 'array',
|
47 |
|
48 |
// vars
|
49 |
$this->name = 'qtranslate_file';
|
50 |
+
$this->label = __("File (qTranslate)",'acf');
|
51 |
$this->category = __("qTranslate", 'acf');
|
52 |
$this->defaults = array(
|
53 |
'return_format' => 'array',
|
src/acf_5/fields/image.php
CHANGED
@@ -8,6 +8,7 @@ class acf_qtranslate_acf_5_image extends acf_field_image {
|
|
8 |
*/
|
9 |
protected $plugin;
|
10 |
|
|
|
11 |
/*
|
12 |
* __construct
|
13 |
*
|
@@ -31,23 +32,22 @@ class acf_qtranslate_acf_5_image extends acf_field_image {
|
|
31 |
}
|
32 |
|
33 |
/*
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
function initialize() {
|
47 |
|
48 |
// vars
|
49 |
$this->name = 'qtranslate_image';
|
50 |
-
$this->label = __("Image",'acf');
|
51 |
$this->category = __("qTranslate", 'acf');
|
52 |
$this->defaults = array(
|
53 |
'return_format' => 'array',
|
8 |
*/
|
9 |
protected $plugin;
|
10 |
|
11 |
+
|
12 |
/*
|
13 |
* __construct
|
14 |
*
|
32 |
}
|
33 |
|
34 |
/*
|
35 |
+
* __construct
|
36 |
+
*
|
37 |
+
* This function will setup the field type data
|
38 |
+
*
|
39 |
+
* @type function
|
40 |
+
* @date 5/03/2014
|
41 |
+
* @since 5.0.0
|
42 |
+
*
|
43 |
+
* @param n/a
|
44 |
+
* @return n/a
|
45 |
+
*/
|
|
|
46 |
function initialize() {
|
47 |
|
48 |
// vars
|
49 |
$this->name = 'qtranslate_image';
|
50 |
+
$this->label = __("Image (qTranslate)",'acf');
|
51 |
$this->category = __("qTranslate", 'acf');
|
52 |
$this->defaults = array(
|
53 |
'return_format' => 'array',
|
src/acf_5/fields/post_object.php
ADDED
@@ -0,0 +1,164 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class acf_qtranslate_acf_5_post_object extends acf_field_post_object {
|
4 |
+
|
5 |
+
/**
|
6 |
+
* The plugin instance.
|
7 |
+
* @var \acf_qtranslate_plugin
|
8 |
+
*/
|
9 |
+
protected $plugin;
|
10 |
+
|
11 |
+
|
12 |
+
/*
|
13 |
+
* __construct
|
14 |
+
*
|
15 |
+
* This function will setup the field type data
|
16 |
+
*
|
17 |
+
* @type function
|
18 |
+
* @date 5/03/2014
|
19 |
+
* @since 5.0.0
|
20 |
+
*
|
21 |
+
* @param n/a
|
22 |
+
* @return n/a
|
23 |
+
*/
|
24 |
+
function __construct($plugin) {
|
25 |
+
$this->plugin = $plugin;
|
26 |
+
|
27 |
+
if (version_compare($plugin->acf_version(), '5.6.0') < 0) {
|
28 |
+
$this->initialize();
|
29 |
+
}
|
30 |
+
|
31 |
+
acf_field::__construct();
|
32 |
+
}
|
33 |
+
|
34 |
+
/*
|
35 |
+
* __construct
|
36 |
+
*
|
37 |
+
* This function will setup the field type data
|
38 |
+
*
|
39 |
+
* @type function
|
40 |
+
* @date 5/03/2014
|
41 |
+
* @since 5.0.0
|
42 |
+
*
|
43 |
+
* @param n/a
|
44 |
+
* @return n/a
|
45 |
+
*/
|
46 |
+
function initialize() {
|
47 |
+
|
48 |
+
// vars
|
49 |
+
$this->name = 'qtranslate_post_object';
|
50 |
+
$this->label = __("Post Object (qTranslate)",'acf');
|
51 |
+
$this->category = 'qTranslate';
|
52 |
+
$this->defaults = array(
|
53 |
+
'post_type' => array(),
|
54 |
+
'taxonomy' => array(),
|
55 |
+
'allow_null' => 0,
|
56 |
+
'multiple' => 0,
|
57 |
+
'return_format' => 'object',
|
58 |
+
'ui' => 1,
|
59 |
+
);
|
60 |
+
|
61 |
+
|
62 |
+
// extra
|
63 |
+
add_action('wp_ajax_acf/fields/qtranslate_post_object/query', array($this, 'ajax_query'));
|
64 |
+
add_action('wp_ajax_nopriv_acf/fields/qtranslate_post_object/query', array($this, 'ajax_query'));
|
65 |
+
|
66 |
+
}
|
67 |
+
|
68 |
+
/*
|
69 |
+
* render_field()
|
70 |
+
*
|
71 |
+
* Create the HTML interface for your field
|
72 |
+
*
|
73 |
+
* @param $field - an array holding all the field's data
|
74 |
+
*
|
75 |
+
* @type action
|
76 |
+
* @since 3.6
|
77 |
+
* @date 10/07/18
|
78 |
+
*/
|
79 |
+
function render_field($field) {
|
80 |
+
global $q_config;
|
81 |
+
$languages = qtrans_getSortedLanguages(true);
|
82 |
+
$values = array_map('maybe_unserialize', qtrans_split($field['value'], $quicktags = true));
|
83 |
+
$currentLanguage = $this->plugin->get_active_language();
|
84 |
+
|
85 |
+
// populate atts
|
86 |
+
$atts = array(
|
87 |
+
'id' => $field['id'],
|
88 |
+
'name' => $field['name'],
|
89 |
+
);
|
90 |
+
|
91 |
+
// render
|
92 |
+
echo '<div class="multi-language-field multi-language-field-post-object">';
|
93 |
+
|
94 |
+
foreach ($languages as $language) {
|
95 |
+
$class = ($language === $currentLanguage) ? 'wp-switch-editor current-language' : 'wp-switch-editor';
|
96 |
+
echo '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>';
|
97 |
+
}
|
98 |
+
|
99 |
+
foreach ($languages as $language) {
|
100 |
+
$class = ($language === $currentLanguage) ? 'acf-post-object current-language' : 'acf-post-object';
|
101 |
+
$field['id'] = $atts['id'] . "-$language";
|
102 |
+
$field['name'] = $atts['name'] . "[$language]";
|
103 |
+
$field['value'] = $values[$language];
|
104 |
+
|
105 |
+
echo '<div class="' . $class . '" data-language="' . $language . '">';
|
106 |
+
parent::render_field($field);
|
107 |
+
echo '</div>';
|
108 |
+
}
|
109 |
+
|
110 |
+
// return
|
111 |
+
echo '</div>';
|
112 |
+
}
|
113 |
+
|
114 |
+
/*
|
115 |
+
* format_value()
|
116 |
+
*
|
117 |
+
* This filter is appied to the $value after it is loaded from the db and before it is returned to the template
|
118 |
+
*
|
119 |
+
* @type filter
|
120 |
+
* @since 3.6
|
121 |
+
* @date 23/01/13
|
122 |
+
*
|
123 |
+
* @param $value (mixed) the value which was loaded from the database
|
124 |
+
* @param $post_id (mixed) the $post_id from which the value was loaded
|
125 |
+
* @param $field (array) the field array holding all the field options
|
126 |
+
*
|
127 |
+
* @return $value (mixed) the modified value
|
128 |
+
*/
|
129 |
+
function format_value($value, $post_id, $field) {
|
130 |
+
$value = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($value);
|
131 |
+
$value = maybe_unserialize($value);
|
132 |
+
|
133 |
+
return parent::format_value($value, $post_id, $field);
|
134 |
+
}
|
135 |
+
|
136 |
+
/*
|
137 |
+
* update_value()
|
138 |
+
*
|
139 |
+
* This filter is appied to the $value before it is updated in the db
|
140 |
+
*
|
141 |
+
* @type filter
|
142 |
+
* @since 3.6
|
143 |
+
* @date 23/01/13
|
144 |
+
*
|
145 |
+
* @param $value - the value which will be saved in the database
|
146 |
+
* @param $post_id - the $post_id of which the value will be saved
|
147 |
+
* @param $field - the field array holding all the field options
|
148 |
+
*
|
149 |
+
* @return $value - the modified value
|
150 |
+
*/
|
151 |
+
function update_value($values, $post_id, $field) {
|
152 |
+
|
153 |
+
// validate
|
154 |
+
if ( !is_array($values) ) return false;
|
155 |
+
|
156 |
+
foreach ($values as &$value) {
|
157 |
+
$value = parent::update_value($value, $post_id, $field);
|
158 |
+
$value = maybe_serialize($value);
|
159 |
+
}
|
160 |
+
|
161 |
+
return qtrans_join($values);
|
162 |
+
}
|
163 |
+
|
164 |
+
}
|
src/acf_5/fields/text.php
CHANGED
@@ -47,7 +47,7 @@ class acf_qtranslate_acf_5_text extends acf_field_text {
|
|
47 |
|
48 |
// vars
|
49 |
$this->name = 'qtranslate_text';
|
50 |
-
$this->label = __("Text",'acf');
|
51 |
$this->category = __("qTranslate",'acf');
|
52 |
$this->defaults = array(
|
53 |
'default_value' => '',
|
47 |
|
48 |
// vars
|
49 |
$this->name = 'qtranslate_text';
|
50 |
+
$this->label = __("Text (qTranslate)",'acf');
|
51 |
$this->category = __("qTranslate",'acf');
|
52 |
$this->defaults = array(
|
53 |
'default_value' => '',
|
src/acf_5/fields/textarea.php
CHANGED
@@ -47,7 +47,7 @@ class acf_qtranslate_acf_5_textarea extends acf_field_textarea {
|
|
47 |
|
48 |
// vars
|
49 |
$this->name = 'qtranslate_textarea';
|
50 |
-
$this->label = __("Text Area",'acf');
|
51 |
$this->category = __("qTranslate",'acf');
|
52 |
$this->defaults = array(
|
53 |
'default_value' => '',
|
47 |
|
48 |
// vars
|
49 |
$this->name = 'qtranslate_textarea';
|
50 |
+
$this->label = __("Text Area (qTranslate)",'acf');
|
51 |
$this->category = __("qTranslate",'acf');
|
52 |
$this->defaults = array(
|
53 |
'default_value' => '',
|
src/acf_5/fields/url.php
CHANGED
@@ -1,18 +1,57 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class acf_qtranslate_acf_5_url extends
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
function initialize() {
|
5 |
|
6 |
// vars
|
7 |
$this->name = 'qtranslate_url';
|
8 |
-
$this->label = __("Url",'acf');
|
9 |
$this->category = __("qTranslate",'acf');
|
10 |
$this->defaults = array(
|
11 |
'default_value' => '',
|
12 |
-
'maxlength' => '',
|
13 |
'placeholder' => '',
|
14 |
-
'prepend' => '',
|
15 |
-
'append' => ''
|
16 |
);
|
17 |
|
18 |
}
|
@@ -35,90 +74,75 @@ class acf_qtranslate_acf_5_url extends acf_qtranslate_acf_5_text {
|
|
35 |
$currentLanguage = $this->plugin->get_active_language();
|
36 |
|
37 |
// vars
|
38 |
-
$
|
39 |
-
$
|
40 |
-
$
|
|
|
41 |
|
42 |
-
// maxlength
|
43 |
-
if( $field['maxlength'] !== "" ) {
|
44 |
-
$o[] = 'maxlength';
|
45 |
-
}
|
46 |
|
47 |
-
//
|
48 |
-
$
|
49 |
-
|
50 |
-
$atts[ $k ] = $field[ $k ];
|
51 |
}
|
52 |
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
}
|
58 |
}
|
59 |
|
|
|
|
|
|
|
|
|
|
|
60 |
// render
|
61 |
-
$
|
62 |
|
63 |
foreach ($languages as $language) {
|
64 |
$class = ($language === $currentLanguage) ? 'wp-switch-editor current-language' : 'wp-switch-editor';
|
65 |
-
$
|
66 |
}
|
67 |
|
|
|
|
|
|
|
68 |
foreach ($languages as $language) {
|
69 |
$atts['class'] = $field['class'];
|
70 |
-
|
71 |
-
$atts['type'] = 'text';
|
72 |
-
$atts['name'] = $field['name'] . "[$language]";
|
73 |
-
$atts['value'] = $values[$language];
|
74 |
-
|
75 |
-
$container_class = 'acf-input-wrap acf-url';
|
76 |
if ($language === $currentLanguage) {
|
77 |
-
$
|
78 |
}
|
79 |
-
|
80 |
-
$
|
81 |
-
$
|
82 |
-
$
|
83 |
-
$
|
84 |
-
|
85 |
}
|
86 |
|
87 |
-
$
|
|
|
88 |
|
89 |
// return
|
90 |
-
echo $
|
91 |
}
|
92 |
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
} elseif ( strpos( $valor, '/' ) === 0 ) {
|
111 |
-
|
112 |
-
// relative url
|
113 |
-
|
114 |
-
} else {
|
115 |
-
|
116 |
-
$valid = __( 'Value must be a valid URL', 'acf' );
|
117 |
-
|
118 |
-
}
|
119 |
-
}
|
120 |
-
|
121 |
-
// return
|
122 |
-
return $valid;
|
123 |
}
|
|
|
124 |
}
|
1 |
<?php
|
2 |
|
3 |
+
class acf_qtranslate_acf_5_url extends acf_field_url {
|
4 |
+
|
5 |
+
/**
|
6 |
+
* The plugin instance.
|
7 |
+
* @var \acf_qtranslate\plugin
|
8 |
+
*/
|
9 |
+
protected $plugin;
|
10 |
+
|
11 |
+
|
12 |
+
/*
|
13 |
+
* __construct
|
14 |
+
*
|
15 |
+
* This function will setup the field type data
|
16 |
+
*
|
17 |
+
* @type function
|
18 |
+
* @date 5/03/2014
|
19 |
+
* @since 5.0.0
|
20 |
+
*
|
21 |
+
* @param n/a
|
22 |
+
* @return n/a
|
23 |
+
*/
|
24 |
+
function __construct($plugin) {
|
25 |
+
$this->plugin = $plugin;
|
26 |
+
|
27 |
+
if (version_compare($plugin->acf_version(), '5.6.0') < 0) {
|
28 |
+
$this->initialize();
|
29 |
+
}
|
30 |
+
|
31 |
+
acf_field::__construct();
|
32 |
+
}
|
33 |
+
|
34 |
+
/*
|
35 |
+
* initialize
|
36 |
+
*
|
37 |
+
* This function will setup the field type data
|
38 |
+
*
|
39 |
+
* @type function
|
40 |
+
* @date 5/03/2014
|
41 |
+
* @since 5.0.0
|
42 |
+
*
|
43 |
+
* @param n/a
|
44 |
+
* @return n/a
|
45 |
+
*/
|
46 |
function initialize() {
|
47 |
|
48 |
// vars
|
49 |
$this->name = 'qtranslate_url';
|
50 |
+
$this->label = __("Url (qTranslate)",'acf');
|
51 |
$this->category = __("qTranslate",'acf');
|
52 |
$this->defaults = array(
|
53 |
'default_value' => '',
|
|
|
54 |
'placeholder' => '',
|
|
|
|
|
55 |
);
|
56 |
|
57 |
}
|
74 |
$currentLanguage = $this->plugin->get_active_language();
|
75 |
|
76 |
// vars
|
77 |
+
$atts = array();
|
78 |
+
$keys = array( 'type', 'id', 'class', 'name', 'value', 'placeholder', 'pattern' );
|
79 |
+
$keys2 = array( 'readonly', 'disabled', 'required' );
|
80 |
+
$html = '';
|
81 |
|
|
|
|
|
|
|
|
|
82 |
|
83 |
+
// atts (value="123")
|
84 |
+
foreach( $keys as $k ) {
|
85 |
+
if( isset($field[ $k ]) ) $atts[ $k ] = $field[ $k ];
|
|
|
86 |
}
|
87 |
|
88 |
+
|
89 |
+
// atts2 (disabled="disabled")
|
90 |
+
foreach( $keys2 as $k ) {
|
91 |
+
if( !empty($field[ $k ]) ) $atts[ $k ] = $k;
|
|
|
92 |
}
|
93 |
|
94 |
+
|
95 |
+
// remove empty atts
|
96 |
+
$atts = acf_clean_atts( $atts );
|
97 |
+
|
98 |
+
|
99 |
// render
|
100 |
+
$html .= '<div class="acf-input-wrap multi-language-field">';
|
101 |
|
102 |
foreach ($languages as $language) {
|
103 |
$class = ($language === $currentLanguage) ? 'wp-switch-editor current-language' : 'wp-switch-editor';
|
104 |
+
$html .= '<a class="' . $class . '" data-language="' . $language . '">' . $q_config['language_name'][$language] . '</a>';
|
105 |
}
|
106 |
|
107 |
+
$html .= '<div class="acf-url">';
|
108 |
+
$html .= '<i class="acf-icon -globe -small"></i>';
|
109 |
+
|
110 |
foreach ($languages as $language) {
|
111 |
$atts['class'] = $field['class'];
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
if ($language === $currentLanguage) {
|
113 |
+
$atts['class'] .= ' current-language';
|
114 |
}
|
115 |
+
$atts['type'] = 'url';
|
116 |
+
$atts['name'] = $field['name'] . "[$language]";
|
117 |
+
$atts['value'] = $values[$language];
|
118 |
+
$atts['data-language'] = $language;
|
119 |
+
$html .= acf_get_text_input( $atts );
|
|
|
120 |
}
|
121 |
|
122 |
+
$html .= '</div>';
|
123 |
+
$html .= '</div>';
|
124 |
|
125 |
// return
|
126 |
+
echo $html;
|
127 |
}
|
128 |
|
129 |
+
/*
|
130 |
+
* update_value()
|
131 |
+
*
|
132 |
+
* This filter is appied to the $value before it is updated in the db
|
133 |
+
*
|
134 |
+
* @type filter
|
135 |
+
* @since 3.6
|
136 |
+
* @date 23/01/13
|
137 |
+
*
|
138 |
+
* @param $value - the value which will be saved in the database
|
139 |
+
* @param $post_id - the $post_id of which the value will be saved
|
140 |
+
* @param $field - the field array holding all the field options
|
141 |
+
*
|
142 |
+
* @return $value - the modified value
|
143 |
+
*/
|
144 |
+
function update_value($value, $post_id, $field) {
|
145 |
+
return qtrans_join($value);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
146 |
}
|
147 |
+
|
148 |
}
|
src/acf_5/fields/wysiwyg.php
CHANGED
@@ -49,7 +49,7 @@ class acf_qtranslate_acf_5_wysiwyg extends acf_field_wysiwyg {
|
|
49 |
|
50 |
// vars
|
51 |
$this->name = 'qtranslate_wysiwyg';
|
52 |
-
$this->label = __("Wysiwyg Editor",'acf');
|
53 |
$this->category = __("qTranslate",'acf');
|
54 |
$this->defaults = array(
|
55 |
'tabs' => 'all',
|
49 |
|
50 |
// vars
|
51 |
$this->name = 'qtranslate_wysiwyg';
|
52 |
+
$this->label = __("Wysiwyg Editor (qTranslate)",'acf');
|
53 |
$this->category = __("qTranslate",'acf');
|
54 |
$this->defaults = array(
|
55 |
'tabs' => 'all',
|