<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ar">
	<id>https://3rabica.org/index.php?action=history&amp;feed=atom&amp;title=%D9%88%D8%AD%D8%AF%D8%A9%3AInfobox_mapframe</id>
	<title>وحدة:Infobox mapframe - تاريخ المراجعة</title>
	<link rel="self" type="application/atom+xml" href="https://3rabica.org/index.php?action=history&amp;feed=atom&amp;title=%D9%88%D8%AD%D8%AF%D8%A9%3AInfobox_mapframe"/>
	<link rel="alternate" type="text/html" href="https://3rabica.org/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Infobox_mapframe&amp;action=history"/>
	<updated>2026-06-04T20:23:31Z</updated>
	<subtitle>تاريخ التعديل لهذه الصفحة في الويكي</subtitle>
	<generator>MediaWiki 1.43.7</generator>
	<entry>
		<id>https://3rabica.org/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Infobox_mapframe&amp;diff=1563&amp;oldid=prev</id>
		<title>عبد العزيز: أنشأ الصفحة ب&#039;local mf = require(&#039;Module:Mapframe&#039;)  function setCleanArgs(argsTable) 	local cleanArgs = {} 	for key, val in pairs(argsTable) do 		if type(val) == &#039;string&#039; then 			val...&#039;</title>
		<link rel="alternate" type="text/html" href="https://3rabica.org/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Infobox_mapframe&amp;diff=1563&amp;oldid=prev"/>
		<updated>2019-02-01T16:53:52Z</updated>

		<summary type="html">&lt;p&gt;أنشأ الصفحة ب&amp;#039;local mf = require(&amp;#039;Module:Mapframe&amp;#039;)  function setCleanArgs(argsTable) 	local cleanArgs = {} 	for key, val in pairs(argsTable) do 		if type(val) == &amp;#039;string&amp;#039; then 			val...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحة جديدة&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local mf = require(&amp;#039;Module:Mapframe&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function setCleanArgs(argsTable)&lt;br /&gt;
	local cleanArgs = {}&lt;br /&gt;
	for key, val in pairs(argsTable) do&lt;br /&gt;
		if type(val) == &amp;#039;string&amp;#039; then&lt;br /&gt;
			val = val:match(&amp;#039;^%s*(.-)%s*$&amp;#039;)&lt;br /&gt;
			if val ~= &amp;#039;&amp;#039; then&lt;br /&gt;
				cleanArgs[key] = val&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			cleanArgs[key] = val&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return cleanArgs&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function hasWikidataProperty(item_id, property_id)&lt;br /&gt;
	if not(item_id) or not(mw.wikibase.isValidEntityId(item_id)) or not(mw.wikibase.entityExists(item_id)) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	local statements = mw.wikibase.getBestStatements(item_id, property_id)&lt;br /&gt;
	if not statements or #statements == 0 then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	local hasNoValue = ( statements[1].mainsnak and statements[1].mainsnak.snaktype == &amp;#039;novalue&amp;#039; )&lt;br /&gt;
	if hasNoValue then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function getZoom(length_km)&lt;br /&gt;
	-- max for zoom 2 is 6400km, for zoom 3 is 3200km, for zoom 4 is 1600km, etc&lt;br /&gt;
	local zoom = math.floor(8 - (math.log10(length_km) - 2)/(math.log10(2)))&lt;br /&gt;
	-- limit to values between 1 and 17&lt;br /&gt;
	return math.max(1, math.min(17, zoom))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
p.main = function(frame)&lt;br /&gt;
	local parent = frame.getParent(frame)&lt;br /&gt;
	local parentArgs = parent.args&lt;br /&gt;
	local mapframe = p._main(parentArgs)&lt;br /&gt;
	return frame:preprocess(mapframe)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p._main = function(_config)&lt;br /&gt;
	local config = setCleanArgs(_config)&lt;br /&gt;
	local wikidataId = config.id or mw.wikibase.getEntityIdForCurrentPage()&lt;br /&gt;
	if not wikidataId then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Require wikidata item with coords, so something will be centred somewhere&lt;br /&gt;
	local hasCoordinates = hasWikidataProperty(wikidataId, &amp;#039;P625&amp;#039;) -- P625 = coordinate location&lt;br /&gt;
	if not hasCoordinates then  &lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- arguments for mapframe module&lt;br /&gt;
	local args = {}&lt;br /&gt;
&lt;br /&gt;
	-- Some defaults/overrides for infobox presentation&lt;br /&gt;
	args.display = &amp;quot;inline&amp;quot;&lt;br /&gt;
	args.frame = &amp;quot;yes&amp;quot;&lt;br /&gt;
	args.plain = &amp;quot;yes&amp;quot;&lt;br /&gt;
	args[&amp;quot;frame-width&amp;quot;]  = config[&amp;quot;frame-width&amp;quot;] or &amp;quot;270&amp;quot;&lt;br /&gt;
	args[&amp;quot;frame-height&amp;quot;] = config[&amp;quot;frame-height&amp;quot;] or &amp;quot;200&amp;quot;&lt;br /&gt;
	args[&amp;quot;frame-align&amp;quot;]  = &amp;quot;center&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	args[&amp;quot;frame-coord&amp;quot;] = config[&amp;quot;frame-coordinates&amp;quot;] or config[&amp;quot;frame-coord&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
	-- Note: config[&amp;quot;coordinates&amp;quot;] or config[&amp;quot;coord&amp;quot;] should not be used for the alignment of the frame;&lt;br /&gt;
	-- see talk page ( https://en.wikipedia.org/wiki/Special:Diff/876492931 )&lt;br /&gt;
&lt;br /&gt;
	-- deprecated lat and long parameters&lt;br /&gt;
	args[&amp;quot;frame-lat&amp;quot;]    = config[&amp;quot;frame-lat&amp;quot;] or config[&amp;quot;frame-latitude&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
	args[&amp;quot;frame-long&amp;quot;]   = config[&amp;quot;frame-long&amp;quot;] or config[&amp;quot;frame-longitude&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	-- Calculate zoom from length or area (converted to km or km2)&lt;br /&gt;
	if config.length_km then&lt;br /&gt;
		args.zoom = getZoom(tonumber(config.length_km))&lt;br /&gt;
	elseif config.length_mi then&lt;br /&gt;
		args.zoom = getZoom(tonumber(config.length_mi)*1.609344)&lt;br /&gt;
	elseif config.area_km2 then&lt;br /&gt;
		args.zoom = getZoom(math.sqrt(tonumber(config.area_km2)))&lt;br /&gt;
	elseif config.area_mi2 then&lt;br /&gt;
		args.zoom = getZoom(math.sqrt(tonumber(config.area_mi2))*1.609344)&lt;br /&gt;
	else&lt;br /&gt;
		args.zoom = config.zoom or 10&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Shape&lt;br /&gt;
	args.type = &amp;quot;shape&amp;quot;&lt;br /&gt;
	if config.id then args.id = config.id end&lt;br /&gt;
	args[&amp;quot;stroke-width&amp;quot;] = config[&amp;quot;shape-stroke-width&amp;quot;] or config[&amp;quot;stroke-width&amp;quot;] or &amp;quot;3&amp;quot;&lt;br /&gt;
	args[&amp;quot;stroke-color&amp;quot;] = config[&amp;quot;shape-stroke-color&amp;quot;] or config[&amp;quot;shape-stroke-colour&amp;quot;] or config[&amp;quot;stroke-color&amp;quot;] or config[&amp;quot;stroke-colour&amp;quot;] or &amp;quot;#FF0000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	-- Line&lt;br /&gt;
	args.type2 = &amp;quot;line&amp;quot;&lt;br /&gt;
	if config.id then args.id2 = config.id end&lt;br /&gt;
	args[&amp;quot;stroke-width2&amp;quot;] = config[&amp;quot;line-stroke-width&amp;quot;] or config[&amp;quot;stroke-width&amp;quot;] or &amp;quot;5&amp;quot;&lt;br /&gt;
	args[&amp;quot;stroke-color2&amp;quot;] = config[&amp;quot;line-stroke-color&amp;quot;] or config[&amp;quot;line-stroke-colour&amp;quot;] or config[&amp;quot;stroke-color&amp;quot;] or config[&amp;quot;stroke-colour&amp;quot;] or &amp;quot;#FF0000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	-- Point&lt;br /&gt;
	local hasOsmRelationId = hasWikidataProperty(wikidataId, &amp;#039;P402&amp;#039;) -- P402 is OSM relation ID&lt;br /&gt;
	local shouldShowPointMarker = not(hasOsmRelationId) or (config.marker and config.marker ~= &amp;#039;none&amp;#039;)&lt;br /&gt;
	if shouldShowPointMarker then&lt;br /&gt;
		args.type3 = &amp;quot;point&amp;quot;&lt;br /&gt;
		if config.id then args.id3 = config.id end&lt;br /&gt;
		if config.marker then args.marker3 = config.marker end&lt;br /&gt;
		args[&amp;quot;marker-color3&amp;quot;] = config[&amp;quot;marker-color&amp;quot;] or config[&amp;quot;marker-colour&amp;quot;] or &amp;quot;#5E74F3&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	local mapframe = mf._main(args)&lt;br /&gt;
	local tracking = hasOsmRelationId and &amp;#039;&amp;#039; or &amp;#039;[[Category:Infobox mapframe without OSM relation ID on Wikidata]]&amp;#039;&lt;br /&gt;
	return mapframe .. tracking&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>عبد العزيز</name></author>
	</entry>
</feed>