Moduł:Dokumentacja: Różnice pomiędzy wersjami

Z PUTwiki
Przejdź do nawigacjiPrzejdź do wyszukiwania
link przeskakujący tylko nad ~długą zawartością
 
m 1 wersja
 
(Brak różnic)

Aktualna wersja na dzień 21:56, 7 gru 2025

Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:Dokumentacja/opis

local p = {}

local priv = {} -- private functions scope
-- expose private for easy testing/debugging
p.__priv = priv

--[==[
  Pasek linków dla dokumentacji.
  
  Pierwotny kod:
  <span class="plainlinks" id="doc_editlinks" style="margin-left: 1em; font-size: 90%;">{{
    #ifexist: {{{1|{{Dokumentacja/nazwa}}}}}
    |<!-- /opis istnieje -->[[{{fullurl:{{{1|{{Dokumentacja/nazwa}}}}}}} zobacz]] [[{{fullurl:{{{1|{{Dokumentacja/nazwa}}}}}|action=edit}} edytuj]] [[{{fullurl:{{{1|{{Dokumentacja/nazwa}}}}}|action=history}} historia]] [{{odśwież|odśwież}}] 
    |<!-- nie ma /opis -->{{
      #if: {{{zawartość|}}}
      |[{{odśwież|odśwież}}]
      |<!-- no content -->[[{{fullurl:{{{1|{{Dokumentacja/nazwa }}}}}|action=edit&preload={{{preload opisu|Szablon:Dokumentacja/preload}}}}} stwórz]] [{{odśwież|odśwież}}] 
    }}
  }}</span>
]==]
function p.linksBar(frame)
	local args = frame:getParent().args
	local currentTitle = mw.title.getCurrentTitle()
	local descFullTitle = args[1] or priv.getDocTitle(currentTitle)
	local preloadParam = args['preload opisu'] or 'Szablon:Dokumentacja/preload'

	local titleObj = mw.title.new(descFullTitle)
	local links = ''

	local refreshAnchor = string.format(
		'[[%s odśwież]]',
		priv.refreshLink(currentTitle)
	)
	
	-- /opis istnieje
	if titleObj and titleObj.exists then
		links = string.format(
			'[[%s zobacz]] [[%s edytuj]] [[%s historia]] • %s • [[#doc_footer_info|§ podstrony]]',
			titleObj:fullUrl(),
			titleObj:fullUrl('action=edit'),
			titleObj:fullUrl('action=history'),
			refreshAnchor
		)
	-- nie ma /opis
	else
		local zawartosc = args['zawartość'] or ''
		if zawartosc ~= '' then
			links = refreshAnchor
			-- link przeskakujący nad _długą_ zawartością
			if #zawartosc > 600 then
				links = links .. ' • [[#doc_footer_info|§ podstrony]]'
			end
		else
			local editLink = mw.uri.fullUrl(descFullTitle, { action = 'edit', preload = preloadParam })
			links = string.format('[[%s stwórz]] • %s', tostring(editLink), refreshAnchor)
		end
	end

	-- może więcej barów?
	return string.format('<span class="plainlinks doc-linksbar doc-baselinks" id="doc_editlinks">%s</span>', links)
end

--[==[
Prawie zawsze powinno zwracać: Prefix:Bieżąca strona/podstrona/opis.

Dawne {{s|Dokumentacja/nazwa}}.

Test:
mw.log( p.__priv.getDocTitle(mw.title.new("Szablon:Test")) )
mw.log( p.__priv.getDocTitle(mw.title.getCurrentTitle()) )
]==]
function priv.getDocTitle(currentTitle)
	local subpage = currentTitle.subpageText
	-- /test -> ../opis
	if subpage == 'test' then
		return currentTitle.subjectNsText .. ':' .. currentTitle.baseText .. '/opis'
	else
		return currentTitle.subjectNsText .. ':' .. currentTitle.text .. '/opis'
	end
end

--[==[
	Link do odświeżania strony.

Test:
-- (powinno dać ten sam link)
mw.log( p.__priv.refreshLink(mw.title.new("Szablon:Test")) )
mw.log( p.__priv.refreshLink(mw.title.new("Szablon:Test/opis")) )
]==]
function priv.refreshLink(currentTitle)
	local subpage = currentTitle.subpageText
	local mainPage = currentTitle
	if subpage == 'opis' then
		mainPage = currentTitle.basePageTitle
	end
	return mainPage:fullUrl('action=purge')
end

return p