first commit
This commit is contained in:
@@ -0,0 +1,248 @@
|
||||
<?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();
|
||||
Reference in New Issue
Block a user