Użytkownik:SH3VEK/nplus-linki.js: Różnice pomiędzy wersjami
Z Nonsensopedii, polskiej encyklopedii humoru
(JS) |
M (Więcej opcji i konfiguracji, bugfix z kontenerem) |
||
Linia 1: | Linia 1: | ||
/* <nowiki> |
|||
// Linki do edycji i historii strony na OZ |
|||
* Linki do akcji na OZ |
|||
* Wystarczy przetrzymać kliknięcie myszką na 1/4 sekundy (konfigurowalne), aby linki się pojawiły. |
|||
⚫ | |||
* Można skonfigurować te przyciski następującym sposobem |
|||
var to = 250, |
|||
mw.config.set("npPrzyciskiOZ", [ |
|||
{ |
|||
title: "Nazwa przycisku, widoczna po wskazaniu myszą", |
|||
icon: "Nazwa ikony (trudno znaleźć konkretną, trzeba pokombinować)", |
|||
url: function(p) {return "Adres"} |
|||
rights: "Uprawnienia, nazwy muszą być zgodne z zapisanymi w 'Specjalna:Uprawnienia grup użytkowników'" |
|||
} |
|||
]); |
|||
* Konfiguracja musi się znaleźć PRZED importem skryptu. |
|||
* Autor: SH3VEK |
|||
*/ |
|||
⚫ | |||
var to = mw.config.get("npLongClick", 250), |
|||
uTimer = 0, |
uTimer = 0, |
||
linkTarget = "a.mw-changeslist-title"; |
linkTarget = mw.config.get("npLinkOZ", "a.mw-changeslist-title"); |
||
var przyciski = [ |
|||
⚫ | |||
// Tutaj mogą pojawić się dowolne akcje, których przyciski będą widoczne, jeśli użytkownik posiada dane uprawnienia |
|||
btnHistory = new OO.ui.ButtonWidget({icon: "menu", title: "Historia strony"}); |
|||
{title: "Edytuj", icon: "edit", url: function(p) {return mw.util.getUrl(p, {action: "edit"})}, rights: "edit"}, |
|||
⚫ | |||
{title: "Przenieś", icon: "move", url: function(p) {return mw.util.getUrl("Special:MovePage/" + p)}, rights: "move"}, |
|||
{title: "Usuń", icon: "trash", url: function(p) {return mw.util.getUrl(p, {action: "delete"})}, rights: "delete"} |
|||
]; |
|||
var pp = mw.config.get("npPrzyciskiOZ"); |
|||
if (pp !== null && $.isArray(pp)) przyciski = przyciski.concat(pp); |
|||
⚫ | |||
⚫ | |||
var pu = new OO.ui.PopupWidget({ |
var pu = new OO.ui.PopupWidget({ |
||
$content: btnGroup.$element, |
$content: btnGroup.$element, |
||
$container: mw.util.$content, |
|||
padded: false, |
padded: false, |
||
align: "forwards", |
align: "forwards", |
||
position: "before", |
position: "before", |
||
autoClose: true, |
autoClose: true, |
||
width: |
width: null, |
||
}), |
}), |
||
updatePopup = function(e) { |
updatePopup = function(e) { |
||
Linia 20: | Linia 41: | ||
pu.toggle(false); |
pu.toggle(false); |
||
pu.$floatableContainer = $(e.target); |
pu.$floatableContainer = $(e.target); |
||
przyciski.forEach(function(v) {v.ui.setHref(v.url(e.target.title))}); |
|||
pu.position(); |
|||
btnHistory.setHref(mw.util.getUrl(e.target.title, {action: "history"})); |
|||
pu.computePosition(); |
//pu.computePosition(); |
||
pu.toggle(true); |
pu.toggle(true); |
||
}; |
}; |
||
btnGroup.$element.css("font-size", "14px"); |
|||
$(document.body).append(pu.$element); |
$(document.body).append(pu.$element); |
||
mw.user.getRights().then(function(r) { |
|||
przyciski = przyciski.filter(function(v) {return r.indexOf(v.rights) != -1}); |
|||
btnGroup.addItems(przyciski.map(function(v) {return v.ui})); |
|||
}); |
|||
mw.util.$content |
mw.util.$content |
||
.on("mousedown", linkTarget, function(e) {uTimer = setTimeout(function() {updatePopup(e)}, to)}) |
.on("mousedown", linkTarget, function(e) {uTimer = setTimeout(function() {updatePopup(e)}, to)}) |
Aktualna wersja na dzień 22:53, 14 kwi 2019
/* <nowiki>
* Linki do akcji na OZ
* Wystarczy przetrzymać kliknięcie myszką na 1/4 sekundy (konfigurowalne), aby linki się pojawiły.
* Można skonfigurować te przyciski następującym sposobem
mw.config.set("npPrzyciskiOZ", [
{
title: "Nazwa przycisku, widoczna po wskazaniu myszą",
icon: "Nazwa ikony (trudno znaleźć konkretną, trzeba pokombinować)",
url: function(p) {return "Adres"}
rights: "Uprawnienia, nazwy muszą być zgodne z zapisanymi w 'Specjalna:Uprawnienia grup użytkowników'"
}
]);
* Konfiguracja musi się znaleźć PRZED importem skryptu.
* Autor: SH3VEK
*/
if (mw.config.get("wgCanonicalSpecialPageName") == "Recentchanges") mw.loader.using(["jquery", "oojs-ui"], function() {
var to = mw.config.get("npLongClick", 250),
uTimer = 0,
linkTarget = mw.config.get("npLinkOZ", "a.mw-changeslist-title");
var przyciski = [
// Tutaj mogą pojawić się dowolne akcje, których przyciski będą widoczne, jeśli użytkownik posiada dane uprawnienia
{title: "Edytuj", icon: "edit", url: function(p) {return mw.util.getUrl(p, {action: "edit"})}, rights: "edit"},
{title: "Przenieś", icon: "move", url: function(p) {return mw.util.getUrl("Special:MovePage/" + p)}, rights: "move"},
{title: "Usuń", icon: "trash", url: function(p) {return mw.util.getUrl(p, {action: "delete"})}, rights: "delete"}
];
var pp = mw.config.get("npPrzyciskiOZ");
if (pp !== null && $.isArray(pp)) przyciski = przyciski.concat(pp);
przyciski.forEach(function(v) {v.ui = new OO.ui.ButtonWidget({icon: v.icon, title: v.title})});
var btnGroup = new OO.ui.ButtonGroupWidget();
var pu = new OO.ui.PopupWidget({
$content: btnGroup.$element,
$container: mw.util.$content,
padded: false,
align: "forwards",
position: "before",
autoClose: true,
width: null,
}),
updatePopup = function(e) {
uTimer = 0;
pu.toggle(false);
pu.$floatableContainer = $(e.target);
przyciski.forEach(function(v) {v.ui.setHref(v.url(e.target.title))});
pu.position();
//pu.computePosition();
pu.toggle(true);
};
btnGroup.$element.css("font-size", "14px");
$(document.body).append(pu.$element);
mw.user.getRights().then(function(r) {
przyciski = przyciski.filter(function(v) {return r.indexOf(v.rights) != -1});
btnGroup.addItems(przyciski.map(function(v) {return v.ui}));
});
mw.util.$content
.on("mousedown", linkTarget, function(e) {uTimer = setTimeout(function() {updatePopup(e)}, to)})
.on("click", linkTarget, function(e) {
if (uTimer === 0) {
e.preventDefault();
pu.toggle(true);
return;
}
clearTimeout(uTimer);
uTimer = 0;
});
});