User:BZPN/MassRollback2.js: Difference between revisions

From Test Wiki
Content deleted Content added
BZPN (talk | contribs)
No edit summary
BZPN (talk | contribs)
No edit summary
Line 9: Line 9:
}
}
this.createUI();
this.createUI();
// Try to enhance to Codex after UI is present (only if styles loaded)
if (mw.loader.getState && (mw.loader.getState('codex-styles') === 'ready' || mw.loader.getState('codex-search-styles') === 'ready')) {
this.applyCodexClasses();
}
this.bindEvents();
this.bindEvents();
this.fetchUserStats();
this.fetchUserStats();
Line 25: Line 29:
$('#mw-content-text').prepend($toggleButton).prepend($container);
$('#mw-content-text').prepend($toggleButton).prepend($container);
},

// Apply Codex CSS-only classes when styles are available; keep MW UI as fallback
applyCodexClasses: function() {
try {
// Buttons: map MediaWiki UI modifiers to Codex equivalents and keep both for compatibility
$('#mass-rollback-container').find('button.mw-ui-button').each(function() {
const $btn = $(this);
$btn.addClass('cdx-button');
if ($btn.hasClass('mw-ui-progressive')) {
$btn.addClass('cdx-button--action-progressive');
}
if ($btn.hasClass('mw-ui-destructive')) {
$btn.addClass('cdx-button--action-destructive');
}
if ($btn.hasClass('mw-ui-quiet')) {
$btn.addClass('cdx-button--weight-quiet');
}
});
// Inputs: add Codex input class to enhance styling when available
$('#mass-rollback-container').find('input[type="text"], input[type="date"], select').each(function() {
const $el = $(this);
$el.addClass('cdx-text-input__input');
// Optional: wrap with Codex container if not already wrapped
if (!$el.parent().hasClass('cdx-text-input')) {
$el.wrap('<div class="cdx-text-input"></div>');
}
});
} catch (e) {
// Non-fatal: just skip Codex enhancements
console.warn('Codex class application skipped:', e);
}
},
},


Line 381: Line 417:
};
};


// Load stable MW modules and try Codex CSS-only styles if present (1.39+)
// Ładujemy stabilne moduły MW; bez OOUI, aby uniknąć problemów z loaderem
(function loadModulesAndInit() {
mw.loader.using([
'mediawiki.api',
var baseDeps = [
'mediawiki.util',
'mediawiki.api',
'mediawiki.notify',
'mediawiki.util',
'mediawiki.ui',
'mediawiki.notify'
'mediawiki.ui.button'
];
var codexDep = null;
]).then(function () {
$(function () {
try {
try { MassRollback.init(); } catch (e) { console.error(e); }
// Prefer the smaller set if available, else full; else skip
if (mw.loader.getState('codex-search-styles')) {
});
codexDep = 'codex-search-styles';
}).catch(function () {
} else if (mw.loader.getState('codex-styles')) {
$(function () {
try { MassRollback.init(); } catch (e) { console.error(e); }
codexDep = 'codex-styles';
}
} catch (e) { /* ignore */ }

// Also load legacy mediawiki.ui when present to keep fallback look
var legacyUI = [];
if (mw.loader.getState('mediawiki.ui')) legacyUI.push('mediawiki.ui');
if (mw.loader.getState('mediawiki.ui.button')) legacyUI.push('mediawiki.ui.button');

var deps = baseDeps.concat(legacyUI);
if (codexDep) deps.push(codexDep);

mw.loader.using(deps).then(function() {
$(function() { try { MassRollback.init(); } catch (e) { console.error(e); } });
}).catch(function() {
// Final fallback: try to init anyway
$(function() { try { MassRollback.init(); } catch (e) { console.error(e); } });
});
});
});
})();
})(jQuery, mediaWiki);
})(jQuery, mediaWiki);