Wiki source code of XWiki

Last modified by Ecaterina Valica on 2016/11/17 15:32

Show last authors
1 = XWiki =
2
3 A collaborative development platform runtime based on the wiki paradigm
4
5
6 (% style="font-size: 70%;" %)
7 (((
8 Vincent Massol
9 October 2011
10 )))
11
12 === Agenda ===
13
14 * What is XWiki?
15 * Development Capabilities
16 * Why use XWiki?
17 * QA
18
19 == What is XWiki? ==
20
21 === Is it a first gen Wiki? ===
22
23 [[image:wikipedia.png]]
24
25 (% class="build" style="color: red;" %)
26 (((
27 Yes, but not only!
28 )))
29
30 === Is it an Advanced Wiki? ===
31
32 [[image:advancedwiki.png]]
33
34 (% class="build" style="color: red;" %)
35 (((
36 Yes, but not only!
37 )))
38
39 === It’s a dev platform! ===
40
41 {{gallery}}
42 image:gallery1.png
43
44 image:gallery2.png
45
46 image:gallery3.png
47 {{/gallery}}
48
49 === XWiki Platform ===
50
51 [[image:platform.png]]
52
53 ... for developing (collaborative) web applications
54
55 === Multiple Usages ===
56
57 [[image:usages.png]]
58
59 == Development Capabilities ==
60
61 === Scripting in Pages (1/2) ===
62
63 {{code language="java"}}
64 {{groovy}}
65 @Grab(group="org.codehaus.groovy.modules.http-builder",
66 module="http-builder", version="0.5.1")
67 import groovyx.net.http.*
68
69 def http = new HTTPBuilder( "http://nexus.xwiki.org/nexus/" )
70 def resp = http.get( path: "service/local/repositories")
71
72 println "|=Name|=Type|=Location"
73 resp.data."repositories-item".each() {
74 println "|${it.name}|${it.repoType}|${it. contentResourceURI}"
75 }
76 {{/groovy}}
77 {{/code}}
78
79
80 (% style="text-align: center;" %)
81 (((
82 image:demo.png
83 )))
84
85 === Scripting in Pages (2/2) ===
86
87 {{code language="velocity"}}
88 {{velocity}}
89 #set ($xwql = "where doc.content like '%welcome%'")
90 #foreach ($item in $services.query.xwql($xwql).execute())
91 #if ($request.confirm == "1")
92 #set ($itemDoc = $xwiki.getDocument($item))
93 $itemDoc.setContent($itemDoc.getContent().replaceAll(
94 "welcome", "bienvenue"))
95 $itemDoc.save("Replaced bienvenue")
96 * [[$item>>$item]] replaced!
97 #else
98 * [[$item>>$item]]
99 #end
100 #end
101
102 [[Replace "welcome" by "bienvenue">>?confirm=1]]
103 {{/velocity}}
104 {{/code}}
105
106
107 (% style="text-align: center;" %)
108 (((
109 image:demo.png
110 )))
111
112 === Adding MetaData ===
113
114 * Ability to associate arbitrary 
data to any wiki page
115 ** Enable structure in the wiki
116 ** Enable Application development
117 * Future: [[Application Within Minutes>>http://incubator.myxwiki.org/xwiki/bin/view/Improvements/ApplicationWithinMinutesProposalI2]]
118
119 (% style="text-align: center;" %)
120 (((
121 image:graal.png
122 )))
123
124 (% style="text-align: center;" %)
125 (((
126 image:demo.png
127 )))
128
129 === Wiki Macros ===
130
131 [[image:wikimacros.png]]
132
133 (% style="text-align: center;" %)
134 (((
135 image:demo.png
136 )))
137
138 === Skinning & Theming ===
139
140 [[image:skinning.png]]
141
142
143 (% style="text-align: center;" %)
144 (((
145 image:demo.png
146 )))
147
148 === Components ===
149
150 (% style="font-size: 70%;" %)
151 (((
152 {{code language="java"}}
153 @ComponentRole
154 public interface Macro
155 {
156 List<Block> execute();
157 }
158 {{/code}}
159
160 {{code language="java"}}
161 @Component
162 @Named("message")
163 @Singleton
164 public class MessageMacro implements Macro
165 {
166 @Inject
167 private Execution execution;
168
169 @Inject
170 @Named("box")
171 private Macro boxMacro;
172
173 public List<Block> execute()
174 {
175 ...
176 }
177 }
178 {{/code}}
179
180
181 ##META-INF/components.txt##
182
183 {{code}}
184 org.xwiki.rendering.internal.macro.message.MessageMacro
185 {{/code}}
186 )))
187
188 === extensions.xwiki.org ===
189
190 [[image:extensions.png]]
191
192 == Why use XWiki? ==
193
194 === Long tail of Apps ===
195
196 [[image:longtail.png]]
197
198 (% style="color: red;" %)
199 (((
200 XWiki is the Excel of the Web!
201 )))
202
203 === Pros (1/2) ===
204
205 * Iterative, Need-based development
206 * Continuous Delivery
207 ** Online immediately (no deployment needed)
208 * Works from day one, immediate feedbacks
209
210 === Pros (2/2) ===
211
212 * Work collaboratively on creating applications
213 ** Designers can style while devs create logic
214 * Open source
215 * Strong and meritocratic community
216
217 === Cons ===
218
219 * Save code in SCM
220 ** ... but [[SVN Application>>http://extensions.xwiki.org/xwiki/bin/view/Extension/SVN+Application]]
221 * Low integration with existing dev tools
222 ** ... but [[XEclipse>>http://xeclipse.xwiki.org/]]
223 ** ... but [[WebDAV>>http://platform.xwiki.org/xwiki/bin/view/Features/WebDAV]]
224 * Not an official standard
225 * Higher “risk”, less trained devs, etc
226
227 === Q&A ===
228
229 image:qa.png
230
231 === Contact ===
232
233 {{container layoutStyle="columns"}}
234 (((
235 (% style="font-size:130%" %)Vincent Massol
236
237
238 vincent@xwiki.com
239 skype: vmassol
240 http://about.me/vmassol
241
242
243 http://xwiki.org
244 http://xwiki.com
245 )))
246 (((
247 [[image:vincent.png||style="width: 320px; height: 522px;"]]
248 )))
249 {{/container}}