diff --git a/assets/admin/index.scss b/assets/admin/index.scss index aff17e3d..a31198ab 100644 --- a/assets/admin/index.scss +++ b/assets/admin/index.scss @@ -30,10 +30,6 @@ width: 200px; } - tbody .check-column input { - margin-top: 9px !important; - } - @media screen and (max-width: 782px) { /* Hide column on mobile device */ th.column-lazyblocks_post_icon { @@ -59,52 +55,16 @@ } } - /** - * Toggle switch. - */ - $toggle_width: 28px; - $toggle_circle_size: 13px; - $toggle_margin: 2px; - - .column-lazyblocks_post_activate { - width: 35px; + .lazyblocks-activate-block { + color: #139a35; } - - .lazyblocks-block-activation-switch { - position: relative; - display: block; - background-color: #d9d9d9; - border-radius: 17px; - height: 17px; - margin-top: 12.5px; - width: $toggle_width; - } - - .lazyblocks-block-activation-switch::before { - background-color: #fff; - border-radius: 50%; - content: ""; - display: inline-block; - height: $toggle_circle_size; - margin: $toggle_margin; - transition: transform 0.2s; - width: $toggle_circle_size; - } - - .lazyblocks-active-block { - background-color: #007cba; - } - - .lazyblocks-active-block.lazyblocks-block-activation-switch::before { - transform: translateX($toggle_width - $toggle_circle_size - $toggle_margin * 2); - } - - .lazyblocks-active-block.lazyblocks-block-activation-switch:hover::before { - transform: translateX($toggle_width - $toggle_circle_size - $toggle_margin * 2 - 1px); + .lazyblocks-deactivate-block { + color: #c17d39; } - .lazyblocks-block-activation-switch:hover::before { - transform: translateX(1px); + .lazyblocks-row-active th.check-column { + border-left: 1px solid #007cba; + box-shadow: -1px 0 0 #007cba; } } diff --git a/build/admin-style-rtl.css b/build/admin-style-rtl.css index 1a35b6c1..5148dd10 100644 --- a/build/admin-style-rtl.css +++ b/build/admin-style-rtl.css @@ -1 +1 @@ -.post-type-lazyblocks .lzb-admin-block-icon{align-items:center;background:#e8e8e8;border-radius:8px;color:#4f5052;display:flex;font-size:16px;height:42px;justify-content:center;width:42px}.post-type-lazyblocks .lzb-admin-block-icon .dashicons{font-size:1em;height:1em;width:auto}.post-type-lazyblocks .wp-list-table th.column-lazyblocks_post_icon{text-align:center;width:42px}.post-type-lazyblocks .wp-list-table th.column-lazyblocks_post_category{width:200px}.post-type-lazyblocks .wp-list-table tbody .check-column input{margin-top:9px!important}@media screen and (max-width:782px){.post-type-lazyblocks .wp-list-table th.column-lazyblocks_post_icon{display:none}.post-type-lazyblocks .wp-list-table tr:not(.inline-edit-row,.no-items) td.column-lazyblocks_post_icon{float:left;min-width:42px;width:42px!important}.post-type-lazyblocks .wp-list-table tr:not(.inline-edit-row,.no-items) td.column-lazyblocks_post_icon:before{content:none}.post-type-lazyblocks .wp-list-table tr:not(.inline-edit-row,.no-items) td.column-title{clear:right;overflow:hidden}}.post-type-lazyblocks .column-lazyblocks_post_activate{width:35px}.post-type-lazyblocks .lazyblocks-block-activation-switch{background-color:#d9d9d9;border-radius:17px;display:block;height:17px;margin-top:12.5px;position:relative;width:28px}.post-type-lazyblocks .lazyblocks-block-activation-switch:before{background-color:#fff;border-radius:50%;content:"";display:inline-block;height:13px;margin:2px;transition:transform .2s;width:13px}.post-type-lazyblocks .lazyblocks-active-block{background-color:#007cba}.post-type-lazyblocks .lazyblocks-active-block.lazyblocks-block-activation-switch:before{transform:translateX(11px)}.post-type-lazyblocks .lazyblocks-active-block.lazyblocks-block-activation-switch:hover:before{transform:translateX(10px)}.post-type-lazyblocks .lazyblocks-block-activation-switch:hover:before{transform:translateX(1px)}.lzb-admin-toolbar{background-color:#fff;border-bottom:1px solid #d7dbde}@media screen and (max-width:600px){.lzb-admin-toolbar{display:none}}#wpcontent .lzb-admin-toolbar{margin-left:-20px;padding-left:20px}.lzb-admin-toolbar h2{display:inline-block;font-size:14px;line-height:2.5714;margin:0 10px 0 0;padding:5px 0}.lzb-admin-toolbar h2 img{margin-right:5px;margin-top:-5px;opacity:.75;vertical-align:middle}.lzb-admin-toolbar .lzb-admin-toolbar-tab{color:inherit;display:inline-block;font-size:14px;line-height:2.5714;margin:0 2px;padding:5px 10px;text-decoration:none}.lzb-admin-toolbar .lzb-admin-toolbar-tab.is-active{border-bottom:3px solid #007cba;padding-bottom:2px}.lzb-admin-toolbar .lzb-admin-toolbar-tab:focus,.lzb-admin-toolbar .lzb-admin-toolbar-tab:hover{color:#007cba}.lzb-admin-toolbar .lzb-admin-toolbar-tab .dashicons{line-height:2}#adminmenu a[href*="lazyblocks.com/pro/"],.lzb-admin-toolbar a[href*="lazyblocks.com/pro/"],.wp-list-table.plugins a[href*="lazyblocks.com/pro/"]{color:#e24a62;font-weight:700}#adminmenu a[href*="lazyblocks.com/pro/"] .dashicons,.lzb-admin-toolbar a[href*="lazyblocks.com/pro/"] .dashicons,.wp-list-table.plugins a[href*="lazyblocks.com/pro/"] .dashicons{transition:none}#adminmenu a[href*="lazyblocks.com/pro/"]:focus,#adminmenu a[href*="lazyblocks.com/pro/"]:hover,.lzb-admin-toolbar a[href*="lazyblocks.com/pro/"]:focus,.lzb-admin-toolbar a[href*="lazyblocks.com/pro/"]:hover,.wp-list-table.plugins a[href*="lazyblocks.com/pro/"]:focus,.wp-list-table.plugins a[href*="lazyblocks.com/pro/"]:hover{color:#e11937} +.post-type-lazyblocks .lzb-admin-block-icon{align-items:center;background:#e8e8e8;border-radius:8px;color:#4f5052;display:flex;font-size:16px;height:42px;justify-content:center;width:42px}.post-type-lazyblocks .lzb-admin-block-icon .dashicons{font-size:1em;height:1em;width:auto}.post-type-lazyblocks .wp-list-table th.column-lazyblocks_post_icon{text-align:center;width:42px}.post-type-lazyblocks .wp-list-table th.column-lazyblocks_post_category{width:200px}@media screen and (max-width:782px){.post-type-lazyblocks .wp-list-table th.column-lazyblocks_post_icon{display:none}.post-type-lazyblocks .wp-list-table tr:not(.inline-edit-row,.no-items) td.column-lazyblocks_post_icon{float:left;min-width:42px;width:42px!important}.post-type-lazyblocks .wp-list-table tr:not(.inline-edit-row,.no-items) td.column-lazyblocks_post_icon:before{content:none}.post-type-lazyblocks .wp-list-table tr:not(.inline-edit-row,.no-items) td.column-title{clear:right;overflow:hidden}}.post-type-lazyblocks .lazyblocks-activate-block{color:#139a35}.post-type-lazyblocks .lazyblocks-deactivate-block{color:#c17d39}.post-type-lazyblocks .lazyblocks-row-active th.check-column{border-left:1px solid #007cba;box-shadow:-1px 0 0 #007cba}.lzb-admin-toolbar{background-color:#fff;border-bottom:1px solid #d7dbde}@media screen and (max-width:600px){.lzb-admin-toolbar{display:none}}#wpcontent .lzb-admin-toolbar{margin-left:-20px;padding-left:20px}.lzb-admin-toolbar h2{display:inline-block;font-size:14px;line-height:2.5714;margin:0 10px 0 0;padding:5px 0}.lzb-admin-toolbar h2 img{margin-right:5px;margin-top:-5px;opacity:.75;vertical-align:middle}.lzb-admin-toolbar .lzb-admin-toolbar-tab{color:inherit;display:inline-block;font-size:14px;line-height:2.5714;margin:0 2px;padding:5px 10px;text-decoration:none}.lzb-admin-toolbar .lzb-admin-toolbar-tab.is-active{border-bottom:3px solid #007cba;padding-bottom:2px}.lzb-admin-toolbar .lzb-admin-toolbar-tab:focus,.lzb-admin-toolbar .lzb-admin-toolbar-tab:hover{color:#007cba}.lzb-admin-toolbar .lzb-admin-toolbar-tab .dashicons{line-height:2}#adminmenu a[href*="lazyblocks.com/pro/"],.lzb-admin-toolbar a[href*="lazyblocks.com/pro/"],.wp-list-table.plugins a[href*="lazyblocks.com/pro/"]{color:#e24a62;font-weight:700}#adminmenu a[href*="lazyblocks.com/pro/"] .dashicons,.lzb-admin-toolbar a[href*="lazyblocks.com/pro/"] .dashicons,.wp-list-table.plugins a[href*="lazyblocks.com/pro/"] .dashicons{transition:none}#adminmenu a[href*="lazyblocks.com/pro/"]:focus,#adminmenu a[href*="lazyblocks.com/pro/"]:hover,.lzb-admin-toolbar a[href*="lazyblocks.com/pro/"]:focus,.lzb-admin-toolbar a[href*="lazyblocks.com/pro/"]:hover,.wp-list-table.plugins a[href*="lazyblocks.com/pro/"]:focus,.wp-list-table.plugins a[href*="lazyblocks.com/pro/"]:hover{color:#e11937} diff --git a/build/admin-style.css b/build/admin-style.css index 1a35b6c1..5148dd10 100644 --- a/build/admin-style.css +++ b/build/admin-style.css @@ -1 +1 @@ -.post-type-lazyblocks .lzb-admin-block-icon{align-items:center;background:#e8e8e8;border-radius:8px;color:#4f5052;display:flex;font-size:16px;height:42px;justify-content:center;width:42px}.post-type-lazyblocks .lzb-admin-block-icon .dashicons{font-size:1em;height:1em;width:auto}.post-type-lazyblocks .wp-list-table th.column-lazyblocks_post_icon{text-align:center;width:42px}.post-type-lazyblocks .wp-list-table th.column-lazyblocks_post_category{width:200px}.post-type-lazyblocks .wp-list-table tbody .check-column input{margin-top:9px!important}@media screen and (max-width:782px){.post-type-lazyblocks .wp-list-table th.column-lazyblocks_post_icon{display:none}.post-type-lazyblocks .wp-list-table tr:not(.inline-edit-row,.no-items) td.column-lazyblocks_post_icon{float:left;min-width:42px;width:42px!important}.post-type-lazyblocks .wp-list-table tr:not(.inline-edit-row,.no-items) td.column-lazyblocks_post_icon:before{content:none}.post-type-lazyblocks .wp-list-table tr:not(.inline-edit-row,.no-items) td.column-title{clear:right;overflow:hidden}}.post-type-lazyblocks .column-lazyblocks_post_activate{width:35px}.post-type-lazyblocks .lazyblocks-block-activation-switch{background-color:#d9d9d9;border-radius:17px;display:block;height:17px;margin-top:12.5px;position:relative;width:28px}.post-type-lazyblocks .lazyblocks-block-activation-switch:before{background-color:#fff;border-radius:50%;content:"";display:inline-block;height:13px;margin:2px;transition:transform .2s;width:13px}.post-type-lazyblocks .lazyblocks-active-block{background-color:#007cba}.post-type-lazyblocks .lazyblocks-active-block.lazyblocks-block-activation-switch:before{transform:translateX(11px)}.post-type-lazyblocks .lazyblocks-active-block.lazyblocks-block-activation-switch:hover:before{transform:translateX(10px)}.post-type-lazyblocks .lazyblocks-block-activation-switch:hover:before{transform:translateX(1px)}.lzb-admin-toolbar{background-color:#fff;border-bottom:1px solid #d7dbde}@media screen and (max-width:600px){.lzb-admin-toolbar{display:none}}#wpcontent .lzb-admin-toolbar{margin-left:-20px;padding-left:20px}.lzb-admin-toolbar h2{display:inline-block;font-size:14px;line-height:2.5714;margin:0 10px 0 0;padding:5px 0}.lzb-admin-toolbar h2 img{margin-right:5px;margin-top:-5px;opacity:.75;vertical-align:middle}.lzb-admin-toolbar .lzb-admin-toolbar-tab{color:inherit;display:inline-block;font-size:14px;line-height:2.5714;margin:0 2px;padding:5px 10px;text-decoration:none}.lzb-admin-toolbar .lzb-admin-toolbar-tab.is-active{border-bottom:3px solid #007cba;padding-bottom:2px}.lzb-admin-toolbar .lzb-admin-toolbar-tab:focus,.lzb-admin-toolbar .lzb-admin-toolbar-tab:hover{color:#007cba}.lzb-admin-toolbar .lzb-admin-toolbar-tab .dashicons{line-height:2}#adminmenu a[href*="lazyblocks.com/pro/"],.lzb-admin-toolbar a[href*="lazyblocks.com/pro/"],.wp-list-table.plugins a[href*="lazyblocks.com/pro/"]{color:#e24a62;font-weight:700}#adminmenu a[href*="lazyblocks.com/pro/"] .dashicons,.lzb-admin-toolbar a[href*="lazyblocks.com/pro/"] .dashicons,.wp-list-table.plugins a[href*="lazyblocks.com/pro/"] .dashicons{transition:none}#adminmenu a[href*="lazyblocks.com/pro/"]:focus,#adminmenu a[href*="lazyblocks.com/pro/"]:hover,.lzb-admin-toolbar a[href*="lazyblocks.com/pro/"]:focus,.lzb-admin-toolbar a[href*="lazyblocks.com/pro/"]:hover,.wp-list-table.plugins a[href*="lazyblocks.com/pro/"]:focus,.wp-list-table.plugins a[href*="lazyblocks.com/pro/"]:hover{color:#e11937} +.post-type-lazyblocks .lzb-admin-block-icon{align-items:center;background:#e8e8e8;border-radius:8px;color:#4f5052;display:flex;font-size:16px;height:42px;justify-content:center;width:42px}.post-type-lazyblocks .lzb-admin-block-icon .dashicons{font-size:1em;height:1em;width:auto}.post-type-lazyblocks .wp-list-table th.column-lazyblocks_post_icon{text-align:center;width:42px}.post-type-lazyblocks .wp-list-table th.column-lazyblocks_post_category{width:200px}@media screen and (max-width:782px){.post-type-lazyblocks .wp-list-table th.column-lazyblocks_post_icon{display:none}.post-type-lazyblocks .wp-list-table tr:not(.inline-edit-row,.no-items) td.column-lazyblocks_post_icon{float:left;min-width:42px;width:42px!important}.post-type-lazyblocks .wp-list-table tr:not(.inline-edit-row,.no-items) td.column-lazyblocks_post_icon:before{content:none}.post-type-lazyblocks .wp-list-table tr:not(.inline-edit-row,.no-items) td.column-title{clear:right;overflow:hidden}}.post-type-lazyblocks .lazyblocks-activate-block{color:#139a35}.post-type-lazyblocks .lazyblocks-deactivate-block{color:#c17d39}.post-type-lazyblocks .lazyblocks-row-active th.check-column{border-left:1px solid #007cba;box-shadow:-1px 0 0 #007cba}.lzb-admin-toolbar{background-color:#fff;border-bottom:1px solid #d7dbde}@media screen and (max-width:600px){.lzb-admin-toolbar{display:none}}#wpcontent .lzb-admin-toolbar{margin-left:-20px;padding-left:20px}.lzb-admin-toolbar h2{display:inline-block;font-size:14px;line-height:2.5714;margin:0 10px 0 0;padding:5px 0}.lzb-admin-toolbar h2 img{margin-right:5px;margin-top:-5px;opacity:.75;vertical-align:middle}.lzb-admin-toolbar .lzb-admin-toolbar-tab{color:inherit;display:inline-block;font-size:14px;line-height:2.5714;margin:0 2px;padding:5px 10px;text-decoration:none}.lzb-admin-toolbar .lzb-admin-toolbar-tab.is-active{border-bottom:3px solid #007cba;padding-bottom:2px}.lzb-admin-toolbar .lzb-admin-toolbar-tab:focus,.lzb-admin-toolbar .lzb-admin-toolbar-tab:hover{color:#007cba}.lzb-admin-toolbar .lzb-admin-toolbar-tab .dashicons{line-height:2}#adminmenu a[href*="lazyblocks.com/pro/"],.lzb-admin-toolbar a[href*="lazyblocks.com/pro/"],.wp-list-table.plugins a[href*="lazyblocks.com/pro/"]{color:#e24a62;font-weight:700}#adminmenu a[href*="lazyblocks.com/pro/"] .dashicons,.lzb-admin-toolbar a[href*="lazyblocks.com/pro/"] .dashicons,.wp-list-table.plugins a[href*="lazyblocks.com/pro/"] .dashicons{transition:none}#adminmenu a[href*="lazyblocks.com/pro/"]:focus,#adminmenu a[href*="lazyblocks.com/pro/"]:hover,.lzb-admin-toolbar a[href*="lazyblocks.com/pro/"]:focus,.lzb-admin-toolbar a[href*="lazyblocks.com/pro/"]:hover,.wp-list-table.plugins a[href*="lazyblocks.com/pro/"]:focus,.wp-list-table.plugins a[href*="lazyblocks.com/pro/"]:hover{color:#e11937} diff --git a/classes/class-blocks.php b/classes/class-blocks.php index ae101b72..ec05675c 100644 --- a/classes/class-blocks.php +++ b/classes/class-blocks.php @@ -62,7 +62,9 @@ public function __construct() { add_action( 'admin_init', array( $this, 'add_role_caps' ) ); // Additional elements in blocks list table. + add_filter( 'display_post_states', array( $this, 'display_post_states' ), 10, 2 ); add_filter( 'disable_months_dropdown', array( $this, 'disable_months_dropdown' ), 10, 2 ); + add_filter( 'post_class', array( $this, 'post_class' ), 10, 3 ); add_filter( 'post_row_actions', array( $this, 'post_row_actions' ), 10, 2 ); add_filter( 'manage_lazyblocks_posts_columns', array( $this, 'manage_posts_columns' ) ); add_filter( 'manage_lazyblocks_posts_custom_column', array( $this, 'manage_posts_custom_column' ), 10, 2 ); @@ -78,7 +80,6 @@ public function __construct() { add_action( 'save_post', array( $this, 'normalize_lazyblocks_post_status' ), 20, 2 ); // Disabled the display of statuses in the list of blocks and replaced the Draft title in the submenu to Inactive. - add_action( 'display_post_states', array( $this, 'disable_post_states' ), 20, 2 ); add_filter( 'views_edit-lazyblocks', array( $this, 'change_activation_views_labels' ) ); // add gutenberg blocks assets. @@ -94,15 +95,19 @@ public function __construct() { } /** - * Disabled display of post statuses in the list of all blocks. + * Display inactive state and disable other post statuses in the list of all blocks. * * @param array $post_states - Block States. * @param WP_Post $post - Post Object with all post parameters. * @return array */ - public function disable_post_states( $post_states, $post ) { + public function display_post_states( $post_states, $post ) { if ( 'lazyblocks' === $post->post_type ) { $post_states = array(); + + if ( 'draft' === $post->post_status ) { + $post_states['lazyblocks-inactive'] = __( 'Inactive', 'lazy-blocks' ); + } } return $post_states; @@ -285,6 +290,26 @@ public function disable_months_dropdown( $return, $post_type ) { return 'lazyblocks' === $post_type ? true : $return; } + /** + * Add active/inactive class to row + * + * @param array $classes Array of post classes. + * @param array $class Additional classes added to the post. + * @param int $post_id The post ID. + * @return array + */ + public function post_class( $classes, $class, $post_id ) { + if ( ! is_admin() ) { + return $classes; + } + + if ( get_post_type( $post_id ) === 'lazyblocks' ) { + $classes[] = get_post_status( $post_id ) === 'publish' ? 'lazyblocks-row-active' : 'lazyblocks-row-inactive'; + } + + return $classes; + } + /** * Add featured image in lazyblocks list * @@ -336,6 +361,22 @@ public function post_row_actions( $actions = array(), $post = null ) { ), esc_html__( 'Export', 'lazy-blocks' ) ), + 'activate' => sprintf( + '%4$s', + add_query_arg( + array( + ( 'publish' === $post->post_status ? 'lazyblocks_deactivate_block' : 'lazyblocks_activate_block' ) => $post->ID, + 'lazyblocks_activate_block_nonce' => wp_create_nonce( 'lzb-activate-block-nonce' ), + ) + ), + sprintf( + // translators: %1$ - post title. + 'publish' === $post->post_status ? esc_html__( 'Deactivate ā€œ%1$sā€', 'lazy-blocks' ) : esc_html__( 'Activate ā€œ%1$sā€', 'lazy-blocks' ), + get_the_title( $post->ID ) + ), + 'publish' === $post->post_status ? 'lazyblocks-deactivate-block' : 'lazyblocks-activate-block', + 'publish' === $post->post_status ? esc_html__( 'Deactivate', 'lazy-blocks' ) : esc_html__( 'Activate', 'lazy-blocks' ) + ), ), array_slice( $actions, 1 ) ); @@ -397,7 +438,6 @@ public function handle_bulk_actions_edit( $redirect, $action, $post_ids ) { public function manage_posts_columns( $columns = array() ) { $columns = array( 'cb' => $columns['cb'], - 'lazyblocks_post_activate' => '', 'lazyblocks_post_icon' => esc_html__( 'Icon', 'lazy-blocks' ), 'title' => $columns['title'], 'lazyblocks_post_category' => esc_html__( 'Category', 'lazy-blocks' ), @@ -415,25 +455,6 @@ public function manage_posts_columns( $columns = array() ) { public function manage_posts_custom_column( $column_name = false ) { global $post; - // Displaying buttons for block activation and deactivation. - if ( 'lazyblocks_post_activate' === $column_name ) { - $classes = 'lazyblocks-block-activation-switch'; - - if ( 'publish' === $post->post_status ) { - $classes .= ' lazyblocks-active-block'; - } - - $link = add_query_arg( - array( - 'lazyblocks_activate_block' => $post->ID, - 'lazyblocks_activate_block_action' => 'publish' === $post->post_status ? 'deactivate' : 'activate', - 'lazyblocks_activate_block_nonce' => wp_create_nonce( 'lzb-activate-block-nonce' ), - ) - ); - - echo ' '; - } - if ( 'lazyblocks_post_icon' === $column_name ) { $icon = $this->prepare_block_icon( $this->get_meta_value_by_id( 'lazyblocks_icon' ) ); $admin_url = get_edit_post_link( $post->ID ); diff --git a/classes/class-tools.php b/classes/class-tools.php index 2c7d6f64..03e0df7f 100644 --- a/classes/class-tools.php +++ b/classes/class-tools.php @@ -343,8 +343,8 @@ public function maybe_activate_block() { return; } - $post_id = filter_input( INPUT_GET, 'lazyblocks_activate_block', FILTER_SANITIZE_NUMBER_INT ); - $action = isset( $_GET['lazyblocks_activate_block_action'] ) ? sanitize_text_field( wp_unslash( $_GET['lazyblocks_activate_block_action'] ) ) : false; + $action = isset( $_GET['lazyblocks_activate_block'] ) ? 'activate' : ( isset( $_GET['lazyblocks_deactivate_block'] ) ? 'deactivate' : false ); + $post_id = filter_input( INPUT_GET, 'activate' === $action ? 'lazyblocks_activate_block' : 'lazyblocks_deactivate_block', FILTER_SANITIZE_NUMBER_INT ); if ( $post_id && $action && current_user_can( 'edit_lazyblock', $post_id ) ) { if ( 'activate' === $action ) {