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