mirror of
https://github.com/dwaxweiler/connector-mobilizon
synced 2025-06-05 21:59:25 +02:00
add basic block
This commit is contained in:
@ -40,3 +40,16 @@ function mobilizon_connector_register_events_list_widget() {
|
||||
register_widget('MobilizonConnector\EventsListWidget');
|
||||
}
|
||||
add_action('widgets_init', 'mobilizon_connector_register_events_list_widget');
|
||||
|
||||
function mobilizon_connector_initialize_blocks() {
|
||||
wp_register_script(MobilizonConnector\NAME . '-block-starter', plugins_url('front/block-events-loader.js', __FILE__ ), [
|
||||
'wp-blocks',
|
||||
'wp-components',
|
||||
'wp-editor',
|
||||
'wp-i18n'
|
||||
]);
|
||||
register_block_type(MobilizonConnector\NAME . '/events-list', [
|
||||
'editor_script' => MobilizonConnector\NAME . '-block-starter'
|
||||
]);
|
||||
}
|
||||
add_action('init', 'mobilizon_connector_initialize_blocks');
|
||||
|
1
source/connector-mobilizon/front/block-events-loader.js
Normal file
1
source/connector-mobilizon/front/block-events-loader.js
Normal file
@ -0,0 +1 @@
|
||||
import './blocks/events-list'
|
27
source/connector-mobilizon/front/blocks/events-list/edit.js
Normal file
27
source/connector-mobilizon/front/blocks/events-list/edit.js
Normal file
@ -0,0 +1,27 @@
|
||||
const { InspectorControls } = wp.blockEditor
|
||||
const { PanelBody } = wp.components
|
||||
const { __ } = wp.i18n
|
||||
|
||||
export default ({ attributes, setAttributes }) => {
|
||||
function updateEventsCount(event) {
|
||||
let newValue = Number(event.target.value)
|
||||
if (newValue < 1) newValue = 1
|
||||
setAttributes({ eventsCount: newValue })
|
||||
}
|
||||
function updateGroupName(event) {
|
||||
setAttributes({ groupName: event.target.value })
|
||||
}
|
||||
return ([
|
||||
<InspectorControls>
|
||||
<PanelBody title={ __('Events List Settings', '<wordpress-name>') }>
|
||||
<label className="components-base-control__label">{ __('Number of events to show', '<wordpress-name>') }</label>
|
||||
<input className="components-text-control__input" type="number" value={ attributes.eventsCount } onChange={ updateEventsCount } />
|
||||
<label className="components-base-control__label">{ __('Group name (optional)', '<wordpress-name>') }</label>
|
||||
<input className="components-text-control__input" type="text" value={ attributes.groupName } onChange={ updateGroupName } />
|
||||
</PanelBody>
|
||||
</InspectorControls>,
|
||||
<ul>
|
||||
{ [...Array(attributes.eventsCount)].map((_, i) => <li className="busterCards" key={ i }>{ __('Event', '<wordpress-name>') } { i }</li>) }
|
||||
</ul>
|
||||
])
|
||||
}
|
28
source/connector-mobilizon/front/blocks/events-list/index.js
Normal file
28
source/connector-mobilizon/front/blocks/events-list/index.js
Normal file
@ -0,0 +1,28 @@
|
||||
import edit from './edit'
|
||||
import save from './save'
|
||||
|
||||
const { registerBlockType } = wp.blocks
|
||||
const { __ } = wp.i18n
|
||||
|
||||
const NAME = '<wordpress-name>'
|
||||
|
||||
registerBlockType(NAME + '/events-list', {
|
||||
title: __('Events List', '<wordpress-name>'),
|
||||
description: __('A list of the upcoming events of the connected Mobilizon instance.', '<wordpress-name>'),
|
||||
icon: 'list-view',
|
||||
category: 'widgets',
|
||||
attributes: {
|
||||
eventsCount: {
|
||||
type: 'number',
|
||||
default: 3
|
||||
},
|
||||
groupName: {
|
||||
type: 'string'
|
||||
}
|
||||
},
|
||||
supports: {
|
||||
html: false
|
||||
},
|
||||
edit,
|
||||
save,
|
||||
})
|
21
source/connector-mobilizon/front/blocks/events-list/save.js
Normal file
21
source/connector-mobilizon/front/blocks/events-list/save.js
Normal file
@ -0,0 +1,21 @@
|
||||
const { __ } = wp.i18n
|
||||
|
||||
const NAME = '<wordpress-name>'
|
||||
|
||||
const URL = 'https://mobilizon.fr' // TODO
|
||||
const LOCALE = 'en-GB' // TODO
|
||||
const TIMEZONE = 'Europe/Rome' // TODO
|
||||
const isShortOffsetNameShown = true // TODO
|
||||
|
||||
export default ({ attributes }) => {
|
||||
return(
|
||||
<ul className={ NAME + '_events-list' }
|
||||
data-url={ URL }
|
||||
data-locale={ LOCALE }
|
||||
data-maximum={ attributes.eventsCount }
|
||||
data-group-name={ attributes.groupName }
|
||||
data-time-zone={ TIMEZONE }>
|
||||
<li style="display: none;">{ __('The events could not be loaded!', '<wordpress-name>') }</li>
|
||||
</ul>
|
||||
)
|
||||
}
|
Reference in New Issue
Block a user