Visualizzazione risultati 1 fino 7 di 7

Discussione: [Plugin] Risolvere un conflitto di programmazione tra "My Custom CSS" e "Wp Editor"

  1. #1
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Question [Plugin] Risolvere un conflitto di programmazione tra "My Custom CSS" e "Wp Editor"

    Il mio plugin (My Custom Css) va in conflitto con WP Editor a causa del fatto che usano entrambi le stesse librerie (CodeMirror)!
    Solo che il mio carica css e js solo nella pagina interessata, mentre WP Editor in tutto il pannello amministrativo -.-'

    ---

    Ciò che dovrei eliminare dal backend - almeno nella pagina di My Custom CSS, è:


    Ciò che dovrebbe eliminare dal sorgente del backend:
    Codice HTML:
    <link rel='stylesheet' id='wpeditor-css'  href='http://***/wp-content/plugins/wp-editor/wpeditor.css?ver=1.2' type='text/css' media='all' />
    <link rel='stylesheet' id='fancybox-css'  href='http://***/wp-content/plugins/wp-editor/extensions/fancybox/jquery.fancybox-1.3.4.css?ver=1.2' type='text/css' media='all' />
    <link rel='stylesheet' id='codemirror-css'  href='http://***/wp-content/plugins/wp-editor/extensions/codemirror/codemirror.css?ver=1.2' type='text/css' media='all' />
    <link rel='stylesheet' id='codemirror_dialog-css'  href='http://***/wp-content/plugins/wp-editor/extensions/codemirror/dialog.css?ver=1.2' type='text/css' media='all' />
    <link rel='stylesheet' id='codemirror_themes-css'  href='http://***/wp-content/plugins/wp-editor/extensions/codemirror/themes/themes.css?ver=1.2' type='text/css' media='all' />
    Più:
    Codice:
    <script type='text/javascript' src='http://***/wp-content/plugins/wp-edi...tor.js?ver=1.2'></script>
    <script type='text/javascript' src='http://***/wp-content/plugins/wp-edi...ack.js?ver=1.2'></script>
    <script type='text/javascript' src='http://***/wp-content/plugins/wp-edi...ror.js?ver=1.2'></script>
    <script type='text/javascript' src='http://***/wp-content/plugins/wp-edi...che.js?ver=1.2'></script>
    <script type='text/javascript' src='http://***/wp-content/plugins/wp-edi...php.js?ver=1.2'></script>
    <script type='text/javascript' src='http://***/wp-content/plugins/wp-edi...ipt.js?ver=1.2'></script>
    <script type='text/javascript' src='http://***/wp-content/plugins/wp-edi...css.js?ver=1.2'></script>
    <script type='text/javascript' src='http://***/wp-content/plugins/wp-edi...xml.js?ver=1.2'></script>
    <script type='text/javascript' src='http://***/wp-content/plugins/wp-edi...ike.js?ver=1.2'></script>
    <script type='text/javascript' src='http://***/wp-content/plugins/wp-edi...log.js?ver=1.2'></script>
    <script type='text/javascript' src='http://***/wp-content/plugins/wp-edi...rch.js?ver=1.2'></script>
    <script type='text/javascript' src='http://***/wp-content/plugins/wp-edi...sor.js?ver=1.2'></script>
    E dai sorgenti di Wp Editor ho rintracciato questa struttura (.classes/WPEditor.php):
    Codice PHP:
    public function registerDefaultStylesheet() {
    wp_register_style('wpeditor', WPEDITOR_URL . '/wpeditor.css', false, WPEDITOR_VERSION_NUMBER);
    wp_register_style('fancybox', WPEDITOR_URL . '/extensions/fancybox/jquery.fancybox-1.3.4.css', false, WPEDITOR_VERSION_NUMBER);
    wp_register_style('codemirror', WPEDITOR_URL . '/extensions/codemirror/codemirror.css', false, WPEDITOR_VERSION_NUMBER);
    wp_register_style('codemirror_dialog', WPEDITOR_URL . '/extensions/codemirror/dialog.css', false, WPEDITOR_VERSION_NUMBER);
    wp_register_style('codemirror_themes', WPEDITOR_URL . '/extensions/codemirror/themes/themes.css', false, WPEDITOR_VERSION_NUMBER);
    }

    public function
    registerDefaultScript() {
    wp_register_script('wpeditor', WPEDITOR_URL . '/js/wpeditor.js', false, WPEDITOR_VERSION_NUMBER);
    wp_register_script('wp-editor-posts-jquery', WPEDITOR_URL . '/js/posts-jquery.js', false, WPEDITOR_VERSION_NUMBER, true);
    wp_register_script('fancybox', WPEDITOR_URL . '/extensions/fancybox/js/jquery.fancybox-1.3.4.pack.js', false, WPEDITOR_VERSION_NUMBER);
    wp_register_script('codemirror', WPEDITOR_URL . '/extensions/codemirror/js/codemirror.js', false, WPEDITOR_VERSION_NUMBER);
    wp_register_script('codemirror_php', WPEDITOR_URL . '/extensions/codemirror/js/php.js', false, WPEDITOR_VERSION_NUMBER);
    wp_register_script('codemirror_javascript', WPEDITOR_URL . '/extensions/codemirror/js/javascript.js', false, WPEDITOR_VERSION_NUMBER);
    wp_register_script('codemirror_css', WPEDITOR_URL . '/extensions/codemirror/js/css.js', false, WPEDITOR_VERSION_NUMBER);
    wp_register_script('codemirror_xml', WPEDITOR_URL . '/extensions/codemirror/js/xml.js', false, WPEDITOR_VERSION_NUMBER);
    wp_register_script('codemirror_clike', WPEDITOR_URL . '/extensions/codemirror/js/clike.js', false, WPEDITOR_VERSION_NUMBER);
    wp_register_script('codemirror_dialog', WPEDITOR_URL . '/extensions/codemirror/js/dialog.js', false, WPEDITOR_VERSION_NUMBER);
    wp_register_script('codemirror_search', WPEDITOR_URL . '/extensions/codemirror/js/search.js', false, WPEDITOR_VERSION_NUMBER);
    wp_register_script('codemirror_searchcursor', WPEDITOR_URL . '/extensions/codemirror/js/searchcursor.js', false, WPEDITOR_VERSION_NUMBER);
    wp_register_script('codemirror_mustache', WPEDITOR_URL . '/extensions/codemirror/js/mustache.js', false, WPEDITOR_VERSION_NUMBER);
    //wp_register_script('codemirror_foldcode', WPEDITOR_URL . '/extensions/codemirror/js/foldcode.js');
    }
    Quindi avevo provato a disabilitare il tutto da My Custom CSS con questo codice:

    Codice PHP:
    <?php
    // Disable "WP Editor" in this page if is active: http://wordpress.org/extend/plugins/wp-editor/
    If (is_plugin_active("wp-editor/wpeditor.php")) {
    wp_deregister_style('wpeditor');
    wp_deregister_style('fancybox');
    wp_deregister_style('codemirror');
    wp_deregister_style('codemirror_dialog');
    wp_deregister_style('codemirror_themes');
    wp_deregister_script('wpeditor');
    wp_deregister_script('wp-editor-posts-jquery');
    wp_deregister_script('codemirror');
    wp_deregister_script('codemirror_php');
    wp_deregister_script('codemirror_javascript');
    wp_deregister_script('codemirror_css');
    wp_deregister_script('codemirror_xml');
    wp_deregister_script('codemirror_clike');
    wp_deregister_script('codemirror_dialog');
    wp_deregister_script('codemirror_search');
    wp_deregister_script('codemirror_searchcursor');
    wp_deregister_script('codemirror_mustache');
    }
    ?>
    Ma non mi funziona...
    -
    Qualche idea sul perché?

  2. #2
    Guest

    Predefinito

    Vado a naso.
    I plugin vengono eseguiti in ordine alfabetico. Il tuo vien prima di WP Editor ed è probabile che gli script non siano ancora stati registrati.

    Dovresti deregistrare lo script in una funzione da chiamare in corrispondenza dell'hook admin_init, con priorità molto elevata > 10 (in modo da farlo eseguire per ultimo).

  3. #3
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Così lo disabilita e basta (in generale, da tutte le pagine)
    -
    Forse dovrei fare un controllo aggiuntivo per verificare se sono dentro My Custom CSS (tu come faresti?)... :/
    -
    Inoltre come funziona questa storia della priorità? Cioè, per sicurezza assoluta potrei mettere "9999999999" ad esempio o cosa? :P
    Codice PHP:
    <?php
    /*
    Plugin Name: My Custom CSS
    Plugin URI: http://www.darkwolf.it/
    Description: With this plugin you can put custom css code without edit your theme and/or your plugins (really useful in case of any theme/plugin update).
    It contain also a syntax color and tab support for write a good css code.
    You can see in action (source code) here: http://vegamami.altervista.org/ :)
    Author: Salvatore Noschese - DarkWolf
    Version: 0.5
    Author URI: http://www.darkwolf.it/
    */

    //* Prevent Direct Access with homepage redirect
    if (!*defined*('*DB_*NAME')) {
    *
    header*('*Location*: ..*/..*/..*/');
    }
    // Inserisco asterischi perché vb cancella l'intero blocco :/

    function add_my_custom_css() {
    // Strip tag: Remove html tag from page! Just for security ;)
    $mycustomcss = strip_tags(get_option('my_custom_css'));
    if (!empty(
    $mycustomcss)) {
    echo
    "\n<!-- My Custom CSS Start -->\n<style type=\"text/css\">\n/* Plugin Author: Salvatore Noschese\nDarkWolf: http://www.darkwolf.it/ */\n\n".$mycustomcss."\n</style>\n<!-- My Custom CSS End -->\n";
    }
    }

    function
    mccss_admin() {
    $icon_url = WP_PLUGIN_URL."/".str_replace(basename( __FILE__),"",plugin_basename(__FILE__))."css-icon.png";
    $plugin_page = add_menu_page(__('My Custom CSS Panel','mccss'),__('My Custom CSS','mccss'), 'manage_options', 'my_custom_css', 'mccss_options', $icon_url, 61);
    add_action( 'admin_init', 'register_settings_mccss' );
    add_action( 'admin_head-'. $plugin_page, 'mccss_syntax' );

    // Disable "WP Editor" in this page if is active: http://wordpress.org/extend/plugins/wp-editor/
    If (is_plugin_active("wp-editor/wpeditor.php")) {
    function
    remove_wpeditor_header_info()
    {
    wp_deregister_style('wpeditor');
    wp_deregister_style('fancybox');
    wp_deregister_style('codemirror');
    wp_deregister_style('codemirror_dialog');
    wp_deregister_style('codemirror_themes');
    wp_deregister_script('wpeditor');
    wp_deregister_script('wp-editor-posts-jquery');
    wp_deregister_script('codemirror');
    wp_deregister_script('codemirror_php');
    wp_deregister_script('codemirror_javascript');
    wp_deregister_script('codemirror_css');
    wp_deregister_script('codemirror_xml');
    wp_deregister_script('codemirror_clike');
    wp_deregister_script('codemirror_dialog');
    wp_deregister_script('codemirror_search');
    wp_deregister_script('codemirror_searchcursor');
    wp_deregister_script('codemirror_mustache');
    }
    add_action('admin_init', 'remove_wpeditor_header_info', 10);
    }

    }

    function
    mccss_syntax() { ?>

    <!-- Syntax Support Start -->
    <link type="text/css" rel="stylesheet" href="<?php echo WP_PLUGIN_URL.'/'.str_replace(basename( __FILE__),"",plugin_basename(__FILE__)); ?>syntax/codemirror.css" />
    <script language="javascript" src="<?php echo WP_PLUGIN_URL.'/'.str_replace(basename( __FILE__),"",plugin_basename(__FILE__)); ?>syntax/codemirror.js"></script>
    <script language="javascript" src="<?php echo WP_PLUGIN_URL.'/'.str_replace(basename( __FILE__),"",plugin_basename(__FILE__)); ?>syntax/css.js"></script>
    <!-- Syntax Support End -->

    <?php }

    // register settings
    function register_settings_mccss(){
    register_setting('mccss_settings','my_custom_css');
    }
    function
    mccss_options() {
    ?>
    <div class="wrap">
    <h2><?php _e('My Custom CSS Options','mccss')?></h2>
    <form method="post" action="options.php">
    <?php settings_fields( 'mccss_settings' ); ?>
    <p><?php _e('Custom CSS Code:','mccss'); ?></p>
    <textarea name="my_custom_css" id="my_custom_css" dir="ltr" cols="100" rows="10" class="css"><?php echo get_option('my_custom_css');?></textarea>
    <script language="javascript">var editor = CodeMirror.fromTextArea(document.getElementById("my_custom_css"), { lineNumbers: true });</script>
    <p class="submit">
    <input type="submit" class="button-primary" value="<?php _e('Save') ?>" />
    </p>
    </form>
    </div>
    <?php
    }

    add_action('admin_menu', 'mccss_admin');
    add_action('wp_head', 'add_my_custom_css');
    load_plugin_textdomain('mccss', false, dirname( plugin_basename( __FILE__ ) ) . '/lang/' );

    ?>
    Ultima modifica di darkwolf : 18-01-2013 alle ore 17.09.01

  4. #4
    Guest

    Predefinito

    ti faccio un esempio:
    Codice PHP:
    $page =add_submenu_page('themes.php', __('Theme Settings', AVFRAMEWORK), __('Theme Settings', AVFRAMEWORK), 'manage_options', 'avframework_option_page', 'avframework_option_page');
    add_action("admin_print_scripts-".$page, 'avframework_enqueue_admin_scripts');
    Questo è il codice per accodare uno script ad una sola pagina aggiunta al menu.
    Ed è anche uno spoiler di quello su cui sto lavorando

    Di default la priorità è 10 se non specificata. Se metti 20 può già bastare.

    Se metti nella funzione chiamata da add_action la deregister, dovrebbe funzionare.

  5. #5
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Io stavo pensando di fare:
    Codice PHP:
    If ( is_plugin_active("wp-editor/wpeditor.php") && $pagenow == 'admin.php' && isset( $_GET['post_type'] ) && isset( $_GET['post_type'] ) == 'page' && isset( $_GET['my_custom_css'] ) ) {
    Questo perché sfrutterei la variabile globale proposta da wordpress $pagenow con la quale dunque inserirei lo script solo dentro la pagina di del mio plugin!
    ---
    Ora provo e vediamo che succede XD

    ---
    OT: in base al codex: http://codex.wordpress.org/Function_..._plugin_active
    is_plugin_active non ha bisogno di "include" nel backend... allora perché ricevo: "Call to undefined function is_plugin_active()" se non lo inserisco all'interno di una funzione? :/

    ---
    Ok, ho finalmente risolto così:
    Codice PHP:
    function mccss_admin() {

    $icon_url = WP_PLUGIN_URL."/".str_replace(basename( __FILE__),"",plugin_basename(__FILE__))."css-icon.png";
    $plugin_page = add_menu_page(__('My Custom CSS Panel','mccss'),__('My Custom CSS','mccss'), 'manage_options', 'my_custom_css', 'mccss_options', $icon_url, 61);
    add_action( 'admin_init', 'register_settings_mccss' );
    add_action( 'admin_head-'. $plugin_page, 'mccss_syntax' );

    // Disable "WP Editor" in this page if is active: http://wordpress.org/extend/plugins/wp-editor/
    If ( is_plugin_active("wp-editor/wpeditor.php") && $_SERVER['QUERY_STRING'] == 'page=my_custom_css') {
    function
    remove_wpeditor_header_info(){
    wp_deregister_style('wpeditor');
    wp_deregister_style('fancybox');
    wp_deregister_style('codemirror');
    wp_deregister_style('codemirror_dialog');
    wp_deregister_style('codemirror_themes');
    wp_deregister_script('wpeditor');
    wp_deregister_script('wp-editor-posts-jquery');
    wp_deregister_script('codemirror');
    wp_deregister_script('codemirror_php');
    wp_deregister_script('codemirror_javascript');
    wp_deregister_script('codemirror_css');
    wp_deregister_script('codemirror_xml');
    wp_deregister_script('codemirror_clike');
    wp_deregister_script('codemirror_dialog');
    wp_deregister_script('codemirror_search');
    wp_deregister_script('codemirror_searchcursor');
    wp_deregister_script('codemirror_mustache');
    }
    add_action('admin_init', 'remove_wpeditor_header_info', 20);
    }

    }
    Ultima modifica di darkwolf : 18-01-2013 alle ore 18.13.31

  6. #6
    Guest

    Predefinito

    scusa, ma il termine "variabile globale" mi causa l'orticaria.
    per usare is_plugin_active ho sempre dovuto inserire poco prima
    Codice PHP:
    include_once( ABSPATH . 'wp-admin/includes/plugin.php' );

  7. #7
    L'avatar di darkwolf
    darkwolf non è connesso Salvatore Noschese
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,558

    Predefinito

    Ho notato che è necessario, ma solo se esterno ad una funzione (diversamente non causa noie)
    ---
    In ogni caso, ho risolto con ... (vedi l'edit che avevo postato poco prima)

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •