Nie podano opisu zmian Znacznik: sourceedit |
(UWAGA! Zastąpiono treść hasła tekstem „Na tej stronie będzie testowane głosowanie na artykuł. Po prawej stronie powinieneś móc zobaczyć moduł głosowania. '''''Zródło:''' [[w:c...”) Znacznik: sourceedit |
||
(Nie pokazano 9 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 1: | Linia 1: | ||
Na tej stronie będzie testowane głosowanie na artykuł. Po prawej stronie powinieneś móc zobaczyć moduł głosowania. |
Na tej stronie będzie testowane głosowanie na artykuł. Po prawej stronie powinieneś móc zobaczyć moduł głosowania. |
||
+ | '''''Zródło:''' [[w:c:dev:MediaWiki:Voting.js|Voting.js]]'' |
||
− | == TODO == |
||
− | * <s>Użyj <code>insert</code> jeżeli <code>update</code> nie zadziałało.</s> |
||
− | * <s>Zmień <code>wkctime</code>.</s> |
||
− | * Dodaj statystyki strony (wyświetlenia, edycje, średnia ocena, twoja ocena). |
||
− | * Zmień wygląd na ten z Nonsy. |
||
− | * Dodaj wsparcie innych skórek. |
||
− | |||
− | == Zródło == |
||
− | <source lang="javascript"> |
||
− | // Voting by Duckey Detective |
||
− | const voting = { |
||
− | init: () => { |
||
− | if (wgCanonicalNamespace === '' && wgTitle === 'Głosowanie') { |
||
− | const stars = [1, 2, 3, 4, 5].map((x) => { |
||
− | return `<li onclick="voting.vote(${ x });" data-rating="${ x }"></li>`; |
||
− | }).join(''); |
||
− | |||
− | const starsDisplay = |
||
− | `<div class="d-voting__stars-wrapper"> |
||
− | <div class="d-voting__stars-inner"></div> |
||
− | <ul class="d-voting__stars-list">${ stars }</ul> |
||
− | </div>`; |
||
− | |||
− | const oasisModule = |
||
− | `<section class="railModule rail-module"> |
||
− | <h2 class="has-icon"> |
||
− | <svg id="wds-icons-upvote" viewBox="0 0 24 24" width="18" height="18"> |
||
− | <path d="M16.707 11.707a.997.997 0 0 1-1.414 0L13 9.414V18a1 1 0 0 1-2 0V9.414l-2.293 2.293a.999.999 0 1 1-1.414-1.414l4-4a.999.999 0 0 1 1.089-.216c.122.051.233.124.325.216l4 4a.999.999 0 0 1 0 1.414M12 0C5.383 0 0 5.383 0 12s5.383 12 12 12 12-5.383 12-12S18.617 0 12 0" fill-rule="evenodd"></path> |
||
− | </svg>Głosowanie</h2> |
||
− | ${ starsDisplay } |
||
− | <div class="d-voting__stats"> |
||
− | ${ voting.config.votesavg }: <span id="d-voting__votesavg">${ voting.config.none }</span><br/> |
||
− | ${ voting.config.votescount }: <span id="d-voting__votescount">0</span><br/> |
||
− | ${ voting.config.uservote }: <span id="d-voting__uservote">${ voting.config.none }</span><br/> |
||
− | ${ voting.config.views }: <span id="d-voting__views">0</span><br/> |
||
− | ${ voting.config.revcount }: <span id="d-voting__revcount">1</span> |
||
− | </div> |
||
− | </section>`; |
||
− | |||
− | const monobookPortlet = |
||
− | `<div class="portlet" id="p-voting"> |
||
− | <h5>Głosowanie</h5> |
||
− | <div class="pBody"> |
||
− | ${ starsDisplay } |
||
− | </div> |
||
− | </div>`; |
||
− | |||
− | $(oasisModule).prependTo('#WikiaRail'); |
||
− | $(monobookPortlet).insertAfter('#p-Nawigacja'); |
||
− | $(monobookPortlet).insertAfter('#p-navigation'); |
||
− | |||
− | voting.check(); |
||
− | } |
||
− | }, |
||
− | check: () => { |
||
− | $.ajax({ |
||
− | url: '/api.php?format=json&action=query&list=wkvoteart&wkctime=5&wkuservote=1&wkpage=' + wgArticleId, |
||
− | method: 'GET', |
||
− | dataType: 'json' |
||
− | }).done((data) => { |
||
− | voting.uservote = parseInt(data.query.wkvoteart[wgArticleId].uservote); |
||
− | voting.votesavg = parseInt(data.query.wkvoteart[wgArticleId].votesavg); |
||
− | voting.votescount = parseInt(data.query.wkvoteart[wgArticleId].votescount); |
||
− | |||
− | voting.update(); |
||
− | }); |
||
− | |||
− | $.ajax({ |
||
− | url: '/api.php?format=json&action=query&prop=info&inprop=views|revcount&pageids=' + wgArticleId, |
||
− | method: 'GET', |
||
− | dataType: 'json' |
||
− | }).done((data) => { |
||
− | voting.views = parseInt(data.query.pages[wgArticleId].views); |
||
− | voting.revcount = parseInt(data.query.pages[wgArticleId].revcount); |
||
− | |||
− | voting.update(); |
||
− | }); |
||
− | }, |
||
− | vote: (rating) => { |
||
− | const action = voting.uservote ? 'update' : 'insert'; |
||
− | |||
− | $.ajax({ |
||
− | url: '/api.php?format=json&action=' + action + '&list=wkvoteart&wkctime=5&wkuservote=1&wkvote=' + rating + '&wkpage=' + wgArticleId, |
||
− | method: 'POST', |
||
− | dataType: 'json' |
||
− | }).done((data) => { |
||
− | voting.votesavg = data.item.wkvoteart.avgvote; |
||
− | voting.uservote = rating; |
||
− | |||
− | voting.update(); |
||
− | }).fail(() => { |
||
− | $.ajax({ |
||
− | url: '/api.php?format=json&action=insert&list=wkvoteart&wkctime=5&wkuservote=1&wkvote=' + rating + '&wkpage=' + wgArticleId, |
||
− | method: 'POST', |
||
− | dataType: 'json' |
||
− | }).done((data) => { |
||
− | voting.votesavg = data.item.wkvoteart.avgvote; |
||
− | voting.uservote = rating; |
||
− | |||
− | voting.update(); |
||
− | }); |
||
− | }); |
||
− | }, |
||
− | update: () => { |
||
− | $('.d-voting__stars-inner').css('width', ((voting.votesavg/5)*100) + '%'); |
||
− | |||
− | const stats = ['votesavg', 'uservote', 'votescount', 'views', 'revcount']; |
||
− | for (let stat of stats) { |
||
− | const roundedStat = Math.round(voting[stat] * 100) / 100; |
||
− | $('#d-voting__' + stat).html(roundedStat); |
||
− | } |
||
− | }, |
||
− | votesavg: null, |
||
− | uservote: null, |
||
− | votescount: null, |
||
− | views: null, |
||
− | revcount: null, |
||
− | config: { |
||
− | none: 'brak', |
||
− | votesavg: 'Średnia ocena', |
||
− | votescount: 'Liczba ocen', |
||
− | uservote: 'Twoja ocena', |
||
− | views: 'Wyświetleń', |
||
− | revcount: 'Edycji' |
||
− | } |
||
− | }; |
||
− | </source> |
||
− | <br/> |
||
− | ---- |
||
− | <br/> |
||
− | <source lang="css"> |
||
− | /* Voting by Duckey Detective */ |
||
− | |||
− | .d-voting__stars-wrapper { |
||
− | background: url("https://vignette3.wikia.nocookie.net/duckey/images/4/43/StarEmpty.svg/revision/latest/scale-to-width-down/22?path-prefix=pl") repeat-x; |
||
− | height: 22px; |
||
− | width: 110px; |
||
− | margin: 0 auto; |
||
− | position: relative; |
||
− | overflow: hidden; |
||
− | } |
||
− | |||
− | .d-voting__stars-inner { |
||
− | background: url("https://vignette3.wikia.nocookie.net/duckey/images/b/ba/Star.svg/revision/latest/scale-to-width-down/22?path-prefix=pl") repeat-x; |
||
− | height: 22px; |
||
− | width: 0%; |
||
− | } |
||
− | |||
− | .d-voting__stars-list { |
||
− | list-style: none !important; |
||
− | padding: 0 !important; |
||
− | margin: 0 !important; |
||
− | position: absolute; |
||
− | top: 0; right: 0; bottom: 0; left: 0; |
||
− | } |
||
− | |||
− | .d-voting__stars-list > li { |
||
− | display: inline-block; |
||
− | width: 22px; |
||
− | height: 22px; |
||
− | padding: 0; |
||
− | margin: 0; |
||
− | cursor: pointer; |
||
− | } |
||
− | </source> |
||
{{Navbox/Wiki}} |
{{Navbox/Wiki}} |
Aktualna wersja na dzień 17:17, 28 lip 2017
Na tej stronie będzie testowane głosowanie na artykuł. Po prawej stronie powinieneś móc zobaczyć moduł głosowania.
Zródło: Voting.js