Wiki source code of Public Web Site

Version 28.46 by Agnease on 2026/07/03 15:09

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