모듈:Changelog: 두 판 사이의 차이

리버티게임, 모두가 만들어가는 자유로운 게임
잔글편집 요약 없음
(20241009 변경)
1번째 줄: 1번째 줄:
-- v1.0.0, [[사:Senouis|Senouis]] 제작
local p = {}
local p = {}
-- import
-- import
local tf = require("모듈:TemplateFunction")
local tf = require("모듈:TemplateFunction")
local md = require("모듈:Metadata")


-- 커스텀 정렬 테스트(삭제 예정)
function p.srt_custom(frame)
local data = mw.text.jsonDecode(frame.args[1])
table.sort(data, function (a,b) return a[2] > b[2] end)
return mw.text.jsonEncode(data)
end
-- [[틀:알림카드]] 렌더링
-- [[틀:알림카드]] 렌더링
function p.getChangelogCard()
function p.getChangelogCard()
20번째 줄: 16번째 줄:
local pagestrlist = mw.text.split(mw.text.trim(param1, '\\'), '\\', true)
local pagestrlist = mw.text.split(mw.text.trim(param1, '\\'), '\\', true)
-- 알림카드를 하나씩 렌더링하여 concat
-- 알림카드를 하나씩 렌더링하여 concat
local result = "<div id=\"recentchange-inner\" style=\"max-width:100%;display:inline-flex;flex-direction:row;flex-wrap:nowrap;max-height:200px\">"
local result = "<div id=\"recentchange-inner\" style=\"max-width:100%;display:inline-flex;flex-direction:row;flex-wrap:nowrap;align-items:stretch;\">"
local template = tf.load("게임 알림 카드")
for _, v in pairs(pagestrlist) do
for _, v in pairs(pagestrlist) do
result = result .. tostring(template:bind{v})
local gametitle = mw.title.new(v)
local gametitle_final
if gametitle.isTalkPage then
gametitle_final = gametitle.subjectPageTitle
else
gametitle_final = gametitle
end
local metadata = mw.loadJsonData( tostring(md.resolve(tostring(gametitle_final))) ) -- md.resolve서 mw.title 타입 테이블이 반환되므로 JSON 받기에 인수로 넣음
local template = tf.create("{{게임 알림 카드|{{{1}}}|{{{2}}}|{{{3}}}}}")
result = result .. template{metadata.name,metadata.changelog,tostring(gametitle)} -- 원래의 게임 알림 문서를 가리키도록 틀 3번째 파라미터를 설정
end
end
result = result .. "</div>"
result = result .. "</div>"

2024년 10월 9일 (수) 18:54 판


모듈 설명문서[보기] [편집] [역사] [새로 고침]

게임 메타데이터에 업데이트 로그 링크(changelog)가 있을 경우 업데이트 로그 문서에 대해 DPL 쿼리를 인수로 전달했을 때 게임 메타데이터를 추적하여 틀:게임 알림 카드에 적절한 인수를 넘겨 렌더링하는 모듈입니다.

모든 changelog 링크는 리버티게임 내부 문서 링크로 걸려야 한다는 사실에 유의하세요! 만약 다른 사이트에 업데이트 로그를 게시하는 경우 리버티게임 내부에 해당 링크를 적은 문서를 넣으면 됩니다.

이 모듈을 다른 미디어위키 사이트에 사용할 경우 DynamicPageList3 확장 기능이 필요합니다. 그리고 틀:게임 알림 카드는 게임 이름, 게임 업데이트 로그 문서 이름 순서로 2개의 인자(Parameter)를 받도록 제작해야 합니다.

getChangelogCard

DynamicPageList3의 쿼리 파서 함수 문법으로 가져온 문서 리스트를 넣습니다.

쿼리 출력 모드는 userformat, 출력 포맷은 ,%PAGE%,\,으로 적어주세요. \ (원화 기호 또는 역슬래시 기호)를 사용하여 게임 문서

{{#invoke:changelog|getChangelogCard|(DPL3 쿼리)}}

예를 들어 리버티게임:대문/신규 대문 (2024) 문서의 최근 업데이트 문서에 있는 게임 별 알림 카드 리스트는 다음과 같이 불러옵니다.

{{#invoke:changelog|getChangelogCard|{{#dpl:|category=게임_별_알림|ordermethod=lastedit|mode=userformat|format=,%PAGE%,\,}}}}


-- v1.0.0, [[사:Senouis|Senouis]] 제작
local p = {}
-- import
local tf = require("모듈:TemplateFunction")
local md = require("모듈:Metadata")

-- [[틀:알림카드]] 렌더링
function p.getChangelogCard()
	-- 먼저 dpl로 된 인수가 들어왔는지 확인(빈 문자열 혹은 공백인지 확인)
	local frame = mw.getCurrentFrame()
	local param1 = frame.args[1]
	mw.log(param1)
	if param1 == nil or param1 == "" or param1 == " " then
		return "최근 업데이트된 게임이 없습니다"
	end
	local pagestrlist = mw.text.split(mw.text.trim(param1, '\\'), '\\', true)
	-- 알림카드를 하나씩 렌더링하여 concat
	local result = "<div id=\"recentchange-inner\" style=\"max-width:100%;display:inline-flex;flex-direction:row;flex-wrap:nowrap;align-items:stretch;\">"
	for _, v in pairs(pagestrlist) do
		local gametitle = mw.title.new(v)
		local gametitle_final
		if gametitle.isTalkPage then
			gametitle_final = gametitle.subjectPageTitle
		else
			gametitle_final = gametitle
		end
		local metadata = mw.loadJsonData( tostring(md.resolve(tostring(gametitle_final))) ) -- md.resolve서 mw.title 타입 테이블이 반환되므로 JSON 받기에 인수로 넣음
		local template = tf.create("{{게임 알림 카드|{{{1}}}|{{{2}}}|{{{3}}}}}")
		result = result .. template{metadata.name,metadata.changelog,tostring(gametitle)} -- 원래의 게임 알림 문서를 가리키도록 틀 3번째 파라미터를 설정
	end
	result = result .. "</div>"
	return result
end

-- 패키지 선언 끝
return p