Changeset 3283963
- Timestamp:
- 04/29/2025 09:40:01 AM (11 months ago)
- Location:
- trinity-audio/trunk
- Files:
-
- 2 added
- 14 edited
-
README.txt (modified) (2 diffs)
-
admin/inc/info-content.php (modified) (1 diff)
-
admin/inc/settings.php (modified) (3 diffs)
-
admin/index.php (modified) (4 diffs)
-
inc/common.php (modified) (12 diffs)
-
inc/constants.php (modified) (5 diffs)
-
inc/post-hashes.php (modified) (1 diff)
-
js/admin.js (modified) (5 diffs)
-
js/metaboxes.js (modified) (3 diffs)
-
metaboxes.php (modified) (3 diffs)
-
migrations/inc/2022-06-21-21-00.php (modified) (1 diff)
-
migrations/inc/2025-02-10-15-00-standard-to-neural-map.json (added)
-
migrations/inc/2025-02-10-15-00.php (added)
-
migrations/index.php (modified) (1 diff)
-
trinity.php (modified) (1 diff)
-
uninstall.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trinity-audio/trunk/README.txt
r3272573 r3283963 87 87 1. Choose the default source language. 88 88 2. Filter the gender you prefer. 89 3. Open the premiumvoice tab.90 4. If locked, choose standard voices.89 3. If your plan includes GenAI voices, choose the GenAI voice tab. 90 4. If your plan doesn't include GenAI voices, choose the Premium voices tab. 91 91 5. Listen to the different narrators and choose the one you find as best. 92 92 6. Choose a voice style you like and click on the player to listen to the sample. … … 153 153 154 154 == Changelog == 155 = 5.13 = 155 = 5.20.0 = 156 *Release Date - Apr 29, 2025* 157 * Implemented a new voice selector component at the post level 158 159 = 5.13.0 = 156 160 *Release Date - Feb 4, 2025* 157 161 * Trim entered values 158 162 159 = 5.12 =163 = 5.12.0 = 160 164 *Release Date - Jan 9, 2025* 161 165 * Added pauses for text with new lines 162 166 163 = 5.11 =167 = 5.11.0 = 164 168 *Release Date - Wed 6, 2024* 165 169 * Added integration type 166 170 167 = 5.10 =171 = 5.10.0 = 168 172 *Release Date - Oct 21, 2024* 169 173 * Avoid render plugin on preview posts list 170 174 171 = 5.9 =175 = 5.9.0 = 172 176 *Release Date - May 27, 2024* 173 177 * Change text output to support new format -
trinity-audio/trunk/admin/inc/info-content.php
r2949358 r3283963 138 138 </td> 139 139 </tr> 140 <tr>141 <td>142 Speed and ability to connect to <strong>endpoint #2</strong> using wp_remote_get143 </td>144 <td colspan="2">145 <?php echo trinity_init_checks_speed_wp(TRINITY_AUDIO_STANDARD_VOICES_URL); ?> ms146 </td>147 </tr>148 <tr>149 <td>150 Speed and ability to connect to <strong>endpoint #2</strong> using curl151 </td>152 <td colspan="2">153 <?php echo trinity_init_checks_speed_curl(TRINITY_AUDIO_STANDARD_VOICES_URL); ?> ms154 </td>155 </tr>156 140 </tbody> 157 141 </table> -
trinity-audio/trunk/admin/inc/settings.php
r3009383 r3283963 16 16 17 17 $package_data = trinity_get_package_data(); 18 19 $languages = trinity_get_languages($package_data->package->isPremium);20 21 if (!$languages) {22 die(trinity_can_not_connect_error_message("<div class='notice notice-error'><p>Can't get list of supported languages.</p><p>") . '</p></div>');23 }24 18 25 19 notifications($package_data); … … 104 98 </div> 105 99 106 <div class="section-form-group" style="display: none">107 <label class="section-form-title" for="<?php echo TRINITY_AUDIO_PRECONNECT; ?>">108 Translate:109 </label>110 111 <?php trinity_translate(); ?>112 </div>113 114 100 <div class="section-form-group"> 115 101 … … 230 216 } 231 217 232 function trinity_translate() {233 echo "<label for='" . TRINITY_AUDIO_TRANSLATE . "' class='custom-checkbox'>234 <div class='text-label'>235 Translate236 </div>237 <input type='checkbox' name='" . TRINITY_AUDIO_TRANSLATE . "' id='" . TRINITY_AUDIO_TRANSLATE . "'>238 <div class='custom-hitbox'></div>239 </label>";240 }241 242 218 function trinity_skip_tags() { 243 219 $value = implode(',', trinity_get_skip_tags()); -
trinity-audio/trunk/admin/index.php
r3219583 r3283963 55 55 'TRINITY_AUDIO_RECOVER_INSTALLKEY' => TRINITY_AUDIO_RECOVER_INSTALLKEY, 56 56 'TRINITY_AUDIO_FIRST_CHANGES_SAVE' => TRINITY_AUDIO_FIRST_CHANGES_SAVE, 57 'LANGUAGES' => trinity_get_voices(),58 57 'TRINITY_AUDIO_BULK_UPDATE_PROGRESS' => $bulk_progress, 59 58 TRINITY_AUDIO_SKIP_TAGS => implode(',', trinity_get_skip_tags()), … … 108 107 add_option(TRINITY_AUDIO_POWERED_BY, 1, '', true); 109 108 add_option(TRINITY_AUDIO_PRECONNECT, 1, '', true); 110 add_option(TRINITY_AUDIO_GENDER_ID, 'f', '', true);111 add_option(TRINITY_AUDIO_VOICE_ID, 'Joanna', '', true);112 109 add_option(TRINITY_AUDIO_PLAYER_LABEL, '', '', true); 113 110 add_option(TRINITY_AUDIO_SOURCE_NEW_POSTS_DEFAULT, 1, '', true); … … 116 113 add_option(TRINITY_AUDIO_CHECK_FOR_LOOP, 0, '', true); 117 114 add_option(TRINITY_AUDIO_ACTIVATE_ON_API_POST_CREATION, 0, '', true); 118 add_option(TRINITY_AUDIO_TRANSLATE, 0, '', true);119 115 add_option(TRINITY_AUDIO_FIRST_CHANGES_SAVE, 0, '', true); 120 116 } … … 197 193 register_setting(TRINITY_AUDIO, TRINITY_AUDIO_SOURCE_LANGUAGE); 198 194 199 // TODO: remove this setting after drop $_GET[postConfig]200 register_setting(TRINITY_AUDIO, TRINITY_AUDIO_GENDER_ID);201 202 195 // allow to save to DB. 203 196 register_setting(TRINITY_AUDIO, TRINITY_AUDIO_SOURCE_NEW_POSTS_DEFAULT); 204 register_setting(TRINITY_AUDIO, TRINITY_AUDIO_VOICE_ID);205 206 197 register_setting(TRINITY_AUDIO, TRINITY_AUDIO_PLAYER_LABEL); 207 198 register_setting(TRINITY_AUDIO, TRINITY_AUDIO_POWERED_BY); 208 199 register_setting(TRINITY_AUDIO, TRINITY_AUDIO_PRECONNECT); 209 210 register_setting(TRINITY_AUDIO, TRINITY_AUDIO_TRANSLATE);211 200 212 201 register_setting(TRINITY_AUDIO, TRINITY_AUDIO_FIRST_CHANGES_SAVE); -
trinity-audio/trunk/inc/common.php
r3182987 r3283963 100 100 } 101 101 102 function trinity_get_gender() {103 return get_option(TRINITY_AUDIO_GENDER_ID);104 }105 106 102 function trinity_get_new_posts_default() { 107 103 return get_option(TRINITY_AUDIO_SOURCE_NEW_POSTS_DEFAULT); … … 128 124 } 129 125 130 function trinity_get_voice_id() {131 return get_option(TRINITY_AUDIO_VOICE_ID);132 }133 134 126 function trinity_get_is_first_changes_saved() { 135 127 return get_option(TRINITY_AUDIO_FIRST_CHANGES_SAVE); … … 150 142 function trinity_get_is_account_key_linked() { 151 143 return get_option(TRINITY_AUDIO_IS_ACCOUNT_KEY_LINKED); 152 }153 154 function trinity_is_migration_v5_failed() {155 return get_option(TRINITY_AUDIO_CONFIGURATION_V5_FAILED);156 144 } 157 145 … … 169 157 } 170 158 171 function trinity_get_voices($languages_url = TRINITY_AUDIO_STANDARD_VOICES_URL) {172 $result = trinity_curl_get($languages_url, trinity_can_not_connect_error_message('Can\'t get list of supported languages.'), false);173 174 if (!$result) return false;175 176 $languages = [];177 178 foreach (json_decode($result) as $lang) {179 $voiceIds = [];180 foreach ($lang->voices as $gender => $voice) {181 if (isset($voice->voiceId)) $voiceIds[$gender] = $voice->voiceId;182 else if (isset($voice->providerVoiceId)) $voiceIds[$gender] = $voice->providerVoiceId;183 }184 185 $languageObj = (object)[186 'name' => $lang->languageName,187 'code' => $lang->code,188 'genders' => array_keys((array)$lang->voices),189 'voices' => $voiceIds190 ];191 192 if ($lang->country) $languageObj->name .= " ($lang->country)";193 194 array_push($languages, $languageObj);195 }196 197 $languages = array_values($languages);198 199 return $languages;200 }201 202 159 function trinity_include_audio_player($page_content) { 203 160 $date = trinity_get_date(); … … 205 162 206 163 $post_hash = trinity_ph_get_audio_posthash($post_id); 207 208 $gender = get_post_meta($post_id, TRINITY_AUDIO_GENDER_ID, true);209 164 210 165 $whitelist_shortcodes = trinity_get_allowed_shortcodes(); … … 224 179 225 180 $source_language = get_post_meta($post_id, TRINITY_AUDIO_SOURCE_LANGUAGE, true); 226 227 /*228 * Unfortunately AWS Polly and AWS Translate support different namings.229 *230 * @link https://docs.aws.amazon.com/polly/latest/dg/voicelist.html231 * @link https://docs.aws.amazon.com/translate/latest/dg/what-is.html232 */233 $language_code_map = [234 'arb' => 'ar', // cmn-CN code is zh language (Arabic)235 'cmn-CN' => 'zh', // cmn-CN code is zh language (Chinese)236 ];237 181 238 182 if (isset($language_code_map[$source_language])) { … … 257 201 'postHashV2' => $post_hash, 258 202 'language' => $source_language, 259 'voiceGender' => $gender,260 203 'pageURL' => get_permalink() 261 204 ]; … … 263 206 $post_voice_id = get_post_meta($post_id, TRINITY_AUDIO_VOICE_ID, true); 264 207 if ($post_voice_id) $player_query_params['voiceId'] = $post_voice_id; 265 266 if (trinity_is_migration_v5_failed()) {267 unset($player_query_params['postConfig']);268 269 $poweredby = trinity_get_powered_by();270 $poweredby = $poweredby ? $poweredby : 0;271 272 $player_query_params['poweredby'] = $poweredby;273 }274 208 275 209 // do NOT include trinityAudioPlaceholder with PB when we already have in source code, because of using shortcodes, themes, etc... otherwise it will be flashing in wrong position … … 476 410 $data = [ 477 411 'installkey' => trinity_get_install_key(), // need for auth 478 'powered_by' => trinity_get_powered_by(), 479 'voice_id' => trinity_get_voice_id() 412 'powered_by' => trinity_get_powered_by() 480 413 ]; 481 414 … … 496 429 'language' => $_GET['language'], 497 430 'voiceStyle' => $_GET['voiceStyle'], 498 'engine' => $_GET['engine'],499 431 'themeId' => $_GET['themeId'], 500 432 'voice' => $_GET['voice'], 501 433 'fab' => $_GET['fab'], 502 434 'powered_by' => $_GET['poweredBy'], 503 'gender' => $_GET['gender'],504 435 'showSettings' => $_GET['showSettings'], 505 436 'shareEnabled' => $_GET['shareEnabled'] … … 511 442 'url' => TRINITY_AUDIO_UPDATE_FULL_UNIT_CONFIG_URL, 512 443 'error_message' => trinity_can_not_connect_error_message('Can\'t update plugin details.'), 513 'die' => false514 ]515 );516 }517 518 function trinity_send_stat_migrate_v5_settings() {519 $data = [520 'installkey' => trinity_get_install_key(), // need for auth521 'source_language' => trinity_get_source_language(),522 'powered_by' => trinity_get_powered_by(),523 'gender' => trinity_get_gender()524 ];525 526 return trinity_curl_post(527 [528 'post_data' => $data,529 'url' => TRINITY_AUDIO_UPDATE_PLUGIN_MIGRATION_URL,530 'error_message' => trinity_can_not_connect_error_message('Can\'t migrate plugin details.'),531 444 'die' => false 532 445 ] … … 728 641 return TRINITY_AUDIO_PRICING_URL; 729 642 } 730 731 function trinity_get_languages($is_premium = false, $is_package_known = false) {732 $cached_languages = get_transient(TRINITY_AUDIO_LANGUAGES_CACHE);733 $languages = json_decode($cached_languages);734 735 if ($languages) return $languages;736 737 if ($is_package_known === false) {738 $package_data = trinity_get_package_data();739 $is_premium = $package_data->package->isPremium;740 }741 742 $languages_url = $is_premium ? TRINITY_AUDIO_EXTENDED_VOICES_URL : TRINITY_AUDIO_STANDARD_VOICES_URL;743 744 $languages = trinity_get_voices($languages_url);745 746 set_transient(TRINITY_AUDIO_LANGUAGES_CACHE, json_encode($languages), 10800); // 3h747 748 return $languages;749 }750 -
trinity-audio/trunk/inc/constants.php
r3093666 r3283963 28 28 define('TRINITY_AUDIO_INFO_HTML', TRINITY_AUDIO_LOG_DIR . '/' . TRINITY_AUDIO_INFO_FILE_PART_NAME . '-' . get_log_prefix() . '.html'); 29 29 30 const TRINITY_AUDIO_LABEL_DEFAULT = 'Default';31 32 30 const BREAK_MACRO = '⏸'; 33 31 const BLOCK_MACRO = '▇'; … … 40 38 } 41 39 42 const TRINITY_AUDIO_GENDER_ARRAY = [43 'm' => 'Male',44 'f' => 'Female',45 ];46 47 40 const TRINITY_AUDIO_INSTALLKEY = 'trinity_audio_installkey'; 48 41 const TRINITY_AUDIO_VIEWKEY = 'trinity_audio_viewkey'; 49 42 const TRINITY_AUDIO_PLUGIN_VERSION = 'trinity_audio_plugin_version'; // array 50 43 const TRINITY_AUDIO_PLUGIN_MIGRATION = 'trinity_audio_plugin_migration'; // array 51 const TRINITY_AUDIO_GENDER_ID = 'trinity_audio_gender_id';52 44 const TRINITY_AUDIO_SOURCE_LANGUAGE = 'trinity_audio_source_language'; 53 45 const TRINITY_AUDIO_VOICE_ID = 'trinity_audio_voice_id'; … … 67 59 const TRINITY_AUDIO_FIRST_CHANGES_SAVE = 'trinity_audio_first_changes_save'; 68 60 const TRINITY_AUDIO_IS_ACCOUNT_KEY_LINKED = 'trinity_audio_is_account_linked'; 69 const TRINITY_AUDIO_TRANSLATE = 'trinity_audio_translate';70 61 const TRINITY_AUDIO_UPDATE_UNIT_CONFIG = 'trinity_audio_update_unit_config'; 71 62 const TRINITY_AUDIO_SEND_METRIC = 'trinity_audio_send_metric'; … … 74 65 const TRINITY_AUDIO_ACTIVATE_ON_API_POST_CREATION = 'trinity_audio_activate_on_api_post_creation'; 75 66 76 const TRINITY_AUDIO_LANGUAGES_CACHE = 'trinity_audio_languages_cache'; 67 const TRINITY_AUDIO_WP_SERVICE = TRINITY_AUDIO_SERVICE . '/wordpress'; 68 const TRINITY_AUDIO_BULK_UPDATE_URL = TRINITY_AUDIO_WP_SERVICE . '/bulk_update'; 69 const TRINITY_AUDIO_POST_HASH_URL_V2 = TRINITY_AUDIO_WP_SERVICE . '/v2/posthash'; 70 const TRINITY_AUDIO_UPDATE_PLUGIN_CONFIG_URL = TRINITY_AUDIO_WP_SERVICE . '/config'; 71 const TRINITY_AUDIO_METRICS_URL = TRINITY_AUDIO_WP_SERVICE . '/metrics'; 77 72 78 const TRINITY_AUDIO_CONFIGURATION_V5_FAILED = 'trinity_audio_configuration_v5_failed'; 79 80 const TRINITY_AUDIO_WP_SERVICE = TRINITY_AUDIO_SERVICE . '/wordpress'; 81 const TRINITY_AUDIO_STANDARD_VOICES_URL = TRINITY_AUDIO_SERVICE . '/standard-voices'; 82 const TRINITY_AUDIO_EXTENDED_VOICES_URL = TRINITY_AUDIO_SERVICE . '/extended-voices'; 83 const TRINITY_AUDIO_BULK_UPDATE_URL = TRINITY_AUDIO_WP_SERVICE . '/bulk_update'; 84 const TRINITY_AUDIO_POST_HASH_URL_V2 = TRINITY_AUDIO_WP_SERVICE . '/v2/posthash'; 85 const TRINITY_AUDIO_UPDATE_PLUGIN_CONFIG_URL = TRINITY_AUDIO_WP_SERVICE . '/config'; 86 // TODO: remove after there is no publishers with v < 5.0.0 87 const TRINITY_AUDIO_UPDATE_PLUGIN_MIGRATION_URL = TRINITY_AUDIO_WP_SERVICE . '/config_migration'; 88 const TRINITY_AUDIO_METRICS_URL = TRINITY_AUDIO_WP_SERVICE . '/metrics'; 89 90 const TRINITY_AUDIO_CREDITS_URL = TRINITY_AUDIO_WP_SERVICE . '/credits'; 91 const TRINITY_AUDIO_KEYS_URL = TRINITY_AUDIO_WP_SERVICE . '/signup'; 92 const TRINITY_AUDIO_CONTACT_US_URL = TRINITY_AUDIO_WP_SERVICE . '/contact-us'; 93 const TRINITY_AUDIO_UPDATE_PLUGIN_DETAILS_URL = TRINITY_AUDIO_WP_SERVICE . '/update_plugin_details'; 94 const TRINITY_AUDIO_PUBLISHER_TOKEN_URL = TRINITY_AUDIO_WP_SERVICE . '/assign-unit-to-publisher'; 95 const TRINITY_AUDIO_UPDATE_FULL_UNIT_CONFIG_URL = TRINITY_AUDIO_WP_SERVICE . '/unit-config'; 96 const TRINITY_AUDIO_NOTIFICATIONS_URL = TRINITY_AUDIO_WP_SERVICE . '/notification'; 73 const TRINITY_AUDIO_CREDITS_URL = TRINITY_AUDIO_WP_SERVICE . '/credits'; 74 const TRINITY_AUDIO_KEYS_URL = TRINITY_AUDIO_WP_SERVICE . '/signup'; 75 const TRINITY_AUDIO_CONTACT_US_URL = TRINITY_AUDIO_WP_SERVICE . '/contact-us'; 76 const TRINITY_AUDIO_UPDATE_PLUGIN_DETAILS_URL = TRINITY_AUDIO_WP_SERVICE . '/update_plugin_details'; 77 const TRINITY_AUDIO_PUBLISHER_TOKEN_URL = TRINITY_AUDIO_WP_SERVICE . '/assign-unit-to-publisher'; 78 const TRINITY_AUDIO_UPDATE_FULL_UNIT_CONFIG_URL = TRINITY_AUDIO_WP_SERVICE . '/unit-config'; 79 const TRINITY_AUDIO_NOTIFICATIONS_URL = TRINITY_AUDIO_WP_SERVICE . '/notification'; 97 80 98 81 const TRINITY_AUDIO_ENABLED = 'trinity_audio_enable'; … … 125 108 126 109 const TRINITY_AUDIO_POST_META_MAP = [ 127 'content' => 'c', 128 'title_content' => 'tc', 129 'excerpt_content' => 'ec', 130 'title_excerpt_content' => 'tec' 110 'title_content' => 'tc' 131 111 ]; 132 112 -
trinity-audio/trunk/inc/post-hashes.php
r2962932 r3283963 232 232 trinity_audio_enable_player_for_post_id($post_id, $is_enable); 233 233 234 // Update post gender235 update_post_meta($post_id, TRINITY_AUDIO_GENDER_ID, sanitize_text_field($_POST[TRINITY_AUDIO_GENDER_ID]));236 237 234 // Update post source language 238 235 update_post_meta($post_id, TRINITY_AUDIO_SOURCE_LANGUAGE, sanitize_text_field($_POST[TRINITY_AUDIO_SOURCE_LANGUAGE])); -
trinity-audio/trunk/js/admin.js
r3234829 r3283963 113 113 else trinityUpdateBulkProgress({statusName: 'error'}); 114 114 }); 115 }116 117 /**118 * Disable genders that are not supported for particular languages.119 * Switch back to default selected gender, when it's available.120 */121 function initLanguageSelect() {122 const defaultSelectedGender = $('#trinity_audio_gender_id').val();123 124 function callback() {125 const lang = this.value;126 const foundLang = TRINITY_WP_ADMIN.LANGUAGES.find(function (value) {127 return value.code === lang;128 });129 130 if (foundLang) {131 const genders = foundLang.genders;132 $('#trinity_audio_gender_id option').each(function (key, el) {133 const isEnabled = genders.includes(el.value) || el.value === '';134 135 $(el).attr('disabled', !isEnabled);136 if (!isEnabled) $(el).removeAttr('selected');137 });138 139 const shouldSelectEl = $('#trinity_audio_gender_id option[value="' + defaultSelectedGender + '"]:not([disabled])');140 if (shouldSelectEl.length) {141 shouldSelectEl.attr('selected', true);142 } else {143 $('#trinity_audio_gender_id option:not([disabled]):first').attr('selected', true)144 }145 }146 }147 148 $('#trinity_audio_source_language').change(callback);149 $('#trinity_audio_source_language').change();150 115 } 151 116 … … 195 160 }, TRINITY_BULK_POLLING_TIMEOUT); 196 161 197 initLanguageSelect();198 162 initContactUs(); 199 163 $("#register-site").submit(trinityAudioOnRegisterFormSubmit); … … 276 240 277 241 async function isFormValid() { 278 return (await TRINITY_UNIT_CONFIGURATION.validate()).isValid;242 return (await window.TRINITY_UNIT_CONFIGURATION.validate()).isValid; 279 243 } 280 244 281 245 // check if we need to disable/enable save button 282 246 setInterval(async () => { 283 if (!window.TRINITY_UNIT_CONFIGURATION ) return;247 if (!window.TRINITY_UNIT_CONFIGURATION?.validate) return; 284 248 285 249 const isValid = await isFormValid(); … … 303 267 voice, 304 268 voiceStyle, 305 engine,306 269 theme, 307 270 language, 308 271 speed, 309 272 fab, 310 gender,311 273 showSettings, 312 274 shareEnabled … … 322 284 action: window.TRINITY_WP_ADMIN.TRINITY_AUDIO_UPDATE_UNIT_CONFIG, 323 285 speed, 324 gender,325 286 language, 326 287 voiceStyle, 327 engine,328 288 themeId: theme, 329 289 voice, -
trinity-audio/trunk/js/metaboxes.js
r2939325 r3283963 1 function updateVoiceValue() { 2 const voiceField = document.querySelector('#trinity_audio_voice_id.trinity-audio-metaboxes-element'); 3 const languageField = document.querySelector('#trinity_audio_source_language'); 4 const genderField = document.querySelector('#trinity_audio_gender_id'); 1 async function trinityMetaVoiceConfig() { 2 const {dispatch} = wp.data; 3 const editorDispatch = dispatch('core/editor'); 5 4 6 if (!voiceField || !languageField || !genderField) return; 5 // Save original savePost 6 const originalSavePost = editorDispatch.savePost; 7 7 8 let languageVoices = languageField.selectedOptions?.[0].attributes['data-voices']?.value; 8 let originalConfig; 9 waitForExpression(() => window.TRINITY_UNIT_CONFIGURATION.getFormData).then(async () => { 10 originalConfig = await window.TRINITY_UNIT_CONFIGURATION.getFormData(); 11 }); 9 12 10 if (!languageVoices) return voiceField.value = ''; 11 else languageVoices = JSON.parse(languageVoices); 13 // Replace savePost with our wrapper 14 editorDispatch.savePost = async (...args) => { 15 const formData = await window.TRINITY_UNIT_CONFIGURATION.getFormData(); 12 16 13 const currentGender = genderField.value; 17 if (originalConfig && JSON.stringify(originalConfig) !== JSON.stringify(formData)) { 18 const voiceIdInputEl = document.getElementById('trinity_audio_voice_id'); 19 voiceIdInputEl.value = formData.voiceId; // set public voiceId 14 20 15 voiceField.value = languageVoices[currentGender] || languageVoices[Object.keys(languageVoices)[0]]; 21 // Good to save locale and not only voiceId, since if voiceId get removed, we have locale which we can rely on 22 const languageInputEl = document.getElementById('trinity_audio_source_language'); 23 languageInputEl.value = formData.code; 24 } 25 26 // Continue with original save 27 return originalSavePost(...args); 28 }; 16 29 } 17 30 … … 25 38 action: window.TRINITY_WP_ADMIN.TRINITY_AUDIO_SEND_METRIC 26 39 } 40 }); 41 } 42 43 function waitForExpression(expressionFn) { 44 return new Promise((resolve) => { 45 const t = setInterval(() => { 46 if (!!expressionFn()) { 47 resolve(); 48 clearInterval(t); 49 } 50 }, 1000); 27 51 }); 28 52 } … … 91 115 92 116 initTabPanel(); 93 updateVoiceValue($);94 117 })(jQuery); -
trinity-audio/trunk/metaboxes.php
r2939325 r3283963 31 31 } 32 32 33 echo "<input type='checkbox' name='" . esc_attr(TRINITY_AUDIO_ENABLED) . "' id='" . esc_attr(TRINITY_AUDIO_ENABLED) . "'" . checked( $checked, 'checked', false ) . '/>'; 34 } 35 36 function trinity_meta_source_gender($post_id) { 37 echo "<select onchange='updateVoiceValue()' name='" . esc_attr(TRINITY_AUDIO_GENDER_ID) . "' id='" . esc_attr(TRINITY_AUDIO_GENDER_ID) . "'>"; 38 39 $post_gender = get_post_meta($post_id, TRINITY_AUDIO_GENDER_ID, true); 40 $genders = array_merge(['' => TRINITY_AUDIO_LABEL_DEFAULT], TRINITY_AUDIO_GENDER_ARRAY); 41 42 foreach ($genders as $key => $value) { 43 $selected = $post_gender === $key ? 'selected' : ''; 44 45 echo "<option value='" . esc_attr($key) . "' " . esc_attr($selected) . '>' . esc_html($value) . '</option>'; 46 } 47 48 echo '</select>'; 33 echo "<input type='checkbox' name='" . esc_attr(TRINITY_AUDIO_ENABLED) . "' id='" . esc_attr(TRINITY_AUDIO_ENABLED) . "'" . checked($checked, 'checked', false) . '/>'; 49 34 } 50 35 51 36 function trinity_meta_source_language($post_id) { 52 $languages = trinity_get_languages(); 37 $post_voice_id = get_post_meta($post_id, TRINITY_AUDIO_VOICE_ID, true); 38 $voice_config_widget_url = TRINITY_DASHBOARD_SERVICE . 'backend/v1/apps/unit-configuration/wp/' . trinity_get_install_key() . '?voice_selection_only=1&voice_id=' . $post_voice_id; 39 ?> 53 40 54 echo "<input type='hidden' name='" . esc_attr(TRINITY_AUDIO_VOICE_ID) . "' id='" . esc_attr(TRINITY_AUDIO_VOICE_ID) . "' class='trinity-audio-metaboxes-element'/>"; 55 echo "<select onchange='updateVoiceValue()' name='" . esc_attr(TRINITY_AUDIO_SOURCE_LANGUAGE) . "' id='" . esc_attr(TRINITY_AUDIO_SOURCE_LANGUAGE) . "'>"; 41 <script defer src="<?= $voice_config_widget_url ?>"></script> 42 <script> 43 jQuery(document).ready(async () => { 44 await trinityMetaVoiceConfig(); 45 }); 46 </script> 56 47 57 $post_language = get_post_meta($post_id, TRINITY_AUDIO_SOURCE_LANGUAGE, true); 58 $result_languages = array_merge( 59 [ 60 (object)[ 61 'code' => '', 62 'name' => TRINITY_AUDIO_LABEL_DEFAULT, 63 ], 64 ], 65 $languages 66 ); 67 68 foreach ($result_languages as $lang) { 69 $language_code = $lang->code; 70 $language_name = $lang->name; 71 72 if (isset($lang->voices)) $voicesEncoded = json_encode($lang->voices); 73 else $voicesEncoded = ''; 74 75 76 $selected = $post_language === $language_code ? 'selected' : ''; 77 78 echo "<option data-voices='$voicesEncoded' value='" . esc_attr($language_code) . "' " . esc_attr($selected) . '>' . esc_html($language_name) . '</option>'; 79 } 80 81 echo '</select>'; 48 <input type='hidden' name="<?php echo esc_attr(TRINITY_AUDIO_SOURCE_LANGUAGE); ?>" 49 id="<?php echo esc_attr(TRINITY_AUDIO_SOURCE_LANGUAGE); ?>" 50 class="trinity-audio-metaboxes-element" /> 51 <input type='hidden' name="<?php echo esc_attr(TRINITY_AUDIO_VOICE_ID); ?>" 52 id="<?php echo esc_attr(TRINITY_AUDIO_VOICE_ID); ?>" 53 class="trinity-audio-metaboxes-element" /> 54 <?php 82 55 } 83 56 … … 105 78 <table class="form-table"> 106 79 <tr> 107 <th style="width: 250px;">80 <th> 108 81 <label for="<?php echo esc_attr(TRINITY_AUDIO_ENABLED); ?>"> 109 Enable T ext-To-Speech(Trinity audio):82 Enable TTS (Trinity audio): 110 83 </label> 111 84 </th> … … 121 94 <tr> 122 95 <th> 123 <label for="<?php echo esc_attr(TRINITY_AUDIO_GENDER_ID); ?>">Gender:</label> 124 </th> 125 <td> 126 <?php trinity_meta_source_gender($post->ID); ?> 127 </td> 128 </tr> 129 <tr> 130 <th> 131 <label for="<?php echo esc_attr(TRINITY_AUDIO_SOURCE_LANGUAGE); ?>">Language:</label> 96 <label for="<?php echo esc_attr(TRINITY_AUDIO_SOURCE_LANGUAGE); ?>">Voice:</label> 132 97 </th> 133 98 <td> -
trinity-audio/trunk/migrations/inc/2022-06-21-21-00.php
r2865135 r3283963 3 3 if (!trinity_should_migrate_for('4.2.4')) return; 4 4 5 $response = trinity_send_stat_migrate_v5_settings(); 6 7 if ($response->STATUS === 'error') update_option(TRINITY_AUDIO_CONFIGURATION_V5_FAILED, 1); 8 5 // $response = trinity_send_stat_migrate_v5_settings(); 6 // 7 // if ($response->STATUS === 'error') update_option(TRINITY_AUDIO_CONFIGURATION_V5_FAILED, 1); -
trinity-audio/trunk/migrations/index.php
r2933259 r3283963 45 45 46 46 foreach ($migrations as $migration) { 47 if (!str_ends_with($migration, '.php')) continue; 48 47 49 $migration_version = str_replace('.php', '', $migration); 48 50 -
trinity-audio/trunk/trinity.php
r3234829 r3283963 9 9 * Plugin URI: https://wordpress.org/plugins/trinity-audio/ 10 10 * Description: This plugin generates an audio version of the post, for absolutely FREE. You can choose the language and the gender of the voice reading your content. You also have the option to add Trinity Audio's player on select posts or have it audiofy all of your content. In both cases, it only takes a few simple clicks to get it done. The plugin is built through collaboration with the Amazon Polly team. 11 * Version: 5. 1311 * Version: 5.20.0 12 12 * Author: Trinity Audio 13 13 * Author URI: https://trinityaudio.ai/ -
trinity-audio/trunk/uninstall.php
r2939325 r3283963 20 20 delete_option(TRINITY_AUDIO_PLUGIN_VERSION); 21 21 delete_option(TRINITY_AUDIO_PLUGIN_MIGRATION); 22 delete_option(TRINITY_AUDIO_GENDER_ID);23 22 delete_option(TRINITY_AUDIO_SOURCE_LANGUAGE); 24 23 delete_option(TRINITY_AUDIO_SOURCE_NEW_POSTS_DEFAULT); … … 32 31 delete_option(TRINITY_AUDIO_PHBU_FAILED_POSTS); 33 32 delete_option(TRINITY_AUDIO_PHBU_BULK_UPDATE_DONE); 34 delete_option(TRINITY_AUDIO_TRANSLATE);35 33 delete_option(TRINITY_AUDIO_FIRST_CHANGES_SAVE); 36 34 delete_option(TRINITY_AUDIO_VOICE_ID);
Note: See TracChangeset
for help on using the changeset viewer.