Commit graph

113 commits

Author SHA1 Message Date
Roan Kattouw
f56afa36a6 (bug 28738) Implement request splitting in mw.loader so ResourceLoader requests with query strings longer than a certain value are split up. The maximum query string length is configurable, and this behavior is disabled by default. It's needed in rare cases where there is a query string length or GET variable length limit in place that the wiki admin can't raise. 2011-05-01 18:41:42 +00:00
Nimish Gautam
61347cecbe added wgCookiePrefix to exported variables 2011-04-21 00:06:21 +00:00
Happy-melon
8b9aacebff Follow-up r82285: prefix group css and js pages with "Group-", and fix license header. 2011-04-20 17:29:24 +00:00
Leo Koppelkamm
77e1e201f6 Followup r86088 per CR: Move month array builder into language; use mw.config.get(); Fix rowspans and some cleanup 2011-04-18 12:54:28 +00:00
Leo Koppelkamm
7d6ddfe836 Completely rewritten table sorting script.
Fixes Bug 8028, Bug 8115, Bug 15406, Bug 17141, Bug 8732

1. Sites can specify custom collations.
The script accepts an object "tableSorterCollation" which contains a lookup
table, how specific characters should be treated.
For example, after setting "tableSorterCollation={'ä':'ae', 'ß':'ss'};" in the
site's common.js any string containing an ä or Ä will be sorted as if it were a
'ae'.

2. Table rows can be forced to use a specific data type.
By setting class="sort-{Parsername}", the row will be parsed with the specified
algorithm. class="sort-date" would force date sorting etc.
The following parsers are available: text, IPAddress, number, url, currency,
date, isoDate, usLongDate, time

3. Execution time is reduced by half or more.

Sorting a 935 row * 8 columns table:

Browser     Before      After
--------    ------      -----
Chrome 10   90ms        42ms
Safari 5    115ms       48ms
Firefox 4   412ms       87ms
IE8         720ms       115ms

4. Based on the content language and the mdy vs dmy preference, the parser can
understand dates such as "17. März '11". wgMonthNames=[] and
wgMonthNamesShort=[] 
in the content language and the mdy vs dmy preference are exported to js; A
table containing the following dates would be sorted correctly:
17. Jan. 01
23 Feb 1992
9.02.05
13 November 2001
14 Oktober '76

Was tested in ie6-8, chrome, safari 5, ff3 & ff4
2011-04-14 21:47:00 +00:00
Roan Kattouw
82bf4764ea For bug 27488: move the startup script, jquery+mediawiki and the mw.config.set() call for configuration variables back to the <head> . Let modules control whether they're loaded in the <head> ('top') or at the bottom of the <body> ('bottom') through the position parameter/property
Also rearranges the loading order a little bit such that only=messages comes before only=scripts, and config comes before everything except startup and jquery+mediawiki
2011-04-07 12:07:25 +00:00
Trevor Parscal
2cff94d097 Added charset property to HTTP Content-Type fields when serving CSS and JavaScript via ResourceLoader - resolves bug #28208. 2011-04-01 20:48:50 +00:00
Roan Kattouw
246362f8c2 Fix default implementation of ResourceLoaderModule::getStyles() to return an array, not a string. Was causing problems with another function that was being fed the return value of getStyles() and used an array type hint 2011-03-27 14:13:57 +00:00
Sam Reed
757750dcac Remove getFlip code duplication
Move usual one into ResourceLoaderModule, and then move what was in ResourceLoaderModule into ResouceLoaderFileModule
2011-03-25 11:15:40 +00:00
Roan Kattouw
b066397f10 Bump RL filter version to 4 to keep it in sync with the cluster. WMF-centrism, I know, sue me ;) 2011-03-23 17:45:00 +00:00
Roan Kattouw
61195f5374 Per CR, remove round() call I accidentally reintroduced in r84401 2011-03-20 19:53:46 +00:00
Roan Kattouw
743026d69c (bug 26805) Introduce ResourceLoaderGetStartupModules hook to allow extensions to add modules to the startup set (normally this is jQuery and mediawiki). Applied patch by Michael Dale, with minor style tweaks 2011-03-20 17:15:51 +00:00
Roan Kattouw
1ce0c189ee Followup r84399: remove another round() call 2011-03-20 17:10:48 +00:00
Roan Kattouw
8d2ed2207a Remove stray round() call, rounding of timestamps was removed some time ago. Thanks to Michael for pointing this one out 2011-03-20 17:08:38 +00:00
Roan Kattouw
15bcd02d4c (bug 27054) Implicit end of statement can break stuff when files are combined. Applied patch by Paul Copperman: add a semicolon to the end of every module when combining; this'll terminate any unterminated final statement, and otherwise create a harmless empty statement. 2011-03-14 14:25:23 +00:00
Roan Kattouw
47d5ad564b Followup r83885: implement maximum line length and statement termination (each statement on its own line) in JavaScriptMinifier. Also add globals for these things and update minify.php for these new config vars. 2011-03-14 13:24:30 +00:00
Roan Kattouw
867fc1cba8 (bug 27528) Incorporate Paul Copperman's minifier 2011-03-14 11:44:33 +00:00
Happy-melon
0ebda6b3e4 Include MediaWiki:Noscript.css in <noscript></noscript> tags in the header, to allow wikis to load styles for users with JS disabled. 2011-03-05 16:01:25 +00:00
Antoine Musso
3730ef7358 doxygen can use @code ! 2011-03-02 20:28:32 +00:00
Krinkle
e12336c269 Add missing to mw.config 2011-02-21 21:24:09 +00:00
Krinkle
e89aab93a3 mw.loader.implement now calls script without setting mw to mediaWiki since this is already globally avaiable
* Also shortens a few wrapper functions the same way
* Partial revert of r82496. Apparantly mw-alias is not available in startUp module. TODO: Find out why ?

