Wiki source code of Public Web Site

Version 25.41 by Agnease on 2026/06/30 12:18

Show last authors
1 {{velocity}}
2 #macro (displayPublicContent)
3 #set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome'))
4 {{html clean="false"}}
5 <section class="hero hero-saas" id="top">
6 <div class="container">
7 <div class="hero-layout">
8 <div class="hero-copy">
9 <h1>Professional XWiki consulting <span>and engineering</span></h1>
10 <p class="lead">
11 Agnease helps organizations upgrade, maintain, secure and extend production XWiki platforms with practical engineering support, custom development, integrations and long-term care.
12 </p>
13 <ul class="benefits">
14 <li>XWiki LTS upgrades</li>
15 <li>Maintenance and support</li>
16 <li>Custom XWiki development</li>
17 <li>Migrations and integrations</li>
18 </ul>
19 <div class="hero-actions" id="hero-cta">
20 <a class="btn btn-primary" href="https://calendly.com/alex-agnease/30min?back=1&month=2026-06">
21 Book a free discussion
22 </a>
23 <a class="btn btn-secondary" href="$xwiki.getURL('services.WebHome')">View XWiki services</a>
24 </div>
25 </div>
26 <div class="hero-visual" aria-hidden="true">
27 <div class="hero-browser">
28 <div class="hero-browser-top">
29 <div class="hero-dot"></div>
30 <div class="hero-dot"></div>
31 <div class="hero-dot"></div>
32 <div class="hero-search"></div>
33 </div>
34 <div class="hero-browser-body">
35 <div class="hero-sidebar">
36 <div class="hero-nav-item"><span class="hero-nav-icon"></span>Home</div>
37 <div class="hero-nav-item"><span class="hero-nav-icon"></span>Documentation</div>
38 <div class="hero-nav-item"><span class="hero-nav-icon"></span>Processes</div>
39 <div class="hero-nav-item"><span class="hero-nav-icon"></span>Policies</div>
40 <div class="hero-nav-item"><span class="hero-nav-icon"></span>Teams</div>
41 </div>
42 <div class="hero-content-panel">
43 <div class="hero-panel-title">Production XWiki Platform</div>
44 <div class="hero-skeleton"></div>
45 <div class="hero-skeleton"></div>
46 <div class="hero-skeleton short"></div>
47 <div class="hero-dashboard-grid">
48 <div class="hero-mini-card">
49 <h4>Recent work</h4>
50 <div class="hero-status-row"><span class="hero-status-dot"></span>LTS upgrade plan</div>
51 <div class="hero-status-row"><span class="hero-status-dot"></span>Extension review</div>
52 <div class="hero-status-row"><span class="hero-status-dot"></span>Production validation</div>
53 </div>
54 <div class="hero-mini-card">
55 <h4>Platform care</h4>
56 <div class="hero-status-row"><span class="hero-status-dot"></span>Permissions</div>
57 <div class="hero-status-row"><span class="hero-status-dot"></span>Authentication</div>
58 <div class="hero-status-row"><span class="hero-status-dot"></span>Maintainability</div>
59 </div>
60 </div>
61 </div>
62 </div>
63 </div>
64 <div class="hero-floating hero-upgrade-card">
65 <div class="hero-card-title">Upgrade with confidence</div>
66 <div class="hero-version-flow">
67 <div class="hero-version">XWiki<br/>LTS</div>
68 <div class="hero-arrow">→</div>
69 <div class="hero-version">Staging</div>
70 <div class="hero-arrow">→</div>
71 <div class="hero-version active">Production</div>
72 </div>
73 </div>
74 <div class="hero-floating hero-security-card">
75 <div class="hero-card-title">Security-aware maintenance</div>
76 <ul>
77 <li>Permissions review</li>
78 <li>Authentication support</li>
79 <li>Audit and traceability</li>
80 </ul>
81 </div>
82 <div class="hero-flow">
83 <div class="hero-env">Review</div>
84 <div class="hero-arrow">→</div>
85 <div class="hero-env">Plan</div>
86 <div class="hero-arrow">→</div>
87 <div class="hero-env">Validate</div>
88 </div>
89 </div>
90 </div>
91 </div>
92 </section>
93 #*
94 <section class="hero hero-centered" aria-labelledby="hero-title">
95 <div class="container hero-inner">
96 <h1 id="hero-title">Professional XWiki consulting and engineering</h1>
97
98 <p class="lead">
99 Agnease helps organizations upgrade, maintain, secure and extend production XWiki platforms with practical
100 engineering support, custom development, integrations and long-term care.
101 </p>
102
103 <ul class="benefits">
104 <li>XWiki LTS upgrades</li>
105 <li>Maintenance and support</li>
106 <li>Custom XWiki development</li>
107 <li>Migrations and integrations</li>
108 </ul>
109
110 <div class="hero-actions">
111 <a class="btn btn-primary" href="https://calendly.com/alex-agnease/30min?back=1&month=2026-06">Book a free discussion</a>
112 ##<a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Request a consultation</a>
113 <a class="btn btn-secondary" href="$xwiki.getURL('services.WebHome')">View XWiki services</a>
114 </div>
115 </div>
116 </section>
117 *#
118 <section class="trust-strip" aria-label="Agnease experience">
119 <div class="container">
120 <ul>
121 <li><i class="fa fa-check-circle" aria-hidden="true"></i> 11+ years of XWiki experience</li>
122 <li><i class="fa fa-check-circle" aria-hidden="true"></i> Upgrades, support and custom development</li>
123 <li><i class="fa fa-check-circle" aria-hidden="true"></i> Security-aware maintenance</li>
124 <li><i class="fa fa-check-circle" aria-hidden="true"></i> Practical long-term collaboration</li>
125 </ul>
126 </div>
127 </section>
128
129 <section aria-labelledby="platform-title">
130 <div class="container">
131 <h2 id="platform-title">XWiki support for production knowledge platforms</h2>
132 <p class="section-intro">
133 XWiki often grows from a documentation space into a business-critical knowledge platform.
134 When it supports intranets, procedures, workflows, audits or integrations, it needs structured technical care
135 for upgrades, security, permissions and maintainability.
136 </p>
137
138 <div class="pathways">
139 <article class="pathway-card">
140 <div class="card-heading">
141 <div class="pathway-icon">
142 <i class="fa fa-refresh" aria-hidden="true"></i>
143 </div>
144 <h3>Upgrade XWiki safely</h3>
145 </div>
146 <p>
147 Plan and execute XWiki LTS upgrades with compatibility checks, staging validation and rollback planning.
148 </p>
149 <ul>
150 <li>LTS upgrade planning</li>
151 <li>Extension and custom code review</li>
152 <li>Staging and production validation</li>
153 </ul>
154 <p class="card-link">
155 <a href="$xwiki.getURL('services.xwiki-upgrades')">View upgrade services</a>
156 </p>
157 </article>
158
159 <article class="pathway-card">
160 <div class="card-heading">
161 <div class="pathway-icon">
162 <i class="fa fa-life-ring" aria-hidden="true"></i>
163 </div>
164 <h3>Maintain XWiki reliably</h3>
165 </div>
166 <p>
167 Keep production XWiki instances stable with troubleshooting, maintenance planning, recovery support and security-aware care.
168 </p>
169 <ul>
170 <li>Troubleshooting and recovery</li>
171 <li>Performance and log analysis</li>
172 <li>Upgrade and maintenance planning</li>
173 </ul>
174 <p class="card-link">
175 <a href="$xwiki.getURL('services.xwiki-maintenance-support')">View support services</a>
176 </p>
177 </article>
178
179 <article class="pathway-card">
180 <div class="card-heading">
181 <div class="pathway-icon">
182 <i class="fa fa-cogs" aria-hidden="true"></i>
183 </div>
184 <h3>Extend XWiki for your processes</h3>
185 </div>
186 <p>
187 Build custom XWiki applications, workflows, dashboards and integrations around real business needs.
188 </p>
189 <ul>
190 <li>Custom XWiki applications</li>
191 <li>Workflows and approvals</li>
192 <li>APIs, SSO, LDAP and integrations</li>
193 </ul>
194 <p class="card-link">
195 <a href="$xwiki.getURL('services.xwiki-development-integrations')">View development services</a>
196 </p>
197 </article>
198 </div>
199 </div>
200 </section>
201
202 <section class="industry-trust-section" aria-labelledby="industry-trust-title">
203 <div class="container">
204 <div class="industry-trust-panel">
205 <h2 id="industry-trust-title">Trusted XWiki expertise for business-critical platforms</h2>
206
207 <p class="section-intro">
208 Experience supporting XWiki platforms used in healthcare, financial services, scientific research,
209 government institutions, transportation, software development, compliance programs and regulated environments.
210 </p>
211
212 <div class="industry-tags" aria-label="Industries and environments supported">
213 <span>Healthcare</span>
214 <span>Financial services</span>
215 <span>Scientific research</span>
216 <span>Government institutions</span>
217 <span>Transportation</span>
218 <span>Software development</span>
219 <span>Compliance programs</span>
220 <span>Regulated environments</span>
221 </div>
222
223 <p class="industry-support">
224 Organizations rely on these platforms to manage documentation, workflows, compliance processes,
225 research knowledge and critical business information. From upgrades and authentication integrations
226 to workflow systems and long-term maintenance, Agnease helps keep XWiki secure, stable and ready for the future.
227 </p>
228 </div>
229 </div>
230 </section>
231
232 <section class="split-section" aria-labelledby="why-title">
233 <div class="container">
234 <div class="split-grid">
235 <div class="split-copy">
236 <h2 id="why-title">Why work with an XWiki specialist</h2>
237 <p>
238 XWiki projects often involve more than pages. Production platforms may include custom code,
239 extensions, authentication, permissions, workflows, integrations, compliance documentation
240 and business-critical knowledge.
241 </p>
242 <p>
243 Agnease brings 11+ years of hands-on XWiki experience to help reduce risk, support long-term reliability
244 and leave the platform easier to maintain after the work is complete.
245 </p>
246 </div>
247
248 <ol class="process-list">
249 <li>
250 <strong>Review the XWiki environment</strong>
251 Version, extensions, infrastructure, authentication, permissions, custom code and critical features.
252 </li>
253 <li>
254 <strong>Define the safest next steps</strong>
255 Scope, risks, dependencies, effort, rollback options and validation requirements.
256 </li>
257 <li>
258 <strong>Implement, validate and document</strong>
259 Controlled changes, testing, production validation and notes for future maintenance.
260 </li>
261 </ol>
262 </div>
263 </div>
264 </section>
265
266 <section class="resource-strip homepage-resource-strip" aria-labelledby="resources-title">
267 <div class="container">
268 <h2 id="resources-title">XWiki resources for safer long-term maintenance</h2>
269 <p class="section-intro">
270 Practical articles about XWiki upgrades, customization and production platform care.
271 </p>
272
273 <div class="resource-grid">
274 <article class="resource-card">
275 <h4>Why upgrade your XWiki instance?</h4>
276 <p>
277 Learn why regular XWiki upgrades reduce security exposure, compatibility issues and long-term maintenance risk.
278 </p>
279 <a href="$xwiki.getURL('resources.why-upgrade-xwiki')">Read the article</a>
280 </article>
281
282 <article class="resource-card">
283 <h4>XWiki upgrade services</h4>
284 <p>
285 See how XWiki upgrades can be planned, tested and validated for production instances with customizations and integrations.
286 </p>
287 <a href="$xwiki.getURL('services.xwiki-upgrades')">View upgrade services</a>
288 </article>
289 </div>
290 </div>
291 </section>
292
293 <section class="cta-section" aria-labelledby="contact-title">
294 <div class="container">
295 <div class="cta-panel">
296 <h2 id="contact-title">Need XWiki consulting or support?</h2>
297 <p>
298 Send your current XWiki version, the issue you are facing, or the type of project you want to build.
299 A short description is enough to define practical next steps.
300 </p>
301 <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Contact Agnease</a>
302 </div>
303 </div>
304 </section>
305
306 {{/html}}
307 #end
308
309 #macro (stripHTMLMacro $displayOutput)
310 $stringtool.removeEnd($stringtool.removeStart($displayOutput, '{{html clean="false" wiki="false"}}'), '{{/html}}').replace('Agnease.Code.Lead.LeadClass_0_', 'acl-')
311 #end
312
313 #macro (displayFormFromSheetCode)
314 #set ($editing = true)
315 ## The object to display.
316 #set ($xobject = $doc.newObject('Agnease.Code.Lead.LeadClass'))
317 ## The class that describes the object properties.
318 #set ($xclass = $xwiki.getClass('Agnease.Code.Lead.LeadClass'))
319 ## Make sure the following display* method calls use the right object.
320 #set ($discard = $doc.use($xobject))
321 ## Using the xform vertical form layout.
322 <div class="xform">
323 <dl>
324 #foreach ($property in $xclass.properties)
325 #if ($property.name != 'status')
326 <dt #if (!$editing)
327 class="editableProperty"
328 #set ($xobjectPropertyReference = $xobject.getPropertyReference($property.name))
329 data-property="$escapetool.xml($services.model.serialize($xobjectPropertyReference))"
330 data-property-type="object"#end>
331 ## This must match the id generated by the $doc.display() method below.
332 #set ($propertyId = "acl-$property.name")
333 <label#if ($editing) for="$escapetool.xml($propertyId)"#end>
334 $escapetool.xml($property.translatedPrettyName)
335 </label>
336 ## Support for specifying a translation key as hint in the property definition.
337 <span class="xHint">$!escapetool.xml($services.localization.render($property.hint))</span>
338 </dt>
339 #set ($displayOutput = $doc.display($property.name, 'edit'))
340 <dd>#stripHTMLMacro($displayOutput)</dd>
341 #end
342 #end
343 #if (!$xclass.properties || $xclass.properties.size() == 0)
344 ## Keep the empty definition term in order to have valid HTML.
345 <dt></dt>
346 <dd>$escapetool.xml($services.localization.render('xclass.defaultObjectSheet.noProperties'))</dd>
347 #end
348 </dl>
349 </div>
350 #end
351 {{/velocity}}