LyricExtension/Source Code Dev
From PeacockWiki
(Difference between revisions)
| Revision as of 03:22, 1 June 2006 (edit) Trevorp (Talk | contribs) ← Previous diff |
Revision as of 05:48, 1 June 2006 (edit) Trevorp (Talk | contribs) Next diff → |
||
| Line 4: | Line 4: | ||
| # | # | ||
| # 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 |
| # Tested on MediaWiki 1.6devel, PHP 5.0.5 (apache2handler) | # Tested on MediaWiki 1.6devel, PHP 5.0.5 (apache2handler) | ||
| # | # | ||
| Line 14: | Line 14: | ||
| # * 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 21: | Line 22: | ||
| # 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]; | ||
| + | } | ||
| + | |||
| + | ################################################################################ | ||
| + | # CSS section | ||
| + | # | ||
| + | # This section has no configuration, and can be ignored. | ||
| + | # | ||
| + | function get_css() | ||
| + | { | ||
| + | return | ||
| + | "#lyric {\n". | ||
| + | " padding: 1em;\n". | ||
| + | " border: 1px solid silver;\n". | ||
| + | " color: black;\n". | ||
| + | " background-color: #ffffcc;\n". | ||
| + | "}\n"; | ||
| + | } | ||
| + | |||
| + | #if(strcasecmp(filename(__FILE__), filename($_SERVER['SCRIPT_NAME']))==0) | ||
| + | if(!isset($wgScriptPath)) | ||
| + | { | ||
| + | header("Content-type: text/css"); | ||
| + | echo get_css(); | ||
| + | } | ||
| ################################################################################ | ################################################################################ | ||
| Line 28: | Line 65: | ||
| # | # | ||
| + | if(isset($wgScriptPath)) | ||
| + | { | ||
| $wgExtensionCredits["parserhook"][]=array( | $wgExtensionCredits["parserhook"][]=array( | ||
| 'name' => 'Lyric Extension', | 'name' => 'Lyric Extension', | ||
| Line 34: | Line 73: | ||
| '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 46: | Line 85: | ||
| # | # | ||
| + | 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 81: | Line 123: | ||
| # 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". | + | $css = "/*<![CDATA[*/". |
| - | "#lyric {\n". | + | # "\n".get_css()."\n". |
| - | " padding: 1em;\n". | + | " @import \"$wgScriptPath/extensions/".filename(__FILE__)."\"; ". |
| - | " border: 1px solid silver;\n". | + | "/*]]>*/"; |
| - | " color: black;\n". | + | |
| - | " background-color: #ffffcc;\n". | + | |
| - | "}\n". | + | |
| - | "\n/*]]>*/"; | + | |
| return true; | return true; | ||
| } | } | ||
Revision as of 05:48, 1 June 2006
<?php
#
# Simple lyric parser extension for mediawiki.
# Written by Trevor Peacock, 1 June 2006
# version 0.2
# 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];
}
################################################################################
# CSS section
#
# This section has no configuration, and can be ignored.
#
function get_css()
{
return
"#lyric {\n".
" padding: 1em;\n".
" border: 1px solid silver;\n".
" color: black;\n".
" background-color: #ffffcc;\n".
"}\n";
}
#if(strcasecmp(filename(__FILE__), filename($_SERVER['SCRIPT_NAME']))==0)
if(!isset($wgScriptPath))
{
header("Content-type: text/css");
echo get_css();
}
################################################################################
# Extension Credits Definition
#
# This section has no configuration, and can be ignored.
#
if(isset($wgScriptPath))
{
$wgExtensionCredits["parserhook"][]=array(
'name' => 'Lyric Extension',
'version' => '0.1',
'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");
}
#render <lyric> text
function renderLyric($input, $argv)
{
#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
global $wgOut;
return $wgOut->parse($transform, false);
}
################################################################################
# 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) {
$css = "/*<![CDATA[*/".
# "\n".get_css()."\n".
" @import \"$wgScriptPath/extensions/".filename(__FILE__)."\"; ".
"/*]]>*/";
return true;
}
?>
