Mediawiki: Difference between revisions

From miki
Jump to navigation Jump to search
(→‎RawFile: patch 0.3 to 0.?, new syntax - test zone)
Line 141: Line 141:


<pre><nowiki>
<pre><nowiki>
* '''Method 1''': Returns the block that immediately follows. Save [{{#file: method1.txt}} this file].<br>
* '''Method 1''': Returns the block that immediately follows. Save [{{#file: method1.txt}} this file]: <code>Hello, World!</code>
: But this other example fails because of the &lt;br&gt; tag... So save [{{#file: method1-fail.txt}} this file]:<br>
<source lang="text">Hello, World!</source>
:<code>Hello, World!</code>.


* '''Method 2''': Indicates the block(s) with anchors. Save [{{#filelink: method2.txt}} this file]. Of course this <tt>text</tt> must not be included.<br>
* '''Method 2''': Indicates the block(s) with anchors. Save [{{#filelink: method2.txt}} this file] (but not this <code>code text</code>):<br>
:{{#fileanchor: method2.txt}}<tt>We can then</tt> very easily {{#fileanchor: method2.txt}}<tt>interleave wiki with downloadable text</tt>
:{{#fileanchor: method2.txt}}<code>We can then</code> very easily {{#fileanchor: method2.txt}}<code>interleave wiki with downloadable text</code>


* '''Method 3''': Same as above, but using html attribute 'class'. Save [{{#filelink: method3.txt}} this file]. Of course this <tt>text</tt> must not be included.<br>
* '''Method 3''': Same as above, but using html attribute 'class'. Save [{{#filelink: method3.txt}} this file] (but not this <code>code text</code>):<br>
:{{#fileanchor: method3.txt}}<tt>We can then</tt> also very easily <tt class="method3.txt">interleave wiki with downloadable text and requires less typing</tt>
:{{#fileanchor: method3.txt}}<code>We can then</code> also very easily <code class="method3.txt">interleave wiki with downloadable text but with less typing</code>


* '''Method 4''': Same as method 1, but using new syntax (custom wiki tag). Save <file name="method4.txt">this file</file>.<br>
* '''Method 4''': Same as method 1, but using new syntax (custom wiki tag). Save <file name="method4.txt">this file</file>: <code>Hello, World!</code>
<source lang="text">Hello, World!</source>


* '''Method 5''': Same as above, but specifying which tag to include. Save <file name="method5.txt" tag="tt">this file</file>.<br>
* '''Method 5''': Same as above, but specifying which tag to include. Save <file name="method5.txt" tag="code">this file</file>:
<source lang="text">This text is skipped.</source><tt>This is the text that will be returned...</tt>
<source lang="text">This text is skipped.</source>
:<code>This is the text that will be returned...</code>


* '''Method 6''': Same as method 2 / 3, but using new syntax (custom wiki tag). Save <filelink name="method6.txt">this file</filelink>. Of course the old syntax <tt>{{#fileanchor}}</tt> for anchor is still supported.<br>
* '''Method 6''': Same as method 2 / 3, but using new syntax (custom wiki tag). Save <filelink name="method6.txt">this file</filelink>. Of course the old syntax <code>{{#fileanchor}}</code> for anchor is still supported.<br>
:{{#fileanchor: method6.txt}}<tt>Again, we can </tt> also very easily <tt class="method6.txt">interleave wiki with downloadable text and syntax allows for parameters</tt>
:{{#fileanchor: method6.txt}}<code>Again, we can </code> also very easily <code class="method6.txt">interleave wiki with downloadable text while using the new syntax</code>
</nowiki></pre>
</nowiki></pre>


This gives:
This gives:


* '''Method 1''': Returns the block that immediately follows. Save [{{#file: method1.txt}} this file].<br>
* '''Method 1''': Returns the block that immediately follows. Save [{{#file: method1.txt}} this file]: <code>Hello, World!</code>
: But this other example fails because of the &lt;br&gt; tag... So save [{{#file: method1-fail.txt}} this file]:<br>
<source lang="text">Hello, World!</source>
:<code>Hello, World!</code>.


* '''Method 2''': Indicates the block(s) with anchors. Save [{{#filelink: method2.txt}} this file]. Of course this <tt>text</tt> must not be included.<br>
* '''Method 2''': Indicates the block(s) with anchors. Save [{{#filelink: method2.txt}} this file] (but not this <code>code text</code>):<br>
:{{#fileanchor: method2.txt}}<tt>We can then</tt> very easily {{#fileanchor: method2.txt}}<tt>interleave wiki with downloadable text</tt>
:{{#fileanchor: method2.txt}}<code>We can then</code> very easily {{#fileanchor: method2.txt}}<code>interleave wiki with downloadable text</code>


* '''Method 3''': Same as above, but using html attribute 'class'. Save [{{#filelink: method3.txt}} this file]. Of course this <tt>text</tt> must not be included.<br>
* '''Method 3''': Same as above, but using html attribute 'class'. Save [{{#filelink: method3.txt}} this file] (but not this <code>code text</code>):<br>
:{{#fileanchor: method3.txt}}<tt>We can then</tt> also very easily <tt class="method3.txt">interleave wiki with downloadable text and requires less typing</tt>
:{{#fileanchor: method3.txt}}<code>We can then</code> also very easily <code class="method3.txt">interleave wiki with downloadable text but with less typing</code>


* '''Method 4''': Same as method 1, but using new syntax (custom wiki tag). Save <file name="method4.txt">this file</file>.<br>
* '''Method 4''': Same as method 1, but using new syntax (custom wiki tag). Save <file name="method4.txt">this file</file>: <code>Hello, World!</code>
<source lang="text">Hello, World!</source>


* '''Method 5''': Same as above, but specifying which tag to include. Save <file name="method5.txt" tag="tt">this file</file>.<br>
* '''Method 5''': Same as above, but specifying which tag to include. Save <file name="method5.txt" tag="code">this file</file>:
<source lang="text">This text is skipped.</source><tt>This is the text that will be returned...</tt>
<source lang="text">This text is skipped.</source>
:<code>This is the text that will be returned...</code>


* '''Method 6''': Same as method 2 / 3, but using new syntax (custom wiki tag). Save <filelink name="method6.txt">this file</filelink>. Of course the old syntax <tt>{{#fileanchor}}</tt> for anchor is still supported.<br>
* '''Method 6''': Same as method 2 / 3, but using new syntax (custom wiki tag). Save <filelink name="method6.txt">this file</filelink>. Of course the old syntax <code>{{#fileanchor}}</code> for anchor is still supported.<br>
:{{#fileanchor: method6.txt}}<tt>Again, we can </tt> also very easily <tt class="method6.txt">interleave wiki with downloadable text and syntax allows for parameters</tt>
:{{#fileanchor: method6.txt}}<code>Again, we can </code> also very easily <code class="method6.txt">interleave wiki with downloadable text while using the new syntax</code>


{{hiddenSourceFile||RawFile-v0.3.patch|<source lang="diff" class="RawFile-v0.3.patch">
{{hiddenSourceFile||RawFile-v0.3.patch|<source lang="diff" class="RawFile-v0.3.patch">

Revision as of 23:01, 18 November 2009

Hints and Tips

Purge wiki page cache
When changing templates, purge the browser & mediawiki cache. To purge the cache of a single page, add &action=purge to the URL (see [1] for more)

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 [2].
  • Another way to hide pages [3].
  • Yet another extension [4].
  • Security problem with access restriction extension:
  • Some information on how to create custom namespaces [7].

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.

Patch v0.2 → v0.3

The patch below 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.

Patch v0.3 → v0.?

This patch allows for specifying the file anchor using an html class attribute instead of using {{#fileanchor}}. It also introduces a new syntax for file links, and allows for specifying the tag of the block to return (instead of returning the first encountered block after the link). For instance:

* '''Method 1''': Returns the block that immediately follows. Save [{{#file: method1.txt}} this file]: <code>Hello, World!</code>
: But this other example fails because of the <br> tag... So save [{{#file: method1-fail.txt}} this file]:<br>
:<code>Hello, World!</code>.

* '''Method 2''': Indicates the block(s) with anchors. Save [{{#filelink: method2.txt}} this file] (but not this <code>code text</code>):<br>
:{{#fileanchor: method2.txt}}<code>We can then</code> very easily {{#fileanchor: method2.txt}}<code>interleave wiki with downloadable text</code>

* '''Method 3''': Same as above, but using html attribute 'class'. Save [{{#filelink: method3.txt}} this file] (but not this <code>code text</code>):<br>
:{{#fileanchor: method3.txt}}<code>We can then</code> also very easily <code class="method3.txt">interleave wiki with downloadable text but with less typing</code>

* '''Method 4''': Same as method 1, but using new syntax (custom wiki tag). Save <file name="method4.txt">this file</file>: <code>Hello, World!</code>

* '''Method 5''': Same as above, but specifying which tag to include. Save <file name="method5.txt" tag="code">this file</file>:
<source lang="text">This text is skipped.</source>
:<code>This is the text that will be returned...</code>

* '''Method 6''': Same as method 2 / 3, but using new syntax (custom wiki tag). Save <filelink name="method6.txt">this file</filelink>. Of course the old syntax <code>{{#fileanchor}}</code> for anchor is still supported.<br>
:{{#fileanchor: method6.txt}}<code>Again, we can </code> also very easily <code class="method6.txt">interleave wiki with downloadable text while using the new syntax</code>

This gives:

  • Method 1: Returns the block that immediately follows. Save [{{#file: method1.txt}} this file]: Hello, World!
But this other example fails because of the <br> tag... So save [{{#file: method1-fail.txt}} this file]:
Hello, World!.
  • Method 2: Indicates the block(s) with anchors. Save [{{#filelink: method2.txt}} this file] (but not this code text):
{{#fileanchor: method2.txt}}We can then very easily {{#fileanchor: method2.txt}}interleave wiki with downloadable text
  • Method 3: Same as above, but using html attribute 'class'. Save [{{#filelink: method3.txt}} this file] (but not this code text):
{{#fileanchor: method3.txt}}We can then also very easily interleave wiki with downloadable text but with less typing
  • Method 4: Same as method 1, but using new syntax (custom wiki tag). Save <file name="method4.txt">this file</file>: Hello, World!
  • Method 5: Same as above, but specifying which tag to include. Save <file name="method5.txt" tag="code">this file</file>:
This text is skipped.
This is the text that will be returned...
  • Method 6: Same as method 2 / 3, but using new syntax (custom wiki tag). Save <filelink name="method6.txt">this file</filelink>. Of course the old syntax {{#fileanchor}} for anchor is still supported.
{{#fileanchor: method6.txt}}Again, we can also very easily interleave wiki with downloadable text while using the new syntax