MediaWiki talk:Common.js/Archive Jun 2007

New star at Spanish Featured Article's template edit

Hello, i'd like to change our current star icon at es:Plantilla:Destacado (it's a big bronze star) for the small yellow star used for the same porpouse at the French and English wikipedia. Could someone help me? I Post this at the template's discussion, and an librarian told me to come here. Thank you!--Fernandopascullo 19:30, 2 May 2007 (UTC)Reply

Well, the section how does it work pretty much explains how {{Link FA}} works here. You have it slightly differently in es:MediaWiki:Monobook.js: your function LinkFA() directly specifies   image. You could just change it to http://upload.wikimedia.org/wikipedia/en/d/d4/Monobook-bullet-star.png ( ). Or even better, do it the way it works here. Alex Smotrov 20:25, 2 May 2007 (UTC)Reply

Enhancements to importScript edit

I'm interested in seeing the following enhancements made to importScript():

  1. Ability to specify base server name
  2. Ability to specify specific script revision with oldid

I've seen something like the first one in place at ru:MediaWiki:Common.js. I haven't seen the second one, but I think it would be useful to let users stick with a known-good version of a script. For example, I currently have copies of User:Lupin/popups.js and User:Zocky/PicturePopups.js in my own userspace because I've been burnt by upgrades to scripts and prefer to stick with a known version and not be forcibly upgraded. If I could easily pull in a script using oldid, I wouldn't have this problem.

Here are my proposed versions of importScript() and importStylesheet():

function importScript( page, options ) {
    if( importedScripts[page] ) {
        return;
    }
    if (!options) options = {};
    importedScripts[page] = true;
    var server = '';
    if (options.server) {
        server = "http://" + options.server;
    }
    var url = server + wgScriptPath
            + '/index.php?title='
            + encodeURIComponent( page.replace( ' ', '_' ) )
            + '&action=raw&ctype=text/javascript';
    if (options.oldid) {
        url += "&oldid=" + encodeURIComponent(options.oldid);
    }
    var scriptElem = document.createElement( 'script' );
    scriptElem.setAttribute( 'src' , url );
    scriptElem.setAttribute( 'type' , 'text/javascript' );
    document.getElementsByTagName( 'head' )[0].appendChild( scriptElem );
}

function importStylesheet( page, options ) {
    if (!options) options = {};
    var server = '';
    if (options.server) {
        server = "http://" + options.server;
    }
    var url = server + wgScriptPath
              + '/index.php?title='
              + encodeURIComponent( page.replace( ' ', '_' ) )
              + '&action=raw&ctype=text/css';
    if (options.oldid) {
        url += "&oldid=" + encodeURIComponent(options.oldid);
    }
    var sheet = '@import "' + url + '";';
    var styleElem = document.createElement( 'style' );
    styleElem.setAttribute( 'type' , 'text/css' );
    styleElem.appendChild( document.createTextNode( sheet ) );
    document.getElementsByTagName( 'head' )[0].appendChild( styleElem );
}

The Russian version takes a single "lang" parameter instead of a hash of options, but I figured that using "server" would be more accomodating to hosting scripts on Meta or Commons, since they are under wikimedia.org, not wikipedia.org. Plus, I needed it to take a hash to support both "server" and "oldid". It would be pretty easy to support both "server" and "lang", but I didn't really see the point. The code would look something like this:

    if (options.server) {
        server = "http://" + options.server;
    } else if (options.lang) {
        server = wgServer.replace("\\b" + wgContentLanguage + "\\b", options.lang);
        // server = "http://" + options.lang + ".wikipedia.org";
    }

What do people think of doing this? I think that it would improve the ability to reuse scripts across multiple Wikimedia projects, especially if combined with an internationalization library like the one I'm playing around with here. Mike Dillon 00:36, 7 May 2007 (UTC)Reply

It might be worth adding support for the "smaxage" parameter here as well. Mike Dillon 15:34, 9 May 2007 (UTC)Reply

JavaScript version of MediaWiki:Edittools edit

Please contribute to the discussion of a JavaScript version of MediaWiki:Edittools at MediaWiki talk:Edittools#Request. If there is agreement to move in this direction, the code will have to be moved to MediaWiki:Edittools.js or some such and imported from MediaWiki:Common.js. Mike Dillon 05:35, 9 May 2007 (UTC) Reply

Audio pop-ups edit

We have an {{audio}} template for inline audio clips:

'''Bordeaux''' ({{Audio|Fr-Bordeaux.ogg|pronunciation}}) is a [[Seaport|port]] city in...

gives this:

Bordeaux (Audio file "Fr-Bordeaux.ogg" not found) is a port city in...
 
What the new version looks like in Firefox

