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-forms / edit.js
embedpress / Gutenberg / src / google-forms 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
124 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 import {googleDrawingsIcon} from "../common/icons";
9
10 /**
11 * WordPress dependencies
12 */
13 const {__} = wp.i18n;
14 const {Component, Fragment} = wp.element;
15 import {googleFormsIcon} from '../common/icons';
16
17 const {Disabled} = wp.components;
18
19 class GoogleFormsEdit extends Component {
20 constructor() {
21 super(...arguments);
22 this.switchBackToURLInput = this.switchBackToURLInput.bind(this);
23 this.setUrl = this.setUrl.bind(this);
24 this.onLoad = this.onLoad.bind(this);
25 this.state = {
26 editingURL: false,
27 url: this.props.attributes.url,
28 fetching: true,
29 cannotEmbed: false
30 };
31 }
32
33 onLoad() {
34 this.setState({
35 fetching: false
36 })
37 }
38
39 decodeHTMLEntities(str) {
40 if (str && typeof str === 'string') {
41 // strip script/html tags
42 str = str.replace(/<script[^>]*>([\S\s]*?)<\/script>/gmi, '');
43 str = str.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gmi, '');
44
45 }
46 return str;
47 }
48
49
50 setUrl(event) {
51 if (event) {
52 event.preventDefault();
53 }
54 const {url} = this.state;
55 const {setAttributes} = this.props;
56 setAttributes({url});
57 if (url && url.match(/^http[s]?:\/\/((?:www\.)?docs\.google\.com(?:.*)?(?:document|presentation|spreadsheets|forms|drawings)\/[a-z0-9\/\?=_\-\.\,&%\$#\@\!\+]*)/i)) {
58 var iframeSrc = this.decodeHTMLEntities(url);
59 var regEx = /google\.com(?:.+)?(document|presentation|spreadsheets|forms|drawings)/i;
60 var match = regEx.exec(iframeSrc);
61 var type = match[1];
62 if (type && type == 'forms') {
63 this.setState({editingURL: false, cannotEmbed: false});
64 setAttributes({iframeSrc: iframeSrc})
65 } else {
66 this.setState({
67 cannotEmbed: true,
68 editingURL: true
69 })
70 }
71 } else {
72 this.setState({
73 cannotEmbed: true,
74 editingURL: true
75 })
76 }
77 }
78
79 switchBackToURLInput() {
80 this.setState({editingURL: true});
81 }
82
83 render() {
84 const {url, editingURL, fetching, cannotEmbed} = this.state;
85 const {iframeSrc} = this.props.attributes;
86
87 const label = __('Google Forms URL');
88
89 // No preview, or we can't embed the current URL, or we've clicked the edit button.
90 if (!iframeSrc || editingURL) {
91 return (
92 <EmbedPlaceholder
93 label={label}
94 onSubmit={this.setUrl}
95 value={url}
96 cannotEmbed={cannotEmbed}
97 onChange={(event) => this.setState({url: event.target.value})}
98 icon={googleFormsIcon}
99 DocTitle={__('Learn more about Google forms')}
100 docLink={'https://embedpress.com/docs/embed-google-forms-wordpress/'}
101 />
102 );
103 } else {
104
105 return (
106 <Fragment>
107 {fetching ? <EmbedLoading/> : null}
108 <Disabled>
109 <Iframe src={iframeSrc} onLoad={this.onLoad} style={{display: fetching ? 'none' : ''}}
110 frameborder="0" width="600" height="450" allowfullscreen="true" mozallowfullscreen="true"
111 webkitallowfullscreen="true"/>
112 </Disabled>
113 <EmbedControls
114 showEditButton={iframeSrc && !cannotEmbed}
115 switchBackToURLInput={this.switchBackToURLInput}
116 />
117 </Fragment>
118
119 )
120 }
121 }
122 };
123 export default GoogleFormsEdit;
124