From 125bfdfec63c3be1b7d94be2d03e21226fcf23f5 Mon Sep 17 00:00:00 2001 From: Derk-Jan Hartman Date: Sun, 21 Jun 2015 18:59:20 +0200 Subject: [PATCH 1/1] Add wikipage.categories hook This will be especially useful for HotCat. Bug: T53583 Change-Id: Id944029df180c80502840c118a58013ebb717e1f --- includes/skins/Skin.php | 2 +- .../mediawiki.action.edit.preview.js | 4 +++- resources/src/mediawiki/page/ready.js | 19 +++++++++++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/includes/skins/Skin.php b/includes/skins/Skin.php index dbb7c7ff02..83f119dabe 100644 --- a/includes/skins/Skin.php +++ b/includes/skins/Skin.php @@ -560,7 +560,7 @@ abstract class Skin extends ContextSource { $classes .= ' catlinks-allhidden'; } - return ""; + return ""; } /** diff --git a/resources/src/mediawiki.action/mediawiki.action.edit.preview.js b/resources/src/mediawiki.action/mediawiki.action.edit.preview.js index 013d34fe7d..1d4d0e954c 100644 --- a/resources/src/mediawiki.action/mediawiki.action.edit.preview.js +++ b/resources/src/mediawiki.action/mediawiki.action.edit.preview.js @@ -174,7 +174,9 @@ ); } if ( response.parse.categorieshtml ) { - $( '#catlinks' ).replaceWith( response.parse.categorieshtml[ '*' ] ); + $content = $( $.parseHTML( response.parse.categorieshtml[ '*' ] ) ); + mw.hook( 'wikipage.categories' ).fire( $content ); + $( '.catlinks[data-mw="interface"]' ).replaceWith( $content ); } if ( response.parse.templates ) { newList = []; diff --git a/resources/src/mediawiki/page/ready.js b/resources/src/mediawiki/page/ready.js index 9505bdd1e0..4385a2e903 100644 --- a/resources/src/mediawiki/page/ready.js +++ b/resources/src/mediawiki/page/ready.js @@ -70,6 +70,25 @@ } ); } + $nodes = $( '.catlinks[data-mw="interface"]' ); + if ( $nodes.length ) { + /** + * Fired when categories are being added to the DOM + * + * It is encouraged to fire it before the main DOM is changed (when $content + * is still detached). However, this order is not defined either way, so you + * should only rely on $content itself. + * + * This includes the ready event on a page load (including post-edit loads) + * and when content has been previewed with LivePreview. + * + * @event wikipage_categories + * @member mw.hook + * @param {jQuery} $content The most appropriate element containing the content, + * such as .catlinks + */ + mw.hook( 'wikipage.categories' ).fire( $nodes ); + } } ); }( mediaWiki, jQuery ) ); -- 2.20.1