A lot of people think the extra links are cluttery, but they're necessary for newcomers. I proposed that the links be removed with javascript and put in a pop-up instead. I don't know enough about javascript to write more than a mock-up, though. Could someone else finish this and deploy it site-wide?

When we finally get inline java players, the player could be inside the pop-up, too? — Omegatron 18:24, 28 April 2007 (UTC)Reply

Yes, I agree with this new JavaScript. Count me in. --Steinninn 10:19, 6 May 2007 (UTC)Reply
That's an interesting script, but it seems like it would be more appropriate as a user script than as a site-wide thing. What more do you think needs to be changed for it to be usable? I'd assume it needs some more cross-browser testing to deal with weird layout/margin issues. Also, I'd suggest requesting that some extra spans with their own distinct classes be added to {{audio}} to simplify some of the more fragile parts of the code relating to extracting and moving the "help" and "info" links (i.e. spans that contain only the help and info links respectively). Mike Dillon 02:42, 8 May 2007 (UTC)Reply
I think it's more appropriate as a site-wide thing. There are numerous complaints about the help and info links cluttering up articles, but there's really no way around them. We need to link to the help so that people can open ogg files, and we need to link to the description for copyright reasons and to find out more details about the audio sample.
The things that still need work: cross-browser, not extending past the edge of the browser window, not obstructing the original link, the timing with which it opens and closes and whether you're hovering over it, etc. etc. Just needs to be tweaked to work really nicely.
Agreed about the spans. I used class audiolink and audiolinkinfo, but they might be better in another place, etc. If the audio template is ever changed, it would break the javascript. The javascript should test to see whether the audio template has been changed, and if it has, do nothing, so that it degrades gracefully. — Omegatron 16:17, 12 May 2007 (UTC)Reply

Enhancements to importScript edit

I'm interested in seeing the following enhancements made to importScript():

  1. Ability to specify base server name
  2. Ability to specify specific script revision with oldid

I've seen something like the first one in place at ru:MediaWiki:Common.js. I haven't seen the second one, but I think it would be useful to let users stick with a known-good version of a script. For example, I currently have copies of User:Lupin/popups.js and User:Zocky/PicturePopups.js in my own userspace because I've been burnt by upgrades to scripts and prefer to stick with a known version and not be forcibly upgraded. If I could easily pull in a script using oldid, I wouldn't have this problem.

Here are my proposed versions of importScript() and importStylesheet():

function importScript( page, options ) {
    if( importedScripts[page] ) {
        return;
    }
    if (!options) options = {};
    importedScripts[page] = true;
    var server = '';
    if (options.server) {
        server = "http://" + options.server;
    }
    var url = server + wgScriptPath
            + '/index.php?title='
            + encodeURIComponent( page.replace( ' ', '_' ) )
            + '&action=raw&ctype=text/javascript';
    if (options.oldid) {
        url += "&oldid=" + encodeURIComponent(options.oldid);
    }
    var scriptElem = document.createElement( 'script' );
    scriptElem.setAttribute( 'src' , url );
    scriptElem.setAttribute( 'type' , 'text/javascript' );
    document.getElementsByTagName( 'head' )[0].appendChild( scriptElem );
}

function importStylesheet( page, options ) {
    if (!options) options = {};
    var server = '';
    if (options.server) {
        server = "http://" + options.server;
    }
    var url = server + wgScriptPath
              + '/index.php?title='
              + encodeURIComponent( page.replace( ' ', '_' ) )
              + '&action=raw&ctype=text/css';
    if (options.oldid) {
        url += "&oldid=" + encodeURIComponent(options.oldid);
    }
    var sheet = '@import "' + url + '";';
    var styleElem = document.createElement( 'style' );
    styleElem.setAttribute( 'type' , 'text/css' );
    styleElem.appendChild( document.createTextNode( sheet ) );
    document.getElementsByTagName( 'head' )[0].appendChild( styleElem );
}

The Russian version takes a single "lang" parameter instead of a hash of options, but I figured that using "server" would be more accomodating to hosting scripts on Meta or Commons, since they are under wikimedia.org, not wikipedia.org. Plus, I needed it to take a hash to support both "server" and "oldid". It would be pretty easy to support both "server" and "lang", but I didn't really see the point. The code would look something like this:

    if (options.server) {
        server = "http://" + options.server;
    } else if (options.lang) {
        server = wgServer.replace("\\b" + wgContentLanguage + "\\b", options.lang);
        // server = "http://" + options.lang + ".wikipedia.org";
    }

What do people think of doing this? I think that it would improve the ability to reuse scripts across multiple Wikimedia projects, especially if combined with an internationalization library like the one I'm playing around with here. Mike Dillon 00:36, 7 May 2007 (UTC)Reply

