-
-
Save goldenapples/2795190 to your computer and use it in GitHub Desktop.
<?php | |
/* | |
Plugin Name: Rich Text editors for Gravity Forms | |
Description: Converts the textarea fields in Gravity Forms to WordPress rich text editors | |
Author: Nathaniel Taintor | |
Author URI: http://goldenapplesdesign.com | |
Version: 1.0 | |
License: GPLv2 | |
*/ | |
/* | |
* Gravity Forms filter to allow the post body and textarea inputs to use the wp_editor | |
* visual editor. To use wp_editor instead of default textarea, just set css class | |
* to "richtext" | |
* | |
* @uses wp_editor() Requires WordPres >= 3.3.0 for this function | |
* | |
* see http://codex.wordpress.org/Function_Reference/wp_editor for arguments to | |
* pass to the wp_editor() function. At the very minimum, you probably will need | |
* to pass some styles in 'editor_css'; otherwise the gravityforms styles and your | |
* theme styles will likely override some of the styles applied to the editor | |
* buttons and text. | |
* | |
*/ | |
add_action( 'gform_field_input', 'gforms_wp_editor', 10, 5 ); | |
function gforms_wp_editor( $input, $field, $value, $lead_id, $form_id ) { | |
if( $field["cssClass"] == 'richtext' ) { | |
ob_start(); | |
wp_editor( $value, "input_{$form_id}_{$field['id']}", | |
array( | |
'media_buttons' => false, | |
'textarea_name' => "input_{$field['id']}" | |
) ); | |
$input = ob_get_clean(); | |
} | |
return $input; | |
} | |
Hi,
Thanks, this all works great but I am running into an issue you may know how to fix.
I am using a multi-page gravity forms (basically using page breaks)
When using multiple pages, I get 'previous' and 'next' buttons at the end of the form. I have my WYSIWYG editor on the first page of the form. When I go to the next page in the form and then navigate back to it to make an edit, the rich text controls do not appear and the content which I had in there is now in HTML format. When I do a refresh on the page the editor controls come back but I lose all content.
Is there anyway to get this to work for switching between pages?
Thanks a lot Red
I should also add that even if there is an error on the page, let's say a required field is not filled out. Then the editor also disappears and I am left with HTML formatted text in the editor :( Would be great if you can help point me towards a possible fix! Cheers
There's a known issue with the TinyMCE class used in wp_editor()
; that it can't be moved around in the DOM: http://codex.wordpress.org/Function_Reference/wp_editor#Notes
So I'm thinking that this approach will not work well if you're trying to use an Ajax-enabled Gravity Form.
I haven't tested it or played around with it, but the only fix I could imagine would be somehow registering a javascript handler on the "gform_page_loaded" hook that calls whatever functions are needed to initialize the tinymce editor. tinyMCE.init() would be a good place to start, but I think there might be more function calls necessary to fully initialize an editor.
i paste your code in my function. but now i don't see any editor add any text editor
This doesn't seem to save any formatting within the WYSIWYG. It's all stripped on submitting.
Rad! Code largely works on current Gravity Forms, I have run into an issue with pasted text:
I can include rich text if I manually type out content into the post content field, however if I paste in content directly, it looks fine and is formatted properly before submitting the form, but the output results in completely blank content (not just no styles, no content at all). I can then go in the admin area and edit the post, no content in the post body.
Anyone have any idea what might be stripping cut and pastes like that? Thanks!
Hello,
I would change the test with the following:
if( $field["useRichTextEditor"] == '1' ) {
Thanks for the script, I got it running and it works great. One small problem though. The new rich text textarea doesn't update the character count. Any idea how to fix this?