Rails 2.0.2 and in_place_edit?? and Rich..

Hello,

Can ANYONE please give me some help. I have TinyMCE installed and working. However, I want to use it in an in_place_editor type of fashion. I have tried many, many, many different things and simply cannot get it to work.

I found examples (for example: http://railsify.com/plugins/32-in-place-rich-editor) but that doesn't work out of the box. I kept getting function not defined for onEnterEditMode so I finally created a version of it directly within application.html.erb. So now, I don't have any errors, but I don't have a rich edit box either! I am able to use the TinyMCE directly on the page as long as it isn't in_place. I have also tried reordering the order in which js files are loaded.

I also ran into forgery errors when trying to just get in_place_editing to work! I'm very frustrated because I feel like I have ran into issues of some sort or another no matter which path I have gone down. For anyone else just trying to use in_place_editXXX getting the forgery errors you can do this:

  protect_from_forgery :except => [:set_YourObject_YourField]

I sincerely appreciate anyone who has a working sample on Rails 2.0.x with a WYSIWYG editor cause I couldn't even get FCKEditor to work on 2.x thus the path of TinyMCE.

Thanks in advance,

Michael

Some of the Rails helpers (currently) require you to add the :form_authenticity_token yourself:

Try adding this into the :url_for portion of your helper call, it usually fixes it for me:

:form_authenticity_token => form_authenticity_token

Hi,

Not sure if this issue is still open, but I have an updated patch to the one mentioned below for the latest TinyMCE and Scriptaculous.

I've attached the in_place_edit change. The modified javascript is below:

// TinyMCE RichEdit Widget for Scriptaculous from http://dev.rubyonrails.org/ticket/5263

Ajax.InPlaceRichEditor = Class.create(); Object.extend(Ajax.InPlaceRichEditor.prototype, Ajax.InPlaceEditor.prototype); Object.extend(Ajax.InPlaceRichEditor.prototype,{   createEditField: function() {     var text = (this.options.loadTextURL ? this.options.loadingText : this.getText());     var fld;     if (1 >= this.options.rows && !/\r|\n/.test(this.getText())) {       fld = document.createElement('input');       fld.type = 'text';       var size = this.options.size || this.options.cols || 0;       if (0 < size) fld.size = size;     } else {       fld = document.createElement('textarea');       fld.rows = (1 >= this.options.rows ? this.options.autoRows : this.options.rows);       fld.cols = this.options.cols || 40;     }     fld.name = this.options.paramName;     fld.value = text; // No HTML breaks conversion anymore

    // TinyMCE edit     fld.id = 'mce_editor_field';

    fld.className = 'editor_field';     if (this.options.submitOnBlur)       fld.onblur = this._boundSubmitHandler;     this._controls.editor = fld;     if (this.options.loadTextURL)       this.loadExternalText();     this._form.appendChild(this._controls.editor);   },   enterEditMode: function(e) {     if (this._saving || this._editing) return;     this._editing = true;     this.triggerCallback('onEnterEditMode');     if (this.options.externalControl)       this.options.externalControl.hide();     this.element.hide();     this.createForm();     this.element.parentNode.insertBefore(this._form, this.element);

    tinyMCE.execCommand('mceAddControl', false, 'mce_editor_field');

    if (!this.options.loadTextURL)       this.postProcessEditField();     if (e) Event.stop(e);   },   handleFormSubmission: function(e) {     tinyMCE.triggerSave();

    var form = this._form;     var value = $F(this._controls.editor);     this.prepareSubmission();     var params = this.options.callback(form, value) || '';     if (Object.isString(params))       params = params.toQueryParams();     params.editorId = this.element.id;     if (this.options.htmlResponse) {       var options = Object.extend({ evalScripts: true }, this.options.ajaxOptions);       Object.extend(options, {         parameters: params,         onComplete: this._boundWrapperHandler,         onFailure: this._boundFailureHandler       });       new Ajax.Updater({ success: this.element }, this.url, options);     } else {       var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);       Object.extend(options, {         parameters: params,         onComplete: this._boundWrapperHandler,         onFailure: this._boundFailureHandler       });       new Ajax.Request(this.url, options);     }     if (e) Event.stop(e);   },   removeForm: function() {     if (!this._form) return;     tinyMCE.execCommand('mceRemoveControl', false, 'mce_editor_field');     this._form.remove();     this._form = null;     this._controls = { };   } }); // tinyMCE.addMCEControl(this._controls.editor, 'value');

Michael Modic wrote:

Hello,

Can ANYONE please give me some help. I have TinyMCE installed and working. However, I want to use it in an in_place_editor type of fashion. I have tried many, many, many different things and simply cannot get it to work.

I found examples (for example: http://railsify.com/plugins/32-in-place-rich-editor) but that doesn't work out of the box. I kept getting function not defined for onEnterEditMode so I finally created a version of it directly within application.html.erb. So now, I don't have any errors, but I don't have a rich edit box either! I am able to use the TinyMCE directly on the page as long as it isn't in_place. I have also tried reordering the order in which js files are loaded.

I also ran into forgery errors when trying to just get in_place_editing to work! I'm very frustrated because I feel like I have ran into issues of some sort or another no matter which path I have gone down. For anyone else just trying to use in_place_editXXX getting the forgery errors you can do this:

  protect_from_forgery :except => [:set_YourObject_YourField]

I sincerely appreciate anyone who has a working sample on Rails 2.0.x with a WYSIWYG editor cause I couldn't even get FCKEditor to work on 2.x thus the path of TinyMCE.

Thanks in advance,

Michael

Attachments: http://www.ruby-forum.com/attachment/2902/in_place_macros_helper.rb