[ Index ]
 

Code source de Symfony 1.0.0

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/lib/helper/ -> sfRichTextEditorTinyMCE.class.php (source)

   1  <?php
   2  
   3  /*
   4   * This file is part of the symfony package.
   5   * (c) 2004-2006 Fabien Potencier <fabien.potencier@symfony-project.com>
   6   * 
   7   * For the full copyright and license information, please view the LICENSE
   8   * file that was distributed with this source code.
   9   */
  10  
  11  /**
  12   * sfRichTextEditorTinyMCE implements the TinyMCE rich text editor.
  13   *
  14   * <b>Options:</b>
  15   *  - css - Path to the TinyMCE editor stylesheet
  16   *
  17   *    <b>Css example:</b>
  18   *    <code>
  19   *    / * user: foo * / => without spaces. 'foo' is the name in the select box
  20   *    .foobar
  21   *    {
  22   *      color: #f00;
  23   *    }
  24   *    </code>
  25   *
  26   * @package    symfony
  27   * @subpackage helper
  28   * @author     Fabien Potencier <fabien.potencier@symfony-project.com>
  29   * @version    SVN: $Id: sfRichTextEditorTinyMCE.class.php 3284 2007-01-15 19:05:48Z fabien $
  30   */
  31  class sfRichTextEditorTinyMCE extends sfRichTextEditor
  32  {
  33    /**
  34     * Returns the rich text editor as HTML.
  35     *
  36     * @return string Rich text editor HTML representation
  37     */
  38    public function toHTML()
  39    {
  40      $options = $this->options;
  41  
  42      // we need to know the id for things the rich text editor
  43      // in advance of building the tag
  44      $id = _get_option($options, 'id', $this->name);
  45  
  46      // use tinymce's gzipped js?
  47      $tinymce_file = _get_option($options, 'tinymce_gzip') ? '/tiny_mce_gzip.php' : '/tiny_mce.js';
  48  
  49      // tinymce installed?
  50      $js_path = sfConfig::get('sf_rich_text_js_dir') ? '/'.sfConfig::get('sf_rich_text_js_dir').$tinymce_file : '/sf/tinymce/js'.$tinymce_file;
  51      if (!is_readable(sfConfig::get('sf_web_dir').$js_path))
  52      {
  53        throw new sfConfigurationException('You must install TinyMCE to use this helper (see rich_text_js_dir settings).');
  54      }
  55  
  56      sfContext::getInstance()->getResponse()->addJavascript($js_path);
  57  
  58      use_helper('Javascript');
  59  
  60      $tinymce_options = '';
  61      $style_selector  = '';
  62  
  63      // custom CSS file?
  64      if ($css_file = _get_option($options, 'css'))
  65      {
  66        $css_path = stylesheet_path($css_file);
  67  
  68        sfContext::getInstance()->getResponse()->addStylesheet($css_path);
  69  
  70        $css    = file_get_contents(sfConfig::get('sf_web_dir').DIRECTORY_SEPARATOR.$css_path);
  71        $styles = array();
  72        preg_match_all('#^/\*\s*user:\s*(.+?)\s*\*/\s*\015?\012\s*\.([^\s]+)#Smi', $css, $matches, PREG_SET_ORDER);
  73        foreach ($matches as $match)
  74        {
  75          $styles[] = $match[1].'='.$match[2];
  76        }
  77  
  78        $tinymce_options .= '  content_css: "'.$css_path.'",'."\n";
  79        $tinymce_options .= '  theme_advanced_styles: "'.implode(';', $styles).'"'."\n";
  80        $style_selector   = 'styleselect,separator,';
  81      }
  82  
  83      $culture = sfContext::getInstance()->getUser()->getCulture();
  84  
  85      $tinymce_js = '
  86  tinyMCE.init({
  87    mode: "exact",
  88    language: "'.strtolower(substr($culture, 0, 2)).'",
  89    elements: "'.$id.'",
  90    plugins: "table,advimage,advlink,flash",
  91    theme: "advanced",
  92    theme_advanced_toolbar_location: "top",
  93    theme_advanced_toolbar_align: "left",
  94    theme_advanced_path_location: "bottom",
  95    theme_advanced_buttons1: "'.$style_selector.'justifyleft,justifycenter,justifyright,justifyfull,separator,bold,italic,strikethrough,separator,sub,sup,separator,charmap",
  96    theme_advanced_buttons2: "bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,image,flash,separator,cleanup,removeformat,separator,code",
  97    theme_advanced_buttons3: "tablecontrols",
  98    extended_valid_elements: "img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name]",
  99    relative_urls: false,
 100    debug: false
 101    '.($tinymce_options ? ','.$tinymce_options : '').'
 102    '.(isset($options['tinymce_options']) ? ','.$options['tinymce_options'] : '').'
 103  });';
 104  
 105      if (isset($options['tinymce_options']))
 106      {
 107        unset($options['tinymce_options']);
 108      }
 109  
 110      return
 111        content_tag('script', javascript_cdata_section($tinymce_js), array('type' => 'text/javascript')).
 112        content_tag('textarea', $this->content, array_merge(array('name' => $this->name, 'id' => get_id_from_name($id, null)), _convert_options($options)));
 113    }
 114  }


Généré le : Fri Mar 16 22:42:14 2007 par Balluche grâce à PHPXref 0.7