Wiki source code of Public Web Site
Show last authors
| author | version | line-number | content |
|---|---|---|---|
| 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}} |