quadmenu/lib/backend/walker/class-nav-menu-columns.php
2025-01-20 16:38:41 +05:30

345 lines
12 KiB
PHP

<?php
namespace QuadLayers\QuadMenu\Backend\Walker;
if ( ! defined( 'ABSPATH' ) ) {
die( '-1' );
}
use QuadLayers\QuadMenu\Backend\Settings;
use QuadLayers\QuadMenu\Plugin;
/**
* Nav_Menu_Columns Class ex QuadMenu_Nav_Menu_Column
*/
class Nav_Menu_Columns extends Settings {
public static $instance;
public function __construct() {
add_filter( 'quadmenu_edit_nav_menu_walker', array( $this, 'add_nav_menu_item_column' ), 10, 3 );
}
function add_nav_menu_item_column( $walker_class_name, $menu_id = null, $menu_obj = null, $menu_items = null ) {
if ( ! empty( $menu_obj->menu_item_parent ) && ! empty( $menu_obj->quadmenu ) && $menu_obj->quadmenu === 'column' ) {
return __CLASS__;
}
return $walker_class_name;
}
public function walk( $elements, $max_depth ) {
$output = '';
foreach ( $elements as $e ) {
$output .= $this->column( $e );
}
return $output;
wp_die();
}
public function column( $column_obj, $menu_id = 0 ) {
ob_start();
?>
<div id="column_<?php echo esc_attr( $column_obj->ID ); ?>" class="quadmenu-column quadmenu-item-depth-2 <?php echo join( ' ', array_map( 'sanitize_html_class', $column_obj->columns ) ); ?>" data-columns="<?php echo join( ' ', array_map( 'sanitize_html_class', $column_obj->columns ) ); ?>" data-menu_item_id="<?php echo esc_attr( $column_obj->ID ); ?>">
<div class="inner">
<div class="action-top clearfix">
<div class="actions">
<!--<a class="option contract" title="<?php echo esc_attr( esc_html__( 'Contract', 'quadmenu' ) ); ?>"></a>
<a class="option expand" title="<?php echo esc_attr( esc_html__( 'Expand', 'quadmenu' ) ); ?>"></a>-->
<a class="option edit" title="<?php esc_html_e( 'Edit', 'quadmenu' ); ?>"></a>
<a class="option remove" title="<?php esc_html_e( 'Remove', 'quadmenu' ); ?>"></a>
<span class="spinner"></span>
</div>
</div>
<div class="settings">
<?php echo $this->form( $column_obj, 1, array( 'columns' ) ); ?>
</div>
<ul id="quadmenu-column-items-<?php echo esc_attr( $column_obj->ID ); ?>" class="items add-quadmenu-column-item sortable-area" data-sortable-items=".quadmenu-column-item" data-sortable-handle=".action-top" data-sortable-connect=".items" data-menu_item_parent_id="<?php echo esc_attr( $column_obj->ID ); ?>">
<?php
$items = $this->get_children_nav_menu_items( $menu_id, $column_obj->ID );
if ( is_array( $items ) && count( $items ) ) :
foreach ( $items as $item ) :
$menu_obj = Plugin::wp_setup_nav_menu_item( $item['id'] );
$walker_class_name = apply_filters( 'quadmenu_edit_nav_menu_walker', 'Walker_Nav_Menu_Edit', null, $menu_obj, null );
require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
if ( class_exists( $walker_class_name ) ) {
$args = array(
'after' => '',
'before' => '',
'link_after' => '',
'link_before' => '',
'walker' => new $walker_class_name(),
);
echo walk_nav_menu_tree( array( $menu_obj ), 0, (object) $args );
}
endforeach;
endif;
?>
</ul>
</div>
</div>
<?php
return ob_get_clean();
}
public function columns( $menu_obj, $menu_id = 0 ) {
$columns = $this->get_children_nav_menu_items( $menu_id, $menu_obj->ID );
ob_start();
$w4 = array(
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-4' ),
),
);
$w12 = array(
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-12' ),
),
);
$w6w6 = array(
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-6' ),
),
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-6' ),
),
);
$w4w4w4 = array(
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-4' ),
),
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-4' ),
),
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-4' ),
),
);
$w3w3w3w3 = array(
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-3' ),
),
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-3' ),
),
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-3' ),
),
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-3' ),
),
);
$w2w2w2w2w2w2 = array(
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-2' ),
),
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-2' ),
),
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-2' ),
),
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-2' ),
),
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-2' ),
),
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-2' ),
),
);
$w4w8 = array(
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-4' ),
),
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-8' ),
),
);
$w3w6w3 = array(
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-3' ),
),
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-6' ),
),
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-3' ),
),
);
$w2w10 = array(
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-2' ),
),
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-10' ),
),
);
$w2w8w2 = array(
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-2' ),
),
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-8' ),
),
array(
'quadmenu' => 'column',
'columns' => array( 'col-xs-12', 'col-sm-2' ),
),
);
?>
<div id="columns_<?php echo esc_attr( $menu_obj->ID ); ?>" class="quadmenu-columns sortable-area row" data-drop-area="drop-column" data-sortable-items=".quadmenu-column" data-sortable-handle=".action-top" data-menu_item_parent_id="<?php echo esc_attr( $menu_obj->ID ); ?>">
<ul role="tablist">
<span class="spinner"></span>
<li>
<a href="#" class="submit-add-to-quadmenu-column" data-menu_item_type="custom" data-menu_item_quadmenu="<?php echo htmlspecialchars( json_encode( $w4 ), ENT_QUOTES, 'UTF-8' ); ?>" data-menu_item_url="#column" data-menu_item_title="<?php esc_html_e( 'Column', 'quadmenu' ); ?>" data-menu_item_parent=".quadmenu-columns" data-menu_item_parent_id="<?php echo esc_attr( $menu_obj->ID ); ?>">
</a>
</li>
<li>
<a href="#" class="submit-add-to-quadmenu-column" data-menu_item_type="custom" data-menu_item_quadmenu="<?php echo htmlspecialchars( json_encode( $w12 ), ENT_QUOTES, 'UTF-8' ); ?>" data-menu_item_url="#column" data-menu_item_title="<?php esc_html_e( 'Column', 'quadmenu' ); ?>" data-menu_item_parent=".quadmenu-columns" data-menu_item_parent_id="<?php echo esc_attr( $menu_obj->ID ); ?>">
<div class="col col-auto">
</div>
</a>
</li>
<li>
<a href="#" class="submit-add-to-quadmenu-column" data-menu_item_type="custom" data-menu_item_quadmenu="<?php echo htmlspecialchars( json_encode( $w6w6 ), ENT_QUOTES, 'UTF-8' ); ?>" data-menu_item_url="#column" data-menu_item_title="<?php esc_html_e( 'Column', 'quadmenu' ); ?>" data-menu_item_parent=".quadmenu-columns" data-menu_item_parent_id="<?php echo esc_attr( $menu_obj->ID ); ?>">
<div class="col col-auto"></div>
<div class="col col-auto"></div>
</a>
</li>
<li>
<a href="#" class="submit-add-to-quadmenu-column" data-menu_item_type="custom" data-menu_item_quadmenu="<?php echo htmlspecialchars( json_encode( $w4w4w4 ), ENT_QUOTES, 'UTF-8' ); ?>" data-menu_item_url="#column" data-menu_item_title="<?php esc_html_e( 'Column', 'quadmenu' ); ?>" data-menu_item_parent=".quadmenu-columns" data-menu_item_parent_id="<?php echo esc_attr( $menu_obj->ID ); ?>">
<div class="col col-auto"></div>
<div class="col col-auto"></div>
<div class="col col-auto"></div>
</a>
</li>
<li>
<a href="#" class="submit-add-to-quadmenu-column" data-menu_item_type="custom" data-menu_item_quadmenu="<?php echo htmlspecialchars( json_encode( $w3w3w3w3 ), ENT_QUOTES, 'UTF-8' ); ?>" data-menu_item_url="#column" data-menu_item_title="<?php esc_html_e( 'Column', 'quadmenu' ); ?>" data-menu_item_parent=".quadmenu-columns" data-menu_item_parent_id="<?php echo esc_attr( $menu_obj->ID ); ?>">
<div class="col col-auto"></div>
<div class="col col-auto"></div>
<div class="col col-auto"></div>
<div class="col col-auto"></div>
</a>
</li>
<li>
<a href="#" class="submit-add-to-quadmenu-column" data-menu_item_type="custom" data-menu_item_quadmenu="<?php echo htmlspecialchars( json_encode( $w2w2w2w2w2w2 ), ENT_QUOTES, 'UTF-8' ); ?>" data-menu_item_url="#column" data-menu_item_title="<?php esc_html_e( 'Column', 'quadmenu' ); ?>" data-menu_item_parent=".quadmenu-columns" data-menu_item_parent_id="<?php echo esc_attr( $menu_obj->ID ); ?>">
<div class="col col-auto"></div>
<div class="col col-auto"></div>
<div class="col col-auto"></div>
<div class="col col-auto"></div>
<div class="col col-auto"></div>
<div class="col col-auto"></div>
</a>
</li>
<li>
<a href="#" class="submit-add-to-quadmenu-column" data-menu_item_type="custom" data-menu_item_quadmenu="<?php echo htmlspecialchars( json_encode( $w4w8 ), ENT_QUOTES, 'UTF-8' ); ?>" data-menu_item_url="#column" data-menu_item_title="<?php esc_html_e( 'Column', 'quadmenu' ); ?>" data-menu_item_parent=".quadmenu-columns" data-menu_item_parent_id="<?php echo esc_attr( $menu_obj->ID ); ?>">
<div class="col col-4"></div>
<div class="col col-8"></div>
</a>
</li>
<li>
<a href="#" class="submit-add-to-quadmenu-column" data-menu_item_type="custom" data-menu_item_quadmenu="<?php echo htmlspecialchars( json_encode( $w3w6w3 ), ENT_QUOTES, 'UTF-8' ); ?>" data-menu_item_url="#column" data-menu_item_title="<?php esc_html_e( 'Column', 'quadmenu' ); ?>" data-menu_item_parent=".quadmenu-columns" data-menu_item_parent_id="<?php echo esc_attr( $menu_obj->ID ); ?>">
<div class="col col-3"></div>
<div class="col col-6"></div>
<div class="col col-3"></div>
</a>
</li>
<li>
<a href="#" class="submit-add-to-quadmenu-column" data-menu_item_type="custom" data-menu_item_quadmenu="<?php echo htmlspecialchars( json_encode( $w2w10 ), ENT_QUOTES, 'UTF-8' ); ?>" data-menu_item_url="#column" data-menu_item_title="<?php esc_html_e( 'Column', 'quadmenu' ); ?>" data-menu_item_parent=".quadmenu-columns" data-menu_item_parent_id="<?php echo esc_attr( $menu_obj->ID ); ?>">
<div class="col col-2"></div>
<div class="col col-10"></div>
</a>
</li>
<li>
<a href="#" class="submit-add-to-quadmenu-column" data-menu_item_type="custom" data-menu_item_quadmenu="<?php echo htmlspecialchars( json_encode( $w2w8w2 ), ENT_QUOTES, 'UTF-8' ); ?>" data-menu_item_url="#column" data-menu_item_title="<?php esc_html_e( 'Column', 'quadmenu' ); ?>" data-menu_item_parent=".quadmenu-columns" data-menu_item_parent_id="<?php echo esc_attr( $menu_obj->ID ); ?>">
<div class="col col-2"></div>
<div class="col col-8"></div>
<div class="col col-2"></div>
</a>
</li>
</ul>
<?php
if ( is_array( $columns ) && count( $columns ) ) :
foreach ( $columns as $column ) :
$column_obj = get_post( $column['id'] );
$column_obj = Plugin::wp_setup_nav_menu_item( $column['id'] );
if ( ! isset( $column_obj->quadmenu ) || $column_obj->quadmenu != 'column' ) {
continue;
}
echo $this->column( $column_obj, $menu_id );
endforeach;
endif;
?>
</div>
<?php
return ob_get_clean();
}
public static function instance() {
if ( ! isset( self::$instance ) ) {
self::$instance = new self();
}
return self::$instance;
}
}