Modul:ListItems

Izvor: abcDNK
Skoči na:orijentacija, traži

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
	
	ret = ret .. "<div class='row archive-gallery'>"
	ret_items = ""
	while count_show < args_count and got_all == false do
		if 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 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 (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" 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