PluginProbe ʕ •ᴥ•ʔ
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more / 2.3.1
EmbedPress – PDF Embedder, Embed PDF viewer, YouTube Videos, 3D FlipBook, Social feeds & more v2.3.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 7 years ago editor.scss 7 years ago index.js 7 years ago style.scss 7 years ago
edit.js
115 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
15 class GoogleFormsEdit 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 decodeHTMLEntities (str) {
35 if(str && typeof str === 'string') {
36 // strip script/html tags
37 str = str.replace(/<script[^>]*>([\S\s]*?)<\/script>/gmi, '');
38 str = str.replace(/<\/?\w(?:[^"'>]|"[^"]*"|'[^']*')*>/gmi, '');
39
40 }
41 return str;
42 }
43
44
45 setUrl( event ) {
46 if ( event ) {
47 event.preventDefault();
48 }
49 const { url } = this.state;
50 const { setAttributes } = this.props;
51 setAttributes( { url } );
52 if(url && url.match( /^http[s]?:\/\/((?:www\.)?docs\.google\.com(?:.*)?(?:document|presentation|spreadsheets|forms|drawings)\/[a-z0-9\/\?=_\-\.\,&%\$#\@\!\+]*)/i)){
53 var iframeSrc = this.decodeHTMLEntities(url);
54 var regEx = /google\.com(?:.+)?(document|presentation|spreadsheets|forms|drawings)/i;
55 var match = regEx.exec(iframeSrc);
56 var type = match[1];
57 if(type && type == 'forms') {
58 this.setState( { editingURL: false, cannotEmbed: false } );
59 setAttributes( {iframeSrc: iframeSrc })
60 }
61 else {
62 this.setState({
63 cannotEmbed: true,
64 editingURL: true
65 })
66 }
67 }
68 else {
69 this.setState({
70 cannotEmbed: true,
71 editingURL: true
72 })
73 }
74 }
75
76 switchBackToURLInput() {
77 this.setState( { editingURL: true } );
78 }
79
80 render() {
81 const { url, editingURL, fetching, cannotEmbed } = this.state;
82 const { iframeSrc } = this.props.attributes;
83
84 const label = __( 'Google Forms URL');
85
86 // No preview, or we can't embed the current URL, or we've clicked the edit button.
87 if ( !iframeSrc || editingURL ) {
88 return (
89 <EmbedPlaceholder
90 label={ label }
91 onSubmit={ this.setUrl }
92 value={ url }
93 cannotEmbed={ cannotEmbed }
94 onChange={ ( event ) => this.setState( { url: event.target.value } ) }
95 />
96 );
97 }
98 else {
99
100 return (
101 <Fragment>
102 {fetching ? <EmbedLoading /> : null}
103 <Iframe src={iframeSrc} onLoad={this.onLoad} style={{ display: fetching ? 'none' : '' }} frameborder="0" width="600" height="450" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true" />
104 <EmbedControls
105 showEditButton={ iframeSrc && ! cannotEmbed }
106 switchBackToURLInput={ this.switchBackToURLInput }
107 />
108 </Fragment>
109
110 )
111 }
112 }
113 };
114 export default GoogleFormsEdit;
115