LyricExtension/Source Code
From PeacockWiki
(Difference between revisions)
Revision as of 03:27, 1 June 2006 (edit) Trevorp (Talk | contribs) ← Previous diff |
Current revision (03:56, 2 August 2009) (edit) Trevorp (Talk | contribs) (Minor change to fix "Undefined variable: wgScriptPath" error) |
||
Line 5: | Line 5: | ||
# | # | ||
# Simple lyric parser extension for mediawiki. | # Simple lyric parser extension for mediawiki. | ||
- | # Written by Trevor Peacock, 18 May 2006 | + | # Written by Trevor Peacock, 1 June 2006 |
- | # version 0.1 | + | # version 0.2.1 |
# Tested on MediaWiki 1.6devel, PHP 5.0.5 (apache2handler) | # Tested on MediaWiki 1.6devel, PHP 5.0.5 (apache2handler) | ||
# | # | ||
Line 15: | Line 15: | ||
# * Allows basic lyric notation | # * Allows basic lyric notation | ||
# * Optional CSS styling embedded in every page | # * Optional CSS styling embedded in every page | ||
+ | # * CSS styling not embedded in meta tage, rather @import-ed from extension file | ||
# | # | ||
# To install, copy this file into "extensions" directory, and add | # To install, copy this file into "extensions" directory, and add | ||
Line 22: | Line 23: | ||
# require("extensions/lyric.php"); | # require("extensions/lyric.php"); | ||
# | # | ||
+ | |||
+ | ################################################################################ | ||
+ | # Functions | ||
+ | # | ||
+ | # This section has no configuration, and can be ignored. | ||
+ | # | ||
+ | |||
+ | function filename($name) | ||
+ | { | ||
+ | $name=explode('/', $name); | ||
+ | $name=explode('\\', $name[count($name)-1]); | ||
+ | return $name[count($name)-1]; | ||
+ | } | ||
################################################################################ | ################################################################################ | ||
Line 29: | Line 43: | ||
# | # | ||
+ | if(isset($wgScriptPath)) | ||
+ | { | ||
$wgExtensionCredits["parserhook"][]=array( | $wgExtensionCredits["parserhook"][]=array( | ||
'name' => 'Lyric Extension', | 'name' => 'Lyric Extension', | ||
- | 'version' => '0.1', | + | 'version' => '0.2.2', |
'url' => 'http://wiki.peacocktech.com/wiki/LyricExtension', | 'url' => 'http://wiki.peacocktech.com/wiki/LyricExtension', | ||
'author' => '[http://about.peacocktech.com/trevorp/ Trevor Peacock]', | 'author' => '[http://about.peacocktech.com/trevorp/ Trevor Peacock]', | ||
'description' => 'Adds features allowing easy notation of lyrics in mediawiki' ); | 'description' => 'Adds features allowing easy notation of lyrics in mediawiki' ); | ||
- | + | } | |
################################################################################ | ################################################################################ | ||
Line 47: | Line 63: | ||
# | # | ||
+ | if(isset($wgScriptPath)) | ||
+ | { | ||
#Instruct mediawiki to call LyricExtension to initialise new extension | #Instruct mediawiki to call LyricExtension to initialise new extension | ||
$wgExtensionFunctions[] = "LyricExtension"; | $wgExtensionFunctions[] = "LyricExtension"; | ||
+ | } | ||
#Install extension | #Install extension | ||
Line 56: | Line 75: | ||
global $wgParser; | global $wgParser; | ||
$wgParser->setHook("lyric", "renderLyric"); | $wgParser->setHook("lyric", "renderLyric"); | ||
+ | $wgParser->setHook("lyrics", "renderLyric"); | ||
} | } | ||
#render <lyric> text | #render <lyric> text | ||
- | function renderLyric($input, $argv) | + | function renderLyric($input, $argv, $parser) |
{ | { | ||
#make new lines in wikitext new lines in html | #make new lines in wikitext new lines in html | ||
Line 68: | Line 88: | ||
#parse embedded wikitext | #parse embedded wikitext | ||
- | global $wgOut; | + | return $parser->parse($transform, $parser->mTitle, $parser->mOptions, |
- | return $wgOut->parse($transform, false); | + | false, false)->getText(); |
} | } | ||
Line 82: | Line 102: | ||
# If you wish to manually define the style in the css templates, | # If you wish to manually define the style in the css templates, | ||
# add a "#" at the start of this line: | # add a "#" at the start of this line: | ||
+ | if(isset($wgScriptPath)) | ||
+ | { | ||
$wgHooks['SkinTemplateSetupPageCss'][] = 'LyricCss'; | $wgHooks['SkinTemplateSetupPageCss'][] = 'LyricCss'; | ||
+ | } | ||
function LyricCss(&$css) { | function LyricCss(&$css) { | ||
- | $css = "/*<![CDATA[*/\n". | + | global $wgScriptPath; |
- | "#lyric {\n". | + | $css.= "/*<![CDATA[*/". |
- | " padding: 1em;\n". | + | " @import \"$wgScriptPath/extensions/".filename(__FILE__)."\"; ". |
- | " border: 1px solid silver;\n". | + | "/*]]>*/\n"; |
- | " color: black;\n". | + | |
- | " background-color: #ffffcc;\n". | + | |
- | "}\n". | + | |
- | "\n/*]]>*/"; | + | |
return true; | return true; | ||
+ | } | ||
+ | |||
+ | ################################################################################ | ||
+ | # CSS section | ||
+ | # | ||
+ | # This section has no configuration, and can be ignored. | ||
+ | # | ||
+ | |||
+ | if(!isset($wgScriptPath)) | ||
+ | { | ||
+ | header("Content-type: text/css"); | ||
+ | ?>#lyric { | ||
+ | padding: 1em; | ||
+ | border: 1px solid silver; | ||
+ | color: black; | ||
+ | background-color: #ffffcc; | ||
+ | } | ||
+ | <?php | ||
} | } | ||
?> | ?> | ||
</pre> | </pre> |
Current revision
<?php # # Simple lyric parser extension for mediawiki. # Written by Trevor Peacock, 1 June 2006 # version 0.2.1 # Tested on MediaWiki 1.6devel, PHP 5.0.5 (apache2handler) # # developed to support the notation of lyrics in mediawiki. # see http://lyricwiki.org/User:TrevorP/Notation # # Features: # * Allows basic lyric notation # * Optional CSS styling embedded in every page # * CSS styling not embedded in meta tage, rather @import-ed from extension file # # To install, copy this file into "extensions" directory, and add # the following line to the end of LocalSettings.php # (above the ? > ) # # require("extensions/lyric.php"); # ################################################################################ # Functions # # This section has no configuration, and can be ignored. # function filename($name) { $name=explode('/', $name); $name=explode('\\', $name[count($name)-1]); return $name[count($name)-1]; } ################################################################################ # Extension Credits Definition # # This section has no configuration, and can be ignored. # if(isset($wgScriptPath)) { $wgExtensionCredits["parserhook"][]=array( 'name' => 'Lyric Extension', 'version' => '0.2.2', 'url' => 'http://wiki.peacocktech.com/wiki/LyricExtension', 'author' => '[http://about.peacocktech.com/trevorp/ Trevor Peacock]', 'description' => 'Adds features allowing easy notation of lyrics in mediawiki' ); } ################################################################################ # Lyric Render Section # # This section has no configuration, and can be ignored. # # This section renders <lyric> tags. It forces a html break on every line, # and styles the section with a css id. # this id can either be in the mediawiki css files, or defined by the extension # if(isset($wgScriptPath)) { #Instruct mediawiki to call LyricExtension to initialise new extension $wgExtensionFunctions[] = "LyricExtension"; } #Install extension function LyricExtension() { #install hook on the element <lyric> global $wgParser; $wgParser->setHook("lyric", "renderLyric"); $wgParser->setHook("lyrics", "renderLyric"); } #render <lyric> text function renderLyric($input, $argv, $parser) { #make new lines in wikitext new lines in html $transform=str_replace(array("\r\n", "\r","\n"), "<br/>", trim($input)); #define css lyric style $transform="<div id=\"lyric\">".$transform."</div>"; #parse embedded wikitext return $parser->parse($transform, $parser->mTitle, $parser->mOptions, false, false)->getText(); } ################################################################################ # CSS Styling Section # # This section may require configuration. # # This section adds a css style to all pages to style lyric sections # # If you wish to manually define the style in the css templates, # add a "#" at the start of this line: if(isset($wgScriptPath)) { $wgHooks['SkinTemplateSetupPageCss'][] = 'LyricCss'; } function LyricCss(&$css) { global $wgScriptPath; $css.= "/*<![CDATA[*/". " @import \"$wgScriptPath/extensions/".filename(__FILE__)."\"; ". "/*]]>*/\n"; return true; } ################################################################################ # CSS section # # This section has no configuration, and can be ignored. # if(!isset($wgScriptPath)) { header("Content-type: text/css"); ?>#lyric { padding: 1em; border: 1px solid silver; color: black; background-color: #ffffcc; } <?php } ?>