Modul:Pagination

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

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

local p = {} --p stands for package

function p.list(frame)
	ret = ""
	params = {}
	params["namespace"] = frame.args.namespace
	count = 0
	all_pages = mw.ext.dpl.getPages(params)
	if all_pages ~= nil then
		for _ in pairs(mw.ext.dpl.getPages(params)) do count = count + 1 end
	end
	
	args_count = tonumber(frame.args.count)
	args_offset = tonumber(frame.args.offset)
	
	number_of_pages = math.ceil(count/args_count)
	if number_of_pages > 1 then
		ret = ret .. "<div class='row'>"
		ret = ret .. "<div class='col-12 d-flex'>"
		ret = ret .. '<ul class="pagination ml-auto mr-auto">'
		
		-- 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 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 .. ' 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 .. ' ' .. 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 .. ' 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 .. ' Zadnja]</span>'
		ret = ret .. '</li>'
		--]]
		
		ret = ret .. '</ul>'
		ret = ret .. "</div>"
		ret = ret .. "</div>"
	end
	return ret
end

return p