plugin updates
This commit is contained in:
@@ -0,0 +1,210 @@
|
||||
(function (wpI18n, wpBlocks, wpElement, wpEditor, wpBlockEditor, wpComponents) {
|
||||
const {__} = wpI18n;
|
||||
const {Component, Fragment} = wpElement;
|
||||
const {registerBlockType} = wpBlocks;
|
||||
const {InspectorControls, MediaUpload, BlockControls} = wpBlockEditor;
|
||||
const {PanelBody, SelectControl, ToolbarGroup, TextControl, Button, IconButton, Placeholder} = wpComponents;
|
||||
const $ = jQuery;
|
||||
|
||||
class wpmfPdfEmbed extends Component {
|
||||
constructor() {
|
||||
super(...arguments);
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
const {attributes, clientId} = this.props;
|
||||
const {id, embed, target, width, height} = attributes;
|
||||
this.doPdfEmbed(id, embed, target, width, height, clientId);
|
||||
}
|
||||
|
||||
componentDidUpdate(prevProps) {
|
||||
const {attributes, clientId} = this.props;
|
||||
const {id, embed, target, width, height} = attributes;
|
||||
if (attributes.embed != prevProps.attributes.embed || attributes.id != prevProps.attributes.id || attributes.width != prevProps.attributes.width || attributes.height != prevProps.attributes.height) {
|
||||
this.doPdfEmbed(id, embed, target, width, height, clientId);
|
||||
}
|
||||
}
|
||||
|
||||
doPdfEmbed(id, embed, target, width, height, clientId) {
|
||||
let $container = $(`#block-${clientId} .wpmf_block_pdf_wrap`);
|
||||
fetch(wpmf_pdf_blocks.vars.ajaxurl + `?action=wpmf_load_pdf_embed&id=${id}&embed=${embed}&target=${target}&width=${width}&height=${height}&wpmf_nonce=${wpmf_pdf_blocks.vars.wpmf_nonce}`)
|
||||
.then(res => res.json())
|
||||
.then(
|
||||
(result) => {
|
||||
if (result.status) {
|
||||
$container.html(result.html);
|
||||
}
|
||||
},
|
||||
// errors
|
||||
(error) => {
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
render() {
|
||||
const {attributes, setAttributes, className} = this.props;
|
||||
const {id, embed, target, width, height} = attributes;
|
||||
const controls = (
|
||||
<BlockControls>
|
||||
{id !== 0 && (
|
||||
<ToolbarGroup>
|
||||
<MediaUpload
|
||||
onSelect={(file) => setAttributes({id: parseInt(file.id)})}
|
||||
accept="application/pdf"
|
||||
allowedTypes={'application/pdf'}
|
||||
render={({open}) => (
|
||||
<IconButton
|
||||
className="components-toolbar__control wpmf-pdf-button"
|
||||
label={__('Edit', 'wpmf')}
|
||||
icon="edit"
|
||||
onClick={open}
|
||||
/>
|
||||
)}
|
||||
/>
|
||||
</ToolbarGroup>
|
||||
)}
|
||||
</BlockControls>
|
||||
);
|
||||
|
||||
let pdf_shortcode = '[wpmfpdf';
|
||||
pdf_shortcode += ' id="' + id + '"';
|
||||
pdf_shortcode += ' embed="' + embed + '"';
|
||||
pdf_shortcode += ' target="' + target + '"';
|
||||
if (width !== '') {
|
||||
pdf_shortcode += ' width="' + width + '"';
|
||||
}
|
||||
if (height !== '') {
|
||||
pdf_shortcode += ' height="' + height + '"';
|
||||
}
|
||||
pdf_shortcode += ']';
|
||||
|
||||
if (id == 0) {
|
||||
return (
|
||||
<Placeholder
|
||||
icon="pdf"
|
||||
label={__('WP Media Folder PDF Embed', 'wpmf')}
|
||||
instructions={__('Select a PDF file from your media library.', 'wpmf')}
|
||||
className={className}
|
||||
>
|
||||
<MediaUpload
|
||||
onSelect={(file) => setAttributes({id: parseInt(file.id)})}
|
||||
accept="application/pdf"
|
||||
allowedTypes={'application/pdf'}
|
||||
render={({open}) => (
|
||||
<Button
|
||||
islarge="true"
|
||||
className="is-tertiary editor-media-placeholder__button wpmfLibrary"
|
||||
onClick={open}
|
||||
>
|
||||
{__('Add PDF', 'wpmf')}
|
||||
</Button>
|
||||
)}
|
||||
/>
|
||||
</Placeholder>
|
||||
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<Fragment>
|
||||
<div className="wp-block-shortcode">
|
||||
{
|
||||
(id !== 0) && <div className="wpmf-pdf-block">
|
||||
<InspectorControls>
|
||||
<PanelBody title={__('PDF Settings', 'wpmf')}>
|
||||
<SelectControl
|
||||
label={__('Embed', 'wpmf')}
|
||||
value={embed}
|
||||
options={[
|
||||
{label: __('On', 'wpmf'), value: 1},
|
||||
{label: __('Off', 'wpmf'), value: 0}
|
||||
]}
|
||||
onChange={(value) => setAttributes({embed: parseInt(value)})}
|
||||
/>
|
||||
|
||||
<SelectControl
|
||||
label={__('Target', 'wpmf')}
|
||||
value={target}
|
||||
options={[
|
||||
{label: __('Same Window', 'wpmf'), value: ''},
|
||||
{label: __('New Window', 'wpmf'), value: '_blank'}
|
||||
]}
|
||||
onChange={(value) => setAttributes({target: value})}
|
||||
/>
|
||||
<TextControl
|
||||
label={__('Width', 'wpmf')}
|
||||
value={ width }
|
||||
onChange={ ( value ) => setAttributes({width: value})}
|
||||
/>
|
||||
<TextControl
|
||||
className="wpmf_pdf_embed_shortcode_input"
|
||||
label={__('Height', 'wpmf')}
|
||||
value={ height }
|
||||
onChange={ ( value ) => setAttributes({height: value})}
|
||||
/>
|
||||
</PanelBody>
|
||||
</InspectorControls>
|
||||
<TextControl
|
||||
value={pdf_shortcode}
|
||||
className="wpmf_pdf_value"
|
||||
autoComplete="off"
|
||||
readOnly
|
||||
/>
|
||||
{
|
||||
(id !== 0) && <div className="wpmf_block_pdf_wrap"></div>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
{controls}
|
||||
</Fragment>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
registerBlockType(
|
||||
'wpmf/pdfembed', {
|
||||
title: wpmf_pdf_blocks.l18n.block_pdf_title,
|
||||
icon: 'media-code',
|
||||
category: 'wp-media-folder',
|
||||
attributes: {
|
||||
id: {
|
||||
type: 'number',
|
||||
default: 0
|
||||
},
|
||||
embed: {
|
||||
type: 'number',
|
||||
default: 1,
|
||||
},
|
||||
target: {
|
||||
type: 'string',
|
||||
default: '',
|
||||
},
|
||||
width: {
|
||||
type: 'string',
|
||||
default: ''
|
||||
},
|
||||
height: {
|
||||
type: 'string',
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
edit: wpmfPdfEmbed,
|
||||
save: ({attributes}) => {
|
||||
const {id, embed, target, width, height} = attributes;
|
||||
let pdf_shortcode = '[wpmfpdf';
|
||||
pdf_shortcode += ' id="' + id + '"';
|
||||
pdf_shortcode += ' embed="' + embed + '"';
|
||||
pdf_shortcode += ' target="' + target + '"';
|
||||
if (width !== '') {
|
||||
pdf_shortcode += ' width="' + width + '"';
|
||||
}
|
||||
if (height !== '') {
|
||||
pdf_shortcode += ' height="' + height + '"';
|
||||
}
|
||||
pdf_shortcode += ']';
|
||||
return pdf_shortcode;
|
||||
}
|
||||
}
|
||||
);
|
||||
})(wp.i18n, wp.blocks, wp.element, wp.editor, wp.blockEditor, wp.components);
|
||||
Reference in New Issue
Block a user