PluginProbe ʕ •ᴥ•ʔ
Presto Player / trunk
Presto Player vtrunk
4.3.1 4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / src / admin / integrations / divi / d5 / modules / PlayerEdit.jsx
presto-player / src / admin / integrations / divi / d5 / modules Last commit date
PlayerEdit.jsx 2 days ago
PlayerEdit.jsx
40 lines
1 import React from 'react';
2 import { __ } from '@wordpress/i18n';
3 import RenderPlayer from '../../modules/PrestoPlayer/RenderPlayer.jsx';
4
5 // copy prestoPlayer globals into app-window from top window when running in D5 iframe
6 const pp = window.prestoPlayer || window.parent?.prestoPlayer || {};
7 if ( ! window.prestoPlayer?.plugin_url && pp.plugin_url ) {
8 window.prestoPlayer = { ...( window.prestoPlayer || {} ), ...pp };
9 }
10
11 // RenderPlayer uses window.et_fb_options.et_admin_load_nonce (D4 global).
12 // In D5 that object doesn't exist; polyfill from PrestoPlayerDiviD5Data (injected by PHP)
13 // so the AJAX call to presto_get_media_attributes can succeed.
14 if ( ! window.et_fb_options?.et_admin_load_nonce ) {
15 const d5data = window.PrestoPlayerDiviD5Data || window.parent?.PrestoPlayerDiviD5Data || {};
16 const nonce = d5data.nonce || pp.nonce || window.parent?.prestoPlayer?.nonce || '';
17 window.et_fb_options = {
18 ...( window.et_fb_options || {} ),
19 et_admin_load_nonce: nonce,
20 };
21 }
22
23 export default function PlayerEdit( { attrs } ) {
24 // D5 attrs are nested; guard against flatter shape that can appear before first save.
25 // Narrow to a primitive so a shape like { innerContent: { desktop: {} } } yields undefined
26 // (not the raw object) and correctly falls through to the "select media" curtain.
27 const pick = ( a ) => {
28 const v = a?.innerContent?.desktop?.value || a?.value || a;
29 return typeof v === 'string' || typeof v === 'number' ? v : undefined;
30 };
31 const videoId = pick( attrs?.videoId );
32 const urlOverride = pick( attrs?.urlOverride );
33
34 if ( ! videoId ) {
35 return <presto-video-curtain-ui>{ __( 'Please select media.', 'presto-player' ) }</presto-video-curtain-ui>;
36 }
37
38 return <RenderPlayer id={ videoId } src={ urlOverride || undefined } />;
39 }
40