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-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
144 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 interactive: false
31 };
32 }
33
34 static getDerivedStateFromProps(nextProps, state) {
35 if (!nextProps.isSelected && state.interactive) {
36 return {interactive: false};
37 }
38
39 return null;
40 }
41
42 hideOverlay() {
43 this.setState({interactive: true});
44 }
45
46 onLoad() {
47 this.setState({
48 fetching: false
49 })
50 }
51
52 decodeHTMLEntities(str) {
53 if (str && typeof str === 'string') {
54 // strip script/html tags
55 str = str.replace(/<script[^>]*>([\S\s]*?)<\/script>/gmi, '');
56 str = str.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gmi, '');
57
58 }
59 return str;
60 }
61
62
63 setUrl(event) {
64 if (event) {
65 event.preventDefault();
66 }
67 const {url} = this.state;
68 const {setAttributes} = this.props;
69 setAttributes({url});
70 if (url && url.match(/^http[s]?:\/\/((?:www\.)?docs\.google\.com(?:.*)?(?:document|presentation|spreadsheets|forms|drawings)\/[a-z0-9\/\?=_\-\.\,&%\$#\@\!\+]*)/i)) {
71 var iframeSrc = this.decodeHTMLEntities(url);
72 var regEx = /google\.com(?:.+)?(document|presentation|spreadsheets|forms|drawings)/i;
73 var match = regEx.exec(iframeSrc);
74 var type = match[1];
75 if (type && type == 'forms') {
76 this.setState({editingURL: false, cannotEmbed: false});
77 setAttributes({iframeSrc: iframeSrc})
78 } else {
79 this.setState({
80 cannotEmbed: true,
81 editingURL: true
82 })
83 }
84 } else {
85 this.setState({
86 cannotEmbed: true,
87 editingURL: true
88 })
89 }
90 }
91
92 switchBackToURLInput() {
93 this.setState({editingURL: true});
94 }
95
96 render() {
97 const {url, editingURL, fetching, cannotEmbed, interactive} = this.state;
98 const {iframeSrc} = this.props.attributes;
99
100 const label = __('Google Forms URL');
101
102 // No preview, or we can't embed the current URL, or we've clicked the edit button.
103 if (!iframeSrc || editingURL) {
104 return (
105 <EmbedPlaceholder
106 label={label}
107 onSubmit={this.setUrl}
108 value={url}
109 cannotEmbed={cannotEmbed}
110 onChange={(event) => this.setState({url: event.target.value})}
111 icon={googleFormsIcon}
112 DocTitle={__('Learn more about Google forms embed')}
113 docLink={'https://embedpress.com/docs/embed-google-forms-wordpress/'}
114 />
115 );
116 } else {
117
118 return (
119 <Fragment>
120 {fetching ? <EmbedLoading/> : null}
121
122 <Iframe src={iframeSrc} onFocus={ this.hideOverlay } onLoad={this.onLoad} style={{display: fetching ? 'none' : ''}}
123 frameborder="0" width="600" height="450" allowfullscreen="true" mozallowfullscreen="true"
124 webkitallowfullscreen="true"/>
125
126 { ! interactive && (
127 <div
128 className="block-library-embed__interactive-overlay"
129 onMouseUp={ this.hideOverlay }
130 />
131 ) }
132
133 <EmbedControls
134 showEditButton={iframeSrc && !cannotEmbed}
135 switchBackToURLInput={this.switchBackToURLInput}
136 />
137 </Fragment>
138
139 )
140 }
141 }
142 };
143 export default GoogleFormsEdit;
144