Make WordPress Core


Ignore:
Timestamp:
08/03/2011 10:19:00 AM (15 years ago)
Author:
azaozz
Message:

Editor API enhancement, first run (still needs some work), see #17144

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/includes/post.php

    r18449 r18498  
    14061406        return $url;
    14071407}
    1408 
    1409 /**
    1410  * Adds the TinyMCE editor used on the Write and Edit screens.
    1411  *
    1412  * @package WordPress
    1413  * @since 2.7.0
    1414  *
    1415  * TinyMCE is loaded separately from other Javascript by using wp-tinymce.php. It outputs concatenated
    1416  * and optionaly pre-compressed version of the core and all default plugins. Additional plugins are loaded
    1417  * directly by TinyMCE using non-blocking method. Custom plugins can be refreshed by adding a query string
    1418  * to the URL when queueing them with the mce_external_plugins filter.
    1419  *
    1420  * @param bool $teeny optional Output a trimmed down version used in Press This.
    1421  * @param mixed $settings optional An array that can add to or overwrite the default TinyMCE settings.
    1422  */
    1423 function wp_tiny_mce( $teeny = false, $settings = false ) {
    1424         global $concatenate_scripts, $compress_scripts, $tinymce_version, $editor_styles;
    1425 
    1426         if ( ! user_can_richedit() )
    1427                 return;
    1428 
    1429         $baseurl = includes_url('js/tinymce');
    1430 
    1431         $mce_locale = ( '' == get_locale() ) ? 'en' : strtolower( substr(get_locale(), 0, 2) ); // only ISO 639-1
    1432 
    1433         /*
    1434         The following filter allows localization scripts to change the languages displayed in the spellchecker's drop-down menu.
    1435         By default it uses Google's spellchecker API, but can be configured to use PSpell/ASpell if installed on the server.
    1436         The + sign marks the default language. More information:
    1437         http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker
    1438         */
    1439         $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');
    1440 
    1441         if ( $teeny ) {
    1442                 $plugins = apply_filters( 'teeny_mce_plugins', array('inlinepopups', 'fullscreen', 'wordpress', 'wplink', 'wpdialogs') );
    1443                 $ext_plugins = '';
    1444         } else {
    1445                 $plugins = array( 'inlinepopups', 'spellchecker', 'tabfocus', 'paste', 'media', 'wordpress', 'wpfullscreen', 'wpeditimage', 'wpgallery', 'wplink', 'wpdialogs' );
    1446 
    1447                 /*
    1448                 The following filter takes an associative array of external plugins for TinyMCE in the form 'plugin_name' => 'url'.
    1449                 It adds the plugin's name to TinyMCE's plugins init and the call to PluginManager to load the plugin.
    1450                 The url should be absolute and should include the js file name to be loaded. Example:
    1451                 array( 'myplugin' => 'http://my-site.com/wp-content/plugins/myfolder/mce_plugin.js' )
    1452                 If the plugin uses a button, it should be added with one of the "$mce_buttons" filters.
    1453                 */
    1454                 $mce_external_plugins = apply_filters('mce_external_plugins', array());
    1455 
    1456                 $ext_plugins = '';
    1457                 if ( ! empty($mce_external_plugins) ) {
    1458 
    1459                         /*
    1460                         The following filter loads external language files for TinyMCE plugins.
    1461                         It takes an associative array 'plugin_name' => 'path', where path is the
    1462                         include path to the file. The language file should follow the same format as
    1463                         /tinymce/langs/wp-langs.php and should define a variable $strings that
    1464                         holds all translated strings.
    1465                         When this filter is not used, the function will try to load {mce_locale}.js.
    1466                         If that is not found, en.js will be tried next.
    1467                         */
    1468                         $mce_external_languages = apply_filters('mce_external_languages', array());
    1469 
    1470                         $loaded_langs = array();
    1471                         $strings = '';
    1472 
    1473                         if ( ! empty($mce_external_languages) ) {
    1474                                 foreach ( $mce_external_languages as $name => $path ) {
    1475                                         if ( @is_file($path) && @is_readable($path) ) {
    1476                                                 include_once($path);
    1477                                                 $ext_plugins .= $strings . "\n";
    1478                                                 $loaded_langs[] = $name;
    1479                                         }
    1480                                 }
    1481                         }
    1482 
    1483                         foreach ( $mce_external_plugins as $name => $url ) {
    1484 
    1485                                 if ( is_ssl() ) $url = str_replace('http://', 'https://', $url);
    1486 
    1487                                 $plugins[] = '-' . $name;
    1488 
    1489                                 $plugurl = dirname($url);
    1490                                 $strings = $str1 = $str2 = '';
    1491                                 if ( ! in_array($name, $loaded_langs) ) {
    1492                                         $path = str_replace( WP_PLUGIN_URL, '', $plugurl );
    1493                                         $path = WP_PLUGIN_DIR . $path . '/langs/';
    1494 
    1495                                         if ( function_exists('realpath') )
    1496                                                 $path = trailingslashit( realpath($path) );
    1497 
    1498                                         if ( @is_file($path . $mce_locale . '.js') )
    1499                                                 $strings .= @file_get_contents($path . $mce_locale . '.js') . "\n";
    1500 
    1501                                         if ( @is_file($path . $mce_locale . '_dlg.js') )
    1502                                                 $strings .= @file_get_contents($path . $mce_locale . '_dlg.js') . "\n";
    1503 
    1504                                         if ( 'en' != $mce_locale && empty($strings) ) {
    1505                                                 if ( @is_file($path . 'en.js') ) {
    1506                                                         $str1 = @file_get_contents($path . 'en.js');
    1507                                                         $strings .= preg_replace( '/([\'"])en\./', '$1' . $mce_locale . '.', $str1, 1 ) . "\n";
    1508                                                 }
    1509 
    1510                                                 if ( @is_file($path . 'en_dlg.js') ) {
    1511                                                         $str2 = @file_get_contents($path . 'en_dlg.js');
    1512                                                         $strings .= preg_replace( '/([\'"])en\./', '$1' . $mce_locale . '.', $str2, 1 ) . "\n";
    1513                                                 }
    1514                                         }
    1515 
    1516                                         if ( ! empty($strings) )
    1517                                                 $ext_plugins .= "\n" . $strings . "\n";
    1518                                 }
    1519 
    1520                                 $ext_plugins .= 'tinyMCEPreInit.load_ext("' . $plugurl . '", "' . $mce_locale . '");' . "\n";
    1521                                 $ext_plugins .= 'tinymce.PluginManager.load("' . $name . '", "' . $url . '");' . "\n";
    1522                         }
    1523                 }
    1524         }
    1525 
    1526         if ( $teeny ) {
    1527                 $mce_buttons = apply_filters( 'teeny_mce_buttons', array('bold, italic, underline, blockquote, separator, strikethrough, bullist, numlist,justifyleft, justifycenter, justifyright, undo, redo, link, unlink, fullscreen') );
    1528                 $mce_buttons = implode($mce_buttons, ',');
    1529                 $mce_buttons_2 = $mce_buttons_3 = $mce_buttons_4 = '';
    1530         } else {
    1531                 $mce_buttons = apply_filters('mce_buttons', array('bold', 'italic', 'strikethrough', '|', 'bullist', 'numlist', 'blockquote', '|', 'justifyleft', 'justifycenter', 'justifyright', '|', 'link', 'unlink', 'wp_more', '|', 'spellchecker', 'fullscreen', 'wp_adv' ));
    1532                 $mce_buttons = implode($mce_buttons, ',');
    1533 
    1534                 $mce_buttons_2 = array( 'formatselect', 'underline', 'justifyfull', 'forecolor', '|', 'pastetext', 'pasteword', 'removeformat', '|', 'charmap', '|', 'outdent', 'indent', '|', 'undo', 'redo', 'wp_help' );
    1535                 $mce_buttons_2 = apply_filters('mce_buttons_2', $mce_buttons_2);
    1536                 $mce_buttons_2 = implode($mce_buttons_2, ',');
    1537 
    1538                 $mce_buttons_3 = apply_filters('mce_buttons_3', array());
    1539                 $mce_buttons_3 = implode($mce_buttons_3, ',');
    1540 
    1541                 $mce_buttons_4 = apply_filters('mce_buttons_4', array());
    1542                 $mce_buttons_4 = implode($mce_buttons_4, ',');
    1543         }
    1544         $no_captions = (bool) apply_filters( 'disable_captions', '' );
    1545 
    1546         // TinyMCE init settings
    1547         $initArray = array (
    1548                 'mode' => 'specific_textareas',
    1549                 'editor_selector' => 'theEditor',
    1550                 'width' => '100%',
    1551                 'theme' => 'advanced',
    1552                 'skin' => 'wp_theme',
    1553                 'theme_advanced_buttons1' => $mce_buttons,
    1554                 'theme_advanced_buttons2' => $mce_buttons_2,
    1555                 'theme_advanced_buttons3' => $mce_buttons_3,
    1556                 'theme_advanced_buttons4' => $mce_buttons_4,
    1557                 'language' => $mce_locale,
    1558                 'spellchecker_languages' => $mce_spellchecker_languages,
    1559                 'theme_advanced_toolbar_location' => 'top',
    1560                 'theme_advanced_toolbar_align' => 'left',
    1561                 'theme_advanced_statusbar_location' => 'bottom',
    1562                 'theme_advanced_resizing' => true,
    1563                 'theme_advanced_resize_horizontal' => false,
    1564                 'dialog_type' => 'modal',
    1565                 'formats' => "{
    1566                         alignleft : [
    1567                                 {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'left'}},
    1568                                 {selector : 'img,table', classes : 'alignleft'}
    1569                         ],
    1570                         aligncenter : [
    1571                                 {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'center'}},
    1572                                 {selector : 'img,table', classes : 'aligncenter'}
    1573                         ],
    1574                         alignright : [
    1575                                 {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'right'}},
    1576                                 {selector : 'img,table', classes : 'alignright'}
    1577                         ],
    1578                         strikethrough : {inline : 'del'}
    1579                 }",
    1580                 'relative_urls' => false,
    1581                 'remove_script_host' => false,
    1582                 'convert_urls' => false,
    1583                 'apply_source_formatting' => false,
    1584                 'remove_linebreaks' => true,
    1585                 'gecko_spellcheck' => true,
    1586                 'keep_styles' => false,
    1587                 'entities' => '38,amp,60,lt,62,gt',
    1588                 'accessibility_focus' => true,
    1589                 'tabfocus_elements' => 'major-publishing-actions',
    1590                 'media_strict' => false,
    1591                 'paste_remove_styles' => true,
    1592                 'paste_remove_spans' => true,
    1593                 'paste_strip_class_attributes' => 'all',
    1594                 'paste_text_use_dialog' => true,
    1595                 'extended_valid_elements' => 'article[*],aside[*],audio[*],canvas[*],command[*],datalist[*],details[*],embed[*],figcaption[*],figure[*],footer[*],header[*],hgroup[*],keygen[*],mark[*],meter[*],nav[*],output[*],progress[*],section[*],source[*],summary,time[*],video[*],wbr',
    1596                 'wpeditimage_disable_captions' => $no_captions,
    1597                 'wp_fullscreen_content_css' => "$baseurl/plugins/wpfullscreen/css/wp-fullscreen.css",
    1598                 'plugins' => implode( ',', $plugins ),
    1599         );
    1600 
    1601         if ( ! empty( $editor_styles ) && is_array( $editor_styles ) ) {
    1602                 $mce_css = array();
    1603                 $style_uri = get_stylesheet_directory_uri();
    1604                 if ( ! is_child_theme() ) {
    1605                         foreach ( $editor_styles as $file )
    1606                                 $mce_css[] = "$style_uri/$file";
    1607                 } else {
    1608                         $style_dir    = get_stylesheet_directory();
    1609                         $template_uri = get_template_directory_uri();
    1610                         $template_dir = get_template_directory();
    1611                         foreach ( $editor_styles as $file ) {
    1612                                 if ( file_exists( "$template_dir/$file" ) )
    1613                                         $mce_css[] = "$template_uri/$file";
    1614                                 if ( file_exists( "$style_dir/$file" ) )
    1615                                         $mce_css[] = "$style_uri/$file";
    1616                         }
    1617                 }
    1618                 $mce_css = implode( ',', $mce_css );
    1619         } else {
    1620                 $mce_css = '';
    1621         }
    1622 
    1623         $mce_css = trim( apply_filters( 'mce_css', $mce_css ), ' ,' );
    1624 
    1625         if ( ! empty($mce_css) )
    1626                 $initArray['content_css'] = $mce_css;
    1627 
    1628         if ( is_array($settings) )
    1629                 $initArray = array_merge($initArray, $settings);
    1630 
    1631         // For people who really REALLY know what they're doing with TinyMCE
    1632         // You can modify initArray to add, remove, change elements of the config before tinyMCE.init
    1633         // Setting "valid_elements", "invalid_elements" and "extended_valid_elements" can be done through "tiny_mce_before_init".
    1634         // Best is to use the default cleanup by not specifying valid_elements, as TinyMCE contains full set of XHTML 1.0.
    1635         if ( $teeny ) {
    1636                 $initArray = apply_filters('teeny_mce_before_init', $initArray);
    1637         } else {
    1638                 $initArray = apply_filters('tiny_mce_before_init', $initArray);
    1639         }
    1640 
    1641         if ( empty($initArray['theme_advanced_buttons3']) && !empty($initArray['theme_advanced_buttons4']) ) {
    1642                 $initArray['theme_advanced_buttons3'] = $initArray['theme_advanced_buttons4'];
    1643                 $initArray['theme_advanced_buttons4'] = '';
    1644         }
    1645 
    1646         if ( ! isset($concatenate_scripts) )
    1647                 script_concat_settings();
    1648 
    1649         $language = $initArray['language'];
    1650 
    1651         $compressed = $compress_scripts && $concatenate_scripts && isset($_SERVER['HTTP_ACCEPT_ENCODING'])
    1652                 && false !== stripos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip');
    1653 
    1654         /**
    1655          * Deprecated
    1656          *
    1657          * The tiny_mce_version filter is not needed since external plugins are loaded directly by TinyMCE.
    1658          * These plugins can be refreshed by appending query string to the URL passed to mce_external_plugins filter.
    1659          * If the plugin has a popup dialog, a query string can be added to the button action that opens it (in the plugin's code).
    1660          */
    1661         $version = apply_filters('tiny_mce_version', '');
    1662         $version = 'ver=' . $tinymce_version . $version;
    1663 
    1664         if ( 'en' != $language )
    1665                 include_once(ABSPATH . WPINC . '/js/tinymce/langs/wp-langs.php');
    1666 
    1667         $mce_options = '';
    1668         foreach ( $initArray as $k => $v ) {
    1669                 if ( is_bool($v) ) {
    1670                         $val = $v ? 'true' : 'false';
    1671                         $mce_options .= $k . ':' . $val . ', ';
    1672                         continue;
    1673                 } elseif ( !empty($v) && is_string($v) && ( ('{' == $v{0} && '}' == $v{strlen($v) - 1}) || ('[' == $v{0} && ']' == $v{strlen($v) - 1}) || preg_match('/^\(?function ?\(/', $v) ) ) {
    1674                         $mce_options .= $k . ':' . $v . ', ';
    1675                         continue;
    1676                 }
    1677 
    1678                 $mce_options .= $k . ':"' . $v . '", ';
    1679         }
    1680 
    1681         $mce_options = rtrim( trim($mce_options), '\n\r,' );
    1682 
    1683         do_action('before_wp_tiny_mce', $initArray); ?>
    1684 
    1685 <script type="text/javascript">
    1686 /* <![CDATA[ */
    1687 tinyMCEPreInit = {
    1688         base : "<?php echo $baseurl; ?>",
    1689         suffix : "",
    1690         query : "<?php echo $version; ?>",
    1691         mceInit : {<?php echo $mce_options; ?>},
    1692         load_ext : function(url,lang){var sl=tinymce.ScriptLoader;sl.markDone(url+'/langs/'+lang+'.js');sl.markDone(url+'/langs/'+lang+'_dlg.js');}
    1693 };
    1694 /* ]]> */
    1695 </script>
    1696 
    1697 <?php
    1698         if ( $compressed )
    1699                 echo "<script type='text/javascript' src='$baseurl/wp-tinymce.php?c=1&amp;$version'></script>\n";
    1700         else
    1701                 echo "<script type='text/javascript' src='$baseurl/tiny_mce.js?$version'></script>\n";
    1702 
    1703         if ( 'en' != $language && isset($lang) )
    1704                 echo "<script type='text/javascript'>\n$lang\n</script>\n";
    1705         else
    1706                 echo "<script type='text/javascript' src='$baseurl/langs/wp-langs-en.js?$version'></script>\n";
    1707 ?>
    1708 
    1709 <script type="text/javascript">
    1710 /* <![CDATA[ */
    1711 <?php
    1712         if ( $ext_plugins )
    1713                 echo "$ext_plugins\n";
    1714 
    1715         if ( ! $compressed ) {
    1716 ?>
    1717 (function(){var t=tinyMCEPreInit,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');}});})();
    1718 <?php } ?>
    1719 tinyMCE.init(tinyMCEPreInit.mceInit);
    1720 /* ]]> */
    1721 </script>
    1722 <?php
    1723 
    1724 do_action('after_wp_tiny_mce', $initArray);
    1725 }
    1726 
    1727 // Load additional inline scripts based on active plugins.
    1728 function wp_preload_dialogs($init) {
    1729         $plugins = preg_split('/[ ,-]+/', $init['plugins']);
    1730 
    1731         if ( in_array( 'wpdialogs', $plugins, true ) ) {
    1732                 wp_print_scripts('wpdialogs-popup');
    1733                 wp_print_styles('wp-jquery-ui-dialog');
    1734         }
    1735 
    1736         if ( in_array( 'wplink', $plugins, true ) ) {
    1737                 require_once ABSPATH . 'wp-admin/includes/internal-linking.php';
    1738                 ?><div style="display:none;"><?php wp_link_dialog(); ?></div><?php
    1739                 wp_print_scripts('wplink');
    1740                 wp_print_styles('wplink');
    1741         }
    1742 
    1743         // Distraction Free Writing mode
    1744         if ( in_array( 'wpfullscreen', $plugins, true ) ) {
    1745                 wp_fullscreen_html();
    1746                 wp_print_scripts('wp-fullscreen');
    1747         }
    1748 
    1749         wp_print_scripts('word-count');
    1750 }
    1751 
    1752 function wp_quicktags() {
    1753         global $tinymce_version;
    1754 
    1755         wp_preload_dialogs( array( 'plugins' => 'wpdialogs,wplink,wpfullscreen' ) );
    1756 
    1757         if ( !user_can_richedit() ) {
    1758                 wp_enqueue_style( 'tinymce-buttons', includes_url('js/tinymce/themes/advanced/skins/wp_theme/ui.css'), array(), $tinymce_version );
    1759                 wp_print_styles('tinymce-buttons');
    1760         }
    1761 }
    1762 
    1763 function wp_print_editor_js() {
    1764         wp_print_scripts('editor');
    1765 }
    1766 
    1767 function wp_fullscreen_html() {
    1768         global $content_width, $post;
    1769 
    1770         $width = isset($content_width) && 800 > $content_width ? $content_width : 800;
    1771         $width = $width + 10; // compensate for the padding
    1772         $dfw_width = get_user_setting( 'dfw_width', $width );
    1773         $save = isset($post->post_status) && $post->post_status == 'publish' ? __('Update') : __('Save');
    1774 ?>
    1775 <div id="wp-fullscreen-body">
    1776 <div id="fullscreen-topbar">
    1777         <div id="wp-fullscreen-toolbar">
    1778                 <div id="wp-fullscreen-close"><a href="#" onclick="fullscreen.off();return false;"><?php _e('Exit fullscreen'); ?></a></div>
    1779                 <div id="wp-fullscreen-central-toolbar" style="width:<?php echo $width; ?>px;">
    1780 
    1781                 <div id="wp-fullscreen-mode-bar"><div id="wp-fullscreen-modes">
    1782                         <a href="#" onclick="fullscreen.switchmode('tinymce');return false;"><?php _e('Visual'); ?></a>
    1783                         <a href="#" onclick="fullscreen.switchmode('html');return false;"><?php _e('HTML'); ?></a>
    1784                 </div></div>
    1785 
    1786                 <div id="wp-fullscreen-button-bar"><div id="wp-fullscreen-buttons" class="wp_themeSkin">
    1787 <?php
    1788 
    1789         $media_link_type = 'image';
    1790         if ( is_multisite() && ( ( ! $mu_media_buttons = get_site_option( 'mu_media_buttons' ) ) || empty( $mu_media_buttons['image'] ) ) )
    1791                 $media_link_type = 'media';
    1792 
    1793         $buttons = array(
    1794                 // format: title, onclick, show in both editors
    1795                 'bold' => array( 'title' => __('Bold (Ctrl + B)'), 'onclick' => 'fullscreen.b();', 'both' => false ),
    1796                 'italic' => array( 'title' => __('Italic (Ctrl + I)'), 'onclick' => 'fullscreen.i();', 'both' => false ),
    1797                 '0' => 'separator',
    1798                 'bullist' => array( 'title' => __('Unordered list (Alt + Shift + U)'), 'onclick' => 'fullscreen.ul();', 'both' => false ),
    1799                 'numlist' => array( 'title' => __('Ordered list (Alt + Shift + O)'), 'onclick' => 'fullscreen.ol();', 'both' => false ),
    1800                 '1' => 'separator',
    1801                 'blockquote' => array( 'title' => __('Blockquote (Alt+Shift+Q)'), 'onclick' => 'fullscreen.blockquote();', 'both' => false ),
    1802                 'image' => array( 'title' => __('Insert/edit image (Alt + Shift + M)'), 'onclick' => "jQuery('#add_{$media_link_type}').click();", 'both' => true ),
    1803                 '2' => 'separator',
    1804                 'link' => array( 'title' => __('Insert/edit link (Alt + Shift + A)'), 'onclick' => 'fullscreen.link();', 'both' => true ),
    1805                 'unlink' => array( 'title' => __('Unlink (Alt + Shift + S)'), 'onclick' => 'fullscreen.unlink();', 'both' => false ),
    1806                 '3' => 'separator',
    1807                 'help' => array( 'title' => __('Help (Alt + Shift + H)'), 'onclick' => 'fullscreen.help();', 'both' => false )
    1808         );
    1809 
    1810         $buttons = apply_filters( 'wp_fullscreen_buttons', $buttons );
    1811 
    1812         foreach ( $buttons as $button => $args ) {
    1813                 if ( 'separator' == $args ) { ?>
    1814                         <div><span aria-orientation="vertical" role="separator" class="mceSeparator"></span></div>
    1815 <?php           continue;
    1816                 } ?>
    1817 
    1818                 <div<?php if ( $args['both'] ) { ?> class="wp-fullscreen-both"<?php } ?>>
    1819                 <a title="<?php echo $args['title']; ?>" onclick="<?php echo $args['onclick']; ?>return false;" class="mceButton mceButtonEnabled mce_<?php echo $button; ?>" href="#" id="wp_fs_<?php echo $button; ?>" role="button" aria-pressed="false">
    1820                 <span class="mceIcon mce_<?php echo $button; ?>"></span>
    1821                 </a>
    1822                 </div>
    1823 <?php
    1824         } ?>
    1825 
    1826                 </div></div>
    1827 
    1828                 <div id="wp-fullscreen-save">
    1829                         <span><?php if ( $post->post_status == 'publish' ) _e('Updated.'); else _e('Saved.'); ?></span>
    1830                         <img src="images/wpspin_light.gif" alt="" />
    1831                         <input type="button" class="button-primary" value="<?php echo $save; ?>" onclick="fullscreen.save();" />
    1832                 </div>
    1833 
    1834                 </div>
    1835         </div>
    1836 </div>
    1837 
    1838 <div id="wp-fullscreen-wrap" style="width:<?php echo $dfw_width; ?>px;">
    1839         <label id="wp-fullscreen-title-prompt-text" for="wp-fullscreen-title"><?php echo apply_filters( 'enter_title_here', __( 'Enter title here' ), $post ); ?></label>
    1840         <input type="text" id="wp-fullscreen-title" value="" autocomplete="off" />
    1841 
    1842         <div id="wp-fullscreen-container">
    1843                 <textarea id="wp_mce_fullscreen"></textarea>
    1844         </div>
    1845 
    1846         <div id="wp-fullscreen-status">
    1847                 <div id="wp-fullscreen-count"><?php printf( __( 'Word count: %s' ), '<span class="word-count">0</span>' ); ?></div>
    1848                 <div id="wp-fullscreen-tagline"><?php _e('Just write.'); ?></div>
    1849         </div>
    1850 </div>
    1851 </div>
    1852 
    1853 <div class="fullscreen-overlay" id="fullscreen-overlay"></div>
    1854 <div class="fullscreen-overlay fullscreen-fader fade-600" id="fullscreen-fader"></div>
    1855 <?php
    1856 }
    1857 
    1858 
Note: See TracChangeset for help on using the changeset viewer.