Wiki source code of Collaborative Drawing

Last modified by Vincent Massol on 2024/02/26 17:55

Show last authors
1 {{toc/}}
2
3 {{html clean="false" wiki="true"}}
4 <blockquote>
5 <p/>
6 In this page i'll display all the information about my Google Summer of Code 2008 project, the Collaborative Business Drawing plugin
7
8 = Svg content: =
9
10 This application will use svg(http://www.w3.org/Graphics/SVG) syntax in order to draw the various objects and therefore we have to found a way to store and edit this information.
11
12 <p/>
13 Currently we have two implementation options to perform this task, the Object approach and the Attachment approach, and are trying to decide which one is the better, so, in order to perform that i've prepared a few mockups.
14
15 <p/>
16 To clarify the intent of these approachs, it's good to keep in mind that a drawing has various edition modes and privileges.More specifically, we should have 3 user modes:
17
18 * Administrator: In administrator mode the drawing content will be presented by the SVG editor and the user can:
19 ** Edit the drawing
20 ** Add or remove users
21 ** Modify the drawing name and description
22 * Editor: In the editor mode the drawing content will also be presented by the SVG editor but the user can only edit the drawing content.
23 * Viewer: In the viewer mode the drawing will be presented as .png file using the Batik plugin and therefore the user only has rights to view the drawing.
24 <p/>
25
26 === The object approach: ===
27
28 In this perspective, the SVG content would be saved on a SVG object with the following properties: http://dl.getdropbox.com/u/47956/XWiki&#95;SVG&#95;Object&#95;Description.pdf , this SVG object would be available in the page, could be accessed by the getContent() method and edited with a simple saveContent() call.
29
30 <p/>
31 In order to store the privileges and the creation date the current page should be used and to show that here's example:
32 <p/>
33 [[image:XWikipagerightsmanagement.png||height="400" width="900"]]
34
35
36 <p/>
37 Here's a example of the view mode:
38 <p/>
39 [[image:SVGObjectviewmode.png||height="628" width="900"]]
40
41 <p/>
42 And finally here's a edition mode example:
43 <p/>
44 [[image:SVGObjecteditor.png||height="683" width="900"]]
45
46 === The attachment approach: ===
47
48 In this approach, the SVG content will be stored on a attachment and so all the edition operations would be saved on it as new versions. It's identical to the object approach except in the fact that the svg content wouldn't be in the page itself(we still would need a reference to the attachment on it).<br/>When a user want's to go to edition mode, in this approach a full-screen editor will be launched like the next one:
49 <p/>
50 [[image:SVGObjectfulllscreenedit.png||height="419" width="901"]]
51
52 and all the document properties would have to be stored on the attachment.<br/>Note: Obviously the full screen mode can be used in both approaches and the examples shown are possible desings for the UI which in the future will be discussed.
53 <p/>
54 </blockquote>
55 {{/html}}

Get Connected