LyricExtension/Source Code Dev

From PeacockWiki

(Difference between revisions)
Jump to: navigation, search
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;
}

?>
Personal tools