comparison contrib/modx.prosilver.en.xsl @ 1:26a2404a2f38

Initial commit of v1.0.1 instructions no-open-ticket
author IBBoard <dev@ibboard.co.uk>
date Sun, 07 Jun 2009 17:55:54 +0000
parents
children 2b9634b63474
comparison
equal deleted inserted replaced
0:3e2c3e355f94 1:26a2404a2f38
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- MODX by the phpBB MOD Team XSL file v1.2.1 copyright 2005-2008 the phpBB MOD Team.
3 $Id: modx.prosilver.en.xsl 2242 2008-10-06 19:40:58Z paul $ -->
4 <!DOCTYPE xsl:stylesheet[
5 <!ENTITY nbsp "&#160;">
6 ]>
7 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns:mod="http://www.phpbb.com/mods/xml/modx-1.2.1.xsd">
8 <xsl:output method="html" omit-xml-declaration="no" indent="yes" />
9 <xsl:variable name="title" select="mod:mod/mod:header/mod:title" />
10 <xsl:variable name="version">
11 <xsl:for-each select="mod:mod/mod:header/mod:mod-version">
12 <xsl:value-of select="current()" />
13 </xsl:for-each>
14 </xsl:variable>
15 <xsl:template match="mod:mod">
16 <html xmlns="http://www.w3.org/1999/xhtml">
17 <head>
18 <meta http-equiv="Content-Language" content="en" />
19 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
20 <style type="text/css">
21 /* phpBB 3.0 Admin Style Sheet
22 –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
23 Original author: subBlue ( http://www.subblue.com/ )
24 Copyright 2007 phpBB Group ( http://www.phpbb.com/ )
25 –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
26 */
27
28 /* General markup styles
29 ––––––––––––––––––––––––––––––*/
30 * {
31 /* Reset browsers default margin, padding and font sizes */
32 margin:0;
33 padding:0;
34 font-size:100%;
35 }
36
37 body, div, p, th, td, li, dd {
38 font-size:x-small;
39 voice-family:"\"}\"";
40 voice-family:inherit;
41 font-size:100%;
42 }
43
44 html>body, html>div, html>p, html>th, html>td, html>li, html>dd {
45 font-size:small
46 }
47
48 html {
49 color:#536482;
50 background:#DBD7D1;
51 /* Always show a scrollbar for short pages - stops the jump when the scrollbar appears. non-ie browsers */
52 height:100%;
53 margin-bottom:1px;
54 }
55
56 body {
57 /* Text-Sizing with ems:http://www.clagnut.com/blog/348/ */
58 font-family:"Lucida Grande", Verdana, Helvetica, Arial, sans-serif;
59 color:#536482;
60 background:#DBD7D1;
61 font-size:82.5%; /* This sets the default font size to be equivalent to 10px */
62 margin:10px 15px;
63 }
64
65 img {
66 border:0;
67 }
68
69 h1 {
70 font-family:"Trebuchet MS", Helvetica, sans-serif;
71 font-size:1.70em;
72 font-weight:normal;
73 color:#333333;
74 }
75
76 h2, caption {
77 font-family:"Trebuchet MS", Helvetica, sans-serif;
78 font-size:1.40em;
79 font-weight:normal;
80 color:#115098;
81 text-align:left;
82 margin-top:25px;
83 }
84
85 .rtl h2, .rtl caption {
86 text-align:right;
87 }
88
89 h3, h4, h5 {
90 font-family:"Trebuchet MS", Helvetica, sans-serif;
91 font-size:1.20em;
92 text-decoration:none;
93 line-height:1.20em;
94 margin-top:10px;
95 }
96
97 p {
98 margin-bottom:0.7em;
99 line-height:1.40em;
100 font-size:1.0em;
101 }
102
103 ul {
104 list-style:disc;
105 margin:0 0 1em 2em;
106 }
107
108 .rtl ul {
109 margin:0 2em 1em 0;
110 }
111
112 hr {
113 border:0 none;
114 border-top:1px dashed #999999;
115 margin-bottom:5px;
116 padding-bottom:5px;
117 height:1px;
118 }
119
120 .small {
121 font-size:0.85em;
122 }
123
124 /* General links */
125 a:link, a:visited {
126 color:#105289;
127 text-decoration:none;
128 }
129
130 a:link:hover {
131 color:#BC2A4D;
132 text-decoration:underline;
133 }
134
135 a:active {
136 color:#368AD2;
137 text-decoration:none;
138 }
139
140 /* Main blocks
141 ––––––––––––––––––––––––––––––––––––––––*/
142 #wrap {
143 padding:0 0 15px 0;
144 min-width:615px;
145 }
146
147 #page-header {
148 clear:both;
149 text-align:right;
150 background:url(data:image/gif;base64,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) top left no-repeat;
151 height:69px;
152 font-size:0.85em;
153 margin-bottom:10px;
154 }
155
156 .rtl #page-header {
157 text-align:left;
158 background:top right no-repeat;
159 }
160
161 #page-header h1 {
162 color:#767676;
163 font-family:"Trebuchet MS",Helvetica,sans-serif;
164 font-size:1.70em;
165 padding-top:10px;
166 }
167
168 #page-header p {
169 font-size:1.00em;
170 }
171
172 #page-body {
173 clear:both;
174 min-width:700px;
175 }
176
177 #page-footer {
178 clear:both;
179 font-size:0.75em;
180 text-align:center;
181 }
182
183 #content {
184 padding:0px 10px 10px 10px;
185 position:relative;
186 }
187
188 #content h1 {
189 color:#115098;
190 line-height:1.2em;
191 margin-bottom:0px;
192 }
193
194 #main {
195 width:100%;
196 margin:0;
197 min-height:350px;
198 }
199
200 .rtl #main {
201 float:right;
202 margin:0;
203 }
204
205 * html #main {
206 height:350px;
207 }
208
209 /* Main Panel
210 –––––––––––––––––––––––––––––––––––––––– */
211 #acp {
212 margin:4px 0;
213 padding:3px 1px;
214 min-width:550px;
215 background-color:#FFFFFF;
216 border:1px #999999 solid;
217 }
218
219 .panel {
220 background:#F3F3F3 url(data:image/gif;base64,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) repeat-x top;
221 padding:0;
222 }
223
224 span.corners-top, span.corners-bottom, span.corners-top span, span.corners-bottom span {
225 font-size:1px;
226 line-height:1px;
227 display:block;
228 height:5px;
229 background-repeat:no-repeat;
230 }
231
232 span.corners-top, span.corners-bottom {
233 background-image:url(data:image/gif;base64,R0lGODlhiBMMAMQSAP///5mZmfPz89vX0cvIw9zc3PX19bKysqmopvb29pqamvn5+Z2dnLy6t62sqp+fnqCgn/T09P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABIALAAAAACIEwwAAAX/4DAQDhScaKqubOu+cCzPdG3feK7vfO//wKBwSCwaj8ikcslsOp/QqHRKrVqv2Kx2y+16v+CweEwum8/otHrNbrvf8Lh8Tq/b7/i8fs/v+/+AgYKDhIWGh4hSAw0HBREAkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PG7BAoCAAkCEvr7/P3+/wADChxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhT/6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdShJBAQBcw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIizJYYCCx48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6teHToAgHysY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkyuX4Br28ufQo0ufTr269evYs2vfzr279+/gw4sfT7704sbl06tfz769+/fw48ufT7++/fv48+vfzx+vV7D9BSjggAQWaOCBCCao4JmCDDbo4IMQRijhdfTYg8+EGGao4YYcdujhhyCGKOKIJJZo4oko5rVIIwbI4+KLMMYo44w01mjjjTjmqOOOPPbo449ABinkkEQWaeSRSCap5JJMNunkk1BGKeWUVFaZjQgkPJDIllx26eWXYIYp5phklmnmmWimqeaabLbp5ptwxinnnHTWaeedeOap55589unnn4AGKigcIQAAOw==);
234 }
235
236 span.corners-top span, span.corners-bottom span {
237 background-image:url(data:image/gif;base64,R0lGODlhBgAMAMQWAP///9vX0fPz85mZmdzc3Jqamtvb28vIw7y6t62sqsvIxPX19bKysqmop/T09Pb29pycnJ+fnp2dnKCgn/n5+fr6+v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABYALAAAAAAGAAwAAAUs4DAlRxAADsEggfAAQqFYNGA0tLVQUi4AAx8w56hAcraGCyYDLFSsQYRkCgEAOw==);
238 }
239
240 span.corners-top {
241 background-position:0 0;
242 margin:-4px -2px 0;
243 }
244
245 span.corners-top span {
246 background-position:100% 0;
247 }
248
249 span.corners-bottom {
250 background-position:0 100%;
251 margin:0 -2px -4px;
252 clear:both;
253 }
254
255 span.corners-bottom span {
256 background-position:100% 100%;
257 }
258
259 /* General form styles
260 ––––––––––––––––––––––––––––––––––––––––*/
261 fieldset {
262 margin:15px 0;
263 padding:1px;
264 border-top:1px solid #D7D7D7;
265 border-right:1px solid #CCCCCC;
266 border-bottom:1px solid #CCCCCC;
267 border-left:1px solid #D7D7D7;
268 background-color:#FFFFFF;
269 /*position:relative;*/
270 }
271
272 .rtl fieldset {
273 border-top:1px solid #D7D7D7;
274 border-right:1px solid #D7D7D7;
275 border-bottom:1px solid #CCCCCC;
276 border-left:1px solid #CCCCCC;
277 }
278
279 * html fieldset {
280 padding:0 10px 5px 10px;
281 }
282
283 fieldset p {
284 font-size:1.0em;
285 }
286
287 legend {
288 padding:1px 3px;
289 font-family:Tahoma,arial,Verdana,Sans-serif;
290 font-size:1.06em;
291 font-weight:bold;
292 color:#115098;
293 /* position:relative;*/
294 text-transform:capitalize;
295 line-height:1.00em;
296 top:0em;
297 vertical-align:middle;
298 }
299
300 /* Hide from macIE \*/
301 legend { top:-1.2em; }
302 /* end */
303
304 * html legend {
305 margin-bottom:-10px;
306 margin-left:-7px;
307 }
308
309 /* Holly hack, .rtl comes after html */
310 * html .rtl legend {
311 margin:0;
312 margin-right:-7px;
313 }
314
315 optgroup, select {
316 font-family: Verdana, Helvetica, Arial, sans-serif;
317 font-size: 0.85em;
318 font-weight: normal;
319 font-style: normal;
320 cursor: pointer;
321 vertical-align: middle;
322 width: auto;
323 }
324
325 optgroup {
326 font-size: 1.00em;
327 font-weight: bold;
328 }
329
330 option {
331 padding:0 1em 0 0;
332 }
333
334 .rtl option {
335 padding:0 0 0 1em;
336 }
337
338 fieldset.nobg {
339 margin:15px 0 0 0;
340 padding:0;
341 border:none;
342 background-color:transparent;
343 }
344
345 /* MOD-ABOUT STUFFS ~smithy_dll */
346
347 .mod-about {
348 background-color:#CADCEB;
349 /*width:100%;*/
350 }
351
352 .mod-about span.corners-top, .mod-about span.corners-bottom, .mod-about span.corners-top span, .mod-about span.corners-bottom span {
353 font-size:1px;
354 line-height:1px;
355 display:block;
356 height:5px;
357 background-repeat:no-repeat;
358 }
359
360 .mod-about span.corners-top, .mod-about span.corners-bottom {
361 background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAMCAYAAABBV8wuAAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABVSURBVHjaYviPAD+BeDIQ2wMxGwNU8AkQGwAxAwwzQFXqIgvCJCajC8IkbLBJMIItYmD4xYAGmBhwAJCEMS6JcKxa8DkX5kFdbBKwIJkADRIGgAADAGtyotIvyqGpAAAAAElFTkSuQmCC);
362 }
363
364 .mod-about span.corners-top span, .mod-about span.corners-bottom span {
365 background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAMCAYAAABBV8wuAAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABbSURBVHjaYvr//z8bENsD8WQg/vkfChjQsAEQPwFJMDGgggtA7AnEv9AlQOAyEM/CJgECK3FJnMIlwYZLQheXRDg2CV0gzmTCIrgd2Q4bIJ4AxGeAWBokABBgAE4XMoXm9S+UAAAAAElFTkSuQmCC);
366 }
367
368 .mod-about span.corners-top {
369 background-position:0 0;
370 margin:0 0;
371 }
372
373 .mod-about span.corners-top span {
374 background-position:100% 0;
375 }
376
377 .mod-about span.corners-bottom {
378 background-position:0 100%;
379 margin:0 0;
380 clear:both;
381 }
382
383 .mod-about span.corners-bottom span {
384 background-position:100% 100%;
385 }
386
387 .mod-about-padding { 0px 8px; }
388 .mod-about { margin:10px 4px; }
389 .mod-about dt { font-weight:bold; padding-right:4px; }
390 .mod-about dl { margin:0px 8px; }
391 .mod-about div { margin:3px 8px; }
392 /*div.inner .mod-about dl { margin:0px 0px; }*/
393 /*.nopadding { margin:0px 0px; }*/
394
395 .mod-history {font-size:82.5%; } /* Mod histories can get pretty long, so I'm making that font a bit smaller */
396 #language { width:130px; }
397 #modDisclaimer .mod-about, #other-notes.mod-about { background-color:#EECCCC; }
398 #other-notes.mod-about strong.red { color:#DD3333; }
399 span.key { font-size:12px; line-height:14px; padding-bottom:2px; width:20px; border:outset 2px #999999; background-color:#EEEECC; display:block; float:left; text-align:center; margin-right:5px; }
400 .mod-edit { background-color:#D6E6F6; border:solid 1px #336699; margin:10px 0; padding:0 10px; }
401 .mod-inlineedit { background-color:#DDEEFF; border:solid 1px #6699CC; margin:10px 0; padding:0 10px; }
402
403 dl.author-info dd { margin-left:100px; margin-bottom:8px; }
404 ol#file-copy { padding:5px; margin-left:20px; margin-bottom:10px; }
405 ol#file-copy li { margin-left:30px; vertical-align:top;}
406 ol#file-copy span { font-weight:bold; }
407 ol#file-copy dt {margin-right:5px; float:none !important }
408 ol#file-copy dl {width:100%}
409 h2#lang-fca, h2#lang-edts, h2#lang-diy, h2#lang-sql { margin-left:5px; }
410
411 /* Code block */
412 div.codebox {
413 padding:3px;
414 background-color:#FFFFFF;
415 border:1px solid #d8d8d8;
416 font-size:1em;
417 }
418
419 div.codebox div.codeHead {
420 text-transform:uppercase;
421 border-bottom:1px solid #CCCCCC;
422 margin-bottom:3px;
423 font-size:0.8em;
424 font-weight:bold;
425 display:block;
426 }
427
428 div.codebox div.codeHead a.codeSelect {
429 padding-left:5px;
430 }
431
432 blockquote div.codebox {
433 margin-left:0;
434 }
435
436 div.codebox pre {
437 /* Also see tweaks.css */
438 width:100%;
439 overflow-x:scroll;
440 display:block;
441 height:auto;
442 max-height:200px;
443 /*white-space:normal;*/
444 padding-top:5px;
445 font:0.9em Monaco, "Andale Mono","Courier New", Courier, mono;
446 line-height:1.3em;
447 color:#606060;
448 margin:2px 0;
449 }
450
451 dt {
452 float:left;
453 width:auto;
454 }
455
456 .rtl dt {
457 float:right;
458 }
459
460 dd {color:#666666;}
461 dd + dd {padding-top:5px;}
462 dt span {padding:0 5px 0 0;}
463 .rtl dt span {padding:0 0 0 5px;}
464 div.endMOD {padding:0 5px;}
465
466 #history_toggle_link {
467 display:block;
468 }
469 .edit_toggle_link {
470 display:block;
471 text-align:right;
472 margin-bottom:2px;
473 }
474 </style>
475 <title>phpBB MOD &#187; <xsl:value-of select="$title" /></title>
476 <script type="text/javascript">
477 var i = 0;
478
479 /* passed from xslt */
480 <xsl:for-each select="mod:header">
481 <xsl:for-each select="mod:author-group">
482 var authors_ll = [];
483 <xsl:for-each select="mod:author">
484 authors_ll.push('<xsl:value-of select="generate-id()"/>');
485 </xsl:for-each>
486 </xsl:for-each>
487
488 var mhes_ll = [];
489 var mhcls_ll = [];
490 <xsl:for-each select="mod:history/mod:entry">
491 mhes_ll.push('<xsl:value-of select="generate-id()"/>');
492 <xsl:if test="count(mod:changelog) > 1">
493 mhcls_ll.push('<xsl:value-of select="generate-id()"/>');
494 </xsl:if>
495 </xsl:for-each>
496 </xsl:for-each>
497
498 var opens_ll = [];
499 <xsl:for-each select="mod:action-group/mod:open">
500 opens_ll.push('<xsl:value-of select="generate-id()"/>');
501 </xsl:for-each>
502
503 var codes_ll = [];
504 <xsl:for-each select="mod:action-group/mod:sql">
505 codes_ll.push('<xsl:value-of select="generate-id()"/>');
506 </xsl:for-each>
507
508 var edits_ll = [];
509 <xsl:for-each select="mod:action-group/mod:open/mod:edit">
510 edits_ll.push('<xsl:value-of select="generate-id()"/>');
511 </xsl:for-each>
512
513 var finds_ll = [];
514 var regex_ll = [];
515 var ifinds_ll = [];
516 var iregex_ll = [];
517 var addafters_ll = [];
518 var iaddafters_ll = [];
519 var addbefores_ll = [];
520 var iaddbefores_ll = [];
521 var replacewiths_ll = [];
522 var ireplacewiths_ll = [];
523 var increments_ll = [];
524 var iincrements_ll = [];
525 var comments_ll = [];
526 <xsl:for-each select="mod:action-group/mod:open/mod:edit">
527 <xsl:for-each select="mod:find">
528 finds_ll.push('<xsl:value-of select="generate-id()"/>');
529 </xsl:for-each>
530 <xsl:if test="count(mod:comment) > 0">
531 comments_ll.push('<xsl:value-of select="generate-id()"/>');
532 </xsl:if>
533 <xsl:for-each select="mod:find|mod:action">
534 codes_ll.push('<xsl:value-of select="generate-id()"/>');
535 <xsl:if test="name() = 'action'">
536 <xsl:if test="@type = 'after-add'">
537 addafters_ll.push('<xsl:value-of select="generate-id()"/>');
538 </xsl:if>
539 <xsl:if test="@type = 'before-add'">
540 addbefores_ll.push('<xsl:value-of select="generate-id()"/>');
541 </xsl:if>
542 <xsl:if test="@type = 'replace-with'">
543 replacewiths_ll.push('<xsl:value-of select="generate-id()"/>');
544 </xsl:if>
545 <xsl:if test="@type = 'operation'">
546 increments_ll.push('<xsl:value-of select="generate-id()"/>');
547 </xsl:if>
548 </xsl:if>
549 </xsl:for-each>
550 <xsl:for-each select="mod:inline-edit">
551 <xsl:for-each select="mod:inline-find">
552 ifinds_ll.push('<xsl:value-of select="generate-id()"/>');
553 <xsl:if test="@type = 'regex'">
554 iregex_ll.push('<xsl:value-of select="generate-id()"/>');
555 </xsl:if>
556 </xsl:for-each>
557 <xsl:for-each select="mod:inline-find|mod:inline-action">
558 codes_ll.push('<xsl:value-of select="generate-id()"/>');
559 <xsl:if test="name() = 'inline-action'">
560 <xsl:if test="@type = 'after-add'">
561 iaddafters_ll.push('<xsl:value-of select="generate-id()"/>');
562 </xsl:if>
563 <xsl:if test="@type = 'before-add'">
564 iaddbefores_ll.push('<xsl:value-of select="generate-id()"/>');
565 </xsl:if>
566 <xsl:if test="@type = 'replace-with'">
567 ireplacewiths_ll.push('<xsl:value-of select="generate-id()"/>');
568 </xsl:if>
569 <xsl:if test="@type = 'operation'">
570 iincrements_ll.push('<xsl:value-of select="generate-id()"/>');
571 </xsl:if>
572 </xsl:if>
573 </xsl:for-each>
574 </xsl:for-each>
575 </xsl:for-each>
576
577 <xsl:for-each select="mod:action-group/mod:diy-instructions">
578 codes_ll.push('<xsl:value-of select="generate-id()"/>');
579 </xsl:for-each>
580
581 var copies_ll = [];
582 <xsl:for-each select="mod:action-group/mod:copy/mod:file">
583 copies_ll.push('<xsl:value-of select="generate-id()"/>');
584 </xsl:for-each>
585
586 <xsl:text disable-output-escaping="yes">
587 <![CDATA[
588 // The following line from http://www.ryancooper.com/resources/keycode.asp
589 document.onkeydown = mod_do_keypress;
590
591 var host = "http://www.phpbb.com/mods/modx/i18n/";
592
593 var enStrings = "h1=Installation Instructions for\n" +
594 "edt-show=Show&nbsp;&gt;&gt;\n" +
595 "edt-hide=&lt;&lt;&nbsp;Hide\n" +
596 "V=Version\n" +
597 "t=Title:\n" +
598 "d=Description:\n" +
599 "aV=Version:\n" +
600 "mint=minutes\n" +
601 "it=Installation Time:\n" +
602 "il=Installation Level:\n" +
603 "ile=Easy\n" +
604 "ili=Intermediate\n" +
605 "ila=Advanced\n" +
606 "au=Author\n" +
607 "aus=Authors\n" +
608 "a-un=Username:\n" +
609 "a-e=Email:\n" +
610 "a-n=Name:\n" +
611 "a-h=WWW:\n" +
612 "fte=Files to Edit\n" +
613 "icf=Included Files\n" +
614 "icfn=No files have been included with this MOD.\n" +
615 "dcl=Disclaimer\n" +
616 "dclt=For security purposes, please check: <a href=\"http://www.phpbb.com/mods/\">http://www.phpbb.com/mods/</a> for the latest version of this MOD. Downloading this MOD from other sites could cause malicious code to enter into your phpBB Forum. As such, phpBB will not offer support for MODs not offered in our MODs database, located at: <a href=\"http://www.phpbb.com/mods/\">http://www.phpbb.com/mods/</a>\n" +
617 "isp=English Support\n" +
618 "ispt=English support can be obtained at <a href=\"http://www.phpbb.com/mods/\">http://www.phpbb.com/mods/</a> for released MODs.\n" +
619 "ant=Author Notes:\n" +
620 "lic=License\n" +
621 "lict=This MOD has been licensed under the following license:\n" +
622 "ont=Other Notes\n" +
623 "ontt1=Before adding this MOD to your forum, you should back up all files related to this MOD.\n" +
624 "ontt2=This MOD was designed for phpBB\n" +
625 "ontt3=and may not function as stated on other phpBB versions. MODs for phpBB 3.0 will <strong>not</strong> work on phpBB 2.0 and vice versa.\n" +
626 "onttq=This MOD is development quality. It is not recommended that you install it on a live forum.\n" +
627 "sql=SQL\n" +
628 "fca=File Copy\n" +
629 "c-copy=Copy:\n" +
630 "c-to=To:\n" +
631 "cde-c=Code:\n" +
632 "cde-sa=Select All\n" +
633 "edts=Edits\n" +
634 "edtt=Use your keyboard to navigate the code boxes. You may also hit '<em>s</em>' on your keyboard to go to the first code box.\n" +
635 "opn=Open:\n" +
636 "cm-cmt=Comments\n" +
637 "fnd=Find\n" +
638 "fndt=<strong>Tip:</strong> This may be a partial find and not the whole line.\n" +
639 "rplw=Replace With\n" +
640 "rplwt=<strong>Tip:</strong> Replace the preceding line(s) to find with the following lines.\n" +
641 "aft=Add after\n" +
642 "aftt=<strong>Tip:</strong> Add these lines on a new blank line after the preceding line(s) to find.\n" +
643 "bef=Add before\n" +
644 "beft=<strong>Tip:</strong> Add these lines on a new blank line before the preceding line(s) to find.\n" +
645 "inc=Increment\n" +
646 "inct=<strong>Tip:</strong> This allows you to alter integers. For help on what each operator means, click here.\n" +
647 "ifnd=In-line Find\n" +
648 "ifndt=<strong>Tip:</strong> This is a partial match of a line for in-line operations.\n" +
649 "irplw=In-line Replace With\n" +
650 "irplwt=\n" +
651 "iaft=In-line Add after\n" +
652 "iaftt=\n" +
653 "ibef=In-line Add before\n" +
654 "ibeft=\n" +
655 "iinc=In-line Increment\n" +
656 "iinct=<strong>Tip:</strong> This allows you to alter integers. For help on what each operator means, click here.\n" +
657 "diy=DIY Instructions\n" +
658 "diyt=These are manual instructions that cannot be performed automatically. You should follow these instructions carefully.\n" +
659 "eom=Save all files. End of MOD.\n" +
660 "eomt=You have finished the installation for this MOD. Upload all changed files to your website. If the installation went bad, simply restore your backed up files.\n" +
661 "slg=Select Language:\n" +
662 "dbms=Select Database Type:\n" +
663 "foot=MOD UA XSLT File Copyright &#169; 2007 The phpBB Group, this MOD is copyright to the authors listed above.\n" +
664 "regex=This find contains an advanced feature known as regular expressions, click here to learn more.\n" +
665 "mhe-v=- Version\n" +
666 "mh=MOD History\n" +
667 "addtl-modx=Additional MODX Files\n" +
668 "imn=This MOD has no additional MODX files.\n"+
669 "atm=About this MOD";
670
671 var box = codes_ll;
672 var currentLanguage = "en";
673 var languagesLoaded = false;
674 var languages = ['en'];
675 var arrClasCnt = [
676 ['a-' , authors_ll ],
677 ['c-' , copies_ll ],
678 ['cm-' , comments_ll ],
679 ['opn' , opens_ll ],
680 ['cde-' , codes_ll ],
681 ['edt-' , edits_ll ],
682 ['fnd' , finds_ll ],
683 ['regex', regex_ll ],
684 ['rplw' , replacewiths_ll ],
685 ['aft' , addafters_ll ],
686 ['bef' , addbefores_ll ],
687 ['inc' , increments_ll ],
688 ['ifnd' , ifinds_ll ],
689 ['regex', iregex_ll ],
690 ['irplw', ireplacewiths_ll ],
691 ['iaft' , iaddafters_ll ],
692 ['ibef' , iaddbefores_ll ],
693 ['iinc' , iincrements_ll ],
694 ['mhe' , mhes_ll ]
695 ];
696
697 function startup()
698 {
699 sql_dropdown();
700 change_dbms();
701 changeLanguage(currentLanguage);
702 document.getElementById('lang-selector').style.display = "block";
703 init_mod_history();
704 }
705
706 function changeLanguage(langCode)
707 {
708 langCode = langCode.toLowerCase();
709 currentLanguage = langCode.split('-')[0];
710 if (currentLanguage.toLowerCase() != 'en') // if change, only include up to first dash
711 {
712 load_language();
713 }
714 else
715 {
716 applyLanguage(enStrings.split("\n"));
717 }
718 xslLanguage(langCode);
719 }
720
721 function load_languages()
722 {
723 if (languagesLoaded)
724 {
725 return;
726 }
727 languagesLoaded = true;
728
729 $divname = document.getElementById('language');
730 var loadingItem = document.createElement('option');
731 $divname.appendChild(loadingItem);
732 loadingItem.innerHTML = 'Loading...';
733 $divname.remove(0);
734
735 $output = 'load_languages';
736 cachernd = parseInt(Math.random() * 99999999); // cache
737 send('', host + 'languages.txt?rnd=' + cachernd);
738 }
739
740 function load_language()
741 {
742 $output = 'load_language';
743 cachernd = parseInt(Math.random() * 99999999); // cache
744 send('', host + currentLanguage + '.txt?rnd=' + cachernd);
745 }
746
747 /*****************
748 * AJAX Functions *
749 *****************/
750 var $xmlhttp = http_object();
751 var $finished = 0;
752 var $send_queue = [];
753 var $running = false;
754 var $divname;
755 var $newform;
756 var $newurl;
757 var $output;
758
759 function http_object()
760 {
761 if (window.XMLHttpRequest)
762 {
763 return new XMLHttpRequest();
764 }
765 else if (window.ActiveXObject)
766 {
767 return new ActiveXObject("Microsoft.XMLHTTP");
768 }
769 }
770
771 function send($action, $url, $form, $div, $clear)
772 {
773 $newform = $form;
774 $newurl = $url;
775
776 $send_queue.push("handle_send($newurl, $newform)");
777
778 if (!$running)
779 {
780 run_ajax();
781 }
782 return;
783 }
784
785 function run_ajax()
786 {
787 $running = true;
788 for ($i = 0; $i < $send_queue.length; $i++)
789 {
790 if ($xmlhttp.readyState == 4 || $xmlhttp.readyState == 0)
791 {
792 eval($send_queue[$i]);
793 }
794 else
795 {
796 $xmlhttp.onreadystatechange = check_state;
797 }
798 }
799 }
800
801 function check_state()
802 {
803 if ($xmlhttp.readyState == 4 || $xmlhtt.readyState == 0)
804 {
805 eval($send_queue[$finished]);
806 }
807 else
808 {
809 $xmlhttp.onreadystatechange = check_state;
810 }
811 }
812
813 function handle_send($url, $f)
814 {
815 if ($xmlhttp.readyState == 4 || $xmlhttp.readyState == 0)
816 {
817 $param = '';
818
819 try
820 {
821 netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
822 $allowed = true;
823 }
824 catch (e)
825 {}
826
827 try
828 {
829 $xmlhttp.open('POST', $url, true);
830 $xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
831 $xmlhttp.onreadystatechange = handle_return;
832 $xmlhttp.send($param);
833 }
834 catch (e)
835 {
836 $divname = document.getElementById('language');
837 var loadingItem = document.createElement('option');
838 $divname.appendChild(loadingItem);
839 loadingItem.innerHTML = 'Unavailable';
840 $divname.remove(0);
841 $divname.disabled = true;
842 }
843 }
844 return;
845 }
846
847 function handle_return()
848 {
849 if ($xmlhttp.readyState == 4)
850 {
851 ajax_output($xmlhttp.responseText);
852
853 $finished++;
854
855 if ($send_queue[$finished])
856 {
857 check_state();
858 }
859 else
860 {
861 $send_queue = [];
862 $finished = 0;
863 $running = false;
864 }
865 }
866 return;
867 }
868 /*********************
869 * END AJAX Functions *
870 *********************/
871
872 function ajax_output($response)
873 {
874 switch ($output)
875 {
876 case 'load_language':
877 var texts = $response.replace("\r\n", "\n").split("\n");
878 applyLanguage(texts);
879 break;
880
881 case 'load_languages':
882 languages = $response.replace("\r", "").split("\n");
883
884 var i, l, s = 0;
885 for (i in languages)
886 {
887 languages[i] = languages[i].replace("\r", "");
888 languages[i] = languages[i].split("=");
889
890 var langItem = document.createElement('option');
891 $divname.appendChild(langItem);
892 langItem.value = languages[i][0];
893 var iso = languages[i][0].split('-');
894 langItem.innerHTML = languages[i][1];
895 if (iso.length == 2)
896 {
897 langItem.innerHTML += ' [' + iso[1].toUpperCase() + ']';
898 }
899 if (languages[i][0] == currentLanguage)
900 {
901 $divname.selectedIndex = s;
902 $divname.text = languages[i][1];
903 }
904 s++;
905 }
906
907 $divname.focus();
908 $divname.onchange =
909 function()
910 {
911 changeLanguage(this.value.replace(" ", ""));
912 };
913 $divname.remove(0);
914 break;
915 }
916 }
917
918 function xslLangEl(langCode, obj_id)
919 {
920 var i, c, a, k, m = [], show = [], o = document.getElementById(obj_id);
921 var lang_c = langCode.replace('_','-'), lang_s = langCode.substr(0, 2);
922 var nodes = (o && o.childNodes) ? o.childNodes : '';
923
924 for (i = 0; i < nodes.length; i++)
925 {
926 c = nodes[i];
927 if (c.nodeType != 1)
928 {
929 continue;
930 }
931 a = (obj_id == 'link-group') ? c.getElementsByTagName('a') : null;
932 k = (a && a[0].href) ? a[0].href : c.tagName;
933 if (!c.lang || m[k] === true)
934 {
935 c.style.display = 'none';
936 continue;
937 }
938 c.lang = c.lang.replace('_', '-').toLowerCase();
939
940 if (m[k]) // Already have a partial match
941 {
942 if (c.lang != lang_c) // This isn't an exact match
943 {
944 c.style.display = 'none'; // So hide it and keep looking
945 continue;
946 }
947 m[k] = true; // An exact match
948 }
949 else
950 {
951 m[k] = (c.lang == lang_c) ? true : (c.lang.substr(0, 2) == lang_s ? 1 : false);
952 }
953 if (!show[k] || m[k] || c.lang == 'en')
954 {
955 if (show[k])
956 {
957 show[k].style.display = 'none';
958 }
959 show[k] = c;
960 c.style.display = '';
961 if (a)
962 {
963 c.getElementsByTagName('span')[0].style.display = 'none';
964 //c.firstChild.style.display = 'none'; // This line doesn't work in Safari
965 }
966 }
967 else
968 {
969 c.style.display = 'none';
970 }
971 }
972 }
973
974 function xslLanguage(langCode)
975 {
976 i18nedEls = new Array('title','description','author-notes','diy','link-group');
977 var c, h, i;
978 for (c in comments_ll)
979 {
980 i18nedEls.push('mod-comment[' + comments_ll[c] + ']');
981 }
982
983 for (h in mhcls_ll)
984 {
985 i18nedEls.push('mhcl[' + mhcls_ll[h] + ']');
986 }
987
988 for (i in i18nedEls)
989 {
990 xslLangEl(langCode, i18nedEls[i]);
991 }
992 }
993
994 function in_array(array, value, position)
995 {
996 for (var i = 0; i < array.length; i++)
997 {
998 // Matches identical (===), not just similar (==).
999 if (array[i] === value)
1000 {
1001 return (position ? i : true);
1002 }
1003 }
1004 return false;
1005 };
1006
1007 function applyLanguage(texts)
1008 {
1009 var i;
1010 for (i in texts)
1011 {
1012 var lang = texts[i].split("=", 2), done = 0;
1013 if (lang.length == 2 && (lang[0] == 'edt-show' || lang[0] == 'edt-hide'))
1014 {
1015 toggle_strings[lang[0].replace('edt-', '')] = lang[1];
1016 if (++done >= 2)
1017 {
1018 break;
1019 }
1020 }
1021 }
1022
1023 for (i in texts)
1024 {
1025 var lang = texts[i].split("=");
1026 if (lang.length < 2)
1027 {
1028 continue;
1029 }
1030 try
1031 {
1032 var jflag = false;
1033 for (var j = 0; j < arrClasCnt.length; j++)
1034 {
1035 var sw = '-' + lang[0];
1036 if (sw.match('-' + arrClasCnt[j][0]))
1037 {
1038 for (var k = 0; k < arrClasCnt[j][1].length; k++)
1039 {
1040 try
1041 {
1042 var o = document.getElementById('lang-' + lang[0] + '[' + arrClasCnt[j][1][k] + ']');
1043 o.innerHTML = lang[1];
1044 if (o.rel && (o.rel == 'show' || o.rel == 'hide') && (lang[0] == 'edt-show' || lang[0] == 'edt-hide'))
1045 {
1046 o.innerHTML = toggle_strings[o.rel];
1047 }
1048 }
1049 catch (e){}
1050 }
1051 jflag = true;
1052 }
1053 }
1054 if (!jflag)
1055 {
1056 var append = '';
1057 for (var p = 1; p < lang.length; p++)
1058 {
1059 append += (p > 1 ? '=' : '') + lang[p];
1060 }
1061 document.getElementById('lang-' + lang[0]).innerHTML = append;
1062 }
1063 }
1064 catch (o){}
1065 }
1066 try
1067 {
1068 document.getElementById('history_toggle_link').innerHTML = toggle_strings[(document.getElementById('mod_history_content').style.display == '' ? 'hide' : 'show')];
1069 } catch(o) {}
1070 }
1071
1072 function select_code(a)
1073 {
1074 // Get ID of code block
1075 var e = a.parentNode.parentNode.getElementsByTagName('PRE')[0];
1076 select_text(e.id);
1077 }
1078
1079 var selectedElement = -1;
1080 var boxes = box.length;
1081 var pre_count = 0;
1082
1083 function select_text(id)
1084 {
1085 var o = document.getElementById(id);
1086 if(!o)
1087 {
1088 return;
1089 }
1090
1091 // Not IE
1092 if (window.getSelection)
1093 {
1094 var s = window.getSelection();
1095 // Safari
1096 if (s.setBaseAndExtent)
1097 {
1098 s.setBaseAndExtent(o, 0, o, o.innerText.length - 1);
1099 }
1100 // Firefox and Opera
1101 else
1102 {
1103 var r = document.createRange();
1104 r.selectNodeContents(o);
1105 s.removeAllRanges();
1106 s.addRange(r);
1107 }
1108 }
1109 // Some older browsers
1110 else if (document.getSelection)
1111 {
1112 var s = document.getSelection();
1113 var r = document.createRange();
1114 r.selectNodeContents(o);
1115 s.removeAllRanges();
1116 s.addRange(r);
1117 }
1118 // IE
1119 else if (document.selection)
1120 {
1121 var r = document.body.createTextRange();
1122 r.moveToElementText(o);
1123 r.select();
1124 }
1125
1126 for(x = 0; x < box.length; x++)
1127 {
1128 if (box[x] == id)
1129 {
1130 selectedElement = x;
1131 break;
1132 }
1133 }
1134 return o;
1135 }
1136
1137 /**
1138 * Determines if an object is hidden. If a class is specified, checking will stop when that class is encountered.
1139 */
1140 function is_hidden(o, className)
1141 {
1142 o = typeof(o) == 'String' ? document.getElementById(o) : o;
1143 while (o)
1144 {
1145 if (o.style && o.style.display == 'none')
1146 {
1147 return true;
1148 }
1149 o = (o.parentNode && !(className && o.className == className)) ? o.parentNode : null;
1150 }
1151 return false;
1152 }
1153
1154 // function findPosY taken from http://www.quirksmode.org/js/findpos.html
1155 function findPosY(obj)
1156 {
1157 var curtop = 0;
1158 if (obj.offsetParent)
1159 {
1160 while (obj.offsetParent)
1161 {
1162 curtop += obj.offsetTop
1163 obj = obj.offsetParent;
1164 }
1165 }
1166 else if (obj.y)
1167 {
1168 curtop += obj.y;
1169 }
1170 return curtop;
1171 }
1172
1173 function selectBox()
1174 {
1175 obj = select_text(box[selectedElement]);
1176 window.scrollTo(0, findPosY(obj) - 100);
1177 }
1178
1179 function selectNextBox()
1180 {
1181 // Find the next box that is not hidden
1182 for (var i = 0; i < boxes; i++)
1183 {
1184 selectedElement = (selectedElement + 1 >= boxes) ? 0 : selectedElement + 1;
1185 if (!is_hidden(document.getElementById(box[selectedElement]), 'mod-edit-contents'))
1186 {
1187 break;
1188 }
1189 }
1190 selectBox();
1191 }
1192
1193 function selectPrevBox()
1194 {
1195 // Find the previos box that is not hidden
1196 for (var i = 0; i < boxes; i++)
1197 {
1198 selectedElement = (selectedElement - 1 < 0) ? boxes - 1 : selectedElement - 1;
1199 if (!is_hidden(document.getElementById(box[selectedElement]), 'mod-edit-contents'))
1200 {
1201 break;
1202 }
1203 }
1204 selectBox();
1205 }
1206
1207 function selectFirstBox()
1208 {
1209 // Find the first box that is not hidden
1210 for (selectedElement = 0; selectedElement < boxes; selectedElement++)
1211 {
1212 if (!is_hidden(document.getElementById(box[selectedElement]), 'mod-edit-contents'))
1213 {
1214 break;
1215 }
1216 }
1217 selectBox();
1218 }
1219
1220 function mod_do_keypress(e)
1221 {
1222 var key = (window.event && !window.event.ctrlKey) ? window.event.keyCode : ((e && !e.ctrlKey) ? e.which : null);
1223
1224 switch (key)
1225 {
1226 case 88: // X
1227 case 187: // plus (+)
1228 case 190: // period/greater-than (.>)
1229 selectNextBox();
1230 return false;
1231 break;
1232
1233 case 87: // W
1234 case 189: // minus (-)
1235 case 188: // comma/less-than (,<)
1236 selectPrevBox();
1237 return false;
1238 break;
1239
1240 case 83: // S
1241 case 37:
1242 selectFirstBox();
1243 return false;
1244 break;
1245 }
1246 return true; // true allows browser to take care of any further key press combinations such as (ctrl|cmd) + c
1247 }
1248
1249 /**
1250 * Update the MODX with the selected dbms
1251 *
1252 */
1253 function change_dbms($form)
1254 {
1255 $type = [
1256 '',
1257 'mysql',
1258 'mysql_41',
1259 'mysql_40',
1260 'firebird',
1261 'mssql',
1262 'oracle',
1263 'postgres',
1264 'sqllite'
1265 ];
1266 $exists = 0;
1267 $tags = document.getElementsByTagName('dbms');
1268
1269 if ($form)
1270 {
1271 sql_display($form.value);
1272 return;
1273 }
1274
1275 if ($tags.length > 0)
1276 {
1277 for ($i = 0; $i < $tags.length; $i++)
1278 {
1279 if (!($dbms = $tags[$i].attributes['type'].nodeValue))
1280 {
1281 continue;
1282 }
1283 $position = in_array($type, $dbms, true);
1284 if ($position !== false)
1285 {
1286 $exists = (($exists > 0 && $position < $exists) || $exists == 0) ? $position : $exists;
1287 }
1288 }
1289 if ($exists > 0)
1290 {
1291 sql_display($type[$exists]);
1292 }
1293 }
1294 }
1295
1296 /**
1297 * Display the dbms specific sql data with the dbms we have selected
1298 */
1299 function sql_display($value)
1300 {
1301 $tags = document.getElementsByTagName('dbms');
1302
1303 // show the dbms of type we have selected, hide all others except for non dbms specific
1304 for ($i = 0; $i < $tags.length; $i++)
1305 {
1306 if (!($dbms = $tags[$i].attributes['type'].nodeValue))
1307 {
1308 continue;
1309 }
1310 $tags[$i].style.display = ($dbms == $value) ? '' : 'none';
1311 }
1312 }
1313
1314 /**
1315 * Load the sql dropdown with all the database types supported by this MODX file
1316 */
1317 function sql_dropdown()
1318 {
1319 var $dbms_element = document.getElementById('dbms');
1320 var $dbms_selector = document.getElementById('dbms-selector');
1321 if (!$dbms_element || !$dbms_selector)
1322 {
1323 return;
1324 }
1325
1326 $type = [
1327 'mysql',
1328 'mysql_41',
1329 'mysql_40',
1330 'firebird',
1331 'mssql',
1332 'oracle',
1333 'postgres',
1334 'sqllite'
1335 ];
1336 $options = [];
1337 $tags = document.getElementsByTagName('dbms');
1338
1339 // Show the dbms of type we have selected, hide all others except for non dbms specific
1340 for ($i = 0; $i < $tags.length; $i++)
1341 {
1342 if (!($dbms = $tags[$i].attributes['type'].nodeValue))
1343 {
1344 continue;
1345 }
1346 if (($position = in_array($type, $dbms, true)) !== false)
1347 {
1348 $options[$position] = '<option value=' + $dbms + '>' + $dbms + '</option>';
1349 }
1350 }
1351
1352 if ($options.length > 0)
1353 {
1354 $selects = '';
1355
1356 // sort options and output in the correct order
1357 for ($i = 0; $i < $type.length; $i++)
1358 {
1359 if ($options[$i])
1360 {
1361 $selects += $options[$i];
1362 }
1363 }
1364 $dbms_element.innerHTML = $selects;
1365 }
1366 else
1367 {
1368 $dbms_selector.style.display = 'none';
1369 }
1370 }
1371 //-->]]>
1372 </xsl:text>
1373 /**
1374 * Toggle the visibility of certain sections.
1375 */
1376 var toggle_strings = {
1377 'show' : (enStrings.match(/^|\n(?:edt-show=)([^\n]*)\n|$/))[1],
1378 'hide' : (enStrings.match(/^|\n(?:edt-hide=)([^\n]*)\n|$/))[1]
1379 }
1380 function init_mod_history()
1381 {
1382 <xsl:if test="count(mod:header/mod:history/mod:entry) > 1">
1383 document.getElementById('mod_history_content').style.display = 'none';
1384 document.getElementById('history_toggle_area').style.display = '';
1385 document.getElementById('history_toggle_link').innerHTML = toggle_strings['show'];
1386 </xsl:if>
1387 }
1388
1389 function toggle_display(o, n)
1390 {
1391 var v = o.rel == 'hide';
1392 n.style.display = n.style.display == '' ? 'none' : '';
1393 o.rel = v ? 'show' : 'hide';
1394 o.innerHTML = toggle_strings[o.rel];
1395 if (o.id.indexOf('lang-edt-') == 0)
1396 {
1397 o.style.textAlign = v ? 'left' : 'right';
1398 }
1399 return false;
1400 }
1401
1402 function toggle_history(o)
1403 {
1404 return toggle_display(o, document.getElementById("mod_history_content"));
1405 }
1406
1407 function toggle_edit(o)
1408 {
1409 var s = o.previousSibling;
1410 while (s.nodeType != 1)
1411 {
1412 s = s.previousSibling;
1413 }
1414 return toggle_display(o, s);
1415 }
1416 </script>
1417 </head>
1418 <body class="ltr" onload="startup()">
1419 <div id="debug"></div>
1420 <div id="wrap">
1421 <div id="page-header">
1422 <h1><span id="lang-h1">Installation Instructions for</span> '<xsl:value-of select="$title" />' <span id="lang-V">Version</span>&nbsp;<xsl:value-of select="$version" /></h1>
1423 <form method="post" action="" id="lang-selector" style="display: none;">
1424 <fieldset class="nobg">
1425 <label for="language"><span id="lang-slg">Select Language:</span></label>&nbsp;<select id="language" name="language" onclick="load_languages()"><option value="en" selected="selected">English</option></select>
1426 </fieldset>
1427 </form>
1428 </div>
1429 <div id="page-body">
1430 <div id="acp">
1431 <div class="panel"><span class="corners-top"><span></span></span>
1432 <div id="content">
1433 <div id="main">
1434 <xsl:for-each select="mod:header">
1435 <xsl:call-template name="give-header"></xsl:call-template>
1436 </xsl:for-each>
1437 <hr />
1438 <div class="permissions" id="Fieldset1">
1439 <xsl:for-each select="mod:action-group">
1440 <xsl:call-template name="give-actions"></xsl:call-template>
1441 </xsl:for-each>
1442 <hr style="margin-bottom:0;" />
1443 <div class="endMOD">
1444 <h2 id="lang-eom">Save all files. End of MOD.</h2>
1445 <p id="lang-eomt">You have finished the installation for this MOD. Upload all changed files to your website. If the installation went bad, simply restore your backed up files.</p>
1446 </div>
1447 </div>
1448 </div>
1449 </div>
1450 <span class="corners-bottom"><span></span></span></div>
1451 </div>
1452 </div>
1453 <div id="page-footer">
1454 <p class="copyright" style="text-align: center; font-size: 10px;" id="lang-foot">MOD UA XSLT File Copyright &#169; 2008 The phpBB Group. This MOD is copyright to the authors listed above.</p>
1455 </div>
1456 </div>
1457 </body>
1458 </html>
1459 </xsl:template>
1460 <xsl:template name="give-header">
1461 <fieldset>
1462 <legend id="lang-atm">About this MOD</legend>
1463 <div class="mod-about">
1464 <span class="corners-top"><span></span></span>
1465 <dl>
1466 <dt id="lang-t">Title:</dt>
1467 <dd>
1468 <xsl:if test="count(mod:title) > 1">
1469 <dl id="title" class="nopadding">
1470 <xsl:for-each select="mod:title">
1471 <dt><xsl:value-of select="@lang" /></dt>
1472 <dd style='white-space:pre;' lang="{@lang}">
1473 <p><xsl:value-of select="current()" /></p>
1474 </dd>
1475 </xsl:for-each>
1476 </dl>
1477 </xsl:if>
1478 <xsl:if test="count(mod:title) = 1">
1479 <p lang="{@lang}" style='white-space:pre;'><xsl:value-of select="mod:title" /></p>
1480 </xsl:if>
1481 </dd>
1482 <dt id="lang-d">Description:</dt>
1483 <dd>
1484 <xsl:if test="count(mod:description) > 1">
1485 <dl id="description" class="nopadding">
1486 <xsl:for-each select="mod:description">
1487 <dt><xsl:value-of select="@lang" /></dt>
1488 <dd lang="{@lang}">
1489 <p>
1490 <xsl:call-template name="add-line-breaks">
1491 <xsl:with-param name="string"><xsl:value-of select="current()" /></xsl:with-param>
1492 </xsl:call-template>
1493 </p>
1494 </dd>
1495 </xsl:for-each>
1496 </dl>
1497 </xsl:if>
1498 <xsl:if test="count(mod:description) = 1">
1499 <p lang="{@lang}">
1500 <xsl:call-template name="add-line-breaks">
1501 <xsl:with-param name="string"><xsl:value-of select="mod:description" /></xsl:with-param>
1502 </xsl:call-template>
1503 </p>
1504 </xsl:if>
1505 </dd>
1506 <dt id="lang-aV">Version:</dt>
1507 <dd class="mod-about">
1508 <p>
1509 <xsl:for-each select="mod:mod-version">
1510 <xsl:value-of select="$version" />
1511 </xsl:for-each>
1512 </p>
1513 </dd>
1514 <xsl:for-each select="mod:installation">
1515 <xsl:call-template name="give-installation"></xsl:call-template>
1516 </xsl:for-each>
1517 <xsl:if test="mod:author-notes != 'N/A' and mod:author-notes != 'n/a' and mod:author-notes != ''">
1518 <dt id="lang-ant">Author Notes:</dt>
1519 <dd>
1520 <xsl:if test="count(mod:author-notes) > 1">
1521 <dl id="author-notes" class="nopadding">
1522 <xsl:for-each select="mod:author-notes">
1523 <dt><xsl:value-of select="@lang" /></dt>
1524 <dd lang="{@lang}">
1525 <p>
1526 <xsl:call-template name="add-line-breaks">
1527 <xsl:with-param name="string"><xsl:value-of select="current()" /></xsl:with-param>
1528 </xsl:call-template>
1529 </p>
1530 </dd>
1531 </xsl:for-each>
1532 </dl>
1533 </xsl:if>
1534 <xsl:if test="count(mod:author-notes) = 1">
1535 <p lang="{@lang}">
1536 <xsl:call-template name="add-line-breaks">
1537 <xsl:with-param name="string"><xsl:value-of select="mod:author-notes" /></xsl:with-param>
1538 </xsl:call-template>
1539 </p>
1540 </xsl:if>
1541 </dd>
1542 </xsl:if>
1543 </dl>
1544 <span class="corners-bottom"><span></span></span>
1545 </div>
1546 </fieldset>
1547 <fieldset>
1548 <xsl:for-each select="mod:author-group">
1549 <xsl:if test="count(mod:author) > 1">
1550 <legend id="lang-aus">Authors</legend>
1551 </xsl:if>
1552 <xsl:if test="count(mod:author) = 1">
1553 <legend id="lang-au">Author</legend>
1554 </xsl:if>
1555 <xsl:call-template name="give-authors"></xsl:call-template>
1556 </xsl:for-each>
1557 </fieldset>
1558 <xsl:if test="count(../mod:action-group/mod:open) > 0">
1559 <h3 id="lang-fte">Files to Edit</h3>
1560 <xsl:for-each select="../mod:action-group">
1561 <xsl:call-template name="give-files-to-edit"></xsl:call-template>
1562 </xsl:for-each>
1563 </xsl:if>
1564 <h3 id="lang-icf">Included Files</h3>
1565 <xsl:if test="count(../mod:action-group/mod:copy/mod:file) = 0">
1566 <p id="lang-icfn">No files have been included with this MOD.</p>
1567 </xsl:if>
1568 <xsl:for-each select="../mod:action-group">
1569 <xsl:call-template name="give-files-included"></xsl:call-template>
1570 </xsl:for-each>
1571 <h3 id="lang-addtl-modx">Additional MODX Files</h3>
1572 <xsl:if test="count(mod:link-group/mod:link) = 0">
1573 <p id="lang-imn">This MOD has no additional MODX files.</p>
1574 </xsl:if>
1575 <ul class="link-group" id="link-group">
1576 <xsl:for-each select="mod:link-group/mod:link">
1577 <li lang="{@lang}"><span class="link-group-lang"><xsl:value-of select="@lang" />&nbsp;</span><strong style="text-transform: capitalize;"><xsl:value-of select="@type" />:</strong>&nbsp;<a href="{@href}"><xsl:value-of select="current()" /></a></li>
1578 </xsl:for-each>
1579 </ul>
1580 <hr />
1581 <div id="modDisclaimer">
1582 <h3><span id="lang-dcl">Disclaimer</span> &amp; <span id="lang-ont">Other Notes</span></h3>
1583 <div class="mod-about">
1584 <span class="corners-top"><span></span></span>
1585 <div class="mod-about-padding">
1586 <p><span id="lang-dclt">For security purposes, please check: <a href="http://www.phpbb.com/mods/">http://www.phpbb.com/mods/</a> for the latest version of this MOD. Downloading this MOD from other sites could cause malicious code to enter into your phpBB Forum. As such, phpBB will not offer support for MODs not offered in our MODs database, located at: <a href="http://www.phpbb.com/mods/">http://www.phpbb.com/mods/</a></span></p>
1587 <p><span id="lang-ontt1">Before adding this MOD to your forum, you should back up all files related to this MOD.</span></p>
1588 <p><span id="lang-ontt2">This MOD was designed for phpBB</span><xsl:text> </xsl:text><xsl:value-of select="mod:installation/mod:target-version" /><xsl:text> </xsl:text><span id="lang-ontt3"> and may not function as stated on other phpBB versions. MODs for phpBB 3.0 will <strong>not</strong> work on phpBB 2.0 and vice versa.</span></p>
1589 <xsl:for-each select="./mod:mod-version">
1590 <xsl:if test="substring-before(substring-after(current(), '.'), '.') mod 2 != 0 or substring-before(current(), '.') = 0">
1591 <p><strong class="red"><span id="lang-onttq">This MOD is development quality. It is not recommended that you install it on a live forum.</span></strong></p>
1592 </xsl:if>
1593 </xsl:for-each>
1594 </div>
1595 <span class="corners-bottom"><span></span></span>
1596 </div>
1597 </div>
1598 <div>
1599 <h3><span id="lang-lic">License</span> &amp; <span id="lang-isp">English Support</span></h3>
1600 <div class="mod-about">
1601 <span class="corners-top"><span></span></span>
1602 <div class="mod-about-padding">
1603 <p><span id="lang-lict">This MOD has been licensed under the following license:</span></p>
1604 <p style='white-space:pre;'><a href="license.txt"><xsl:value-of select="mod:license" /></a></p>
1605 <p><span id="lang-ispt">English support can be obtained at <a href="http://www.phpbb.com/mods/">http://www.phpbb.com/mods/</a> for released MODs.</span></p>
1606 </div>
1607 <span class="corners-bottom"><span></span></span>
1608 </div>
1609 <xsl:for-each select="mod:history">
1610 <xsl:call-template name="give-mod-history"></xsl:call-template>
1611 </xsl:for-each>
1612 </div>
1613 </xsl:template>
1614 <xsl:template name="give-authors">
1615 <xsl:for-each select="mod:author">
1616 <div class="mod-about">
1617 <span class="corners-top"><span></span></span>
1618 <xsl:call-template name="give-author"></xsl:call-template>
1619 <span class="corners-bottom"><span></span></span>
1620 </div>
1621 </xsl:for-each>
1622 </xsl:template>
1623 <xsl:template name="give-author">
1624 <dl class="author-info">
1625 <dt id="lang-a-un[{generate-id()}]">Username:</dt>
1626 <dd><a href="http://www.phpbb.com/phpBB/profile.php?mode=viewprofile&amp;un={translate(mod:username, ' ', '+')}"><xsl:value-of select="mod:username" /></a></dd>
1627 <xsl:if test="mod:email != 'N/A' and mod:email != 'n/a' and mod:email != ''">
1628 <dt id="lang-a-e[{generate-id()}]">Email:</dt>
1629 <dd><a href="mailto:{mod:email}"><xsl:value-of select="mod:email" /></a></dd>
1630 </xsl:if>
1631 <xsl:if test="mod:realname != 'N/A' and mod:realname != 'n/a' and mod:realname != ''">
1632 <dt id="lang-a-n[{generate-id()}]">Name:</dt>
1633 <dd><xsl:value-of select="mod:realname" /></dd>
1634 </xsl:if>
1635 <xsl:if test="mod:homepage != 'N/A' and mod:homepage != 'n/a' and mod:homepage!=''">
1636 <dt id="lang-a-h[{generate-id()}]">WWW:</dt>
1637 <dd><a href="{mod:homepage}"><xsl:value-of select="mod:homepage" /></a></dd>
1638 </xsl:if>
1639 <xsl:if test="count(mod:contributions) > 0 and count(mod:contributions/mod:status) > 0">
1640 <dt id="lang-a-c[{generate-id()}]">Contributions:</dt>
1641 <dd>
1642 <xsl:if test="count(mod:contributions/mod:status) > 0">
1643 <xsl:value-of select="mod:contributions/mod:status" /><br />
1644 From:<xsl:value-of select="mod:contributions/mod:from" /><br />
1645 To:<xsl:value-of select="mod:contributions/mod:to" />
1646 </xsl:if>
1647 </dd>
1648 </xsl:if>
1649 </dl>
1650 </xsl:template>
1651 <xsl:template name="give-installation">
1652 <dt id="lang-il">Installation Level:</dt>
1653 <dd class="mod-about">
1654 <div class="inner">
1655 <xsl:if test="mod:level='easy'">
1656 <p id="lang-ile">Easy</p>
1657 </xsl:if>
1658 <xsl:if test="mod:level='intermediate'">
1659 <p id="lang-ili">Intermediate</p>
1660 </xsl:if>
1661 <xsl:if test="mod:level='advanced'">
1662 <p id="lang-ila">Advanced</p>
1663 </xsl:if>
1664 </div>
1665 </dd>
1666 <dt id="lang-it">Installation Time:</dt>
1667 <dd class="mod-about">
1668 <div class="inner">
1669 <p>~<xsl:value-of select="floor(mod:time div 60)" />&nbsp;<span id="lang-mint">minutes</span></p>
1670 </div>
1671 </dd>
1672 </xsl:template>
1673 <xsl:template name="give-mod-history">
1674 <xsl:if test="count(mod:entry) > 0">
1675 <fieldset>
1676 <legend id="lang-mh">MOD History</legend>
1677 <div class="mod-about" id="history_toggle_area" style="display:none;">
1678 <span class="corners-top"><span></span></span>
1679 <div class="mod-about-padding">
1680 <a href="#" id="history_toggle_link" rel="show" onclick="return toggle_history(this);"></a>
1681 </div>
1682 <span class="corners-bottom"><span></span></span>
1683 </div>
1684 <div id="mod_history_content">
1685 <xsl:for-each select="mod:entry">
1686 <xsl:call-template name="give-history-entry"></xsl:call-template>
1687 </xsl:for-each>
1688 </div>
1689 </fieldset>
1690 </xsl:if>
1691 </xsl:template>
1692 <xsl:template name="give-history-entry">
1693 <div class="mod-about">
1694 <span class="corners-top"><span></span></span>
1695 <dl class="mod-history">
1696 <dt>
1697 <p><strong><xsl:value-of select="substring(mod:date,1,10)" />&nbsp;<span id="lang-mhe-v[{generate-id()}]">- Version</span>
1698 <xsl:for-each select="mod:rev-version">
1699 <xsl:value-of select="current()" />
1700 </xsl:for-each>
1701 </strong></p>
1702 </dt>
1703 <dd><br clear="all" />
1704 <xsl:if test="count(mod:changelog) > 1">
1705 <dl id="mhcl[{generate-id()}]">
1706 <xsl:for-each select="mod:changelog">
1707 <xsl:call-template name="give-history-entry-changelog"></xsl:call-template>
1708 </xsl:for-each>
1709 </dl>
1710 </xsl:if>
1711 <xsl:if test="count(mod:changelog) = 1">
1712 <xsl:for-each select="mod:changelog">
1713 <xsl:call-template name="give-history-entry-changelog-single"></xsl:call-template>
1714 </xsl:for-each>
1715 </xsl:if>
1716 </dd>
1717 </dl>
1718 <span class="corners-bottom"><span></span></span>
1719 </div>
1720 </xsl:template>
1721 <xsl:template name="give-history-entry-changelog">
1722 <dt><xsl:value-of select="@lang" /></dt>
1723 <dd lang="{@lang}">
1724 <ul>
1725 <xsl:for-each select="mod:change">
1726 <li>
1727 <p><xsl:value-of select="current()" /></p>
1728 </li>
1729 </xsl:for-each>
1730 </ul>
1731 </dd>
1732 </xsl:template>
1733 <xsl:template name="give-history-entry-changelog-single">
1734 <ul>
1735 <xsl:for-each select="mod:change">
1736 <li>
1737 <p><xsl:value-of select="current()" /></p>
1738 </li>
1739 </xsl:for-each>
1740 </ul>
1741 </xsl:template>
1742 <xsl:template name="give-files-to-edit">
1743 <ul>
1744 <xsl:for-each select="mod:open">
1745 <xsl:call-template name="give-file"></xsl:call-template>
1746 </xsl:for-each>
1747 </ul>
1748 </xsl:template>
1749 <xsl:template name="give-files-included">
1750 <ul>
1751 <xsl:for-each select="mod:copy">
1752 <xsl:call-template name="give-file-copy"></xsl:call-template>
1753 </xsl:for-each>
1754 </ul>
1755 </xsl:template>
1756 <xsl:template name="give-file">
1757 <li><a href="#{@src}"><xsl:value-of select="@src" /></a><xsl:if test="position()!=last()">,</xsl:if></li>
1758 </xsl:template>
1759 <xsl:template name="give-file-copy">
1760 <xsl:for-each select="mod:file">
1761 <li><xsl:value-of select="@from" />
1762 <xsl:if test="position()!=last()">,
1763 </xsl:if>
1764 </li>
1765 </xsl:for-each>
1766 </xsl:template>
1767 <xsl:template name="give-actions">
1768 <xsl:if test="count(mod:sql) > 0">
1769 <form method="post" action="" id="dbms-selector">
1770 <fieldset class="nobg">
1771 <label for="dbms"> <span id="lang-dbms">Select Database Type:</span> </label>
1772 <select id="dbms" name="dbms" onchange="change_dbms(this)">
1773 <option value="mysql_41" selected="selected">MySQL 41</option>
1774 <option value="mysql_40">MySQL 40</option>
1775 <option value="firebird">Firebird</option>
1776 <option value="mssql">MSSQL</option>
1777 <option value="oracle">Oracle</option>
1778 <option value="postgres">Postgres</option>
1779 <option value="sqllite">SQLLite</option>
1780 </select>
1781 </fieldset>
1782 </form>
1783 <h2 id="lang-sql">SQL</h2>
1784 <div id="sql" class="mod-about">
1785 <span class="corners-top"><span></span></span>
1786 <xsl:for-each select="mod:sql">
1787 <xsl:call-template name="give-sql"></xsl:call-template>
1788 </xsl:for-each>
1789 <span class="corners-bottom"><span></span></span></div>
1790 </xsl:if>
1791 <xsl:if test="count(mod:copy) > 0">
1792 <xsl:for-each select="mod:copy">
1793 <xsl:call-template name="give-filez"></xsl:call-template>
1794 </xsl:for-each>
1795 </xsl:if>
1796 <xsl:if test="count(mod:open) > 0">
1797 <h2 id="lang-edts">Edits</h2>
1798 <p><span class="key">s</span><span class="key">&lt;</span><span class="key">&gt;</span><span id="lang-edtt">Use your keyboard to navigate the code boxes. You may also hit '<em>s</em>' on your keyboard to go to the first code box.</span></p>
1799 <div id="edits">
1800 <div class="inner">
1801 <xsl:for-each select="mod:open">
1802 <xsl:call-template name="give-fileo"></xsl:call-template>
1803 </xsl:for-each>
1804 </div>
1805 </div>
1806 </xsl:if>
1807 <xsl:call-template name="give-manual"></xsl:call-template>
1808 </xsl:template>
1809 <xsl:template name="give-sql">
1810 <dbms type="{@dbms}">
1811 <div class="content">
1812 <xsl:if test="@dbms != ''">
1813 <xsl:value-of select="@dbms" />:
1814 </xsl:if>
1815 <div class="codebox">
1816 <div class="codeHead"><span id="lang-cde-c[{generate-id()}]">Code:</span><a href="#" onclick="select_code(this); return false;" class="codeSelect"><span id="lang-cde-sa[{generate-id()}]">Select All</span></a></div>
1817 <div class="codePre"><pre id="{generate-id()}"><xsl:value-of select="current()" /></pre></div>
1818 </div>
1819 </div>
1820 </dbms>
1821 </xsl:template>
1822 <xsl:template name="give-manual">
1823 <xsl:if test="count(mod:diy-instructions) > 0">
1824 <h2 id="lang-diy">DIY Instructions</h2>
1825 <div class="mod-about">
1826 <span class="corners-top"><span></span></span>
1827 <div class="mod-about-padding">
1828 <p><span id="lang-diyt">These are manual instructions that cannot be performed automatically. You should follow these instructions carefully.</span></p>
1829 </div>
1830 <div id="diy">
1831 <xsl:for-each select="mod:diy-instructions">
1832 <div lang="{@lang}" style="margin:0;">
1833 <div class="content">
1834 <div class="codebox">
1835 <div class="codeHead"><span id="lang-cde-c[{generate-id()}]">Code:</span><a href="#" onclick="select_code(this); return false;" class="codeSelect"><span id="lang-cde-sa[{generate-id()}]">Select All</span></a></div>
1836 <div class="codePre"><pre id="{generate-id()}"><xsl:value-of select="current()" /></pre></div>
1837 </div>
1838 </div>
1839 </div>
1840 </xsl:for-each>
1841 </div>
1842 <span class="corners-bottom"><span></span></span>
1843 </div>
1844 </xsl:if>
1845 </xsl:template>
1846 <xsl:template name="give-fileo">
1847 <div class="mod-about">
1848 <span class="corners-top"><span></span></span>
1849 <div class="editFile">
1850 <h3><span id="lang-opn[{generate-id()}]">Open:</span>&nbsp;<a name="{@src}"><xsl:value-of select="@src" /></a></h3>
1851 <xsl:for-each select="mod:edit">
1852 <div class="mod-edit">
1853 <div class="mod-edit-contents">
1854 <xsl:if test="count(mod:comment) > 0">
1855 <div class="mod-comment" style="margin:0;">
1856 <h4 id="lang-cm-cmt[{generate-id()}]">Comments</h4>
1857 <dl id="mod-comment[{generate-id()}]">
1858 <xsl:for-each select="mod:comment">
1859 <dt><span>
1860 <xsl:if test="count(../mod:comment) > 1">
1861 <xsl:value-of select="@lang" />
1862 </xsl:if>
1863 </span></dt>
1864 <dd lang="{@lang}"><xsl:value-of select="current()" /></dd>
1865 </xsl:for-each>
1866 </dl>
1867 </div>
1868 </xsl:if>
1869 <xsl:for-each select="mod:find|mod:action|mod:inline-edit">
1870 <xsl:if test="name() = 'find'">
1871 <h4 id="lang-fnd[{generate-id()}]">Find</h4>
1872 <p><span id="lang-fndt[{generate-id()}]"><strong>Tip:</strong> This may be a partial find and not the whole line.</span>
1873 <xsl:if test="@type = 'regex'">
1874 <br /><em id="lang-regex[{generate-id()}]">This find contains an advanced feature known as regular expressions, click here to learn more.</em>
1875 </xsl:if>
1876 </p>
1877 <div class="codebox">
1878 <div class="codeHead"><span id="lang-cde-c[{generate-id()}]">Code:</span><a href="#" onclick="select_code(this); return false;" class="codeSelect"><span id="lang-cde-sa[{generate-id()}]">Select All</span></a></div>
1879 <div class="codePre"><pre id="{generate-id()}"><xsl:value-of select="current()" /></pre></div>
1880 </div>
1881 </xsl:if>
1882 <xsl:if test="name() = 'action'">
1883 <xsl:if test="@type = 'after-add'">
1884 <h4 id="lang-aft[{generate-id()}]">Add after</h4>
1885 <p><span id="lang-aftt[{generate-id()}]"><strong>Tip:</strong> Add these lines on a new blank line after the preceding line(s) to find.</span></p>
1886 </xsl:if>
1887 <xsl:if test="@type = 'before-add'">
1888 <h4 id="lang-bef[{generate-id()}]">Add before</h4>
1889 <p><span id="lang-beft[{generate-id()}]"><strong>Tip:</strong> Add these lines on a new blank line before the preceding line(s) to find.</span></p>
1890 </xsl:if>
1891 <xsl:if test="@type = 'replace-with'">
1892 <h4 id="lang-rplw[{generate-id()}]">Replace With</h4>
1893 <p><span id="lang-rplwt[{generate-id()}]"><strong>Tip:</strong> Replace the preceding line(s) to find with the following lines.</span></p>
1894 </xsl:if>
1895 <xsl:if test="@type = 'operation'">
1896 <h4 id="lang-inc[{generate-id()}]">Increment</h4>
1897 <p><span id="lang-inct[{generate-id()}]"><strong>Tip:</strong> This allows you to alter integers. For help on what each operator means, click here.</span></p>
1898 </xsl:if>
1899 <div class="codebox">
1900 <div class="codeHead"><span id="lang-cde-c[{generate-id()}]">Code:</span><a href="#" onclick="select_code(this); return false;" class="codeSelect"><span id="lang-cde-sa[{generate-id()}]">Select All</span></a></div>
1901 <div class="codePre"><pre id="{generate-id()}"><xsl:value-of select="current()" /></pre></div>
1902 </div>
1903 </xsl:if>
1904 <xsl:if test="name() = 'inline-edit'">
1905 <div class="mod-inlineedit">
1906 <xsl:for-each select="mod:inline-find|mod:inline-action|mod:inline-comment">
1907 <xsl:if test="name() = 'inline-find'">
1908 <h5 id="lang-ifnd[{generate-id()}]">In-line Find</h5>
1909 <p><span id="lang-ifndt[{generate-id()}]"><strong>Tip:</strong> This is a partial match of a line for in-line operations.</span>
1910 <xsl:if test="@type = 'regex'">
1911 <br /><em id="lang-regex[{generate-id()}]">This find contains an advanced feature known as regular expressions, click here to learn more.</em>
1912 </xsl:if>
1913 </p>
1914 <div class="codebox">
1915 <div class="codeHead"><span id="lang-cde-c[{generate-id()}]">Code:</span><a href="#" onclick="select_code(this); return false;" class="codeSelect"><span id="lang-cde-sa[{generate-id()}]">Select All</span></a></div>
1916 <div class="codePre"><pre id="{generate-id()}"><xsl:value-of select="current()" /></pre></div>
1917 </div>
1918 </xsl:if>
1919 <xsl:if test="name() = 'inline-action'">
1920 <xsl:if test="@type = 'after-add'">
1921 <h5 id="lang-iaft[{generate-id()}]">In-line Add after</h5>
1922 <p><span id="lang-iaftt[{generate-id()}]"></span></p>
1923 </xsl:if>
1924 <xsl:if test="@type = 'before-add'">
1925 <h5 id="lang-ibef[{generate-id()}]">In-line Add before</h5>
1926 <p><span id="lang-ibeft[{generate-id()}]"></span></p>
1927 </xsl:if>
1928 <xsl:if test="@type = 'replace-with'">
1929 <h5 id="lang-irplw[{generate-id()}]">In-line Replace With</h5>
1930 <p><span id="lang-irplwt[{generate-id()}]"></span></p>
1931 </xsl:if>
1932 <xsl:if test="@type = 'operation'">
1933 <h5 id="lang-iinc[{generate-id()}]">In-line Increment</h5>
1934 <p><span id="lang-iinct[{generate-id()}]"><strong>Tip:</strong> This allows you to alter integers. For help on what each operator means, click here.</span></p>
1935 </xsl:if>
1936 <div class="codebox">
1937 <div class="codeHead"><span id="lang-cde-c[{generate-id()}]">Code:</span><a href="#" onclick="select_code(this); return false;" class="codeSelect"><span id="lang-cde-sa[{generate-id()}]">Select All</span></a></div>
1938 <div class="codePre"><pre id="{generate-id()}"><xsl:value-of select="current()" /></pre></div>
1939 </div>
1940 </xsl:if>
1941 <xsl:if test="name() = 'inline-comment'">
1942 <dl id="comment[{generate-id()}]">
1943 <dt><span id="lang-cm-cmt[{generate-id()}]">Comments</span>&nbsp;<span><xsl:value-of select="@lang" /></span></dt>
1944 <dd lang="{@lang}"><xsl:value-of select="current()" /></dd>
1945 </dl>
1946 </xsl:if>
1947 </xsl:for-each>
1948 </div>
1949 </xsl:if>
1950 </xsl:for-each>
1951 </div>
1952 <a href="#" id="lang-edt-hide[{generate-id()}]" class="edit_toggle_link" rel="hide" onclick="return toggle_edit(this);">&lt;&lt;&nbsp;Hide</a>
1953 </div>
1954 </xsl:for-each>
1955 </div>
1956 <span class="corners-bottom"><span></span></span>
1957 </div>
1958 </xsl:template>
1959 <xsl:template name="give-filez">
1960 <h2 id="lang-fca">File Copy</h2>
1961 <ol id="file-copy">
1962 <xsl:for-each select="mod:file">
1963 <li><dl>
1964 <dt><span id="lang-c-copy[{generate-id()}]">Copy:</span>&nbsp;<xsl:value-of select="@from" /></dt>
1965 <dd><span id="lang-c-to[{generate-id()}]">To:</span>&nbsp;<xsl:value-of select="@to" /></dd>
1966 </dl>
1967 </li>
1968 </xsl:for-each>
1969 </ol>
1970 </xsl:template>
1971 <!-- add-line-breaks borrowed from http://www.stylusstudio.com/xsllist/200103/post40180.html -->
1972 <xsl:template name="add-line-breaks">
1973 <xsl:param name="string" select="." />
1974 <xsl:choose>
1975 <xsl:when test="contains($string, '&#xA;')">
1976 <xsl:value-of select="substring-before($string, '&#xA;')" /><br />
1977 <xsl:call-template name="add-line-breaks"><xsl:with-param name="string" select="substring-after($string, '&#xA;')" /></xsl:call-template>
1978 </xsl:when>
1979 <xsl:otherwise>
1980 <xsl:value-of select="$string" />
1981 </xsl:otherwise>
1982 </xsl:choose>
1983 </xsl:template>
1984 </xsl:stylesheet>