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 Super Moderatore
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,552

    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'falseWPEDITOR_VERSION_NUMBER);
        
    wp_register_style('fancybox'WPEDITOR_URL '/extensions/fancybox/jquery.fancybox-1.3.4.css'falseWPEDITOR_VERSION_NUMBER);
        
    wp_register_style('codemirror'WPEDITOR_URL '/extensions/codemirror/codemirror.css'falseWPEDITOR_VERSION_NUMBER);
        
    wp_register_style('codemirror_dialog'WPEDITOR_URL '/extensions/codemirror/dialog.css'falseWPEDITOR_VERSION_NUMBER);
        
    wp_register_style('codemirror_themes'WPEDITOR_URL '/extensions/codemirror/themes/themes.css'falseWPEDITOR_VERSION_NUMBER);
      }
      
      public function 
    registerDefaultScript() {
        
    wp_register_script('wpeditor'WPEDITOR_URL '/js/wpeditor.js'falseWPEDITOR_VERSION_NUMBER);
        
    wp_register_script('wp-editor-posts-jquery'WPEDITOR_URL '/js/posts-jquery.js'falseWPEDITOR_VERSION_NUMBERtrue);
        
    wp_register_script('fancybox'WPEDITOR_URL '/extensions/fancybox/js/jquery.fancybox-1.3.4.pack.js'falseWPEDITOR_VERSION_NUMBER);
        
    wp_register_script('codemirror'WPEDITOR_URL '/extensions/codemirror/js/codemirror.js'falseWPEDITOR_VERSION_NUMBER);
        
    wp_register_script('codemirror_php'WPEDITOR_URL '/extensions/codemirror/js/php.js'falseWPEDITOR_VERSION_NUMBER);
        
    wp_register_script('codemirror_javascript'WPEDITOR_URL '/extensions/codemirror/js/javascript.js'falseWPEDITOR_VERSION_NUMBER);
        
    wp_register_script('codemirror_css'WPEDITOR_URL '/extensions/codemirror/js/css.js'falseWPEDITOR_VERSION_NUMBER);
        
    wp_register_script('codemirror_xml'WPEDITOR_URL '/extensions/codemirror/js/xml.js'falseWPEDITOR_VERSION_NUMBER);
        
    wp_register_script('codemirror_clike'WPEDITOR_URL '/extensions/codemirror/js/clike.js'falseWPEDITOR_VERSION_NUMBER);
        
    wp_register_script('codemirror_dialog'WPEDITOR_URL '/extensions/codemirror/js/dialog.js'falseWPEDITOR_VERSION_NUMBER);
        
    wp_register_script('codemirror_search'WPEDITOR_URL '/extensions/codemirror/js/search.js'falseWPEDITOR_VERSION_NUMBER);
        
    wp_register_script('codemirror_searchcursor'WPEDITOR_URL '/extensions/codemirror/js/searchcursor.js'falseWPEDITOR_VERSION_NUMBER);
        
    wp_register_script('codemirror_mustache'WPEDITOR_URL '/extensions/codemirror/js/mustache.js'falseWPEDITOR_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é?
    » Salvatore Noschese - L'AltroWeb | Seguimi su: facebook | twitter | Google+
    # Che aspetti? Unisciti alla community! Tanti nuovi gruppi ti aspettano


  2. #2
    L'avatar di niccolotapparo
    niccolotapparo non è connesso AlterVista Staff
    Data registrazione
    06-07-2009
    Residenza
    Torino
    Messaggi
    3,303

    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 Super Moderatore
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,552

    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_url61);
        
    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'falsedirnameplugin_basename__FILE__ ) ) . '/lang/' );

    ?>
    Ultima modifica di darkwolf : 18-01-2013 alle ore 17.09.01
    » Salvatore Noschese - L'AltroWeb | Seguimi su: facebook | twitter | Google+
    # Che aspetti? Unisciti alla community! Tanti nuovi gruppi ti aspettano


  4. #4
    L'avatar di niccolotapparo
    niccolotapparo non è connesso AlterVista Staff
    Data registrazione
    06-07-2009
    Residenza
    Torino
    Messaggi
    3,303

    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 Super Moderatore
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,552

    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_url61);
        
    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
    » Salvatore Noschese - L'AltroWeb | Seguimi su: facebook | twitter | Google+
    # Che aspetti? Unisciti alla community! Tanti nuovi gruppi ti aspettano


  6. #6
    L'avatar di niccolotapparo
    niccolotapparo non è connesso AlterVista Staff
    Data registrazione
    06-07-2009
    Residenza
    Torino
    Messaggi
    3,303

    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 Super Moderatore
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,552

    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)
    » Salvatore Noschese - L'AltroWeb | Seguimi su: facebook | twitter | Google+
    # Che aspetti? Unisciti alla community! Tanti nuovi gruppi ti aspettano


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
  •