Duckey Sandbox Wiki
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