Commit graph

9 commits

Author SHA1 Message Date
Timo Tijhof
7420e8e4ab Kranitor #2: Pass JSHint on resources/mediawiki/*
* .jshintrc
 - Update properties to reflect our conventions more

* Re-pass resources/jquery/*
* Pass resources/mediawiki/*
 - Trailing whitespace
 - Whitelist the one usage of document.write with
   a local /*jshint evil:true */ in the function that
   we allow to use it.
 - Get rid of dangling _ in var names and undescriptive
   instances of '_this'.
 - More code conventions

* Add a few documentation comments while at it

Change-Id: Ic4f2b5d473a440667a40e4d5f12f40877386b02f
2012-08-09 11:42:58 -07:00
Krinkle
be06bd4560 Enqueue mw.util.init in document-ready even handler earlier
* Previously $(document).ready(mw.util.init) was in module 'mediawiki.page.ready' (position: bottom). I've now moved this to 'mediawiki.page.startup' so that it'll be enqueued sooner.
* This making it more likely that if someone also enqueues in document-ready that mw.util.init ran before than and thus mw.util.$content populated
* Fixes bug 33711

* All this is still depends on the order in which the event handler queue is executed, which is risky. Bug 30713 will bring the solid "watertight" solution
2012-02-02 00:47:53 +00:00
Krinkle
b2733fa44c [mediawiki.action.watch.ajax.js] Rewrite using mw.Api and fixes bug 27146
* Use mw.Api and new it's new .watch() as of r107350
* No longer get title from url, use wgPageName instead
* No longer simple queryParam check for action in url,
  now supports wgActionPaths as well.
* Simplification and speed up (less back and forth between
functions and jQuery-ism). Previously it had $(..) with several
.add() calls. Now doing one call.
* Uses mw.util.tooltipAccessKeyRegexp instead of local regex
* Uses jQuery.fn.text instead of jQuery.fn.html for link text message

* Should fix bug 27146 (previously a failed attempt in r82498)
* Previousy worked on in r88527, r88511, r78150, r78147

* minor whitespace/comment fix in mediawiki.util.js/mediawiki.page.startup.js
2011-12-27 01:21:56 +00:00
John Du Hart
b520984ea2 Reverting r103856 since it does not work. <body> is not available at startup. 2011-11-22 15:58:28 +00:00
John Du Hart
480f0c7017 Followup r95318, move client-(no)js classes to the body tag per discussion in bug 30497 2011-11-21 22:53:24 +00:00
Brion Vibber
b2fa982253 bug 32183: remove the client-* classes added from user-agent-sniffing onto the <html> element.
Browser sniffing is bad, and having these here encourages unpleasantness.
Keeping the js/nojs ones as those are useful and non-evil (they're an example of feature detection, exposed via CSS here rather than through JS.)
2011-11-03 19:18:49 +00:00
Brion Vibber
e0ab2840db * (bug 30497) Add client-nojs and client-js classes on document element to let styles easily hide or show things based on general JS availability
Patch by John Du Hart - https://bugzilla.wikimedia.org/attachment.cgi?id=8956
2011-08-23 18:33:28 +00:00
Krinkle
62a3e10fea AjaxCategories rewrite:
Solving syntax problems, performance improvements and applying code conventions: 

* Replaced sprite image with separate images and letting ResourceLoader embed them with @embed (@embed means 0 http requests, less maintenance, none of the known limitations with sprites, and more readable code (named files rather than pixel offsets)

* Many functions were floating in the global namespace (like window.makeCaseInsensitive). A statement ends after a semi-colon(;). All functions declared after "catUrl" were assigned to the window object. I've instead turned the semi-colons back into comma's, merged some other var statements and moved them to the top of the closure. Changed local function declarations into function expressions for clarity.

* fetchSuggestions is called by $.fn.suggestions like ".call( $textbox, $textbox.val() )". So the context (this) isn't the raw element but the jQuery object, no need to re-construct with "$(this)" or "$(that)" which is slow and shouldn't even work. jQuery methods can be called on it directly. I've also replaced "$(this).val()" with the value-argument passed to fetchSuggestions which has this exact value already.

* Adding more function documentation. And changing @since to 1.19 as this was merged from js2-branch into 1.19-trunk and new features aren't backported to 1.18.

* Optimizing options/default construction to just "options = $.extend( {}, options )". Caching defaultOptions is cool, but doesn't really work if it's in a context/instance local variable. Moved it up to the module closure var statements, now it's static across all instances.

* In makeSuggestionBox(): Fixing invalid html fragments passed to jQuery that fail in IE. Shortcuts (like '<foo>' and '<foo/>') are only allowed for createElement triggers, not when creating longer fragments with content and/or attributes which are created through innerHTML, in the latter case the HTML must be completely valid and is not auto-corrected by IE.

* Using more jQuery chaining where possible.

* In buildRegex(): Using $.map with join( '|' ), (rather than $.each with += '|'; and substr).

* Storing the init instance of mw.ajaxCategories in mw.page for reference (rather than local/anonymous).

* Applied some best practices and "write testable code"
** Moved some of the functions created on the fly and assigned to 'this' into prototype (reference is cheaper)
** Making sure at least all 'do', 'set' and/or 'prototype' functions have a return value. Even if it's just a simple boolean true or context/this for chain-ability. 
** Rewrote confirmEdit( .., .., .., ) as a prototyped method named "doConfirmEdit" which takes a single props-object with named valuas as argument, instead of list with 8 arguments.

* Removed trailing whitespace and other minor fixes to comply with the code conventions.
** Removed space between function name and caller: "foo ()" => foo()) 
** Changing "someArray.indexOf() + 1" into "someArr.indexOf() !== -1". We want a Boolean here, not a Number.
** Renamed all underscore-variables to non-underscore variants.

== Bug fixes ==

* When adding a category that is not already on the page as-is but of which the clean() version is already on the page, the script would fail. Fixed it by moving the checks up in handleCategoryAdd() and making sure that createCatLink() actually returned something.

* confirmEdit() wasn't working properly and had unused code (such as submitButton), removed hidden prepending to #catlinks, no need to, it can be dialog'ed directly from the jQuery object without being somewhere in the document.

* in doConfirmEdit() in submitFunction() and multiEdit: Clearing the input field after adding a category, so that when another category is being added it doesn't start with the previous value which is not allowed to be added again...
2011-07-28 00:43:21 +00:00
Krinkle
95173d11f1 New mediawiki.page modules
First step towards cleaning up mw.util.init and removing bugus dependancies on mediawiki.util which are just added there in order to load them on every page and do something on-load.

Introducing mediawiki.page.startup (in the head) and mediawiki.page.ready (on the bottom)

Moved the following to them:
* document.ready from jquery.cient
 -- Shouldn't have been in the plugin itself in the first place
* jquery.placeholder
* jquery.makeCollapsible
* mediawiki.action.view.tablesorting
* jquery.checkboxShiftClick

(This also solves part of bug 26799)
2011-06-22 21:27:12 +00:00