Wiki core services (sprint Apr-11-2008) - Bliki integration
User stories
- The user clicks the "Wiki" link in the project workspace and one wiki page appears in the main Iframe (as it does now)
- The user clicks the "Modify" (triangle) icon on the toolbar to edit the wiki page.
- The user edits the wiki page by entering wikiText into an ExtJS TextArea? box (HTML TextArea? box is OK at first).
- When the user clicks the "Submit" button, his wikiText changes are displayed in HTML in the main Iframe.
About Bliki http://en.wikipedia.org/wiki/Bliki
Bliki (also known as a WikiLog?, WikiWeblog?), is a blog with wiki support. This means that after (or before) an article is posted to the blog, it can be edited, either by anyone or by some group of authorized users. This is very fine Wiki parser and rendering engine, with high independency from Servlet, Request and Context, JSP too. It has real parser, not regex string replace. It's very interesting for Wiki framework developers.
Shortcoming
Since Bliki is under development, most of the downsides of Bliki are concerning it’s lack of methods for rendering templates (e.g. {{Infobox Software}}, {{Reflist}}…), lack of methods for presenting Categories, lack of redirecting features (HTML rendering pages that contain #REDIRECT wiki content), and lack of methods for direct updating/submitting wiki articles on wiki server.
Steps preformed to overcome some of them
On the other hand, there is a possibility for implementing methods for rendering templates. As a proof of that, I have found the code to implement properly {{Reflist}} template rendering in our application – it requires one additional class extended from class WikiModel? with some extra code. I placed that class in wiki package under the name of ExtWikiModel?. For rendering Categories links, I have added one additional method in ExtWikiModel?, called parseCategories with some extra code for calling that method to perform his job.
Concerning editing/submitting wiki pages there is one try to implement that functionality in Bliki, but currently it doesn't function. It may be possible to overcome that by use of existing jwbf framework.
User stories - steps performed
Steps performed related to user stories:
- Collecting wiki text by the use of Bliki's API,
- Converting it into HTML markup, again by the use of Bilki's API,
- Making textarea, visable after clicking on modify action bar button, and populating it with wiki markup text received in step 1,
- Creating cancel/reset/preview buttons, in pnet’s style, for hiding of textarea/reverting to initial content of wiki page/previewing edited wiki text (submit option in this sprint can rather be understood as preview option, since wiki text isn't pesisisted anywhere),
- Creating spring Controller to perform all the necessary actions for this user story to work. It is used also for removing all java code from wiki related jsp's, and placing that code into spring class, for capturing edited wiki text into java variable in order to manipulate with it – convert it into HTML markup again and present it into the page for preview.
- Parsing links of each loaded wiki page, for proper moving from page to page, from within project.net application. The method used for that is parseLinks from WikiProcessingHandler? class.
Code related to wiki features
Code related to wiki feature is:
- Java files placed in trunk\core\src\net\project\wiki folder - containing WikiProcessingHandler?.java and ExtWikiModel?.java classes,
- Jsp pages are placed in trunk\ core\web\jsp\wiki folder - containing jsp pages Main.jsp and MainPage?.jsp.
- Jar files bliki.3.0.0.jar, and htmlparser.jar placed in trunk\core\lib folder.
User perspective
User is possible to perform following:
- See project.net wiki page in html (initially) after clicking on wiki navigation bar button,
- Modify wiki page content using wiki markup, by clicking on modify action bar button,
- Cancel modifying wiki page content by clicking on cancel button,
- Reset changes made during modification of wiki page to initial content, by clicking on reset button,
- Preview changes made to current wiki page, in HTML, by clicking on preview button,
- Move through presented wiki pages from within project.net application.
