Wiki source code of Public Web Site

Version 20.3 by Agnease on 2026/05/30 16:13

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