Wiki source code of Public Web Site

Version 11.8 by Agnease on 2026/05/22 08:45

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