[xwiki-devs] GSoc 2011: idea "Auto Completion in Content Editors" (updated)

Marius Dumitru Florea mariusdumitru.florea at xwiki.com
Mon Mar 28 10:10:28 UTC 2011


Hi James,

On 03/26/2011 02:58 PM, 许凌志(Jamesxu) wrote:
> Dear serg and marius,
> 
> These days I am focus on two things:

> 1. Design the auto-suggestion scenarios, and now it have been down as a 
> draf, because the docs are very long, and with lots of pictures, so I 
> upload it to the google doc, I invited you to view this doc in the 
> following 
> link:https://docs.google.com/document/pub?id=1dRp-d0Lj9b4Tf9YWEQgaPuDBk3N3Bw0GvP_LrrviCeU, 
> and I have also sent you the invitation for editing this document.
> I also upload pictures envolved in the doc to flicr, the url link is 
> under each picure, so that you can see the big picture more clearly.

I see you already put a loot of effort into writing this draft. Be
careful with that. You shouldn't spend time on details before you know
you're going into the right direction. First, make sure you understand
correctly what we expect from the project, by asking questions on this
mailing list. Then you should start with small examples, for only one
syntax element (link/image/macro).

Regarding your draft, I think it's too syntax oriented. You have to
understand that the content is king. The scope of this project is _not_
to help users learn the XWiki 2.0 syntax but to speed up content
creation/editing using the WYSIWYG/wiki editor.

Basic users don't care that image syntax starts with [[image: or that
bold syntax is enclosed in **. They just want to insert an image quickly.

Text formatting is not a problem for the WYSIWYG editor users because
they already know that Ctrl+B makes text bold. They don't have to type
** or remember a shortcut key that will open a suggestion for **.

So for the WYSIWYG editor (the rich text area, not the source text
area!) you have to focus only on link, image and macro syntax (macro is
very important!). In the end the user should be able to insert a link,
an image or a macro quickly, without leaving the text area, using only
the keyboard.

The wiki editor should behave almost as the WYSIWYG editor. One of the
differences could be that the wiki editor offers autocomplete
suggestions for the link, image and macro parameters (which doesn't make
sense in the WYSIWYG editor because you don't see the XWiki 2.0 syntax
of a link/image/macro but their output).

> 
> 2.I am build the develop environment for wysiwyg editors follow marius' 
> introduction. and finnally get the compiled war file, but I came across 
> a problem: where is the entry for it, I tried 
> "localhost:8080/wysiwyg/gwtrpc.gwtrpc" and also 
> "localhost:8080/xwe/gwtrpc.gwtrpc", according to the web.xml file under 
> the war file, but both I got 404 error page, could you give me the right 
> entry for it?

The WYSIWYG editor can be used outside of XWiki but its main features:
link, image and macro insertion/editing are XWiki specific and thus are
available only when you use the editor inside XWiki.

The best approach is to download the latest XWiki Enterprise snapshot
from
http://maven.xwiki.org/snapshots/org/xwiki/enterprise/xwiki-enterprise-jetty-hsqldb/
and update the WYSIWYG editor:

* overwrite the jars from WEB-INF/lib with the ones from the WYSIWYG
editor's war (only if you made changes to the server side)
* replace the /resources/js/xwiki/wysiwyg/xwe directory with the one
from the WYSIWYG editor's war (don't overwrite! remove the existing
directory and copy the new one)

Don't forget to build xwiki-gwt-wysiwyg-war module using -Pdev profile
so that it doesn't generate all the GWT permutations.

Hope this helps,
Marius

