Advertisement
Guest User

Untitled

a guest
Apr 4th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.59 KB | None | 0 0
  1. <?php
  2.  
  3. /**
  4.  * @class MPLAccordionModule
  5.  */
  6. class MPLAccordionModule extends FLBuilderModule {
  7.  
  8.     /**
  9.      * @method __construct
  10.      */
  11.     public function __construct() {
  12.         parent::__construct(array(
  13.             'name'              => __( 'MPL Accordion', 'fl-builder' ),
  14.             'description'       => __( 'Display a collapsible accordion of items.', 'fl-builder' ),
  15.             'category'          => __( 'Layout', 'fl-builder' ),
  16.             'partial_refresh'   => true,
  17.             'dir'               => __DIR__,
  18.             'url'               => plugins_url( '', __FILE__ ),
  19.         ));
  20.  
  21.         add_filter( 'wpml_beaver_builder_modules_to_translate', array( $this, 'wpml_modules_to_translate_filter' ) );
  22.     }
  23.  
  24.     /**
  25.      * @method Translate module
  26.      */
  27.     public function wpml_modules_to_translate_filter( $modules ) {
  28.         $modules[ 'mpl-accordion' ] = [
  29.             'conditions' => [ 'type' => 'mpl-accordion' ],
  30.             'fields'     => [],
  31.             'integration-class' => 'MPL_BB_accordion_translation',
  32.         ];
  33.  
  34.         return $modules;
  35.     }
  36.  
  37. }
  38.  
  39.  
  40. /**
  41.  * Translation class
  42.  */
  43. class MPL_BB_accordion_translation extends WPML_Beaver_Builder_Module_With_Items {
  44.     public function &get_items( $settings ) {
  45.         return $settings->items;
  46.     }
  47.     public function get_fields() {
  48.         return array( 'toggle_more', 'toggle_less', 'label', 'excerpt_content', 'full_content' );
  49.     }
  50.     protected function get_title( $field ) {
  51.         switch( $field ) {
  52.             case 'label':
  53.                 return esc_html__( 'Label', 'fl-builder' );
  54.             case 'excerpt_content':
  55.                 return esc_html__( 'Excerpt Content', 'fl-builder' );
  56.             case 'full_content':
  57.                 return esc_html__( 'Full Content', 'fl-builder' );
  58.             case 'toggle_more':
  59.                 return esc_html__( 'Toggle More', 'fl-builder' );
  60.             case 'toggle_less':
  61.                 return esc_html__( 'Toggle Less', 'fl-builder' );
  62.             default:
  63.                 return '';
  64.         }
  65.     }
  66.     protected function get_editor_type( $field ) {
  67.         switch( $field ) {
  68.             case 'label':
  69.             case 'toggle_more':
  70.             case 'toggle_less':
  71.                 return 'LINE';
  72.             case 'excerpt_content':
  73.             case 'full_content':
  74.                 return 'VISUAL';
  75.             default:
  76.                 return '';
  77.         }
  78.     }
  79. }
  80.  
  81.  
  82. /**
  83.  * Register the module and its form settings.
  84.  */
  85. FLBuilder::register_module('MPLAccordionModule', array(
  86.     'items'         => array(
  87.         'title'         => __( 'Items', 'fl-builder' ),
  88.         'sections'      => array(
  89.             'general'       => array(
  90.                 'title'         => '',
  91.                 'fields'        => array(
  92.                     'items'         => array(
  93.                         'type'          => 'form',
  94.                         'label'         => __( 'Item', 'fl-builder' ),
  95.                         'form'          => 'accordion_items_form', // ID from registered form below
  96.                         'preview_text'  => 'label', // Name of a field to use for the preview text
  97.                         'multiple'      => true,
  98.                     ),
  99.                 ),
  100.             ),
  101.         ),
  102.     ),
  103.     'style'        => array(
  104.         'title'         => __( 'Style', 'fl-builder' ),
  105.         'sections'      => array(
  106.             'general'       => array(
  107.                 'title'         => '',
  108.                 'fields'        => array(
  109.                     'display'   => array(
  110.                         'type'          => 'select',
  111.                         'label'         => __( 'Display', 'fl-builder' ),
  112.                         'default'       => 'content',
  113.                         'options'       => array(
  114.                             'cards'          => _x( 'Cards', 'Label size.', 'fl-builder' ),
  115.                             'content'        => _x( 'Content', 'Label size.', 'fl-builder' ),
  116.                         ),
  117.                         'toggle'        => array(
  118.                             'cards'          => array(
  119.                                 'fields'        => array('columns')
  120.                             )
  121.                         ),
  122.                         'help'          => __( 'Cards = boxed grid layout, Content = stacked items without box look', 'fl-builder' ),
  123.                         'preview'       => array(
  124.                             'type'          => 'none',
  125.                         ),
  126.                     ),
  127.                     'columns' => array(
  128.                         'type'          => 'select',
  129.                         'label'         => __( 'Columns', 'fl-builder' ),
  130.                         'default'       => '4',
  131.                         'options'       => array(
  132.                             '1'              => _x( '1', 'Label size.', 'fl-builder' ),
  133.                             '2'              => _x( '2', 'Label size.', 'fl-builder' ),
  134.                             '3'              => _x( '3', 'Label size.', 'fl-builder' ),
  135.                             '4'              => _x( '4', 'Label size.', 'fl-builder' ),
  136.                         ),
  137.                         'help'          => __( 'How many columns to display the cards in on large screens.', 'fl-builder' ),
  138.                     ),
  139.                     'open_first'       => array(
  140.                         'type'          => 'select',
  141.                         'label'         => __( 'Expand First Item', 'fl-builder' ),
  142.                         'default'       => '0',
  143.                         'options'       => array(
  144.                             '0'             => __( 'No', 'fl-builder' ),
  145.                             '1'             => __( 'Yes', 'fl-builder' ),
  146.                         ),
  147.                         'help'          => __( 'Choosing yes will expand the first item by default.', 'fl-builder' ),
  148.                     ),
  149.                     'mobile_icons'       => array(
  150.                         'type'          => 'select',
  151.                         'label'         => __( 'Display Icons on Mobile', 'fl-builder' ),
  152.                         'default'       => '0',
  153.                         'options'       => array(
  154.                             '0'             => __( 'No', 'fl-builder' ),
  155.                             '1'             => __( 'Yes', 'fl-builder' ),
  156.                         ),
  157.                     ),
  158.                 ),
  159.             ),
  160.         ),
  161.     ),
  162. ));
  163.  
  164. /**
  165.  * Register a settings form to use in the "form" field type above.
  166.  */
  167. FLBuilder::register_settings_form('accordion_items_form', array(
  168.     'title' => __( 'Add Item', 'fl-builder' ),
  169.     'tabs'  => array(
  170.         'general'      => array(
  171.             'title'         => __( 'General', 'fl-builder' ),
  172.             'sections'      => array(
  173.                 'general'       => array(
  174.                     'title'         => '',
  175.                     'fields'        => array(
  176.                         'label'         => array(
  177.                             'type'          => 'text',
  178.                             'label'         => __( 'Label', 'fl-builder' ),
  179.                             'connections'   => array( 'string' ),
  180.                         ),
  181.                         'icon'       => array(
  182.                             'type'          => 'photo',
  183.                             'label'         => __('Icon', 'fl-builder'),
  184.                         ),
  185.                         'excerpt_content'       => array(
  186.                             'type'          => 'editor',
  187.                             'label'         => __('Excerpt Content', 'fl-builder'),
  188.                             'wpautop'       => false,
  189.                         ),
  190.                         'full_content'       => array(
  191.                             'type'          => 'editor',
  192.                             'label'         => __('Full Content', 'fl-builder'),
  193.                             'wpautop'       => false,
  194.                         ),
  195.                     ),
  196.                 ),
  197.                 'toggle'       => array(
  198.                     'title'         => __( 'Toggle', 'fl-builder' ),
  199.                     'fields'        => array(
  200.                         'toggle_more'       => array(
  201.                             'type'          => 'text',
  202.                             'label'         => __('Toggle More Text', 'fl-builder'),
  203.                             'default'       => __('See more', 'fl-builder')
  204.                         ),
  205.                         'toggle_less'       => array(
  206.                             'type'          => 'text',
  207.                             'label'         => __('Toggle Less Text', 'fl-builder'),
  208.                             'default'       => __('See less', 'fl-builder')
  209.                         ),
  210.                     ),
  211.                 ),
  212.             ),
  213.         ),
  214.     ),
  215. ));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement