Commit 4f3a614a51eb9164b45cc257a1cdf2667d1b6fa7

Authored by William Daniau
1 parent ee7faa1aad
Exists in master

Premier essai de template Wize S5

Showing 13 changed files with 919 additions and 1 deletions Inline Diff

templates/html/Wize_S5.html
File was created 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
4 <html xmlns="http://www.w3.org/1999/xhtml">
5
6 <head>
7 <title>[% title %]</title>
8 <!-- metadata -->
9 <meta name="generator" content="[% generator.name %]" />
10 <meta charset="utf-8"/>
11 <meta name="version" content="S5 1.1" />
12 <meta name="presdate" content="" />
13 <meta name="author" content="" />
14 <meta name="company" content="" />
15 <!-- configuration parameters -->
16 <meta name="defaultView" content="slideshow" />
17 <meta name="controlVis" content="hidden" />
18 <!-- style sheet links -->
19 <link rel="stylesheet"
20 href="[% resource('common-spec/zim-variables.css') %]" >
21
22 <link rel="stylesheet" href="[% resource('ui/default/slides.css') %]" type="text/css" media="projection" id="slideProj" />
23 <link rel="stylesheet" href="[% resource('ui/default/outline.css') %]" type="text/css" media="screen" id="outlineStyle" />
24 <link rel="stylesheet" href="[% resource('ui/default/print.css') %]" type="text/css" media="print" id="slidePrint" />
25 <link rel="stylesheet" href="[% resource('ui/default/opera.css') %]" type="text/css" media="projection" id="operaFix" />
26
27 <link rel="stylesheet"
28 href="[% resource('common/zim-style.css') %]" >
29 <link rel="stylesheet"
30 href="[% resource('common/zim-table-style.css') %]" >
31 <link rel="stylesheet"
32 href="[% resource('common/zim-special.css') %]" >
33 <link rel="stylesheet"
34 href="[% resource('common/zim-hljs.css') %]" >
35 <link rel="stylesheet"
36 href="[% resource('common-spec/zim-pres-override.css') %]" >
37
38 <link rel="stylesheet"
39 href="[% resource('common/hljs/styles/sunburst.css') %]" >
40
41 <!-- hljs -->
42 <script src="[% resource('common/hljs/highlight.pack.js') %]"></script>
43
44 <script src="[% resource('common/wizefunc.js') %]"></script>
45
46 <!-- S5 JS -->
47 <script src="[% resource('ui/default/slides.js') %]" type="text/javascript"></script>
48 <style type='text/css'>
49 * { font-family: sans-serif }
50 img {
51 display: block;
52 margin-left: auto;
53 margin-right: auto;
54 }
55 tt {
56 font-size: inherit;
57 }
58
59 td, th {
60 font-size:80%;
61 }
62
63 code {
64 font-size:80%;
65 }
66 body {
67 background: var(--main-pres-background-color);
68 background-image: url('[% resource("common-spec/fond-pres.jpg") %]');
69 background-repeat: var(--main-pres-background-repeat);
70 background-size: var(--main-pres-background-size);
71 }
72
73 </style>
74 </head>
75 <body>
76
77 <div class="layout">
78 <div id="controls"><!-- DO NOT EDIT --></div>
79 <div id="currentSlide"><!-- DO NOT EDIT --></div>
80 <div id="header">
81 <div id="logoDivId" style="position: absolute; right: 1em;">
82 <img id="logoImgId" src='[% resource("common-spec/logo-pres.png") %]' alt=' '>
83 </div>
84 </div>
85 <div id="footer">
86 <h2 id="footinfo1"></h2>
87 <h2 id="footinfo2"></h2>
88 </div>
89
90 </div>
91
templates/html/Wize_S5/ui/default/blank.gif

49 Bytes

templates/html/Wize_S5/ui/default/bodybg.gif

9.88 KB

