PluginProbe ʕ •ᴥ•ʔ
WPML Multilingual & Multicurrency for WooCommerce / trunk
WPML Multilingual & Multicurrency for WooCommerce vtrunk
5.5.7 5.3.8 5.3.9 5.4.3 5.4.4 5.4.5 5.5.1 5.5.1.1 5.5.2.2 5.5.2.3 5.5.3 5.5.3.1 5.5.4 5.5.5 5.5.6 trunk 0.9 1.0 1.1 1.2 1.3 1.4 1.5 2.0 2.2 2.3 2.3.1 2.3.2 3.0 3.0.1 3.1 3.2 3.2.1 3.2.2 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.4 3.4.1 3.4.2 3.4.3 3.5 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.6 3.6.1 3.6.10 3.6.11 3.6.2 3.6.3 3.6.4 3.6.5 3.6.5.1 3.6.6 3.6.7 3.6.8 3.6.9 3.7 3.7.1 3.7.10 3.7.11 3.7.12 3.7.13 3.7.14 3.7.15 3.7.16 3.7.2 3.7.3 3.7.4 3.7.5 3.7.6 3.7.7 3.7.8 3.7.9 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.9.0 3.9.1 3.9.1.1 3.9.2 3.9.3 3.9.4 3.9.5 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.10.4 4.11.2 4.11.3.2 4.11.5 4.11.6 4.12.1 4.12.4 4.12.5 4.12.6 4.2.0 4.2.0.1 4.2.1 4.2.1.1 4.2.10 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.7.1 4.2.8 4.2.8.1 4.2.9 4.3.0 4.3.1 4.3.2 4.3.2.1 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.4.0 4.4.1 4.4.2 4.4.2.1 4.5.0 4.6.0 4.6.1 4.6.2 4.6.2.1 4.6.3 4.6.5 4.6.6 4.6.7 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.7.6 4.7.7 4.7.8 4.7.9 4.8.0 4.9.0 4.9.1 5.0.1 5.0.2 5.1.1 5.1.2 5.1.3 5.2.0 5.2.1 5.3.2 5.3.3.1 5.3.4 5.3.5 5.3.6 5.3.7
woocommerce-multilingual / compatibility / WcTabManager / TranslationEditor / GroupsAndLabels.php
woocommerce-multilingual / compatibility / WcTabManager / TranslationEditor Last commit date
GroupsAndLabels.php 1 month ago
GroupsAndLabels.php
90 lines
1 <?php
2
3 namespace WCML\Compatibility\WcTabManager\TranslationEditor;
4
5 use WCML_Tab_Manager;
6 use WCML\TranslationJob\Hooks as TranslationJobHooks;
7 use WPML\FP\Obj;
8 use WPML\FP\Str;
9
10 class GroupsAndLabels implements \IWPML_Action {
11
12 const TAB_GROUP_SLUG = 'product-tab';
13 const TAB_GROUP_LABEL = 'Product Tab';
14
15 const DEFAULT_FIELD_LABEL = 'Field';
16 const TAB_CONTENT_LABEL = 'Content';
17
18 public function add_hooks() {
19 add_filter( 'wpml_tm_adjust_translation_fields', [ $this, 'adjustFields' ] );
20 }
21
22 public function adjustFields( $fields ) {
23 foreach ( $fields as &$field ) {
24 if ( Str::startsWith( WCML_Tab_Manager::TAB_FIELD_PREFIX, Obj::prop( 'field_type', $field ) ) ) {
25 $field = $this->adjustField( $field );
26 }
27 }
28
29 return $fields;
30 }
31
32 private function adjustField( $field ) {
33 $fieldData = Str::replace( WCML_Tab_Manager::TAB_FIELD_PREFIX, '', $field['field_type'] );
34
35 if ( Str::startsWith( WCML_Tab_Manager::TAB_FIELD_CORE_INTERFIX, $fieldData ) ) {
36 $field = $this->adjustCoreTabField( $field );
37 } elseif ( Str::startsWith( WCML_Tab_Manager::TAB_FIELD_PRODUCT_INTERFIX, $fieldData ) ) {
38 $field = $this->adjustProductTabField( $field );
39 }
40
41 return $field;
42 }
43
44 private function adjustCoreTabField( $field ) {
45 $fieldData = Str::replace( WCML_Tab_Manager::TAB_FIELD_PREFIX . WCML_Tab_Manager::TAB_FIELD_CORE_INTERFIX, '', $field['field_type'] );
46 $fieldParts = explode( ':', $fieldData );
47 $name = reset( $fieldParts );
48 $tabId = count( $fieldParts ) > 1 ? end( $fieldParts ) : false;
49
50 return $this->adjustTabField( $field, $name, $tabId );
51 }
52
53 private function adjustProductTabField( $field ) {
54 $fieldData = Str::replace( WCML_Tab_Manager::TAB_FIELD_PREFIX . WCML_Tab_Manager::TAB_FIELD_PRODUCT_INTERFIX, '', $field['field_type'] );
55 $fieldParts = explode( ':', $fieldData );
56 $name = count( $fieldParts ) > 1 ? end( $fieldParts ) : false;
57 $tabId = reset( $fieldParts );
58
59 return $this->adjustTabField( $field, $name, $tabId );
60 }
61
62 private function adjustTabField( $field, $name, $tabId ) {
63 $getTitle = function( $slug ) {
64 if ( empty( $slug ) ) {
65 return self::DEFAULT_FIELD_LABEL;
66 }
67 if ( 'description' === $slug ) {
68 return self::TAB_CONTENT_LABEL;
69 }
70 return apply_filters( 'wpml_labelize_string', $slug, 'TranslationJob' );
71 };
72
73 $getGroup = function( $id ) {
74 if ( empty( $id ) ) {
75 return self::TAB_GROUP_SLUG . '-0';
76 }
77 return self::TAB_GROUP_SLUG . '-' . $id;
78 };
79
80 $group = $getGroup( $tabId );
81
82 $field['title'] = $getTitle( $name );
83 $field['group'] = TranslationJobHooks::getTopLevelGroup();
84 $field['group'][ $group ] = self::TAB_GROUP_LABEL;
85
86 return $field;
87 }
88
89 }
90