On several mediawiki installations I run I have added the Google Analytics code to the <head> of each page. I couldn't find any way to do this other than directly inserting it into the code for includes/OutputPage.php The code in question is to load an external .js file from Google's servers, and then call a method on it.
Question 1: Is there some alternative to modifying this file that I've missed? I know that there's the option for user-specific javascript, but I'm looking for something similar, where I can edit a page to change the JavaScript used by everyone.
Question 2: Assuming not, what would the consensus be on providing some way of doing this? On one of my installations I forgot to re-modify this file after an update, and lost a week's worth of tracking data. I'd really like to find a way to factor this out so that I don't do that again. I also suspect that other people would like this facility - either for adding the Google code, or for other reasons.
My knowledge of the internals isn't good enough to do this myself yet, but if it's deemed useful I'm willing to have a go at it if people could give me a few pointers.
Thanks,
Tony
On 1/19/06, Tony Bowden tony-wikitech@kasei.com wrote:
Question 1: Is there some alternative to modifying this file that I've missed? I know that there's the option for user-specific javascript, but I'm looking for something similar, where I can edit a page to change the JavaScript used by everyone.
There's global css and js files for several of the skins, in the Mediawiki namespace. For example, on enwiki: http://en.wikipedia.org/wiki/MediaWiki:Monobook.js http://en.wikipedia.org/wiki/MediaWiki:Monobook.css So everyone using the Monobook skin gets those files. You don't need to modify any code, it's all stored in the database.
There is Mediawiki:Common.css, a css file which is common to all skins, but I'm not sure whether there is support for a Mediawiki:Common.js.
-- Stephen Bain stephen.bain@gmail.com
On Thu, Jan 19, 2006 at 11:43:45PM +1100, Stephen Bain wrote:
Question 1: Is there some alternative to modifying this file that I've missed? I know that there's the option for user-specific javascript, but I'm looking for something similar, where I can edit a page to change the JavaScript used by everyone.
There's global css and js files for several of the skins, in the Mediawiki namespace. For example, on enwiki: http://en.wikipedia.org/wiki/MediaWiki:Monobook.js http://en.wikipedia.org/wiki/MediaWiki:Monobook.css So everyone using the Monobook skin gets those files. You don't need to modify any code, it's all stored in the database.
AIUI though, there's no way from within a Javascript file like this to load another remote Javascript file (i.e. the one from Google's servers).
Tony
On 1/19/06, Tony Bowden tony-wikitech@kasei.com wrote:
On Thu, Jan 19, 2006 at 11:43:45PM +1100, Stephen Bain wrote:
There's global css and js files for several of the skins, in the Mediawiki namespace. For example, on enwiki: http://en.wikipedia.org/wiki/MediaWiki:Monobook.js http://en.wikipedia.org/wiki/MediaWiki:Monobook.css So everyone using the Monobook skin gets those files. You don't need to modify any code, it's all stored in the database.
AIUI though, there's no way from within a Javascript file like this to load another remote Javascript file (i.e. the one from Google's servers).
I don't know the full scope of this particular problem, but I believe using document.write() to put out a <script> tag works. Beware, though, for this introduces more latency (the source document has to wait for the inserted one to load).
It works for pages on the same subdomain (en.wikipedia.org) and maybe also the same domain.
I can suggest the following solutions: 1) Edit security settings on users' computers to allow the loading of remote javascript (unlikely) 2) Edit users' "hosts" file to map "r3m0t.wikipedia.org" to your own server's IP address (= Google). Then use document.write() to include the script. 3) Attempt to copy the script to a page in the subdomain. (Actually, it will be unable to contact google.com) 4) Create a page in the subdomain which is a REDIRECT to the javascript file on google.com
It's difficult to integrate sites from different domains, and perhaps for good reason.
On 19/01/06, Evan Martin evanm@google.com wrote:
On 1/19/06, Tony Bowden tony-wikitech@kasei.com wrote:
On Thu, Jan 19, 2006 at 11:43:45PM +1100, Stephen Bain wrote:
There's global css and js files for several of the skins, in the Mediawiki namespace. For example, on enwiki: http://en.wikipedia.org/wiki/MediaWiki:Monobook.js http://en.wikipedia.org/wiki/MediaWiki:Monobook.css So everyone using the Monobook skin gets those files. You don't need to modify any code, it's all stored in the database.
AIUI though, there's no way from within a Javascript file like this to load another remote Javascript file (i.e. the one from Google's servers).
I don't know the full scope of this particular problem, but I believe using document.write() to put out a <script> tag works. Beware, though, for this introduces more latency (the source document has to wait for the inserted one to load). _______________________________________________ Wikitech-l mailing list Wikitech-l@wikimedia.org http://mail.wikipedia.org/mailman/listinfo/wikitech-l
On Thu, Jan 19, 2006 at 11:31:54PM +0000, Tomer Chachamu wrote:
It works for pages on the same subdomain (en.wikipedia.org) and maybe also the same domain.
...
It's difficult to integrate sites from different domains, and perhaps for good reason.
This is why I'm looking for a solution that doesn't involve even trying to do this, but just allows me to change the <head> generated in mediawiki, without having to edit source (and remember to resync at each upgrade)
Thanks,
Tony
On Fri, 2006-01-20 at 08:51 +0000, Tony Bowden wrote:
On Thu, Jan 19, 2006 at 11:31:54PM +0000, Tomer Chachamu wrote:
It works for pages on the same subdomain (en.wikipedia.org) and maybe also the same domain.
...
It's difficult to integrate sites from different domains, and perhaps for good reason.
This is why I'm looking for a solution that doesn't involve even trying to do this, but just allows me to change the <head> generated in mediawiki, without having to edit source (and remember to resync at each upgrade)
Here's the cleanest way I can think of:
1. Apply this patch (which should eventually find its way into MW): http://bugzilla.wikipedia.org/show_bug.cgi?id=3603
2. Write a very small extension which calls $wgOut->addScript('<script src="myveryownjsfile.js"></script>'); I can't think of which hook to use off the top of my head, but I'm sure there's one that's appropriate.
You will still have to remember to resync until the patch finds its way into a release you are using, but it's the most likely way I can think of to solve your problem.
Rob
On Fri, Jan 20, 2006 at 10:44:09AM -0800, Rob Lanphier wrote:
- Apply this patch (which should eventually find its way into MW):
Aha. Excellent. When browsing the source I did spot addScript(), but couldn't work out how to use it. This looks perfect.
- Write a very small extension which calls $wgOut->addScript('<script
src="myveryownjsfile.js"></script>'); I can't think of which hook to use off the top of my head, but I'm sure there's one that's appropriate.
I'll dig around and see. If anyone can suggest one, I'd appreciate it!
You will still have to remember to resync until the patch finds its way into a release you are using, but it's the most likely way I can think of to solve your problem.
*nod*
I'm happier resync-ing a patch that will hopefully be going into a future release than a random one of my own.
Thanks a lot,
Tony
wikitech-l@lists.wikimedia.org