| rev | line source | 
| igor@142 | 1 <? | 
| igor@150 | 2 $wgHooks['ParserAfterTidy'][] = 'wfLiLaLoParserAfterTidy'; | 
| igor@142 | 3 $wgExtensionFunctions[] = "wfLiLaLoExtension"; | 
| igor@142 | 4 | 
| igor@150 | 5 /* | 
| igor@150 | 6 | 
| igor@150 | 7 More on this technic: | 
| igor@150 | 8 http://www.mediawiki.org/wiki/Manual:Tag_extensions#How_can_I_avoid_modification_of_my_extension.27s_HTML_output.3F | 
| igor@150 | 9 | 
| igor@150 | 10 | 
| igor@150 | 11 HTML tooltips from: | 
| igor@150 | 12 http://www.walterzorn.com/tooltip/tooltip_e.htm#download | 
| igor@150 | 13 | 
| igor@150 | 14 Also: | 
| igor@150 | 15 http://sixrevisions.com/tutorials/javascript_tutorial/create_lightweight_javascript_tooltip/ | 
| igor@150 | 16 | 
| igor@150 | 17 */ | 
| igor@150 | 18 | 
| igor@142 | 19 function wfLiLaLoExtension() { | 
| igor@142 | 20     global $wgParser; | 
| igor@142 | 21     $wgParser->setHook( "lilalo", "renderLiLaLoPRE" ); | 
| igor@150 | 22     global $wgOut; | 
| igor@150 | 23     $wgOut->addHTML('<script src="/js/wz_tooltip.js"></script>'); | 
| igor@142 | 24 } | 
| igor@142 | 25 | 
| igor@150 | 26 $markerList = array(); | 
| igor@150 | 27 | 
| igor@142 | 28 function renderLiLaLoPRE( $input ) { | 
| igor@150 | 29     global $markerList; | 
| igor@143 | 30     preg_match('/[^\n]*l3: local_session_id=([0-9-]*)[^\n]*[\n]/', $input, $matches); | 
| igor@143 | 31     $session_id=$matches[1]; | 
| igor@150 | 32     if ($session_id) { | 
| igor@143 | 33     preg_match('/([0-9]*)-([0-9]*)/', $session_id, $matches); | 
| igor@143 | 34     $session_start_time = intval($matches[2]); | 
| igor@143 | 35     $hour=intval(date('G', $session_start_time)); | 
| igor@143 | 36     $min=intval(date('i', $session_start_time)); | 
| igor@143 | 37     $sec=intval(date('s', $session_start_time)); | 
| igor@143 | 38     $input = preg_replace('/[^\n]*l3: local_session_id=([0-9-]*)[^\n]*[\n]/', '', $input); | 
| igor@143 | 39     $input = preg_replace('/((..):(..):(...)(#[^\n]*))/e', | 
| igor@143 | 40                           '\'$2:$3:$4<b><a href="http://xgu.ru/l3?page='.$session_id.'&id=' | 
| igor@143 | 41                              .'\'.strval($session_start_time+3600*(intval("$2")-$hour)+60*(intval("$3")-$min)+1*(intval("$4")-$sec)).\'' | 
| igor@143 | 42                              .'">$5</a></b>\'', | 
| igor@143 | 43                           $input); | 
| igor@143 | 44 #                             .strval($session_start_time+3600*(intval($2)-$hour)+60*(intval($3)-$min)+(intval($4)-$sec)) | 
| igor@150 | 45         $time_prefix="$hour:$min:$sec "; | 
| igor@150 | 46     } | 
| igor@150 | 47     else | 
| igor@150 | 48     { | 
| igor@150 | 49         $tip_text='<table><tr><td>-n</td><td>show numerical addresses instead of trying to determine symbolic  host  names.<br/>  This  is useful if you are trying to determine why the route to your nameserver has vanished.</td></tr></table>'; | 
| igor@150 | 50         #$tip_text='<dv>1</dv>'; | 
| igor@150 | 51         $tip=" onmouseover=\"Tip('".$tip_text."')\" onmouseout=\"UnTip()\""; | 
| igor@150 | 52         $input = preg_replace('/(%#.*)/', '<span style="font-weight:bold"'.$tip.'>$1</span>', $input); | 
| igor@150 | 53     } | 
| igor@150 | 54     $output = "<pre>$time_prefix$input</pre>"; | 
| igor@150 | 55     $markercount = count($markerList); | 
| igor@150 | 56     $marker = "xx-lilalo-marker".$markercount."-xx"; | 
| igor@150 | 57     $markerList[$markercount] = $output; | 
| igor@150 | 58     return $marker; | 
| igor@150 | 59 | 
| igor@142 | 60 } | 
| igor@142 | 61 | 
| igor@150 | 62 function wfLiLaLoParserAfterTidy(&$parser, &$text) { | 
| igor@150 | 63     // find markers in $text | 
| igor@150 | 64     // replace markers with actual output | 
| igor@150 | 65     global $markerList; | 
| igor@150 | 66     $keys = array(); | 
| igor@150 | 67     $marker_count = count($markerList); | 
| igor@150 | 68 | 
| igor@150 | 69     for ($i = 0; $i < $marker_count; $i++) { | 
| igor@150 | 70         $keys[$i] = 'xx-lilalo-marker' . $i . '-xx'; | 
| igor@150 | 71     } | 
| igor@150 | 72 | 
| igor@150 | 73     $text = str_replace($keys, $markerList, $text); | 
| igor@150 | 74 #$text = $marker_count; | 
| igor@150 | 75     return true; | 
| igor@150 | 76 } | 
| igor@142 | 77 ?> |