| 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 ?>
 |