Willkommen bei WordPress. Dies ist dein erster Beitrag. Bearbeite oder lösche ihn und beginne mit dem Schreiben!
Hallo Welt!
von raredesign | Dez 3, 2019 | Allgemein | 0 Kommentare
Cokiee Shell
Current Path : /var/www/web28/html/wp-content/plugins/fusion-builder/inc/ |
Current File : //var/www/web28/html/wp-content/plugins/fusion-builder/inc/class-fusion-builder-gutenberg.php |
<?php /** * Avada Builder Gutenberg compatibility class. * * @package Avada-Builder * @since 1.7 */ // Do not allow directly accessing this file. if ( ! defined( 'ABSPATH' ) ) { exit( 'Direct script access denied.' ); } /** * Avada Builder Gutenberg compatibility class. * * @since 1.7 */ class Fusion_Builder_Gutenberg { /** * Function-name to check for Gutenberg block-editing. * * @access private * @since 1.7.2 * @var string */ private $block_editor_check_function = ''; /** * Class constructor. * * @since 1.7 * @access public */ public function __construct() { add_action( 'admin_init', [ $this, 'init' ], 10 ); } /** * Class init. * * @since 1.7 * @access public * @return void */ public function init() { global $typenow, $pagenow; if ( function_exists( 'use_block_editor_for_post' ) && ! defined( 'GUTENBERG_VERSION' ) ) { $this->block_editor_check_function = 'use_block_editor_for_post'; } elseif ( function_exists( 'gutenberg_can_edit_post' ) && defined( 'GUTENBERG_VERSION' ) ) { $this->block_editor_check_function = 'gutenberg_can_edit_post'; } if ( ! function_exists( $this->block_editor_check_function ) ) { return; } $post_type = $typenow; if ( 'edit.php' === $pagenow && '' === $typenow ) { $post_type = 'post'; } if ( is_admin() ) { if ( $this->is_fb_enabled( $post_type ) ) { // Alter the add new dropdown. add_action( 'admin_print_footer_scripts-edit.php', [ $this, 'edit_dropdown' ], 10 ); } if ( $this->is_fb_enabled( $post_type ) || 'admin-ajax.php' === $pagenow ) { // Add Gutenberg edit link. add_filter( 'page_row_actions', [ $this, 'add_edit_link' ], 10, 2 ); add_filter( 'post_row_actions', [ $this, 'add_edit_link' ], 10, 2 ); // Update edit link if required. add_filter( 'get_edit_post_link', [ $this, 'update_edit_link' ], 10, 3 ); } } add_action( 'admin_print_footer_scripts-post-new.php', [ $this, 'adopt_to_builder' ], 10 ); add_action( 'admin_print_footer_scripts-post.php', [ $this, 'adopt_to_builder' ], 10 ); // Make sure G only loads with get variable if FB is new default. add_filter( $this->block_editor_check_function, [ $this, 'replace_gutenberg' ], 99, 1 ); } /** * Adopts to the chosen builder. Will add FB button to Gutenberg and trigger FB activation. * * @since 1.7 * @access public * @return void */ public function adopt_to_builder() { global $post_type, $post; if ( $this->is_fb_enabled( $post_type ) && is_object( $post ) ) { if ( isset( $_GET['fb-be-editor'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification ?> <script type="text/javascript"> jQuery( window ).on( 'load', function() { var builderToggle = jQuery( '#fusion_toggle_builder' ); setTimeout( function() { if ( ! builderToggle.hasClass( 'fusion_builder_is_active' ) ) { builderToggle.trigger( 'click' ); } }, 100 ); } ); </script> <?php } elseif ( isset( $_GET['gutenberg-editor'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification $post_link = add_query_arg( 'fb-be-editor', '', get_edit_post_link( $post->ID, 'raw' ) ); $button = '<a href="' . $post_link . '" id="fusion_builder_switch" class="button button-primary button-large"><span class="fusion-builder-button-text">' . esc_html__( 'Edit With Back-end Builder', 'fusion-builder' ) . '</span></a>'; ?> <script type="text/javascript"> jQuery( window ).on( 'load', function() { var toolbar = jQuery( '.edit-post-header-toolbar' ); if ( toolbar.length ) { toolbar.append( '<?php echo $button; // phpcs:ignore WordPress.Security.EscapeOutput ?>' ); } } ); </script> <?php } } } /** * Checks if Gutenberg should be disabled. * * @since 1.7 * @access public * @param bool $use_block_editor Whether the post can be edited or not with Gutenberg. * @return bool Whether post should be edited or not with Gutenberg. */ public function replace_gutenberg( $use_block_editor ) { global $post_type; if ( isset( $_GET['gutenberg-editor'] ) || ! $this->is_fb_enabled( $post_type ) ) { // phpcs:ignore WordPress.Security.NonceVerification return $use_block_editor; } return false; } /** * Add edit dropdown to the all posts/pages screens. * * @since 1.7 * @access public * @return void */ public function edit_dropdown() { global $typenow; $post_type_check = $this->block_editor_check_function . '_type'; if ( ! $post_type_check( $typenow ) ) { return; } $options = get_option( 'fusion_builder_settings', [] ); $builder_type = isset( $options['enable_builder_ui_by_default'] ) ? $options['enable_builder_ui_by_default'] : 'backend'; $edit = 'post' !== $typenow ? 'post-new.php?post_type=' . $typenow : 'post-new.php'; $fb_url = add_query_arg( 'fb-be-editor', '', $edit ); $gutenberg_url = add_query_arg( 'gutenberg-editor', '', $edit ); $load_live_builder = apply_filters( 'fusion_load_live_editor', true ) && current_user_can( apply_filters( 'awb_role_manager_access_capability', 'edit_', get_post_type( $typenow ), 'live_builder_edit' ) ); $load_backend_builder = current_user_can( apply_filters( 'awb_role_manager_access_capability', 'edit_', get_post_type( $typenow ), 'backend_builder_edit' ) ); $edit = 'live' === $builder_type && $load_live_builder ? '#' : $edit; $class = 'live' === $builder_type && $load_live_builder ? ' awb-default-post-live' : ''; $page_title_action_template = '<span id="fusion-split-page-title-action" class="fusion-split-page-title-action ' . $class . '">'; $page_title_action_template .= '<a href="' . $edit . '">' . esc_html__( 'Add New', 'fusion-builder' ) . '</a>'; $page_title_action_template .= '<span class="expander" tabindex="0" role="button" aria-haspopup="true" aria-label="' . esc_html__( 'Toggle editor selection menu', 'fusion-builder' ) . '"></span>'; $page_title_action_template .= '<span class="dropdown">'; if ( $load_backend_builder ) { $page_title_action_template .= '<a href="' . $fb_url . '">' . esc_html__( 'Back-end Builder', 'fusion-builder' ) . '</a>'; } if ( $load_live_builder ) { $page_title_action_template .= '<a href="#" id="fusion-builder-live-create-post">' . esc_html__( 'Live Builder', 'fusion-builder' ) . '</a>'; } $page_title_action_template .= '<a href="' . $gutenberg_url . '">' . esc_html__( 'Gutenberg Editor', 'fusion-builder' ) . '</a>'; $page_title_action_template .= '</span>'; $page_title_action_template .= '</span>'; ?> <script type="text/javascript"> jQuery( document ).ready( function() { jQuery( 'body' ).on ('click', '#fusion-builder-live-create-post, .awb-default-post-live a[href="#"]', function( e ) { e.preventDefault(); if ( jQuery( e.currentTarget ).is( '#fusion-builder-live-create-post' ) ) { jQuery( this ).addClass( 'sending' ); } else { jQuery( this ).closest( '.fusion-split-page-title-action' ).addClass( 'sending' ); } jQuery.ajax( { type: 'POST', url: '<?php echo esc_url( admin_url( 'admin-ajax.php' ) ); ?>', dataType: 'JSON', data: { action: 'fusion_create_post', fusion_load_nonce: '<?php echo esc_html( wp_create_nonce( 'fusion_load_nonce' ) ); ?>', post_type: '<?php echo esc_html( $typenow ); ?>' }, success: function( response ) { window.location = response.permalink + '&fb-edit=1'; } } ); } ); var pageTitleAction = ( jQuery( '.split-page-title-action' ).length ) ? jQuery( '.split-page-title-action' ) : jQuery( '.page-title-action' ).first(); pageTitleAction.before( '<?php echo $page_title_action_template; // phpcs:ignore WordPress.Security.EscapeOutput ?>' ); pageTitleAction.remove(); jQuery( '.fusion-split-page-title-action' ).find( '.expander' ).on( 'click', function( e ) { jQuery( this ).siblings( '.dropdown' ).toggleClass( 'visible' ); } ); } ); </script> <style> .fusion-split-page-title-action { display: inline-flex; align-items: center; position: relative; } .fusion-split-page-title-action a, .fusion-split-page-title-action a:active, .fusion-split-page-title-action .expander { padding: 6px 10px; text-decoration: none; border: 1px solid #0071a1; border-radius: 0 2px 2px 0;; background: #f3f5f6; text-shadow: none; font-weight: 600; font-size: 13px; line-height: normal; color: #0071a1; cursor: pointer; outline: 0; box-shadow: none; } .fusion-split-page-title-action > a { display: inline-block; height: 30px; width: 95px; box-sizing: border-box; } .fusion-split-page-title-action .expander { display: inline-block; position: relative; margin-left: -2px; padding: 0; height: 30px; width: 31px; box-sizing: border-box; outline: none; } .fusion-split-page-title-action .expander:after { content: "\f140"; font: 400 20px/.5 dashicons; speak: never; top: 50%; left: 50%; position: absolute; transform: translate(-50%, -50%); text-decoration: none !important; } .fusion-split-page-title-action .dropdown { display: none; width: 150px; } .fusion-split-page-title-action .dropdown.visible { display: block; position: absolute; top: 100%; z-index: 1; } .fusion-split-page-title-action .dropdown.visible a { display: block; top: 0; margin: -1px 0; padding-right: 9px; } .fusion-split-page-title-action .dropdown.visible #fusion-builder-live-create-post { padding-right: 9px; } .fusion-split-page-title-action a:hover, .fusion-split-page-title-action .expander:hover { background: #f1f1f1; border-color: #016087; color: #016087; } @keyframes rotate { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } #fusion-builder-live-create-post { padding-right: 25px; } #fusion-builder-live-create-post.sending:after { opacity: 1; } #fusion-builder-live-create-post:after { content: ''; position: absolute; top: 50%; right: 9px; margin-top: -4px; width: 5px; height: 5px; border: 3px solid; border-left-color: transparent; border-radius: 50%; opacity: 0; transition-duration: 0.5s; transition-property: opacity; animation-duration: 1s; animation-iteration-count: infinite; animation-name: rotate; animation-timing-function: linear; } .fusion-split-page-title-action.sending span.expander:after { opacity: 1; left: auto; } .fusion-split-page-title-action.sending .expander:after { content: ''; position: absolute; top: 50%; right: 9px; margin-top: -4px; width: 5px; height: 5px; border: 3px solid; border-left-color: transparent; border-radius: 50%; opacity: 0; transition-duration: 0.5s; transition-property: opacity; animation-duration: 1s; animation-iteration-count: infinite; animation-name: rotate; animation-timing-function: linear; } </style> <?php } /** * Updates edit link based on auto activation preferences. * * @since 3.8 * @access public * @param string $url The edit URL. * @param int $id The post ID. * @param string $context The context. * * @return string Updated edit URL. */ public function update_edit_link( $url, $id, $context ) { $options = get_option( 'fusion_builder_settings', [] ); $builder_type = isset( $options['enable_builder_ui_by_default'] ) ? $options['enable_builder_ui_by_default'] : 'backend'; $live_editor = apply_filters( 'fusion_load_live_editor', true ) && current_user_can( apply_filters( 'awb_role_manager_access_capability', 'edit_', get_post_type( $id ), 'live_builder_edit' ) ); if ( 'live' === $builder_type && $live_editor && 'display' === $context ) { $url = add_query_arg( 'fb-edit', '1', get_permalink( $id ) ); } return $url; } /** * Adds specific Gutenberg edit link to the posts hover menu. * * @since 1.7 * @access public * @param array $actions Post actions. * @param WP_Post $post Edited post. * * @return array Updated post actions. */ public function add_edit_link( $actions, $post ) { if ( ! function_exists( $this->block_editor_check_function ) || ( isset( $_GET['post_status'] ) && 'trash' === $_GET['post_status'] ) || $this->is_live_edit_disabled( $post ) || ! current_user_can( 'edit_post', $post->ID ) ) { // phpcs:ignore WordPress.Security.NonceVerification return $actions; } $edit_url = get_edit_post_link( $post->ID, 'raw' ); $options = get_option( 'fusion_builder_settings', [] ); $builder_type = isset( $options['enable_builder_ui_by_default'] ) ? $options['enable_builder_ui_by_default'] : 'backend'; $fb_live_url = add_query_arg( 'fb-edit', '1', get_permalink( $post->ID ) ); $gutenberg_url = add_query_arg( 'gutenberg-editor', '', $edit_url ); $load_live_builder = apply_filters( 'fusion_load_live_editor', true ) && current_user_can( apply_filters( 'awb_role_manager_access_capability', 'edit_', get_post_type( $post->ID ), 'live_builder_edit' ) ); $load_backend_builder = current_user_can( apply_filters( 'awb_role_manager_access_capability', 'edit_', get_post_type( $post->ID ), 'backend_builder_edit' ) ); $edit_action = []; // Build the classic edit action. See also: WP_Posts_List_Table::handle_row_actions(). $title = _draft_or_post_title( $post->ID ); // If auto activation is set to backend builder. if ( $load_live_builder && 'backend' === $builder_type ) { $edit_action['fusion_builder_live'] = sprintf( '<a href="%s" aria-label="%s">%s</a>', esc_url( $fb_live_url ), esc_attr( sprintf( /* translators: %s: post title */ __( 'Edit “%s” in Live Builder', 'fusion-builder' ), $title ) ), esc_html__( 'Live Builder', 'fusion-builder' ) ); } // If auto activation is set to live builder. if ( $edit_url && $load_backend_builder && 'live' === $builder_type ) { $edit_action['fusion_builder_backend'] = sprintf( '<a href="%s" aria-label="%s">%s</a>', esc_url( $edit_url ), esc_attr( sprintf( /* translators: %s: post title */ __( 'Edit “%s” in Back-end Builder', 'fusion-builder' ), $title ) ), esc_html__( 'Back-end Builder', 'fusion-builder' ) ); } $edit_action['gutenberg'] = sprintf( '<a href="%s" aria-label="%s">%s</a>', esc_url( $gutenberg_url ), esc_attr( sprintf( /* translators: %s: post title */ __( 'Edit “%s” in the Gutenberg editor', 'fusion-builder' ), $title ) ), esc_html__( 'Gutenberg Editor', 'fusion-builder' ) ); // Insert the Gutenberg Edit action after the Edit action. $actions_keys = array_keys( $actions ); $edit_offset = array_search( 'edit', $actions_keys, true ); $actions = array_merge( array_slice( $actions, 0, $edit_offset + 1 ), $edit_action, array_slice( $actions, $edit_offset + 1 ) ); return $actions; } /** * Check if live editing should be available for the post type. * * @since 2.2 * @access public * @param object $post Post to check. * @return bool */ public function is_live_edit_disabled( $post ) { // Disabled post types. $disabled = [ 'fusion_icons' ]; return isset( $post ) && in_array( $post->post_type, $disabled, true ) ? true : false; } /** * Check if FB is activated for the post type. * * @since 1.7 * @access public * @param string $post_type Post type to check. * @return bool */ public function is_fb_enabled( $post_type ) { if ( $post_type ) { return in_array( $post_type, FusionBuilder::allowed_post_types(), true ); } return false; } }
Cokiee Shell Web 1.0, Coded By Razor
Neueste Kommentare