templates/html/Wize_S5/ui/default/framing.css
File was created 1 /* The following styles size, place, and layer the slide components.
2 Edit these if you want to change the overall slide layout.
3 The commented lines can be uncommented (and modified, if necessary)
4 to help you with the rearrangement process. */
5
6 /* target = 1024x768 */
7
8 div#header, div#footer, .slide {width: 100%; top: 0; left: 0;}
9 div#header {top: 0; height: 3em; z-index: 1;}
10 div#footer {top: auto; bottom: 0; height: 2.5em; z-index: 5;}
11 .slide {top: 0; width: 92%; padding: 3.5em 4% 4%; z-index: 2; list-style: none;}
12 div#controls {left: 50%; bottom: 0; width: 50%; z-index: 100;}
13 div#controls form {position: absolute; bottom: 0; right: 0; width: 100%;
14 margin: 0;}
15 #currentSlide {position: absolute; width: 10%; left: 45%; bottom: 1em; z-index: 10;}
16 html>body #currentSlide {position: fixed;}
17
18 /*
19 div#header {background: #FCC;}
20 div#footer {background: #CCF;}
templates/html/Wize_S5/ui/default/iepngfix.htc
File was created 1 <public:component>
2 <public:attach event="onpropertychange" onevent="doFix()" />
3
4 <script>
5
6 // IE5.5+ PNG Alpha Fix v1.0 by Angus Turnbull http://www.twinhelix.com
7 // Free usage permitted as long as this notice remains intact.
8
9 // This must be a path to a blank image. That's all the configuration you need here.
10 var blankImg = 'ui/default/blank.gif';
11
12 var f = 'DXImageTransform.Microsoft.AlphaImageLoader';
13
14 function filt(s, m) {
15 if (filters[f]) {
16 filters[f].enabled = s ? true : false;
17 if (s) with (filters[f]) { src = s; sizingMethod = m }
18 } else if (s) style.filter = 'progid:'+f+'(src="'+s+'",sizingMethod="'+m+'")';
19 }
20
21 function doFix() {
22 if ((parseFloat(navigator.userAgent.match(/MSIE (\S+)/)[1]) < 5.5) ||
23 (event && !/(background|src)/.test(event.propertyName))) return;
24
25 if (tagName == 'IMG') {
26 if ((/\.png$/i).test(src)) {
27 filt(src, 'image'); // was 'scale'
28 src = blankImg;
29 } else if (src.indexOf(blankImg) < 0) filt();
30 } else if (style.backgroundImage) {
31 if (style.backgroundImage.match(/^url[("']+(.*\.png)[)"']+$/i)) {
32 var s = RegExp.$1;
33 style.backgroundImage = '';
templates/html/Wize_S5/ui/default/opera.css
File was created 1 /* DO NOT CHANGE THESE unless you really want to break Opera Show */
2 .slide {
3 visibility: visible !important;
4 position: static !important;
5 page-break-before: always;
6 }
7 #slide0 {page-break-before: avoid;}
templates/html/Wize_S5/ui/default/outline.css
File was created 1 /* don't change this unless you want the layout stuff to show up in the outline view! */
2
3 .layout div, #footer *, #controlForm * {display: none;}
4 #footer, #controls, #controlForm, #navLinks, #toggle {
5 display: block; visibility: visible; margin: 0; padding: 0;}
6 #toggle {float: right; padding: 0.5em;}
7 html>body #toggle {position: fixed; top: 0; right: 0;}
8
9 /* making the outline look pretty-ish */
10
11 #slide0 h1, #slide0 h2, #slide0 h3, #slide0 h4 {border: none; margin: 0;}
12 #slide0 h1 {padding-top: 1.5em;}
templates/html/Wize_S5/ui/default/pretty.css
File was created 1 /* Following are the presentation styles -- edit away! */
2
3 /* body {background: #FFF url(bodybg.gif) -16px 0 no-repeat; color: #000; font-size: 2em;} */
4 body {background: #FFF;}
5
6 :link, :visited {text-decoration: none; color: #00C;}
7 #controls :active {color: #88A !important;}
8 #controls :focus {outline: 1px dotted #227;}
9
10 /* h1, h2, h3, h4 {font-size: 100%; margin: 0; padding: 0; font-weight: inherit;} */
11
12 /* ul, pre {margin: 0; line-height: 1em;} */
13
14 ul, pre {margin: 0;}
15
16 html, body {margin: 0; padding: 0;}
17
18 blockquote, q {font-style: italic;}
19 blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em; text-align: center; font-size: 1em;}
20 blockquote p {margin: 0;}
21 blockquote i {font-style: normal;}
22 blockquote b {display: block; margin-top: 0.5em; font-weight: normal; font-size: smaller; font-style: normal;}
23 blockquote b i {font-style: italic;}
24
25 kbd {font-weight: bold; font-size: 1em;}
26 sup {font-size: smaller; line-height: 1px;}
27
28 /*.slide code {padding: 2px 0.25em; font-weight: bold; color: #533;}*/
29
30
31 .slide code.bad, code del {color: red;}
32 .slide code.old {color: silver;}
33
34 /* .slide pre {padding: 0; margin: 0.25em 0 0.5em 0.5em; color: #533; font-size: 90%;} */
35 .slide pre {
36 padding: 0.2em;
37 margin: 0.25em 0 0.5em 0.5em;
38 color: var(--main-pre-color);
39 font-size: 90%;
40 }
41
42 .slide pre code {display: block;}
43 .slide ul {margin-left: 5%; margin-right: 7%; list-style: disc;}
44 .slide li {margin-top: 0.75em; margin-right: 0;}
45 .slide ul ul {line-height: 1;}
46 .slide ul ul li {margin: .2em; font-size: 85%; list-style: square;}
47 .slide img.leader {display: block; margin: 0 auto;}
48
49 /*div#header, div#footer {background:var(--main-pres-banner-background); color: #AAB;
50 font-family: Verdana, Helvetica, sans-serif;}*/
51
52 div#header, div#footer {background:var(--main-pres-banner-background); color: #AAB;}
53
54
55 /* div#header {background: #005 url(bodybg.gif) -16px 0 no-repeat;
56 line-height: 1px;} */
57
58
59 div#footer {font-size: 0.5em; font-weight: bold; padding: 1em 0;}
60
61 #footer h1, #footer h2 {display: block; padding: 0 1em;}
62
63 /* #footer h2 {font-style: italic;} */
64 #footer h2 {font-style: italic; margin-top:-0.2em;}
65
66 div.long {font-size: 0.75em;}
67
68 /* .slide h1 {position: absolute; top: 0.7em; left: 87px; z-index: 1;
69 margin: 0; padding: 0.3em 0 0 50px; white-space: nowrap;
70 font: bold 150%/1em Helvetica, sans-serif; text-transform: capitalize;
71 color: #DDE; background: #005;} */
72
73 .slide h1 { position: absolute;
74 top: 0.2em;
75 /*left: 87px;*/
76 z-index: 1;
77 margin: 0;
78 /*padding: 0.3em 0 0 50px;*/
79 white-space: nowrap;
80 /*font: bold 150%/1em Helvetica, sans-serif;*/
81 text-transform: capitalize;
82 color: var(--main-pres-banner-foreground);
83 text-decoration: none;
84 }
85
86
87 /* .slide h3 {font-size: 130%;} */
88
89 h1 abbr {font-variant: small-caps;}
90
91 /*div#controls {position: absolute; left: 50%; bottom: 0;
92 width: 50%;
93 text-align: right; font: bold 0.9em Verdana, Helvetica, sans-serif;}*/
94
95 div#controls {position: absolute; left: 50%; bottom: 0;
96 width: 50%;
97 text-align: right; font: bold 0.9em;}
98
99
100 html>body div#controls {position: fixed; padding: 0 0 1em 0;
101 top: auto;}
102 div#controls form {position: absolute; bottom: 0; right: 0; width: 100%;
103 margin: 0; padding: 0;}
104 #controls #navLinks a {padding: 0; margin: 0 0.5em;
105 background: transparent; border: none; color: var(--main-pres-banner-foreground);
templates/html/Wize_S5/ui/default/print.css
File was created 1 /* The following rule is necessary to have all slides appear in print! DO NOT REMOVE IT! */
2 .slide, ul {page-break-inside: avoid; visibility: visible !important;}
3 h1 {page-break-after: avoid;}
4
5 body {font-size: 12pt; background: white;}
6 * {color: black;}
7
8 #slide0 h1 {font-size: 200%; border: none; margin: 0.5em 0 0.25em;}
9 #slide0 h3 {margin: 0; padding: 0;}
10 #slide0 h4 {margin: 0 0 0.5em; padding: 0;}
11 #slide0 {margin-bottom: 3em;}
12
13 h1 {border-top: 2pt solid gray; border-bottom: 1px dotted silver;}
14 .extra {background: transparent !important;}
15 div.extra, pre.extra, .example {font-size: 10pt; color: #333;}
16 ul.extra a {font-weight: bold;}
17 p.example {display: none;}
18
19 #header {display: none;}
templates/html/Wize_S5/ui/default/s5-core.css
File was created 1 /* Do not edit or override these styles! The system will likely break if you do. */
2
3 div#header, div#footer, div#controls, .slide {position: absolute;}
4 html>body div#header, html>body div#footer,
5 html>body div#controls, html>body .slide {position: fixed;}
6 .handout {display: none;}
7 .layout {display: block;}
8 .slide, .hideme, .incremental {visibility: hidden;}
templates/html/Wize_S5/ui/default/slides.css
File was created 1 @import url(s5-core.css); /* required to make the slide show run at all */
2 @import url(framing.css); /* sets basic placement and size of slide components */
3 @import url(pretty.css); /* stuff that makes the slides look better than blah */
templates/html/Wize_S5/ui/default/slides.js
File was created 1 // S5 v1.1 slides.js -- released into the Public Domain
2 //
3 // Please see http://www.meyerweb.com/eric/tools/s5/credits.html for information
4 // about all the wonderful and talented contributors to this code!
5
6 var undef;
7 var slideCSS = '';
8 var snum = 0;
9 var smax = 1;
10 var incpos = 0;
11 var number = undef;
12 var s5mode = true;
13 var defaultView = 'slideshow';
14 var controlVis = 'visible';
15
16 var isIE = navigator.appName == 'Microsoft Internet Explorer' && navigator.userAgent.indexOf('Opera') < 1 ? 1 : 0;
17 var isOp = navigator.userAgent.indexOf('Opera') > -1 ? 1 : 0;
18 var isGe = navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('Safari') < 1 ? 1 : 0;
19
20 function hasClass(object, className) {
21 if (!object.className) return false;
22 return (object.className.search('(^|\\s)' + className + '(\\s|$)') != -1);
23 }
24
25 function hasValue(object, value) {
26 if (!object) return false;
27 return (object.search('(^|\\s)' + value + '(\\s|$)') != -1);
28 }
29
30 function removeClass(object,className) {
31 if (!object) return;
32 object.className = object.className.replace(new RegExp('(^|\\s)'+className+'(\\s|$)'), RegExp.$1+RegExp.$2);
33 }
34
35 function addClass(object,className) {
36 if (!object || hasClass(object, className)) return;
37 if (object.className) {
38 object.className += ' '+className;
39 } else {
40 object.className = className;
41 }
42 }
43
44 function GetElementsWithClassName(elementName,className) {
45 var allElements = document.getElementsByTagName(elementName);
46 var elemColl = new Array();
47 for (var i = 0; i< allElements.length; i++) {
48 if (hasClass(allElements[i], className)) {
49 elemColl[elemColl.length] = allElements[i];
50 }
51 }
52 return elemColl;
53 }
54
55 function isParentOrSelf(element, id) {
56 if (element == null || element.nodeName=='BODY') return false;
57 else if (element.id == id) return true;
58 else return isParentOrSelf(element.parentNode, id);
59 }
60
61 function nodeValue(node) {
62 var result = "";
63 if (node.nodeType == 1) {
64 var children = node.childNodes;
65 for (var i = 0; i < children.length; ++i) {
66 result += nodeValue(children[i]);
67 }
68 }
69 else if (node.nodeType == 3) {
70 result = node.nodeValue;
71 }
72 return(result);
73 }
74
75 function slideLabel() {
76 var slideColl = GetElementsWithClassName('*','slide');
77 var list = document.getElementById('jumplist');
78 smax = slideColl.length;
79 for (var n = 0; n < smax; n++) {
80 var obj = slideColl[n];
81
82 var did = 'slide' + n.toString();
83 obj.setAttribute('id',did);
84 if (isOp) continue;
85
86 var otext = '';
87 var menu = obj.firstChild;
88 if (!menu) continue; // to cope with empty slides
89 while (menu && menu.nodeType == 3) {
90 menu = menu.nextSibling;
91 }
92 if (!menu) continue; // to cope with slides with only text nodes
93
94 var menunodes = menu.childNodes;
95 for (var o = 0; o < menunodes.length; o++) {
96 otext += nodeValue(menunodes[o]);
97 }
98 list.options[list.length] = new Option(n + ' : ' + otext, n);
99 }
100 }
101
102 function currentSlide() {
103 var cs;
104 if (document.getElementById) {
105 cs = document.getElementById('currentSlide');
106 } else {
107 cs = document.currentSlide;
108 }
109 cs.innerHTML = '<span id="csHere">' + snum + '<\/span> ' +
110 '<span id="csSep">\/<\/span> ' +
111 '<span id="csTotal">' + (smax-1) + '<\/span>';
112 if (snum == 0) {
113 cs.style.visibility = 'hidden';
114 } else {
115 cs.style.visibility = 'visible';
116 }
117 }
118
119 function go(step) {
120 if (document.getElementById('slideProj').disabled || step == 0) return;
121 var jl = document.getElementById('jumplist');
122 var cid = 'slide' + snum;
123 var ce = document.getElementById(cid);
124 if (incrementals[snum].length > 0) {
125 for (var i = 0; i < incrementals[snum].length; i++) {
126 removeClass(incrementals[snum][i], 'current');
127 removeClass(incrementals[snum][i], 'incremental');
128 }
129 }
130 if (step != 'j') {
131 snum += step;
132 lmax = smax - 1;
133 if (snum > lmax) snum = lmax;
134 if (snum < 0) snum = 0;
135 } else
136 snum = parseInt(jl.value);
137 var nid = 'slide' + snum;
138 var ne = document.getElementById(nid);
139 if (!ne) {
140 ne = document.getElementById('slide0');
141 snum = 0;
142 }
143 if (step < 0) {incpos = incrementals[snum].length} else {incpos = 0;}
144 if (incrementals[snum].length > 0 && incpos == 0) {
145 for (var i = 0; i < incrementals[snum].length; i++) {
146 if (hasClass(incrementals[snum][i], 'current'))
147 incpos = i + 1;
148 else
149 addClass(incrementals[snum][i], 'incremental');
150 }
151 }
152 if (incrementals[snum].length > 0 && incpos > 0)
153 addClass(incrementals[snum][incpos - 1], 'current');
154 ce.style.visibility = 'hidden';
155 ne.style.visibility = 'visible';
156 jl.selectedIndex = snum;
157 currentSlide();
158 number = 0;
159 }
160
161 function goTo(target) {
162 if (target >= smax || target == snum) return;
163 go(target - snum);
164 }
165
166 function subgo(step) {
167 if (step > 0) {
168 removeClass(incrementals[snum][incpos - 1],'current');
169 removeClass(incrementals[snum][incpos], 'incremental');
170 addClass(incrementals[snum][incpos],'current');
171 incpos++;
172 } else {
173 incpos--;
174 removeClass(incrementals[snum][incpos],'current');
175 addClass(incrementals[snum][incpos], 'incremental');
176 addClass(incrementals[snum][incpos - 1],'current');
177 }
178 }
179
180 function toggle() {
181 var slideColl = GetElementsWithClassName('*','slide');
182 var slides = document.getElementById('slideProj');
183 var outline = document.getElementById('outlineStyle');
184 if (!slides.disabled) {
185 slides.disabled = true;
186 outline.disabled = false;
187 s5mode = false;
188 fontSize('1em');
189 for (var n = 0; n < smax; n++) {
190 var slide = slideColl[n];
191 slide.style.visibility = 'visible';
192 }
193 } else {
194 slides.disabled = false;
195 outline.disabled = true;
196 s5mode = true;
197 fontScale();
198 for (var n = 0; n < smax; n++) {
199 var slide = slideColl[n];
200 slide.style.visibility = 'hidden';
201 }
202 slideColl[snum].style.visibility = 'visible';
203 }
204 }
205
206 function showHide(action) {
207 var obj = GetElementsWithClassName('*','hideme')[0];
208 switch (action) {
209 case 's': obj.style.visibility = 'visible'; break;
210 case 'h': obj.style.visibility = 'hidden'; break;
211 case 'k':
212 if (obj.style.visibility != 'visible') {
213 obj.style.visibility = 'visible';
214 } else {
215 obj.style.visibility = 'hidden';
216 }
217 break;
218 }
219 }
220
221 // 'keys' code adapted from MozPoint (http://mozpoint.mozdev.org/)
222 function keys(key) {
223 if (!key) {
224 key = event;
225 key.which = key.keyCode;
226 }
227 if (key.which == 84) {
228 toggle();
229 return;
230 }
231 if (s5mode) {
232 switch (key.which) {
233 case 10: // return
234 case 13: // enter
235 if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return;
236 if (key.target && isParentOrSelf(key.target, 'controls')) return;
237 if(number != undef) {
238 goTo(number);
239 break;
240 }
241 case 32: // spacebar
242 case 34: // page down
243 case 39: // rightkey
244 case 40: // downkey
245 if(number != undef) {
246 go(number);
247 } else if (!incrementals[snum] || incpos >= incrementals[snum].length) {
248 go(1);
249 } else {
250 subgo(1);
251 }
252 break;
253 case 33: // page up
254 case 37: // leftkey
255 case 38: // upkey
256 if(number != undef) {
257 go(-1 * number);
258 } else if (!incrementals[snum] || incpos <= 0) {
259 go(-1);
260 } else {
261 subgo(-1);
262 }
263 break;
264 case 36: // home
265 goTo(0);
266 break;
267 case 35: // end
268 goTo(smax-1);
269 break;
270 case 67: // c
271 showHide('k');
272 break;
273 }
274 if (key.which < 48 || key.which > 57) {
275 number = undef;
276 } else {
277 if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return;
278 if (key.target && isParentOrSelf(key.target, 'controls')) return;
279 number = (((number != undef) ? number : 0) * 10) + (key.which - 48);
280 }
281 }
282 return false;
283 }
284
285 function clicker(e) {
286 number = undef;
287 var target;
288 if (window.event) {
289 target = window.event.srcElement;
290 e = window.event;
291 } else target = e.target;
292 if (target.getAttribute('href') != null || hasValue(target.rel, 'external') || isParentOrSelf(target, 'controls') || isParentOrSelf(target,'embed') || isParentOrSelf(target,'object')) return true;
293 if (!e.which || e.which == 1) {
294 if (!incrementals[snum] || incpos >= incrementals[snum].length) {
295 go(1);
296 } else {
297 subgo(1);
298 }
299 }
300 }
301
302 function findSlide(hash) {
303 var target = null;
304 var slides = GetElementsWithClassName('*','slide');
305 for (var i = 0; i < slides.length; i++) {
306 var targetSlide = slides[i];
307 if ( (targetSlide.name && targetSlide.name == hash)
308 || (targetSlide.id && targetSlide.id == hash) ) {
309 target = targetSlide;
310 break;
311 }
312 }
313 while(target != null && target.nodeName != 'BODY') {
314 if (hasClass(target, 'slide')) {
315 return parseInt(target.id.slice(5));
316 }
317 target = target.parentNode;
318 }
319 return null;
320 }
321
322 function slideJump() {
323 if (window.location.hash == null) return;
324 var sregex = /^#slide(\d+)$/;
325 var matches = sregex.exec(window.location.hash);
326 var dest = null;
327 if (matches != null) {
328 dest = parseInt(matches[1]);
329 } else {
330 dest = findSlide(window.location.hash.slice(1));
331 }
332 if (dest != null)
333 go(dest - snum);
334 }
335
336 function fixLinks() {
337 var thisUri = window.location.href;
338 thisUri = thisUri.slice(0, thisUri.length - window.location.hash.length);
339 var aelements = document.getElementsByTagName('A');
340 for (var i = 0; i < aelements.length; i++) {
341 var a = aelements[i].href;
342 var slideID = a.match('\#slide[0-9]{1,2}');
343 if ((slideID) && (slideID[0].slice(0,1) == '#')) {
344 var dest = findSlide(slideID[0].slice(1));
345 if (dest != null) {
346 if (aelements[i].addEventListener) {
347 aelements[i].addEventListener("click", new Function("e",
348 "if (document.getElementById('slideProj').disabled) return;" +
349 "go("+dest+" - snum); " +
350 "if (e.preventDefault) e.preventDefault();"), true);
351 } else if (aelements[i].attachEvent) {
352 aelements[i].attachEvent("onclick", new Function("",
353 "if (document.getElementById('slideProj').disabled) return;" +
354 "go("+dest+" - snum); " +
355 "event.returnValue = false;"));
356 }
357 }
358 }
359 }
360 }
361
362 function externalLinks() {
363 if (!document.getElementsByTagName) return;
364 var anchors = document.getElementsByTagName('a');
365 for (var i=0; i<anchors.length; i++) {
366 var anchor = anchors[i];
367 if (anchor.getAttribute('href') && hasValue(anchor.rel, 'external')) {
368 anchor.target = '_blank';
369 addClass(anchor,'external');
370 }
371 }
372 }
373
374 function createControls() {
375 var controlsDiv = document.getElementById("controls");
376 if (!controlsDiv) return;
377 var hider = ' onmouseover="showHide(\'s\');" onmouseout="showHide(\'h\');"';
378 var hideDiv, hideList = '';
379 if (controlVis == 'hidden') {
380 hideDiv = hider;
381 } else {
382 hideList = hider;
383 }
384 controlsDiv.innerHTML = '<form action="#" id="controlForm"' + hideDiv + '>' +
385 '<div id="navLinks">' +
386 '<a accesskey="t" id="toggle" href="javascript:toggle();">&#216;<\/a>' +
387 '<a accesskey="z" id="prev" href="javascript:go(-1);">&laquo;<\/a>' +
388 '<a accesskey="x" id="next" href="javascript:go(1);">&raquo;<\/a>' +
389 '<div id="navList"' + hideList + '><select id="jumplist" onchange="go(\'j\');"><\/select><\/div>' +
390 '<\/div><\/form>';
391 if (controlVis == 'hidden') {
392 var hidden = document.getElementById('navLinks');
393 } else {
394 var hidden = document.getElementById('jumplist');
395 }
396 addClass(hidden,'hideme');
397 }
398
399 function fontScale() { // causes layout problems in FireFox that get fixed if browser's Reload is used; same may be true of other Gecko-based browsers
400 if (!s5mode) return false;
401 var vScale = 22; // both yield 32 (after rounding) at 1024x768
402 var hScale = 32; // perhaps should auto-calculate based on theme's declared value?
403 if (window.innerHeight) {
404 var vSize = window.innerHeight;
405 var hSize = window.innerWidth;
406 } else if (document.documentElement.clientHeight) {
407 var vSize = document.documentElement.clientHeight;
408 var hSize = document.documentElement.clientWidth;
409 } else if (document.body.clientHeight) {
410 var vSize = document.body.clientHeight;
411 var hSize = document.body.clientWidth;
412 } else {
413 var vSize = 700; // assuming 1024x768, minus chrome and such
414 var hSize = 1024; // these do not account for kiosk mode or Opera Show
415 }
416 var newSize = Math.min(Math.round(vSize/vScale),Math.round(hSize/hScale));
417 fontSize(newSize + 'px');
418 if (isGe) { // hack to counter incremental reflow bugs
419 var obj = document.getElementsByTagName('body')[0];
420 obj.style.display = 'none';
421 obj.style.display = 'block';
422 }
423 }
424
425 function fontSize(value) {
426 if (!(s5ss = document.getElementById('s5ss'))) {
427 if (!isIE) {
428 document.getElementsByTagName('head')[0].appendChild(s5ss = document.createElement('style'));
429 s5ss.setAttribute('media','screen, projection');
430 s5ss.setAttribute('id','s5ss');
431 } else {
432 document.createStyleSheet();
433 document.s5ss = document.styleSheets[document.styleSheets.length - 1];
434 }
435 }
436 if (!isIE) {
437 while (s5ss.lastChild) s5ss.removeChild(s5ss.lastChild);
438 s5ss.appendChild(document.createTextNode('body {font-size: ' + value + ' !important;}'));
439 } else {
440 document.s5ss.addRule('body','font-size: ' + value + ' !important;');
441 }
442 }
443
444 function notOperaFix() {
445 slideCSS = document.getElementById('slideProj').href;
446 var slides = document.getElementById('slideProj');
447 var outline = document.getElementById('outlineStyle');
448 slides.setAttribute('media','screen');
449 outline.disabled = true;
450 if (isGe) {
451 slides.setAttribute('href','null'); // Gecko fix
452 slides.setAttribute('href',slideCSS); // Gecko fix
453 }
454 if (isIE && document.styleSheets && document.styleSheets[0]) {
455 document.styleSheets[0].addRule('img', 'behavior: url(ui/default/iepngfix.htc)');
456 document.styleSheets[0].addRule('div', 'behavior: url(ui/default/iepngfix.htc)');
457 document.styleSheets[0].addRule('.slide', 'behavior: url(ui/default/iepngfix.htc)');
458 }
459 }
460
461 function getIncrementals(obj) {
462 var incrementals = new Array();
463 if (!obj)
464 return incrementals;
465 var children = obj.childNodes;
466 for (var i = 0; i < children.length; i++) {
467 var child = children[i];
468 if (hasClass(child, 'incremental')) {
469 if (child.nodeName == 'OL' || child.nodeName == 'UL') {
470 removeClass(child, 'incremental');
471 for (var j = 0; j < child.childNodes.length; j++) {
472 if (child.childNodes[j].nodeType == 1) {
473 addClass(child.childNodes[j], 'incremental');
474 }
475 }
476 } else {
477 incrementals[incrementals.length] = child;
478 removeClass(child,'incremental');
479 }
480 }
481 if (hasClass(child, 'show-first')) {
482 if (child.nodeName == 'OL' || child.nodeName == 'UL') {
483 removeClass(child, 'show-first');
484 if (child.childNodes[isGe].nodeType == 1) {
485 removeClass(child.childNodes[isGe], 'incremental');
486 }
487 } else {
488 incrementals[incrementals.length] = child;
489 }
490 }
491 incrementals = incrementals.concat(getIncrementals(child));
492 }
493 return incrementals;
494 }
495
496 function createIncrementals() {
497 var incrementals = new Array();
498 for (var i = 0; i < smax; i++) {
499 incrementals[i] = getIncrementals(document.getElementById('slide'+i));
500 }
501 return incrementals;
502 }
503
504 function defaultCheck() {
505 var allMetas = document.getElementsByTagName('meta');
506 for (var i = 0; i< allMetas.length; i++) {
507 if (allMetas[i].name == 'defaultView') {
508 defaultView = allMetas[i].content;
509 }
510 if (allMetas[i].name == 'controlVis') {
511 controlVis = allMetas[i].content;
512 }
513 }
514 }
515
516 // Key trap fix, new function body for trap()
517 function trap(e) {
518 if (!e) {
519 e = event;
520 e.which = e.keyCode;
#!/usr/bin/env ruby 1 1 #!/usr/bin/env ruby
2 2
require 'optparse' 3 3 require 'optparse'
4 4
# Variables globales $version, $auteur et $date 5 5 # Variables globales $version, $auteur et $date
$version = "0.1" 6 6 $version = "0.1"
$auteur = "William Daniau" 7 7 $auteur = "William Daniau"
$date = "2019 10 11" 8 8 $date = "2019 10 11"
9 9
# Global directory definitions 10 10 # Global directory definitions
$zimShareDir = "#{ENV['HOME']}/.local/share/zim" 11 11 $zimShareDir = "#{ENV['HOME']}/.local/share/zim"
$zimHtmlTemplateDir = "#{$zimShareDir}/templates/html" 12 12 $zimHtmlTemplateDir = "#{$zimShareDir}/templates/html"
$zimConfigDir = "#{ENV['HOME']}/.config/zim" 13 13 $zimConfigDir = "#{ENV['HOME']}/.config/zim"
14 14
# Parse arguments class 15 15 # Parse arguments class
class ParseOptions 16 16 class ParseOptions
def self.parse(args) 17 17 def self.parse(args)
options = Hash.new 18 18 options = Hash.new
19 19
opt_parser = OptionParser.new do |opts| 20 20 opt_parser = OptionParser.new do |opts|
opts.banner = "\nUtilisation : wize.rb [options]" 21 21 opts.banner = "\nUtilisation : wize.rb [options]"
opts.separator "" 22 22 opts.separator ""
whatIDo = <<-AFP 23 23 whatIDo = <<-AFP
24 24
liste ou applique une configuration de template wize pour zim 25 25 liste ou applique une configuration de template wize pour zim
26 26
AFP 27 27 AFP
28 28
opts.separator whatIDo 29 29 opts.separator whatIDo
30 30
opts.on("-i", 31 31 opts.on("-i",
"--install", 32 32 "--install",
" - crée le fichier Wize_Print.html à partir", 33 33 " - crée le fichier Wize_Print.html à partir",
"du fichier template correspondant en", 34 34 "du fichier template correspondant en",
"remplaçant %%HOME%% par la valeur de $HOME.", 35 35 "remplaçant %%HOME%% par la valeur de $HOME.",
" - Installe un lien symbolique dans", 36 36 " - Installe un lien symbolique dans",
"le dossier de config de zim.", 37 37 "le dossier de config de zim.",
" - Applique le thème wize de base", 38 38 " - Applique le thème wize de base",
"A éxécuter a priori une seule fois .") do |l| 39 39 "A éxécuter a priori une seule fois .") do |l|
options[:install] = l 40 40 options[:install] = l
end 41 41 end
42 42
opts.on("-l", 43 43 opts.on("-l",
"--list", 44 44 "--list",
"Liste les configurations disponibles") do |l| 45 45 "Liste les configurations disponibles") do |l|
options[:list] = l 46 46 options[:list] = l
end 47 47 end
48 48
opts.on("-p", 49 49 opts.on("-p",
"--print", 50 50 "--print",
"Affiche la configuration actuelle") do |p| 51 51 "Affiche la configuration actuelle") do |p|
options[:print] = p 52 52 options[:print] = p
end 53 53 end
54 54
opts.on("-a", 55 55 opts.on("-a",
"--apply CONF", 56 56 "--apply CONF",
"applique la config CONF") do |conf| 57 57 "applique la config CONF") do |conf|
options[:conf] = conf 58 58 options[:conf] = conf
end 59 59 end
60 60
opts.separator "" 61 61 opts.separator ""
opts.separator " Options standard:" 62 62 opts.separator " Options standard:"
opts.on_tail("-h", "--help", "Affiche ce message") do 63 63 opts.on_tail("-h", "--help", "Affiche ce message") do
puts opts 64 64 puts opts
puts "" 65 65 puts ""
exit 66 66 exit
end 67 67 end
opts.on_tail("-v", "--version", "Affiche la version") do 68 68 opts.on_tail("-v", "--version", "Affiche la version") do
puts "Version : " + $version 69 69 puts "Version : " + $version
puts "Auteur : " + $auteur 70 70 puts "Auteur : " + $auteur
puts "Date : " + $date 71 71 puts "Date : " + $date
puts "" 72 72 puts ""
exit 73 73 exit
end 74 74 end
end 75 75 end
76 76
opt_parser.parse!(args) 77 77 opt_parser.parse!(args)
options 78 78 options
end 79 79 end
end 80 80 end
81 81
# Get the config list 82 82 # Get the config list
def listConfigs 83 83 def listConfigs
Dir.chdir($zimHtmlTemplateDir) 84 84 Dir.chdir($zimHtmlTemplateDir)
a = `ls`.split(/\n/) 85 85 a = `ls`.split(/\n/)
names = [] 86 86 names = []
r = /^common-(.+)$/ 87 87 r = /^common-(.+)$/
a.each { |f| 88 88 a.each { |f|
if f =~ r 89 89 if f =~ r
names.push($1) 90 90 names.push($1)
end 91 91 end
} 92 92 }
names 93 93 names
end 94 94 end
95 95
# Get the current config by looking at print-common 96 96 # Get the current config by looking at print-common
def getCurrent 97 97 def getCurrent
Dir.chdir($zimHtmlTemplateDir) 98 98 Dir.chdir($zimHtmlTemplateDir)
File.readlink("print-common") =~ /^common-(.+)$/ 99 99 File.readlink("print-common") =~ /^common-(.+)$/
$1 100 100 $1
end 101 101 end
102 102
# Apply a config 103 103 # Apply a config
def applyConfig(name) 104 104 def applyConfig(name)
Dir.chdir($zimHtmlTemplateDir) 105 105 Dir.chdir($zimHtmlTemplateDir)
list = ["Wize", "Wize_with_index", "Wize_with_index_sod"] 106 106 list = ["Wize", "Wize_with_index", "Wize_with_index_sod", "Wize_S5"]
list.each { |l| 107 107 list.each { |l|
# Removing previous content 108 108 # Removing previous content
system("rm -rf #{l}/common") 109 109 system("rm -rf #{l}/common")
system("rm -rf #{l}/common-spec") 110 110 system("rm -rf #{l}/common-spec")
# Copying new content 111 111 # Copying new content
system("cp -r common #{l}/common") 112 112 system("cp -r common #{l}/common")
system("cp -r common-#{name} #{l}/common-spec") 113 113 system("cp -r common-#{name} #{l}/common-spec")
} 114 114 }
# For print 115 115 # For print
system("rm -f print-common") 116 116 system("rm -f print-common")
system("ln -s common-#{name} print-common") 117 117 system("ln -s common-#{name} print-common")
end 118 118 end
119 119
# Is the name a valid config? 120 120 # Is the name a valid config?
def configInList?(name, names) 121 121 def configInList?(name, names)
names.include? name 122 122 names.include? name
end 123 123 end
124 124
# Re-create Wize_Print.html from template 125 125 # Re-create Wize_Print.html from template
# and initialize link into zim config directory 126 126 # and initialize link into zim config directory
def installWize 127 127 def installWize
Dir.chdir($zimHtmlTemplateDir) 128 128 Dir.chdir($zimHtmlTemplateDir)
begin 129 129 begin
printTemplate = File.new("Wize_Print_Template.tpl", "r") 130 130 printTemplate = File.new("Wize_Print_Template.tpl", "r")
rescue 131 131 rescue
puts "cannot open print file for reading" 132 132 puts "cannot open print file for reading"
exit 133 133 exit
end 134 134 end
tabfile = [] 135 135 tabfile = []
stor = '%%HOME%%' 136 136 stor = '%%HOME%%'
rby = ENV['HOME'] 137 137 rby = ENV['HOME']
printTemplate.readlines.each { |line| 138 138 printTemplate.readlines.each { |line|
line.gsub!(stor,rby) 139 139 line.gsub!(stor,rby)
tabfile.push(line) 140 140 tabfile.push(line)
} 141 141 }
printTemplate.close 142 142 printTemplate.close
begin 143 143 begin
printFile = File.new("Wize_Print.html", "w") 144 144 printFile = File.new("Wize_Print.html", "w")
rescue 145 145 rescue
puts "cannot open print file for writing" 146 146 puts "cannot open print file for writing"
exit 147 147 exit
end 148 148 end
tabfile.each { |line| 149 149 tabfile.each { |line|
printFile.write line 150 150 printFile.write line
} 151 151 }
printFile.close 152 152 printFile.close
153 153
Dir.chdir($zimConfigDir) 154 154 Dir.chdir($zimConfigDir)
system("rm -f style.conf") 155 155 system("rm -f style.conf")
system("ln -s #{$zimShareDir}/style.conf style.conf") 156 156 system("ln -s #{$zimShareDir}/style.conf style.conf")
157 157
# Now apply wize theme 158 158 # Now apply wize theme
applyConfig("wize") 159 159 applyConfig("wize")
createStyleFile("wize") 160 160 createStyleFile("wize")
end 161 161 end
162 162
# Create style-name.conf according to common-name/zim-variables.css 163 163 # Create style-name.conf according to common-name/zim-variables.css
def createStyleFile(name) 164 164 def createStyleFile(name)
lfTags = ["--main-header-color", 165 165 lfTags = ["--main-header-color",
"--main-menu-u-decoration", 166 166 "--main-menu-u-decoration",
"--main-menu-u-background-color", 167 167 "--main-menu-u-background-color",
"--main-strike-color", 168 168 "--main-strike-color",
"--main-tt-color", 169 169 "--main-tt-color",
"--main-pre-color", 170 170 "--main-pre-color",
"--main-link-color"] 171 171 "--main-link-color"]
172 172
# First we load the css file and parse it 173 173 # First we load the css file and parse it
Dir.chdir($zimHtmlTemplateDir) 174 174 Dir.chdir($zimHtmlTemplateDir)
begin 175 175 begin
nameCSS = File.new("common-#{name}/zim-variables.css", "r") 176 176 nameCSS = File.new("common-#{name}/zim-variables.css", "r")
rescue 177 177 rescue
puts "cannot open common-#{name}/zim-variables.css for reading" 178 178 puts "cannot open common-#{name}/zim-variables.css for reading"
exit 179 179 exit
end 180 180 end
sCSS = nameCSS.read 181 181 sCSS = nameCSS.read
regComment = /\/\*.*?\*\//m 182 182 regComment = /\/\*.*?\*\//m
sCSS.gsub!(regComment, '') 183 183 sCSS.gsub!(regComment, '')
sTags = {} 184 184 sTags = {}
lfTags.each { |tag| 185 185 lfTags.each { |tag|
var = Regexp.escape(tag) 186 186 var = Regexp.escape(tag)
reg = /#{var}\s*:\s*(\S+)\s*;/ 187 187 reg = /#{var}\s*:\s*(\S+)\s*;/
sCSS =~ reg 188 188 sCSS =~ reg
sTags[tag] = $1 189 189 sTags[tag] = $1
# On traite le cas particulier du u-decoration 190 190 # On traite le cas particulier du u-decoration
if tag == "--main-menu-u-decoration" 191 191 if tag == "--main-menu-u-decoration"
sTags[tag] = sTags[tag] == 'underline' ? 'PANGO_UNDERLINE_SINGLE' : '' 192 192 sTags[tag] = sTags[tag] == 'underline' ? 'PANGO_UNDERLINE_SINGLE' : ''
end 193 193 end
} 194 194 }
195 195
# know read the style template 196 196 # know read the style template
Dir.chdir($zimShareDir) 197 197 Dir.chdir($zimShareDir)
begin 198 198 begin
styleTemplate = File.new("style-template.conf", "r") 199 199 styleTemplate = File.new("style-template.conf", "r")
rescue 200 200 rescue
puts "cannot open style-template.conf for reading" 201 201 puts "cannot open style-template.conf for reading"
exit 202 202 exit
end 203 203 end
styleTemplateString = styleTemplate.read 204 204 styleTemplateString = styleTemplate.read
lfTags.each { |tag| 205 205 lfTags.each { |tag|
styleTemplateString.gsub!("%%#{tag}%%", sTags[tag]) 206 206 styleTemplateString.gsub!("%%#{tag}%%", sTags[tag])
} 207 207 }
# Now write the file 208 208 # Now write the file
begin 209 209 begin
styleOutput = File.new("style-#{name}.conf", "w") 210 210 styleOutput = File.new("style-#{name}.conf", "w")
rescue 211 211 rescue
puts "cannot open style-#{name}.conf for writing" 212 212 puts "cannot open style-#{name}.conf for writing"
exit 213 213 exit
end 214 214 end
styleOutput.write styleTemplateString 215 215 styleOutput.write styleTemplateString
styleOutput.close 216 216 styleOutput.close
# Now create the symbolic link 217 217 # Now create the symbolic link
system("rm style.conf") 218 218 system("rm style.conf")
system("ln -s style-#{name}.conf style.conf") 219 219 system("ln -s style-#{name}.conf style.conf")
end 220 220 end
221 221
# Parse arguments using the class and get results in a hash 222 222 # Parse arguments using the class and get results in a hash
options = ParseOptions.parse(ARGV) 223 223 options = ParseOptions.parse(ARGV)
if options.length == 0 224 224 if options.length == 0
puts "Utiliser -h pour l'aide" 225 225 puts "Utiliser -h pour l'aide"
exit 226 226 exit
end 227 227 end
228 228
# get existing configs 229 229 # get existing configs
configs = listConfigs 230 230 configs = listConfigs
231 231
# Installation 232 232 # Installation
if options[:install] 233 233 if options[:install]
installWize 234 234 installWize
exit 235 235 exit
end 236 236 end
237 237
# List 238 238 # List