| ... |
... |
@@ -1,112 +1,175 @@ |
| 1 |
1 |
{{velocity}} |
| 2 |
|
-#set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome')) |
| 3 |
|
-{{html clean="false"}} |
| 4 |
|
- ## PAGE HEADER |
| 5 |
|
- <section class="hero hero-centered" aria-labelledby="hero-title"> |
| 6 |
|
- <div class="container hero-inner"> |
| 7 |
|
- <div class="hero-kicker"> |
| 8 |
|
- <i class="fa fa-book" aria-hidden="true"></i> |
| 9 |
|
- XWiki resources |
| 10 |
|
- </div> |
| 11 |
|
- <h1 id="hero-title">XWiki resources for upgrades, security and maintainability</h1> |
| 12 |
|
- <p class="lead"> |
| 13 |
|
- Practical articles for teams that want to keep XWiki secure, upgradeable and easier to maintain over time. |
| 14 |
|
- </p> |
| 15 |
|
- </div> |
| 16 |
|
- </section> |
| 17 |
|
- ## RESOURCE CARDS |
| 18 |
|
- #set ($resourceItems = [{ |
| 19 |
|
- 'title': 'What should an XWiki security review include?', |
| 20 |
|
- 'icon': 'shield', |
| 21 |
|
- 'url': 'resources.xwiki-security-review', |
| 22 |
|
- 'content': 'A practical overview of what to review in an XWiki instance: version status, access rights, authentication, extensions, custom code, infrastructure, backups and operations.', |
| 23 |
|
- 'linkLabel': 'Read article' |
| 24 |
|
- },{ |
| 25 |
|
- 'title': 'Why upgrade your XWiki instance', |
| 26 |
|
- 'icon': 'refresh', |
| 27 |
|
- 'url': 'resources.why-upgrade-xwiki', |
| 28 |
|
- 'content': 'A practical explanation of why regular XWiki upgrades matter for security, stability, extension compatibility and long-term maintenance.', |
| 29 |
|
- 'linkLabel': 'Read article' |
| 30 |
|
- },{ |
| 31 |
|
- 'title': 'How to customize XWiki safely', |
| 32 |
|
- 'icon': 'code', |
| 33 |
|
- 'url': 'resources.xwiki-custom-development', |
| 34 |
|
- 'content': 'Guidance for organizing XWiki custom code, scripts, templates and extensions so they remain easier to maintain across upgrades.', |
| 35 |
|
- 'linkLabel': 'Read article' |
| 36 |
|
- }]) |
| 37 |
|
- <section id="resources-list" class="services" aria-labelledby="resources-title"> |
| 38 |
|
- <div class="container"> |
| 39 |
|
- <h2 id="resources-title">Useful XWiki resources</h2> |
| 40 |
|
- <p class="section-intro"> |
| 41 |
|
- Focused guidance for production XWiki platforms, covering upgrade planning, custom development, |
| 42 |
|
- maintainability and safer long-term evolution. |
| 43 |
|
- </p> |
| 44 |
|
- <div class="services-grid resources-grid"> |
| 45 |
|
- #foreach ($entry in $resourceItems) |
| 46 |
|
- <article class="service resource-card"> |
| 47 |
|
- <div class="service-icon" aria-hidden="true"> |
| 48 |
|
- <i class="fa fa-$entry.icon"></i> |
| 49 |
|
- </div> |
| 50 |
|
- <div class="service-body"> |
| 51 |
|
- <h4>$entry.title</h4> |
| 52 |
|
- <p>$entry.content</p> |
| 53 |
|
- <p class="card-link"> |
| 54 |
|
- <a href="$xwiki.getURL($entry.url)">$entry.linkLabel</a> |
| 55 |
|
- </p> |
| 56 |
|
- </div> |
| 57 |
|
- </article> |
| 58 |
|
- #end |
| 59 |
|
- </div> |
| 60 |
|
- </div> |
| 61 |
|
- </section> |
| 62 |
|
- ## UPCOMING TOPICS |
| 63 |
|
- #set ($upcomingTopicItems = [{ |
| 64 |
|
- 'title': 'Upgrade planning', |
| 65 |
|
- 'content': 'How to prepare XWiki upgrades when custom code, extensions, authentication and workflows are involved.' |
| 66 |
|
- },{ |
| 67 |
|
- 'title': 'Access and security', |
| 68 |
|
- 'content': 'Practical notes on permissions, authentication options, MFA, SSO and security-aware administration.' |
| 69 |
|
- },{ |
| 70 |
|
- 'title': 'Maintainable customization', |
| 71 |
|
- 'content': 'How to extend XWiki without creating unnecessary upgrade and maintenance problems.' |
| 72 |
|
- }]) |
| 73 |
|
- <section class="split-section" aria-labelledby="upcoming-title"> |
| 74 |
|
- <div class="container"> |
| 75 |
|
- <div class="split-grid"> |
| 76 |
|
- <div class="split-copy"> |
| 77 |
|
- <h2 id="upcoming-title">More practical XWiki topics coming soon</h2> |
| 78 |
|
- <p> |
| 79 |
|
- Future resources will cover XWiki access rights, authentication, migrations, security reviews, |
| 80 |
|
- structured applications, workflows and practical administration patterns. |
| 81 |
|
- </p> |
| 82 |
|
- <p> |
| 83 |
|
- The goal is to publish useful guidance that helps teams make better decisions before an upgrade, |
| 84 |
|
- customization, migration or long-term maintenance engagement. |
| 85 |
|
- </p> |
| 86 |
|
- </div> |
| 87 |
|
- <ol class="process-list"> |
| 88 |
|
- #foreach ($entry in $upcomingTopicItems) |
| 89 |
|
- <li> |
| 90 |
|
- <strong>$entry.title</strong> |
| 91 |
|
- $entry.content |
| 92 |
|
- </li> |
| 93 |
|
- #end |
| 94 |
|
- </ol> |
| 95 |
|
- </div> |
| 96 |
|
- </div> |
| 97 |
|
- </section> |
| 98 |
|
- ## CTA |
| 99 |
|
- <section class="cta-section" aria-labelledby="resource-cta-title"> |
| 100 |
|
- <div class="container"> |
| 101 |
|
- <div class="cta-panel"> |
| 102 |
|
- <h2 id="resource-cta-title">Need help with an XWiki project?</h2> |
| 103 |
|
- <p> |
| 104 |
|
- If your XWiki instance needs an upgrade, custom development, integration work or a technical review, |
| 105 |
|
- Agnease can help evaluate the current state and define practical next steps. |
| 106 |
|
- </p> |
| 107 |
|
- <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Contact Agnease</a> |
| 108 |
|
- </div> |
| 109 |
|
- </div> |
| 110 |
|
- </section> |
| 111 |
|
-{{/html}} |
|
2 |
+#if ("$!xcontext.userReference" == '') |
|
3 |
+ #set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome')) |
|
4 |
+ {{html clean="false"}} |
|
5 |
+ |
|
6 |
+ <li class="dropdown agnease-services-menu"> |
|
7 |
+ <a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" |
|
8 |
+ href="$xwiki.getURL('services.WebHome')"> |
|
9 |
+ Services <span class="caret"></span> |
|
10 |
+ </a> |
|
11 |
+ |
|
12 |
+ <ul class="dropdown-menu agnease-services-dropdown"> |
|
13 |
+ <li> |
|
14 |
+ <a href="$xwiki.getURL('services.WebHome')"> |
|
15 |
+ <span class="menu-icon"><i class="fa fa-th-large" aria-hidden="true"></i></span> |
|
16 |
+ <span class="menu-text"> |
|
17 |
+ <strong>All XWiki services</strong> |
|
18 |
+ <small>Overview of available services</small> |
|
19 |
+ </span> |
|
20 |
+ </a> |
|
21 |
+ </li> |
|
22 |
+ |
|
23 |
+ <li role="separator" class="divider"></li> |
|
24 |
+ |
|
25 |
+ <li> |
|
26 |
+ <a href="$xwiki.getURL('services.xwiki-upgrades')"> |
|
27 |
+ <span class="menu-icon"><i class="fa fa-refresh" aria-hidden="true"></i></span> |
|
28 |
+ <span class="menu-text"> |
|
29 |
+ <strong>XWiki Upgrade Services</strong> |
|
30 |
+ <small>Safe LTS upgrades and validation</small> |
|
31 |
+ </span> |
|
32 |
+ </a> |
|
33 |
+ </li> |
|
34 |
+ |
|
35 |
+ <li> |
|
36 |
+ <a href="$xwiki.getURL('services.xwiki-maintenance-support')"> |
|
37 |
+ <span class="menu-icon"><i class="fa fa-life-ring" aria-hidden="true"></i></span> |
|
38 |
+ <span class="menu-text"> |
|
39 |
+ <strong>Support & Maintenance</strong> |
|
40 |
+ <small>Ongoing care for production instances</small> |
|
41 |
+ </span> |
|
42 |
+ </a> |
|
43 |
+ </li> |
|
44 |
+ |
|
45 |
+ <li> |
|
46 |
+ <a href="$xwiki.getURL('services.xwiki-development-integrations')"> |
|
47 |
+ <span class="menu-icon"><i class="fa fa-cogs" aria-hidden="true"></i></span> |
|
48 |
+ <span class="menu-text"> |
|
49 |
+ <strong>Development & Integrations</strong> |
|
50 |
+ <small>Applications, workflows and APIs</small> |
|
51 |
+ </span> |
|
52 |
+ </a> |
|
53 |
+ </li> |
|
54 |
+ |
|
55 |
+ <li> |
|
56 |
+ <a href="$xwiki.getURL('services.xwiki-migrations')"> |
|
57 |
+ <span class="menu-icon"><i class="fa fa-exchange" aria-hidden="true"></i></span> |
|
58 |
+ <span class="menu-text"> |
|
59 |
+ <strong>XWiki Migrations</strong> |
|
60 |
+ <small>Move knowledge into XWiki</small> |
|
61 |
+ </span> |
|
62 |
+ </a> |
|
63 |
+ </li> |
|
64 |
+ |
|
65 |
+ <li> |
|
66 |
+ <a href="$xwiki.getURL('services.xwiki-authentication-access-control')"> |
|
67 |
+ <span class="menu-icon"><i class="fa fa-lock" aria-hidden="true"></i></span> |
|
68 |
+ <span class="menu-text"> |
|
69 |
+ <strong>Authentication & Access Control</strong> |
|
70 |
+ <small>SSO, LDAP, groups and rights</small> |
|
71 |
+ </span> |
|
72 |
+ </a> |
|
73 |
+ </li> |
|
74 |
+ |
|
75 |
+ <li> |
|
76 |
+ <a href="$xwiki.getURL('services.xwiki-security-review')"> |
|
77 |
+ <span class="menu-icon"><i class="fa fa-shield" aria-hidden="true"></i></span> |
|
78 |
+ <span class="menu-text"> |
|
79 |
+ <strong>XWiki Security Review</strong> |
|
80 |
+ <small>Version, rights and configuration review</small> |
|
81 |
+ </span> |
|
82 |
+ </a> |
|
83 |
+ </li> |
|
84 |
+ </ul> |
|
85 |
+ </li> |
|
86 |
+ |
|
87 |
+ <li class="dropdown agnease-products-menu"> |
|
88 |
+ <a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" |
|
89 |
+ href="$xwiki.getURL('products.WebHome')"> |
|
90 |
+ Products <span class="caret"></span> |
|
91 |
+ </a> |
|
92 |
+ |
|
93 |
+ <ul class="dropdown-menu agnease-products-dropdown"> |
|
94 |
+ <li> |
|
95 |
+ <a href="$xwiki.getURL('products.WebHome')"> |
|
96 |
+ <span class="menu-icon"><i class="fa fa-cube" aria-hidden="true"></i></span> |
|
97 |
+ <span class="menu-text"> |
|
98 |
+ <strong>All products</strong> |
|
99 |
+ <small>XWiki applications and extensions</small> |
|
100 |
+ </span> |
|
101 |
+ </a> |
|
102 |
+ </li> |
|
103 |
+ |
|
104 |
+ <li role="separator" class="divider"></li> |
|
105 |
+ |
|
106 |
+ <li> |
|
107 |
+ <a href="$xwiki.getURL('products.xwiki-two-factor-authentication')"> |
|
108 |
+ <span class="menu-icon"><i class="fa fa-lock" aria-hidden="true"></i></span> |
|
109 |
+ <span class="menu-text"> |
|
110 |
+ <strong>Two-Factor Authentication</strong> |
|
111 |
+ <small>Second verification step for XWiki login</small> |
|
112 |
+ </span> |
|
113 |
+ </a> |
|
114 |
+ </li> |
|
115 |
+ |
|
116 |
+ <li> |
|
117 |
+ <a href="$xwiki.getURL('products.xwiki-task-flow')"> |
|
118 |
+ <span class="menu-icon"><i class="fa fa-check-square-o" aria-hidden="true"></i></span> |
|
119 |
+ <span class="menu-text"> |
|
120 |
+ <strong>Task Flow for XWiki</strong> |
|
121 |
+ <small>Lightweight tasks inside XWiki pages</small> |
|
122 |
+ </span> |
|
123 |
+ </a> |
|
124 |
+ </li> |
|
125 |
+ </ul> |
|
126 |
+ </li> |
|
127 |
+ |
|
128 |
+ <li class="dropdown agnease-resources-menu"> |
|
129 |
+ <a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" |
|
130 |
+ href="$xwiki.getURL('resources.WebHome')"> |
|
131 |
+ Resources <span class="caret"></span> |
|
132 |
+ </a> |
|
133 |
+ |
|
134 |
+ <ul class="dropdown-menu agnease-resources-dropdown"> |
|
135 |
+ <li> |
|
136 |
+ <a href="$xwiki.getURL('resources.WebHome')"> |
|
137 |
+ <span class="menu-icon"><i class="fa fa-book" aria-hidden="true"></i></span> |
|
138 |
+ <span class="menu-text"> |
|
139 |
+ <strong>All resources</strong> |
|
140 |
+ <small>Practical XWiki guidance</small> |
|
141 |
+ </span> |
|
142 |
+ </a> |
|
143 |
+ </li> |
|
144 |
+ |
|
145 |
+ <li role="separator" class="divider"></li> |
|
146 |
+ |
|
147 |
+ <li> |
|
148 |
+ <a href="$xwiki.getURL('resources.why-upgrade-xwiki')"> |
|
149 |
+ <span class="menu-icon"><i class="fa fa-refresh" aria-hidden="true"></i></span> |
|
150 |
+ <span class="menu-text"> |
|
151 |
+ <strong>Why upgrade XWiki regularly?</strong> |
|
152 |
+ <small>Security, stability and maintenance risks</small> |
|
153 |
+ </span> |
|
154 |
+ </a> |
|
155 |
+ </li> |
|
156 |
+ |
|
157 |
+ <li> |
|
158 |
+ <a href="$xwiki.getURL('resources.xwiki-custom-development')"> |
|
159 |
+ <span class="menu-icon"><i class="fa fa-code" aria-hidden="true"></i></span> |
|
160 |
+ <span class="menu-text"> |
|
161 |
+ <strong>Safe XWiki customization</strong> |
|
162 |
+ <small>Custom code without upgrade problems</small> |
|
163 |
+ </span> |
|
164 |
+ </a> |
|
165 |
+ </li> |
|
166 |
+ </ul> |
|
167 |
+ </li> |
|
168 |
+ |
|
169 |
+ <li> |
|
170 |
+ <a href="$xwiki.getURL('contact.WebHome')">Contact</a> |
|
171 |
+ </li> |
|
172 |
+ |
|
173 |
+ {{/html}} |
|
174 |
+#end |
| 112 |
112 |
{{/velocity}} |