Need help? Check out our Support site, then


Visual Editor TinyMCE does not work in WordPress 2.7

  1. I just installed WordPress 2.7 to my site and am a completely new user to WordPress. I was amazed that it did not come with a user-friendly visual editor, but rather required everyone to know HTML. When I went searching for a plugin I was surprised that WordPress does actually come with one called TinyMCE. But it has never worked in my fresh installation.

    When trying to edit a file, the window says I am in the Visual tab, but it is an HTML editor. The HTML tab is not click-able.

    I have searched and searched for an answer as to how to get TinyMCE to work for me but have not found a solution that works...or at least, not one that I understand.

    Many answers to prior questions asked by others who have had the same problem say I just need to turn on or activate TinyMCE in the Settings. Most suggest this is in the "Writing" section. However, I cannot find a single thing in the settings that relates to a visual editor or TinyMCE.

    I have also tried deactivating the only plugin I have at the moment, Akismet 2.2.3, emtying my cache and refreshing the screen but this did not help either.

    Some have suggested that code needs to be fixed or modified but, like the results above, the files they say to modify just do not seem to exist. I have found a section in the post.php file located in the "/wp-admin/includes" folder starting on line 1107 that says it will "Adds the TinyMCE editor used on the Write and Edit screens." If I need to modify something here I am not sure what I need to do.'

    I have tried opening up my blog site in both Firefox 3.0.8 and also IE 7.0.6001.1800 64-bit edition but neither work. I have tried using both Windows Vista Home Premium SP1 64-bit as well as Windows XP SP3.

    Any suggestions?

    Thanks,

    Woolf

    PS: Here is the exact text from that section:

    /**
    * Adds the TinyMCE editor used on the Write and Edit screens.
    *
    * Has option to output a trimmed down version used in Press This.
    *
    * @package WordPress
    * @since 2.7
    */
    function wp_tiny_mce( $teeny = false ) {
    if ( ! user_can_richedit() )
    return;

    $baseurl = includes_url('js/tinymce');

    $mce_css = $baseurl . '/wordpress.css';
    $mce_css = apply_filters('mce_css', $mce_css);

    $mce_locale = ( '' == get_locale() ) ? 'en' : strtolower( substr(get_locale(), 0, 2) ); // only ISO 639-1

    /*
    The following filter allows localization scripts to change the languages displayed in the spellchecker's drop-down menu.
    By default it uses Google's spellchecker API, but can be configured to use PSpell/ASpell if installed on the server.
    The + sign marks the default language. More information:
    http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker
    */
    $mce_spellchecker_languages = apply_filters('mce_spellchecker_languages', '+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv');

    if ( $teeny ) {
    $plugins = apply_filters( 'teeny_mce_plugins', array('safari', 'inlinepopups', 'media', 'autosave', 'fullscreen') );
    $ext_plugins = '';
    } else {
    $plugins = array( 'safari', 'inlinepopups', 'autosave', 'spellchecker', 'paste', 'wordpress', 'media', 'fullscreen', 'wpeditimage', 'wpgallery' );

    /*
    The following filter takes an associative array of external plugins for TinyMCE in the form 'plugin_name' => 'url'.
    It adds the plugin's name to TinyMCE's plugins init and the call to PluginManager to load the plugin.
    The url should be absolute and should include the js file name to be loaded. Example:
    array( 'myplugin' => 'http://my-site.com/wp-content/plugins/myfolder/mce_plugin.js' )
    If the plugin uses a button, it should be added with one of the "$mce_buttons" filters.
    */
    $mce_external_plugins = apply_filters('mce_external_plugins', array());

    $ext_plugins = "\n";
    if ( ! empty($mce_external_plugins) ) {

    /*
    The following filter loads external language files for TinyMCE plugins.
    It takes an associative array 'plugin_name' => 'path', where path is the
    include path to the file. The language file should follow the same format as
    /tinymce/langs/wp-langs.php and should define a variable $strings that
    holds all translated strings.
    When this filter is not used, the function will try to load {mce_locale}.js.
    If that is not found, en.js will be tried next.
    */
    $mce_external_languages = apply_filters('mce_external_languages', array());

    $loaded_langs = array();
    $strings = '';

    if ( ! empty($mce_external_languages) ) {
    foreach ( $mce_external_languages as $name => $path ) {
    if ( @is_file($path) && @is_readable($path) ) {
    include_once($path);
    $ext_plugins .= $strings . "\n";
    $loaded_langs[] = $name;
    }
    }
    }

    foreach ( $mce_external_plugins as $name => $url ) {

    if ( is_ssl() ) $url = str_replace('http://', 'https://', $url);

    $plugins[] = '-' . $name;

    $plugurl = dirname($url);
    $strings = $str1 = $str2 = '';
    if ( ! in_array($name, $loaded_langs) ) {
    $path = str_replace( WP_PLUGIN_URL, '', $plugurl );
    $path = WP_PLUGIN_DIR . $path . '/langs/';

    if ( function_exists('realpath') )
    $path = trailingslashit( realpath($path) );

    if ( @is_file($path . $mce_locale . '.js') )
    $strings .= @file_get_contents($path . $mce_locale . '.js') . "\n";

    if ( @is_file($path . $mce_locale . '_dlg.js') )
    $strings .= @file_get_contents($path . $mce_locale . '_dlg.js') . "\n";

    if ( 'en' != $mce_locale && empty($strings) ) {
    if ( @is_file($path . 'en.js') ) {
    $str1 = @file_get_contents($path . 'en.js');
    $strings .= preg_replace( '/([\'"])en\./', '$1' . $mce_locale . '.', $str1, 1 ) . "\n";
    }

    if ( @is_file($path . 'en_dlg.js') ) {
    $str2 = @file_get_contents($path . 'en_dlg.js');
    $strings .= preg_replace( '/([\'"])en\./', '$1' . $mce_locale . '.', $str2, 1 ) . "\n";
    }
    }

    if ( ! empty($strings) )
    $ext_plugins .= "\n" . $strings . "\n";
    }

    $ext_plugins .= 'tinyMCEPreInit.load_ext("' . $plugurl . '", "' . $mce_locale . '");' . "\n";
    $ext_plugins .= 'tinymce.PluginManager.load("' . $name . '", "' . $url . '");' . "\n";
    }
    }
    }

    $plugins = implode($plugins, ',');

    if ( $teeny ) {
    $mce_buttons = apply_filters( 'teeny_mce_buttons', array('bold, italic, underline, blockquote, separator, strikethrough, bullist, numlist,justifyleft, justifycenter, justifyright, undo, redo, link, unlink, fullscreen') );
    $mce_buttons = implode($mce_buttons, ',');
    $mce_buttons_2 = $mce_buttons_3 = $mce_buttons_4 = '';
    } else {
    $mce_buttons = apply_filters('mce_buttons', array('bold', 'italic', 'strikethrough', '|', 'bullist', 'numlist', 'blockquote', '|', 'justifyleft', 'justifycenter', 'justifyright', '|', 'link', 'unlink', 'wp_more', '|', 'spellchecker', 'fullscreen', 'wp_adv' ));
    $mce_buttons = implode($mce_buttons, ',');

    $mce_buttons_2 = apply_filters('mce_buttons_2', array('formatselect', 'underline', 'justifyfull', 'forecolor', '|', 'pastetext', 'pasteword', 'removeformat', '|', 'media', 'charmap', '|', 'outdent', 'indent', '|', 'undo', 'redo', 'wp_help' ));
    $mce_buttons_2 = implode($mce_buttons_2, ',');

    $mce_buttons_3 = apply_filters('mce_buttons_3', array());
    $mce_buttons_3 = implode($mce_buttons_3, ',');

    $mce_buttons_4 = apply_filters('mce_buttons_4', array());
    $mce_buttons_4 = implode($mce_buttons_4, ',');
    }
    $no_captions = ( apply_filters( 'disable_captions', '' ) ) ? true : false;

    // TinyMCE init settings
    $initArray = array (
    'mode' => 'none',
    'onpageload' => 'switchEditors.edInit',
    'width' => '100%',
    'theme' => 'advanced',
    'skin' => 'wp_theme',
    'theme_advanced_buttons1' => "$mce_buttons",
    'theme_advanced_buttons2' => "$mce_buttons_2",
    'theme_advanced_buttons3' => "$mce_buttons_3",
    'theme_advanced_buttons4' => "$mce_buttons_4",
    'language' => "$mce_locale",
    'spellchecker_languages' => "$mce_spellchecker_languages",
    'theme_advanced_toolbar_location' => 'top',
    'theme_advanced_toolbar_align' => 'left',
    'theme_advanced_statusbar_location' => 'bottom',
    'theme_advanced_resizing' => true,
    'theme_advanced_resize_horizontal' => false,
    'dialog_type' => 'modal',
    'relative_urls' => false,
    'remove_script_host' => false,
    'convert_urls' => false,
    'apply_source_formatting' => false,
    'remove_linebreaks' => true,
    'paste_convert_middot_lists' => true,
    'paste_remove_spans' => true,
    'paste_remove_styles' => true,
    'gecko_spellcheck' => true,
    'entities' => '38,amp,60,lt,62,gt',
    'accessibility_focus' => true,
    'tab_focus' => ':prev,:next',
    'content_css' => "$mce_css",
    'save_callback' => 'switchEditors.saveCallback',
    'wpeditimage_disable_captions' => $no_captions,
    'plugins' => "$plugins"
    );

    // For people who really REALLY know what they're doing with TinyMCE
    // You can modify initArray to add, remove, change elements of the config before tinyMCE.init
    // Setting "valid_elements", "invalid_elements" and "extended_valid_elements" can be done through "tiny_mce_before_init".
    // Best is to use the default cleanup by not specifying valid_elements, as TinyMCE contains full set of XHTML 1.0.
    if ( $teeny ) {
    $initArray = apply_filters('teeny_mce_before_init', $initArray);
    } else {
    $initArray = apply_filters('tiny_mce_before_init', $initArray);
    }

    $language = $initArray['language'];

    $ver = apply_filters('tiny_mce_version', '3101');

    if ( 'en' != $language )
    include_once(ABSPATH . WPINC . '/js/tinymce/langs/wp-langs.php');

    $mce_options = '';
    foreach ( $initArray as $k => $v )
    $mce_options .= $k . ':"' . $v . '", ';

    $mce_options = rtrim( trim($mce_options), '\n\r,' ); ?>

    <script type="text/javascript">
    /* <![CDATA[ */
    tinyMCEPreInit = {
    base : "<?php echo $baseurl; ?>",
    suffix : "",
    query : "ver=<?php echo $ver; ?>",
    mceInit : {<?php echo $mce_options; ?>},

    go : function() {
    var t = this, sl = tinymce.ScriptLoader, ln = t.mceInit.language, th = t.mceInit.theme, pl = t.mceInit.plugins;

    sl.markDone(t.base + '/langs/' + ln + '.js');

    sl.markDone(t.base + '/themes/' + th + '/langs/' + ln + '.js');
    sl.markDone(t.base + '/themes/' + th + '/langs/' + ln + '_dlg.js');

    tinymce.each(pl.split(','), function(n) {
    if (n && n.charAt(0) != '-') {
    sl.markDone(t.base + '/plugins/' + n + '/langs/' + ln + '.js');
    sl.markDone(t.base + '/plugins/' + n + '/langs/' + ln + '_dlg.js');
    }
    });
    },

    load_ext : function(url,lang) {
    var sl = tinymce.ScriptLoader;

    sl.markDone(url + '/langs/' + lang + '.js');
    sl.markDone(url + '/langs/' + lang + '_dlg.js');
    }
    };
    /* ]]> */
    </script>
    <script type="text/javascript" src="<?php echo $baseurl; ?>/tiny_mce.js?ver=<?php echo $ver; ?>"></script>
    <?php if ( 'en' != $language && isset($lang) ) { ?>
    <script type="text/javascript">
    <?php echo $lang; ?>
    </script>
    <?php } else { ?>
    <script type="text/javascript" src="<?php echo $baseurl; ?>/langs/wp-langs-en.js?ver=<?php echo $ver; ?>"></script>
    <?php } ?>
    <script type="text/javascript">
    <?php if ( $ext_plugins ) echo $ext_plugins; ?>

    // Mark translations as done
    tinyMCEPreInit.go();

    // Init
    tinyMCE.init(tinyMCEPreInit.mceInit);
    </script>

    <?php
    }
    ?>

  2. You did not specify a blog address or reason for posting when you created this topic.

    This support forum is for WordPress.com hosted blogs only. If you have a self-hosted WordPress blog you need to seek help at the WordPress.org forums, not here.

    If you don't understand the difference, you may find this information helpful.

Topic Closed

This topic has been closed to new replies.

About this Topic