> 
> This is the web.xml file:
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:web="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
> xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
> http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
> version="2.4">
> 
> <display-name>xwe</display-
> name>
> <description>XWiki's WYSIWYG Editor</description>
> 
> <!-- This filter is used to convert the HTML generated by the WYSIWYG 
> editor to source syntax -->
> <filter>
> <filter-name>ConversionFilter</filter-name>
> <filter-class>com.xpn.xwiki.wysiwyg.server.filter.ConversionFilter</filter-class>
> </filter>
> 
> <!-- This filter is used to initialize the XWiki context before 
> processing a request. -->
> <filter>
> <filter-name>XWikiContextInitializationFilter</filter-name>
> <filter-class>com.xpn.xwiki.wysiwyg.server.filter.XWikiContextInitializationFilter</filter-class>
> </filter>
> 
> <filter-mapping>
> <filter-name>ConversionFilter</filter-name>
> <url-pattern>/*</url-pattern>
> </filter-mapping>
> 
> <filter-mapping>
> <filter-name>XWikiContextInitializationFilter</filter-name>
> <servlet-name>gwtrpc</servlet-name>
> </filter-mapping>
> 
> <!-- This is the entry point for all component-based XWiki GWT services. -->
> <servlet>
> <servlet-name>gwtrpc</servlet-name>
> <servlet-class>com.xpn.xwiki.wysiwyg.server.XWikiRemoteServiceServlet</servlet-class>
> </servlet>
> 
> <servlet-mapping>
> <servlet-name>gwtrpc</servlet-name>
> <url-pattern>*.gwtrpc</url-pattern>
> </servlet-mapping>
> </web-app>
> 
> 
> 2011/3/26 许凌志(Jamesxu) <lingzhixu326 at gmail.com 
> <mailto:lingzhixu326 at gmail.com>>
> 
> 
> 
>     On Thu, Mar 24, 2011 at 7:00 PM, Marius Dumitru Florea
>     <mariusdumitru.florea at xwiki.com
>     <mailto:mariusdumitru.florea at xwiki.com>> wrote:
> 
> 
> 
>         On 03/24/2011 08:51 AM, 许凌志(Jamesxu) wrote:
>          >
>          >
>          > On Thu, Mar 24, 2011 at 10:54 AM, Sergiu Dumitriu
>         <sergiu at xwiki.com <mailto:sergiu at xwiki.com>
>          > <mailto:sergiu at xwiki.com <mailto:sergiu at xwiki.com>>> wrote:
>          >
>          > On 03/22/2011 03:37 AM, 许凌志(Jamesxu) wrote:
>          > > Hi Marius Florea,
>          > >
>          > > Thanks for your reply, it is really helpful for me to go
>          > further.
>          > >
>          > > For xwiki syntaxes, you gave me a good suggestion that I
>         should not
>          > > autocomplete all the attributes for a tag, it could be
>         added when
>          > user
>          > > triggers by some inputs or by the hotkeys just like eclipse
>         HTML
>          > editor.
>          > >
>          > > However, in my opinion, for some syntaxes, to suggest user some
>          > required
>          > > atrributes would be helpful for them to make less mistakes, and
>          > it is more
>          > > intuitive for them to fullfill the blank attributes which are
>          > required.
>          >
>          > +1, mandatory attributes should be inserted.
>          >
>          >
>          > > Anyway, I haven't gone through and evaluate all the xwiki
>          > syntaxes, I should
>          > > finished this step first, and then think about the use case for
>          > some of
>          > > these syntaxes. Here are my steps for preparation before
>         coding:
>          > >
>          > > - Go through and evaluate all the xwiki syntaxes, to find out a
>          > list of
>          > > syntaxes which are suitable to implement autocompletion
>         features
>          >
> 
>          > The main target is xwiki/2.0 (and xwiki/2.1 which is almost
>         the same
>          > thing). Any other syntax is just a bonus.
> 
>         Thanks to its (relatively) new rendering engine (
>         http://rendering.xwiki.org ) XWiki is a polyglot wiki. Before having
>         this new rendering engine we used Radeox for rendering wiki
>         pages and
>         the only supported syntax was xwiki/1.0. With the new rendering
>         engine
>         we introduced xwiki/2.0 syntax as the default syntax for wiki
>         pages and
>         marked xwiki/1.0 syntax as deprecated. xwiki/2.1 syntax is now under
>         development, trying to fix some of the limitations of the
>         xwiki/2.0 syntax.
> 
> 
>     Thanks for the introduction to the xwiki syntax rendering machanism,
>     I know better now, it will be very helpful in my future work;
> 
> 
>         Taken this into account, the main target is, as Sergiu said, the
>         xwiki/2.0 syntax. Of course, it would be great if you can come
>         with a
>         design that allows us to easily add autocomplete support for other
>         syntaxes in the future. So basically you should split your code
>         in two:
>         a part that is syntax independent and a part that is specific to
>         xwiki/2.0 syntax. And the second part should be as much as possible
>         plugable.
> 
> 
>     +1
> 
> 
>          >
>          >
> 
>          > I install the xwiki/3.0, but I haven't found the
>         autocompletion features
>          > for the wysiwyg editor.
> 
>         Note that the wiki syntax version is independent from the XWiki
>         Enterprise version. The latest XE release is 3.0RC1 and it uses
>         xwiki/2.0 as the default syntax for its wiki pages. XE 4.0 might use
>         xwiki/2.1 as the default syntax for its wiki pages.
> 
>         As Caty told you, neither the WYSIWYG editor nor the wiki editor
>         have
>         syntax autocomplete implemented.
> 
>          > you refered "xwiki/2.1 which is almsot the same thing", I
>         didn't catch
>          > the meaning for the "same thing".
>          >
>          > Do you mean some of xwiki syntaxes have been implemented for
>          > autocompletion features in WYSIWYG editor of xwiki/2.1?
>          > If so, could you give a link for introducing these features.
>          >
> 
>          > I have already found the only doc
>          > "http://platform.xwiki.org/xwiki/bin/view/Main/XWikiSyntax" for
>          > introduction the xwiki syntaxes 2.0, and after reading
>         through, I found
>          > the newest version of xwiki syntaxes is 2.1, so could you
>         give me some
>          > docs about syntaxes 2.1, and could you explain to me, what
>         kind of xwiki
>          > syntaxes versions used in different version of xwiki.
> 
>         xwiki/2.1 syntax is still under development, that's why it isn't
>         fully
>         documented.
> 
>          >
>          >
>          > > - Design the use cases with some screenshots for them, just
>         like
>          > >
>          >
>         http://incubator.myxwiki.org/xwiki/bin/view/Improvements/UserStatusProposal
>          > > - Pick some to implement the prototype of them to get the
>          > feedbacks from the
>          > > mailing list
>          > > - Start to coding for all of them
>          >
>          > Good plan. The best approach is to have something working
>         ASAP and then
>          > incrementally improve/build upon it.
>          >
>          >
> 
>          > Thank you, these days I have read all the docs from "xwiki
>         development
>          > zone <http://dev.xwiki.org/xwiki/bin/view/Main/WebHome>", it
>         is really
>          > helpful for me to understand how to contribute to xwiki, I am
>         trying to
>          > download xwiki WYSIWYG editor source codes and building them,
>         try to
>          > have a look its source files.
>          > I think it is the neccessary things I am have to do before
>         coding.
> 
>         The WYSIWYG editor sources are in
>         http://svn.xwiki.org/svnroot/xwiki/platform/web/trunk/ . The
>         xwiki-gwt-wysiwyg-war module packages the
>         xwiki-gwt-wysiwyg-server and
>         the xwiki-gwt-wysiwyg-client modules. The xwiki-gwt-wysiwyg-client
>         module depends on xwiki-gwt-wysiwyg-plugin-api, xwiki-gwt-user and
>         xwiki-gwt-dom modules.
> 
> 
>     I have downloaded all the code under
>     http://svn.xwiki.org/svnroot/xwiki/platform/web/trunk/ , and build
>     with maven in eclipse.
>     finally I got a war file
>     "xwiki-web-gwt-wysiwyg-war-3.1-SNAPSHOT.war", I renamed it to
>     "wysiwyg.war" and put it uder tomcat6.0.18,I also look through the
>     web.xml file under this war file, I found the entry is
>     "localhost:8080/wysiwyg/gwtrpc.gwtrpc" according to the web.xml
>     file, but I got nothing excpet the 404 error.
>     I think maybe the entry url is wrong, but what is the right url,
>     according to the web.xml file bellow, I also tried
>     "localhost:8080/xwe/gwtrpc.gwtrpc", but resulted in the same error;
> 
>     <?xml version="1.0" encoding="ISO-8859-1"?>
>     <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
>     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>     xmlns:web="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
>     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>     version="2.4">
> 
>     <display-name>xwe</display-name>
>     <description>XWiki's WYSIWYG Editor</description>
> 
>     <!-- This filter is used to convert the HTML generated by the
>     WYSIWYG editor to source syntax -->
>     <filter>
>     <filter-name>ConversionFilter</filter-name>
>     <filter-class>com.xpn.xwiki.wysiwyg.server.filter.ConversionFilter</filter-class>
>     </filter>
> 
>     <!-- This filter is used to initialize the XWiki context before
>     processing a request. -->
>     <filter>
>     <filter-name>XWikiContextInitializationFilter</filter-name>
>     <filter-class>com.xpn.xwiki.wysiwyg.server.filter.XWikiContextInitializationFilter</filter-class>
>     </filter>
> 
>     <filter-mapping>
>     <filter-name>ConversionFilter</filter-name>
>     <url-pattern>/*</url-pattern>
>     </filter-mapping>
> 
>     <filter-mapping>
>     <filter-name>XWikiContextInitializationFilter</filter-name>
>     <servlet-name>gwtrpc</servlet-name>
>     </filter-mapping>
> 
>     <!-- This is the entry point for all component-based XWiki GWT
>     services. -->
>     <servlet>
>     <servlet-name>gwtrpc</servlet-name>
>     <servlet-class>com.xpn.xwiki.wysiwyg.server.XWikiRemoteServiceServlet</servlet-class>
>     </servlet>
> 
>     <servlet-mapping>
>     <servlet-name>gwtrpc</servlet-name>
>     <url-pattern>*.gwtrpc</url-pattern>
>     </servlet-mapping>
>     </web-app>
> 
> 
>         The wiki editor is a plain HTML text area so it doesn't have any
>         code.
> 
>          >
>          >
>          > >> Good knowledge of JavaScript, DOM and OOP (for the GWT
>         code) is the
>          > >> basic requirement to finish this project.
>          > >
>          > > I think javascript, DOM, OOP would not be a problem for me, I
>          > used it almost
>          > > everyday for 3 years, and and experienced with dojo, jquery, I
>          > also wrote
>          > > some tutorial for them, GWT is some kind javascript lib like
>          > them, though
>          > > there are some differences, I think I would be a quick learner
>          > for it, since
>          > > now, I have learned it for a while.
>          > >
>          >
>          > GWT is not quite another JavaScript library. It's actually a Java
>          > toolset which compiles a form of Java code into JavaScript.
>          >
>          >
>          > Yes, you are right, I am reading the docs of GWT now, it is
>         pretty
>          > different from normal javascript tools, foutunitly, I am
>         practiced in
>          > Java and javascript, though it is weild to get to know GWT at
>         first, and
>          > now, I think it is not so difficult, and I am now downloading
>         the source
>          > code of WYSWYG editors, trying to understand the structure
>         using GWT,
>          > and aslo read some samples from GWT documentation center.
>          >
>          >
> 
>          > Personally I'm against using GWT here, and I'd prefer
>         something using
>          > basic Prototype.js
> 
>         Sergiu, you are against using GWT for the wiki editor only, right?
>         Anyway, the autocomplete feature should have the same look and
>         feel in
>         both the WYSIWYG and wiki editor. A basic design would be to
>         have three
>         modules:
> 
>         (1) Determine the context based on the current selection/caret
>         (2) Offer suggestions based on the context
>         (3) Output the selected suggestion in the target syntax
> 
>         (1) and (3) depend on the editor/syntax, but (2) should be the
>         same: it
>         doesn't matter the editor or the syntax when you display a list of
>         documents to choose from in order to create a link.
> 
>         The language used to implement (1) and (3) depends on the target
>         editor.
>         I think we should use GWT for the WYSIWYG editor and
>         Prototype.js for
>         the wiki editor. The question is what to use for (2). Sergiu clearly
>         prefers Prototype.js and I'm ok with that.
> 
>         Hope this helps,
>         Marius
> 
>          >
>          >
>          > It is a good idea to use some native javascript tools like
>         Prototype, I
>          > have used Prototype for more than 4 years, and also I am a
>         fans of dojo
>          > and jquery, I think the the WYSIWYG could be implemented as a
>         prototype
>          > or dojo module.
>          >
>          > However, I think the first thing we should do is to work on the
>          > autocompletion idea based on GWT, cause till now, the editor is
>          > implemented by GWT, it would be easy to move on.
>          >
>          >
>          > --
>          > Sergiu Dumitriu
>          > http://purl.org/net/sergiu/
>          > _______________________________________________
>          > devs mailing list
>          > devs at xwiki.org <mailto:devs at xwiki.org> <mailto:devs at xwiki.org
>         <mailto:devs at xwiki.org>>
>          > http://lists.xwiki.org/mailman/listinfo/devs
>          >
>          >
>          >
>          >
>          > --
>          > Best wishes,
>          >
>          > 许凌志(Jame Xu)
>          >
>          > MOE KLINNS Lab and SKLMS Lab, Xi'an Jiaotong University
>          >
>          > Department of Computer Science and Technology, Xi’an Jiaotong
>         University
>         _______________________________________________
>         devs mailing list
>         devs at xwiki.org <mailto:devs at xwiki.org>
>         http://lists.xwiki.org/mailman/listinfo/devs
> 
> 
> 
> 
>     -- 
>     Best wishes,
> 
>     许凌志(Jame Xu)
> 
>     MOE KLINNS Lab and SKLMS Lab, Xi'an Jiaotong University
> 
>     Department of Computer Science and Technology, Xi’an Jiaotong University
> 
> 
> 
> 
> -- 
> Best wishes,
> 
> 许凌志(Jame Xu)
> 
> MOE KLINNS Lab and SKLMS Lab, Xi'an Jiaotong University
> 
> Department of Computer Science and Technology, Xi’an Jiaotong University



More information about the devs mailing list