Extension:PJIRC
From MediaWiki.org
|
PJIRC Release status: beta |
|
|---|---|
| Implementation | Special page |
| Description | Adds an PJIRC Applet to your wiki |
| Author(s) | Jamasi |
| Last Version | 0.9.0 (July 24, 2007) |
| MediaWiki | 1.10+ (tested) 1.7+ (supposed) |
| License | GPL-2 (I'd prefer to use AGPL-3 if other contributors are ok with this) |
| Download | see below |
Contents |
[edit] What does this extension do?
This extension allows users to engage in an IRC chat, using PJIRC through the MediaWiki interface. It's a loosly based on the IRC Chat extension by Quentin Sheets.
[edit] Installation
- OPTIONAL -- Download the PJIRC binary, which can be found at www.pjirc.com, and save it into the
/ircdirectory of your website. - Save the source code below into its respective files in "/extensions/PJIRC/".
- OPTIONAL -- Configure your applet using MediaWiki:IrcXyz pages
- Enjoy your new IRC client.
[edit] Changes to LocalSettings.php
require_once("$IP/extensions/PJIRC/SpecialIRC.php");
[edit] Code
extensions/PJIRC/SpecialIRC.php
<?php # Not a valid entry point, skip unless MEDIAWIKI is defined if (!defined('MEDIAWIKI')) { echo <<<EOT To install my extension, put the following line in LocalSettings.php: require_once( "$IP/extensions/PJIRC/SpecialIRC.php" ); EOT; exit( 1 ); } /** * A Special Page extension to offer an PJIRC java-applet to visitors * * @addtogroup Extensions * * @author Jan M. Simons <jamasi at piratenpartei.de> * @copyright Copyright © 2007, Jan M. Simons * inspired by http://www.mediawiki.org/wiki/Extension:IRC_Chat from Quentin Sheets * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later */ $wgExtensionCredits['specialpage'][] = array( 'name' => 'PJIRC', 'author' => 'Jan M. Simons', 'version' => '0.9.0', 'description' => 'Allows users to engage in an IRC chat, using PJIRC through the MediaWiki interface.', 'url' => 'http://www.mediawiki.org/wiki/Extension:PJIRC', ); $wgAutoloadClasses['PJIRC'] = dirname(__FILE__) . '/SpecialIRC_body.php'; $wgSpecialPages['PJIRC'] = 'PJIRC'; $wgHooks['LoadAllMessages'][] = 'PJIRC::loadMessages';
extensions/PJIRC/SpecialIRC_body.php
<?php class PJIRC extends SpecialPage { function PJIRC() { SpecialPage::SpecialPage("PJIRC"); self::loadMessages(); } function execute( $par ) { global $wgOut, $wgUser, $wfMsgHtml, $wgTitle, $wgParser; $this->setHeaders(); // Get IrcNickname of the user use MediaWiki username otherwise If ($wgUser->IsLoggedIn()) { $ircNick = $wgUser->getName(); } else { $ircNick = "Guest"; } if ($wgUser->mId<1) { // sysop uses MediaWiki:IrcNick if (wfMsg('ircNick')) $ircNick = wfMsg('ircNick'); } else { // get nickname from userpage $userpage = $wgUser->getUserPage(); $tmpArticle = new Article(Title::newFromText($userpage->getPrefixedText().'/IrcNick')); $content = $tmpArticle->fetchContent(0,false,false); if (trim($content," ")) $ircNick = $content; } //make nickname irc-safe $illegalChars = array(".", "_", "/", "\\", "#", "*", "+", "~", "!"); $ircNick = str_replace($illegalChars, "", $ircNick); // if nickname is still empty use default if ($ircNick == "") $ircNick = "Guest???"; // load settings (can be overridden with Mediawiki:IrcXyz pages) $ircCodebase = wfMsg('ircCodebase'); // http://yourdomain/IRC $ircArchive = wfMsg('ircArchive'); // irc.jar,pixx.jar $ircCabinets = wfMsg('ircCabinets'); // irc.cab,securedirc.cab,pixx.cab $ircLangExt = wfMsg('ircLangExt'); // txt $ircServer = wfMsg('ircServer'); // irc.yourfavourite.net $ircServerPort = wfMsg('ircServerPort'); // 6667 $ircJoinChannel = wfMsg('ircJoinChannel'); // #yourChannel $ircWidth = wfMsg('ircWidth'); // 640 $ircHeight = wfMsg('ircHeight'); // 400 $ircAltNick = wfMsg('ircAltNick'); // Guest??? // If page was called with a parameter join that channel if ($par) $ircJoinChannel = "#".$par; $ircApplet = '<applet codebase="'.$ircCodebase.'" code="IRCApplet.class" archive="'.$ircArchive.'" width="'.$ircWidth.'" height="'.$ircHeight.'">'."\n"; if ($ircCabinets) $ircApplett .= '<param name="CABINETS" value="'.$ircCabinets.'">'."\n"; $ircApplet .= '<param name="nick" value="'.$ircNick.'"> <param name="alternatenick" value="'.$ircAltNick.'"> <param name="userid" value="wikichat"> <param name="name" value="Wiki User"> <param name="host" value="'.$ircServer.'"> <param name="port" value="'.$ircServerPort.'"> <param name="gui" value="pixx"> <param name="quitmessage" value="PJIRC forever!"> <param name="asl" value="true"> <param name="useinfo" value="true">'."\n"; if ($ircJoinChannel) $ircApplet .= '<param name="Command1" value="/join '.$ircJoinChannel.'">'."\n"; if ($ircLangExt) { $ircApplet .= '<param name="pixx:lngextension" value="'.$ircLangExt.'"> <param name="lngextension" value="'.$ircLangExt.'">'."\n"; } $ircApplet .= '<param name="languageencoding" value="UnicodeLittle">'."\n"; $ircApplet .= '<param name="style:bitmapsmileys" value="true"> <param name="style:smiley1" value=":) img/sourire.gif"> <param name="style:smiley2" value=":-) img/sourire.gif"> <param name="style:smiley3" value=":-D img/content.gif"> <param name="style:smiley4" value=":d img/content.gif"> <param name="style:smiley5" value=":-O img/OH-2.gif"> <param name="style:smiley6" value=":o img/OH-1.gif"> <param name="style:smiley7" value=":-P img/langue.gif"> <param name="style:smiley8" value=":p img/langue.gif"> <param name="style:smiley9" value=";-) img/clin-oeuil.gif"> <param name="style:smiley10" value=";) img/clin-oeuil.gif"> <param name="style:smiley11" value=":-( img/triste.gif"> <param name="style:smiley12" value=":( img/triste.gif"> <param name="style:smiley13" value=":-| img/OH-3.gif"> <param name="style:smiley14" value=":| img/OH-3.gif"> <param name="style:smiley15" value=":\'( img/pleure.gif"> <param name="style:smiley16" value=":$ img/rouge.gif"> <param name="style:smiley17" value=":-$ img/rouge.gif"> <param name="style:smiley18" value="(H) img/cool.gif"> <param name="style:smiley19" value="(h) img/cool.gif"> <param name="style:smiley20" value=":-@ img/enerve1.gif"> <param name="style:smiley21" value=":@ img/enerve2.gif"> <param name="style:smiley22" value=":-S img/roll-eyes.gif"> <param name="style:smiley23" value=":s img/roll-eyes.gif"> <param name="style:floatingasl" value="true"> <param name="pixx:timestamp" value="true"> <param name="pixx:highlight" value="true"> <param name="pixx:highlightnick" value="true"> <param name="pixx:nickfield" value="true"> <param name="pixx:styleselector" value="true"> <param name="pixx:setfontonstyle" value="true"> <h1>No java support</h1> <p><font color="green">Sorry, but you need a Java 1.4.x enabled browser to use PJIRC.</font></p> </applet>'; //$wgOut->addHTML("<!--".$ircApplet."-->"); // for debugging $wgOut->addHTML($ircApplet); } function loadMessages() { static $messagesLoaded = false; global $wgMessageCache; if ( $messagesLoaded ) return; $messagesLoaded = true; // freenode settings (default) $defaultsettings = array ( 'ircCodebase' => 'http://java.freenode.net/freenode/pjirc/', 'ircArchive' => 'irc.jar,pixx.jar', 'ircCabinets' => '', 'ircLangExt' => '', 'ircServer' => 'irc.freenode.net', 'ircServerPort' => '6667', 'ircJoinChannel'=> '', 'ircWidth' => '640', 'ircHeight' => '400', 'ircAltNick' => 'Anon???', 'ircNick' => '' ); $wgMessageCache->addMessages($defaultsettings); /* // an alternative configuration (if you installed pjirc locally) // all settings can also be overridden with Mediawiki:IrcXxxx pages 'ircCodebase' => 'http://yourdomain/IRC', 'ircArchive' => 'irc.jar,pixx.jar', 'ircCabinets' => 'irc.cab,securedirc.cab,pixx.cab', 'ircLangExt' => 'txt', 'ircServer' => 'irc.yourfavourite.net', 'ircServerPort' => '6667', 'ircJoinChannel'=> '#yourChannel', 'ircWidth' => '640', 'ircHeight' => '400', 'ircAltNick' => 'Guest???', 'ircNick' => '' */ // internationalisation require( dirname( __FILE__ ) . '/SpecialIRC.i18n.php' ); foreach ( $allMessages as $lang => $langMessages ) { $wgMessageCache->addMessages( $langMessages, $lang ); } return true; } }
extensions/PJIRC/SpecialIRC.i18n.php
<?php // localisation file $allMessages = array( 'en' => array( 'pjirc' => 'IRC Chat' ), 'de' => array( 'pjirc' => 'IRC-Chat' ) );
[edit] Usage
After you've installed the extension you should be able to spot it on Special:Version on your Wiki additionally there should be a new specialpage called "IRC Chat".
You can change any defaultvalue (have a look at the code) by creating a page called MediaWiki:IrcNameofTheSetting, eg. MediaWiki:IrcServer and puting the desired value into this page.
By default the applet will use the username of anybody logged in to the wiki as the nickname for IRC. If a user wants to specify another nickname he can create a subpage of his userpage named User:Username/IrcNick which should contain only the desired username.
If you call the specialpage with Special:PJIRC/flood then it will automatically join the channel #flood on load.
You can specify a default channel to join by editing MediaWiki:IrcJoinChannel and placing "#ChannelName" into it.
[edit] Known Issues
- None at this current time.
[edit] Future Developments
This is a list of confirmed future holdings for this extension (besides the caveats). Please list all requests on the discussion page.
- Support for configuring the colors of the applet.

