Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Modül:Konum haritası

bullvar_katip

Administrator
Katılım
21 Mayıs 2024
Mesajlar
532,105
require('Modül:Küresel değil') local p = {} local getArgs = require('Modül:Bağımsız değişkenler').getArgs local ulkeler = require("Modül:Ülkeler").ulkeler local function round(n, decimals) local pow = 10^(decimals or 0) return math.floor(n * pow + 0.5) / pow end function p.getTurkishParams(args) --Türkçe parametreleri tanıtalım args.width = args['genişlik'] or args.width args.default_width = args['varsayılan_genişlik'] or args.default_width args.float = args['pozisyon'] or args.float args.border = args['kontur'] or args.border args.caption = args['altyazı'] or args.caption args.relief = args['rölyef'] or args.relief args.AlternativeMap = args['alternatif_harita'] or args.AlternativeMap args.overlay_image = args['bindirilen_resim'] or args.overlay_image args.label = args['etiket'] or args['etiket1'] or args.label args.label_size = args['etiket_boyutu'] or args['etiket1_boyutu'] or args.label_size args.label_width = args['etiket_genişlik'] or args['etiket1_genişlik'] or args.label_width args.position = args['etiket_konumu'] or args['etiket1_konumu'] or args.position args.background = args['arkaplan'] or args['arkaplan1'] or args.background args.mark = args['işaret'] or args['işaret1'] or args.mark args.marksize = args['işaret_boyutu'] or args['işaret1_boyutu'] or args.marksize args.link = args['bağ'] or args['bağ1'] or args.link args.lat = args['enlem'] or args['enlem1'] or args.lat args.long = args['boylam'] or args['boylam1'] or args.long args.lat_deg = args['enlem_der'] or args['enlem1_der'] or args.lat_deg args.lat_min = args['enlem_dak'] or args['enlem1_dak'] or args.lat_min args.lat_sec = args['enlem_san'] or args['enlem1_san'] or args.lat_sec args.lat_dir = args['enlem_dir'] or args['enlem1_dir'] or args.lat_dir args.lon_deg = args['boylam_der'] or args['boylam1_der'] or args.lon_deg args.lon_min = args['boylam_dak'] or args['boylam1_dak'] or args.lon_min args.lon_sec = args['boylam_san'] or args['boylam1_san'] or args.lon_sec args.lon_dir = args['boylam_dir'] or args['boylam1_dir'] or args.lon_dir args.outside = args['dışarıda'] or args.outside args.places = args['yerler'] or args.places args.coordinates = args['koordinatlar'] or args['koordinatlar1'] or args.coordinates end local function ulkeBul(harita) local sayfa = harita local s, d = sayfa, "" local function bulvedeg(yazi, bir, iki) return mw.ustring.sub( mw.ustring.gsub(yazi, bir, iki), 1, -1 ) end for i=1,5 do if ulkeler[d] then break else d = d .. (d~="" and " " or "") .. bulvedeg(s, "%s.*", "") s = bulvedeg(s, "^[^%s]*%s*", "") end end return ulkeler[d] and bulvedeg(sayfa, d, ulkeler[d]) or sayfa end function p.getMapParams(map, frame) --ülke çevirici map = ulkeBul(map) if not map then error('Kullanılacak konum haritası tanımının adı belirtilmek zorundadır', 2) end local moduletitle = mw.title.new('Modül:Konum haritası/veri/' .. map) if not moduletitle then error(string.format('%q konum haritası tanımı için geçerli ad değil', map), 2) elseif moduletitle.exists then local mapData = mw.loadData('Modül:Konum haritası/veri/' .. map) return function(name, params) if name nil then return 'Modül:Konum haritası/veri/' .. map elseif mapData[name] nil then return elseif params then return mw.message.newRawMessage(tostring(mapData[name]), unpack(params)):plain else return mapData[name] end end else return "-1" --error('Belirtilen konum haritası tanımı bulunamıyor. "Modül:Konum haritası/veri/' .. map .. '" mevcut değil', 2) end end function p.veri(frame, args, map) if not args then args = getArgs(frame, {frameOnly = true}) end if not map then map = p.getMapParams(args[1], frame) end local params = {} for k,v in ipairs(args) do if k > 2 then params[k-2] = v end end return map(args[2], #params ~= 0 and params) end local hemisphereMultipliers = { boylam = { W = -1, w = -1, B = -1, b = -1, E = 1, e = 1, D = 1, d = 1 }, enlem = { S = -1, s = -1, G = -1, g = -1, N = 1, n = 1, K = 1, k = 1 } } local function decdeg(degrees, minutes, seconds, hemisphere, decimal, direction) if decimal then if degrees then error('Desimal ve DDS dereceleri her iki ' .. direction .. ' için değer verilebilir', 2) elseif minutes then error('Dakikaya ' .. direction ..' için yalnızca DDS dereceleri ile değer verilebilir', 2) elseif seconds then error('Saniyeye ' .. direction ..' için yalnızca DDS dereceleri ile değer verilebilir', 2) elseif hemisphere then error('Bir yarımküreye ' .. direction ..' için yalnızca DDS dereceleri ile değer verilebilir', 2) end local retval = tonumber(decimal) if retval then return retval end error(direction .. ' için verilen değer ' .. decimal .. ' için geçerli değil', 2) elseif seconds and not minutes then error('Ayrıca ' .. direction .. ' için değer verilen dakika olmadan saniyeye değer verildi', 2) elseif not degrees then if minutes then error('Ayrıca ' .. direction .. ' için değer verilen derece olmadan dakikaya değer verildi', 2) elseif hemisphere then error('Ayrıca ' .. direction .. ' için değer verilen derece olmadan bir yarımküreye değer verildi', 2) end return nil end decimal = tonumber(degrees) if not decimal then error(direction .. ' için verilen değer ' .. degrees .. ' için geçerli değil', 2) elseif minutes and not tonumber(minutes) then error(direction .. ' için verilen değer ' .. minutes .. ' için geçerli değil', 2) elseif seconds and not tonumber(seconds) then error(direction .. ' için verilen değer ' .. seconds .. ' için geçerli değil', 2) end decimal = decimal + (minutes or 0)/60 + (seconds or 0)/3600 if hemisphere then local multiplier = hemisphereMultipliers[direction][hemisphere] if not multiplier then error(direction .. ' için verilen değer ' .. hemisphere .. ' için geçerli değil', 2) end decimal = decimal * multiplier end return decimal end -- Finds a parameter in a transclusion of . local function coord2text(para,coord) -- this should be changed for languages which do not use Arabic numerals or the degree sign local result = mw.text.split(mw.ustring.match(coord,'%-?[%.%d]+°[NSKG] %-?[%.%d]+°[EWDB]') or , '[ °]') if para == 'boylam' then result = {result[3], result[4]} end if not tonumber(result[1]) or not result[2] then return error('Hatalı koordinat değerleri', 2) end return tonumber(result[1]) * hemisphereMultipliers[para][result[2]] end -- effectively make removeBlanks false for caption and maplink, and true for everything else -- if useWikidata is present but blank, convert it to false instead of nil -- p.top, p.bottom, and their callers need to use this function p.valueFunc(key, value) if value then value = mw.text.trim(value) end if value ~= or key 'caption' or key 'maplink' then return value elseif key == 'useWikidata' then return false end end local function getContainerImage(args, map) if args.AlternativeMap then return args.AlternativeMap elseif args.relief and map('resim1') ~= then return map('resim1') else return map('resim') end end function p.top(frame, args, map) if not args then args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc}) end if not map then map = p.getMapParams(args[1], frame) end local width local default_as_number = tonumber(mw.ustring.match(tostring(args.default_width),"%d*")) if not args.width then width = round((default_as_number or 240) * (tonumber(map('varsayılan_ölçü')) or 1)) elseif mw.ustring.sub(args.width, -2) 'px' then width mw.ustring.sub(args.width, 1, -3) else width args.width end local width_as_number tonumber(mw.ustring.match(tostring(width),"%d*")) or 0; if width_as_number 0 then -- check to see if width is junk. If it is, then use default calculation width = round((default_as_number or 240) * (tonumber(map('varsayılan_ölçü')) or 1)) width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0; end if args.max_width ~= "" and args.max_width ~= nil then -- check to see if width bigger than max_width local max_as_number = tonumber(mw.ustring.match(args.max_width,"%d*")) or 0; if width_as_number>max_as_number and max_as_number>0 then width = args.max_width; end end local retval = frame:extensionTag{name = 'templatestyles', args = {src = 'Şablon:Konum haritası/stiller.css'}} if args.float == 'center' then retval = retval .. end return retval end local function markOuterDiv(x, y, imageDiv, labelDiv) return mw.html.create('div') :addClass('od') :cssText('top:' .. round(y, 3) .. '%;left:' .. round(x, 3) .. '%') :node(imageDiv) :node(labelDiv) end local function markImageDiv(mark, marksize, label, link, alt, title) local builder = mw.html.create('div') :addClass('id') :cssText('left:-' .. round(marksize / 2) .. 'px;top:-' .. round(marksize / 2) .. 'px') :attr('title', title) if marksize ~= 0 then builder:wikitext(string.format( , mark, marksize, marksize, label, link, alt and ('|alt=' .. alt) or )) end return builder end local function markLabelDiv(label, label_size, label_width, position, background, x, marksize) if tonumber(label_size) 0 then return mw.html.create('div'):addClass('l0'):wikitext(label) end local builder mw.html.create('div') :cssText('font-size:' .. label_size .. '%;width:' .. label_width .. 'em') local distance round(marksize / 2 + 1) if position 'top' then -- specified top builder:addClass('pv'):cssText('bottom:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em') elseif position 'bottom' then -- specified bottom builder:addClass('pv'):cssText('top:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em') elseif position 'left' or (tonumber(x) > 70 and position ~= 'right') then -- specified left or autodetected to left builder:addClass('pl'):cssText('right:' .. distance .. 'px') else -- specified right or autodetected to right builder:addClass('pr'):cssText('left:' .. distance .. 'px') end builder = builder:tag('div') :wikitext(label) if background then builder:cssText('background-color:' .. background) end return builder:done end local function getX(longitude, left, right) if longitude nil then return 0 end local width (right - left) % 360 if width 0 then width = 360 end local distanceFromLeft = (longitude - left) % 360 -- the distance needed past the map to the right equals distanceFromLeft - width. the distance needed past the map to the left equals 360 - distanceFromLeft. to minimize page stretching, go whichever way is shorter if distanceFromLeft - width / 2 >= 180 then distanceFromLeft = distanceFromLeft - 360 end return 100 * distanceFromLeft / width end local function getY(latitude, top, bottom) if latitude == nil then return 0 end return 100 * (top - latitude) / (top - bottom) end function p.mark(frame, args, map) if not args then args = getArgs(frame, {wrappers = 'Şablon:Konum haritası~'}) end local mapnames = {} p.getTurkishParams(args) if not map then if args[1] then map = {} for mapname in mw.text.gsplit(args[1], '#', true) do map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame) mapnames[#mapnames + 1] = mapname end if #map 1 then map map[1] end else map p.getMapParams('Dünya', frame) args[1] 'Dünya' end end if type(map) 'table' then local outputs = {} local oldargs = args[1] for k,v in ipairs(map) do args[1] = mapnames[k] outputs[k] = tostring(p.mark(frame, args, v)) end args[1] = oldargs return table.concat(outputs, '#PlaceList#') .. '#PlaceList#' end local x, y, longitude, latitude longitude = decdeg(args.lon_deg, args.lon_min, args.lon_sec, args.lon_dir, args.long, 'boylam') latitude = decdeg(args.lat_deg, args.lat_min, args.lat_sec, args.lat_dir, args.lat, 'enlem') if args.excludefrom then -- If this mark is to be excluded from certain maps entirely (useful in the context of multiple maps) for exclusionmap in mw.text.gsplit(args.excludefrom, '#', true) do -- Check if this map is excluded. If so, return an empty string. if args[1] == exclusionmap then return end end end local builder = mw.html.create local currentTitle = mw.title.getCurrentTitle if args.coordinates then -- Temporarily removed to facilitate infobox conversion. See Wikipedia:Coordinates in infoboxes -- if longitude or latitude then -- error('Coordinates from Module:Coordinates and individual coordinates cannot both be provided') -- end longitude = coord2text('boylam', args.coordinates) latitude = coord2text('enlem', args.coordinates) elseif not longitude and not latitude and args.useWikidata then -- If they didn't provide either coordinate, try Wikidata. If they provided one but not the other, don't. local entity = mw.wikibase.getEntity if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1].mainsnak.snaktype 'value' then local value entity.claims.P625[1].mainsnak.datavalue.value longitude, latitude value.longitude, value.latitude end if args.link and (currentTitle.namespace 0) then builder:wikitext("Kategori:Vikiveri'den koordinat çeken konum haritaları") end end if not args.useWikidata then if not longitude then error('Boylam değeri saptanamadı') elseif not latitude then error('Enlem değeri saptanamadı') end end if currentTitle.namespace > 0 then if (not args.lon_deg) ~= (not args.lat_deg) then builder:wikitext('Derece') elseif (not args.lon_min) ~= (not args.lat_min) then builder:wikitext('Dakika') elseif (not args.lon_sec) ~= (not args.lat_sec) then builder:wikitext('Saniye') elseif (not args.lon_dir) ~= (not args.lat_dir) then builder:wikitext('Yarımküre') elseif (not args.long) ~= (not args.lat) then builder:wikitext('Desimal') end end if args.skew or args.lon_shift or args.markhigh then mw.log('Silinen parametre çağrıda kullanıldı.') local parent = frame:getParent if parent then mw.log('Temel ' .. parent:getTitle) end mw.logObject(args, 'args') if currentTitle.namespace 0 then local key (args.skew and 'eğri' or ) .. (args.lon_shift and 'lon_shift' or ) .. (args.markhigh and 'markhigh' or ) builder:wikitext( .. key ..' ') end end if map('x') ~ then x tonumber(mw.ext.ParserFunctions.expr(map('x', { latitude, longitude }))) else x tonumber(getX(longitude, map('sol'), map('sağ'))) end if map('y') ~ then y tonumber(mw.ext.ParserFunctions.expr(map('y', { latitude, longitude }))) else y tonumber(getY(latitude, map('üst'), map('alt'))) end if (x < 0 or x > 100 or y < 0 or y > 100) and not args.outside then mw.log('İşaret, dış bayrak koyulmadan dış harita sınırlarına yerleştirildi. x ' .. x .. ', y ' .. y) local parent frame:getParent if parent then mw.log('Parent is ' .. parent:getTitle) end mw.logObject(args, 'args') if currentTitle.namespace 0 then local key = currentTitle.prefixedText builder:wikitext( .. key .. ' ') end end local mark = args.mark or map('işaret') if mark == then mark = 'Red pog.svg' end local marksize = tonumber(args.marksize) or tonumber(map('işaret_boyutu')) or 8 local imageDiv = markImageDiv(mark, marksize, args.label or mw.title.getCurrentTitle.text, args.link or , args.alt, args[2]) local labelDiv if args.label and args.position ~= 'none' then labelDiv = markLabelDiv(args.label, args.label_size or 91, args.label_width or 6, args.position, args.background, x, marksize) end return builder:node(markOuterDiv(x, y, imageDiv, labelDiv)) end local function switcherSeparate(s) if s == nil then return {} end local retval = {} for i in string.gmatch(s .. '#', '([^#]*)#') do i = mw.text.trim(i) retval[#retval + 1] = (i ~= and i) end return retval end function p.main(frame, args, map) local caption_list = {} if not args then args = getArgs(frame, {wrappers = 'Şablon:Konum haritası', valueFunc = p.valueFunc}) end if args.useWikidata nil then args.useWikidata true end p.getTurkishParams(args) if not map then if args[1] then map {} for mapname in string.gmatch(args[1], '[^#]+') do local val p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame) if val ~ '-1' then map[#map + 1] val end end if args['caption'] then if args['caption'] "" then while #caption_list < #map do caption_list[#caption_list + 1] = args['caption'] end else for caption in mw.text.gsplit(args['caption'], '##', true) do caption_list[#caption_list + 1] = caption end end end if #map 1 then map map[1] end else map p.getMapParams('Dünya', frame) end end if type(map) 'table' then local altmaps = switcherSeparate(args.AlternativeMap) if #altmaps > #map then error(string.format('%d alternatif_harita girildi, ama sadece %d haritalar sağlandı', #altmaps, #map)) end local overlays = switcherSeparate(args.overlay_image) if #overlays > #map then error(string.format('%d bindirilen_resim girildi, ama sadece %d haritalar sağlandı', #overlays, #map)) end if #caption_list > #map then error(string.format('%d altyazılar girildi, ama sadece %d haritalar sağlandı', #caption_list, #map)) end local outputs = {} args.autoSwitcherLabel = true for k,v in ipairs(map) do args.AlternativeMap = altmaps[k] args.overlay_image = overlays[k] args.caption = caption_list[k] outputs[k] = p.main(frame, args, v) end return '' else return p.top(frame, args, map) .. tostring( p.mark(frame, args, map) ) .. p.bottom(frame, args, map) end end return p
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Izgara yada normal mod

Temanızda forum listeleme yapısını ızgara yapısında yada normal yapıda listemek için kullanabilirsiniz.

Forum arkaplan resimleri

Forum arkaplanlarına eklenmiş olan resimlerinin kontrolü senin elinde, resimleri aç/kapat

Sidebar blogunu kapat/aç

Forumun kalabalığında kurtulmak için sidebar (kenar çubuğunu) açıp/kapatarak gereksiz kalabalıklardan kurtula bilirsiniz.

Yapışkan sidebar kapat/aç

Yapışkan sidebar ile sidebar alanını daha hızlı ve verimli kullanabilirsiniz.

Radius aç/kapat

Blok köşelerinde bulunan kıvrımları kapat/aç bu şekilde tarzını yansıt.

Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Geri