미디어위키:If-anon-feedback.js
참고: 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다.
- 파이어폭스 / 사파리: Shift 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5 또는 Ctrl-R을 입력 (Mac에서는 ⌘-R)
- 구글 크롬: Ctrl-Shift-R키를 입력 (Mac에서는 ⌘-Shift-R)
- 인터넷 익스플로러 / 엣지: Ctrl 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5를 입력.
- 오페라: Ctrl-F5를 입력.
/*
Adds a feedback to to the bottom of the page on the left. This has only been tested with Monobook as it is intended for IPs only!
Based on [[wikt:en:User:Conrad.Irwin/feedback.js]]!
See also: [[w:als:MediaWiki:If-WikiPoll.js]]
*/
// 스크립은 현재 개발 상태에 있음 (Conrad Irwin, Connel MacKenzie, Melancholie)
var fb_thanks = "감사합니다!";
var fb_comment = "낱말에 의견이 있으시면...";
var fb_page = mw.config.get('wgPageName');
if(fb_page == 'Special:Search'){
var sBox = document.getElementById('lsearchbox');
if(sBox) fb_page+='/'+sBox.value;
}
var fb_url = "http://tools.wikimedia.de/~cmackenzie/feedback.php?fb_wiki=dewiktionary&fb_page="+encodeURI(fb_page);
var fb_url2 = "http://tools.wikimedia.de/~daveross/feedback.php?mode=submit&lang=de&wiki=wiktionary&page="+encodeURI(fb_page);
var fb_url3 = "http://tools.wikimedia.de/~daveross/feedback.php?mode=view&langs=de&wikis=wiktionary&pages="+encodeURI(fb_page);
if (document.URL.indexOf("oldid=") > 0) {
var oldID = document.URL.replace(/^.+?(diff|oldid)=([0-9]+).*$/, "$2"); // diff 99.99% comes first
var fb_result = fb_url+"&fb_revid="+oldID;
var fb_result2 = fb_url3+"&revids="+oldID;
} else {
var fb_result = fb_url+"&fb_revid="+wgCurRevisionId;
var fb_result2 = fb_url3+"&sort=revid";
}
var fb_comment_url = "/wiki/Diskussion:"+mw.config.get('wgPageName');
var fb_questions = new Array();
fb_questions[0] =
["낱말의 평가:",
['잘된 편',
'보통인 편',
'어설픈 편',
'잘못이 있음',
'나쁜 편']
];
var fb_options;
var fb_text;
var fb_sent = false;
var fb_sent2= false;
function fb_init(){
fb_text = fb_questions[0][0];
fb_options = fb_questions[0][1];
if (!$("p-feedback")) {fb_buildBox();}
}
document.write('<style type="text/css">#p-feedback .pBody {background: #FFFFFF url(//upload.wikimedia.org/wikipedia/commons/f/f9/BG_comunit%C3%A0.jpg) center no-repeat;} #fb_list {margin: -0.3em 0 0.3em 2.7em;} #fb_text {color: #424242; font-size: 95%; font-weight: bold; margin-left: 0.5em;} #p-feedback a {cursor: pointer;} #fb_comment {font-size: 82%; margin-left: 0.7em;} #fb_thanks {margin: 0.5em 0 0.3em 1.7em;}<\/style>');
function fb_buildBox(){
var sidebar = document.getElementById('column-one');
if(!sidebar) return false;
var list = newNode('ul',{'id':'fb_list'});
for(var i=0;i<fb_options.length;i++){
list.appendChild(
newNode('li',
newNode('a',{'click':fb_click, 'id':i},fb_options[i])
)
);
}
sidebar.insertBefore(
newNode('div',{'class':"portlet",'id':"p-feedback"},
newNode('h5',
newNode('a',{'href':fb_result2, 'target':'_blank'},"의견 모음")
),
newNode('div',{'class':"pBody"},
newNode('p',{'id':'fb_text'},fb_text),
list,
newNode('p',{'id':'fb_comment'},
newNode('a',{'href':fb_comment_url},fb_comment)
)
)
), document.getElementById("p-tb")
);
}
$(fb_init);
function fb_click(e){
var fb = false;
var fbi = false;
try{
fb = e.target.childNodes[0].nodeValue;
fbi = e.target.getAttribute('id');
}catch(e){ try{
fb = window.event.srcElement.childNodes[0].nodeValue;
fbi = window.event.srcElement.getAttribute('id');
} catch(e){ }}
var ask = confirm("이 낱말을 '"+fb+"'로 평가하시겠어요?");
if (ask == true) {
if(fb){
if (fbi > 1) {
fb_enquiry = prompt("짧게 '"+fb+"'로 평가:", "일반적");
if (fb_enquiry != null && fb_enquiry != "") {fb += " ("+fb_enquiry+")";}
}
fb_send(fb);
fb_send2(fb,fbi);
}
var list = document.getElementById('fb_list');
list.parentNode.insertBefore(
newNode('p',{'id':'fb_thanks'},
newNode('a',{'href':fb_result2, 'target':'_blank'},fb_thanks)
),list
);
list.parentNode.removeChild(document.getElementById("fb_text"));
list.parentNode.removeChild(list);
return false;
}
}
// Send to ~cmackenzie
function fb_send(string){
if(fb_sent) return false;
fb_sent=true;
var date = new Date(); // Date parameter not required, if UTC
var yr = date.getFullYear();
var mth = date.getMonth()+1;
mth=(mth<10)?"0"+mth.toString():mth;
var day = date.getDate();
day=(day<10)?"0"+day.toString():day;
var url = fb_url+"&fb_revid="+wgCurRevisionId+"&fb_comment="+encodeURI(string)+"&fb_date="+yr+"-"+mth+"-"+day;
document.body.appendChild(
newNode('iframe',{'src':url,'class':'hiddenStructure'})
);
}
// Send to ~daveross
function fb_send2(string,indx){
if(fb_sent2) return false;
fb_sent2=true;
var date = new Date(); // Date parameter not required, if UTC
var yr = date.getFullYear();
var mth = date.getMonth()+1;
mth=(mth<10)?"0"+mth.toString():mth;
var day = date.getDate();
day=(day<10)?"0"+day.toString():day;
indx++;
var url = fb_url2+"&revid="+wgCurRevisionId+"&comment="+encodeURI(string)+"&comment_index="+indx+"&date="+yr+"-"+mth+"-"+day;
document.body.appendChild(
newNode('iframe',{'src':url,'class':'hiddenStructure'})
);
}
// DOM abbreviation function
function newNode(tagname){
var node = document.createElement(tagname);
for( var i=1;i<arguments.length;i++ ){
if(typeof arguments[i] == 'string'){ //Text
node.appendChild( document.createTextNode(arguments[i]) );
}else if(typeof arguments[i] == 'object'){
if(arguments[i].nodeName){ //If it is a DOM Node
node.appendChild(arguments[i]);
}else{ //Attributes (hopefully)
for(var j in arguments[i]){
if(j == 'class'){ //Classname different because...
node.className = arguments[i][j];
}else if(j == 'style'){ //Style is special
node.style.cssText = arguments[i][j];
}else if(typeof arguments[i][j] == 'function'){ //Basic event handlers
try{ node.addEventListener(j,arguments[i][j],false); //W3C
}catch(e){try{ node.attachEvent('on'+j,arguments[i][j],"Language"); //MSIE
}catch(e){ node['on'+j]=arguments[i][j]; }}; //Legacy
}else{
node.setAttribute(j,arguments[i][j]); //Normal attributes
}
}
}
}
}
return node;
}