This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include
, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | /** |
||
3 | * @package fwolflib |
||
4 | * @subpackage class |
||
5 | * @copyright Copyright © 2009-2010, Fwolf |
||
6 | * @author Fwolf <[email protected]> |
||
7 | * @since 2009-04-12 |
||
8 | */ |
||
9 | |||
10 | |||
11 | require_once(dirname(__FILE__) . '/fwolflib.php'); |
||
12 | |||
13 | |||
14 | /** |
||
15 | * Display text document writing by MarkDown markup language. |
||
16 | * |
||
17 | * Need jQuery locate at /js/jquery.js |
||
18 | * |
||
19 | * @deprecated Use Fwlib\Html\TextDocument\Markdown |
||
20 | * @package fwolflib |
||
21 | * @subpackage class |
||
22 | * @copyright Copyright © 2009-2013, Fwolf |
||
23 | * @author Fwolf <[email protected]> |
||
24 | * @since 2009-04-12 |
||
25 | * @version $Id$ |
||
26 | */ |
||
27 | class DocMarkdown extends Fwolflib { |
||
0 ignored issues
–
show
|
|||
28 | /** |
||
29 | * Some config vars |
||
30 | * @var array |
||
31 | */ |
||
32 | public $aCfg = array( |
||
33 | // Using 'Google AJAX Libraries API' now |
||
34 | // http://code.google.com/apis/ajaxlibs/ |
||
35 | 'path_jquery' => 'http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js', |
||
36 | // 'path_jquery' => '/js/jquery.js', |
||
37 | ); |
||
38 | |||
39 | /** |
||
40 | * Stored css styles |
||
41 | * @var array |
||
42 | */ |
||
43 | protected $aCss = array(); |
||
44 | |||
45 | /** |
||
46 | * Stored css styles for print |
||
47 | * @var array |
||
48 | */ |
||
49 | protected $aCssPrint = array(); |
||
50 | |||
51 | /** |
||
52 | * Footer text |
||
53 | * @var array |
||
54 | */ |
||
55 | protected $aFooter = array(); |
||
56 | |||
57 | /** |
||
58 | * Header text |
||
59 | * @var array |
||
60 | */ |
||
61 | protected $aHeader = array(); |
||
62 | |||
63 | /** |
||
64 | * Document infomation |
||
65 | * |
||
66 | * Will display out by sequence of their index, |
||
67 | * Do NOT change there sequence. |
||
68 | * @var array |
||
69 | */ |
||
70 | public $aInfo = array( |
||
71 | 'title' => "Document title(aInfo['title'])", |
||
72 | 'author' => "Document author(aInfo['author'])", |
||
73 | 'authormail' => "Document author's mail(aInfo['authormail'])", |
||
74 | 'keywords' => "Keywords used in html <meta>(aInfo['keywords'])", |
||
75 | 'description' => "Description used in html <meta>(aInfo['description'])", |
||
76 | |||
77 | // Above part can be set (aBody[]) in doc script. |
||
78 | // Below 2 parts can be rewritten in __construct of subclass |
||
79 | |||
80 | // Verinfo part |
||
81 | 'package' => "Phpdoc style package(aInfo['package'])", |
||
82 | 'subpackage' => "Phpdoc style subpackage(aInfo['subpackage'])", |
||
83 | 'copyright1' => "Copyright show in verinfo(aInfo['copyright1'])", |
||
84 | 'since' => "When is this file born(aInfo['since'])", |
||
85 | 'version' => "\$Id\$", |
||
86 | // Footer part |
||
87 | 'copyright2' => array( |
||
88 | "Copyright show in footer(aInfo['copyright2'])", |
||
89 | "Will display in footer by list style.", |
||
90 | ), |
||
91 | ); |
||
92 | |||
93 | /** |
||
94 | * Body text |
||
95 | * |
||
96 | * Will display out by sequence of their index if is array, |
||
97 | * or easy output if is string. |
||
98 | * @var mixed |
||
99 | */ |
||
100 | public $aBody = array(); |
||
101 | |||
102 | /** |
||
103 | * Document styles profiles |
||
104 | * |
||
105 | * Combined css, header, footer profile together |
||
106 | * @var array |
||
107 | */ |
||
108 | protected $aStyle = array( |
||
109 | 'default' => array( |
||
110 | 'css' => 'default', |
||
111 | 'cssprint' => 'default', |
||
112 | 'header' => 'default', |
||
113 | 'footer' => 'default', |
||
114 | ), |
||
115 | ); |
||
116 | |||
117 | /** |
||
118 | * Which style profile to use |
||
119 | * @var string |
||
120 | */ |
||
121 | public $sStyle = 'default'; |
||
122 | |||
123 | |||
124 | /** |
||
125 | * construct |
||
126 | * |
||
127 | * @var param string $path_markdown Include path of MarkDown(Extra) lib |
||
128 | */ |
||
129 | public function __construct($path_markdown = 'markdown.php') { |
||
130 | // Include Markdown lib |
||
131 | if (empty($path_markdown)) |
||
132 | $path_markdown = 'adodb/adodb.inc.php'; |
||
133 | require_once($path_markdown); |
||
134 | |||
135 | // Do data initialize |
||
136 | $this->SetCss(); |
||
137 | $this->SetCssPrint(); |
||
138 | $this->SetHeader(); |
||
139 | $this->SetFooter(); |
||
140 | |||
141 | $this->SetInfoFwolflib(); |
||
142 | } // end of class __construct |
||
143 | |||
144 | |||
145 | /** |
||
146 | * Echo $this->GetOutput() |
||
147 | */ |
||
148 | public function Display() { |
||
149 | echo $this->GetOutput(); |
||
150 | } // end of func Display |
||
151 | |||
152 | |||
153 | /** |
||
154 | * Generate output html |
||
155 | * @return string |
||
156 | */ |
||
157 | public function GenOutputHtml() { |
||
158 | $s = ''; |
||
159 | $s .= $this->GenOutputHtmlHeader(); |
||
160 | $s .= $this->GenOutputHtmlBody(); |
||
161 | $s .= $this->GenOutputHtmlFooter(); |
||
162 | return $s; |
||
163 | } // end of func GenOutputHtml |
||
164 | |||
165 | |||
166 | /** |
||
167 | * Generate output html body part |
||
168 | * @return string |
||
169 | */ |
||
170 | protected function GenOutputHtmlBody() { |
||
171 | if (empty($this->aBody)) { |
||
172 | return ''; |
||
173 | } |
||
174 | elseif (is_string($this->aBody)) { |
||
175 | return Markdown($this->aBody); |
||
176 | } |
||
177 | else { |
||
178 | // Disp array by sequence of their index |
||
179 | ksort($this->aBody); |
||
180 | $s = ''; |
||
181 | foreach ($this->aBody as $k => $v) { |
||
182 | $s .= Markdown($v); |
||
183 | } |
||
184 | return $s; |
||
185 | } |
||
186 | } // end of func GenOutputHtmlBody |
||
187 | |||
188 | |||
189 | /** |
||
190 | * Generate output html header part |
||
191 | * @return string |
||
192 | */ |
||
193 | protected function GenOutputHtmlFooter() { |
||
194 | $s = $this->aFooter[$this->aStyle[$this->sStyle]['footer']]; |
||
195 | // Footer copyright |
||
196 | $ar = $this->aInfo['copyright2']; |
||
197 | $s_copyright2 = ''; |
||
198 | if (!empty($ar)) { |
||
199 | foreach ($ar as $v) { |
||
200 | $s_t = Markdown($v); |
||
201 | View Code Duplication | if ('<p>' == substr($s_t, 0, 3)) |
|
0 ignored issues
–
show
This code seems to be duplicated across your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
202 | $s_t = trim(substr($s_t, 3, strlen($s_t) - 8)); |
||
203 | $s_copyright2 .= "<li>" . $s_t . "</li>\n"; |
||
204 | } |
||
205 | } |
||
206 | $s = str_replace('{copyright2}', $s_copyright2, $s); |
||
207 | return $s; |
||
208 | // Apply aInfo in |
||
209 | |||
210 | } // end of func GenOutputHtmlFooter |
||
211 | |||
212 | |||
213 | /** |
||
214 | * Generate output html header part |
||
215 | * @return string |
||
216 | */ |
||
217 | protected function GenOutputHtmlHeader() { |
||
218 | // Apply aInfo in |
||
219 | $s = $this->aHeader[$this->aStyle[$this->sStyle]['header']]; |
||
220 | $ar_keys = array( |
||
221 | '{info.title}', |
||
222 | '{info.author}', |
||
223 | '{info.authormail}', |
||
224 | '{info.keywords}', |
||
225 | '{info.description}', |
||
226 | '{info.package}', |
||
227 | '{info.subpackage}', |
||
228 | '{info.copyright1}', |
||
229 | '{info.since}', |
||
230 | '{info.version}', |
||
231 | ); |
||
232 | $s = str_replace($ar_keys, $this->aInfo, $s); |
||
233 | // Css |
||
234 | $s = str_replace('{css}', $this->aCss[$this->aStyle[$this->sStyle]['css']], $s); |
||
235 | $s = str_replace('{cssprint}', $this->aCssPrint[$this->aStyle[$this->sStyle]['cssprint']], $s); |
||
236 | return $s; |
||
237 | } // end of func GenOutputHtmlHeader |
||
238 | |||
239 | |||
240 | /** |
||
241 | * Gen soucecode output |
||
242 | * @return string |
||
243 | */ |
||
244 | protected function GenOutputSourcecode() { |
||
245 | // Add <pre> |
||
246 | $s = "<pre>\n"; |
||
247 | // Add title |
||
248 | $s .= "{$this->aInfo['title']}\n====================\n\n"; |
||
249 | |||
250 | // Verinfo, grab from $this->aHeader |
||
251 | // identify by <div id="verinfo"><pre> |
||
252 | $s_header = $this->GenOutputHtmlHeader(); |
||
253 | $i = preg_match('/<div id="verinfo"><pre>(.*)<\/pre><\/div>/s', |
||
254 | $s_header, $ar); |
||
255 | if (0 < $i) { |
||
256 | $s_verinfo = $ar[1]; |
||
257 | $s_verinfo = strip_tags($s_verinfo); |
||
258 | $s_verinfo = str_replace(' ', ' ', $s_verinfo); |
||
259 | $s .= $s_verinfo . "\n\n"; |
||
260 | } |
||
261 | |||
262 | // Output body |
||
263 | ksort($this->aBody); |
||
264 | foreach ($this->aBody as $k => $v) { |
||
265 | $s .= htmlspecialchars($v) . "\n"; |
||
266 | } |
||
267 | |||
268 | // Add </pre> |
||
269 | $s .= "</pre>\n"; |
||
270 | return $s; |
||
271 | } // end of func GenOutputSourcecode |
||
272 | |||
273 | |||
274 | /** |
||
275 | * Get output content |
||
276 | * @return string |
||
277 | */ |
||
278 | public function GetOutput() { |
||
279 | // Sourcecode output |
||
280 | if (isset($_GET['view']) && 'sourcecode' == $_GET['view']) |
||
281 | return $this->GenOutputSourcecode(); |
||
282 | else |
||
283 | return $this->GenOutputHtml(); |
||
284 | } // end of func GetOutput |
||
285 | |||
286 | |||
287 | /** |
||
288 | * Store css data to array |
||
289 | */ |
||
290 | protected function SetCss() { |
||
291 | $this->aCss['default'] = ' |
||
292 | html, body, div, span, applet, |
||
293 | object, iframe, h1, h2, h3, h4, h5, h6, |
||
294 | p, blockquote, pre, a, abbr, acronym, |
||
295 | address, big, cite, code, del, dfn, em, |
||
296 | font, img, ins, kbd, q, s, samp, small, strike, |
||
297 | strong, sub, sup, tt, var, dd, dl, dt, |
||
298 | li, ol, ul, fieldset, form, label, legend, |
||
299 | table, caption, tbody, tfoot, thead, |
||
300 | tr, th, td { |
||
301 | margin: 0; |
||
302 | padding: 0; |
||
303 | border: 0; |
||
304 | font-weight: inherit; |
||
305 | font-style: inherit; |
||
306 | font-size: 100%; |
||
307 | line-height: 1.2em; |
||
308 | font-family: inherit; |
||
309 | text-align: left; |
||
310 | vertical-align: baseline; |
||
311 | } |
||
312 | |||
313 | a img, :link img, :visited img { |
||
314 | border: 0; |
||
315 | } |
||
316 | |||
317 | table { |
||
318 | border-collapse: collapse; |
||
319 | border-spacing: 0; |
||
320 | } |
||
321 | |||
322 | ol, ul { |
||
323 | list-style: none; |
||
324 | } |
||
325 | |||
326 | q:before, q:after, |
||
327 | blockquote:before, blockquote:after { |
||
328 | content: ""; |
||
329 | } |
||
330 | /* |
||
331 | 注意两点,这里定义了背景色和前景色,这是标准要求的,是网页可用性的一个基本方面,大家可以执行修改。 |
||
332 | |||
333 | 第二点,就是font-size的问题,为了让网页更好的支持网页缩放功能,应该使用em来替换px,这样会让ie6等上古浏览器也能良好的支持网页缩放。浏览器的默认字体高都是16px,所以未经调整的浏览器在显示1em=16px。换算过来的话也就是说1px=0.0625em,也就是12px =0.75em, 10px=0.625em,通过1px=0.0625em大家可以在CSS编写时通过px转换成em。 |
||
334 | */ |
||
335 | body {background-color: #FFFFFF;} |
||
336 | body, p, td, th, li |
||
337 | { |
||
338 | font-family: "宋体", verdana, helvetica, sans-serif; |
||
339 | font-size: 0.875em; |
||
340 | line-height: 1.5em; |
||
341 | color: #000000; |
||
342 | } |
||
343 | /* |
||
344 | -------- Styles come from other framework |
||
345 | My change |
||
346 | */ |
||
347 | h1, h2, h3 { |
||
348 | font-weight: bold; |
||
349 | font-family: "SimHei", inherit; |
||
350 | } |
||
351 | h1 { |
||
352 | font-size: 2em; |
||
353 | line-height: 3em; |
||
354 | } |
||
355 | h2 { |
||
356 | background-color: #8BB98B; |
||
357 | font-size: 1.5em; |
||
358 | line-height: 1.5em; |
||
359 | margin-bottom: 0.35em; |
||
360 | margin-left: 1em; |
||
361 | margin-right: 1em; |
||
362 | margin-top: 0.65em; |
||
363 | } |
||
364 | h3 { |
||
365 | font-size: 1.3em; |
||
366 | line-height: 2em; |
||
367 | margin-bottom: 0.1em; |
||
368 | margin-left: 1.154em; |
||
369 | margin-top: 0.2em; |
||
370 | } |
||
371 | h4, h5, h6 { |
||
372 | font-family: "FangSong", inherit; |
||
373 | font-size: 1.15em; |
||
374 | line-height: 2em; |
||
375 | margin-left: 1.364em; |
||
376 | } |
||
377 | p, td, th, li, dt, dd { |
||
378 | font-size: 1em; |
||
379 | line-height: 2em; |
||
380 | margin-left: 3em; |
||
381 | } |
||
382 | dt:after { |
||
383 | content: ":"; |
||
384 | } |
||
385 | dd { |
||
386 | margin-left: 6em; |
||
387 | } |
||
388 | pre { |
||
389 | margin-left: 5em; |
||
390 | } |
||
391 | th { |
||
392 | font-weight: bold; |
||
393 | text-align: center; |
||
394 | } |
||
395 | th, td { |
||
396 | padding-left: 0.5em; |
||
397 | padding-right: 0.5em; |
||
398 | } |
||
399 | /* |
||
400 | -------- Styles come from other framework |
||
401 | End |
||
402 | */ |
||
403 | |||
404 | |||
405 | body { |
||
406 | background-color: rgb(204, 232, 207); |
||
407 | } |
||
408 | code { |
||
409 | color: #900; |
||
410 | font-size: 1em; |
||
411 | } |
||
412 | abbr, acronym { |
||
413 | cursor: help; |
||
414 | } |
||
415 | |||
416 | /* Title and list */ |
||
417 | h1 { |
||
418 | text-align:center; |
||
419 | } |
||
420 | div.list { |
||
421 | line-height: 1.2em; |
||
422 | } |
||
423 | /* general unorder list */ |
||
424 | ul.gen li { |
||
425 | list-style-type: disc; |
||
426 | } |
||
427 | |||
428 | /* link color method 1 |
||
429 | a:hover, span.showhide_link:hover {background-color: #bcf; color: #f34;} */ |
||
430 | a { |
||
431 | text-decoration: none; |
||
432 | } |
||
433 | a:hover { |
||
434 | background-color: #b50394; |
||
435 | color: #fff; |
||
436 | } |
||
437 | |||
438 | #footer li{ |
||
439 | line-height: 1.5em; |
||
440 | margin-right: 1em; |
||
441 | text-align: center; |
||
442 | } |
||
443 | |||
444 | /* Version info */ |
||
445 | #verinfo { |
||
446 | display: none; |
||
447 | line-height: 1.2em; |
||
448 | background-color: #ded9af; |
||
449 | width: 50em; /* 需要根据内容大小适当调整 */ |
||
450 | border: solid black 1px; |
||
451 | position: absolute; |
||
452 | overflow: hidden; |
||
453 | z-index: 100; |
||
454 | margin: -1em 0em 0em 1em; |
||
455 | } |
||
456 | #verinfo pre{ |
||
457 | /*margin: 0em 0em 0em -2em;*/ |
||
458 | margin: 0em 0em 0em -2.5em; |
||
459 | } |
||
460 | #showhide_verinfo { |
||
461 | position: absolute; |
||
462 | top: 0.5em; left: 0.5em; |
||
463 | } |
||
464 | |||
465 | /* To solve problem: img tag in <a> have bgcolor. */ |
||
466 | a.img { |
||
467 | background-color: transparent !important; |
||
468 | background-color: #000; |
||
469 | } |
||
470 | |||
471 | /* Footer icon and copyright text. */ |
||
472 | div#footer img, div#footer span.spacer { |
||
473 | float: left; |
||
474 | margin-top: 0.2em; |
||
475 | } |
||
476 | div#footer ul#copyright { |
||
477 | float: right; |
||
478 | margin-right: 0%; |
||
479 | margin-top: 0%; |
||
480 | text-align: center; |
||
481 | } |
||
482 | hr { |
||
483 | border: 0px; |
||
484 | height: 1px; |
||
485 | color: #B0C4DE; |
||
486 | background-color: #B0C4DE; /* LightSteelBlue = #B0C4DE */ |
||
487 | } |
||
488 | #ads_bottom { |
||
489 | text-align: center; |
||
490 | } |
||
491 | |||
492 | |||
493 | /* Auto numbered list(article), usually used in doc */ |
||
494 | .article {counter-reset: c-level1} /* top c_lever need not reset */ |
||
495 | .article h2 {counter-reset: c-level2} |
||
496 | .article h3 {counter-reset: c-level3} |
||
497 | .article h4 {counter-reset: c-level4} |
||
498 | .article h2:before { |
||
499 | /*display: marker; */ |
||
500 | content: "§ " counter(c-level1, decimal) " "; |
||
501 | counter-increment: c-level1 1 |
||
502 | } |
||
503 | .article h3:before { |
||
504 | /*display: marker; */ |
||
505 | content: "§ " counter(c-level1) "." counter(c-level2, decimal) " "; |
||
506 | counter-increment: c-level2 1 |
||
507 | } |
||
508 | .article h4:before { |
||
509 | /*display: marker; */ |
||
510 | content: "§ " counter(c-level1) "." counter(c-level2, decimal) "." counter(c-level3, decimal) " "; |
||
511 | counter-increment: c-level3 1 |
||
512 | } |
||
513 | .article h5:before { |
||
514 | /*display: marker; */ |
||
515 | content: "§ " counter(c-level1) "." counter(c-level2, decimal) "." counter(c-level3, decimal) "." counter(c-level4, decimal) " "; |
||
516 | counter-increment: c-level4 1 |
||
517 | } |
||
518 | .article li { |
||
519 | list-style-type: disc; |
||
520 | margin-left: 6em; |
||
521 | } |
||
522 | .article table { |
||
523 | margin-left: 4em; |
||
524 | } |
||
525 | .article p { |
||
526 | text-indent: 2em; |
||
527 | } |
||
528 | /* p in li need not margin/indent, it will display as same as li */ |
||
529 | .article li p { |
||
530 | margin-left: 0em; |
||
531 | text-indent: 0em; |
||
532 | } |
||
533 | |||
534 | |||
535 | /* Temportary debug can apply this class */ |
||
536 | .debug { |
||
537 | border: 2px solid red; |
||
538 | } |
||
539 | |||
540 | |||
541 | /* Single line table in div, printable */ |
||
542 | .single_line table, .single_line td, .single_line th { |
||
543 | border: 1px solid black; |
||
544 | border-collapse: collapse; |
||
545 | } |
||
546 | '; |
||
547 | } // end of func SetCss |
||
548 | |||
549 | |||
550 | /** |
||
551 | * Store css for print data to array |
||
552 | */ |
||
553 | protected function SetCssPrint() { |
||
554 | $this->aCssPrint['default'] = ' |
||
555 | #header, #footer, #navigation, #menu, #right_sidebar, #left_sidebar |
||
556 | {display:none;} |
||
557 | '; |
||
558 | } // end of func SetCssPrint |
||
559 | |||
560 | |||
561 | /** |
||
562 | * Store footer data to array |
||
563 | */ |
||
564 | protected function SetFooter() { |
||
565 | $this->aFooter['default'] = " |
||
566 | </div> |
||
567 | <script type=\"text/javascript\"> |
||
568 | /** |
||
569 | * Set Display/Hide action to special verinfo div |
||
570 | */ |
||
571 | function SetSvninfo() |
||
572 | { |
||
573 | var obj = $('#showhide_verinfo').children(':first-child'); |
||
574 | //$('#showhide_verinfo').mouseover(function(e) { |
||
575 | obj.mouseover(function(e) { |
||
576 | SwitchDisplay('#verinfo', 'block', e); |
||
577 | // Fix position |
||
578 | if ('static' != $('#verinfo').css('position')) |
||
579 | $('#verinfo').css('margin', '0em 0em 0em 0em'); |
||
580 | }); |
||
581 | //$('#showhide_verinfo').mouseout(function(e) { |
||
582 | obj.mouseout(function(e) { |
||
583 | SwitchDisplay('#verinfo', 'none', e); |
||
584 | }); |
||
585 | //$('#showhide_verinfo').children(':first-child').click(function() { |
||
586 | //$('#showhide_verinfo a').click(function() { |
||
587 | obj.click(function() { |
||
588 | SwitchPosition('#verinfo'); |
||
589 | // And reset position when static position |
||
590 | // Style same with define in default.css |
||
591 | if ('static' == $('#verinfo').css('position')) |
||
592 | $('#verinfo').css('margin', '-1em 0em 0em 1em'); |
||
593 | return false; |
||
594 | }); |
||
595 | } // end of func SetSvninfo |
||
596 | |||
597 | |||
598 | /** |
||
599 | * 显示/隐藏指定的对象(style.display方式) |
||
600 | * @param string id 对象selector, jQuery format |
||
601 | * @param string value 指定block/none,如省略则自动切换 |
||
602 | * @param object e 事件,用于捕捉鼠标位置等,可省略 |
||
603 | */ |
||
604 | function SwitchDisplay(id, value, e) |
||
605 | { |
||
606 | var obj = $(id); |
||
607 | //如果对象定位方式是static,就是已经采用非浮动方式显示,则跳过处理 |
||
608 | if ('static' == obj.css('position')) return null; |
||
609 | |||
610 | // Reference: http://www.quirksmode.org/js/events_properties.html |
||
611 | if (!e) var e = window.event; |
||
612 | // 定位,可选 |
||
613 | if (e.pageX || e.pageY) { |
||
614 | posx = e.pageX; |
||
615 | posy = e.pageY; |
||
616 | } |
||
617 | else if (e.clientX || e.clientY) { |
||
618 | posx = e.clientX + document.body.scrollLeft |
||
619 | + document.documentElement.scrollLeft; |
||
620 | posy = e.clienty + document.body.scrollTop |
||
621 | + document.documentElement.scrollTop; |
||
622 | } |
||
623 | //obj.css('top', e.clientX); |
||
624 | //obj.css('left', e.clientY); |
||
625 | obj.css('left', posx); |
||
626 | obj.css('top', posy); |
||
627 | |||
628 | //显示/隐藏 |
||
629 | if (('' == obj.css('display')) |
||
630 | || ('block' == value) |
||
631 | || ('none' == obj.css('display')) |
||
632 | //|| (undefined == obj.css('display')) |
||
633 | ) |
||
634 | obj.css('display', 'block'); |
||
635 | else if (('block' == obj.css('display')) || ('none' == value)) |
||
636 | obj.css('display', 'none'); |
||
637 | } // end of function SwitchDisplay |
||
638 | |||
639 | |||
640 | /** |
||
641 | * 切换对象的定位方式 |
||
642 | * @param string id 对象selector, jQuery format |
||
643 | * @param string value 指定static/absolute,如省略则自动切换 |
||
644 | */ |
||
645 | function SwitchPosition(id, value) |
||
646 | { |
||
647 | var obj = $(id); |
||
648 | if (('' == obj.css('position')) |
||
649 | || ('static' == value) |
||
650 | || ('absolute' == obj.css('position'))) |
||
651 | obj.css('position', 'static'); |
||
652 | else if (('static' == obj.css('position')) |
||
653 | || ('absolute' == value)) |
||
654 | obj.css('position', 'absolute'); |
||
655 | } // end of function SwitchPosition |
||
656 | |||
657 | |||
658 | // Auto set property |
||
659 | SetSvninfo(); |
||
660 | |||
661 | </script> |
||
662 | |||
663 | <div id=\"footer\"> |
||
664 | <hr /> |
||
665 | <ul id=\"copyright\"> |
||
666 | {copyright2} |
||
667 | </ul> |
||
668 | </div> |
||
669 | |||
670 | </body> |
||
671 | </html> |
||
672 | "; |
||
673 | } // end of func SetFooter |
||
674 | |||
675 | |||
676 | /** |
||
677 | * Store header data to array |
||
678 | */ |
||
679 | protected function SetHeader() { |
||
680 | $this->aHeader['default'] = '<?' . 'xml version="1.0" encoding="utf-8"?> |
||
681 | <!DOCTYPE html |
||
682 | PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
||
683 | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
||
684 | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
||
685 | |||
686 | <head> |
||
687 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
||
688 | <meta http-equiv="Content-Language" content="utf-8" /> |
||
689 | <meta name="Author" content="{info.author}" /> |
||
690 | <meta name="Keywords" content="{info.keywords}" /> |
||
691 | <meta name="Description" content="{info.description}" /> |
||
692 | |||
693 | <style type="text/css" media="screen, print"> |
||
694 | <!-- |
||
695 | {css} |
||
696 | --> |
||
697 | </style> |
||
698 | <style type="text/css" media="print"> |
||
699 | <!-- |
||
700 | {cssprint} |
||
701 | --> |
||
702 | </style> |
||
703 | |||
704 | <script type="text/javascript" |
||
705 | src="' . $this->aCfg['path_jquery'] . '"> |
||
706 | </script> |
||
707 | |||
708 | <title>{info.title}</title> |
||
709 | |||
710 | </head> |
||
711 | <body> |
||
712 | <div class="article"> |
||
713 | |||
714 | <h1>{info.title}</h1> |
||
715 | |||
716 | <div id="showhide_verinfo"> |
||
717 | <a href="">[v]</a> |
||
718 | <a href="?view=sourcecode" title="View Sourcecode">[s]</a> |
||
719 | </div> |
||
720 | |||
721 | <div id="verinfo"><pre> |
||
722 | /** |
||
723 | * {info.title} |
||
724 | * |
||
725 | * @package {info.package} |
||
726 | * @subpackage {info.subpackage} |
||
727 | * @copyright {info.copyright1} |
||
728 | * @author {info.author} <<a href="mailto:{info.authormail}" tabindex="1">{info.authormail}</a>> |
||
729 | * @since {info.since} |
||
730 | * @version {info.version} |
||
731 | */</pre></div> |
||
732 | '; |
||
733 | } // end of func SetHeader |
||
734 | |||
735 | |||
736 | /** |
||
737 | * Set info array |
||
738 | */ |
||
739 | public function SetInfoFwolflib() { |
||
740 | $this->aInfo['package'] = "fwolflib"; |
||
741 | $this->aInfo['subpackage'] = "doc"; |
||
742 | $this->aInfo['copyright1'] = "Copyright © 2009, Fwolf"; |
||
743 | $this->aInfo['since'] = "2009-04-19"; |
||
744 | $this->aInfo['version'] = "\$Id\$"; |
||
745 | $this->aInfo['copyright2'] = array( |
||
746 | 'Copyright © 2009, Fwolf', |
||
747 | 'All Rights Reserved.', |
||
748 | ); |
||
749 | } // end of func SetInfoFwolflib |
||
750 | } // end of class DocMarkdown |
||
751 | ?> |
||
0 ignored issues
–
show
It is not recommended to use PHP's closing tag
?> in files other than templates.
Using a closing tag in PHP files that only contain PHP code is not recommended as you might accidentally add whitespace after the closing tag which would then be output by PHP. This can cause severe problems, for example headers cannot be sent anymore. A simple precaution is to leave off the closing tag as it is not required, and it also has no negative effects whatsoever. ![]() |
|||
752 |
This class, trait or interface has been deprecated. The supplier of the file has supplied an explanatory message.
The explanatory message should give you some clue as to whether and when the type will be removed from the class and what other constant to use instead.