/**
 * Returns a JavaScript tag with the '$content' inside. If no content is passed, it works as the slot() method and will output everythin between
 * javascript_tag() and end_javascript_tag(),
 * Example:
 *   <?php echo javascript_tag("alert('All is good')") ?>
 *   => <script type="text/javascript">alert('All is good')</script>
 *   <?php javascript_tag() ?>alert('All is good')<?php end_javascript_tag() ?>
 */
function javascript_tag($content = null)
{
    if (!is_null($content)) {
        return content_tag('script', javascript_cdata_section($content), array('type' => 'text/javascript'));
    } else {
        ob_start();
    }
}
Ejemplo n.º 2
0
/**
 * Returns a JavaScript tag with the '$content' inside. If no content is passed, it works as the slot() method and will output everythin between
 * javascript_tag() and end_javascript_tag(),
 * Example:
 *   <?php echo javascript_tag("alert('All is good')") ?>
 *   => <script type="text/javascript">alert('All is good')</script>
 *   <?php javascript_tag() ?>alert('All is good')<?php end_javascript_tag() ?>
 */
function javascript_tag($content = null)
{
    if (null !== $content) {
        require_once dirname(__FILE__) . '/TagHelper.php';
        return content_tag('script', javascript_cdata_section($content), array('type' => 'text/javascript'));
    } else {
        ob_start();
    }
}
Ejemplo n.º 3
0
/**
 * Returns a JavaScript tag with the +content+ inside. Example:
 * javascript_tag "alert('All is good')" # => <script type="text/javascript">alert('All is good')</script>
 */
function javascript_tag( $content )
{
	return content_tag( 'script', javascript_cdata_section( $content ), array( 'type' => 'text/javascript' ) );
}
    /**
     * Returns the rich text editor as HTML.
     *
     * @return string Rich text editor HTML representation
     */
    public function toHTML()
    {
        $options = $this->options;
        // we need to know the id for things the rich text editor
        // in advance of building the tag
        $id = _get_option($options, 'id', get_id_from_name($this->name, null));
        // use tinymce's gzipped js?
        $tinymce_file = _get_option($options, 'tinymce_gzip') ? '/tiny_mce_gzip.php' : '/tiny_mce.js';
        // tinymce installed?
        $js_path = sfConfig::get('sf_rich_text_js_dir') ? '/' . sfConfig::get('sf_rich_text_js_dir') . $tinymce_file : '/sf/tinymce/js' . $tinymce_file;
        if (!is_readable(sfConfig::get('sf_web_dir') . $js_path)) {
            throw new sfConfigurationException('You must install TinyMCE to use this helper (see rich_text_js_dir settings).');
        }
        sfContext::getInstance()->getResponse()->addJavascript($js_path);
        use_helper('Javascript');
        $tinymce_options = '';
        $style_selector = '';
        // custom CSS file?
        if ($css_file = _get_option($options, 'css')) {
            $css_path = stylesheet_path($css_file);
            sfContext::getInstance()->getResponse()->addStylesheet($css_path);
            $css = file_get_contents(sfConfig::get('sf_web_dir') . DIRECTORY_SEPARATOR . $css_path);
            $styles = array();
            preg_match_all('#^/\\*\\s*user:\\s*(.+?)\\s*\\*/\\s*\\015?\\012\\s*\\.([^\\s]+)#Smi', $css, $matches, PREG_SET_ORDER);
            foreach ($matches as $match) {
                $styles[] = $match[1] . '=' . $match[2];
            }
            $tinymce_options .= '  content_css: "' . $css_path . '",' . "\n";
            $tinymce_options .= '  theme_advanced_styles: "' . implode(';', $styles) . '"' . "\n";
            $style_selector = 'styleselect,separator,';
        }
        $culture = sfContext::getInstance()->getUser()->getCulture();
        $tinymce_js = '
tinyMCE.init({
  mode: "exact",
  language: "' . strtolower(substr($culture, 0, 2)) . '",
  elements: "' . $id . '",
  plugins: "table,advimage,advlink,flash",
  theme: "advanced",
  theme_advanced_toolbar_location: "top",
  theme_advanced_toolbar_align: "left",
  theme_advanced_path_location: "bottom",
  theme_advanced_buttons1: "' . $style_selector . 'justifyleft,justifycenter,justifyright,justifyfull,separator,bold,italic,strikethrough,separator,sub,sup,separator,charmap",
  theme_advanced_buttons2: "bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,image,flash,separator,cleanup,removeformat,separator,code",
  theme_advanced_buttons3: "tablecontrols",
  extended_valid_elements: "img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name|style]",
  relative_urls: false,
  debug: false
  ' . ($tinymce_options ? ',' . $tinymce_options : '') . '
  ' . (isset($options['tinymce_options']) ? ',' . $options['tinymce_options'] : '') . '
});';
        if (isset($options['tinymce_options'])) {
            unset($options['tinymce_options']);
        }
        return content_tag('script', javascript_cdata_section($tinymce_js), array('type' => 'text/javascript')) . content_tag('textarea', $this->content, array_merge(array('name' => $this->name, 'id' => $id), _convert_options($options)));
    }
