PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / 2.5.4
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more v2.5.4
4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 trunk 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2.0 2.2.1 2.2.2 2.3.0 2.3.1 2.3.2 2.3.3 2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.1.3 3.2.0 3.2.1 3.3.0 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.6.8 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 3.9.1 3.9.10 3.9.11 3.9.12 3.9.13 3.9.14 3.9.15 3.9.16 3.9.17 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9 4.0.0 4.0.1 4.0.10 4.0.11 4.0.12 4.0.13 4.0.14 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.10 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2.0 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.4.0 4.4.1 4.4.10 4.4.11 4.4.2 4.4.3 4.4.4 4.4.5 4.4.6 4.4.7 4.4.8 4.4.9 4.5.0 4.5.1
embedpress / Gutenberg / src / google-slides / edit.js
embedpress / Gutenberg / src / google-slides Last commit date
edit.js 6 years ago editor.scss 6 years ago index.js 6 years ago style.scss 6 years ago
edit.js
125 lines
1 /**
2 * Internal dependencies
3 */
4 import EmbedControls from '../common/embed-controls';
5 import EmbedLoading from '../common/embed-loading';
6 import EmbedPlaceholder from '../common/embed-placeholder';
7 import Iframe from '../common/Iframe';
8
9 /**
10 * WordPress dependencies
11 */
12 const { __ } = wp.i18n;
13 const { Component, Fragment } = wp.element;
14 const {Disabled} = wp.components;
15 import { googleSlidesIcon} from '../common/icons'
16 class GoogleSlidesEdit extends Component {
17 constructor() {
18 super( ...arguments );
19 this.switchBackToURLInput = this.switchBackToURLInput.bind( this );
20 this.setUrl = this.setUrl.bind( this );
21 this.onLoad = this.onLoad.bind( this );
22 this.state = {
23 editingURL: false,
24 url: this.props.attributes.url,
25 fetching: true,
26 cannotEmbed: false
27 };
28 }
29
30 onLoad() {
31 this.setState({
32 fetching: false
33 })
34 }
35 decodeHTMLEntities (str) {
36 if(str && typeof str === 'string') {
37 // strip script/html tags
38 str = str.replace(/<script[^>]*>([\S\s]*?)<\/script>/gmi, '');
39 str = str.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gmi, '');
40
41 }
42 return str;
43 }
44
45
46 setUrl( event ) {
47 if ( event ) {
48 event.preventDefault();
49 }
50 const { url } = this.state;
51 const { setAttributes } = this.props;
52 setAttributes( { url } );
53 if(url && url.match( /^http[s]?:\/\/((?:www\.)?docs\.google\.com(?:.*)?(?:document|presentation|spreadsheets|forms|drawings)\/[a-z0-9\/\?=_\-\.\,&%\$#\@\!\+]*)/i)){
54 var iframeSrc = this.decodeHTMLEntities(url);
55 var regEx = /google\.com(?:.+)?(document|presentation|spreadsheets|forms|drawings)/i;
56 var match = regEx.exec(iframeSrc);
57 var type = match[1];
58 if(type && type == 'presentation') {
59 if(iframeSrc.match( /pub\?/i )) {
60 iframeSrc = iframeSrc.replace('/pub?', '/embed?');
61 }
62 this.setState( { editingURL: false, cannotEmbed: false } );
63 setAttributes( {iframeSrc: iframeSrc })
64 }
65 else {
66 this.setState({
67 cannotEmbed: true,
68 editingURL: true
69 })
70 }
71 }
72 else {
73 this.setState({
74 cannotEmbed: true,
75 editingURL: true
76 })
77 }
78 }
79
80 switchBackToURLInput() {
81 this.setState( { editingURL: true } );
82 }
83
84 render() {
85 const { url, editingURL, fetching, cannotEmbed } = this.state;
86 const { iframeSrc } = this.props.attributes;
87
88 const label = __( 'Google Slides URL');
89
90 // No preview, or we can't embed the current URL, or we've clicked the edit button.
91 if ( !iframeSrc || editingURL ) {
92 return (
93 <EmbedPlaceholder
94 label={ label }
95 onSubmit={ this.setUrl }
96 value={ url }
97 cannotEmbed={ cannotEmbed }
98 onChange={ ( event ) => this.setState( { url: event.target.value } ) }
99 icon={googleSlidesIcon}
100 DocTitle={__('Learn more about Google slides')}
101 docLink={'https://embedpress.com/docs/embed-google-slides-wordpress/'}
102 />
103 );
104 }
105 else {
106
107 return (
108 <Fragment>
109 {fetching ? <EmbedLoading /> : null}
110 <Disabled>
111 <Iframe src={iframeSrc} onLoad={this.onLoad} style={{ display: fetching ? 'none' : '' }} frameborder="0" width="600" height="450" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true" />
112 </Disabled>
113
114 <EmbedControls
115 showEditButton={ iframeSrc && ! cannotEmbed }
116 switchBackToURLInput={ this.switchBackToURLInput }
117 />
118 </Fragment>
119
120 )
121 }
122 }
123 };
124 export default GoogleSlidesEdit;
125