Hi Nick,
in PHP the error log can be confusing... T_VARIABLE just states that
there is a missing parentheses or semi colon nearby line 137.
I believe that the first 2 lines are now correct after what you added.
There might be something wrong with the $title part : there is no
closing parenthesis to the strtr function. I don't know what the
';snip;' is for ?
IMHO you should give a try to :
$title = 'javascript:jmolScript(' .
Xml::encodeJsVar(
'load ' . strtr(
$path,
array( ';' => '', ' ' => '' )) .
'; snip;'
) . ');';
Paul
Le 9 mai 08 à 17:13, Nick Greeves a écrit :
This might be regarded as off topic, but I hope someone here reads
PHP.
I'm trying to get image maps to execute Jmol commands inside a
MediaWiki using Nico's Jmol extension.
Jmol windows are loading just fine but I need to pass the commands
from the image maps. I contacted Tim Starling who wrote the Image
Map Extension for help and he suggested some code but it is not
working and I can't see how to correct it.
No, external links are limited to a set of previously defined
protocols, such as http: and https:. This is for security. If we
allowed javascript:, then someone could make a link which, when
clicked, steals your login session and posts it to another site
for exploitation.
What I would suggest is that you patch ImageMap_body.php at line
135 of the subversion trunk version <http://svn.wikimedia.org/
svnroot/mediawiki/trunk/extensions/ImageMap/ImageMap_body.php>
inserting something like this:
} elseif substr( $link, 0, strlen( 'loadjmol:' ) ) == 'loadjmol:' ) {
preg_match( '/^\[loadjmol:(.*?)\]/', $link, $m );
$path = $m[1];
$title = 'javascript:jmolScript(' .
Xml::encodeJsVar(
'load ' . strtr(
$path,
array( ';' => '', ' ' => '' ) .
'; snip;'
) . ');';
$alt = $url;
$externLink = true;
This would allow you to link to a virtual URL protocol
"loadjmol:". To continue your example:
circle 433 100 40 [loadjmol:model/miscellaneous/ene_reaction/1-
pentene_decomposition.xyz]
The encodeJsVar is to stop people from embedding arbitrary
JavaScript in a link, and the strtr is to stop people from
embedding arbitrary Jmol commands in a link. With a little bit of
PHP knowledge (the manual is at http://php.net/), you should be
able to extend this to link to whatever you want.
The code I wrote above is untested, it may have a bug or two.
I've tried inserting the code at line 135 but each time I try, it
breaks the wiki pages that have image maps in place.
Judging by the server logs, there is a missing "(" in the first
line so I tried
} elseif ( substr( $link, 0, strlen( 'loadjmol:' ) ) ==
'loadjmol:' ) {
but the logs still refer to unexpected T_VARIABLE in line 137 which is
$path = $m[1];
Are there any experts in PHP who can see the problem here?
All the best
Nick
--
3D Organic Animations http://www.chemtube3d.com
Tel: +44 (0)151-794-3506 (3500 secretary)
----------------------------------------------------------------------
---
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save
$100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://
java.sun.com/javaone_______________________________________________
Jmol-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jmol-users
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Jmol-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jmol-users