사용자:슈비네이터/DYKcheck.js
이 페이지에 삽입한 코드는 계정을 손상시킬 수 있는 악의적인 내용을 포함할 수 있다. "importScript" 또는 "iuscript"가 있는 다른 페이지에서 스크립트를 가져오는 경우 다른 사용자가 변경할 수 있는 원격 스크립트를 동적으로 로드하게 된다는 점에 유의하십시오. 이 페이지에 추가하는 코드가 안전한지 확실하지 않으면 해당 마을 펌프에 문의하십시오. 이 페이지를 미리 볼 때 코드가 실행될 것이다. |
// ***************************************************************** // // DYKcheck 툴 // // 버전 1.1 // // 빠른 설치를 위해 //를 추가하십시오. // importScript('사용자:슈비네이터/DYKcheck.js'; // // 벡터.js // // [[사용자:] 참조//를 포함한 자세한 내용은 Shubinator/DYKcheck]를 참조하십시오. // 구성 가능한 옵션 및 설치 없이 도구 사용 방법 // // 또는 로그인. // // 슈비네이터가 2009년 2월에 쓴 첫 번째 버전 // // ***************************************************************** // mw.짐을 싣다.사용.(['미디어위키.api', 'mediawiki.util'], 기능을 하다 () { "엄정히 사용"; 시합을 하다 온티케이, 다음 섹션, urlJump, 단면, currentTitle, 부품처리, 기사 제목, 날짜, nom5x; // 구성 가능한 옵션 시합을 하다 날짜 형식 = 창문의.날짜 형식, 자물쇠를 열다 = 창문의.자물쇠를 열다, 후크길이노란색 = 창문의.후크길이노란색 200, 훅LengthRed = 창문의.훅LengthRed 220, check5xNoms = 창문의.check5xNoms "ifnom5x", 고정사이드바 = 창문의.고정사이드바 "온티크"; 시합을 하다 mwConfig = mw.구성.얻다([ "wgAction", "wgTitle", "wgPageName", "wgUserName", "wgNamespaceNumber", "피부" ]); 시합을 하다 api = 새로운 mw.api(); // Polyfill String.prototype.은 "!= -1"을 전체적으로 쓸 필요가 없도록 포함함 // 코드베이스. 만일 (!끈.원형을 뜨다.포함한다) { 끈.원형을 뜨다.포함한다 = 기능을 하다() { 돌아오다 끈.원형을 뜨다.인덱스오프.신청하다(이, 논쟁들) !== -1; }; } 기능을 하다 이스케이프Html(s) { // 브라우저의 내장 기능을 사용하여 HTML을 이스케이프하십시오. 시합을 하다 칸막이하다 = 문서화하다.createElement('div'); 칸막이하다.부록차일드(문서화하다.CreateTextNode(s)); 돌아오다 칸막이하다.innerHTML; } 기능을 하다 스캔문서(칭호를 붙이다, 생산량, html) { // DYKcheck 툴의 고기 // 주어진 html의 산문 크기 계산 // 지정된 html에서 인라인 인용문 및 스텁 템플릿 확인 // checkTalk(), getFirstRevision(), checkMove() 및 checkExpansion()으로 정보 전달 만일 (!온티케이 (check5xNoms === "항상") (check5xNoms === "ifnom5x" && nom5x)) { 부품처리 = 새로운 배열(4); } 다른 { 부품처리 = 새로운 배열(3); } 날짜 = 새로운 배열(4); 시합을 하다 산문디프 = 문서화하다.createElement("리"); 산문디프.id = "dyk-proble"; 생산량.부록차일드(산문디프); // 산문 크기 계산 시합을 하다 산문 = 계산프로세서(html, 진실의); 시합을 하다 pList = html.getElementsByTagName("p"); 시합을 하다 word_count = 0; 을 위해 (시합을 하다 이파라 = 0;이파라 < pList.길이; 이파라++) { 시합을 하다 파를 치다 = pList[이파라]; 만일 (파를 치다.parentNode.parentNode === html 파를 치다.parentNode.parentNode.parentNode.id === getBodyId()) { word_count += 파를 치다.innerHTML.대체하다(/(<<<<<<<<<<>+>>)>/ig.,"").갈라지다(' ').길이; } } 산문디프.innerHTML='프로세서 크기(텍스트만): </b'' + 이스케이프Html(산문) + ' buse '' + 이스케이프Html(word_count) + '단어) "읽을 수 있는 산문 크기"; 만일 (산문 < 1500) { 산문디프.문체를 하다.cssText = "색깔:핑크"; } // 인라인 인용문 확인 만일 (!html.innerHTML.포함한다('id="cite_ref-') && !html.innerHTML.포함한다('id=ref_ref-')) { 시합을 하다 노레프 = 문서화하다.createElement("리"); 노레프.id = "No-ref"; 생산량.부록차일드(노레프); 노레프.innerHTML = '인라인 인용 금지'; 노레프.문체를 하다.cssText = "색깔:핑크"; } // 아티클이 스텁인지 또는 DYK 또는 ITN에 표시되는지 확인 만일 (html.innerHTML.포함한다('id="stub"'"'"') html.innerHTML.포함한다('id=message') html.innerHTML.포함한다('슬라이프 플레인링크 스텁')) { 시합을 하다 스터발러트 = 문서화하다.createElement("리"); 스터발러트.id = "stubalertalertalert"; 생산량.부록차일드(스터발러트); 스터발러트.innerHTML = '기사는 스텁으로 분류된다.'; 스터발러트.문체를 하다.cssText = "노란색"; } 체크토크(칭호를 붙이다, 생산량); //대화 페이지 확인 // 다양한 태그 확인 시합을 하다 경보 색상 = "노란색"; 시합을 하다 이미지 목록 = 새로운 배열("텍스트_document_with_red_question_mark.svg", "질문집-new.svg", "Ambox content.png", "암박스 스타일.png", "임박스 스타일.png", "복사권-문제.svg", "복사권-문제 풀.svg", "암박스 글로브 콘텐츠.svg", "비균형 척도.svg", "암박스 저울.svg", "Ambox_contradict.svg", "암박스 경고 오렌지.svg", "Acap.svg"); 시합을 하다 taglist = 새로운 배열("검증되지 않은 내용", "추천적인 인용구, "dispute", "cleanup", "cleanup", "불법 위반", "불법 위반", "globalization", "neutrality", "neutrality", "contradiction", "dispute", "복사 편집"); 시합을 하다 태그파운드 = 거짓의; 시합을 하다 태거앨러트 = 문서화하다.createElement("리"); 만일 (html.innerHTML.포함한다("이 글은 위키피디아에 따라 삭제하는 것을 고려하고 있다.")) { 태그파운드 = 진실의; 시합을 하다 afdIndex = html.innerHTML.인덱스오프('title="위키백과:삭제 조항/') + 7; 시합을 하다 afdLink = html.innerHTML.하위 문자열(afdIndex, html.innerHTML.인덱스오프('"', afdIndex)); 시합을 하다 afdBoldTag = 문서화하다.createElement("b"); 시합을 하다 afdLinkTag = 문서화하다.createElement("a"); afdLinkTag.setAttribute("흐레프", "//en.wikipedia.org/wiki/" + afdLink); afdLinkTag.부록차일드(문서화하다.CreateTextNode("삭제 요청")); afdBoldTag.부록차일드(afdLinkTag); 태거앨러트.부록차일드(문서화하다.CreateTextNode("기사는 "이었다.)); 태거앨러트.부록차일드(afdBoldTag); 태거앨러트.부록차일드(문서화하다.CreateTextNode(". ")); 경보 색상 = "핑크"; } 다른 만일 ((html.innerHTML.toLowerCase().포함한다(''[table class="mbox ambox-mobox-mobox-mobiles)) (html.innerHTML.toLowerCase().포함한다('<table class="box ambox-mbox-mbox-mbox'를 링크)) (html.innerHTML.toLowerCase().포함한다('<table class="mbox 옴박스-mbox-mbox-mbox'의 플레인링크)) (html.innerHTML.toLowerCase().포함한다('<테이블 클래스="플레인링크 앰박스 앰박스-엠박스'))) { 태그파운드 = 진실의; 태거앨러트.부록차일드("문건은 빠른 삭제를 위해 태그가 붙었다. "); 경보 색상 = "핑크"; } 을 위해 (시합을 하다 아이이미지 = 0; 아이이미지 < 이미지 목록.길이; 아이이미지++) { 만일 (html.innerHTML.포함한다(이미지 목록[아이이미지])) { 태그파운드 = 진실의; 태거앨러트.부록차일드(문서화하다.CreateTextNode("기사에는 "이 있다.)); 태거앨러트.부록차일드(문서화하다.CreateTextNode(taglist[아이이미지])); 태거앨러트.부록차일드(문서화하다.CreateTextNode(" tag. ")); } } 만일 (태그파운드) { 태거앨러트.id = "태그-트렁크"; 태거앨러트.문체를 하다["색깔"] = 경보 색상; 생산량.부록차일드(태거앨러트); } // 물품 및 날짜의 작성자 찾기 getFirstRevision(칭호를 붙이다, 생산량); // 최근 100번의 편집 내 사용자 공간에서 기사가 이동되었는지 확인 만일 (mwConfig.wgNamespaceNumber !== 2) { CheckeckMove(칭호를 붙이다, 생산량); } 다른 { 부품처리[2] = 진실의; } // 5배까지 확장된 것으로 가정하여 확장 시작 날짜 확인(마지막 500개 편집) 만일 (!온티케이 (check5xNoms === "항상") (check5xNoms === "ifnom5x" && nom5x)) { checkExpansion(칭호를 붙이다, 생산량, 산문); } } 기능을 하다 체크문서() { // 스캔 준비 및 스캔 정보 전달문서() 온티케이 = 거짓의; 만일 (문서화하다.GetElementBy아이디("dyk-dynamic-0")) { 클리어스태츠(); } 다른 { 시합을 하다 생산량 = 문서화하다.createElement("울"); 생산량.id = "dyk-dynamic-0"; 시합을 하다 몸 = getBody(); 시합을 하다 모조의 = 몸.getElementsByTagName("div")[0]; 만일 (모조의.넥시블링 && 모조의.넥시블링.id === '사이트 노티스') { // siteNotice가 siteSub 사이트 아래에 있는 경우Sub 모조의 = 모조의.넥시블링; } 다른 만일 (모조의.넥시블링.넥시블링 && 모조의.넥시블링.넥시블링.id === '사이트 노티스') { 모조의 = 모조의.넥시블링.넥시블링; } 모조의.parentNode.삽입 전(생산량, 모조의.넥시블링); createHeaderAndProcessing(생산량); currentTitle = 0; 시합을 하다 칭호를 붙이다 = mwConfig.wgTitle; 만일 (mwConfig.wgNamespaceNumber === 2) { 칭호를 붙이다 = "사용자:" + 칭호를 붙이다; } 스캔문서(칭호를 붙이다, 생산량, 몸); } } 기능을 하다 체크티디크() { // 현재 지명 찾기 // URL에 표시되는 섹션으로 이동할 수 있음 // (예: http://en.wikipedia.org/wiki/T:TDYK#Older_nominations) // Hooks() 및 스캔을 확인하기 위해 스캔 준비 및 정보 전달문서()(핏 스톱을 통해) 온티케이 = 진실의; 만일 (!단면) { 단면 = 문서화하다.getElementsByTagName("h4"); 다음 섹션 = getFirstNom(); } // 점프 코드 만일 (창문의.위치.해시하다) { 시합을 하다 섹션AT = 창문의.위치.해시하다; 만일 (섹션AT !== urlJump) { 시합을 하다 펄쩍 뛰다 = 문서화하다.GetElementBy아이디(섹션AT.하위 문자열(1, 섹션AT.길이)); 시합을 하다 다음에 = 펄쩍 뛰다.parentNode; 하는 동안에 (다음에.노드 이름.toLowerCase() !== "h4") { 다음에 = 다음에.넥시블링; } 을 위해 (시합을 하다 아이섹션 = 0; 아이섹션 < 단면.길이; 아이섹션++) { 만일 (단면[아이섹션] === 다음에) { 다음 섹션 = 아이섹션; urlJump = 섹션AT; 부숴뜨리다; } } } } 만일 (다음 섹션 === 단면.길이) { 빈틈이 없는("지명 종료 후 시작까지 반복"); 다음 섹션 = getFirstNom(); } 만일 (문서화하다.GetElementBy아이디("dyk-dynamic-0")) { 클리어스태츠(); } 시합을 하다 퍼스트 아웃풋 = 문서화하다.createElement("울"); 퍼스트 아웃풋.id = "dyk-dynamic-0"; 단면[다음 섹션].parentNode.삽입 전(퍼스트 아웃풋, 단면[다음 섹션]); 시합을 하다 갈고리를 걸다 = 체크 후크(퍼스트 아웃풋); 만일 (!갈고리를 걸다) { 시합을 하다 훅오러디스크 = 문서화하다.createElement("div"); 훅오러디스크.id = "errordispdispdisp"; 훅오러디스크.문체를 하다.cssText = '색:빨간색, 글꼴-가중치:색상;'; 훅오러디스크.innerHTML = '오류: 후크가 올바르게 포맷되지 않음'; 퍼스트 아웃풋.parentNode.삽입 전(훅오러디스크, 퍼스트 아웃풋); 다음 섹션++; 돌아오다; } createHeaderAndProcessing(문서화하다.GetElementBy아이디("dyk-dynamic-0")); 시합을 하다 임시 홀더 = 문서화하다.createElement("div"); 임시 홀더.id = "입력자"; 임시 홀더.innerHTML = 갈고리를 걸다; 시합을 하다 대담한 = 임시 홀더.getElementsByTagName("b"); 시합을 하다 기사TitlesTemp = 새로운 배열(대담한.길이); 시합을 하다 제목카운터 = 0; 을 위해 (시합을 하다 이볼레드 = 0; 이볼레드 < 대담한.길이; 이볼레드++) { 시합을 하다 링크스 = 대담한[이볼레드].getElementsByTagName("a"); 만일 (링크스.길이 > 0) { 을 위해 (시합을 하다 아이링크 = 0; 아이링크 < 링크스.길이; 아이링크++) { 시합을 하다 linkTitle = 링크스[아이링크].getAttribute("title"); 만일 (!linkTitle) linkTitle = 링크스[아이링크].innerHTML; // 파이핑되지 않은 링크 기사TitlesTemp[제목카운터] = linkTitle; 제목카운터++; } } 다른 { 시합을 하다 포인터 = 대담한[이볼레드]; 하는 동안에 (포인터 !== 임시 홀더) { 만일 (포인터.노드 이름.toLowerCase() === "a") { 시합을 하다 포인터타이틀 = 포인터.getAttribute("title"); 만일 (!포인터타이틀) 포인터타이틀 = 포인터.innerHTML; // 파이핑되지 않은 링크 기사TitlesTemp[제목카운터] = 포인터타이틀; 제목카운터++; } 포인터 = 포인터.parentNode; } } } currentTitle = 0; 기사 제목 = 새로운 배열(제목카운터); 시합을 하다 훅출력 = 문서화하다.GetElementBy아이디("후크-크기"); 을 위해 (시합을 하다 i = 0; i < 제목카운터; i++) { 시합을 하다 생산량; 만일 (i === 0) { 생산량 = 퍼스트 아웃풋; } 다른 { 생산량 = 문서화하다.createElement("울"); 생산량.id = "dyk-sweet-" + i; 훅출력.parentNode.삽입 전(생산량, 훅출력); } 시합을 하다 기사Disp = 문서화하다.createElement("리"); 기사Disp.id = "기사-기사" + i; 생산량.부록차일드(기사Disp); 기사Disp.innerHTML = '조항.' + 이스케이프Html(i+1) + ':[/b].' + 이스케이프Html(기사TitlesTemp[i]); 기사 제목[i] = 기사TitlesTemp[i]; } 만일 (제목카운터 === 1) { 문서화하다.GetElementBy아이디("문서 제0조").innerHTML = '조항: ' + 이스케이프Html(기사 제목[0]); } 다른 만일 (제목카운터 === 0) { 만일 (문서화하다.GetElementBy아이디("다이크 처리")) { 시합을 하다 처리. = 문서화하다.GetElementBy아이디("다이크 처리"); 처리..parentNode.제거차일드(처리.); } 시합을 하다 boldErrorDisp = 문서화하다.createElement("div"); boldErrorDisp.id = "errordispdispdisp"; boldErrorDisp.문체를 하다.cssText = '색:빨간색, 글꼴-가중치:색상;'; boldErrorDisp.innerHTML = 문서화하다.CreateTextNode('오류: 지명된 기사는 굵은 글씨로 나타나야 한다.'); 단면[다음 섹션].parentNode.삽입 전(boldErrorDisp, 퍼스트 아웃풋); 다음 섹션++; 돌아오다; } 다음 섹션++; 체크타이틀(기사 제목[0], 퍼스트 아웃풋, 0); } 기능을 하다 체크 후크(생산량) { // 지명 섹션(코멘트 등 완료)을 가져와서 도우미 기능에 전달 // 부모 방법이 기사 제목을 찾을 수 있도록 마지막으로 제안된 후크를 반환함 시합을 하다 훅출력 = 문서화하다.createElement("울"); 훅출력.id = "후크-크기"; 생산량.parentNode.삽입 전(훅출력, 생산량.넥시블링); 시합을 하다 bodyHTML = getBody().innerHTML; 시합을 하다 이 섹션; 만일 (다음 섹션 !== 단면.길이 - 1) { 이 섹션 = bodyHTML.하위 문자열(bodyHTML.인덱스오프(단면[다음 섹션].innerHTML) + 단면[다음 섹션].innerHTML.길이, bodyHTML.인덱스오프(단면[다음 섹션+1].innerHTML)); } 다른 { 이 섹션 = bodyHTML.하위 문자열(bodyHTML.인덱스오프(단면[다음 섹션].innerHTML) + 단면[다음 섹션].innerHTML.길이, bodyHTML.인덱스오프('NewPP 제한 보고서')); } 이 섹션 = 이 섹션.대체하다('그,.", '그것').대체하다('...저거.', '... 저거.'); 만일 (이 섹션.포함한다("5x expan")) { nom5x = 진실의; } 다른 { nom5x = 거짓의; } 돌아오다 체크 후크도우미(훅출력, 이 섹션, 0); } 기능을 하다 체크 후크도우미(훅출력, Whats Left, 숫자) { // 반복적으로 nom에 대해 제안된 후크 찾기 // " ... 저 "로 시작하고 "?"로 끝나는 후크를 식별한다. // "..."를 계산하지 않음 후크 문자 수에서 " 또는 "(초기화)" 시합을 하다 갈고리를 걸다; 시합을 하다 의문을 품다색인 = Whats Left.인덱스오프("?"); 시합을 하다 whatsLeftLowerCase = Whats Left.toLowerCase(); 하는 동안에 ((whatsLeftLowerCase.인덱스오프("<a ", 의문을 품다색인) > whatsLeftLowerCase.인덱스오프("</a", 의문을 품다색인)) ((!whatsLeftLowerCase.포함한다("<a ", 의문을 품다색인)) && (whatsLeftLowerCase.포함한다("</a", 의문을 품다색인))) (whatsLeftLowerCase.인덱스오프("<i>", 의문을 품다색인) > whatsLeftLowerCase.인덱스오프("[/i]", 의문을 품다색인)) ((!whatsLeftLowerCase.포함한다("<i>", 의문을 품다색인)) && (whatsLeftLowerCase.포함한다("[/i]", 의문을 품다색인)))) { 의문을 품다색인 = Whats Left.인덱스오프("?", 의문을 품다색인 + 1); } 만일 (Whats Left.포함한다("…저 ") && 의문을 품다색인 !== -1) { 만일 (Whats Left.인덱스오프("…저 ") < 의문을 품다색인) { 갈고리를 걸다 = Whats Left.하위 문자열(Whats Left.인덱스오프("…저 ") + 4, 의문을 품다색인 + 1); 시합을 하다 훅템프 = 문서화하다.createElement("div"); 훅템프.id = "후크-크기"; 훅템프.innerHTML = "<p>" + 갈고리를 걸다 + "[/p]"; 시합을 하다 훅길이 = 계산프로세서(훅템프, 거짓의); 만일 (훅템프.innerHTML.포함한다("pictured)") 훅템프.innerHTML.포함한다("(의견서)")) { 훅길이 = 훅길이 - 10; } 시합을 하다 훅디스크 = 문서화하다.createElement("리"); 훅디스크.id = "후크-" + 숫자; 만일 (숫자 === 0) { 훅디스크.innerHTML = '오리지널 훅: ' + 이스케이프Html(훅길이) + '캐릭터'; } 다른 { 훅디스크.innerHTML = '대체 후크.' + 이스케이프Html(숫자) +'[/b]: ' + 이스케이프Html(훅길이) + '캐릭터'; } 만일 (훅길이 > 훅LengthRed) { 훅디스크.문체를 하다.cssText = '색깔:핑크'; } 다른 만일 (훅길이 > 후크길이노란색) { 훅디스크.문체를 하다.cssText = '노란색'; } 훅출력.부록차일드(훅디스크); 숫자 = 숫자 + 1; } 시합을 하다 구문 분석된 = Whats Left.하위 문자열(의문을 품다색인 + 1, Whats Left.길이 - 1); 시합을 하다 라스트 훅 = 체크 후크도우미(훅출력, 구문 분석된, 숫자); 만일 (!라스트 훅 && 갈고리를 걸다) { 라스트 훅 = 갈고리를 걸다; } 돌아오다 라스트 훅; } 돌아오다; } 기능을 하다 체크타이틀(칭호를 붙이다, 생산량, i) { // 위키백과의 서버에서 주어진 제목을 가져와서 스캔에 넘기다.문서() // 리디렉션 해결 시합을 하다 약속하다 = api.얻다({ 형식을 갖추다: 'json', 액션: '파스', 페이지를 매기다: 칭호를 붙이다, 방향을 바꾸다: 진실의, 받침대: '텍스트' }); 약속하다.끝냈다(기능을 하다 (오비지) { 시합을 하다 tdykTemp = 문서화하다.createElement("div"); tdykTemp.id = "ettdyk-thew" + i; tdykTemp.innerHTML = 오비지.파스를 치다.문자 메시지를 보내다["*"]; 칭호를 붙이다 = 오비지.파스를 치다.칭호를 붙이다; // 리디렉션된 경우 새 제목 가져오기 스캔문서(칭호를 붙이다, 생산량, tdykTemp); }); 약속하다.실패하다(기능을 하다 () { 빈틈이 없는("API 오류"); }); } 기능을 하다 클리어스태츠() { // 검색 결과가 이미 있는 경우 검색 결과를 끄고 강조 표시를 제거하십시오. 만일 (!온티케이) { 시합을 하다 올드스타일 = 문서화하다.GetElementBy아이디("dyk-dynamic-0").className; 시합을 하다 메인컨텐츠 = getBody(); 시합을 하다 pList = 메인컨텐츠.getElementsByTagName("p"); 을 위해 (시합을 하다 이파라 = 0; 이파라 < pList.길이; 이파라++) { 만일 (pList[이파라].parentNode === 메인컨텐츠 pList[이파라].parentNode.parentNode === 메인컨텐츠) { pList[이파라].문체를 하다.cssText = 올드스타일; } } } 만일 (문서화하다.GetElementBy아이디("errordispdispdisp")) { 시합을 하다 errorDisp = 문서화하다.GetElementBy아이디("errordispdispdisp"); errorDisp.parentNode.제거차일드(errorDisp); } 시합을 하다 iStat = 0; 하는 동안에 (문서화하다.GetElementBy아이디("dyk-sweet-" + iStat)) { 시합을 하다 생산량 = 문서화하다.GetElementBy아이디("dyk-sweet-" + iStat); 생산량.parentNode.제거차일드(생산량); iStat++; } 만일 (문서화하다.GetElementBy아이디("후크-크기")) { 시합을 하다 훅출력 = 문서화하다.GetElementBy아이디("후크-크기"); 훅출력.parentNode.제거차일드(훅출력); } 만일 (문서화하다.GetElementBy아이디("dyk-proble")) { 시합을 하다 머리글 = 문서화하다.GetElementBy아이디("dyk-proble"); 머리글.parentNode.제거차일드(머리글); } 만일 (문서화하다.GetElementBy아이디("다이크 처리")) { 시합을 하다 처리. = 문서화하다.GetElementBy아이디("다이크 처리"); 처리..parentNode.제거차일드(처리.); } } 기능을 하다 계산프로세서(의사 선생님, 보이는) { // 주어진 문서의 산문을 계산한다. // 이 기능과 아래의 도우미는 다음과 같은 수정 버전이다. // prossize 도구(http://en.wikipedia.org/wiki/User:Dr_pda/prosesize.js) 시합을 하다 pList = 의사 선생님.getElementsByTagName("p"); 시합을 하다 산문_크기 = 0; 시합을 하다 i = 0; 만일 (mwConfig.wgAction === 'submit' && 보이는) i = 1; // "이것은 미리 보기일 뿐임을 기억" 텍스트는 사용하지 마십시오. 을 위해 (; i < pList.길이; i++) { 만일 (pList[i].parentNode.parentNode === 의사 선생님 pList[i].parentNode.parentNode.parentNode.id === getBodyId()) { 산문_크기 += getReadable(pList[i], 보이는); 만일 (!온티케이 && 보이는) { pList[i].문체를 하다.cssText = '노란색'; } } } 돌아오다 산문_크기; } 기능을 하다 getReadable(id, 보이는) { // calculateProse()를 위한 도우미 방법 시합을 하다 텍스트 읽기 가능 = 0; 을 위해 (시합을 하다 i = 0; i < id.차일드노드.길이; i++) { 만일 (id.차일드노드[i].노드 이름 === '#text') { 텍스트 읽기 가능 += id.차일드노드[i].노드값.길이; } 다른 만일 (id.차일드노드[i].className !== '참고' && !(id.차일드노드[i].className && id.차일드노드[i].className.포함한다('엠플레이트')) && id.차일드노드[i].id !== 'coordinates') { 텍스트 읽기 가능 += getReadable(id.차일드노드[i], 보이는); } 다른 만일 (보이는) { // 인라인 유지 관리 태그(예: [필요한 경우]) 또는 지리 좌표인 경우 만일 (문서화하다.GetElementBy아이디("dyk-dynamic-0").className) { id.차일드노드[i].문체를 하다.cssText = 문서화하다.GetElementBy아이디("dyk-dynamic-0").className; } 다른 { id.차일드노드[i].문체를 하다.cssText = '색깔:흰색'; } } } 돌아오다 텍스트 읽기 가능; } 기능을 하다 checkExpansion(칭호를 붙이다, 생산량, 현재의) { // 확장 날짜의 시작 찾기(마지막 500개 편집) // 아티클의 과거 수정에 대한 마지막 500개의 고유 리비전 ID를 가져와서 도우미 기능으로 전달 시합을 하다 약속하다 = getRevisions({ 직함: 칭호를 붙이다, rvlimit: 500, rvprop: ['아이즈', 'timestamp', 'sha1'], rvdir.: '나이 많은' }); 약속하다.끝냈다(기능을 하다 (수정 사항삭제된 Revs 포함) { 시합을 하다 수정 사항 = 수정 사항삭제된 Revs 포함.여과하다(개정 => 'sha1' 에 개정); 시합을 하다 expansionTemp = 문서화하다.createElement("div"); expansionTemp.id = "expandtemptemptemp"; checkExpansion도우미(칭호를 붙이다, 현재의, 생산량, expansionTemp, 수정 사항, 0, 수정 사항.길이-1, -1); }); } 기능을 하다 checkExpansion도우미(칭호를 붙이다, 현재의, 생산량, expansionTemp, 수정 사항, 분, 맥스., expansionIndex) { // 확장 검사 도우미, 재귀적으로 사용 // 이진 검색 알고리즘을 사용하여 확장 날짜 시작 검색 // 기사의 크기가 항상 다소 증가했다고 가정함 // 기사 길이가 yoyo-ed인 경우, 이 함수는 정확한 결과를 제공하지 않는다. 시합을 하다 중앙의 = 수학.천장을 치다((맥스. + 분)/2); 만일 ((((맥스. - 분) < 2) && (맥스. !== 수정 사항.길이 - 1 expansionIndex !== -1)) expansionIndex === -2) { 시합을 하다 expansionResult = 문서화하다.createElement("리"); expansionResult.id = "expandresultresultresult"; 생산량.부록차일드(expansionResult); 만일 (expansionIndex < 0) { 만일 (수정 사항.길이 === 500) { expansionResult.innerHTML = 이스케이프Html('최근 500건의 편집에서 기사가 5배 확장되지 않았다.'); } 다른 { expansionResult.innerHTML = 이스케이프Html('기사는 만들어진 이후 5배 확장되지 않았다.'); } } 다른 { 시합을 하다 날짜를 잡다 = 수정 사항[expansionIndex-1].타임스탬프; expansionResult.innerHTML = '기사가 지금 5배라고 가정하면, 확장이 시작되었다.' + 이스케이프Html(expansionIndex) + '에 대한 편집 전' + 이스케이프Html(toNormalDate(날짜를 잡다.하위 문자열(0,10))); 날짜[2] = toDateObject(날짜를 잡다); } 부품처리[3] = 진실의; doneProcessing(); 돌아오다; } 다른 만일 ((맥스. - 분) < 2 && 맥스. === 수정 사항.길이 - 1) { expansionIndex = -2; } 시합을 하다 약속하다 = api.얻다({ 형식을 갖추다: 'json', 액션: '파스', 구식의: 수정 사항[중앙의].신체의, 받침대: '텍스트' }); 약속하다.끝냈다(기능을 하다 (오비지) { expansionTemp.innerHTML = 오비지.파스를 치다.문자 메시지를 보내다['*']; 시합을 하다 산문 = 계산프로세서(expansionTemp, 거짓의); // 경보("프로세서: " + 산문 + " 1x: " + 전류/5 + " 중간: " + 중간 + " 지수 확장: " + 확장 색인); // 위 줄을 사용하여 확장 검사를 디버그하십시오. 만일 (산문 < (현재의/5.0)) { 만일 ((expansionIndex > 중앙의) (expansionIndex < 0)) { expansionIndex = 중앙의; } checkExpansion도우미(칭호를 붙이다, 현재의, 생산량, expansionTemp, 수정 사항, 분, 중앙의, expansionIndex); } 다른 { checkExpansion도우미(칭호를 붙이다, 현재의, 생산량, expansionTemp, 수정 사항, 중앙의, 맥스., expansionIndex); } }); 약속하다.실패하다(기능을 하다 () { 빈틈이 없는("API 오류"); 부품처리[3] = 진실의; doneProcessing(); }); } 기능을 하다 체크토크(칭호를 붙이다, 생산량) { // DYK, ITN 또는 스텁 템플릿에 대한 기사 토크 페이지 확인 만일 (mwConfig.wgNamespaceNumber !== 2) { 칭호를 붙이다 = "토크:" + 칭호를 붙이다; } 다른 { 칭호를 붙이다 = 칭호를 붙이다.대체하다("사용자:", "사용자 대화:"); } 시합을 하다 약속하다 = getRevisions({ 직함: 칭호를 붙이다, rvprop: '내용' }); 약속하다.끝냈다(기능을 하다 (수정 사항) { 만일 (수정 사항 && 수정 사항[0]) { 시합을 하다 토크페이지 = 수정 사항[0]['*']; 시합을 하다 결과 = ''; 시합을 하다 색을 칠하다 = ''; 만일 (토크페이지.짝을 맞추다(/class\s*=\s*[s]tub/) && (문서화하다.GetElementBy아이디("stubalertalertalert") === 무효의)) { 결과 += '기사는 스텁으로 분류된다.'; 색을 칠하다 = '노란색'; } 시합을 하다 dyktalkRegexMatches = 토크페이지.짝을 맞추다(/{{{\s*[dD](yk YK\s?)토크[^}]*}}}/g); 만일 (dyktalkRegexMatches) { // DYK 태그가 있는 경우 이전 표시 날짜를 찾아 보십시오. 결과 += '예전에 '알았는가'에 기사가 등장했다.'; 시합을 하다 dyktalkTag = dyktalkRegexMatches.펑펑 터지다(); 시합을 하다 퍼스트파이프색인 = dyktalkTag.인덱스오프(' '); 시합을 하다 세컨드파이프색인 = dyktalkTag.인덱스오프(' ', 퍼스트파이프색인 + 1); 시합을 하다 제3파이프색인 = dyktalkTag.인덱스오프(' ', 세컨드파이프색인 + 1); 만일 (퍼스트파이프색인 !== -1 && 세컨드파이프색인 !== -1) { 만일 (제3파이프색인 === -1) { 제3파이프색인 = dyktalkTag.길이 - 2; // -2 }을(를) 없애기 } 시합을 하다 월날짜 = dyktalkTag.하위 문자열(퍼스트파이프색인 + 1, 세컨드파이프색인); 시합을 하다 연도 = dyktalkTag.하위 문자열(세컨드파이프색인 + 1, 제3파이프색인); 시합을 하다 피처링 날짜 = 새로운 날짜(월날짜 + " " + 연도); 만일 (피처링 날짜.토스트링() !== '잘못된 날짜') { 시합을 하다 월 = 피처링 날짜.월을 얻다() + 1; 만일 (월 < 10) { 월 = '0' + 월; } 시합을 하다 날짜를 잡다 = 피처링 날짜.getDate(); 만일 (날짜를 잡다 < 10) { 날짜를 잡다 = '0' + 날짜를 잡다; } 시합을 하다 날짜 문자열 = toNormalDate(피처링 날짜.getFullYear() + '-' + 월 + '-' + 날짜를 잡다); 결과 = 결과.하위 문자열(0, 결과.길이 - 1) + ', on ' + 이스케이프Html(날짜 문자열); } } 색을 칠하다 = '핑크'; } 다른 만일 (토크페이지.짝을 맞추다(/rticle[ ]?[H]istory[\s\S]*dykdate\s*=.*?\S/)) { 결과 += '예전에 '알았는가'에 기사가 등장했다.'; 색을 칠하다 = '핑크'; } 만일 (토크페이지.짝을 맞추다(/{{\s*[I]TN(\st T)alk/)) { // {{ITNtalk}}, {{}ITN톡}, {{ITNTalk}} 결과 += '이전에 인 더 뉴스에 기사가 실렸다.'; 색을 칠하다 = '핑크'; } 만일 (결과) { 시합을 하다 토크 결과 = 문서화하다.createElement("리"); 토크 결과.id = "말하기 쉬운"; 생산량.부록차일드(토크 결과); 토크 결과.innerHTML = 결과; 만일 (색을 칠하다) { 토크 결과.문체를 하다["색깔"] = 색을 칠하다; } } CheckTalkForGoodIriterStatus(토크페이지, 생산량); } 부품처리[0] = 진실의; doneProcessing(); }); 약속하다.실패하다(기능을 하다 () { 부품처리[0] = 진실의; doneProcessing(); }); } 기능을 하다 CheckTalkForGoodIriterStatus(토크페이지, 생산량) { // 사례 테스트: // 완벽한 개념의 대성당(모스크바) - 기사 역사, 두 개의 GAN(마지막 성공), 현재 특집 기사 // LoveGame - 기사 역사, 성공적인 GAN 1개, GARs 없음 // 파파라치 (Lady Gaga song) - 기사 히스토리, 하나의 성공적인 GAN, GAR 다음에 나열되지 않은 GAN, 또 하나의 성공적인 GAN, no-op GAR // Curtis(50Cent 앨범) - 기사 기록, 성공적인 GAN 1개, GAR 다음에 나열되지 않음 // G.U.Y. - 관습에 얽매이지 않는 형식의 기사 히스토리 // Arthur Adams (코믹스) - 파격적인 포맷의 기사 히스토리 // 블랙번 파이어브랜드 - {{GA}} // 토니호크의 언더그라운드 - {{GA}}} 교란 {{Game} 태그 시합을 하다 gaDate = ''; 시합을 하다 개렉스매치 = 토크페이지.짝을 맞추다(/{{\s*[gG][A]\s*[ ][^}]*}}}}/g); 만일 (개렉스매치) { // GA 태그가 있으면 좋은 기사 프로모션 날짜를 찾아 보십시오. 시합을 하다 가태그 = 개렉스매치.펑펑 터지다(); 시합을 하다 퍼스트파이프색인 = 가태그.인덱스오프(' '); 시합을 하다 세컨드파이프색인 = 가태그.인덱스오프(' ', 퍼스트파이프색인 + 1); 만일 (퍼스트파이프색인 !== -1) { 만일 (세컨드파이프색인 === -1) { 세컨드파이프색인 = 가태그.길이 - 2; // -2 }을(를) 없애기 } gaDate = 가태그.하위 문자열(퍼스트파이프색인 + 1, 세컨드파이프색인); } } 다른 만일 (토크페이지.짝을 맞추다(/rticle[ ]?[H]이스토리/)) { // 아티클 히스토리 태그에서 양호한 아티클 상태 확인 // 마지막 GAN 액션 보기 // 조치 번호 파악 // 조치 번호 지정, 조치 결과가 "목록"되었는가? // 아니오인 경우 여기서 중지 - 기사가 좋은 기사가 아님 // 해당되는 경우, 조치Xdate에서 좋은 기사 프로모션 날짜 가져오기 시합을 하다 간마츠 = 토크페이지.짝을 맞추다(/action[0123456789]+\s*=\s*(간 GAN)/g); 만일 (간마츠) { 시합을 하다 lastGanAction = 간마츠.펑펑 터지다(); 시합을 하다 lastGanActionNumber = lastGanAction.하위 문자열(6, lastGanAction.인덱스오프('=')); // '행동' 및 등호 뒤에 있는 모든 것을 제거 lastGanActionNumber = lastGanActionNumber.다듬다(); 시합을 하다 ganResultIndex = 토크페이지.인덱스오프('행동' + lastGanActionNumber + 'result'); 시합을 하다 ganResult = 토크페이지.하위 문자열(토크페이지.인덱스오프('=', ganResultIndex) + 1, 토크페이지.인덱스오프(' ', ganResultIndex)).다듬다(); 만일 (ganResult === '목록' ganResult === '목록' ganResult === '통과' ganResult === '통과') { 시합을 하다 ganDateIndex = 토크페이지.인덱스오프('행동' + lastGanActionNumber + '날짜'); gaDate = 토크페이지.하위 문자열(토크페이지.인덱스오프('=', ganDateIndex) + 1, 토크페이지.인덱스오프(' ', ganDateIndex)).다듬다(); } // 그런 다음 마지막 GAR 작업을 실행하십시오. // 조치 번호 파악 // GAR 조치 번호가 GAN 조치 번호 다음인가? 그렇다면 계속하십시오. // 주어진 조치 번호, 조치 결과가 "목록되지 않음"이었습니까? // 만약 그렇다면, 기사는 좋은 기사가 아니다. 시합을 하다 가마트치 = 토크페이지.짝을 맞추다(/action[0123456789]+\s*=\s*(GAR)/g); 만일 (가마트치) { 시합을 하다 라스트가액션 = 가마트치.펑펑 터지다(); 시합을 하다 lastGarActionNumber = 라스트가액션.하위 문자열(6, 라스트가액션.인덱스오프('=')); // '행동' 및 등호 뒤에 있는 모든 것을 제거 lastGarActionNumber = lastGarActionNumber.다듬다(); 만일 (파스인트(lastGarActionNumber) > 파스인트(lastGanActionNumber)) { 시합을 하다 garResultIndex = 토크페이지.인덱스오프('행동' + lastGarActionNumber + 'result'); 시합을 하다 개러스털트 = 토크페이지.하위 문자열(토크페이지.인덱스오프('=', garResultIndex) + 1, 토크페이지.인덱스오프(' ', garResultIndex)).다듬다(); 만일 (개러스털트 === '지연된' 개러스털트 === '지연됨') { gaDate = ''; // 좋은 기사가 아니에요, GAR은 GAN을 쫓아와서 기사를 강등시켰어. } } } } } 만일 (gaDate) { 만일 (gaDate.길이 > 6 && gaDate.인덱스오프('(UTC)') === gaDate.길이 - 6) { gaDate = gaDate.하위 문자열(0, gaDate.길이 - 6); // (UTC)가 다음 위치에 있을 경우 보트 레이스 1997이 올바르게 구문 분석되지 않음 } 만일 (gaDate.길이 > 5 && gaDate[2] === ':' && gaDate[5] === ',') { gaDate = gaDate.하위 문자열(6, gaDate.길이).다듬다(); // "17:21, 2014년 6월 26일"과 같은 문자열에서 크롬이 예상대로 구문 분석되지 않음 } 시합을 하다 가프로모션 = 문서화하다.createElement("리"); 가프로모션.id = "ga-beat"; 생산량.부록차일드(가프로모션); 시합을 하다 gaPromottedDate = 새로운 날짜(gaDate); // 날짜 개체가 올바른 시간대에 있는지 확인 gaPromottedDate = 새로운 날짜(날짜.UTC(gaPromottedDate.getFullYear(), gaPromottedDate.월을 얻다(), gaPromottedDate.getDate(), gaPromottedDate.get hours(), gaPromottedDate.getMinutes(), gaPromottedDate.getSeconds())); 날짜[3] = gaPromottedDate; 가프로모션.innerHTML = '기사는 '에 굿 기사 지위로 승격되었다.' + 이스케이프Html(toNormalDate(gaPromottedDate.토이소스트링())); } } 기능을 하다 getRevisions(옵션들) { // 제목 수정본의 배열과 함께 jQuery 약속을 반환한다. // 첫 번째 매개 변수는 다음 API 필드를 수락하는 옵션 개체: // - 제목 // - rvlimit // - rvprop // - rvdir 옵션들 = 옵션들 {}; 돌아오다 api.얻다({ 형식을 갖추다: 'json', 액션: 'query', 받침대: 'revisions', 직함: 옵션들.직함, rvlimit: 옵션들.rvlimit, rvprop: 옵션들.rvprop, rvdir.: 옵션들.rvdir., 색인 페이지: 진실의 }).그때( // 성공에 대하여 기능을 하다 (오비지) { 시합을 하다 페이지아이드 = 오비지.질의하다.페이지 기사들[0]; 돌아오다 오비지.질의하다.페이지[페이지아이드].수정 사항; }, // 고장 시 기능을 하다 (잘못을 저지르다) { 빈틈이 없는("API 오류"); 돌아오다 잘못을 저지르다; } ); } 기능을 하다 getFirstRevision(칭호를 붙이다, 생산량) { // 기사 작성자 및 작성 날짜 찾기 // 또한 문서가 리디렉션으로 작성되었는지 확인하고, 리디렉션되지 않은 날짜를 찾음 시합을 하다 창조했다 = 문서화하다.createElement("리"); 창조했다.id = "창작-창"; 생산량.부록차일드(창조했다); 시합을 하다 약속하다 = getRevisions({ 직함: 칭호를 붙이다, rvlimit: 4, rvprop: ['timestamp', '사용자', '내용'], rvdir.: 'newer' }); 약속하다.끝냈다(기능을 하다 (수정 사항) { 시합을 하다 사용자 = 수정 사항[0].사용자; 시합을 하다 타임스탬프 = 수정 사항[0].타임스탬프; 창조했다.innerHTML=''에 의해 만들어진 조항. + 이스케이프Html(사용자) + ', on ' + 이스케이프Html(toNormalDate(타임스탬프.하위 문자열(0,10))); 날짜[0] = toDateObject(타임스탬프); 을 위해 (시합을 하다 i = 0; i < 수정 사항.길이; i++) { 시합을 하다 내용물 = 수정 사항[i]['*']; 시합을 하다 이레디렉트 = 내용물.대체하다(' ', '').대체하다(':', '').토퍼케이스().포함한다('#REDirect[]); 만일 (이레디렉트 && i === 0) { 창조했다.innerHTML = 창조했다.innerHTML + '리디렉션으로'; } 다른 만일 (!이레디렉트) { 만일 (i !== 0) { 시합을 하다 비리디렉티브 = 문서화하다.createElement("리"); 비리디렉티브.id = "기존에서"; 생산량.부록차일드(비리디렉티브); 시합을 하다 urUser = 수정 사항[i].사용자; 시합을 하다 urTimestamp = 수정 사항[i].타임스탬프; 비리디렉티브.innerHTML = '기사는 에 대한 비재간접이 되었다.' + 이스케이프Html(toNormalDate(urTimestamp.하위 문자열(0,10))) + by ' + 이스케이프Html(urUser); 날짜[0] = toDateObject(urTimestamp); } 부숴뜨리다; } } 부품처리[1] = 진실의; doneProcessing(); }); 약속하다.실패하다(기능을 하다 () { 부품처리[1] = 진실의; doneProcessing(); }); } 기능을 하다 CheckeckMove(칭호를 붙이다, 생산량) { //사용자 공간 또는 AfC에서 현재 위치로 이동하기 위해 아티클의 마지막 100개 편집 시합을 하다 약속하다 = getRevisions({ 직함: 칭호를 붙이다, rvlimit: 100, rvprop: ['flags', '사용자', 'timestamp', 'comment'], rvdir.: '나이 많은', }); 약속하다.끝냈다(기능을 하다 (수정 사항) { 을 위해 (시합을 하다 i = 0; i < 수정 사항.길이; i++) { 시합을 하다 댓글 = 수정 사항[i].댓글; 시합을 하다 사용자 이름 = 수정 사항[i].사용자; 만일 ((수정 사항[i].미성년자 === "") && 댓글.짝을 맞추다(/moveed (페이지 )?(\[\[사용자:] (\[초안:]) (\[Wikipedia Talk:생성물\/)\[/]로)) { 시합을 하다 이전 위치 = 댓글.하위 문자열(댓글.인덱스오프("[[") + 2, 댓글.인덱스오프(" to []) - 3); 시합을 하다 날짜를 잡다 = 수정 사항[i].타임스탬프; 시합을 하다 옮겨진 = 문서화하다.createElement("리"); 옮겨진.id = "사용자 공간"; 생산량.부록차일드(옮겨진); 옮겨진.innerHTML = '기사는 '에서 이동했다. + 이스케이프Html(이전 위치) + ', on ' + 이스케이프Html(toNormalDate(날짜를 잡다.하위 문자열(0,10))); 날짜[1] = toDateObject(날짜를 잡다); 부숴뜨리다; } } 부품처리[2] = 진실의; doneProcessing(); }); 약속하다.실패하다(기능을 하다 () { 부품처리[2] = 진실의; doneProcessing(); }); } 기능을 하다 doneProcessing() { // 모든 부품 가공 완료 여부 확인 // 만약 그렇다면, 생성일과 확장일을 10일 이내에 점검한다(명칭자의 호의로 하향 조정). // 다음 제목(여러 기사 명목의 경우)이 처리됨(비동기 스레드를 퇴치하기 위해 필요) // 타이틀이 더 이상 남아 있지 않을 경우(또는 T:TDYK), 처리 메시지가 제거됨 시합을 하다 제목 완성 = 진실의; 을 위해 (시합을 하다 i = 0; i < 부품처리.길이; i++) { 만일 (!부품처리[i]) { 제목 완성 = 거짓의; 부숴뜨리다; } } 만일 (문서화하다.GetElementBy아이디("다이크 처리") && 제목 완성) { 시합을 하다 curDate = 새로운 날짜(); 시합을 하다 승자 = 새로운 날짜(); 만일 (날짜[1]) { 승자 = 날짜[1]; } 다른 { 승자 = 날짜[0]; } 만일 (날짜[2] > 승자) { 승자 = 날짜[2]; } 만일 (날짜[3] > 승자) { 승자 = 날짜[3]; } 시합을 하다 dateDifference = 수학.마루를 깔다((curDate.gettime() - 승자.gettime())/(1000*60*60*24)); 만일 (dateDifference > 10) { 시합을 하다 생산량 = 문서화하다.GetElementBy아이디("dyk-sweet-" + currentTitle); 시합을 하다 Notrecent = 문서화하다.createElement("리"); Notrecent.id = "미흡입"; 생산량.부록차일드(Notrecent); 만일 (!온티케이 (check5xNoms === "항상") (check5xNoms === "ifnom5x" && nom5x)) { Notrecent.innerHTML = "지난 10일(이하 ") 이내에 5배 이상의 조항이 생성되거나 확대되지 않았거나 굿 글로 승격되지 않았다. + 이스케이프Html(dateDifference) + "일)" + <작다>DYKcheck는 이전 버전을 "로 설명하지 않는다. + '<a href="//en.wikipedia.org/wiki/Wikipedia:Split" or '' + '[a href="//en.wikipedia.org/wiki/Wikipedia:Copyright_violations"]의 위반 사항.</작다>; } 다른 { Notrecent.innerHTML = "지난 10일 이내에 (") 기사가 만들어지지 않았다. + 이스케이프Html(dateDifference) + "일)"; } Notrecent.문체를 하다.cssText = '색깔:핑크'; } 만일 (온티케이 && currentTitle < (기사 제목.길이 - 1)) { currentTitle++; 체크타이틀(기사 제목[currentTitle], 문서화하다.GetElementBy아이디("dyk-sweet-" + (currentTitle)), currentTitle); } 다른 { 시합을 하다 처리. = 문서화하다.GetElementBy아이디("다이크 처리"); 처리..parentNode.제거차일드(처리.); } } } // prossize 도구에서 가져옴(http://en.wikipedia.org/wiki/User:Dr_pda/prosesize.js) 기능을 하다 getBodyId() { 시합을 하다 contentName; 만일 (mwConfig.가죽을 벗기다 === '모노북' mwConfig.가죽을 벗기다 === 'chick' mwConfig.가죽을 벗기다 === 'mymwConfig.가죽의 mwConfig.가죽을 벗기다 === 'simple') { contentName = '바디콘텐츠'; } 다른 만일 (mwConfig.가죽을 벗기다 === '근대적인') { contentName = 'mw_contentholder'; } 다른 만일 (mwConfig.가죽을 벗기다 === '표준' mwConfig.가죽을 벗기다 === 'cologne푸른색' mwConfig.가죽을 벗기다 === 'nostalgia') { contentName = '기사'; } 다른 { // 예비 케이스, 위 내용은 현재 존재하는 모든 스킨을 포함한다. contentName = '바디콘텐츠'; } // 페이지 미리보기 시 모든 스킨에 대해 동일 만일 (mwConfig.wgAction === 'submit') contentName = 'wikiPreview'; 돌아오다 contentName; } 기능을 하다 getBody() { // 페이지의 HTML 본문 가져오기 // prossize 도구에서 가져옴(http://en.wikipedia.org/wiki/User:Dr_pda/prosesize.js) 돌아오다 문서화하다.GetElementBy아이디(getBodyId()); } 기능을 하다 getFirstNom() { 시합을 하다 퍼스트 노먼 = 0; // 첫 번째 "Atticles created/Expanded on..." h3 섹션 시합을 하다 요소이터레이터 = 단면[퍼스트 노먼].이전시블링; 하는 동안에 (요소이터레이터.노드 이름.toLowerCase() !== "h3") { 요소이터레이터 = 요소이터레이터.이전시블링; } 하는 동안에 (!(요소이터레이터.노드 이름.toLowerCase() === "h3" && 요소이터레이터.innerHTML.포함한다("작성/확장"))) { 만일 (요소이터레이터.노드 이름.toLowerCase() === "h4") { 퍼스트 노먼++; } 요소이터레이터 = 요소이터레이터.넥시블링; } 돌아오다 퍼스트 노먼; } 기능을 하다 createHeaderAndProcessing(생산량) { // 검색 결과 위에 머리글 만들기 시합을 하다 머리글 = 문서화하다.createElement("스팬"); 머리글.id = "dyk-proble"; 머리글.innerHTML = '<<</>DYK 적격성 검사 결과: <작다>(<a href="///en.wikipedia.org/wiki/' 참조). + 'User:Shubinator/DYK check' 자세한 내용은 여기에서 확인하십시오.)</i>[작다]; 생산량.parentNode.삽입 전(머리글,생산량); 시합을 하다 처리. = 문서화하다.createElement("스팬"); 처리..id = "다이크 처리"; 처리..innerHTML = '<<<<<<font color="crimson"> 처리 중... </그냥>; 생산량.parentNode.삽입 전(처리., 머리글); } 기능을 하다 toNormalDate(utc) { // 위키백과 타임스탬프의 날짜 부분을 읽을 수 있는 날짜로 변환 시합을 하다 몇달. = 새로운 배열("빈칸","1월","2월", "3월", "4월", "5월", "준", "7월", "8월", "9월", "10월", "11월", "12월"); 만일 (날짜 형식 === "british") { 돌아오다 (utc.하위 문자열(8,10) * 1) + ' ' + 몇달.[utc.하위 문자열(5,7) * 1] + ' ' + utc.하위 문자열(0,4); } 다른 { 돌아오다 몇달.[utc.하위 문자열(5,7) * 1] + ' ' + (utc.하위 문자열(8,10) * 1) + ', ' + utc.하위 문자열(0,4); } } 기능을 하다 toDateObject(타임스탬프) { // 위키백과 타임스탬프를 Javascript Date 객체로 변환 시합을 하다 날짜를 잡다 = 새로운 날짜(); 날짜를 잡다.setUTCFull 연도(타임스탬프.하위 문자열(0,4), 타임스탬프.하위 문자열(5,7) - 1, 타임스탬프.하위 문자열(8,10)); 날짜를 잡다.세투쿠르스(타임스탬프.하위 문자열(11,13), 타임스탬프.하위 문자열(14,16), 타임스탬프.하위 문자열(17,19)); 돌아오다 날짜를 잡다; } 기능을 하다 고정사이드바() { // 사이드바 수정 코드의 일부, 나머지는 addToolbarPortletLink 기능 아래에 있음 // 이 기능은 모노북 피부에만 필요함 시합을 하다 내용물 = 문서화하다.GetElementBy아이디("열-내용"); // 주 내용 열 찾기 시합을 하다 발을 동동 구르다 = 문서화하다.GetElementBy아이디("발바닥"); // 바닥글 찾기 발을 동동 구르다.parentNode.제거차일드(발을 동동 구르다); // 글로벌 래퍼에서 바닥글 제거 내용물.부록차일드(발을 동동 구르다); // 내용 열의 끝에 바닥글을 놓으십시오. 시합을 하다 탭들 = 문서화하다.GetElementBy아이디("p-caues"); // 상위 탭 목록 찾기 탭들.parentNode.제거차일드(탭들); // 측면 열에서 탭 목록 제거 내용물.삽입 전(탭들, 내용물.마지막 차일드); // 내용 열에 탭 목록 배치 시합을 하다 개인적인 = 문서화하다.GetElementBy아이디("p-personal"); // 개인 링크 목록 찾기 개인적인.parentNode.제거차일드(개인적인); // 측면 열에서 개인 링크 목록 제거 내용물.삽입 전(개인적인, 내용물.마지막 차일드); // 내용 열에 개인 링크 목록 배치 } 창문의.dykCheck = 기능을 하다 () { // 캐주얼한 사용과 애논을 위한 기능 만일 (((mwConfig.wgAction === '보기' mwConfig.wgAction === 'submit' mwConfig.wgAction === 'purge') && (mwConfig.wgNamespaceNumber === 0 mwConfig.wgNamespaceNumber === 2)) 자물쇠를 열다) { 체크문서(); } 다른 만일 (mwConfig.wgPageName === '템플릿_talk:did_you_know') { 체크티디크(); } }; 기능을 하다 addToolbarPortletLink(펑크, 툴팁) { 시합을 하다 연결하다 = mw.이용하다.addPortletLink( 'p-tb', '#', 'DYK 체크', 't-dyk-check', 툴팁 ); $( 연결하다 ).찰칵찰칵 소리를 내다( 기능을 하다 (e) { e.preventDefault(); 펑크(); }); } // 도구 모음 포틀렛 링크 추가 만일 (자물쇠를 열다 ( (mwConfig.wgAction === '보기' mwConfig.wgAction === 'submit' mwConfig.wgAction === 'purge') && (mwConfig.wgNamespaceNumber === 0 mwConfig.wgNamespaceNumber === 2) )) { addToolbarPortletLink(체크문서, '이 기사가 DYK에 적합한지 확인하십시오.'); } 다른 만일 (mwConfig.wgPageName === '템플릿_talk:did_you_know') { addToolbarPortletLink(체크티디크, 'DYK 후보 자격 확인'); } // 사이드바 수정 만일 (mwConfig.wgUserName && mwConfig.가죽을 벗기다 === '모노북' && ( 고정사이드바 === "항상" 고정사이드바 === "온티크" && mwConfig.wgPageName === '템플릿_talk:did_you_know' )) { 고정사이드바(); } // 고정 사이드바에 대한 아래 코드는 두 가지 소스가 혼합된 것이다. // http://meta.wikimedia.org/wiki/Help:User_style/floating_quickbar // http://en.wikipedia.org/wiki/User:Omegatron/monobook.js/floatingSidebar.js // 아래 코드는 거의 내가 작성하지 않았다(슈비네이터) // 이 CSS는 속성 선택기 대신 javascript를 사용하여 이전 버전의 IE에서 숨겨져야 하는가? // 스크립트가 자체 포함되도록 스타일 시트 인라인 포함: 만일 (mwConfig.wgUserName && ( 고정사이드바 === "항상" 고정사이드바 === "온티크" && mwConfig.wgPageName === '템플릿_talk:did_you_know' )) { 시합을 하다 머리 = 문서화하다.getElementsByTagName("머리")[0]; 시합을 하다 문체를 하다 = 문서화하다.createElement('스타일'); 문체를 하다.타자를 치다 = 'text/css'; 시합을 하다 사이드바DivHidden; 시합을 하다 사이드바Div; 시합을 하다 랑바디; 만일 (mwConfig.가죽을 벗기다 === 'vector') { // 기본 피부(2010년 5월 기준) 사이드바DivHidden = 'div#mw패널'; 사이드바Div = 'div#mw패널'; 랑바디 = '#p-flash .body'; } 다른 { // 모노북, 모던하고 심플한 스킨 만일 (mwConfig.가죽을 벗기다 === '근대적인') { 사이드바DivHidden = 'div[id=mw_portlets]'; } 다른 만일 (mwConfig.가죽을 벗기다 === 'simple') { 사이드바DivHidden = '#column-1'; } 다른 { // 모노북 피부 사이드바DivHidden = 'div[id=column-one]'; /* 계수형 선택기를 사용하면 IE */에서 이를 숨긴다. } 사이드바Div = '#column-1'; 랑바디 = '#p-flash .p.p신체'; } 시합을 하다 cssText = " /* */ " 스크롤하면서 사이드바 위치를 수정하십시오.+ 사이드바DivHidden + ' { '+ ' 위치: 고정됨; '; 만일 (mwConfig.가죽을 벗기다 === 'vector') { // 사이드바를 왼쪽 상단으로 강제 이동(일부 스킨에서만 필요) cssText += '왼쪽: 0시; '+ ' top: 0;; '; } 다른 만일 (mwConfig.가죽을 벗기다 === '모노북') { cssText += '왼쪽: 0시; '+ ' 상단: -160˚; '; } cssText += '높이: 100%; /* 브라우저를 너무 작게 축소하면 */ '+ ' overflow: auto; /* 측면 열은 스크롤할 수 있으므로 */ '+ ' z-index: 2; /*은(는) 항상 액세스할 수 있지만, 못생기기는 하지만 */ '+ ' } '+ ' '+ ' #p-logo { /* 다른 div와 인라인으로 로고 만들기 */ '+ ' position:static; '+ ' } '+ ' '+ 사이드바Div + ' { /* 사이드바 열은 상단 화면 가장자리에서 시작 */ '+ '패딩 탑: 0; '+ ' } '+ ' '+ 랑바디 + ' ul{ /* 언어 상자를 고정 높이로 설정하고 */ '+ '높이: 6em; /* 너무 길면 스크롤 가능하여 화면 */ '+ ' 오버플로: auto; '+ ' } '+ ' '+ ' /* 배경 이미지도 수정하여 */ ' 스크롤할 때 멋있어 보이도록 하십시오.+ '몸 { '+ ' 배경화면: 고정; '+ ' } '+ ' '+ " /* 바닥글이 보기 좋고 사이드바가 겹치지 않도록 고정 */ "+ '#footer {'+ '마진 왼쪽: 13.6em; '+ '경계 왼쪽: 고체 1³ rgb(250, 189, 35), '+ ' -192-경계-상단-좌측: 1em; '+ ' -192-경계-하단-좌측: 1em; '+ ' } '; 만일 (mwConfig.가죽을 벗기다 === '모노북') { cssText += ' /* 개인 링크를 오른쪽 상단에 유지 */ '+ '#p-personal {'+ ' 너비:100%; '+ '하얀 공간:노랩; '+ '패딩:0 0 0; '+ '여백:0; '+ ' position:position; '+ '왼쪽: 0시; '+ ' top: 0;; '+ ' z-index: 0; '+ '경계: 없음; '+ ' 배경: 없음; '+ ' 오버플로: 표시됨; '+ 1.2em; 1.2em; '+ ' } '+ ' '+ ' #p-personal h5 { '+ ' 표시:표시; '+ ' } '+ ' #p-personal.portlet, '+ ' #p-personal .pBody {'+ ' 패딩:0; '+ '여백:0; '+ '경계: 없음; '+ ' z-index:0; '+ ' 오버플로: 표시됨; '+ ' 배경: 없음; '+ ' } '+ ' /* 포틀렛 */ '에 포함된 ul입니다.+ '#p-personal ul {'+ '경계: 없음; '+ '1.4em; 1.4em; '+ color: #2f6fab; '+ '패딩: 0em 2em 0 3em; '+ '여백:0; '+ ' 텍스트 메시지: 오른쪽; '+ ' 텍스트 메시지: 소문자; '+ ' list-style: none; '+ ' z-index: 0; '+ ' 배경: 없음; '+ ' } '+ '#p-personal li { '+ ' z-index: 0; '+ '경계: 없음; '+ ' 패딩:0; '+ ' 표시: 인라인; '+ color: #2f6fab; '+ '여백-왼쪽: 1em; '+ 1.2em; 1.2em; '+ ' 배경: 없음; '+ ' } '+ '#p-personal li a { '+ ' 텍스트 메시지: 없음; '+ ' color: #005896; '+ '패딩 하단: 0.2em; '+ ' 배경: 없음; '+ ' } '+ '#p-personal li a:hover {'+ ' 배경색: 흰색; '+ '패딩 하단: 0.2em; '+ ' 텍스트 메시지: 없음; '+ ' } '+ ' /* 사용자 이름 */ '의 작은 사용자 그림 유지+ 'li#pt-userpage, '+ '리#pt-anonuser 페이지, '+ '리#pt-lipt-lipt-lipt-lipt+ ' 배경: url(/1987-1.5/monobook/user.proper.properties) 상단 좌측 no-message; '+ '패딩 왼쪽: 20인치; '+ ' 텍스트 메시지: 없음; '+ ' } '+ ' '; } 시합을 하다 규칙. = 문서화하다.CreateTextNode(cssText); 만일 (문체를 하다.스타일시트) { 문체를 하다.스타일시트.cssText = 규칙..노드값; } 다른 { 문체를 하다.부록차일드(규칙.); } 머리.부록차일드(문체를 하다); } });