(See also r82496 commit message)
2011-02-19 23:52:11 +00:00
Krinkle
b2378a694c Using the mw alias for mediaWiki in core. Saves bandwidth and makes sense (there's no point in a wrapper function for ($,mw) if we use jQuery and mediaWiki inside of it).
TODO: Since the alias is globally available from the start, the 'mw' argument in the wrapper is redundant, so that should be removed at some point as well.
2011-02-19 22:59:44 +00:00
Roan Kattouw
880f09b10c (bug 27302) Avoid unnecessary requests for user and site modules if the relevant wiki pages don't exist.
Done by adding isKnownEmpty() to ResourceLoaderModule and overriding it to check for page existence in ResourceLoaderWikiModule. Needed to rearrange some code in OutputPage::makeResourceLoaderLink() to have the emptiness check and dropping of modules work properly. Also factored the page_touched check in ResourceLoaderWikiModule::getModifiedTime() out to a separate method (getTitleMtimes()) and moved in-object caching there as well, so getModifiedTime() and isKnownEmpty() share code and caching for their timestamp/existence checks.

This does not account for the case where e.g. a user has user CSS but no user JS: I had implemented this by checking for $context->getOnly() in getTitleMtimes(), but then realized it's not safe to do this in a function called by getModifiedTime(): it causes the timestamp list in the startup module to only take scripts in account for wiki modules, because the startup module has &only=scripts set
2011-02-19 17:07:05 +00:00
Roan Kattouw
4d196860f7 Fix logic error in r73204 (!) causing ResourceLoaderContext::getHash() to always return null 2011-02-19 16:48:05 +00:00
Tim Starling
a1717b4953 Add the cache key to the filter output, like what we do with the parser cache, to make it easier to debug filter issues. 2011-02-18 05:55:09 +00:00
Sam Reed
c0830dd868 2 subclasses of ResourceLoaderWikiModule implement a duplicate version of getFlip. Move it up into ResourceLoaderWikiModule
(Almost looks like it could all go into ResourceLoaderModule... But that uses a different version, seemingly, the only one. 3 other subclasses of ResourceLoaderModule implement the same version of getFlip as is moved into a parent class here... Seems daft to have a different version in the base abstract class... Minor oversight?)

Some documentation
2011-02-18 00:33:45 +00:00
Roan Kattouw
02bbd866ae Version the minifier cache in ResourceLoader 2011-02-17 22:13:52 +00:00
Happy-melon
eb9cf4b00c Create a user.groups module in ResourceLoader, which bundles a CSS and JS page for each usergroup the user is a member of (MediaWiki:Sysop.js, MediaWiki:Autoconfirmed.css, etc). Groups '*' and 'user' are not included. 2011-02-16 19:54:02 +00:00
Happy-melon
ef6041d750 revert r82283, loads of unrelated changes 2011-02-16 19:51:25 +00:00
Happy-melon
d64cd26a7c Create a user.groups module in ResourceLoader, which bundles a CSS and JS page for each usergroup the user is a member of (MediaWiki:Sysop.js, MediaWiki:Autoconfirmed.css, etc). Groups '*' and 'user' are not included. 2011-02-16 19:49:37 +00:00
Roan Kattouw
f5533b0c98 Per Philip Tzou, move wgUserVariant from the set of config variables to the set of pageview-specific variables, because it depends on user settings and such 2011-02-16 17:06:24 +00:00
Roan Kattouw
ab5c4d69ca Expose $wgExtensionAssetsPath in JS 2011-02-16 14:28:26 +00:00
Roan Kattouw
14c43476c6 Never serve 304s from RL in debug mode. This causes inadvertent caching of debug responses 2011-02-12 23:41:28 +00:00
Krinkle
4c0ddd464f Follow-up r82038. Calling wfExpandUrl() on remote base path *AFTER* is has been set in the foreach loop.
(Also ping r81731)
2011-02-12 23:20:32 +00:00
Krinkle
2b6aa1370c Follow-up r81731 CR comments. Calling wfExpandUrl() on remote base path. 2011-02-12 22:46:41 +00:00
Trevor Parscal
7a1903ec6b Resolves bug #27328 by supporting URL rewriting for CSS that comes from the Wiki, such as user and site scripts. 2011-02-11 22:57:32 +00:00
Roan Kattouw
f29d0359d1 Apply $wgContLang-based flip logic to site and user modules too. I swear we did this at some point 2011-02-11 09:27:02 +00:00
Roan Kattouw
c38e2e499c Fixes for r81936 per Tim's review 2011-02-11 08:29:55 +00:00
Roan Kattouw
370d700dd6 Fix getMsgBlobMtime() to also cause a cache invalidation if a module has messages but no stored message blob 2011-02-11 08:07:47 +00:00
Platonides
34bfd1dd6a Add profiling to the whole ResourceLoader::makeModuleResponse 2011-02-10 16:44:57 +00:00
Platonides
49074e8a56 Yet more additions of wfProfileOut() 2011-02-10 16:39:53 +00:00
Sam Reed
e42253eb45 Minor documentation tweaks/improvements 2011-02-08 23:09:22 +00:00
Sam Reed
5d5a3938bb Add missing wfProfileOut( __METHOD__ ); 2011-02-08 22:01:34 +00:00
Roan Kattouw
6b6fe23e74 Remove $wgServer prepending from remote JS/CSS paths. It's not needed and breaks other-domain $wgStylePath / $wgExtensionAssetsPath settings 2011-02-08 12:34:08 +00:00
Tim Starling
fc6f65a85b Fixes for ResourceLoaderWikiModule r72776. No serious bugs found, do not merge before deployment.
* Specify page titles as strings instead of split NS/DBK, as suggested by Roan on CR. It seemed sensible to me.
* Pass a Title object to getContent() instead of a string, to avoid unnecessary object construction overhead
* "*" and "/" are valid title characters. Check module input for JS comment end tokens.
* Fixed inappropriate conversion to boolean, when checking result of getContent(). Presumably the idea was to omit empty sections and errors, so that's what I did. Maybe an informative error message would be better in the error case.
* Use LinkBatch for selecting multiple page rows instead of Database::makeWhereFrom2d(). 
* Fixed assignment expression.
2011-02-08 06:34:38 +00:00
Tim Starling
9bd321231b Fix bug from r73645: setMsgBlobMtime() requires its timestamp parameter to be a UNIX timestamp, which $row->mr_timestamp isn't. This was causing incorrect versions in the client-side module list, resulting in requests for URLs with "version=NaNNaNNaNTNaNNaNNaNZ", which Michael has been occasionally complaining about. 2011-02-08 05:33:17 +00:00
Tim Starling
0f821f0dcb Use the content language to set the skin direction, instead of the user language. This makes the content readable and the UI messed up, instead of vice versa.
It's not ideal, but at least it's no worse than it was in 1.16. It's preferable because the content area is more likely to have bidirectional text than the UI area. The UI is split up into short strings, generally in a consistent language, so there is less chance of the UBA moving fragments of text around. 

Ideally, the direction of each div would be set according to the language of the text it contains.
2011-02-07 12:39:10 +00:00
Krinkle
dfb5beb89d user scripts & styles are lowercase skin; + using 'vector' as example instead. 2011-02-04 16:44:07 +00:00
Happy-melon
da36f65433 Follow-up r64670 (bug22929): cleaner implementation of security for script (and potentially CSS) files. ResourceLoader *already* knows where each module has come from, so all we need to do is filter them in OutputPage according to the desired level of 'trustworthiness'.
TODO:
* Are there instances where we might want to restrict CSS as well as JS?
* Would a $wg config option and/or user preference and/or index.php GET parameter to limit inclusion be useful?
* Can we deprecate any of the existing $wg config options?
* What's going on with the duplicated code between OutputPage and SkinTemplate?
2011-02-04 16:39:17 +00:00
Krinkle
a972a4c2de Obviously no need for a foreach loop here. (Follow-up r80790) 2011-01-23 02:22:27 +00:00