You may have to change where exactly your partial goes, and where the 
editor goes. The issue, as I see it, is that your partial is emitting 
the same id it is supposed to be replacing the *contents* of.

Try doing it this way, and see if that helps.

<pre id="xyz" onclick="activateEditor()">
(partial creates this bit) some gnarly text here (/partial)
</pre>

Walter

On Apr 23, 2007, at 8:46 AM, Tom V. wrote:

>
> Hi Walter,
>
> thanks for your code, it works great!
> However, yet another problem has occurred.
> Maybe you could solve this,too...
>
> In order to format file contents properly I added a pre-Tag to my
> partial:
>
> <pre class="sourcecode" id="editme" onclick="activateEditor();"><%= h
> file_contents %></pre>
> <script>
>     //...
>     var editor = new Ajax.InPlaceEditor('editme', '<%=
> escape_javascript(url_for({ :action => "save_file", :path => path}))
> %>')
>     //...
> </script>
>
> Before I click the rendered file contents, the respective HTML (in
> Firebug) looks sort of like this:
>
> <div id="file.rb" class="DHTMLSuite_paneContentInner" style="display:
> block;">
>     <pre id="editme" class="sourcecode" onclick="activateEditor();">
>         file contents with lots of special chars...
>     </pre>
>     <script type="text/javascript">
>         // code for the InPlaceEditor
>     </script>
> </div>
>
> After clicking, a form-tag is added: <form id="editme-inplaceeditor"
> class="inplaceeditor-form">
>
> When I click "save/ok", the pre-tag gets doubled:
>
> <div id="two_controller.rb" class="DHTMLSuite_paneContentInner"
> style="display: block;">
>     <pre id="editme" class="sourcecode" onclick="activateEditor();"
> title="Click to edit" style="...">
>         <pre id="editme" class="sourcecode"
> onclick="activateEditor();">
>             file contents with lots of special chars...
>         </pre>
>     </pre>
>     <script type="text/javascript">
>         // code for the InPlaceEditor
>     </script>
> </div>
>
> When I click on the file contents again, the whole text disappears and
> Firebug yells at me:
>
> string has no properties
> convertHTMLLineBreaks(null)controls.js (line 591)
> createEditField()controls.js (line 622)
> createForm()controls.js (line 562)
> enterEditMode(click clientX=0, clientY=0)controls.js (line 547)
> bindAsEventListener(click clientX=0, clientY=0)
>
> control.js:
> convertHTMLLineBreaks: function(string) {
>     return string.replace(/<br>/gi, "\n").replace(/<br\/>/gi,
> "\n").replace(/<\/p>/gi, "\n").replace(/<p>/gi, "");
> },
>
> I don't know whether these two errors are related to eachother.
> I also have no idea why the "string" disappeared...
> Using InPlaceEditor without your extension, this error does not
> appear.
> But then I am missing your great work ;-)
> The action for saving InPlaceEditor-contents looks like this:
>
> def save_file
>   file_path = params[:path]
>   file_content = params[:value]
>   begin
>     # ...
>     edited_file = File.open(file, "w")
>     edited_file << file_content
>     edited_file.close
>     render :partial => 'ide/partials/file_contents', :locals =>
> { :path => file_path, :file_contents =>
> _get_file_contents(file_path) }, :layout => false
>   rescue
>     # ...
>   end
> end
>
> The file is saved to the file system without any errors.
> I tried to solve this over the weekend but failed again.
> And those two dents I got are now medicated the hellboy-way ;-)
>
> Cheers,
>   Tom.
>
>
> On Apr 22, 2:29 am, Walter Lee Davis <[EMAIL PROTECTED]> wrote:
>> Object.extend(Ajax.InPlaceEditor.prototype, {
>>         onLoadedExternalText: function(transport) {
>>         Element.removeClasName(this.form, 
>> this.options.loadingClasName);
>>         this.editField.disabled = false;
>>         this.editField.value = transport.responseText;
>>         Field.scrolFreActivate(this.editField);
>>         }});
>>
>> Object.extend(Ajax.InPlaceEditor.prototype, {
>>         getText: function() {
>>         return this.element.childNodes[0] ?
>> this.element.childNodes[0].nodeValue : '';
>>         }
>>
>> });
>>
>> Add these two extensions afterprotaculous8-) loads. The first one
>> removes the stripTags feature from the editor. The second one replaces
>> the innerHTML with nodeValue. Those two together are what I did to get
>> < and > and so forth to show up properly.
>>
>> It is very important if you do this not to put htmlspecialchars() into
>> the mix. Something in prototype already does this, and it made quite a
>> dent in my forehead until I realized that. Double-escaped entities --
>> very nasty.
>>
>> Walter
>>
>
>
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Spinoffs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-spinoffs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to