dsetool.policy 1.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. dsetool/policy/__init__.py +1 -0
  2. dsetool/policy/adapters/__init__.py +0 -0
  3. dsetool/policy/adapters/configure.zcml +7 -0
  4. dsetool/policy/adapters/traversing.py +34 -0
  5. dsetool/policy/browser/configure.zcml +42 -0
  6. dsetool/policy/browser/overrides/euphorie.client.browser.templates.login.pt +453 -0
  7. dsetool/policy/browser/templates/identification.pt +76 -0
  8. dsetool/policy/browser/templates/start.pt +282 -0
  9. dsetool/policy/browser/webhelpers.py +28 -0
  10. dsetool/policy/configure.zcml +47 -0
  11. dsetool/policy/interfaces.py +16 -0
  12. dsetool/policy/locales/bg/LC_MESSAGES/euphorie.po +740 -0
  13. dsetool/policy/locales/ca/LC_MESSAGES/euphorie.po +750 -0
  14. dsetool/policy/locales/cs/LC_MESSAGES/euphorie.po +738 -0
  15. dsetool/policy/locales/da/LC_MESSAGES/euphorie.po +747 -0
  16. dsetool/policy/locales/de/LC_MESSAGES/euphorie.po +737 -0
  17. dsetool/policy/locales/el/LC_MESSAGES/euphorie.po +749 -0
  18. dsetool/policy/locales/en/LC_MESSAGES/euphorie.po +374 -0
  19. dsetool/policy/locales/es/LC_MESSAGES/euphorie.po +747 -0
  20. dsetool/policy/locales/et/LC_MESSAGES/euphorie.po +623 -0
  21. dsetool/policy/locales/euphorie.pot +339 -0
  22. dsetool/policy/locales/fi/LC_MESSAGES/euphorie.po +735 -0
  23. dsetool/policy/locales/fr/LC_MESSAGES/euphorie.po +744 -0
  24. dsetool/policy/locales/hr/LC_MESSAGES/euphorie.po +735 -0
  25. dsetool/policy/locales/hu/LC_MESSAGES/euphorie.po +741 -0
  26. dsetool/policy/locales/is/LC_MESSAGES/euphorie.po +745 -0
  27. dsetool/policy/locales/it/LC_MESSAGES/euphorie.po +747 -0
  28. dsetool/policy/locales/lt/LC_MESSAGES/euphorie.po +736 -0
  29. dsetool/policy/locales/lv/LC_MESSAGES/euphorie.po +735 -0
  30. dsetool/policy/locales/mt/LC_MESSAGES/euphorie.po +744 -0
  31. dsetool/policy/locales/nl/LC_MESSAGES/euphorie.po +730 -0
  32. dsetool/policy/locales/nl_BE/LC_MESSAGES/euphorie.po +738 -0
  33. dsetool/policy/locales/no/LC_MESSAGES/euphorie.po +749 -0
  34. dsetool/policy/locales/pl/LC_MESSAGES/euphorie.po +745 -0
  35. dsetool/policy/locales/pt/LC_MESSAGES/euphorie.po +744 -0
  36. dsetool/policy/locales/ro/LC_MESSAGES/euphorie.po +751 -0
  37. dsetool/policy/locales/sk/LC_MESSAGES/euphorie.po +625 -0
  38. dsetool/policy/locales/sl/LC_MESSAGES/euphorie.po +736 -0
  39. dsetool/policy/locales/sv/LC_MESSAGES/euphorie.po +744 -0
  40. dsetool/policy/ploneintranet/__init__.py +0 -0
  41. dsetool/policy/ploneintranet/configure.zcml +100 -0
  42. dsetool/policy/ploneintranet/quaive_create.py +28 -0
  43. dsetool/policy/ploneintranet/quaive_edit.py +14 -0
  44. dsetool/policy/ploneintranet/templates/choice_view.pt +47 -0
  45. dsetool/policy/ploneintranet/templates/option_view.pt +29 -0
  46. dsetool/policy/ploneintranet/templates/recommendation_view.pt +26 -0
  47. dsetool/policy/profiles/default/browserlayer.xml +6 -0
  48. dsetool/policy/profiles/default/metadata.xml +9 -0
  49. dsetool/policy/profiles/default/workflows.xml +8 -0
  50. dsetool/policy/profiles/uninstall/browserlayer.xml +6 -0
  51. dsetool/policy/setuphandlers.py +50 -0
  52. dsetool/policy/testing.py +24 -0
  53. dsetool/policy/tests/__init__.py +0 -0
  54. dsetool/policy/tests/test_setup.py +69 -0
  55. dsetool/policy/upgrades/__init__.py +0 -0
  56. dsetool/policy/upgrades/configure.zcml +16 -0
  57. dsetool/policy/upgrades/v1/20250827093930_fix_the_security_settings/__init__.py +0 -0
  58. dsetool/policy/upgrades/v1/20250827093930_fix_the_security_settings/upgrade.py +39 -0
  59. dsetool/policy/upgrades/v1/20250827093930_fix_the_security_settings/workflows.xml +8 -0
  60. dsetool/policy/upgrades/v1/__init__.py +0 -0
  61. dsetool_policy-1.0.0.dist-info/METADATA +67 -0
  62. dsetool_policy-1.0.0.dist-info/RECORD +65 -0
  63. dsetool_policy-1.0.0.dist-info/WHEEL +5 -0
  64. dsetool_policy-1.0.0.dist-info/entry_points.txt +2 -0
  65. dsetool_policy-1.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1 @@