Ejemplo n.º 5
0
function jq_javascript_cdata_section($content)
{
    return javascript_cdata_section($content);
}
 /**
  * Returns the rich text editor as HTML.
  *
  * @return string Rich text editor HTML representation
  */
 public function toHTML()
 {
     $options = $this->options;
     // we need to know the id for things the rich text editor
     // in advance of building the tag
     $id = _get_option($options, 'id', $this->name);
     // use tinymce's gzipped js?
     $tinymce_file = _get_option($options, 'tinymce_gzip') ? '/tiny_mce_gzip.php' : '/tiny_mce.js';
     // tinymce installed?
     $js_path = sfConfig::get('sf_rich_text_js_dir') ? '/' . sfConfig::get('sf_rich_text_js_dir') . $tinymce_file : '/sf/tinymce/js' . $tinymce_file;
     if (!is_readable(sfConfig::get('sf_web_dir') . $js_path)) {
         throw new sfConfigurationException('You must install TinyMCE to use this helper (see rich_text_js_dir settings).');
     }
     sfContext::getInstance()->getResponse()->addJavascript($js_path);
     use_helper('Javascript');
     $tinymce_options = '';
     $style_selector = '';
     // custom CSS file?
     if ($css_file = _get_option($options, 'css')) {
         $css_path = stylesheet_path($css_file);
         sfContext::getInstance()->getResponse()->addStylesheet($css_path);
         $css = file_get_contents(sfConfig::get('sf_web_dir') . DIRECTORY_SEPARATOR . $css_path);
         $styles = array();
         preg_match_all('#^/\\*\\s*user:\\s*(.+?)\\s*\\*/\\s*\\015?\\012\\s*\\.([^\\s]+)#Smi', $css, $matches, PREG_SET_ORDER);
         foreach ($matches as $match) {
             $styles[] = $match[1] . '=' . $match[2];
         }
         $tinymce_options .= '  content_css: "' . $css_path . '",' . "\n";
         $tinymce_options .= '  theme_advanced_styles: "' . implode(';', $styles) . '"' . "\n";
         $style_selector = 'styleselect,separator,';
     }
     $config = sfConfig::get('sf_config_dir_name');
     $path = sfConfigCache::getInstance()->checkConfig($config . DIRECTORY_SEPARATOR . 'tiny_mce.yml');
     $config = sfYaml::load($path);
     $culture = isset($config['culture']) ? $config['culture'] : sfContext::getInstance()->getUser()->getCulture();
     $mode = $config['options']['mode'];
     $plugins = implode(',', $config['options']['plugins']);
     $theme = $config['options']['theme'];
     $tbLocation = $config['options']['theme_settings']['theme_' . $theme . '_toolbar_location'];
     $tbAlign = $config['options']['theme_settings']['theme_' . $theme . '_toolbar_align'];
     $pathLocation = $config['options']['theme_settings']['theme_' . $theme . '_path_location'];
     $buttons = array();
     reset($config['options']['theme_settings']['buttons']);
     while (($key = key($config['options']['theme_settings']['buttons'])) !== null) {
         $current = current($config['options']['theme_settings']['buttons']);
         $buttons[] = $key . ': "' . implode(',', $current) . '"';
         next($config['options']['theme_settings']['buttons']);
     }
     $buttons = implode(",\n", $buttons);
     $extendedValidElements = array();
     reset($config['options']['theme_settings']['extended_valid_elements']);
     while (($key = key($config['options']['theme_settings']['extended_valid_elements'])) !== null) {
         $current = current($config['options']['theme_settings']['extended_valid_elements']);
         $extendedValidElements[] = $key . '[' . implode('|', $current) . ']';
         next($config['options']['theme_settings']['extended_valid_elements']);
     }
     $extendedValidElements = '"' . implode(",\n", $extendedValidElements) . '"';
     $relativeUrls = $config['options']['relative_urls'] ? 'true' : 'false';
     $debug = $config['options']['debug'] ? 'true' : 'false';
     $tinymce_js = 'tinyMCE.init({';
     // Mode
     $tinymce_js .= "mode: '{$mode}'";
     // Language
     $tinymce_js .= ', language: "' . strtolower(substr($culture, 0, 2)) . '"';
     // Elements
     $tinymce_js .= ', elements: "' . $id . '"';
     // Plugins
     if ($plugins) {
         $tinymce_js .= ', plugins: "' . $plugins . '"';
     }
     // Theme
     $tinymce_js .= ", theme: '{$theme}'";
     // Toolbar
     $tinymce_js .= ', theme_' . $theme . '_toolbar_location: "' . $tbLocation . '"';
     $tinymce_js .= ', theme_' . $theme . '_toolbar_align: "' . $tbAlign . '"';
     $tinymce_js .= ', theme_' . $theme . '_path_location: "' . $pathLocation . '"';
     // Buttons
     if ($buttons) {
         $tinymce_js .= ', ' . $buttons;
     }
     // Extended Valid Elements
     $tinymce_js .= ', extended_valid_elements: ' . $extendedValidElements;
     // Relative Urls
     $tinymce_js .= ', relative_urls: ' . $relativeUrls;
     // Debug
     $tinymce_js .= ', debug: ' . $debug;
     // Custom Options
     $tinymce_js .= $tinymce_options ? ',' . $tinymce_options : '';
     $tinymce_js .= isset($options['tinymce_options']) ? ',' . $options['tinymce_options'] : '';
     if (isset($config['options']['misc'])) {
         foreach ($config['options']['misc'] as $name => $value) {
             $tinymce_js .= ", {$name}: \"{$value}\"";
         }
     }
     if (isset($options['tinymce_options'])) {
         unset($options['tinymce_options']);
     }
     $tinymce_js .= '});';
     return content_tag('script', javascript_cdata_section($tinymce_js), array('type' => 'text/javascript')) . content_tag('textarea', $this->content, array_merge(array('name' => $this->name, 'id' => get_id_from_name($id, null)), _convert_options($options)));
 }