It might be worth adding support for the "smaxage" parameter here as well. Mike Dillon 15:34, 9 May 2007 (UTC)Reply

JavaScript version of MediaWiki:Edittools edit

Please contribute to the discussion of a JavaScript version of MediaWiki:Edittools at MediaWiki talk:Edittools#Request. If there is agreement to move in this direction, the code will have to be moved to MediaWiki:Edittools.js or some such and imported from MediaWiki:Common.js. Mike Dillon 05:35, 9 May 2007 (UTC)Reply

PROPOSAL: Adding New Java Script Code to Wikipedia edit

How can I request that new Java Script code be added to Wikipedia by an Administrator? The code would allow for entries in a Table/Chart to be autonumbered ... much like entries in a simple List can be autonumbered with the # symbol. Please advise. Thanks. (JosephASpadaro 03:57, 12 May 2007 (UTC))Reply

Just propose it below on this page :-) —METS501 (talk) 13:58, 12 May 2007 (UTC)Reply
While Joseph was discussing this with me, I wrote the code he wanted at User:Mike Dillon/Scripts/autonumber.js. It basically detects tables with class="autonumber" and adds a new cell to each row to create a column of automatic numbers. It's currently a little Monobook-specific in that it relies on the presence of "bodyContent" and I think we'd need to see a consensus for adding the feature somewhere before adding it site-wide. I've deployed similar code on another wiki and it works in Firefox and Internet Explorer. One thing that is weird about it is that you can't currently make an autonumbered table where the synthetic column is sortable because of a timing issue with the sortable code and onload hooks.
For what it's worth, I don't see this addition being worthwhile for Wikipedia, but I posted the code since I had already written it. Mike Dillon 15:01, 12 May 2007 (UTC)Reply

"Being bold" with executable site code edit

"Being bold" with site JavaScript is not cool... Changes to site JavaScript should only be made with established, demonstrable consensus and a clear benefit to a large segment of users that cannot be achieved with a user script. Not to mention thorough cross-browser testing.

Why do administrators think that protected pages are their playground? In my view, protection establishes a higher bar for discussion regardless of who is making the change. This applies doubly to the MediaWiki namespace; it is unconditionally protected for a reason. With the privilege of being able to edit protected pages should come the responsibility and good sense to discuss the changes first. Mike Dillon 14:49, 26 May 2007 (UTC)Reply

Perhaps a note should be added at the top of the page to this effect, since admins aren't always going to be aware that the javascript will remain in browsers' caches for a long time. Tra (Talk) 18:53, 26 May 2007 (UTC)Reply
Do you mean on this page or as a comment on the JavaScript page itself? Mike Dillon 18:59, 26 May 2007 (UTC)Reply
I meant as a comment on the page itself, although adding it to this talk page as well probably would probably also be useful. Tra (Talk) 19:26, 26 May 2007 (UTC)Reply

Totally agre with the point raised. Also, a note to Yonatan: please try selecting checkboxes while holding shift. setupCheckboxShiftClick() is supposed to help you — Alex Smotrov 13:18, 27 May 2007 (UTC)Reply

How about having the note looking something like this? Tra (Talk) 15:28, 27 May 2007 (UTC)Reply
/** Note to administrators *********************************************************
 *
 *  Changes made to this page will remain in people's browser caches for up to 31
 *  days even if they are later removed. Therefore, please test any scripts in
 *  multiple browsers and establish consensus on the talk page before adding them
 *  to this page.
 */
Looks good. Perhaps it should say something like "for up to 31 days". Mike Dillon 15:43, 27 May 2007 (UTC)Reply
I've put that in. Tra (Talk) 16:01, 27 May 2007 (UTC)Reply

