Wiki source code of Public Web Site

Version 6.47 by Agnease on 2026/05/12 14:00

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