PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / 2.6.1
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more v2.6.1
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-drawings / edit.js
embedpress / Gutenberg / src / google-drawings 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
117 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
8 /**
9 * WordPress dependencies
10 */
11 const {__} = wp.i18n;
12 const {Component, Fragment} = wp.element;
13 import {googleDrawingsIcon} from '../common/icons';
14
15 class GoogleDrawingEdit extends Component {
16 constructor() {
17 super(...arguments);
18 this.switchBackToURLInput = this.switchBackToURLInput.bind(this);
19 this.setUrl = this.setUrl.bind(this);
20 this.onLoad = this.onLoad.bind(this);
21 this.state = {
22 editingURL: false,
23 url: this.props.attributes.url,
24 fetching: true,
25 cannotEmbed: false
26 };
27 }
28
29 onLoad() {
30 this.setState({
31 fetching: false
32 })
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 == 'drawings') {
59 this.setState({editingURL: false, cannotEmbed: false});
60 setAttributes({iframeSrc: iframeSrc})
61 } else {
62 this.setState({
63 cannotEmbed: true,
64 editingURL: true
65 })
66 }
67 } else {
68 this.setState({
69 cannotEmbed: true,
70 editingURL: true
71 })
72 }
73 }
74
75 switchBackToURLInput() {
76 this.setState({editingURL: true});
77 }
78
79 render() {
80 const {url, editingURL, fetching, cannotEmbed} = this.state;
81 const {iframeSrc} = this.props.attributes;
82
83 const label = __('Google Drawings URL (Get your link from File -> Publish to the web -> Link)');
84
85 // No preview, or we can't embed the current URL, or we've clicked the edit button.
86 if (!iframeSrc || editingURL) {
87 return (
88 <EmbedPlaceholder
89 label={label}
90 onSubmit={this.setUrl}
91 value={url}
92 cannotEmbed={cannotEmbed}
93 onChange={(event) => this.setState({url: event.target.value})}
94 icon={googleDrawingsIcon}
95 DocTitle={__('Learn more about Google drawing embed')}
96 docLink={'https://embedpress.com/docs/embed-google-drawings-wordpress/'}
97 />
98 );
99 } else {
100
101 return (
102 <Fragment>
103 {fetching ? <EmbedLoading/> : null}
104 <img src={iframeSrc} onLoad={this.onLoad} style={{display: fetching ? 'none' : ''}} width="960"
105 height="720"/>
106 <EmbedControls
107 showEditButton={iframeSrc && !cannotEmbed}
108 switchBackToURLInput={this.switchBackToURLInput}
109 />
110 </Fragment>
111
112 )
113 }
114 }
115 };
116 export default GoogleDrawingEdit;
117