yep I do that. Actually, I wrote that article :)

My problem is more subtle here and I have discovered now that is
related to javascript execution order. In fact I open a new thread to
investigate that specific issue. I also try to produce a ExamplePage
to commit on tinymce example project.

On Fri, Oct 9, 2009 at 7:47 PM, Dane Laverty <danelave...@gmail.com> wrote:
> Did you get the
> response.renderJavascriptReference(TinyMCESettings.javaScriptReference()); ?
>
> In my code it goes like this (as per
> http://wicketbyexample.com/wicket-tinymce-some-advanced-tips/):
>
> add(new HeaderContributor(new IHeaderContributor() {
>             public void renderHead(IHeaderResponse response) {
>
> response.renderJavascriptReference(TinyMCESettings.javaScriptReference());
>             }
>        }));
>
> Dane
>
> On Fri, Oct 9, 2009 at 10:17 AM, Daniele Dellafiore <ilde...@gmail.com>wrote:
>
>> I start from the end: I need fine control over the order javascript is
>> executed. What is the javascript to call a refresh on a component like
>> is done when I use target.addComponent()?
>>
>>
>> From the start.
>> I make that work with bgooren suggestion, using the javascript to
>> remove the editor. No need to remove the behavior on java side. That
>> works for the checkbox that dynamically adds and removes the Rich
>> Editor.
>>
>> Now, the problem on refreshing a list of fields.
>> What happens: to add a new field, click on ADD and I add my ListView
>> is added to be refreshed via a target.addComponent(). In doing this,
>> the markupId of the component changes, so tinyMce lose reference to
>> it's existing editors.
>>
>> My solution: on the ADD callback, I remove the editors and let them be
>> re-added during repainting. Works? NO!
>> Why? because the listView is repainted before the mceControlRemove is
>> executed, even if they are added to the same AjaxRequestTarget in the
>> ADD callback. So happens that:
>> 1.  the remove fails because the old component is found no more
>> 2. after, the submit fails because tinyMCE still have the old editor
>> reference.
>>
>> --> ;(
>>
>> On Mon, Oct 5, 2009 at 11:44 AM, Daniele Dellafiore <ilde...@gmail.com>
>> wrote:
>> > Hey Bas, thanks for answering.
>> >
>> > Unfortunately it does not work.
>> > Even if I run:
>> >
>> >               String removeEditor =
>> "tinyMCE.execCommand('mceRemoveControl',
>> > false, '"
>> >                      + propertyPanel.getValueMarkupId() + "');";
>> >                target.appendJavascript(removeEditor);
>> >
>> > or simply remove the TinyMceBehavior from my TextField, the result is the
>> > same: mce editor disappear correclty, but remains in tinyMCE.editors list
>> so
>> > Tiny tries to process it in a successive iteration.
>> >
>> > I try to find help on tinyMCE forum
>> >
>> >
>> > On Mon, Oct 5, 2009 at 10:59 AM, bgooren <b...@iswd.nl> wrote:
>> >>
>> >> I'll show you some parts of my code so you get an idea of how I do
>> things.
>> >>
>> >> First of all, I have used AjaxEditableLabel from wicket-extensions as a
>> >> starting point.
>> >> TinyMCE's javascripts should always be loaded:
>> >>
>> >> // Preload TinyMCE
>> >>        add( new AbstractBehavior()
>> >>        {
>> >>
>> >>           �...@override
>> >>            public void renderHead( IHeaderResponse response )
>> >>            {
>> >>                if( !tinyMCELoaded )
>> >>                {
>> >>                    response.renderJavascriptReference(
>> >> TinyMCESettings.javaScriptReference() );
>> >>
>> >>                    settings = buildTinyMCESettings();
>> >>
>> >>                    tinyMCELoaded = true;
>> >>                }
>> >>            }
>> >>
>> >>        } );
>> >>
>> >> In my case TinyMCE is loaded through an AJAX call:
>> >>
>> >> @SuppressWarnings("unchecked")
>> >>   �...@override
>> >>    protected void onEdit( AjaxRequestTarget target )
>> >>    {
>> >>        super.onEdit( target );
>> >>
>> >>        final String id = editor.getMarkupId( true );
>> >>        final StringBuilder buf = new StringBuilder();
>> >>
>> >>        // Load plugins
>> >>        buf.append( settings.getLoadPluginJavaScript() ).append( ";\n" );
>> >>
>> >>        // Initialize tinyMCE
>> >>        buf.append( "tinyMCE.init({" ).append( settings.toJavaScript(
>> >> Mode.none, Collections.EMPTY_LIST ) ).append( " });\n" );
>> >>        buf.append( settings.getAdditionalPluginJavaScript() ).append(
>> >> ";\n"
>> >> );
>> >>
>> >>        // Setup editor
>> >>        buf.append( "tinyMCE.execCommand('mceAddControl',true,'"
>> ).append(
>> >> id ).append( "');" );
>> >>
>> >>        // Request focus on editor
>> >>        buf.append( "setTimeout( function()
>> >> {tinyMCE.execCommand('mceFocus',true,'" ).append( id ).append( "');},
>> 500
>> >> );" );
>> >>
>> >>        target.appendJavascript( buf.toString() );
>> >>    }
>> >>
>> >> As you can see I initialize TinyMCE, and then perform an mceAddControl
>> >> command on the textarea I want to convert to a TinyMCE editor.
>> >>
>> >> Finally, I need to switch back to a textarea before unloading, so the
>> >> correct contents are POSTed. To do so, I have added an AjaxCallDecorator
>> >> to
>> >> the close request, and allow implementations to override it:
>> >>
>> >> @Override
>> >>    protected IAjaxCallDecorator getCloseDecorator()
>> >>    {
>> >>        return new AjaxCallDecorator()
>> >>        {
>> >>
>> >>           �...@override
>> >>            public CharSequence decorateScript( CharSequence script )
>> >>            {
>> >>                return "tinyMCE.execCommand('mceRemoveControl', false, '"
>> +
>> >> editor.getMarkupId() + "'); "
>> >>                        + super.decorateOnSuccessScript( script );
>> >>
>> >>                // Call to save contents back to textarea
>> >>                // return "tinyMCE.get('" + editor.getMarkupId() +
>> >> "').save(); " +
>> >>                // super.decorateScript( script );
>> >>            }
>> >>
>> >>        };
>> >>    }
>> >>
>> >> The above code removes TinyMCE from the given textarea, and saves the
>> HTML
>> >> back into the textarea. I have commented out the call to save(), since
>> it
>> >> was not necessary.
>> >>
>> >> Bas
>> >>
>> >>
>> >> Daniele Dellafiore wrote:
>> >> >
>> >> > I get what the real problem is: tinyMce saves internally each "editor"
>> >> > that
>> >> > is added to a page in a list called, well, editors.
>> >> > When I remove the behavior from a textField, I should also call
>> >> > tinyMce.remove passing the editors as a parameter.
>> >> >
>> >> > I will try to do this but any help is appreciated :)
>> >> >
>> >> > This is for the checkbox that enable/disable the tinyMce behavior.
>> >> >
>> >> >
>> >> > I have a more subtle situation: I have a list of textFields and a
>> button
>> >> > to
>> >> > add more. When I add a new field, I refresh the list via AJAX to show
>> >> > the
>> >> > new field. But, refreshing the list also causes the html id of any
>> >> > element
>> >> > in the list to change!
>> >> >
>> >> > So, when in the end I submit the form, tinyMce cannot find its editors
>> >> > anymore cause the parent DIV of the INPUT field that has an associated
>> >> > tinyMce editor just changed it's html id.
>> >> > Given that the id will change and there is no alternatives, I have to
>> >> > find
>> >> > a
>> >> > way to keep the associations or to clean all editors and recreate them
>> >> > at
>> >> > every list refresh.
>> >> >
>> >> > What is your suggesions?
>> >> >
>> >> > --
>> >> > Daniele Dellafiore
>> >> > http://blog.ildella.net
>> >> > http://twitter.com/ildella
>> >> >
>> >> >
>> >>
>> >> --
>> >> View this message in context:
>> >>
>> http://www.nabble.com/-tinymce--problem-adding-removing-TinyMceBehavior-dinamically-tp25681833p25747314.html
>> >> Sent from the Wicket - User mailing list archive at Nabble.com.
>> >>
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> >> For additional commands, e-mail: users-h...@wicket.apache.org
>> >>
>> >
>> >
>> >
>> > --
>> > Daniele Dellafiore
>> > http://blog.ildella.net
>> > http://twitter.com/ildella
>> >
>>
>>
>>
>> --
>> Daniele Dellafiore
>> http://blog.ildella.net
>> http://twitter.com/ildella
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> For additional commands, e-mail: users-h...@wicket.apache.org
>>
>>
>



-- 
Daniele Dellafiore
http://blog.ildella.net
http://twitter.com/ildella

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to