모듈:사용자 상자
Module:Userbox| 이 루아 모듈은 전체 페이지의 약 1%인 약 28만5000페이지에 사용된다. 큰 중단과 서버 로드를 방지하려면 모듈의 /샌드박스 또는 /테스트케이스 하위 페이지 또는 사용자 고유의 모듈 샌드박스에서 변경 사항을 테스트해야 한다.테스트한 변경사항은 한 번의 편집으로 이 페이지에 추가될 수 있다.변경 사항을 구현하기 전에 토크 페이지에서 논의해 보십시오. |
| 이 모듈은 다음과 같은 다른 모듈에 의존한다. |
이 모듈은 사용자 박스 템플릿 3개({userbox}, {{userbox-22}}개, {{userbox-r})에 대해 처리를 한다.
| 템플릿 | 설명 | 예 | |||
|---|---|---|---|---|---|
| {{userbox}} | 왼쪽에 ID가 있거나 ID가 없는 사용자 상자 만들기 |
| |||
| {{userbox-2}} | 왼쪽과 오른쪽 양쪽에 ID가 있는 사용자 상자를 만든다. |
| |||
| {{userbox-r}}} | 오른쪽에 ID가 있는 사용자 상자를 만든다. |
|
Wiki 페이지에서 이러한 템플릿을 사용하려면 개별 템플릿 페이지를 참조하십시오.Lua에서 직접 사용자 상자를 생성하려면 계속 읽어보십시오.
Lua에서 사용자 상자 생성 중
Lua에서 직접 사용자 박스를 생성하려면 먼저 모듈을 로드하십시오.
국부적 userbox = 요구하다('모듈:Userbox's) 그런 다음 다음 다음 코드를 사용하여 세 가지 템플릿 중 하나를 실행할 수 있다.
userbox.본래의(함수 이름, 아그) {{userbox}}의 경우 함수 이름 "을 사용하십시오._userbox";; {{userbox-2}}: 함수 이름 "을 사용하십시오._userbox-2"; 및 {{userbox-r}}의 경우 함수 이름 "을 사용하십시오._userbox-r". Theargs매개 변수는 다른 사용자 상자 함수에 전달하기 위한 인수 표입니다.유효한 인수 목록을 보려면 개별 템플릿 페이지를 참조하십시오.
추적 카테고리
- 범주:색상 대비가 부족한 사용자 상자(23,187)
- 범주:잘못된 네임스페이스에 템플릿이 있는 페이지(15)
-- 이 모듈은 {{userbox}}을(를) 구현한다. 국부적 카테고리 핸들러 = 요구하다('모듈:카테고리 핸들러').본래의 국부적 p = {} -------------------------------------------------------------------------------- -- 도우미 기능 -------------------------------------------------------------------------------- 국부적 기능을 하다 checkNum(발랄하게 하다, 체납) -- 값이 0보다 크거나 같은 숫자인지 확인그렇다면 - 숫자로 돌려준다.그렇지 않으면 기본값을 반환한다. 발랄하게 하다 = 톤넘버(발랄하게 하다) 만일 발랄하게 하다 그리고 발랄하게 하다 >= 0 그때 돌아오다 발랄하게 하다 다른 돌아오다 체납 종지부를 찍다 종지부를 찍다 국부적 기능을 하다 수픽스(숫자, 접미사) -- 숫자를 문자열로 변환하고 접미사를 추가한다. 만일 숫자 그때 돌아오다 토스트링(숫자) .. 접미사 다른 돌아오다 못을 박다 종지부를 찍다 종지부를 찍다 국부적 기능을 하다 checkNumAddSuffix(숫자, 체납, 접미사) -- checkNum로 값을 확인하고 접미사를 추가하십시오. 숫자 = checkNum(숫자, 체납) 돌아오다 수픽스(숫자, 접미사) 종지부를 찍다 국부적 기능을 하다 makeCat(고양이를, 분류하다) -- 카테고리 링크를 만든다. 만일 분류하다 그때 돌아오다 mw.우스트링.형식을 갖추다('[범주:%s %s]', 고양이를, 분류하다) 다른 돌아오다 mw.우스트링.형식을 갖추다('[범주:%s]', 고양이를) 종지부를 찍다 종지부를 찍다 -------------------------------------------------------------------------------- -- 인수 처리 -------------------------------------------------------------------------------- 국부적 기능을 하다 makeInvokeFunc(funcName) 돌아오다 기능을 하다 (액자에 넣다) 국부적 종이접기 = 요구하다('모듈:주장').게타르크스(액자에 넣다) 국부적 아그 = {} 을 위해 k, v 에 쌍들(종이접기) 하다 아그[k] = v 종지부를 찍다 돌아오다 p.본래의(funcName, 아그) 종지부를 찍다 종지부를 찍다 p.userbox = makeInvokeFunc('_userbox') p['userbox-2'] = makeInvokeFunc('_userbox-2') p['userbox-r'] = makeInvokeFunc('_userbox-r') -------------------------------------------------------------------------------- -- 주요 기능 -------------------------------------------------------------------------------- 기능을 하다 p.본래의(funcName, 아그) 국부적 userboxData = p[funcName](아그) 국부적 userbox = p.렌더링하다(userboxData) 국부적 고양이들 = p.분류(아그) 돌아오다 userbox .. (고양이들 또는 '') 종지부를 찍다 기능을 하다 p._userbox(아그) --{userbox}에 대한 인수가 처리되는지 여부. 국부적 자료 = {} -- div 태그 값 가져오기 자료.둥둥 뜨다 = 아그.둥둥 뜨다 또는 '왼쪽' 국부적 테두리폭Num = checkNum(아그['경계폭'] 또는 아그['경계'], 1) -- 너비를 계산할 때 사용한다. 자료.테두리폭 = 수픽스(테두리폭Num, 'px') 자료.보더 컬러 = 아그['국경색'] 또는 아그['경계 c'] 또는 아그[1] 또는 아그['id-c'] 또는 '#999' 자료.너비 = 수픽스(240 - 2 * 테두리폭Num, 'px') -- 테이블 태그에도 사용됨. 자료.보디클래스 = 아그.보디클래스 -- 테이블 태그 값 가져오기 자료.배경색 = 아그['info-background'] 또는 아그[2] 또는 아그['info-c'] 또는 '#ee' -- 정보 값을 가져오십시오. 자료.정보 = 아그.정보 또는 아그[4] 또는 "{{{code}}}" 자료.InfoTextAlign = 아그['info-a'] 또는 '왼쪽' 자료.InfoFontSize = checkNumAddSuffix(아그['크기 사이즈'] 또는 아그['info-s'], 8, 'pt') 자료.Infoheight = checkNumAddSuffix(아그['logo-height'] 또는 아그['id-h'], 45, 'px') 자료.정보패딩 = 아그['info-padding'] 또는 아그['info-p'] 또는 '0 4px 0 4px' 자료.인포라인높이 = 아그['직통 전화'] 또는 아그['info-lh'] 또는 '1.25em' 자료.인포컬러 = 아그['색깔'] 또는 아그['fc-fc'] 또는 '검은색' 자료.InfoOtherParams = 아그['기타변수'] 또는 아그['info-op'] 자료.infoClass = 아그['info급'] -- ID 값을 가져오십시오. 국부적 id = 아그.로고를 붙이다 또는 아그[3] 또는 아그.id 자료.id = id 자료.showId = id 그리고 진실의 또는 거짓의 자료.idWidth = checkNumAddSuffix(아그['logo폭'] 또는 아그['id-w'], 45, 'px') 자료.idHeight = checkNumAddSuffix(아그['logo-height'] 또는 아그['id-h'], 45, 'px') 자료.idBackground Color = 아그['logo-background'] 또는 아그[1] 또는 아그['id-c'] 또는 '#dddd' 자료.idTextAlign = 아그['id-a'] 또는 '중앙' 자료.idFontSize = checkNumAddSuffix(아그['크기 사이즈'] 또는 아그[5] 또는 아그['id-s'], 14, 'pt') 자료.아이디컬러 = 아그['색깔'] 또는 아그['id-fc'] 또는 자료.인포컬러 자료.idPadding = 아그['logo-padding'] 또는 아그['id-p'] 또는 '0 1인치 0' 자료.idLineHight = 아그['직통 전화'] 또는 아그['id-flash'] 또는 '1.25em' 자료.idOtherParams = 아그['기타변수'] 또는 아그['id-op'] 자료.id클래스 = 아그['id-class'] 돌아오다 자료 종지부를 찍다 p['_userbox-2'] = 기능을 하다 (아그) -- {{userbox-2}에 대한 인수 처리 여부. 국부적 자료 = {} -- div 태그 값 가져오기 자료.둥둥 뜨다 = 아그.둥둥 뜨다 또는 '왼쪽' 국부적 테두리폭Num = checkNum(아그['경계'] 또는 아그[9], 1) -- 너비를 계산할 때 사용한다. 자료.테두리폭 = 수픽스(테두리폭Num, 'px') 자료.보더 컬러 = 아그['경계 c'] 또는 아그[6] 또는 아그['id1-c'] 또는 아그[1] 또는 '#999999' 자료.너비 = 수픽스(240 - 2 * 테두리폭Num, 'px') -- 테이블 태그에도 사용됨. 자료.보디클래스 = 아그.보디클래스 -- 테이블 태그 값 가져오기 자료.배경색 = 아그['info-c'] 또는 아그[2] 또는 '#eeeee' -- 정보 값을 가져오십시오. 자료.정보 = 아그.정보 또는 아그[4] 또는 "{{{code}}}" 자료.InfoTextAlign = 아그['info-a'] 또는 '왼쪽' 자료.InfoFontSize = checkNumAddSuffix(아그['info-s'], 8, 'pt') 자료.인포컬러 = 아그['fc-fc'] 또는 아그[8] 또는 '검은색' 자료.정보패딩 = 아그['info-p'] 또는 '0 4px 0 4px' 자료.인포라인높이 = 아그['info-lh'] 또는 '1.25em' 자료.InfoOtherParams = 아그['info-op'] -- ID 값을 가져오십시오. 자료.showId = 진실의 자료.id = 아그.로고를 붙이다 또는 아그[3] 또는 아그.id1 또는 'id1' 자료.idWidth = checkNumAddSuffix(아그['id1-w'], 45, 'px') 자료.idHeight = checkNumAddSuffix(아그['id-h'], 45, 'px') 자료.idBackground Color = 아그['id1-c'] 또는 아그[1] 또는 '#dddddddd' 자료.idTextAlign = '중앙' 자료.idFontSize = checkNumAddSuffix(아그['id1-s'], 14, 'pt') 자료.idLineHight = 아그['id1-message'] 또는 '1.25em' 자료.아이디컬러 = 아그['id1-fc'] 또는 자료.인포컬러 자료.idPadding = 아그['id1-p'] 또는 '0 1인치 0' 자료.idOtherParams = 아그['id1-op'] -- id2 값을 가져오십시오. 자료.showId2 = 진실의 자료.id2 = 아그.로고를 붙이다 또는 아그[5] 또는 아그.id2 또는 'id2' 자료.id2폭 = checkNumAddSuffix(아그['id2-w'], 45, 'px') 자료.id2높이 = 자료.idHeight 자료.id2백그라운드 컬러 = 아그['id2-c'] 또는 아그[7] 또는 아그[1] 또는 '#dddddddd' 자료.id2TextAlign = '중앙' 자료.id2FontSize = checkNumAddSuffix(아그['id2-s'], 14, 'pt') 자료.id2LineHight = 아그['id2-message'] 또는 '1.25em' 자료.id2컬러 = 아그['id2-fc'] 또는 자료.인포컬러 자료.id2패딩 = 아그['id2-p'] 또는 '0 0 0 1px' 자료.id2OtherParams = 아그['id2-op'] 돌아오다 자료 종지부를 찍다 p['_userbox-r'] = 기능을 하다 (아그) -- {{userbox-r}}에 대한 인수 처리 여부. 국부적 자료 = {} -- div 태그 값 가져오기 자료.둥둥 뜨다 = 아그.둥둥 뜨다 또는 '왼쪽' 국부적 테두리폭Num = checkNum(아그['경계폭'] 또는 아그['경계'], 1) -- 너비를 계산할 때 사용한다. 자료.테두리폭 = 수픽스(테두리폭Num, 'px') 자료.보더 컬러 = 아그['국경색'] 또는 아그['경계 c'] 또는 아그[1] 또는 아그['id-c'] 또는 '#999' 자료.너비 = 수픽스(240 - 2 * 테두리폭Num, 'px') -- 테이블 태그에도 사용됨. 자료.보디클래스 = 아그.보디클래스 -- 테이블 태그 값 가져오기 자료.배경색 = 아그['info-background'] 또는 아그[2] 또는 아그['info-c'] 또는 '#ee' -- ID 값을 가져오십시오. 자료.showId = 거짓의 -- userbox-r에는 id2만 표시된다. -- 정보 값을 가져오십시오. 자료.정보 = 아그.정보 또는 아그[4] 또는 "{{{code}}}" 자료.InfoTextAlign = 아그['info-align'] 또는 아그['info-a'] 또는 '왼쪽' 자료.InfoFontSize = checkNumAddSuffix(아그['크기 사이즈'] 또는 아그['info-s'], 8, 'pt') 자료.정보패딩 = 아그['info-padding'] 또는 아그['info-p'] 또는 '0 4px 0 4px' 자료.인포라인높이 = 아그['직통 전화'] 또는 아그['info-lh'] 또는 '1.25em' 자료.인포컬러 = 아그['색깔'] 또는 아그['fc-fc'] 또는 '검은색' 자료.InfoOtherParams = 아그['기타변수'] 또는 아그['info-op'] -- id2 값을 가져오십시오. 자료.showId2 = 진실의 자료.id2 = 아그.로고를 붙이다 또는 아그[3] 또는 아그.id 또는 'id' 자료.id2폭 = checkNumAddSuffix(아그['logo폭'] 또는 아그['id-w'], 45, 'px') 자료.id2높이 = checkNumAddSuffix(아그['logo-height'] 또는 아그['id-h'], 45, 'px') 자료.id2백그라운드 컬러 = 아그['logo-background'] 또는 아그[1] 또는 아그['id-c'] 또는 '#dddd' 자료.id2TextAlign = 아그['id-a'] 또는 '중앙' 자료.id2FontSize = checkNumAddSuffix(아그['크기 사이즈'] 또는 아그[5] 또는 아그['id-s'], 14, 'pt') 자료.id2컬러 = 아그['색깔'] 또는 아그['id-fc'] 또는 자료.인포컬러 자료.id2패딩 = 아그['logo-padding'] 또는 아그['id-p'] 또는 '0 0 0 1px' 자료.id2LineHight = 아그['직통 전화'] 또는 아그['id-flash'] 또는 '1.25em' 자료.id2OtherParams = 아그['기타변수'] 또는 아그['id-op'] 돌아오다 자료 종지부를 찍다 기능을 하다 p.렌더링하다(자료) -- 데이터 테이블의 내용을 사용하여 userbox html 렌더링 -- div 태그 html 렌더링 국부적 뿌리를 내리다 = mw.html.만들다('div') 뿌리를 내리다 :css('float', 자료.둥둥 뜨다) :css('경계', (자료.테두리폭 또는 '') .. '솔리드' .. (자료.보더 컬러 또는 '')) :css('margin', '1px') :css('폭', 자료.너비) :addClass('wikipediauserbox') :addClass(자료.보디클래스) -- 테이블 태그 html 렌더링 국부적 태블루트 = 뿌리를 내리다:꼬리표를 달다('테이블') 태블루트 :동뜨다('role', 'presentation') :css('경계', 'collapse') :css('폭', 자료.너비) :css('아래쪽', '0') :css('상단', '0') :css('background', 자료.배경색) -- id html 렌더링 국부적 태블러로우 = 태블루트:꼬리표를 달다('tr') 만일 자료.showId 그때 태블러로우:꼬리표를 달다('td') :css('경계', '0') :css('폭', 자료.idWidth) :css('height', 자료.idHeight) :css('background', 자료.idBackground Color) :css('텍스트-스크립트', 자료.idTextAlign) :css('크기 사이즈', 자료.idFontSize) :css('font-weight', 'bold') :css('색깔', 자료.아이디컬러) :css('padding', 자료.idPadding) :css('라인스케이트', 자료.idLineHight) :css('vertical-align', '중간') :cssText(자료.idOtherParams) :addClass(자료.id클래스) :위키텍스트(자료.id) 종지부를 찍다 -- 정보를 html로 렌더링하십시오. 태블러로우:꼬리표를 달다('td') :css('경계', '0') :css('텍스트-스크립트', 자료.InfoTextAlign) :css('크기 사이즈', 자료.InfoFontSize) :css('padding', 자료.정보패딩) :css('height', 자료.Infoheight) :css('라인스케이트', 자료.인포라인높이) :css('색깔', 자료.인포컬러) :css('vertical-align', '중간') :cssText(자료.InfoOtherParams) :addClass(자료.infoClass) :위키텍스트(자료.정보) -- 두 번째 id html을 렌더링하십시오. 만일 자료.showId2 그때 태블러로우:꼬리표를 달다('td') :css('경계', '0') :css('폭', 자료.id2폭) :css('height', 자료.id2높이) :css('background', 자료.id2백그라운드 컬러) :css('텍스트-스크립트', 자료.id2TextAlign) :css('크기 사이즈', 자료.id2FontSize) :css('font-weight', 'bold') :css('색깔', 자료.id2컬러) :css('padding', 자료.id2패딩) :css('라인스케이트', 자료.id2LineHight) :css('vertical-align', '중간') :cssText(자료.id2OtherParams) :위키텍스트(자료.id2) 종지부를 찍다 국부적 칭호를 붙이다 = mw.칭호를 붙이다.getCurrentTitle() 만일 (칭호를 붙이다.네임스페이스 == 2) 그리고 아닌 칭호를 붙이다.문자 메시지를 보내다:짝을 맞추다("/") 그때 돌아오다 토스트링(뿌리를 내리다) -- 일반 사용자 페이지 그렇지 않으면 칭호를 붙이다.네임스페이스 == 14 그때 돌아오다 토스트링(뿌리를 내리다) -- 카테고리 그렇지 않으면 칭호를 붙이다.isTalkPage 그때 돌아오다 토스트링(뿌리를 내리다) - 대화 페이지 종지부를 찍다 국부적 읽을 수 있는 = 진실의 국부적 대조를 이루다 = 요구하다('모듈:색상 대비')._beakes 국부적 기능을 하다 has_text(위키텍스트) 국부적 기능을 하다 get_alt(문자 메시지를 보내다) 돌아오다 문자 메시지를 보내다:짝을 맞추다("alt=([^ ]*)") 또는 "" 종지부를 찍다 위키텍스트 = 위키텍스트:gsub("]]", " ]]") 위키텍스트 = 위키텍스트:gsub("%[%[%s*][Mm][E][Dd][Ii][Aa]%s*:[^ ]-( .-)]", get_alt) 위키텍스트 = 위키텍스트:gsub("%[%[%s*][Ii][Mmm][Aa][Gg][Ee]%s*:[^ ]-( .-)]", get_alt) 위키텍스트 = 위키텍스트:gsub("%[%[%s*][FF][Ii][Lll][Ee]%s*:[^ ]-( .-)]", get_alt) 돌아오다 mw.문자 메시지를 보내다.다듬다(위키텍스트) ~= "" 종지부를 찍다 만일 대조를 이루다 { 자료.인포컬러, 자료.배경색, 착오 = 0 } < 4.5 그때 읽을 수 있는 = 거짓의 종지부를 찍다 만일 자료.showId 그리고 대조를 이루다 { 자료.아이디컬러, 자료.idBackground Color, 착오 = 0 } < 4.5 그때 만일 has_text(자료.id 또는 "") 그때 읽을 수 있는 = 거짓의 종지부를 찍다 종지부를 찍다 만일 자료.showId2 그리고 대조를 이루다 { 자료.id2컬러, 자료.id2백그라운드 컬러, 착오 = 0 } < 4.5 그때 만일 has_text(자료.id2 또는 "") 그때 읽을 수 있는 = 거짓의 종지부를 찍다 종지부를 찍다 만일 아닌 읽을 수 있는 그때 뿌리를 내리다:위키텍스트('[카테고리:색상 대비가 부족한 사용자 상자]') 종지부를 찍다 돌아오다 토스트링(뿌리를 내리다) 종지부를 찍다 기능을 하다 p.분류(아그, 페이지를 매기다) -- [Module:범주 핸들러]]]]] -- 페이지 매개변수는 해당 페이지에서 모듈을 호출한 것처럼 함수를 작동시킨다. -- 테스트 목적으로 포함되어 있다. 국부적 고양이들 = {} 고양이들[#고양이들 + 1] = 아그.사용자 카테고리 고양이들[#고양이들 + 1] = 아그.usercategory2 고양이들[#고양이들 + 1] = 아그.usercategory3 고양이들[#고양이들 + 1] = 아그.usercategory4 고양이들[#고양이들 + 1] = 아그.usercategory5 -- 제목 오브젝트를 가져오십시오. 국부적 칭호를 붙이다 만일 페이지를 매기다 그때 칭호를 붙이다 = mw.칭호를 붙이다.새로운(페이지를 매기다) 다른 칭호를 붙이다 = mw.칭호를 붙이다.getCurrentTitle() 종지부를 찍다 -- 카테고리 핸들러 인수 작성. 국부적 마차를 끌다 = {} 마차를 끌다.페이지를 매기다 = 페이지를 매기다 마차를 끌다.nocat = 아그.nocat 마차를 끌다.본래의 = '[카테고리:잘못된 네임스페이스에 템플릿이 있는 페이지]' 만일 아그.노트카투브 페이지 그때 마차를 끌다.하위 페이지 = '아니오' 종지부를 찍다 -- 사용자 네임스페이스. 국부적 사용자 = '' 을 위해 i, 고양이를 에 아이페어(고양이들) 하다 사용자 = 사용자 .. makeCat(고양이를) 종지부를 찍다 마차를 끌다.사용자 = 사용자 -- 템플릿 네임스페이스. 국부적 기본 페이지 = 칭호를 붙이다.baseText 국부적 템플릿 = '' 을 위해 i, 고양이를 에 아이페어(고양이들) 하다 템플릿 = 템플릿 .. makeCat(고양이를, ' ' .. 기본 페이지) 종지부를 찍다 마차를 끌다.템플릿 = 템플릿 돌아오다 카테고리 핸들러(마차를 끌다) 종지부를 찍다 돌아오다 p