On 03/03/2011 10:12 AM, Vincent Massol wrote: > > On Mar 3, 2011, at 9:00 AM, Marius Dumitru Florea wrote: > >> Hi Marco, >> >> On 03/03/2011 02:49 AM, Marco Pinheiro wrote: >>> Hi, >>> >>> I'm trying to extend wysiwyg editor with a new menu item or toolbar icon. >>> Here are the steps I'm following but the new menu item doesn't appear in >>> editor. >>> >>> 1) i copied ImporterPlugin java files to my project and modified package >>> name >>> 2) i modified plugin name in SomethingPluginFactory and menu item name >>> in SomethingMenuExtension. >>> 3) i export classes to a jar and copied to lib xwiki folder. >>> 4) modified macros.vm and put in plugin and menu parameters the name of new >>> plugin >>> >>> After restarted xwiki and couldn't see the new menu item. >>> Do I have the jar in the correct place? Do I need to tell xwiki to enable >>> the use of this "new" jar? >> >> Unfortunately it's not that easy to write a plugin for the WYSIWYG >> content editor. Although the code is written in Java it needs to be >> compiled into JavaScript and moreover plugins are (currently) not >> detected automatically (mainly because the Google Web Toolkit framework >> we're using doesn't support reflection) and so they have to be known by >> the editor at compile time. >> >> If you're still willing to write the plugin then you should follow this >> steps: >> >> * checkout the client side >> http://svn.xwiki.org/svnroot/xwiki/platform/web/trunk/xwiki-gwt-wysiwyg-client/ >> (which I think you already did) >> * checkout the server side >> http://svn.xwiki.org/svnroot/xwiki/platform/web/trunk/xwiki-gwt-wysiwyg-server/ >> * write your plugin inside xwiki-gwt-wysiwyg-client module (e.g. >> org.xwiki.gwt.wysiwyg.client.plugin.foo.FooPlugin) >
> Note that as a good practice you should never reuse someone's else package > and org.xwiki is reserved to XWiki development itself. > You should use your own packages such as com.acme.* Indeed. I could move the plugin API in a separate module xwiki-gwt-wysiwyg-plugin . This will allow him to write the plugin in a separate GWT module (see xwiki-gwt-dom and xwiki-gwt-user modules as examples) that depends on xwiki-gwt-wysiwyg-plugin. But he would still need to change the xwiki-gwt-wysiwyg-client module: * add a dependency to his module in pom.xml * modify the Wysiwyg.gwt.xml descriptor to inherit his GWT module * register his plugin factory in WysiwygEditorFactory Thanks, Marius > > Thanks > -Vincent > >> * register your plugin factory inside >> org.xwiki.gwt.wysiwyg.client.WysiwygEditorFactory >> * add your translation keys to org.xwiki.gwt.wysiwyg.client.Strings or >> to org.xwiki.gwt.wysiwyg.client.Messages, if they have parameters >> * add your images to org.xwiki.gwt.wysiwyg.client.Images >> * build xwiki-gwt-wysiwyg-client >> * build xwiki-gwt-wysiwyg-server (use -Pdev while you are developing to >> reduce GWT compilation time) >> * replace resources/js/xwiki/wysiwyg/xwe directory from your XWiki >> Enterprise instance with the one from the war generated by the >> xwiki-gwt-wysiwyg-server build >> * modify macros.vm as you did >> >> Note that if your plugin needs a service you have to put the service >> interface inside xwiki-gwt-wysiwyg-client but you are free to write the >> service implementation in your own module because the service is a >> server side component which is picked up automatically by the component >> manager as long as the service implementation jar is in WEB-INF/lib. >> >> Hope this helps, >> Marius >> >>> >>> Thanks, >>> Marco Pinheiro > _______________________________________________ > users mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/users _______________________________________________ users mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/users
