| @@ -50,10 +50,14 @@ | ||
| 50 | 50 | type="text" id="<?php echo esc_attr($field_id); ?>" |
| 51 | 51 | value="<?php echo esc_attr(!empty(wmvc_show_data($field_id, $db_data, $field->default)) ? wmvc_show_data($field_id, $db_data, $field->default) : $field->empty_default); ?>" |
| 52 | 52 | > |
| 53 | 53 | <span class="suffix"><?php |
| 54 | + // Dynamic field values are registered in the translation catalog separately. | |
| 55 | + // phpcs:ignore WordPress.WP.I18n.NonSingularStringLiteralText | |
| 54 | 56 | echo esc_html__($field->prefix, 'wpdirectorykit'); |
| 55 | 57 | if(!empty($field->prefix) && !empty($field->suffix)) echo ' / '; |
| 58 | + // Dynamic field values are registered in the translation catalog separately. | |
| 59 | + // phpcs:ignore WordPress.WP.I18n.NonSingularStringLiteralText | |
| 56 | 60 | echo esc_html__($field->suffix, 'wpdirectorykit'); |
| 57 | 61 | ?></span> |
| 58 | 62 | <?php if(!empty($field->hint)):?> |
| 59 | 63 | <p class="wdk-hint"> |
| @@ -100,31 +104,59 @@ | ||
| 100 | 104 | |
| 101 | 105 | <script> |
| 102 | 106 | document.addEventListener('DOMContentLoaded', function() { |
| 103 | 107 | var input = document.getElementById('<?php echo esc_js($field_id); ?>'); |
| 104 | - if (input) { | |
| 105 | - var tribute = new Tribute({ | |
| 106 | - trigger: '{', | |
| 107 | - values: [ | |
| 108 | - <?php | |
| 109 | - $first = true; | |
| 110 | - foreach($fields_list as $value => $key) { | |
| 111 | - if(!$first) echo ","; | |
| 112 | - ?>{ key: <?php echo json_encode($key); ?>, value: <?php echo json_encode($value); ?> }<?php | |
| 113 | - $first = false; | |
| 114 | - } | |
| 108 | + | |
| 109 | + if (!input) { | |
| 110 | + return; | |
| 111 | + } | |
| 112 | + | |
| 113 | + var tribute = new Tribute({ | |
| 114 | + trigger: '{', | |
| 115 | + | |
| 116 | + values: [ | |
| 117 | + <?php | |
| 118 | + $first = true; | |
| 119 | + | |
| 120 | + foreach ($fields_list as $value => $key) { | |
| 121 | + if (!$first) { | |
| 122 | + echo ','; | |
| 123 | + } | |
| 115 | 124 | ?> |
| 116 | - ], | |
| 117 | - | |
| 118 | - // Insert with curly braces | |
| 119 | - selectTemplate: function (item) { | |
| 120 | - return '{' + item.original.value + '}'; | |
| 121 | - }, | |
| 122 | - menuItemTemplate: function (item) { | |
| 123 | - return item.string; // show key | |
| 125 | + { | |
| 126 | + key: <?php echo json_encode($key); ?>, | |
| 127 | + value: <?php echo json_encode($value); ?> | |
| 128 | + } | |
| 129 | + <?php | |
| 130 | + | |
| 131 | + $first = false; | |
| 124 | 132 | } |
| 125 | - }); | |
| 126 | - tribute.attach(input); | |
| 133 | + ?> | |
| 134 | + ], | |
| 135 | + | |
| 136 | + // Insert with curly braces | |
| 137 | + selectTemplate: function(item) { | |
| 138 | + return '{' + item.original.value + '}'; | |
| 139 | + }, | |
| 140 | + | |
| 141 | + // Show field name in dropdown | |
| 142 | + menuItemTemplate: function(item) { | |
| 143 | + return item.string; | |
| 144 | + } | |
| 145 | + }); | |
| 146 | + | |
| 147 | + tribute.attach(input); | |
| 148 | + | |
| 149 | + function openTributeMenu() { | |
| 150 | + if (!tribute.isActive) { | |
| 151 | + tribute.showMenuForCollection(input, 0); | |
| 152 | + } | |
| 127 | 153 | } |
| 154 | + | |
| 155 | + // Open on first focus | |
| 156 | + input.addEventListener('focus', openTributeMenu); | |
| 157 | + | |
| 158 | + // Open again when user clicks inside already focused input | |
| 159 | + input.addEventListener('click', openTributeMenu); | |
| 128 | 160 | }); |
| 129 | 161 | </script> |
| 130 | 162 | |