[xwiki-users] wysiwsyg editor - new menu/toolbar item
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? Thanks, Marco Pinheiro
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-clie... (which I think you already did) * checkout the server side http://svn.xwiki.org/svnroot/xwiki/platform/web/trunk/xwiki-gwt-wysiwyg-serv... * write your plugin inside xwiki-gwt-wysiwyg-client module (e.g. org.xwiki.gwt.wysiwyg.client.plugin.foo.FooPlugin) * 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
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-clie... (which I think you already did) * checkout the server side http://svn.xwiki.org/svnroot/xwiki/platform/web/trunk/xwiki-gwt-wysiwyg-serv... * 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.* 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
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-clie... (which I think you already did) * checkout the server side http://svn.xwiki.org/svnroot/xwiki/platform/web/trunk/xwiki-gwt-wysiwyg-serv... * 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
participants (3)
-
Marco Pinheiro -
Marius Dumitru Florea -
Vincent Massol