Textareas on the panels content ui doesn't support WYSIWYG editors like FCKeditor

lourenzo - March 18, 2008 - 13:27
Project:Panels
Version:5.x-2.0-beta2
Component:User interface
Category:bug report
Priority:normal
Assigned:Unassigned
Status:won't fix
Description

I have FCKeditor working fine.
But when I create or edit custom content panes, FCKeditor doesn't show up, instead, two textareas are shown.

#1

merlinofchaos - March 18, 2008 - 16:52
Status:active» won't fix

This won't be fixable until Drupal 6; getting javascript to work in the popups requires a mechanism that doesn't exist in Drupal 5. Sorry.

#2

lourenzo - April 19, 2008 - 06:09

I've made it work, but it required a little hack that requires FCKEditor to be available.

Now, I'm trying to figure out how can it be reusable and support FCKEditor's absence, or even to deal with other WYSIWYG modules...

#3

merlinofchaos - April 19, 2008 - 21:02

Depending upon where your hack is, you might try the module_exists function to test for the presence of FCK editor; if you need to test this in javascript, have it put something in the settings?

#4

populist - July 29, 2008 - 06:04

I was able get WYSIWYG working with TinyMCE in a panel pane environment by doing a few modifications to the panel forms in form_alter. There are some limitations to the approach and it can be cleaned up a bit, but it can make it all happen in Drupal 5.x.

function my_module_form_alter($form_id, &$form) {
  switch($form_id) {
    case 'panels_edit_display':
      // Load a fake version of TinyMCE on the original page to get the javascript added
      $form['tinymce_hidden'] = array(
        '#type' => 'fieldset',
        '#attributes' => array('style' => 'display: none'),
      );
      $form['tinymce_hidden']['tinymce_prerender'] = array(
        '#type' => 'textarea',
      );
      break;
  
     case 'panels_content_config_form':
       // Modify the submit handler to save TinyMCE display to hidden textarea
       $form['next']['#attributes'] = array('onclick' => 'tinyMCE.triggerSave(true,true);');

       // Load a disable or enable link below each textarea
       global $user;
       $enable  = t('enable rich-text');
       $disable = t('disable rich-text');
       $user = user_load(array('uid' => $user->uid));
       $profile = tinymce_user_get_profile($user);
       $status = tinymce_user_get_status($user, $profile);
       $link_text = $status == 'true' ? $disable : $enable;
       foreach($form['configuration'] as $index_raw => $value) {
         $index = str_replace('_','-', $index_raw);
         if ($value['#type'] == 'textarea') {
           $form['configuration'][$index_raw]['#description'] .= "<div><a href=
\"javascript:mceToggle('edit-configuration-$index', 'wysiwyg4-configuration-$index');\" class=\"wysiwyg-editor\" title=\"edit-configuration-\"" . $index . "\" id=\"wysiwyg4-configuration-$index\">$link_text</a></div>";
         } else {
           if (is_array($value)) {
             foreach($form['configuration'][$index_raw] as $index2_raw => $value2) {
               $index2 = str_replace('_', '-', $index2_raw);
               if ($value2['#type'] == 'textarea') {
                 $form['configuration'][$index_raw][$index2_raw]['#description'] .= "<div><a href=\"javascript:mceToggle('edit-configuration-$index-$index2', 'wysiwyg4-configuration-$index-$index2'); \"  class=\"wysiwyg-editor\" title=\"edit-configuration-\"" . $index . '-' . $index2 . "\" id=\"wysiwyg4-configuration-$index-$index2\">$link_text</a></div>";
               }
             }
           }
         }
       }
      break;
  }
}

#5

jkpro3 - August 25, 2008 - 16:39

lourenzo: or anybody else

can you please share your hack for the panels pop-up window.. i need fckeditor to show up on the custom content pop-up but i can figure out how to do it.

Thanks in advance

 
 

Drupal is a registered trademark of Dries Buytaert.