Modul:ListItems: razlika između inačica

Izvor: abcDNK
Skoči na:orijentacija, traži
No edit summary
 
(dodan feature selektiranja item-a kroz parametar items)
 
(Nije prikazano 13 međuinačica istog suradnika)
Redak 20: Redak 20:


got_all = false
got_all = false
 
-- Provjeri da li su direktno navedeni item-i kroz parametar
specified_items = nil
if frame.args.items ~= nil and frame.args.items ~= "" then
specified_items = {}
for item_id in string.gmatch(frame.args.items, "([^,]+)") do
item_id = string.gsub(item_id, "^%s+", "")
item_id = string.gsub(item_id, "%s+$", "")
if item_id ~= "" then
specified_items[#specified_items + 1] = item_id
end
end
end
 
ret = ret .. "<div class='row archive-gallery'>"
ret = ret .. "<div class='row archive-gallery'>"
ret_items = ""
ret_items = ""
while count_show < args_count and got_all == false do
while count_show < args_count and got_all == false do
if frame.args.category == "NONE" then
if specified_items ~= nil then
all_pages = {}
for i = 1, #specified_items do
all_pages[i] = {text = specified_items[i]}
end
got_all = true
elseif frame.args.category == "NONE" then
if frame.args.back == "false" then
if frame.args.back == "false" then
params["offset"] = args_offset + page_count
params["offset"] = args_offset + page_count
Redak 54: Redak 73:
v = all_pages[#all_pages + 1 - i]
v = all_pages[#all_pages + 1 - i]
end
end
if frame.args.category == "NONE" then
if specified_items ~= nil then
item_id = v.text
elseif frame.args.category == "NONE" then
item_id = v.text
item_id = v.text
else
else
Redak 88: Redak 109:


if show == true then
if show == true then
if (frame.args.category == "NONE" and count_show < args_count) or (frame.args.category ~= "NONE" and page_count >= args_offset and count_show < args_count) then
if (specified_items ~= nil and count_show < args_count) or (frame.args.category == "NONE" and count_show < args_count) or (frame.args.category ~= "NONE" and page_count >= args_offset and count_show < args_count) then
ret_item = ""
ret_item = ""
--image = "[[File:SLIKA_ZA_ITEME_U_ARHIVU_HIRES-07.png]]"
--image = "[[File:SLIKA_ZA_ITEME_U_ARHIVU_HIRES-07.png]]"
image = "https://abcdnkhr.lin29.host25.com/images/b/bb/SLIKA_ZA_ITEME_U_ARHIVU_HIRES-07.png"
image = "https://abcdnk.hr/images/b/bb/SLIKA_ZA_ITEME_U_ARHIVU_HIRES-07.png"
if e["claims"][frame.args.image_property] ~= nil then
if e["claims"][frame.args.image_property] ~= nil then
image = e:formatPropertyValues(frame.args.image_property).value
image = e:formatPropertyValues(frame.args.image_property).value
--e:getBestStatements(frame.args.image_property)
--e:getBestStatements(frame.args.image_property)
end
end
 
ret_item = ret_item .. "<div class='col-md-2 col-sm-6 col-xs-12 mb-5'>"
ret_item = ret_item .. "<div class='col-md-2 col-sm-6 col-6 arhive-gallery-item d-flex flex-column'>"
if image ~= "" then
if image ~= "" then
ret_item = ret_item .. '<div class="archive-image imgc-fluid imgc-w-100 imgc-h-200-disabled text-center">'
ret_item = ret_item .. '<div class="archive-image imgc-fluid imgc-w-100 imgc-h-200-disabled text-center h-100">'
--ret_item = ret_item .. "[[Image:" .. image .. "|class=img-fluid|link=" .. item_id .. "]]"
--ret_item = ret_item .. "[[Image:" .. image .. "|class=img-fluid|link=" .. item_id .. "]]"
--ret_item = ret_item .. "[[" .. item_id .. "|" .. image .. "]]"
--ret_item = ret_item .. "[[" .. item_id .. "|" .. image .. "]]"
--ret_item = ret_item .. image
--ret_item = ret_item .. image
ret_item = ret_item .. "[https://abcdnkhr.lin29.host25.com/Arhiv/" .. item_id .. " " .. image .. "]"
ret_item = ret_item .. "[https://abcdnk.hr/Arhiv/" .. item_id .. " " .. image .. "]"
ret_item = ret_item .. "</div>"
ret_item = ret_item .. "</div>"
end
end
--ret_item = ret_item .. "[[" .. params['namespace'] .. ":" .. item_id .. "|"
--ret_item = ret_item .. "[[" .. params['namespace'] .. ":" .. item_id .. "|"
ret_item = ret_item .. "[https://abcdnkhr.lin29.host25.com/Arhiv/" .. item_id .. " "
ret_item = ret_item .. "[https://abcdnk.hr/Arhiv/" .. item_id .. " "
label = e:getLabel()
label = e:getLabel()
if label ~= nil then
if label ~= nil then
Redak 114: Redak 135:
ret_item = ret_item .. item_id
ret_item = ret_item .. item_id
end
end
 
if e["claims"][frame.args.category_property] ~= nil then
if e["claims"][frame.args.category_property] ~= nil then
local first = true
local first = true
Redak 124: Redak 145:
ret_item = ret_item .. ", "
ret_item = ret_item .. ", "
end
end
 
local l = mw.wikibase.getLabel(value["mainsnak"]["datavalue"]["value"]["id"])
local l = mw.wikibase.getLabel(value["mainsnak"]["datavalue"]["value"]["id"])
if l ~= nil then
if l ~= nil then
Redak 136: Redak 157:
end
end
end
end
 
--ret_item = ret_item .. "]]"
--ret_item = ret_item .. "]]"
ret_item = ret_item .. "]"
ret_item = ret_item .. "]"
Redak 155: Redak 176:
else
else
break
break
end
end
end
end
ret = ret .. ret_items
ret = ret .. ret_items
ret = ret .. "</div>"
ret = ret .. "</div>"
 
ret = ret .. "<div>"
ret = ret .. "<div>"
 
--[[
--[[
local first = true
local first = true
Redak 190: Redak 211:
end
end
--]]
--]]
 
ret = ret .. "</div>"
ret = ret .. "</div>"


if frame.args.show_pagination ~= "false" then
if frame.args.show_pagination ~= "false" and specified_items == nil then
ret = ret .. "<div class='row'>"
ret = ret .. "<div class='row archive-pagination'>"
ret = ret .. "<div class='col-12 d-flex'>"
ret = ret .. "<div class='col-12 d-flex'>"
ret = ret .. '<ul class="pagination ml-auto mr-auto">'
ret = ret .. '<ul class="pagination ml-auto mr-auto">'
 
--previous
--previous
ret = ret .. '<li class="page-item'
ret = ret .. '<li class="page-item'
Redak 235: Redak 256:
ret = ret .. ' Prethodna]</span>'
ret = ret .. ' Prethodna]</span>'
ret = ret .. '</li>'
ret = ret .. '</li>'
 
-- next
-- next
ret = ret .. '<li class="page-item'
ret = ret .. '<li class="page-item'
Redak 257: Redak 278:
ret = ret .. ' Sljedeća]</span>'
ret = ret .. ' Sljedeća]</span>'
ret = ret .. '</li>'
ret = ret .. '</li>'
 
ret = ret .. '</ul>'
ret = ret .. '</ul>'
ret = ret .. "</div>"
ret = ret .. "</div>"
ret = ret .. "</div>"
ret = ret .. "</div>"
 
--[[
--[[
number_of_pages = math.ceil(count/args_count)
number_of_pages = math.ceil(count/args_count)
Redak 268: Redak 289:
ret = ret .. "<div class='col-12'>"
ret = ret .. "<div class='col-12'>"
ret = ret .. '<ul class="pagination">'
ret = ret .. '<ul class="pagination">'
 
-- first
-- first
ret = ret .. '<li class="page-item'
ret = ret .. '<li class="page-item'
Redak 281: Redak 302:
ret = ret .. ' Prva]</span>'
ret = ret .. ' Prva]</span>'
ret = ret .. '</li>'
ret = ret .. '</li>'
 
-- previous
-- previous
ret = ret .. '<li class="page-item'
ret = ret .. '<li class="page-item'
Redak 298: Redak 319:
ret = ret .. ' Prethodna]</span>'
ret = ret .. ' Prethodna]</span>'
ret = ret .. '</li>'
ret = ret .. '</li>'
 
last_page_offset = math.floor(count/args_count) * args_count
last_page_offset = math.floor(count/args_count) * args_count
if last_page_offset == count then
if last_page_offset == count then
last_page_offset = last_page_offset - args_count
last_page_offset = last_page_offset - args_count
end
end
 
for page=1,number_of_pages,1 do
for page=1,number_of_pages,1 do
offset = (page - 1) * args_count
offset = (page - 1) * args_count
Redak 325: Redak 346:
ret = ret .. '</li>'
ret = ret .. '</li>'
end
end
 
-- next
-- next
ret = ret .. '<li class="page-item'
ret = ret .. '<li class="page-item'
Redak 342: Redak 363:
ret = ret .. ' Sljedeća]</span>'
ret = ret .. ' Sljedeća]</span>'
ret = ret .. '</li>'
ret = ret .. '</li>'
 
-- last
-- last
ret = ret .. '<li class="page-item'
ret = ret .. '<li class="page-item'
Redak 355: Redak 376:
ret = ret .. ' Posljednja]</span>'
ret = ret .. ' Posljednja]</span>'
ret = ret .. '</li>'
ret = ret .. '</li>'
 
ret = ret .. '</ul>'
ret = ret .. '</ul>'
ret = ret .. "</div>"
ret = ret .. "</div>"

Posljednja izmjena od 5. siječnja 2026. u 16:40

Documentation for this module may be created at Modul:ListItems/doc

local p = {} --p stands for package

function p.list(frame)
	ret = ""
	--ret = ret .. frame.args.namespace
	--ret = ret .. frame.args.offset
	--ret = ret .. frame.args.count
	--ret = ret .. frame.args.category

	args_count = tonumber(frame.args.count)
	args_offset = tonumber(frame.args.offset)

	params = {}
	params["namespace"] = frame.args.namespace
	params["count"] = args_count

	count_show = 0
	page_count = 0
	categories = {}

	got_all = false

	-- Provjeri da li su direktno navedeni item-i kroz parametar
	specified_items = nil
	if frame.args.items ~= nil and frame.args.items ~= "" then
		specified_items = {}
		for item_id in string.gmatch(frame.args.items, "([^,]+)") do
			item_id = string.gsub(item_id, "^%s+", "")
			item_id = string.gsub(item_id, "%s+$", "")
			if item_id ~= "" then
				specified_items[#specified_items + 1] = item_id
			end
		end
	end

	ret = ret .. "<div class='row archive-gallery'>"
	ret_items = ""
	while count_show < args_count and got_all == false do
		if specified_items ~= nil then
			all_pages = {}
			for i = 1, #specified_items do
				all_pages[i] = {text = specified_items[i]}
			end
			got_all = true
		elseif frame.args.category == "NONE" then
			if frame.args.back == "false" then
				params["offset"] = args_offset + page_count
			else
				--ret = ret .. "page_count: " .. page_count .. "<br>"
				params["offset"] = args_offset - args_count - page_count
				--ret = ret .. "offset1: " .. params["offset"] .. "<br>"
				if params["offset"] < 0 then
					params["count"] = params["count"] + params["offset"]
					params["offset"] = 0
				end
				--ret = ret .. "offset2: " .. params["offset"] .. "<br>"
			end
			all_pages = mw.ext.dpl.getPages(params)
		else
			all_pages = nil
			c = mw.wikibase.getEntity(frame.args.category)
			if c ~= nill and c["claims"] ~= nil then
				all_pages = c["claims"][frame.args.category_property]
			end
			got_all = true
		end
		if all_pages ~= nil then
			--for _, v in pairs(all_pages) do
			for i=1, #all_pages do
				if frame.args.back == "false" then
					v = all_pages[i]
				else
					v = all_pages[#all_pages + 1 - i]
				end
				if specified_items ~= nil then
					item_id = v.text
				elseif frame.args.category == "NONE" then
					item_id = v.text
				else
					item_id = v["mainsnak"]["datavalue"]["value"]["id"]
				end
				e = mw.wikibase.getEntity(item_id)
				if e["claims"] ~= nil and e["claims"][frame.args.item_property] ~= nil then
					show = true
					--[[
					show = false
					if frame.args.category == "NONE" then
						show = true
					end

					if e["claims"][frame.args.category_property] ~= nil then
						for _, value in pairs(e["claims"][frame.args.category_property]) do
							if show == false and value["mainsnak"]["datavalue"]["value"]["id"] == frame.args.category then
								show = true
							end
							found = false
							for _, value2 in pairs(categories) do
								if value2 == value["mainsnak"]["datavalue"]["value"]["id"] then
									found = true
									break
								end
							end
							if found == false then
								categories[#categories + 1] = value["mainsnak"]["datavalue"]["value"]["id"]
							end
						end
					end
					--]]

					if show == true then
						if (specified_items ~= nil and count_show < args_count) or (frame.args.category == "NONE" and count_show < args_count) or (frame.args.category ~= "NONE" and page_count >= args_offset and count_show < args_count) then
							ret_item = ""
							--image = "[[File:SLIKA_ZA_ITEME_U_ARHIVU_HIRES-07.png]]"
							image = "https://abcdnk.hr/images/b/bb/SLIKA_ZA_ITEME_U_ARHIVU_HIRES-07.png"
							if e["claims"][frame.args.image_property] ~= nil then
								image = e:formatPropertyValues(frame.args.image_property).value
								--e:getBestStatements(frame.args.image_property)
							end

							ret_item = ret_item .. "<div class='col-md-2 col-sm-6 col-6 arhive-gallery-item d-flex flex-column'>"
							if image ~= "" then
								ret_item = ret_item .. '<div class="archive-image imgc-fluid imgc-w-100 imgc-h-200-disabled text-center h-100">'
								--ret_item = ret_item .. "[[Image:" .. image .. "|class=img-fluid|link=" .. item_id .. "]]"
								--ret_item = ret_item .. "[[" .. item_id .. "|" .. image .. "]]"
								--ret_item = ret_item .. image
								ret_item = ret_item .. "[https://abcdnk.hr/Arhiv/" .. item_id .. " " .. image .. "]"
								ret_item = ret_item .. "</div>"
							end
							--ret_item = ret_item .. "[[" .. params['namespace'] .. ":" .. item_id .. "|"
							ret_item = ret_item .. "[https://abcdnk.hr/Arhiv/" .. item_id .. " "
							label = e:getLabel()
							if label ~= nil then
								ret_item = ret_item .. label
							else
								ret_item = ret_item .. item_id
							end

							if e["claims"][frame.args.category_property] ~= nil then
								local first = true
								for _, value in pairs(e["claims"][frame.args.category_property]) do
									if first == true then
										ret_item = ret_item .. "<br>("
										first = false
									else
										ret_item = ret_item .. ", "
									end

									local l = mw.wikibase.getLabel(value["mainsnak"]["datavalue"]["value"]["id"])
									if l ~= nil then
										ret_item = ret_item .. l
									else
										ret_item = ret_item .. value["mainsnak"]["datavalue"]["value"]["id"]
									end
								end
								if first == false then
									ret_item = ret_item .. ")"
								end
							end

							--ret_item = ret_item .. "]]"
							ret_item = ret_item .. "]"
							ret_item = ret_item .. "</div>"
							if frame.args.back == "false" then
								ret_items = ret_items .. ret_item
							else
								ret_items = ret_item .. ret_items
							end
							count_show = count_show + 1
						elseif (count_show >= args_count) then
							break
						end
					end
				end
				page_count = page_count + 1
			end
		else
			break
		end
	end
	ret = ret .. ret_items
	ret = ret .. "</div>"

	ret = ret .. "<div>"

	--[[
	local first = true
	for _, value in pairs(categories) do
		if first == true then
			ret = ret .. '<div class="catlinks d-block" data-mw="interface"><div class="mw-normal-catlinks"><ul>'
			first = false
		end
		ret = ret .. '<li>'
		if frame.args.category ~= "NONE" and value == frame.args.category then
			ret = ret .. '<b>'
		end
		ret = ret .. '[' .. frame.args.page_url .. '?category=' .. value .. ' '
		l = mw.wikibase.getLabel(value)
		if l ~= nil then
			ret = ret .. l .. "<br>"
		else
			ret = ret .. value .. "<br>"
		end
		ret = ret .. ']'
		if frame.args.category ~= "NONE" and value == frame.args.category then
			ret = ret .. '</b>'
		end
		ret = ret .. '</li>'
	end
	if first == false then
		ret = ret .. "</ul></div></div>"
	end
	--]]

	ret = ret .. "</div>"

	if frame.args.show_pagination ~= "false" and specified_items == nil then
		ret = ret .. "<div class='row archive-pagination'>"
		ret = ret .. "<div class='col-12 d-flex'>"
		ret = ret .. '<ul class="pagination ml-auto mr-auto">'

		--previous
		ret = ret .. '<li class="page-item'
		if frame.args.category == "NONE" then
			if args_offset < args_count then
				ret = ret .. ' disabled'
			else
				if frame.args.back ~= "false" and args_offset - page_count < args_count then
					ret = ret .. ' disabled'
				end
			end
		else
			if args_offset <= 0 then
				ret = ret .. ' disabled'
			end
		end
		ret = ret .. '">'
		ret = ret .. '<span class="page-link">[' .. frame.args.page_url
		if frame.args.category == "NONE" then
			if frame.args.back == "false" then
				offset = args_offset
			else
				offset = args_offset - page_count
			end
		else
			offset = args_offset - args_count
		end
		if offset < 0 then
			offset = 0
		end
		ret = ret .. '?offset=' .. offset
		if frame.args.category == "NONE" then
			ret = ret .. '&back=true'
		else
			ret = ret .. "&category=" .. frame.args.category
		end
		ret = ret .. ' Prethodna]</span>'
		ret = ret .. '</li>'

		-- next
		ret = ret .. '<li class="page-item'
		if count_show < args_count then
			ret = ret .. ' disabled'
		end
		ret = ret .. '">'
		if frame.args.category == "NONE" then
			if frame.args.back == "false" then
				offset = args_offset + page_count
			else
				offset = args_offset
			end
		else
			offset = args_offset + args_count
		end
		ret = ret .. '<span class="page-link">[' .. frame.args.page_url .. '?offset=' .. offset
		if frame.args.category ~= "NONE" then
			ret = ret .. "&category=" .. frame.args.category
		end
		ret = ret .. ' Sljedeća]</span>'
		ret = ret .. '</li>'

		ret = ret .. '</ul>'
		ret = ret .. "</div>"
		ret = ret .. "</div>"

		--[[
		number_of_pages = math.ceil(count/args_count)
		if number_of_pages > 1 then
			ret = ret .. "<div class='row mt-3'>"
			ret = ret .. "<div class='col-12'>"
			ret = ret .. '<ul class="pagination">'

			-- first
			ret = ret .. '<li class="page-item'
			if args_offset <= 0 then
				ret = ret .. ' disabled'
			end
			ret = ret .. '">'
			ret = ret .. '<span class="page-link">[' .. frame.args.page_url .. '?offset=0'
			if frame.args.category ~= "NONE" then
				ret = ret .. "&category=" .. frame.args.category
			end
			ret = ret .. ' Prva]</span>'
			ret = ret .. '</li>'

			-- previous
			ret = ret .. '<li class="page-item'
			if args_offset <= 0 then
				ret = ret .. ' disabled'
			end
			ret = ret .. '">'
			offset = args_offset - args_count
			if offset < 0 then
				offset = 0
			end
			ret = ret .. '<span class="page-link">[' .. frame.args.page_url .. '?offset=' .. offset
			if frame.args.category ~= "NONE" then
				ret = ret .. "&category=" .. frame.args.category
			end
			ret = ret .. ' Prethodna]</span>'
			ret = ret .. '</li>'

			last_page_offset = math.floor(count/args_count) * args_count
			if last_page_offset == count then
				last_page_offset = last_page_offset - args_count
			end

			for page=1,number_of_pages,1 do
				offset = (page - 1) * args_count
				ret = ret .. '<li class="page-item'
				if offset == args_offset then
					ret = ret .. ' active'
				elseif (page == 1 and args_offset <= 0) or (page == number_of_pages and args_offset >= last_page_offset) or offset == args_offset then
					ret = ret .. ' disabled'
				end
				ret = ret .. '">'
				if offset < 0 then
					offset = 0
				elseif offset > last_page_offset then
					offset = last_page_offset
				end
				ret = ret .. '<span class="page-link">[' .. frame.args.page_url .. '?offset=' .. offset
				if frame.args.category ~= "NONE" then
					ret = ret .. "&category=" .. frame.args.category
				end
				ret = ret .. ' ' .. page .. ']</span>'
				ret = ret .. '</li>'
			end

			-- next
			ret = ret .. '<li class="page-item'
			if args_offset >= last_page_offset then
				ret = ret .. ' disabled'
			end
			ret = ret .. '">'
			offset = args_offset + args_count
			if offset > last_page_offset then
				offset = last_page_offset
			end
			ret = ret .. '<span class="page-link">[' .. frame.args.page_url .. '?offset=' .. offset
			if frame.args.category ~= "NONE" then
				ret = ret .. "&category=" .. frame.args.category
			end
			ret = ret .. ' Sljedeća]</span>'
			ret = ret .. '</li>'

			-- last
			ret = ret .. '<li class="page-item'
			if args_offset >= last_page_offset then
				ret = ret .. ' disabled'
			end
			ret = ret .. '">'
			ret = ret .. '<span class="page-link">[' .. frame.args.page_url .. '?offset=' .. last_page_offset
			if frame.args.category ~= "NONE" then
				ret = ret .. "&category=" .. frame.args.category
			end
			ret = ret .. ' Posljednja]</span>'
			ret = ret .. '</li>'

			ret = ret .. '</ul>'
			ret = ret .. "</div>"
			ret = ret .. "</div>"
		end
		--]]
	end

	return ret
end

return p