Hi folks.  Here are some further notes on our experiences with the MediaWiki extension.

1) <inlineContents> didn't work properly for PDB data until I disabled $this->mValInlineContents = preg_replace("/\n/", "\\n'+\n'", $this->mValInlineContents); in renderJmolApplet().  I see this was noted on the Jmol Wiki on one of the inline example pages -- http://wiki.jmol.org/index.php/Inlined_MDL_Molfile -- by a certain SHL last month.  The problem seems to be common across multiple data formats.  Looking at the line itself I think it's unnecessary.

2) I had to tweak the setting of $this->mValUrlContents (line 297) in renderInternalJmolApplet() to account for our wiki's index path (/~wiki/index.php rather than /index.php due to the wiki being part of a larger website).  Not a big deal but may be worth a mention in the installation notes.

3) <jmolAppletButton> doesn't seem to work properly -- a new window opens and there is an applet box inside (briefly displaying the intended background color when <color> tag is used) but it goes blank.  This is also the case with an example on the Jmol Wiki -- http://wiki.jmol.org/index.php/Jmol_MediaWiki_Extension -- try the "Show ethanol in popup window" button at the bottom.  You may see a message about downloading the applet, but nothing comes of it.  This may be due to a lack of JavaScript calling jmolInitialize() and so may be related to the earlier cache problems with MediaWiki (see earlier thread).

Hope this helps,


Joseph R Moran/Complementary/CORP

26-Mar-2007 13:47

Re: [Jmol-users] Jmol MediaWiki extension, works in preview but not on live pageLink

Hi folks.  It works now!  Details follow.

My group's wiki is behind a corporate proxy so it's unreachable from your ends.  Thanks Nico for providing the new JmolExtension.php on wiki.jmol.org and for your LocalSettings.php excerpts.  No significant differences between our LocalSettings.php files.  Regarding the JmolExtension.php diffs, they were as follows:

-bash-3.00$ diff JmolExtension.php.old JmolExtension.php
>     $wgParser->disableCache();
>     $wgParser->disableCache();

...one disableCache() call in wfJmolRender() as discussed on Friday, and another in wfJmolDevRender() which is new but may or may not be relevant for nondevelopment use.  That said, I did have to save the wiki page one more time after updating JmolExtension.php before it would work, perhaps to remove some cache data within the wiki that disableCache() couldn't reach.  I'm really not sure, and it's possible if I had done this on Friday it would have worked then.  At any rate, live/normal page views do work consistently now.

Thanks Nico and everyone for your help!


"Nicolas Vervelle" <nvervelle@numericable.fr>

24-Mar-2007 06:22

Re: [Jmol-users] Jmol MediaWiki extension, works in preview but not on live page

Hi Joseph,

Can you give an URL to your wiki so that I can check myself ?

I have uploaded the latest version of JmolExtension.php on the Jmol Wiki:


At the end of the mail, I have put a stripped version of my LocalSettings.php file.
You can compare it with your own (for example, do you use MemCached ?)

If I have new ideas before monday, I will try to implement them.
Have a nice weekend


joseph.r.moran@gsk.com wrote:

Regarding updating the argument list for onBeforePageDisplay() to be just &$out -- PHP was satisfied but otherwise no change.

Regarding your tests -- sorry I didn't include mention of purge tests from my end.  But yes, our results matched: edit/preview ok, normal/live nok, purge ok.

Now regarding your latest suggestion regarding disableCache() in wfJmolRender(), it's no dice on my end.  I tried it together with our earlier edits up to and including above, and then I tried inserting the $wgParser->disableCache(); statement into a stock JmolExtension.php -- the results were the same (live nok).

That includes Firefox and IE7 with empty local caches, and after using the purge mode to clear MediaWiki's cache.  Touching or otherwise updating MediaWiki's LocalSettings.php also forces MediaWiki to clear its cache, and I did so -- still nok on the live page.  I was beginning to think this was a cache issue within MediaWiki and we could work around it with suitable tweaks to LocalSettings.php, now I don't know.

All the test pages on wiki.jmol.org do work for me -- I think before today only the uploaded XYZ example worked properly, now all three upload examples work, as does the "Inlined CML File" example.

FYI, I'm heading home for the day and won't be able to revisit this until Monday.  Thanks for your attention and suggestions today,



# This file was automatically generated by the MediaWiki installer.
# If you make manual changes, please keep track in case you need to
# recreate them later.
# See includes/DefaultSettings.php for all configurable settings
# and their default values, but don't forget to make changes in _this_
# file, not there.

