Files
CHIEFSOFT\ameye e9e5c0546c first commit
2023-11-30 13:20:54 -05:00

249 lines
8.4 KiB
PHP

<?php
/**
* Posts Block Sidebar.
*
* @package Canvas
*/
/**
* Initialize Featured Posts block sidebar.
*/
class CNVS_Block_Posts_Sidebar {
/**
* Initialize
*/
public function __construct() {
add_action( 'enqueue_block_assets', array( $this, 'enqueue_block_assets' ) );
add_filter( 'canvas_block_layouts_canvas/posts', array( $this, 'register_layout' ), 99 );
add_filter( 'canvas_block_posts_query_args', array( $this, 'change_query_args' ), 10, 3 );
}
/**
* Enqueue the block's assets for the editor.
*/
public function enqueue_block_assets() {
wp_register_style(
'canvas-block-posts-sidebar',
plugins_url( 'block-posts-sidebar/block-posts-sidebar.css', __FILE__ ),
array(),
filemtime( plugin_dir_path( __FILE__ ) . 'block-posts-sidebar/block-posts-sidebar.css' )
);
wp_style_add_data( 'canvas-block-posts-sidebar', 'rtl', 'replace' );
wp_enqueue_style( 'canvas-block-posts-sidebar' );
}
/**
* Get types of layout.
*/
public function get_types_of_layouts() {
$types = array(
'sidebar-list' => 'sidebar-list',
'sidebar-numbered' => 'sidebar-numbered',
'sidebar-large' => 'sidebar-large',
);
return $types;
}
/**
* Get name of layout by key.
*
* @param mixed $key The key.
*/
public function get_name_of_layout_by( $key ) {
switch ( $key ) {
case 'sidebar-list':
return esc_html__( 'Widget 1', 'canvas' );
case 'sidebar-numbered':
return esc_html__( 'Widget 2', 'canvas' );
case 'sidebar-large':
return esc_html__( 'Widget 3', 'canvas' );
}
}
/**
* Get icon of layout by key.
*
* @param mixed $key The key.
*/
public function get_icon_of_layout_by( $key ) {
switch ( $key ) {
case 'sidebar-list':
return '<svg width="52" height="44" xmlns="http://www.w3.org/2000/svg"><g transform="translate(1 1)" stroke="#2D2D2D" fill="none" fill-rule="evenodd"><rect stroke-width="1.5" width="50" height="42" rx="3"/><rect stroke-width="1.5" x="5" y="5" width="8" height="8" rx="1"/><rect stroke-width="1.5" x="5" y="17" width="8" height="8" rx="1"/><rect stroke-width="1.5" x="5" y="29" width="8" height="8" rx="1"/><path d="M16.833 5.5h23.334m-23.334 3h28.334m-28.32 3h20.307M16.833 17.5h23.334m-23.334 3h28.334m-28.32 3h20.307M16.833 29.5h23.334m-23.334 3h28.334m-28.32 3h20.307" stroke-linecap="round" stroke-linejoin="round"/></g></svg>';
case 'sidebar-numbered':
return '<svg width="52" height="44" xmlns="http://www.w3.org/2000/svg"><g transform="translate(1 1)" fill="none" fill-rule="evenodd"><rect stroke="#2D2D2D" stroke-width="1.5" width="50" height="42" rx="3"/><g transform="translate(5 5)" stroke="#2D2D2D"><rect stroke-width="1.5" width="8" height="8" rx="1"/><path d="M11.833.5h23.334m-23.334 3h28.334m-28.32 3h20.307" stroke-linecap="round" stroke-linejoin="round"/></g><text font-family="FuturaPT-Bold, Futura PT" font-size="6" font-weight="bold" fill="#2D2D2D"><tspan x="7.2" y="11">1</tspan></text><text font-family="FuturaPT-Bold, Futura PT" font-size="6" font-weight="bold" fill="#2D2D2D"><tspan x="7.2" y="23">2</tspan></text><text font-family="FuturaPT-Bold, Futura PT" font-size="6" font-weight="bold" fill="#2D2D2D"><tspan x="7.2" y="35">3</tspan></text><rect stroke="#2D2D2D" stroke-width="1.5" x="5" y="17" width="8" height="8" rx="1"/><rect stroke="#2D2D2D" stroke-width="1.5" x="5" y="29" width="8" height="8" rx="1"/><path d="M16.833 17.5h23.334m-23.334 3h28.334m-28.32 3h20.307M16.833 29.5h23.334m-23.334 3h28.334m-28.32 3h20.307" stroke="#2D2D2D" stroke-linecap="round" stroke-linejoin="round"/></g></svg>';
case 'sidebar-large':
return '<svg width="52" height="44" xmlns="http://www.w3.org/2000/svg"><g transform="translate(1 1)" stroke="#2D2D2D" fill="none" fill-rule="evenodd"><rect stroke-width="1.5" width="50" height="42" rx="3"/><g transform="translate(16 8)"><rect stroke-width="1.5" width="18" height="22" rx="1"/><path d="M.5 24.5h17M.5 27h13" stroke-linecap="round" stroke-linejoin="round"/></g></g></svg>';
}
}
/**
* Register layout.
*
* @param array $layouts List of layouts.
*/
public function register_layout( $layouts = array() ) {
$types = $this->get_types_of_layouts();
foreach ( $types as $type ) {
$layouts[ $type ] = array(
'location' => array( 'section-sidebar' ),
'name' => $this->get_name_of_layout_by( $type ),
'template' => dirname( __FILE__ ) . '/block-posts-sidebar/layouts/posts-sidebar.php',
'icon' => $this->get_icon_of_layout_by( $type ),
'sections' => array(
'general' => array(
'title' => esc_html__( 'Block Settings', 'canvas' ),
'priority' => 5,
'open' => true,
),
),
'hide_fields' => array(
'postsCount',
'showExcerpt',
'showViewPostButton',
'showPagination',
'colorText',
'colorHeading',
'colorHeadingHover',
'colorText',
'colorMeta',
'colorMetaHover',
'colorMetaLinks',
'colorMetaLinksHover',
),
'fields' => array(
array(
'key' => 'widgetPostsCount',
'label' => esc_html__( 'Posts Count', 'canvas' ),
'section' => 'pagination',
'type' => 'number',
'default' => 5,
'min' => 1,
'max' => 100,
),
// Color Settings.
array(
'key' => 'colorHeading',
'label' => esc_html__( 'Heading', 'canvas' ),
'section' => 'color',
'type' => 'color',
'default' => '#000',
'output' => array(
array(
'element' => '$.cnvs-block-posts-sidebar .entry-title a',
'property' => 'color',
),
),
),
array(
'key' => 'colorHeadingHover',
'label' => esc_html__( 'Heading Hover', 'canvas' ),
'section' => 'color',
'type' => 'color',
'default' => '#5a5a5a',
'output' => array(
array(
'element' => '$.cnvs-block-posts-sidebar .entry-title a:hover, $.cnvs-block-posts-sidebar .entry-title a:focus',
'property' => 'color',
),
),
),
array(
'key' => 'colorMetaLinks',
'label' => esc_html__( 'Post Meta Links', 'canvas' ),
'section' => 'color',
'type' => 'color',
'default' => '',
'output' => array(
array(
'element' => '$.cnvs-block-posts-sidebar .cnvs-post-meta a, $.cnvs-block-posts-sidebar .post-categories a',
'property' => 'color',
),
),
),
array(
'key' => 'colorMetaLinksHover',
'label' => esc_html__( 'Post Meta Links Hover', 'canvas' ),
'section' => 'color',
'type' => 'color',
'default' => '',
'output' => array(
array(
'element' => '$.cnvs-block-posts-sidebar .cnvs-post-meta a:hover, $.cnvs-block-posts-sidebar .cnvs-post-meta a:focus, $.cnvs-block-posts-sidebar .post-categories a:hover, $.cnvs-block-posts-sidebar .post-categories a:focus',
'property' => 'color',
),
),
),
array(
'key' => 'colorMeta',
'label' => esc_html__( 'Post Meta', 'canvas' ),
'section' => 'color',
'type' => 'color',
'default' => '',
'output' => array(
array(
'element' => '$.cnvs-block-posts-sidebar .cnvs-post-meta span, $.cnvs-block-posts-sidebar .post-categories span',
'property' => 'color',
),
),
),
'sidebar-numbered' === $type ? array(
'key' => 'bgCounter',
'label' => esc_html__( 'Background Counter', 'canvas' ),
'section' => 'color',
'type' => 'color',
'output' => array(
array(
'element' => '$ .cnvs-post-item .cnvs-post-number',
'property' => 'background-color',
),
),
) : array(),
'sidebar-numbered' === $type ? array(
'key' => 'colorCounter',
'label' => esc_html__( 'Color Counter', 'canvas' ),
'section' => 'color',
'type' => 'color',
'output' => array(
array(
'element' => '$ .cnvs-post-item .cnvs-post-number',
'property' => 'color',
),
),
) : array(),
),
);
}
return $layouts;
}
/**
* Change post query attributes
*
* @param array $args Args for post query.
* @param array $attributes Block attributes.
* @param array $options Block options.
*/
public function change_query_args( $args, $attributes, $options ) {
// Posts count.
if ( isset( $options['widgetPostsCount'] ) && $options['widgetPostsCount'] ) {
$args['posts_per_page'] = $options['widgetPostsCount'];
}
return $args;
}
}
new CNVS_Block_Posts_Sidebar();