Mediawiki: Difference between revisions
(Highlight_GeSHi - New patch for new version...) |
|||
Line 34: | Line 34: | ||
== Miscellaneous == |
== Miscellaneous == |
||
* Page <tt>Special:Version</tt> produces a complete list of all extensions installed on the wiki. |
* Page <tt>[[Special:Version]]</tt> produces a complete list of all extensions installed on the wiki. |
||
== Extensions == |
== Extensions == |
||
Line 40: | Line 40: | ||
=== SyntaxHighlight GeSHi === |
=== SyntaxHighlight GeSHi === |
||
This extension adds the <tt><source></tt> tag to present formatted source code. |
This extension adds the <tt><source></tt> tag to present formatted source code. See official [http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi page]. |
||
See official [http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi page]. |
|||
==== Restoring |
==== Restoring old <tt><pre></tt> formatting ==== |
||
<ul> |
|||
⚫ | |||
<li> |
|||
⚫ | Since at least version ''r24298 (July 21, 2007)'' (with ''GeSHi version 1.0.8''), <tt><source></tt> tag does not match usual formatting applied for <tt><pre></tt> tags. This is because the extension applies by default the new GeSHi header style <tt>[http://qbnz.com/highlighter/geshi-doc.html#the-code-container GESHI_HEADER_PRE_VALID]</tt>. The following patch fixes this by restoring the old pre format. It also introduces a new option '''<tt>prevalid</tt>''' to attribute <tt>enclose</tt> to force application of header style <tt>GESHI_HEADER_PRE_VALID</tt>. |
||
<source lang="diff"> |
{{hiddenSourceFile||SyntaxHighlight_GeSHi_r24298.patch|<source lang="diff"> |
||
--- SyntaxHighlight_GeSHi.class.php.old 2008-09-07 23:24:37.000000000 +0200 |
--- 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 |
+++ SyntaxHighlight_GeSHi.class.php 2008-09-07 23:33:15.000000000 +0200 |
||
Line 54: | Line 55: | ||
$enclose = GESHI_HEADER_DIV; |
$enclose = GESHI_HEADER_DIV; |
||
- } elseif ( defined('GESHI_HEADER_PRE_VALID') ) { |
- } elseif ( defined('GESHI_HEADER_PRE_VALID') ) { |
||
+ } elseif ( (isset( $args['line'] ) || isset( $args['enclose'] ) && $args['enclose'] == ' |
+ } elseif ( (isset( $args['line'] ) || isset( $args['enclose'] ) && $args['enclose'] == 'prevalid' ) && defined('GESHI_HEADER_PRE_VALID') ) { |
||
// Since version 1.0.8 geshi can produce valid pre, but we need to check for it |
// Since version 1.0.8 geshi can produce valid pre, but we need to check for it |
||
$enclose = GESHI_HEADER_PRE_VALID; |
$enclose = GESHI_HEADER_PRE_VALID; |
||
} elseif( isset( $args['line'] ) ) { |
} elseif( isset( $args['line'] ) ) { |
||
</source> |
</source>}} |
||
{{hiddenSourceFile||SyntaxHighlight_GeSHi_r60735.patch|<source lang="diff"> |
|||
⚫ | |||
--- 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'] == 'prevalid' ) && 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'] ) ) { |
|||
</source>}} |
|||
</li> |
|||
⚫ | |||
<pre> |
<pre> |
||
After the following command, <source lang="bash" enclose=" |
After the following command, <source lang="bash" enclose="prevalid"> % cat ~/hello.c</source> you'll get the following output |
||
<source lang="c"> |
<source lang="c"> |
||
#include <stdio.h> |
#include <stdio.h> |
||
Line 74: | Line 89: | ||
</pre> |
</pre> |
||
gives: |
gives: |
||
⚫ | |||
{| |
|||
| || || || |
|||
⚫ | |||
<source lang="c"> |
<source lang="c"> |
||
#include <stdio.h> |
#include <stdio.h> |
||
Line 86: | Line 98: | ||
} |
} |
||
</source> |
</source> |
||
}} |
|||
<li>Another solution is discussed [http://www.mediawiki.org/wiki/Extension_talk:SyntaxHighlight_GeSHi#Problem_with_CSS:_Default_style_for_pre_is_overwritten here]. The proposed solution is to edit file "SyntaxHighlight_GeSHi.class.php". Go to line 192, which should look like |
|||
<source lang="php"> |
<source lang="php" enclose="prevalid"> |
||
$css[] = ".source-$lang {line-height: normal;}"; |
$css[] = ".source-$lang {line-height: normal;}"; |
||
</source> |
</source> |
||
Change this to |
Change this to |
||
<source lang="php"> |
<source lang="php" enclose="prevalid"> |
||
$css[] = ".source-$lang {padding: 1em; border: 1px dashed #2f6fab; color: black; background-color: #f9f9f9; line-height: 1.1em;}"; |
$css[] = ".source-$lang {padding: 1em; border: 1px dashed #2f6fab; color: black; background-color: #f9f9f9; line-height: 1.1em;}"; |
||
</source> |
</source> |
||
and you have restored the pre css formatting. |
and you have restored the pre css formatting. |
||
</li> |
|||
</ul> |
|||
=== RawFile === |
=== RawFile === |
||
Line 115: | Line 129: | ||
</pre> |
</pre> |
||
{{hiddenSourceFile||RawFile-v0.2.patch|<source lang="diff |
{{hiddenSourceFile||RawFile-v0.2.patch|<source lang="diff"> |
||
--- original/RawFile.php 2009-09-21 16:20:51.000000000 +0200 |
--- original/RawFile.php 2009-09-21 16:20:51.000000000 +0200 |
||
+++ patched/RawFile.php 2009-09-21 18:07:06.000000000 +0200 |
+++ patched/RawFile.php 2009-09-21 18:07:06.000000000 +0200 |
||
Line 267: | Line 281: | ||
===== The code ===== |
===== The code ===== |
||
{{hiddenSourceFile||RawFile.php|<source lang=" |
{{hiddenSourceFile||RawFile.php|<source lang="php"> |
||
<?php |
<?php |
||
Revision as of 17:19, 6 January 2010
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].
- See sourceforge project.
- 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 old <pre> formatting
-
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 fixes this by restoring the old pre format. It also introduces a new option prevalid to attribute enclose to force application of header style GESHI_HEADER_PRE_VALID.
SyntaxHighlight_GeSHi_r24298.patch (<file name="SyntaxHighlight_GeSHi_r24298.patch" tag="source">download</file>)
{{{content}}}
SyntaxHighlight_GeSHi_r60735.patch (<file name="SyntaxHighlight_GeSHi_r60735.patch" tag="source">download</file>){{{content}}}
- Example: the following code
After the following command, <source lang="bash" enclose="prevalid"> % 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,you'll get the following output% cat ~/hello.c
#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.
{{{content}}}
Patch v0.3 → v0.4
Changes in v0.4
- Anchors can be specified using html class attribute
- New syntax for Links and Anchor-links:
<file [name="..."] [anchor="..."] [tag="..."] [title="..."] >Link text</file>
- Support multiple files on the same page with same name.
- Can specify the tag name of the block to download (to skip some irrelevant blocks when using an anchor-link).
- Ignore
<br>
tag. - Some error reporting.
The extension introduces 3 elements:
- Anchor
- Used to flag that the next code block in the wiki text belongs to a specific file. The code block can be any wiki block (such as
<pre>
,<code>
,<tt>
,<source>
...).<br>
tags are ignored. Note that anchors are invisible in the wiki display. - Link
- They are transformed by the extension into links that allows for downloading all blocks attached to a given anchor name.
- Anchor-link
- A shortcut notation mixing both an anchor and download link, handy for regular use, when a single code block is used and when the download link can be at the same position as the anchor.
The syntax is as follows. The syntax using tag <file>
and tag attribute class
is new since v0.4. Note that elements of both syntaxes can be mixed in a same page.
Element | Syntax and description |
---|---|
Anchor | {{#fileAnchor: anchorname}} <pre class='anchorname'>...</pre> <code class="anchorname">...</code> <code class="cssclass anchorname">...</code> ... Indicates that the next wiki block is attached to an anchor anchorname. The content of that block will be downloaded (possibly appended with other blocks if there are several blocks attached to the same anchorname) when a file link is clicked on.
|
Link | [{{#fileLink: anchorname}} link text] [{{#fileLink: anchorname|pagetitle}} link text] <file anchor="anchorname" [name="filename"] [title="pagetitle"]>link text</file> Creates a link to download all blocks that are attached to an anchor anchorname.
|
Anchor-link | [{{#file: filename}} link text] <file name="filename" [tag="''tagname''"]>link text</file> Creates a link to download the next wiki block as a file named filename.
|
Examples
* '''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 downloadable text with wiki comments</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 still </code> very easily <code class="method3.txt">interleave downloadable text with wiki comments but with less typing</code> <code class="method3.txt"> Obviously, there is absolutely no limitation on the size of the text </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 <file anchor="method6.txt">this file</file>. 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 downloadable code with wiki 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 downloadable text with wiki comments
- 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 still
very easilyinterleave downloadable text with wiki comments but with less typing
s
Obviously, there is absolutely
no limitation
on the size of the
text
- 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 <file anchor="method6.txt">this file</file>. Of course the old syntax
{{#fileanchor}}
for anchor is still supported.
- {{#fileanchor: method6.txt}}
Again, we can
also very easilyinterleave downloadable code with wiki text while using the new syntax
References:
The code
{{{content}}}