Seriously, you've got to be kidding me. Does the code work? Was it tested before? Is it useful? Is it making Wikipedia better? If the answer to all of these is yes and the answer to the question, "Is there any reason to remove it other than wasting time?" is no, it should probably be readded (and yes, I'm implying the answers are the ones I as looking for). Obviously saying being bold was a very poor explanation and I agree with the above notion but the code is known to work 100% (it's been in another Wikipedia's monobook for probably a year) and is definitely useful to anybody restoring pages (do you really think the shift thing is useful when you've got a 1000 revision page?). Yonatan talk 17:28, 27 May 2007 (UTC)Reply

No we're quite serious. But on topic: What does this script accomplish that shift-clicking doesn't (I can restore Gay Nigger Association of America except for a few specific revisions in seconds)? Also this can be accomplished much more efficiently by having MediaWiki select the checkboxes by default. —Ruud 17:52, 27 May 2007 (UTC)Reply
In this case, I think the issue is more "is it useful" and has there been agreement that it is needed. The answer to the first one is subjective and the second one is no. As Alex pointed out, there is already a simple alternative hard-coded in wikibits.js, i.e. shift-clicking the checkboxes. With a 1000 revision page, you have to shift click four times. That being said, if a bunch of admins decide this is needed, then point to the consensus. As it is, the changes you've made make it a pain in the ass to do a partial undelete of an article with a large history, but either way a consensus is needed and I can't say whether the drawbacks outweight the gains, given the existing mechanisms. Perhaps consensus would decide on having "check all" and "uncheck all" buttons added (which sounds like a bugzilla candidate to me).
P.S. My rant is really about the general tendency of some admins to not be bothered waiting for consensus; not all parts apply to your action. Mike Dillon 17:54, 27 May 2007 (UTC)Reply
Obviously this should be a MediaWiki feature rather than a JS hack. You make some good points, but those are the ones regarding garnering consensus, etc. not anything bad about the change itself.
"As it is, the changes you've made make it a pain in the ass to do a partial undelete of an article with a large history"
Not really, they make it much easier. When doing a partial restore of a page with a large history, you'll want to restore most revisions (in fact, you have to if you want Wikipedia to stay GFDL compliant) meaning it's better if all boxes are checked and then you go around deselecting the ones next to the revisions you don't want restored. Yonatan talk 18:41, 27 May 2007 (UTC)Reply
I can't say I have a lot of experience with delete/undelete, since I only do it on the corporate wiki at my work. The main point I was trying to make about the change being "bad", which I never actually said, is that it isn't necessarily the right change if there hasn't been prior agreement. It may indeed be an improvement, and I don't actually have the experience to say one way or the other, but a discussion could have come to a different conclusion (say on WP:AN). Mike Dillon 19:01, 27 May 2007 (UTC)Reply

Related to my original rant, another reason to always discuss changes to executable code before making them is to give on-wiki visibility in case something does break, no matter how well-tested it is. This happened recently with Cyde's undiscussed addition of MediaWiki:Wikimediaplayer.js to this file. Besides the fact that the addition added yet another "dontcountme=s", which we've been discussing and phasing out for weeks, instead of just using importScript, the addition ended up triggering an obscure Internet Explorer quirk within a week of being added (see WP:VPT#Prose size script and MediaWiki talk:Wikimediaplayer.js#Fix for link iteration).

The wikimediaplayer script was another instance of something that has been running on another wiki for quite a while without problems (Commons), so it was arguably tested as well as it could be. However, once it got into the larger corpus of English Wikipedia, it ran into an obscure failure mode in Internet Explorer when the article had section titles starting with a number. I think most people would agree that the chances of someone finding this during testing are pretty small, but the fact that it wasn't discussed either here or on WP:VPT made it that much harder to debug an obscure failure. If it had been discussed, presumably more people would have known that it might be a cause of problems and the issue would have been resolved quicker. Mike Dillon 19:51, 27 May 2007 (UTC)Reply

P.S. The 31 day cache issue means that the problems with MediaWiki:Wikimediaplayer.js could still be with us for a couple more weeks. Mike Dillon 19:52, 27 May 2007 (UTC)Reply

I see what you mean in the bigger picture but Wikipedia is not a bureaucracy and there was no risk when adding this code since it's already been tested extensively and has been active on another wiki for about a year. If there's no concrete reason to oppose this addition, it should be readded. Yonatan talk 20:12, 27 May 2007 (UTC)Reply
No Wikipedia is not a bureaucracy, but experience learns that a large majority of the code is improved (or has bugs removed from it) if it's posted on the talk page first. It would hurt the encyclopedia if every change made had to be discussed and reviewed first, it benefits the encyclopedia if scripts are discussed and reviewed here first. I still oppose the addition of the code as you have not made clear what benefits it adds over shift-clicking. —Ruud 20:34, 27 May 2007 (UTC)Reply
I have. First of all, I'm willing to bet that the majority of admins don't know to shift click. Secondly, having all boxes selected by default is much easier than having to shift click manually. I think you're being stubborn just for the sake of it now, since you didn't like my initial addition without a discussion. Do you *really* think it's easier to shift click instead of having all the boxes selected by default? This should've been done by default by mediawiki anyway. Yonatan talk 23:22, 27 May 2007 (UTC)Reply
Thanks for assuming good faith. No I think this is only marginally useful, for only a very small percentage of the users, for something they rarely have to do, and can likely be trivially fixed in MediaWiki. So filing a feature request (perhaps together with a patch) seems much more preferable than adding another piece of javascript a large number of the visitors has to download when they visit this site. —Ruud 10:15, 28 May 2007 (UTC)Reply