Changes for page Public Web Site

Last modified by Agnease on 2026/05/30 16:24

From version 3.71
edited by Agnease
on 2025/11/24 15:55
Change comment: There is no comment for this version
To version 6.27
edited by Agnease
on 2026/05/12 11:59
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -2,178 +2,195 @@
2 2  #macro (displayPublicContent)
3 3   #set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome'))
4 4   {{html clean="false"}}
5 - ## HERO
5 +
6 6   <section class="hero hero-centered" aria-labelledby="hero-title">
7 7   <div class="container hero-inner">
8 - <h1 id="hero-title">Professional XWiki solutions, from setup to long-term stability</h1>
9 - <p class="lead">Need your XWiki upgraded, secured, or improved? Let’s make it happen.</p>
10 - <div class="hero-cta">
11 - <a class="btn btn-primary" href="#contact" aria-label="Request a consultation" data-toggle="modal" data-target="#requestConsultation">
12 - Request a consultation
13 - </a>
14 - #requestConsultationModal()
15 - ##data-toggle="modal" data-target="#requestConsultationModal"
8 + <div class="hero-kicker">
9 + <i class="fa fa-shield" aria-hidden="true"></i>
10 + XWiki consulting, upgrades and long-term support
16 16   </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 +
17 17   <ul class="benefits">
18 - <li>Smooth upgrades</li>
19 - <li>Reliable support plans</li>
20 - <li>Custom integrations</li>
21 - <li>Secure, optimized platforms</li>
25 + <li>Safe LTS upgrades</li>
26 + <li>Support and recovery</li>
27 + <li>Custom XWiki applications</li>
28 + <li>Integrations and migrations</li>
22 22   </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>
23 23   </div>
24 24   </section>
25 - ## WHY CHOOSE
26 - #set ($whySectionData = [{
27 - 'title': 'Stability & security',
28 - 'icon': 'shield',
29 - 'content': 'Proven upgrade steps, rollback safety, and proactive hardening keep your wiki reliable.'
30 - },{
31 - 'title': 'Predictable delivery',
32 - 'icon': 'check-square-o',
33 - 'content': 'Clear scope, defined steps, and documented results to avoid surprises.'
34 - },{
35 - 'title': 'Clean integrations',
36 - 'icon': 'link',
37 - 'content': 'Maintainable SSO, API, and system connections tailored to your environment.'
38 - },{
39 - 'title': 'Long-term support',
40 - 'icon': 'life-ring',
41 - 'content': 'Guaranteed response times, regular checks, and fast assistance when needed.'
42 - }])
43 - <section aria-labelledby="why-title">
37 +
38 + <section class="trust-strip" aria-label="Agnease experience">
44 44   <div class="container">
45 - <h2 id="why-title">Why choose Agnease</h2>
46 - <p class="lead">10+ years of XWiki expertise with structured delivery and lasting collaboration</p>
47 - <div class="widgets">
48 - #foreach ($entry in $whySectionData)
49 - <article class="widget">
50 - <div class="icon" aria-hidden="true">
51 - <i class="fa fa-$entry.icon"></i>
52 - <h4>$entry.title</h4>
53 - </div>
54 - <p>$entry.content</p>
55 - </article>
56 - #end
57 - </div>
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>
58 58   </div>
59 59   </section>
60 - ## SERVICES
61 - #set ($servicesSectionData = [{
62 - 'title': 'Upgrades',
63 - 'icon': 'refresh',
64 - 'content': 'Stay current with the latest XWiki LTS and keep your instance reliable.',
65 - 'items': [
66 - 'Audit setup, extensions, and configurations',
67 - 'Test upgrades with backups and validation',
68 - 'Safe production rollout with minimal downtime'
69 - ]
70 - },{
71 - 'title': 'Maintenance, Support & Recovery',
72 - 'icon': 'stethoscope',
73 - 'content': 'Ensure long-term stability and quick response when issues appear.',
74 - 'items': [
75 - 'Monitoring and performance checks',
76 - 'Security patching, log analysis, triage',
77 - 'Issue recovery, data repair, hardening'
78 - ]
79 - },{
80 - 'title': 'Development & Integrations',
81 - 'icon': 'cogs',
82 - 'content': 'Extend and connect XWiki to fit your workflow and systems.',
83 - 'items': [
84 - 'Custom apps, macros, automation',
85 - 'SSO, REST APIs, LDAP, CRM links',
86 - 'Maintainable extensions for long-term use'
87 - ]
88 - },{
89 - 'title': 'Hosting & Deployment',
90 - 'icon': 'cloud',
91 - 'content': 'Cloud-ready environments designed for reliability and performance.',
92 - 'items': [
93 - 'Containerized deployment and TLS',
94 - 'Backups, restore strategy, observability',
95 - 'Optimization and load tuning'
96 - ]
97 - },{
98 - 'title': 'Migrations to XWiki',
99 - 'icon': 'exchange',
100 - 'content': 'Move from Confluence, SharePoint, or MediaWiki to XWiki with full data integrity and structure.',
101 - 'items': [
102 - 'Preserve hierarchy, attachments, and permissions',
103 - 'Convert macros, categories, and metadata for XWiki',
104 - 'Redirect old URLs and maintain SEO consistency'
105 - ]
106 - }])
107 - <section class="services" aria-labelledby="services-title">
48 +
49 + <section aria-labelledby="platform-title">
108 108   <div class="container">
109 - <h2 id="services-title">Services</h2>
110 - <p class="lead">
111 - All the XWiki services you need, delivered with precision and care
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.
112 112   </p>
113 113  
114 - #set ($servicesSize = $servicesSectionData.size())
115 - <div class="services-grid">
116 - #foreach ($entry in $servicesSectionData)
117 - #set ($classes = "service")
118 - ## If this is the last item AND the total number is odd, center it
119 - #if ($foreach.count == $servicesSize && ($servicesSize % 2) == 1)
120 - #set ($classes = "service service-center")
121 - #end
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="/services/xwiki-upgrades">View upgrade services</a>
74 + </p>
75 + </article>
122 122  
123 - <article class="$classes">
124 - <div class="service-icon">
125 - <i class="fa fa-$entry.icon" aria-hidden="true"></i>
126 - </div>
127 - <div class="service-body">
128 - <h4>$entry.title</h4>
129 - <p>$entry.content</p>
130 - <ul>
131 - #foreach ($item in $entry.items)
132 - <li>$item</li>
133 - #end
134 - </ul>
135 - </div>
136 - </article>
137 - #end
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="/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="/services/xwiki-development-integrations">View development services</a>
110 + </p>
111 + </article>
138 138   </div>
139 139   </div>
140 140   </section>
141 - ## CTA INLINE
142 - <section id="contact" class="cta-section">
115 +
116 + <section class="split-section" aria-labelledby="why-title">
143 143   <div class="container">
144 - <p class="text-center contact-inline">
145 - Need help with your XWiki? <a href="mailto:alex@agnease.com">Contact Agnease</a>.
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.
146 146   </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>
147 147   </div>
148 148   </section>
149 - {{/html}}
150 -#end
151 151  
152 -#macro(requestConsultationModal)
153 - <div class="modal fade" id="requestConsultation" tabindex="-1" role="dialog">
154 - <div class="modal-dialog">
155 - <div class="modal-content">
156 - <div class="modal-header">
157 - <button type="button" class="close" data-dismiss="modal">&times;</button>
158 - <h4 class="modal-title">Request a consultation</h4>
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>
159 159   </div>
160 - <div class="modal-body">
161 - <div>
162 - ##Need help with your XWiki? <a href="mailto:alex@agnease.com">Contact Agnease</a>
163 - #displayFormFromSheetCode()
164 - </div>
165 - </div>
166 - <div class="modal-footer">
167 - ##<input id="continueCategorySelection" type="button" class="btn btn-default" data-dismiss="modal"
168 - ## value="$escapetool.xml($services.localization.render('yesno_1'))">
169 - </div>
170 170   </div>
171 - </div>
172 - </div>
187 + </section>
188 +
189 + {{/html}}
173 173  #end
174 174  
175 175  #macro (stripHTMLMacro $displayOutput)
176 - $stringtool.removeEnd($stringtool.removeStart($displayOutput, '{{html clean="false" wiki="false"}}'), '{{/html}}')
193 + $stringtool.removeEnd($stringtool.removeStart($displayOutput, '{{html clean="false" wiki="false"}}'), '{{/html}}').replace('Agnease.Code.Lead.LeadClass_0_', 'acl-')
177 177  #end
178 178  
179 179  #macro (displayFormFromSheetCode)
... ... @@ -188,21 +188,23 @@
188 188   <div class="xform">
189 189   <dl>
190 190   #foreach ($property in $xclass.properties)
191 - <dt #if (!$editing)
192 - class="editableProperty"
193 - #set ($xobjectPropertyReference = $xobject.getPropertyReference($property.name))
194 - data-property="$escapetool.xml($services.model.serialize($xobjectPropertyReference))"
195 - data-property-type="object"#end>
196 - ## This must match the id generated by the $doc.display() method below.
197 - #set ($propertyId = "${xclass.name}_${xobject.number}_$property.name")
198 - <label#if ($editing) for="$escapetool.xml($propertyId)"#end>
199 - $escapetool.xml($property.translatedPrettyName)
200 - </label>
201 - ## Support for specifying a translation key as hint in the property definition.
202 - <span class="xHint">$!escapetool.xml($services.localization.render($property.hint))</span>
203 - </dt>
204 - #set ($displayOutput = $doc.display($property.name, 'edit'))
205 - <dd>#stripHTMLMacro($displayOutput)</dd>
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
206 206   #end
207 207   #if (!$xclass.properties || $xclass.properties.size() == 0)
208 208   ## Keep the empty definition term in order to have valid HTML.
... ... @@ -212,4 +212,5 @@
212 212   </dl>
213 213   </div>
214 214  #end
234 +#displayPublicContent
215 215  {{/velocity}}
XWiki.StyleSheetExtension[0]
code
... ... @@ -20,6 +20,7 @@
20 20  .lead {
21 21   color: @muted;
22 22   text-align: center;
23 + margin-bottom: 0;
23 23  }
24 24  h2 {
25 25   text-align: center;
... ... @@ -48,7 +48,7 @@
48 48   display: flex;
49 49   align-items: center;
50 50   justify-content: center;
51 - min-height: 350px;
52 + min-height: 300px;
52 52   }
53 53  
54 54   .hero-inner {
... ... @@ -59,12 +59,12 @@
59 59   align-items: center;
60 60   }
61 61  
62 - .hero-cta {
63 + #hero-cta {
63 63   display: flex;
64 64   gap: 0.8rem;
65 65   flex-wrap: wrap;
66 66   justify-content: center;
67 - margin-top: 0.3rem;
68 + margin-top: 1.3rem;
68 68   }
69 69  
70 70   .benefits {
... ... @@ -233,3 +233,4 @@
233 233   a { color: @brand; }
234 234   }
235 235  }
237 +