Hi Walter,
again, you were right!
I just put the pre-tag into my layout:
<pre id="file_contents" onclick="activateEditor()">
<%= yield :main %>
</pre>
And the JS-stuff for the InPlaceEditor, too.
Thanks so much for your help!
Tom.
(now using a grinding machine to get those two dents of my hellish
head...)
On Apr 23, 3:14 pm, Walter Lee Davis <[EMAIL PROTECTED]> wrote:
> 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
-~----------~----~----~----~------~----~------~--~---