Changes for page Public Web Site
Last modified by Agnease on 2026/05/30 16:24
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Objects (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -2,175 +2,191 @@ 2 2 #macro (displayPublicContent) 3 3 #set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome')) 4 4 {{html clean="false"}} 5 - ## HERO5 + 6 6 <section class="hero hero-centered" aria-labelledby="hero-title"> 7 7 <div class="container hero-inner"> 8 - <h1 id="hero-title">Keep Your XWiki Platform Secure, Stable and Up-to-Date</h1> 9 - <p class="lead">Helping organizations safely upgrade and maintain their XWiki environments.</p> 8 + <div class="hero-kicker"> 9 + <i class="fa fa-shield" aria-hidden="true"></i> 10 + XWiki consulting, upgrades and long-term support 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 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 + 10 10 <ul class="benefits"> 11 - <li>S moothupgrades</li>12 - <li> Reliable supportplans</li>13 - <li>Custom i ntegrations</li>14 - <li> Secure, optimizedplatforms</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> 15 15 </ul> 16 - <div class="hero-cta"> 17 - <a href="$xwiki.getURL('contact.WebHome')">Contact Agnease</a> 18 - #*<a class="btn btn-primary" href="#contact" aria-label="Request a consultation" data-toggle="modal" data-target="#requestConsultation"> 19 - Request a consultation 20 - </a> 21 - #requestConsultationModal()*# 22 - ##data-toggle="modal" data-target="#requestConsultationModal" 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> 23 23 </div> 24 24 </div> 25 25 </section> 26 - ## WHY CHOOSE 27 - #set ($whySectionData = [{ 28 - 'title': 'Stability & security', 29 - 'icon': 'shield', 30 - 'content': 'Proven upgrade steps, rollback safety, and proactive hardening keep your wiki reliable.' 31 - },{ 32 - 'title': 'Predictable delivery', 33 - 'icon': 'check-square-o', 34 - 'content': 'Clear scope, defined steps, and documented results to avoid surprises.' 35 - },{ 36 - 'title': 'Clean integrations', 37 - 'icon': 'link', 38 - 'content': 'Maintainable SSO, API, and system connections tailored to your environment.' 39 - },{ 40 - 'title': 'Long-term support', 41 - 'icon': 'life-ring', 42 - 'content': 'Guaranteed response times, regular checks, and fast assistance when needed.' 43 - }]) 44 - <section aria-labelledby="why-title"> 37 + 38 + <section class="trust-strip" aria-label="Agnease experience"> 45 45 <div class="container"> 46 - <h2 id="why-title">Why choose Agnease</h2> 47 - <p class="lead">10+ years of XWiki expertise with structured delivery and lasting collaboration</p> 48 - <div class="widgets"> 49 - #foreach ($entry in $whySectionData) 50 - <article class="widget"> 51 - <div class="icon" aria-hidden="true"> 52 - <i class="fa fa-$entry.icon"></i> 53 - <h4>$entry.title</h4> 54 - </div> 55 - <p>$entry.content</p> 56 - </article> 57 - #end 58 - </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> 59 59 </div> 60 60 </section> 61 - ## SERVICES 62 - #set ($servicesSectionData = [{ 63 - 'title': 'Upgrades', 64 - 'icon': 'refresh', 65 - 'content': 'Stay current with the latest XWiki LTS and keep your instance reliable.', 66 - 'items': [ 67 - 'Audit setup, extensions, and configurations', 68 - 'Test upgrades with backups and validation', 69 - 'Safe production rollout with minimal downtime' 70 - ] 71 - },{ 72 - 'title': 'Maintenance, Support & Recovery', 73 - 'icon': 'stethoscope', 74 - 'content': 'Ensure long-term stability and quick response when issues appear.', 75 - 'items': [ 76 - 'Monitoring and performance checks', 77 - 'Security patching, log analysis, triage', 78 - 'Issue recovery, data repair, hardening' 79 - ] 80 - },{ 81 - 'title': 'Development & Integrations', 82 - 'icon': 'cogs', 83 - 'content': 'Extend and connect XWiki to fit your workflow and systems.', 84 - 'items': [ 85 - 'Custom apps, macros, automation', 86 - 'SSO, REST APIs, LDAP, CRM links', 87 - 'Maintainable extensions for long-term use' 88 - ] 89 - },{ 90 - 'title': 'Hosting & Deployment', 91 - 'icon': 'cloud', 92 - 'content': 'Cloud-ready environments designed for reliability and performance.', 93 - 'items': [ 94 - 'Containerized deployment and TLS', 95 - 'Backups, restore strategy, observability', 96 - 'Optimization and load tuning' 97 - ] 98 - },{ 99 - 'title': 'Migrations to XWiki', 100 - 'icon': 'exchange', 101 - 'content': 'Move from Confluence, SharePoint, or MediaWiki to XWiki with full data integrity and structure.', 102 - 'items': [ 103 - 'Preserve hierarchy, attachments, and permissions', 104 - 'Convert macros, categories, and metadata for XWiki', 105 - 'Redirect old URLs and maintain SEO consistency' 106 - ] 107 - }]) 108 - <section class="services" aria-labelledby="services-title"> 48 + 49 + <section aria-labelledby="platform-title"> 109 109 <div class="container"> 110 - <h2 id="services-title">Services</h2> 111 - <p class="lead"> 112 - 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. 113 113 </p> 114 114 115 - #set ($servicesSize = $servicesSectionData.size()) 116 - <div class="services-grid"> 117 - #foreach ($entry in $servicesSectionData) 118 - #set ($classes = "service") 119 - ## If this is the last item AND the total number is odd, center it 120 - #if ($foreach.count == $servicesSize && ($servicesSize % 2) == 1) 121 - #set ($classes = "service service-center") 122 - #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> 123 123 124 - <article class="$classes"> 125 - <div class="service-icon"> 126 - <i class="fa fa-$entry.icon" aria-hidden="true"></i> 127 - </div> 128 - <div class="service-body"> 129 - <h4>$entry.title</h4> 130 - <p>$entry.content</p> 131 - <ul> 132 - #foreach ($item in $entry.items) 133 - <li>$item</li> 134 - #end 135 - </ul> 136 - </div> 137 - </article> 138 - #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> 139 139 </div> 140 140 </div> 141 141 </section> 142 - ## CTA INLINE143 - <section id="contact" class="cta-section">115 + 116 + <section class="split-section" aria-labelledby="why-title"> 144 144 <div class="container"> 145 - <p class="text-center contact-inline"> 146 - Need help with your XWiki? <a href="$xwiki.getURL('contact.WebHome')">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. 147 147 </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> 148 148 </div> 149 149 </section> 150 - {{/html}} 151 -#end 152 152 153 -#macro(requestConsultationModal) 154 - <div class="modal fade" id="requestConsultation" tabindex="-1" role="dialog"> 155 - <div class="modal-dialog"> 156 - <div class="modal-content"> 157 - <div class="modal-header"> 158 - <button type="button" class="close" data-dismiss="modal">×</button> 159 - <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> 160 160 </div> 161 - <div class="modal-body"> 162 - <div> 163 - ##Need help with your XWiki? <a href="mailto:alex@agnease.com">Contact Agnease</a> 164 - #displayFormFromSheetCode() 165 - </div> 166 - </div> 167 - <div class="modal-footer"> 168 - ##<input id="continueCategorySelection" type="button" class="btn btn-default" data-dismiss="modal" 169 - ## value="$escapetool.xml($services.localization.render('yesno_1'))"> 170 - </div> 171 171 </div> 172 - </div> 173 - </div> 187 + </section> 188 + 189 + {{/html}} 174 174 #end 175 175 176 176 #macro (stripHTMLMacro $displayOutput) ... ... @@ -215,4 +215,5 @@ 215 215 </dl> 216 216 </div> 217 217 #end 234 +#displayPublicContent 218 218 {{/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: 3 50px;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,304 @@ 233 233 a { color: @brand; } 234 234 } 235 235 } 237 +/* ========== Agnease Revamp Additions ========== */ 238 + 239 +@brand-soft: #E7FFF8; 240 +@brand-bg: #F4FCFA; 241 + 242 +.hero-kicker { 243 + display: inline-flex; 244 + align-items: center; 245 + gap: 8px; 246 + color: @brand; 247 + background: fade(@brand, 8%); 248 + border: 1px solid fade(@brand, 18%); 249 + border-radius: 999px; 250 + padding: 6px 12px; 251 + margin-bottom: 14px; 252 + font-size: 13px; 253 + font-weight: 700; 254 +} 255 + 256 +.hero h1 { 257 + max-width: 760px; 258 + margin-left: auto; 259 + margin-right: auto; 260 + line-height: 1.18; 261 +} 262 + 263 +.hero .lead { 264 + max-width: 760px; 265 + font-size: 19px; 266 + line-height: 1.55; 267 +} 268 + 269 +.hero-support { 270 + max-width: 760px; 271 + margin: 14px auto 0; 272 + color: @muted; 273 + line-height: 1.55; 274 +} 275 + 276 +.hero-actions { 277 + display: flex; 278 + gap: 12px; 279 + flex-wrap: wrap; 280 + justify-content: center; 281 + margin-top: 22px; 282 + 283 + .btn-secondary { 284 + color: @brand; 285 + background: #fff; 286 + border: 1px solid fade(@brand, 35%); 287 + 288 + &:hover, 289 + &:focus { 290 + color: @brand-strong; 291 + border-color: @brand; 292 + background: @brand-bg; 293 + } 294 + } 295 +} 296 + 297 +.trust-strip { 298 + padding: 18px 0; 299 + border-top: 1px solid @line; 300 + border-bottom: 1px solid @line; 301 + background: #fff; 302 + 303 + ul { 304 + max-width: 920px; 305 + margin: 0 auto; 306 + padding: 0; 307 + list-style: none; 308 + display: flex; 309 + justify-content: center; 310 + gap: 22px; 311 + flex-wrap: wrap; 312 + color: @muted; 313 + font-size: 13px; 314 + } 315 + 316 + li { 317 + display: flex; 318 + align-items: center; 319 + gap: 7px; 320 + } 321 + 322 + i { 323 + color: @brand; 324 + } 325 +} 326 + 327 +.section-intro { 328 + max-width: 760px; 329 + margin: 0 auto 18px; 330 + text-align: center; 331 + color: @muted; 332 + font-size: 16px; 333 + line-height: 1.55; 334 +} 335 + 336 +.pathways { 337 + display: grid; 338 + grid-template-columns: repeat(3, minmax(0, 1fr)); 339 + grid-gap: 18px; 340 + max-width: 1040px; 341 + margin: 22px auto 0; 342 +} 343 + 344 +.pathway-card { 345 + background: #fff; 346 + border: 1px solid @line; 347 + border-radius: @radius; 348 + box-shadow: @shadow-sm; 349 + padding: 22px; 350 + display: flex; 351 + flex-direction: column; 352 + min-height: 100%; 353 + 354 + .pathway-icon { 355 + width: 46px; 356 + height: 46px; 357 + border-radius: 50%; 358 + display: flex; 359 + align-items: center; 360 + justify-content: center; 361 + color: @brand; 362 + background: fade(@brand, 10%); 363 + margin-bottom: 14px; 364 + font-size: 18px; 365 + } 366 + 367 + h3 { 368 + margin: 0 0 8px; 369 + color: @text; 370 + font-size: 20px; 371 + line-height: 1.25; 372 + } 373 + 374 + p { 375 + color: @muted; 376 + line-height: 1.55; 377 + margin: 0 0 14px; 378 + } 379 + 380 + ul { 381 + margin: 0 0 18px; 382 + padding-left: 18px; 383 + color: @muted; 384 + font-size: 13px; 385 + } 386 + 387 + li { 388 + margin: 5px 0; 389 + } 390 + 391 + .card-link { 392 + margin-top: auto; 393 + 394 + a { 395 + color: @brand; 396 + font-weight: 700; 397 + } 398 + } 399 +} 400 + 401 +.split-section { 402 + background: 403 + radial-gradient(42rem 16rem at 50% 0%, @brand-bg 0%, transparent 65%); 404 +} 405 + 406 +.split-grid { 407 + display: grid; 408 + grid-template-columns: 1.1fr .9fr; 409 + grid-gap: 36px; 410 + max-width: 1040px; 411 + margin: 0 auto; 412 + align-items: center; 413 +} 414 + 415 +.split-copy { 416 + h2 { 417 + text-align: left; 418 + margin-top: 0; 419 + } 420 + 421 + p { 422 + color: @muted; 423 + line-height: 1.6; 424 + } 425 +} 426 + 427 +.process-list { 428 + counter-reset: process; 429 + margin: 0; 430 + padding: 0; 431 + list-style: none; 432 +} 433 + 434 +.process-list li { 435 + counter-increment: process; 436 + position: relative; 437 + padding: 16px 16px 16px 58px; 438 + margin-bottom: 12px; 439 + background: #fff; 440 + border: 1px solid @line; 441 + border-radius: @radius; 442 + box-shadow: @shadow-sm; 443 + color: @muted; 444 + line-height: 1.5; 445 + 446 + &:before { 447 + content: counter(process); 448 + position: absolute; 449 + left: 16px; 450 + top: 16px; 451 + width: 28px; 452 + height: 28px; 453 + border-radius: 50%; 454 + background: fade(@brand, 10%); 455 + color: @brand; 456 + display: flex; 457 + align-items: center; 458 + justify-content: center; 459 + font-weight: 800; 460 + } 461 + 462 + strong { 463 + display: block; 464 + color: @text; 465 + margin-bottom: 3px; 466 + } 467 +} 468 + 469 +.resource-strip { 470 + background: @brand-bg; 471 + 472 + .resource-grid { 473 + max-width: 1040px; 474 + margin: 20px auto 0; 475 + display: grid; 476 + grid-template-columns: repeat(2, minmax(0, 1fr)); 477 + grid-gap: 16px; 478 + } 479 + 480 + .resource-card { 481 + background: #fff; 482 + border: 1px solid @line; 483 + border-radius: @radius; 484 + padding: 18px; 485 + box-shadow: @shadow-sm; 486 + 487 + h4 { 488 + margin: 0 0 6px; 489 + color: @text; 490 + } 491 + 492 + p { 493 + color: @muted; 494 + margin: 0 0 10px; 495 + line-height: 1.5; 496 + } 497 + 498 + a { 499 + color: @brand; 500 + font-weight: 700; 501 + } 502 + } 503 +} 504 + 505 +.cta-panel { 506 + max-width: 860px; 507 + margin: 0 auto; 508 + padding: 30px; 509 + border-radius: @radius; 510 + border: 1px solid fade(@brand, 20%); 511 + background: 512 + radial-gradient(34rem 12rem at 50% 0%, @brand-soft 0%, #fff 70%); 513 + box-shadow: @shadow-sm; 514 + text-align: center; 515 + 516 + h2 { 517 + margin-top: 0; 518 + } 519 + 520 + p { 521 + color: @muted; 522 + line-height: 1.55; 523 + } 524 +} 525 + 526 +@media (max-width: 900px) { 527 + .pathways, 528 + .split-grid, 529 + .resource-strip .resource-grid { 530 + grid-template-columns: 1fr; 531 + } 532 + 533 + .split-copy h2 { 534 + text-align: center; 535 + } 536 +} 537 +