Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * @class MPLAccordionModule
- */
- class MPLAccordionModule extends FLBuilderModule {
- /**
- * @method __construct
- */
- public function __construct() {
- parent::__construct(array(
- 'name' => __( 'MPL Accordion', 'fl-builder' ),
- 'description' => __( 'Display a collapsible accordion of items.', 'fl-builder' ),
- 'category' => __( 'Layout', 'fl-builder' ),
- 'partial_refresh' => true,
- 'dir' => __DIR__,
- 'url' => plugins_url( '', __FILE__ ),
- ));
- add_filter( 'wpml_beaver_builder_modules_to_translate', array( $this, 'wpml_modules_to_translate_filter' ) );
- }
- /**
- * @method Translate module
- */
- public function wpml_modules_to_translate_filter( $modules ) {
- $modules[ 'mpl-accordion' ] = [
- 'conditions' => [ 'type' => 'mpl-accordion' ],
- 'fields' => [],
- 'integration-class' => 'MPL_BB_accordion_translation',
- ];
- return $modules;
- }
- }
- /**
- * Translation class
- */
- class MPL_BB_accordion_translation extends WPML_Beaver_Builder_Module_With_Items {
- public function &get_items( $settings ) {
- return $settings->items;
- }
- public function get_fields() {
- return array( 'toggle_more', 'toggle_less', 'label', 'excerpt_content', 'full_content' );
- }
- protected function get_title( $field ) {
- switch( $field ) {
- case 'label':
- return esc_html__( 'Label', 'fl-builder' );
- case 'excerpt_content':
- return esc_html__( 'Excerpt Content', 'fl-builder' );
- case 'full_content':
- return esc_html__( 'Full Content', 'fl-builder' );
- case 'toggle_more':
- return esc_html__( 'Toggle More', 'fl-builder' );
- case 'toggle_less':
- return esc_html__( 'Toggle Less', 'fl-builder' );
- default:
- return '';
- }
- }
- protected function get_editor_type( $field ) {
- switch( $field ) {
- case 'label':
- case 'toggle_more':
- case 'toggle_less':
- return 'LINE';
- case 'excerpt_content':
- case 'full_content':
- return 'VISUAL';
- default:
- return '';
- }
- }
- }
- /**
- * Register the module and its form settings.
- */
- FLBuilder::register_module('MPLAccordionModule', array(
- 'items' => array(
- 'title' => __( 'Items', 'fl-builder' ),
- 'sections' => array(
- 'general' => array(
- 'title' => '',
- 'fields' => array(
- 'items' => array(
- 'type' => 'form',
- 'label' => __( 'Item', 'fl-builder' ),
- 'form' => 'accordion_items_form', // ID from registered form below
- 'preview_text' => 'label', // Name of a field to use for the preview text
- 'multiple' => true,
- ),
- ),
- ),
- ),
- ),
- 'style' => array(
- 'title' => __( 'Style', 'fl-builder' ),
- 'sections' => array(
- 'general' => array(
- 'title' => '',
- 'fields' => array(
- 'display' => array(
- 'type' => 'select',
- 'label' => __( 'Display', 'fl-builder' ),
- 'default' => 'content',
- 'options' => array(
- 'cards' => _x( 'Cards', 'Label size.', 'fl-builder' ),
- 'content' => _x( 'Content', 'Label size.', 'fl-builder' ),
- ),
- 'toggle' => array(
- 'cards' => array(
- 'fields' => array('columns')
- )
- ),
- 'help' => __( 'Cards = boxed grid layout, Content = stacked items without box look', 'fl-builder' ),
- 'preview' => array(
- 'type' => 'none',
- ),
- ),
- 'columns' => array(
- 'type' => 'select',
- 'label' => __( 'Columns', 'fl-builder' ),
- 'default' => '4',
- 'options' => array(
- '1' => _x( '1', 'Label size.', 'fl-builder' ),
- '2' => _x( '2', 'Label size.', 'fl-builder' ),
- '3' => _x( '3', 'Label size.', 'fl-builder' ),
- '4' => _x( '4', 'Label size.', 'fl-builder' ),
- ),
- 'help' => __( 'How many columns to display the cards in on large screens.', 'fl-builder' ),
- ),
- 'open_first' => array(
- 'type' => 'select',
- 'label' => __( 'Expand First Item', 'fl-builder' ),
- 'default' => '0',
- 'options' => array(
- '0' => __( 'No', 'fl-builder' ),
- '1' => __( 'Yes', 'fl-builder' ),
- ),
- 'help' => __( 'Choosing yes will expand the first item by default.', 'fl-builder' ),
- ),
- 'mobile_icons' => array(
- 'type' => 'select',
- 'label' => __( 'Display Icons on Mobile', 'fl-builder' ),
- 'default' => '0',
- 'options' => array(
- '0' => __( 'No', 'fl-builder' ),
- '1' => __( 'Yes', 'fl-builder' ),
- ),
- ),
- ),
- ),
- ),
- ),
- ));
- /**
- * Register a settings form to use in the "form" field type above.
- */
- FLBuilder::register_settings_form('accordion_items_form', array(
- 'title' => __( 'Add Item', 'fl-builder' ),
- 'tabs' => array(
- 'general' => array(
- 'title' => __( 'General', 'fl-builder' ),
- 'sections' => array(
- 'general' => array(
- 'title' => '',
- 'fields' => array(
- 'label' => array(
- 'type' => 'text',
- 'label' => __( 'Label', 'fl-builder' ),
- 'connections' => array( 'string' ),
- ),
- 'icon' => array(
- 'type' => 'photo',
- 'label' => __('Icon', 'fl-builder'),
- ),
- 'excerpt_content' => array(
- 'type' => 'editor',
- 'label' => __('Excerpt Content', 'fl-builder'),
- 'wpautop' => false,
- ),
- 'full_content' => array(
- 'type' => 'editor',
- 'label' => __('Full Content', 'fl-builder'),
- 'wpautop' => false,
- ),
- ),
- ),
- 'toggle' => array(
- 'title' => __( 'Toggle', 'fl-builder' ),
- 'fields' => array(
- 'toggle_more' => array(
- 'type' => 'text',
- 'label' => __('Toggle More Text', 'fl-builder'),
- 'default' => __('See more', 'fl-builder')
- ),
- 'toggle_less' => array(
- 'type' => 'text',
- 'label' => __('Toggle Less Text', 'fl-builder'),
- 'default' => __('See less', 'fl-builder')
- ),
- ),
- ),
- ),
- ),
- ),
- ));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement