0 Votes

Wiki source code of Public Web Site

Version 3.25 by Alex Cotiugă on 2025/11/24 10:13

Show last authors
1 {{velocity}}
2 #macro (displayPublicContent)
3 #set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome'))
4 {{html clean="false"}}
5 ## HERO
6 <section class="hero hero-centered" aria-labelledby="hero-title">
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" >
12 Request a consultation
13 </a>
14 ##requestConsultationModal()
15 ##data-toggle="modal" data-target="#requestConsultationModal"
16 </div>
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>
22 </ul>
23 </div>
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">
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>
58 </div>
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">
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
112 </p>
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
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
138 </div>
139 </div>
140 </section>
141 ## CTA INLINE
142 <section id="contact" class="cta-section">
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>.
146 </p>
147 </div>
148 </section>
149 {{/html}}
150 #end
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">&amp;times;</button>
158 <h4 class="modal-title">Request a consultation</h4>
159 </div>
160 <div class="modal-body">
161 <div>
162 $services.localization.render('blog.modal.checkCategorySelection.body')
163 </div>
164 </div>
165 <div class="modal-footer">
166 <input id="continueCategorySelection" type="button" class="btn btn-default" data-dismiss="modal"
167 value="$escapetool.xml($services.localization.render('yesno_1'))">
168 <input type="button" class="btn btn-danger" data-dismiss="modal"
169 value="$escapetool.xml($services.localization.render('blog.modal.checkCategorySelection.footer.no'))">
170 </div>
171 </div>
172 </div>
173 </div>
174 #end
175 {{/velocity}}