1
+ """Init and utils."""
File without changes
@@ -0,0 +1,7 @@
1
+ <configure
2
+ xmlns="http://namespaces.zope.org/zope"
3
+ xmlns:browser="http://namespaces.zope.org/browser"
4
+ >
5
+ <adapter factory=".traversing.ClientPublishTraverser" />
6
+
7
+ </configure>
@@ -0,0 +1,34 @@
1
+ from dsetool.policy.interfaces import IDSEToolPolicyClientLayer
2
+ from dsetool.policy.interfaces import IDSEToolPolicyLayer
3
+ from euphorie.client.client import IClient
4
+ from zope.component import adapter
5
+ from zope.interface import directlyProvidedBy
6
+ from zope.interface import directlyProvides
7
+ from zope.interface import implementer
8
+ from zope.publisher.interfaces import IPublishTraverse
9
+ from zope.publisher.interfaces.browser import IBrowserSkinType
10
+ from ZPublisher.BaseRequest import DefaultPublishTraverse
11
+
12
+
13
+ @adapter(IClient, IDSEToolPolicyLayer)
14
+ @implementer(IPublishTraverse)
15
+ class ClientPublishTraverser(DefaultPublishTraverse):
16
+ """Publish traverser to setup the skin layer.
17
+
18
+ This traverser marks the request with IOSHAClientSkinLayer when the
19
+ client is traversed and the osha.oira product is installed.
20
+ """
21
+
22
+ def publishTraverse(self, request, name):
23
+ from euphorie.client.utils import setRequest
24
+
25
+ setRequest(request)
26
+ request.client = self.context
27
+
28
+ ifaces = [
29
+ iface
30
+ for iface in directlyProvidedBy(request)
31
+ if not IBrowserSkinType.providedBy(iface)
32
+ ]
33
+ directlyProvides(request, IDSEToolPolicyClientLayer, ifaces)
34
+ return super().publishTraverse(request, name)
@@ -0,0 +1,42 @@
1
+ <configure
2
+ xmlns="http://namespaces.zope.org/zope"
3
+ xmlns:browser="http://namespaces.zope.org/browser"
4
+ >
5
+
6
+ <include package="z3c.jbot" />
7
+
8
+ <browser:jbot
9
+ directory="overrides"
10
+ layer="dsetool.policy.interfaces.IDSEToolPolicyLayer"
11
+ />
12
+
13
+ <configure package="euphorie.client.browser">
14
+ <browser:page
15
+ name="webhelpers"
16
+ for="*"
17
+ class="dsetool.policy.browser.webhelpers.DSEToolWebHelpers"
18
+ template="templates/webhelpers.pt"
19
+ permission="zope.Public"
20
+ layer="dsetool.policy.interfaces.IDSEToolPolicyClientLayer"
21
+ />
22
+ </configure>
23
+
24
+ <browser:page
25
+ name="start"
26
+ for="euphorie.client.adapters.session_traversal.ITraversedSurveySession"
27
+ class="euphorie.client.browser.session.Start"
28
+ template="templates/start.pt"
29
+ permission="euphorie.client.ViewSurvey"
30
+ layer="dsetool.policy.interfaces.IDSEToolPolicyClientLayer"
31
+ />
32
+
33
+ <browser:page
34
+ name="identification"
35
+ for="euphorie.client.adapters.session_traversal.ITraversedSurveySession"
36
+ class="euphorie.client.browser.session.Identification"
37
+ template="templates/identification.pt"
38
+ permission="euphorie.client.ViewSurvey"
39
+ layer="dsetool.policy.interfaces.IDSEToolPolicyClientLayer"
40
+ />
41
+
42
+ </configure>
@@ -0,0 +1,453 @@
1
+ <!DOCTYPE html>
2
+ <html xmlns="http://www.w3.org/1999/xhtml"
3
+ xmlns:i18n="http://xml.zope.org/namespaces/i18n"
4
+ xmlns:meta="http://xml.zope.org/namespaces/meta"
5
+ xmlns:metal="http://xml.zope.org/namespaces/metal"
6
+ xmlns:tal="http://xml.zope.org/namespaces/tal"
7
+ id="login"
8
+ meta:interpolation="true"
9
+ metal:use-macro="context/@@shell_bare/macros/shell_bare"
10
+ tal:define="
11
+ webhelpers nocall:context/@@webhelpers;
12
+ client nocall:request/client;
13
+ "
14
+ i18n:domain="euphorie"
15
+ >
16
+
17
+ <body>
18
+ <metal:slot fill-slot="content"
19
+ tal:define="
20
+ is_guest_account webhelpers/is_guest_account;
21
+ survey_url webhelpers/survey_url;
22
+ came_from_param webhelpers/came_from_param;
23
+ base_url webhelpers/base_url;
24
+ "
25
+ >
26
+
27
+ <div id="portal">
28
+
29
+ <form class="pat-form"
30
+ id="login"
31
+ action="${context/absolute_url}/@@login#login"
32
+ method="post"
33
+ >
34
+
35
+ <input name="action"
36
+ type="hidden"
37
+ value="login"
38
+ />
39
+
40
+
41
+ <input name="came_from"
42
+ type="hidden"
43
+ value="${request/came_from}"
44
+ tal:condition="request/came_from|nothing"
45
+ />
46
+
47
+ <fieldset class="vertical">
48
+
49
+ <label>
50
+ <i18n:msg translate="label_email">Email address</i18n:msg>
51
+ <input class="pat-autofocus"
52
+ name="__ac_name"
53
+ required
54
+ size="50"
55
+ type="email"
56
+ value="${request/__ac_name|nothing}"
57
+ />
58
+ </label>
59
+ <label>
60
+ <i18n:msg translate="label_login_password">Password</i18n:msg>
61
+ <input name="__ac_password:utf8:ustring"
62
+ required
63
+ size="50"
64
+ type="password"
65
+ />
66
+ </label>
67
+
68
+ <p class="message warning"
69
+ tal:condition="view/error|nothing"
70
+ i18n:translate="incorrect_login"
71
+ >
72
+ Your login name and/or password were entered incorrectly. Please check and try again or
73
+ <a class="reminder"
74
+ href="${view/reset_password_request_url}"
75
+ i18n:name="request_an_email_reminder"
76
+ i18n:translate="request_an_email_reminder"
77
+ >reset your
78
+ password</a>.
79
+ </p>
80
+
81
+ <fieldset class="pat-checklist"
82
+ tal:condition="python:context.portal_registry.get('euphorie.use_remember_login', True)"
83
+ >
84
+ <label>
85
+ <i18n:msg translate="label_keep_logged_in">Keep me logged in.</i18n:msg>
86
+ <input name="remember"
87
+ type="checkbox"
88
+ />
89
+ </label>
90
+ </fieldset>
91
+
92
+ <div class="button-bar">
93
+ <button class="pat-button default"
94
+ name="login"
95
+ type="submit"
96
+ i18n:translate="label_login"
97
+ >Log
98
+ in</button>
99
+ </div>
100
+
101
+ <article class="pat-rich">
102
+ <ul class="colofon">
103
+ <li>
104
+ <i18n:msg translate="register_teaser">Don't have an account? Then please
105
+ <a href="#registration"
106
+ i18n:name="register_link"
107
+ i18n:translate="label_register_first"
108
+ >register</a>
109
+ first.
110
+ </i18n:msg>
111
+ </li>
112
+ <li>
113
+ <a class="pat-modal"
114
+ href="${view/reset_password_request_url}"
115
+ data-pat-modal="class: small panel"
116
+ i18n:translate="label_forgot_password"
117
+ >I forgot
118
+ my password</a>
119
+ </li>
120
+ <li>
121
+ <a href="/about-e-tool.html"
122
+ target="_blank"
123
+ i18n:translate=""
124
+ >Learn more
125
+ about the Dangerous Substances eTool</a>
126
+ </li>
127
+ </ul>
128
+ </article>
129
+
130
+ </fieldset>
131
+ </form>
132
+
133
+ <form class="pat-form pat-validation"
134
+ id="registration"
135
+ action="${context/absolute_url}/@@login#registration"
136
+ method="post"
137
+ data-pat-validation="${webhelpers/pat_validation_messages}"
138
+ tal:define="
139
+ errors view/errors;
140
+ "
141
+ >
142
+
143
+ <article class="pat-rich">
144
+ <h1 i18n:translate="header_register">Register</h1>
145
+ </article>
146
+
147
+ <input name="action"
148
+ type="hidden"
149
+ value="register"
150
+ />
151
+
152
+ <input name="came_from"
153
+ type="hidden"
154
+ value="${request/came_from}"
155
+ tal:condition="request/came_from|nothing"
156
+ />
157
+
158
+ <fieldset class="vertical">
159
+
160
+ <label class="${python:'error' if 'first_name' in errors else None}">
161
+ <i18n:msg translate="label_first_name_optional">First name (optional)</i18n:msg>
162
+ <input class="pat-autofocus"
163
+ name="first_name"
164
+ type="text"
165
+ value="${request/first_name|nothing}"
166
+ />
167
+ <em class="message warning"
168
+ tal:condition="exists:errors/first_name"
169
+ tal:content="errors/first_name"
170
+ >Invalid first name</em>
171
+ </label>
172
+
173
+ <label class="${python:'error' if 'last_name' in errors else None}">
174
+ <i18n:msg translate="label_last_name_optional">Last name (optional)</i18n:msg>
175
+ <input class="pat-autofocus"
176
+ name="last_name"
177
+ type="text"
178
+ value="${request/last_name|nothing}"
179
+ />
180
+ <em class="message warning"
181
+ tal:condition="exists:errors/last_name"
182
+ tal:content="errors/last_name"
183
+ >Invalid last name</em>
184
+ </label>
185
+
186
+ <label class="${python:'error' if 'email' in errors else None}">
187
+ <i18n:msg translate="label_email">Email address</i18n:msg>
188
+ <input class="pat-autofocus"
189
+ name="email"
190
+ required
191
+ type="email"
192
+ value="${request/email|nothing}"
193
+ />
194
+ <em class="message warning"
195
+ tal:condition="exists:errors/email"
196
+ tal:content="errors/email"
197
+ >Invalid login name</em>
198
+ </label>
199
+
200
+ <label class="${python:'error' if 'password' in errors else None}">
201
+ <i18n:msg translate="label_new_password">Desired password</i18n:msg>
202
+ <input minlength="12"
203
+ name="password1:utf8:ustring"
204
+ required
205
+ type="password"
206
+ />
207
+ <em class="message warning"
208
+ tal:condition="exists:errors/password"
209
+ tal:content="errors/password"
210
+ >Invalid password</em>
211
+ </label>
212
+
213
+ <label>
214
+ <i18n:msg translate="label_password_confirm">Again password</i18n:msg>
215
+ <input minlength="12"
216
+ name="password2:utf8:ustring"
217
+ required
218
+ type="password"
219
+ />
220
+ </label>
221
+
222
+ <p class="pat-message info"
223
+ i18n:translate="help_password_requirements"
224
+ >
225
+ The password needs to be at least 12 characters long and needs to contain at least one lower
226
+ case letter, one upper case letter and one digit.
227
+ </p>
228
+
229
+ <metal:honeypot use-macro="webhelpers/macros/honeypot" />
230
+
231
+ <fieldset class="pat-checklist">
232
+ <label>
233
+ <span class="label-fragment-title">
234
+ <tal:i18n i18n:translate="label_agree_terms_conditions">
235
+
236
+ I agree with the
237
+
238
+ <a class="pat-modal"
239
+ href="${base_url}/terms-conditions#document-content"
240
+ data-pat-modal="class: sheet"
241
+ i18n:name="link_terms_conditions"
242
+ i18n:translate="label_data_protection_notice"
243
+ >
244
+ Data protection notice</a>
245
+ </tal:i18n>
246
+ </span>
247
+ <input name="terms"
248
+ required
249
+ type="checkbox"
250
+ />
251
+ <em class="message warning"
252
+ tal:condition="exists:errors/terms"
253
+ tal:content="errors/terms"
254
+ >Invalid terms</em>
255
+ </label>
256
+ </fieldset>
257
+
258
+ <p class="button-bar">
259
+ <button class="default pat-button"
260
+ name="register"
261
+ type="submit"
262
+ i18n:translate="header_register"
263
+ >Register</button>
264
+ </p>
265
+
266
+ </fieldset>
267
+ </form>
268
+
269
+ <div id="welcome">
270
+ <div id="intro">
271
+ <header class="title-group">
272
+ <a href="#intro">
273
+ <h1>DS eTool</h1>
274
+ </a>
275
+ <p class="byline">
276
+ <tal:i18n i18n:translate="oira_name_line_1">Dangerous Substances</tal:i18n>
277
+ <tal:i18n i18n:translate="oira_name_line_2">eTool</tal:i18n>
278
+ </p>
279
+ <p class="info"
280
+ style="margin-top: 10px"
281
+ >
282
+ <tal:i18n i18n:translate="info_login">Dear user, in order to be able to user the tool and get all functionalities, you are requested to login.</tal:i18n><br />
283
+ <tal:i18n i18n:translate="info_register">Please, if you do not have a user, register first.</tal:i18n>
284
+ </p>
285
+ </header>
286
+ <p class="options">
287
+ <a href="#login"
288
+ i18n:translate="label_login"
289
+ >Log in</a>
290
+ <a href="#registration"
291
+ i18n:translate="header_register"
292
+ >Register</a>
293
+ <a href="#more-information"
294
+ i18n:translate="label_learn_more"
295
+ >Learn more</a>
296
+ </p>
297
+
298
+
299
+ <tal:statusmsg tal:repeat="message webhelpers/messages">
300
+ <p class="pat-message notice"
301
+ id="${message/id}-body"
302
+ tal:content="message/message | nothing"
303
+ >
304
+ Status message</p>
305
+ </tal:statusmsg>
306
+
307
+ </div>
308
+
309
+ <div class="pat-rich long-read"
310
+ id="more-information"
311
+ >
312
+ <div class="pat-toolbar">
313
+ <div class="pat-toolbar-section">
314
+ <a class="pat-back-button"
315
+ href="#intro"
316
+ i18n:translate="home_link"
317
+ >Dashboard</a>
318
+ </div>
319
+ </div>
320
+ <article class="body-text pat-rich">
321
+
322
+ <h2 i18n:translate="">What is OiRA (Online Interactive Risk Assessment)?</h2>
323
+ <p i18n:translate="">OiRA stands for Online Interactive Risk Assessment. It is a web-based tool
324
+ that allows you to perform a health and safety risk assessment of your workplace.</p>
325
+
326
+ <tal:who-for condition="view/show_whofor">
327
+ <h4 i18n:translate="">Who is the OiRA tool for?</h4>
328
+ <div class="indented">
329
+ <p i18n:translate="">OiRA can be used by anyone wishing to assess health and
330
+ safety-related risks that might exist in their workplace.</p>
331
+ <p i18n:translate="">However, OiRA is designed to be of most value to smaller
332
+ businesses.</p>
333
+ <p i18n:translate="">OiRA is designed specifically to support them in assessing the
334
+ risks at work and helping them to produce a documented risk assessment including an
335
+ action plan tailored to the business's requirements.</p>
336
+ </div>
337
+ </tal:who-for>
338
+
339
+ <tal:what-to-do condition="view/show_what_to_do">
340
+ <h4 i18n:translate="">What do I have to do?</h4>
341
+ <div class="indented">
342
+ <p i18n:translate="">There are four main stages to complete in the assessment process:
343
+ </p>
344
+ <ul>
345
+ <li i18n:translate=""><strong i18n:name="preparation">
346
+ <tal:span i18n:translate="label_preparation">Preparation</tal:span>:
347
+ </strong>
348
+ This gives you an overview of the particular assessment you are about to begin
349
+ and can allow you to further customise the assessment to the specific nature of
350
+ your business.</li>
351
+ <li i18n:translate=""><strong i18n:name="identification">
352
+ <tal:span i18n:translate="label_identification">Identification</tal:span>:
353
+ </strong>
354
+ OiRA will present a series of potential health and safety hazards or problems
355
+ that could exist in your workplace. By answering the statements/questions with
356
+ either yes or no, you state if such hazards or problems are present. You can
357
+ also decide to leave a question unanswered and thus put it on hold to be
358
+ answered at a later stage.</li>
359
+ <li i18n:translate=""><strong i18n:name="evaluation">
360
+ <tal:span i18n:translate="label_evaluation">Evaluation</tal:span>:
361
+ </strong>
362
+ Here you will be able to determine the level of risk attached to each of the
363
+ items you identified as 'need to be addressed' in the 'Identification' stage.
364
+ </li>
365
+ <li i18n:translate=""><strong i18n:name="action-plan">
366
+ <tal:span i18n:translate="label_action_plan">Action Plan</tal:span>:
367
+ </strong>
368
+ In the fourth stage of the assessment you can decide what steps you will take to
369
+ address the risks you have identified previously and what resources this might
370
+ require. Based on this, a report will be automatically produced in the next
371
+ step.</li>
372
+ </ul>
373
+ </div>
374
+ </tal:what-to-do>
375
+
376
+ <tal:how-long condition="view/show_how_long">
377
+ <h4 i18n:translate="">How long will it take?</h4>
378
+ <div class="indented">
379
+ <p i18n:translate="">It's impossible to say how long an assessment will take in general
380
+ as the tools differ according to sectors and countries.</p>
381
+ <p i18n:translate="">However, you can spend whatever time you have available on an
382
+ assessment and then return to it when convenient to pick up from the same point you
383
+ left off.</p>
384
+ </div>
385
+ </tal:how-long>
386
+
387
+ <tal:why-register condition="view/show_why_register">
388
+ <h4 i18n:translate="">Why do I have to register?</h4>
389
+ <div class="indented">
390
+ <p i18n:translate="">The first thing you will be asked to do when you begin your first
391
+ risk assessment is to create an OiRA account - this is a simple and quick process.
392
+ </p>
393
+ <p i18n:translate="">Registering allows you to simply log in at any time to continue
394
+ previous assessments or to start new ones.</p>
395
+ <p i18n:translate="">You have to make sure to be in possession of a printed, accurate
396
+ and up-dated risk assessment (at any time).</p>
397
+ </div>
398
+ </tal:why-register>
399
+
400
+ <tal:prepare condition="view/show_prepare">
401
+ <h4 i18n:translate="">Do I need to prepare?</h4>
402
+ <div class="indented">
403
+ <p i18n:translate="">You do not need any kind of specific preparation to start using the
404
+ tool, however you should take some time to think about who is going to carry out the
405
+ risk assessment, how workers are going to be involved in the process, etc.</p>
406
+ </div>
407
+ </tal:prepare>
408
+
409
+
410
+ <ul class="ctas">
411
+ <li i18n:translate="text_create_account">
412
+ <a href="#registration"
413
+ i18n:name="link_register"
414
+ i18n:translate="verb_register"
415
+ >Register</a>
416
+ if you would like to use OiRA.
417
+ </li>
418
+ <li tal:condition="not:survey_url"
419
+ i18n:translate="text_test_session"
420
+ >
421
+ <a href="${base_url}/@@surveys?${came_from_param}"
422
+ title="Start a new test session"
423
+ i18n:attributes="title tooltip_start_test_session"
424
+ i18n:name="link_test_session"
425
+ i18n:translate="label_start_test_session"
426
+ >Start a test session</a>
427
+ if you only want to taste OiRA.
428
+ </li>
429
+ <li tal:condition="survey_url"
430
+ i18n:translate="text_test_session"
431
+ >
432
+ <a href="${base_url}/@@tryout?${came_from_param}#document-content"
433
+ title="Start a new test session"
434
+ i18n:attributes="title tooltip_start_test_session"
435
+ i18n:name="link_test_session"
436
+ i18n:translate="label_start_test_session"
437
+ >Start a test
438
+ session</a>
439
+ if you only want to taste OiRA.
440
+ </li>
441
+ </ul>
442
+
443
+ <metal:macro use-macro="context/appendix/macros/appendix" />
444
+
445
+ </article>
446
+ </div>
447
+ </div>
448
+ </div>
449
+
450
+ </metal:slot>
451
+ </body>
452
+
453
+ </html>
@@ -0,0 +1,76 @@
1
+ <!DOCTYPE html>
2
+ <html xmlns="http://www.w3.org/1999/xhtml"
3
+ xmlns:i18n="http://xml.zope.org/namespaces/i18n"
4
+ xmlns:meta="http://xml.zope.org/namespaces/meta"
5
+ xmlns:metal="http://xml.zope.org/namespaces/metal"
6
+ xmlns:tal="http://xml.zope.org/namespaces/tal"
7
+ meta:interpolation="true"
8
+ metal:use-macro="context/@@shell/macros/shell"
9
+ tal:define="
10
+ client nocall:request/client;
11
+ webhelpers nocall:context/@@webhelpers;
12
+ "
13
+ i18n:domain="euphorie"
14
+ >
15
+
16
+ <body>
17
+ <metal:slot fill-slot="content">
18
+ <div class="pat-scroll-box"
19
+ id="content-pane"
20
+ >
21
+ <metal:call use-macro="webhelpers/macros/toolbar" />
22
+ <article class="pat-rich"
23
+ tal:define="
24
+ extra_text view/extra_text;
25
+ "
26
+ >
27
+ <h1>${context/Title}</h1>
28
+ <tal:block replace="tile:statusmessages" />
29
+ <tal:block-etoolspecific tal:condition="python:len(context.aq_parent.objectIds()) &gt;= 3">
30
+ <p i18n:translate="intro_identification_dsetool">The questions are divided into 3 parts. The first
31
+ part is about identifying potential chemical risks in your company. The second part is about the
32
+ routines for chemical risk management. And the third part is about control measures to reduce
33
+ chemical risks.</p>
34
+ </tal:block-etoolspecific>
35
+ <p tal:condition="extra_text">${extra_text}</p>
36
+ </article>
37
+ <p class="button-bar pat-bumper">
38
+ <a class="pat-button pat-inject"
39
+ href="${view/next_url}"
40
+ data-pat-inject="history: record; source: #content; target: #content;"
41
+ i18n:translate="label_start_identification"
42
+ >Start Risk Identification</a>
43
+ </p>
44
+ </div>
45
+ </metal:slot>
46
+
47
+ <metal:slot fill-slot="splash_message_slot">
48
+ <div class="splash-message"
49
+ id="splash-message"
50
+ tal:condition="python:tool_notification is not None"
51
+ >
52
+ <hr class="trigger pat-switch"
53
+ data-pat-switch="selector: body; remove: splash-on-tool*; add: splash-off-${tool_notification/id}; store: session"
54
+ />
55
+ <article class="pat-rich content">
56
+ <p>
57
+ <img src="${style_url}/oira-logo-colour.svg"
58
+ width="20%"
59
+ />
60
+ </p>
61
+ <h1 tal:content="structure tool_notification/title">Message of the day!</h1>
62
+ <tal:content content="structure tool_notification/text">
63
+ <p>Sit amet consectetuer.</p>
64
+ <p>At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum
65
+ deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non
66
+ provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et
67
+ dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio.</p>
68
+ <p>OiRA Team</p>
69
+ </tal:content>
70
+ </article>
71
+ </div>
72
+ </metal:slot>
73
+
74
+ </body>
75
+
76
+ </html>