Wiki source code of Public Web Site

Version 16.7 by Agnease on 2026/05/28 10:20

Hide last authors
Agnease 14.2 1 {{include reference="PublicWebSite.MacrosAndVariables" /}}
2
Agnease 1.2 3 {{velocity}}
Agnease 3.5 4 #macro (displayPublicContent)
Agnease 3.4 5 #set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome'))
6 {{html clean="false"}}
Agnease 6.27 7
Agnease 14.4 8 <section class="hero hero-centered main-page-hero" aria-labelledby="hero-title">
Agnease 5.1 9 <div class="container hero-inner">
Agnease 12.25 10 <h1 id="hero-title">Professional XWiki consulting and engineering</h1>
Agnease 6.27 11
12 <p class="lead">
Agnease 12.20 13 Agnease helps organizations upgrade, maintain, secure and extend production XWiki platforms with practical
14 engineering support, custom development, integrations and long-term care.
Agnease 6.27 15 </p>
16
Agnease 3.89 17 <ul class="benefits">
Agnease 12.20 18 <li>XWiki LTS upgrades</li>
19 <li>Maintenance and support</li>
20 <li>Custom XWiki development</li>
21 <li>Migrations and integrations</li>
Agnease 3.89 22 </ul>
Agnease 6.27 23
24 <div class="hero-actions">
Agnease 14.3 25 <a class="btn btn-primary" href="$freeXWikiReviewCallURL">$freeXWikiReviewCallLabel</a>
Agnease 13.20 26 ##<a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Request a consultation</a>
Agnease 6.27 27 <a class="btn btn-secondary" href="$xwiki.getURL('services.WebHome')">View XWiki services</a>
Agnease 3.4 28 </div>
Agnease 1.2 29 </div>
Agnease 3.4 30 </section>
Agnease 6.27 31
32 <section class="trust-strip" aria-label="Agnease experience">
Agnease 3.4 33 <div class="container">
Agnease 6.27 34 <ul>
35 <li><i class="fa fa-check-circle" aria-hidden="true"></i> 11+ years of XWiki experience</li>
36 <li><i class="fa fa-check-circle" aria-hidden="true"></i> Upgrades, support and custom development</li>
37 <li><i class="fa fa-check-circle" aria-hidden="true"></i> Security-aware maintenance</li>
38 <li><i class="fa fa-check-circle" aria-hidden="true"></i> Practical long-term collaboration</li>
39 </ul>
Agnease 1.2 40 </div>
Agnease 3.4 41 </section>
Agnease 6.27 42
43 <section aria-labelledby="platform-title">
Agnease 3.4 44 <div class="container">
Agnease 12.20 45 <h2 id="platform-title">XWiki support for production knowledge platforms</h2>
Agnease 6.27 46 <p class="section-intro">
Agnease 12.20 47 XWiki often grows from a documentation space into a business-critical knowledge platform.
Agnease 12.24 48 When it supports intranets, procedures, workflows, audits or integrations, it needs structured technical care
49 for upgrades, security, permissions and maintainability.
Agnease 5.1 50 </p>
Agnease 1.1 51
Agnease 6.27 52 <div class="pathways">
53 <article class="pathway-card">
Agnease 13.2 54 <div class="card-heading">
55 <div class="pathway-icon">
56 <i class="fa fa-refresh" aria-hidden="true"></i>
57 </div>
58 <h3>Upgrade XWiki safely</h3>
Agnease 6.27 59 </div>
60 <p>
Agnease 12.20 61 Plan and execute XWiki LTS upgrades with compatibility checks, staging validation and rollback planning.
Agnease 6.27 62 </p>
63 <ul>
64 <li>LTS upgrade planning</li>
65 <li>Extension and custom code review</li>
Agnease 12.20 66 <li>Staging and production validation</li>
Agnease 6.27 67 </ul>
68 <p class="card-link">
Agnease 6.32 69 <a href="$xwiki.getURL('services.xwiki-upgrades')">View upgrade services</a>
Agnease 6.27 70 </p>
71 </article>
Agnease 5.1 72
Agnease 6.27 73 <article class="pathway-card">
Agnease 13.2 74 <div class="card-heading">
75 <div class="pathway-icon">
76 <i class="fa fa-life-ring" aria-hidden="true"></i>
77 </div>
78 <h3>Maintain XWiki reliably</h3>
Agnease 6.27 79 </div>
80 <p>
Agnease 12.20 81 Keep production XWiki instances stable with troubleshooting, maintenance planning, recovery support and security-aware care.
Agnease 6.27 82 </p>
83 <ul>
84 <li>Troubleshooting and recovery</li>
85 <li>Performance and log analysis</li>
Agnease 12.21 86 <li>Upgrade and maintenance planning</li>
Agnease 6.27 87 </ul>
88 <p class="card-link">
Agnease 6.32 89 <a href="$xwiki.getURL('services.xwiki-maintenance-support')">View support services</a>
Agnease 6.27 90 </p>
91 </article>
92
93 <article class="pathway-card">
Agnease 13.2 94 <div class="card-heading">
95 <div class="pathway-icon">
96 <i class="fa fa-cogs" aria-hidden="true"></i>
97 </div>
98 <h3>Extend XWiki for your processes</h3>
Agnease 6.27 99 </div>
100 <p>
Agnease 12.22 101 Build custom XWiki applications, workflows, dashboards and integrations around real business needs.
Agnease 6.27 102 </p>
103 <ul>
104 <li>Custom XWiki applications</li>
105 <li>Workflows and approvals</li>
Agnease 12.22 106 <li>APIs, SSO, LDAP and integrations</li>
Agnease 6.27 107 </ul>
108 <p class="card-link">
Agnease 6.32 109 <a href="$xwiki.getURL('services.xwiki-development-integrations')">View development services</a>
Agnease 6.27 110 </p>
111 </article>
Agnease 3.4 112 </div>
Agnease 1.2 113 </div>
Agnease 3.4 114 </section>
Agnease 6.27 115
116 <section class="split-section" aria-labelledby="why-title">
Agnease 3.4 117 <div class="container">
Agnease 6.27 118 <div class="split-grid">
119 <div class="split-copy">
Agnease 12.22 120 <h2 id="why-title">Why work with an XWiki specialist</h2>
Agnease 6.27 121 <p>
Agnease 12.22 122 XWiki projects often involve more than pages. Production platforms may include custom code,
123 extensions, authentication, permissions, workflows, integrations and business-critical content.
Agnease 6.27 124 </p>
125 <p>
Agnease 12.22 126 Agnease brings 11+ years of hands-on XWiki experience to help reduce risk, deliver practical improvements
127 and leave the platform easier to maintain after the work is complete.
Agnease 6.27 128 </p>
129 </div>
130
131 <ol class="process-list">
132 <li>
Agnease 12.22 133 <strong>Review the XWiki environment</strong>
134 Version, extensions, infrastructure, authentication, permissions, custom code and critical features.
Agnease 6.27 135 </li>
136 <li>
Agnease 12.22 137 <strong>Define the safest next steps</strong>
138 Scope, risks, dependencies, effort, rollback options and validation requirements.
Agnease 6.27 139 </li>
140 <li>
Agnease 12.22 141 <strong>Implement, validate and document</strong>
142 Controlled changes, testing, production validation and notes for future maintenance.
Agnease 6.27 143 </li>
144 </ol>
145 </div>
146 </div>
147 </section>
148
Agnease 10.38 149 <section class="resource-strip homepage-resource-strip" aria-labelledby="resources-title">
Agnease 6.27 150 <div class="container">
Agnease 12.22 151 <h2 id="resources-title">XWiki resources for safer long-term maintenance</h2>
Agnease 6.27 152 <p class="section-intro">
Agnease 12.22 153 Practical articles about XWiki upgrades, customization and production platform care.
Agnease 3.4 154 </p>
Agnease 6.27 155
156 <div class="resource-grid">
157 <article class="resource-card">
158 <h4>Why upgrade your XWiki instance?</h4>
159 <p>
Agnease 12.22 160 Learn why regular XWiki upgrades reduce security exposure, compatibility issues and long-term maintenance risk.
Agnease 6.27 161 </p>
Agnease 12.22 162 <a href="$xwiki.getURL('resources.why-upgrade-xwiki')">Read the article</a>
Agnease 6.27 163 </article>
164
165 <article class="resource-card">
166 <h4>XWiki upgrade services</h4>
167 <p>
Agnease 12.22 168 See how XWiki upgrades can be planned, tested and validated for production instances with customizations and integrations.
Agnease 6.27 169 </p>
Agnease 12.22 170 <a href="$xwiki.getURL('services.xwiki-upgrades')">View upgrade services</a>
Agnease 6.27 171 </article>
172 </div>
Agnease 3.4 173 </div>
174 </section>
Agnease 3.16 175
Agnease 6.27 176 <section class="cta-section" aria-labelledby="contact-title">
177 <div class="container">
178 <div class="cta-panel">
Agnease 12.22 179 <h2 id="contact-title">Need XWiki consulting or support?</h2>
Agnease 6.27 180 <p>
Agnease 12.22 181 Send your current XWiki version, the issue you are facing, or the type of project you want to build.
182 A short description is enough to define practical next steps.
Agnease 6.27 183 </p>
184 <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Contact Agnease</a>
Agnease 3.16 185 </div>
186 </div>
Agnease 6.27 187 </section>
188
189 {{/html}}
Agnease 3.16 190 #end
Agnease 3.55 191
Agnease 3.66 192 #macro (stripHTMLMacro $displayOutput)
Agnease 3.77 193 $stringtool.removeEnd($stringtool.removeStart($displayOutput, '{{html clean="false" wiki="false"}}'), '{{/html}}').replace('Agnease.Code.Lead.LeadClass_0_', 'acl-')
Agnease 3.66 194 #end
195
Agnease 3.55 196 #macro (displayFormFromSheetCode)
Agnease 3.61 197 #set ($editing = true)
Agnease 3.55 198 ## The object to display.
Agnease 3.65 199 #set ($xobject = $doc.newObject('Agnease.Code.Lead.LeadClass'))
Agnease 3.55 200 ## The class that describes the object properties.
Agnease 3.60 201 #set ($xclass = $xwiki.getClass('Agnease.Code.Lead.LeadClass'))
Agnease 3.55 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.
Agnease 3.70 205 <div class="xform">
Agnease 3.55 206 <dl>
207 #foreach ($property in $xclass.properties)
Agnease 3.84 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
Agnease 3.55 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
Agnease 1.2 234 {{/velocity}}