# If you customize your file layout, set $IP to the directory that contains
# the other MediaWiki files. It will be used as a base to locate files.
if( defined( 'MW_INSTALL_PATH' ) ) {
} else {
   $IP = dirname( __FILE__ );

$path = array( $IP, "$IP/includes", "$IP/languages" );
set_include_path( implode( PATH_SEPARATOR, $path ) . PATH_SEPARATOR . get_include_path() );

require_once( "includes/DefaultSettings.php" );

# If PHP's memory limit is very low, some operations may fail.
# ini_set( 'memory_limit', '20M' );

if ( $wgCommandLineMode ) {
   if ( isset( $_SERVER ) && array_key_exists( 'REQUEST_METHOD', $_SERVER ) ) {
       die( "This script must be run from the command line\n" );
} elseif ( empty( $wgNoOutputBuffer ) ) {
   ## Compress output if the browser supports it
   if( !ini_get( 'zlib.output_compression' ) ) @ob_start( 'ob_gzhandler' );

$wgSitename         = "Jmol";

$wgScriptPath       = "";
$wgScript           = "$wgScriptPath/index.php";
$wgRedirectScript   = "$wgScriptPath/redirect.php";

## For more information on customizing the URLs please see:
## If using PHP as a CGI module, the ?title= style usually must be used.
$wgArticlePath      = "$wgScript/$1";
# $wgArticlePath      = "$wgScript?title=$1";

$wgStylePath        = "$wgScriptPath/skins";
$wgStyleDirectory   = "$IP/skins";
#$wgLogo             = "$wgStylePath/common/images/wiki.png";
$wgLogo             = "$wgScriptPath/Jmol_smallLogo.gif";

$wgUploadPath       = "$wgScriptPath/images";
$wgUploadDirectory  = "$IP/images";

$wgEnableEmail      = true;
$wgEnableUserEmail  = true;

## For a detailed description of the following switches see
http://meta.wikimedia.org/Enotif and http://meta.wikimedia.org/Eauthent
## There are many more options for fine tuning available see
## /includes/DefaultSettings.php
## UPO means: this is also a user preference option
$wgEnotifUserTalk = true; # UPO
$wgEnotifWatchlist = true; # UPO
$wgEmailAuthentication = true;

# Experimental charset support for MySQL 4.1/5.0.
$wgDBmysql5 = false;

## Shared memory settings
$wgMainCacheType = CACHE_NONE;
$wgMemCachedServers = array();

## To enable image uploads, make sure the 'images' directory
## is writable, then set this to true:
$wgEnableUploads       = true;
$wgUseImageResize      = true;
# $wgUseImageMagick = true;
# $wgImageMagickConvertCommand = "/usr/bin/convert";

## If you want to use image uploads under safe mode,
## create the directories images/archive, images/thumb and
## images/temp, and make them all writable. Then uncomment
## this, if it's not already uncommented:
$wgHashedUploadDirectory = false;

## If you have the appropriate support software installed
## you can enable inline LaTeX equations:
$wgUseTeX           = false;
$wgMathPath         = "{$wgUploadPath}/math";
$wgMathDirectory    = "{$wgUploadDirectory}/math";
$wgTmpDirectory     = "{$wgUploadDirectory}/tmp";

$wgLocalInterwiki   = $wgSitename;

$wgLanguageCode = "en";

## Default skin: you can change the default skin. Use the internal symbolic
## names, ie 'standard', 'nostalgia', 'cologneblue', 'monobook':
$wgDefaultSkin = 'monobook';

## For attaching licensing metadata to pages, and displaying an
## appropriate copyright notice / icon. GNU Free Documentation
## License and Creative Commons licenses are supported so far.
# $wgEnableCreativeCommonsRdf = true;
$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright
$wgRightsUrl = "";
$wgRightsText = "";
$wgRightsIcon = "";
# $wgRightsCode = ""; # Not yet used

$wgDiff3 = "";

# When you make changes to this configuration file, this will make
# sure that cached pages are cleared.
$configdate = gmdate( 'YmdHis', @filemtime( __FILE__ ) );
$wgCacheEpoch = max( $wgCacheEpoch, $configdate );

## Jmol specific settings

# Prevent anonymous users to flag a modification as minor
$wgAllowAnonymousMinor = false;

# Enable blocking of open proxies
$wgEnableSorbs = true;

# Permissions for all users (including anonymous)
$wgGroupPermissions['*'    ]['createaccount'] = true;
$wgGroupPermissions['*'    ]['edit'         ] = false;
$wgGroupPermissions['*'    ]['interwiki'    ] = false;
$wgGroupPermissions['*'    ]['read'         ] = true;

# Permissions for logged in users
$wgGroupPermissions['user' ]['edit'         ] = true;

# Permissions for sysop
$wgGroupPermissions['sysop']['interwiki'    ] = true;

# SpamBlacklist extension to prevent spam
require_once( "$IP/extensions/SpamBlacklist/SpamBlacklist.php" );
$wgSpamBlacklistFiles = array(
"http://meta.wikimedia.org/w/index.php?title=Spam_blacklist&action=raw&sb_ver=1", // Wikimedia's list
 "DB: wikijmolorg JmolWiki_Blacklist"

# Special:Interwiki extension

# Special:Filepath extension

# CategoryTree extension
$wgUseAjax = true;

# CharInsert extension

# Cite extension

# ParserFunctions extension

# SemanticMediaWiki extension

# RenameUser extension

# Jmol extension
$wgJmolAuthorizeUrl = true;
$wgFileExtensions[] = 'cml';
$wgFileExtensions[] = 'ico';
$wgFileExtensions[] = 'mol';
$wgFileExtensions[] = 'pdb';
$wgFileExtensions[] = 'xyz';
$wgTrustedMediaFormats[] = 'chemical/x-xyz';