Mediawiki

From miki
Revision as of 16:33, 21 September 2009 by Mip (talk | contribs) (→‎Extensions: Rawfile)
Jump to navigation Jump to search

Keyboard shortcuts

  • Reference page in wikipedia
  • Page explaining how to change keyboard shortcut using user custom stylesheet.
  • Most frequently-used HTML access keys (default access-key shortcut is alt+shift for Firefox and shift+Esc for Opera):
Action Key
accesskey-edit e
accesskey-preview p
accesskey-save s
accesskey-search f

Access Restriction

See these pages for implementing access restriction in MediaWiki:

  • A page that implement per-page access restriction [1].
  • Another way to hide pages [2].
  • Yet another extension [3].
  • Security problem with access restriction extension:
  • Some information on how to create custom namespaces [6].

Miscellaneous

  • Page Special:Version produces a complete list of all extensions installed on the wiki.

Extensions

SyntaxHighlight GeSHi

This extension adds the <source> tag to present formatted source code. See official page.

Restoring 1.0.7.# output - solving <pre> formatting problem

  • Since at least version r24298 (July 21, 2007) (with GeSHi version 1.0.8), <source> tag does not match usual formatting applied for <pre> tags. This is because the extension applies by default the new GeSHi header style GESHI_HEADER_PRE_VALID. The following patch allows to restore the old formatting when there is no attribute line. It also introduces a new option valid to attribute enclose to force application of header style GESHI_HEADER_PRE_VALID
--- SyntaxHighlight_GeSHi.class.php.old 2008-09-07 23:24:37.000000000 +0200
+++ SyntaxHighlight_GeSHi.class.php     2008-09-07 23:33:15.000000000 +0200
@@ -39,7 +39,7 @@
                // "Enclose" parameter
                if ( isset( $args['enclose'] ) && $args['enclose'] == 'div' ) {
                        $enclose = GESHI_HEADER_DIV;
-               } elseif ( defined('GESHI_HEADER_PRE_VALID') ) {
+               } elseif ( (isset( $args['line'] ) || isset( $args['enclose'] ) && $args['enclose'] == 'valid' ) && defined('GESHI_HEADER_PRE_VALID') ) {
                        // Since version 1.0.8 geshi can produce valid pre, but we need to check for it
                        $enclose = GESHI_HEADER_PRE_VALID;
                } elseif( isset( $args['line'] ) ) {
  • Example: the following code
After the following command, <source lang="bash" enclose="valid">  % cat ~/hello.c</source> you'll get the following output
<source lang="c">
#include <stdio.h>
int main(int,int)
{
  printf("Hello, World!\n");
  return 0;
}
</source>

gives:

After the following command,
  % cat ~/hello.c
you'll get the following output
#include <stdio.h>
int main(int,int)
{
  printf("Hello, World!\n");
  return 0;
}
  • Another solution is discussed here. The proposed solution is to edit file "SyntaxHighlight_GeSHi.class.php". Go to line 192, which should look like
$css[] = ".source-$lang {line-height: normal;}";

Change this to

$css[] = ".source-$lang {padding: 1em; border: 1px dashed #2f6fab; color: black; background-color: #f9f9f9; line-height: 1.1em;}";

and you have restored the pre css formatting.

RawFile

RawFile is an extension made by Philippe Teuwen to allow downloading directly text in <pre> or <source> block as a file.

The following page adds an optional parameter to hook {{#filelink}}. With 1 param, the file is fetched from the current page as usual:

Save [{{#filelink: fstab }} this file] in your <tt>/etc</tt> directory.

With 2 param, the 2nd param is telling which page to fetch the file from:

Save [{{#filelink: fstab|Config files - fstab}} this file] in your <tt>/etc</tt> directory.
--- original/RawFile.php	2009-09-21 16:20:51.000000000 +0200
+++ patched/RawFile.php	2009-09-21 18:07:06.000000000 +0200
@@ -18,8 +18,12 @@
     $magicWords['fileanchor'] = array( 0, 'fileanchor' );
     return true;
 }
-function efRawFile_Render( &$parser, $filename = '') {
-    return $parser->mTitle->getFullURL( 'action=raw&file='.urlencode( $filename ) );
+function efRawFile_Render( &$parser, $filename = '', $titleText = '') {
+    if( $titleText == '' ) {
+        $titleText = $parser->mTitle->getText();
+    }
+    $title=Title::makeTitle($parser->mTitle->getNamespace(),$titleText,$parser->mTitle->getFragment() );
+    return $title->getFullURL( 'action=raw&file='.urlencode( $filename ) );
 } 
 function efRawFile_Empty( &$parser, $filename = '') {
     return '';