Wiki source code of Public Web Site

Version 12.8 by Agnease on 2026/05/22 10:41

Show last authors
1 {{velocity}}
2 #macro (displayPublicContent)
3 #set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome'))
4 {{html clean="false"}}
5
6 <section class="hero hero-centered" aria-labelledby="hero-title">
7 <div class="container hero-inner">
8 <h1 id="hero-title">Professional XWiki engineering and support</h1>
9
10 <p class="lead">
11 Agnease helps organizations upgrade, maintain, secure and extend XWiki so production platforms stay stable,
12 up-to-date and adapted to real business processes.
13 </p>
14
15 <ul class="benefits">
16 <li>Safe LTS upgrades</li>
17 <li>Support and recovery</li>
18 <li>Custom XWiki applications</li>
19 <li>Integrations and migrations</li>
20 </ul>
21
22 <div class="hero-actions">
23 <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Request a consultation</a>
24 <a class="btn btn-secondary" href="$xwiki.getURL('services.WebHome')">View XWiki services</a>
25 </div>
26 </div>
27 </section>
28
29 <section class="trust-strip" aria-label="Agnease experience">
30 <div class="container">
31 <ul>
32 <li><i class="fa fa-check-circle" aria-hidden="true"></i> 11+ years of XWiki experience</li>
33 <li><i class="fa fa-check-circle" aria-hidden="true"></i> Upgrades, support and custom development</li>
34 <li><i class="fa fa-check-circle" aria-hidden="true"></i> Security-aware maintenance</li>
35 <li><i class="fa fa-check-circle" aria-hidden="true"></i> Practical long-term collaboration</li>
36 </ul>
37 </div>
38 </section>
39
40 <section aria-labelledby="platform-title">
41 <div class="container">
42 <h2 id="platform-title">When XWiki becomes business-critical, it needs professional care</h2>
43 <p class="section-intro">
44 Many organizations start with XWiki as a documentation platform. Over time, it becomes a knowledge base,
45 intranet, SOP portal, workflow system, audit trail or integration hub. At that point, upgrades, security,
46 performance, permissions and maintainability are no longer optional technical details.
47 </p>
48
49 <div class="pathways">
50 <article class="pathway-card">
51 <div class="pathway-icon">
52 <i class="fa fa-refresh" aria-hidden="true"></i>
53 </div>
54 <h3>Keep XWiki current</h3>
55 <p>
56 Plan and execute safe upgrades to supported XWiki versions, with compatibility checks and rollback planning.
57 </p>
58 <ul>
59 <li>LTS upgrade planning</li>
60 <li>Extension and custom code review</li>
61 <li>Production rollout validation</li>
62 </ul>
63 <p class="card-link">
64 <a href="$xwiki.getURL('services.xwiki-upgrades')">View upgrade services</a>
65 </p>
66 </article>
67
68 <article class="pathway-card">
69 <div class="pathway-icon">
70 <i class="fa fa-life-ring" aria-hidden="true"></i>
71 </div>
72 <h3>Keep XWiki reliable</h3>
73 <p>
74 Get long-term technical care for instances that need to stay stable, secure and recoverable.
75 </p>
76 <ul>
77 <li>Troubleshooting and recovery</li>
78 <li>Performance and log analysis</li>
79 <li>Security-aware maintenance</li>
80 </ul>
81 <p class="card-link">
82 <a href="$xwiki.getURL('services.xwiki-maintenance-support')">View support services</a>
83 </p>
84 </article>
85
86 <article class="pathway-card">
87 <div class="pathway-icon">
88 <i class="fa fa-cogs" aria-hidden="true"></i>
89 </div>
90 <h3>Adapt XWiki to your business</h3>
91 <p>
92 Build workflows, custom applications, dashboards, integrations and automation around your processes.
93 </p>
94 <ul>
95 <li>Custom XWiki applications</li>
96 <li>Workflows and approvals</li>
97 <li>SSO, LDAP, APIs and integrations</li>
98 </ul>
99 <p class="card-link">
100 <a href="$xwiki.getURL('services.xwiki-development-integrations')">View development services</a>
101 </p>
102 </article>
103 </div>
104 </div>
105 </section>
106
107 <section class="split-section" aria-labelledby="why-title">
108 <div class="container">
109 <div class="split-grid">
110 <div class="split-copy">
111 <h2 id="why-title">Why choose Agnease</h2>
112 <p>
113 Agnease brings more than 11 years of hands-on XWiki expertise to organizations that need reliable
114 knowledge platforms, secure upgrades, custom applications, integrations, migrations and long-term support.
115 </p>
116 <p>
117 The approach is practical and engineering-focused: understand the current system, reduce risk,
118 document the work and leave your XWiki easier to maintain.
119 </p>
120 </div>
121
122 <ol class="process-list">
123 <li>
124 <strong>Review the current situation</strong>
125 Version, extensions, infrastructure, authentication, custom code and business-critical features.
126 </li>
127 <li>
128 <strong>Define a safe path forward</strong>
129 Clear scope, expected effort, risks, rollback options and recommended next steps.
130 </li>
131 <li>
132 <strong>Deliver and document the work</strong>
133 Practical implementation, validation and documentation for future maintenance.
134 </li>
135 </ol>
136 </div>
137 </div>
138 </section>
139
140 <section class="resource-strip homepage-resource-strip" aria-labelledby="resources-title">
141 <div class="container">
142 <h2 id="resources-title">Useful XWiki resources</h2>
143 <p class="section-intro">
144 Practical guidance for organizations running XWiki in production.
145 </p>
146
147 <div class="resource-grid">
148 <article class="resource-card">
149 <h4>Why upgrade your XWiki instance?</h4>
150 <p>
151 A business-focused explanation of why regular LTS upgrades reduce security, compatibility and maintenance risk.
152 </p>
153 <a href="$xwiki.getURL('resources.why-upgrade-xwiki')">Read the resource</a>
154 </article>
155
156 <article class="resource-card">
157 <h4>XWiki upgrade services</h4>
158 <p>
159 How Agnease approaches safe XWiki upgrades for real production environments with customizations and integrations.
160 </p>
161 <a href="$xwiki.getURL('services.xwiki-upgrades')">View the service</a>
162 </article>
163 </div>
164 </div>
165 </section>
166
167 <section class="cta-section" aria-labelledby="contact-title">
168 <div class="container">
169 <div class="cta-panel">
170 <h2 id="contact-title">Need help with XWiki?</h2>
171 <p>
172 Send your current XWiki version, the problem you are facing, or the type of project you want to build.
173 A short description is enough to start the conversation.
174 </p>
175 <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Contact Agnease</a>
176 </div>
177 </div>
178 </section>
179
180 {{/html}}
181 #end
182
183 #macro (stripHTMLMacro $displayOutput)
184 $stringtool.removeEnd($stringtool.removeStart($displayOutput, '{{html clean="false" wiki="false"}}'), '{{/html}}').replace('Agnease.Code.Lead.LeadClass_0_', 'acl-')
185 #end
186
187 #macro (displayFormFromSheetCode)
188 #set ($editing = true)
189 ## The object to display.
190 #set ($xobject = $doc.newObject('Agnease.Code.Lead.LeadClass'))
191 ## The class that describes the object properties.
192 #set ($xclass = $xwiki.getClass('Agnease.Code.Lead.LeadClass'))
193 ## Make sure the following display* method calls use the right object.
194 #set ($discard = $doc.use($xobject))
195 ## Using the xform vertical form layout.
196 <div class="xform">
197 <dl>
198 #foreach ($property in $xclass.properties)
199 #if ($property.name != 'status')
200 <dt #if (!$editing)
201 class="editableProperty"
202 #set ($xobjectPropertyReference = $xobject.getPropertyReference($property.name))
203 data-property="$escapetool.xml($services.model.serialize($xobjectPropertyReference))"
204 data-property-type="object"#end>
205 ## This must match the id generated by the $doc.display() method below.
206 #set ($propertyId = "acl-$property.name")
207 <label#if ($editing) for="$escapetool.xml($propertyId)"#end>
208 $escapetool.xml($property.translatedPrettyName)
209 </label>
210 ## Support for specifying a translation key as hint in the property definition.
211 <span class="xHint">$!escapetool.xml($services.localization.render($property.hint))</span>
212 </dt>
213 #set ($displayOutput = $doc.display($property.name, 'edit'))
214 <dd>#stripHTMLMacro($displayOutput)</dd>
215 #end
216 #end
217 #if (!$xclass.properties || $xclass.properties.size() == 0)
218 ## Keep the empty definition term in order to have valid HTML.
219 <dt></dt>
220 <dd>$escapetool.xml($services.localization.render('xclass.defaultObjectSheet.noProperties'))</dd>
221 #end
222 </dl>
223 </div>
224 #end
225 {{/velocity}}