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:Random slideshow/sandbox

bullvar_katip

Administrator
Katılım
21 Mayıs 2024
Mesajlar
532,105
-- Creates a slideshow gallery where the order is randomised. Intended for use on portal pages. local p = {} local excerptModule = require('Module:Excerpt/portals/sandbox') local randomModule = require('Module:Random') local redirectModule = require('Module:Redirect') function cleanupArgs(argsTable) local cleanArgs = {} for key, val in pairs(argsTable) do if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val ~= then cleanArgs[key] = val end else cleanArgs[key] = val end end return cleanArgs end function normaliseCssMeasurement(input) local suffix = string.reverse(string.sub(string.reverse(input), 1, 2)) if ( suffix 'px' ) or ( suffix 'em' ) or ( string.sub(suffix, 2, 2) == '%' ) then return input else return input .. 'px' end end function isDeclined(val) if not val then return false end local declinedWords = " decline declined exclude excluded false none not no n off omit omitted remove removed " return string.find(declinedWords , ' '..val..' ', 1, true ) and true or false end function makeOutput(galleryLines, maxWidth, containerClassName, nonRandom) local randomiseArgs = { ['t'] = galleryLines } local sortedLines = nonRandom and galleryLines or randomModule.main('array', randomiseArgs) local galleryContent = table.concat(sortedLines, '\n') local output = return output end function makeGalleryLine(file, caption, credit) local title = mw.title.new(file, "File" ) local creditLine = ( credit and or ) return title.prefixedText .. .. ( caption or ) .. creditLine end function makeGalleryLinesTable(args) local galleryLinesTable = {} local i = 1 while args do table.insert(galleryLinesTable, makeGalleryLine(args, args[i+1], args['credit' .. (i+1)/2])) i = i + 2 end return galleryLinesTable end function hasCaption(line) local caption = mw.ustring.match(line, ".-(.*)") -- require caption to exist with more than 5 characters (avoids sizes etc being mistaken for captions) return caption and #caption>5 and true or false end function extractGalleryFiles(wikitext) local gallery = mw.ustring.match(wikitext, ) if not gallery then return false end gallery = mw.ustring.gsub(gallery, '|', ) return mw.text.split(gallery, '%c') end function extractRegularFiles(wikitext) local files = {} local frame = mw.getCurrentFrame local expand = function(template) return frame:preprocess(template) end for file in mw.ustring.gmatch(wikitext, '%b[]' ) do -- remove keywords that don't work in galleries file = mw.ustring.gsub(file, '|%s*thumb%s*([|%]])', '%1') file = mw.ustring.gsub(file, '|%s*thumbnail%s*([|%]])', '%1') file = mw.ustring.gsub(file, '|%s*left%s*([|%]])', '%1') file = mw.ustring.gsub(file, '|%s*right%s*([|%]])', '%1') file = mw.ustring.gsub(file, '|%s*center%s*([|%]])', '%1') file = mw.ustring.gsub(file, '|%s*framed?%s*([|%]])', '%1') file = mw.ustring.gsub(file, '|%s*frameless%s*([|%]])', '%1') file = mw.ustring.gsub(file, '|%s*upright%s*([|%]])', '%1') file = mw.ustring.gsub(file, '|%s*upright%s*=.-([|%]])', '%1') -- remove spaces prior to captions (which cause pre-formatted text) file = mw.ustring.gsub(file, '|%s*', '|') -- remove sizes, which sometimes get mistaken for captions file = mw.ustring.gsub(file, '|%d*x?%d+px([|%]])', '%1') -- expand templates file = mw.ustring.gsub(file, '{%b{}}', expand) -- remove loose closing braces which don't have matching opening braces file = mw.ustring.gsub(file, '}}', ) -- remove loose opening braces which don't have matching closing braces (and the subsequent content, which is probably just a template name) file = mw.ustring.gsub(file, '{{.-([|%]])', '$1') -- replace pipes and equals (which would otherwise break the syntax) file = mw.ustring.gsub(file, '|', ) file = mw.ustring.gsub(file, '=', ) -- remove linebreaks file = mw.ustring.gsub(file, '\n\n', ) file = mw.ustring.gsub(file, '\n', ) -- remove surrounding square brackets file = mw.ustring.gsub(file, '^%[%[', ) file = mw.ustring.gsub(file, '%]%]$', ) table.insert(files, file) end return files end function makeTranscludedGalleryLinesTables(args) local namespaceNumber = function(pagetitle) local titleObject = mw.title.new(pagetitle) return titleObject and titleObject.namespace end local lines = {} local i = 1 while args do if namespaceNumber(args) 6 then -- file namespace -- args is either just the filename, or uses syntax File:Name.jpg##Caption##Credit local parts mw.text.split(args, '##%s*') local filename parts[1] local caption args['caption'..i] or parts[2] or false local credit args['credit'..i] or parts[3] or false local line makeGalleryLine(filename, caption, credit) table.insert(lines, line) else local content, pagename excerptModule.getContent(args) if not pagename then return error('Cannot read a valid page for "' .. args .. '"', 0) elseif not content then return error('No content found on page "' .. args .. '"', 0) end if args['section'..i] then content excerptModule.getSection(content, args['section'..i]) or end content excerptModule.cleanupText(content,{}) local galleryFiles extractGalleryFiles(content) if galleryFiles then for _, f in pairs(galleryFiles) do if hasCaption(f) then local filename string.gsub(f, '.*', ) local isOkay excerptModule.checkImage(filename) if isOkay then table.insert(lines, f) end end end end local otherFiles excerptModule.parse(content, {fileflags "1-100", filesOnly true}) if otherFiles then for _, f in pairs(extractRegularFiles(otherFiles)) do if f and f ~ and mw.ustring.sub(f, 1, 5) 'File:' and hasCaption(f) then table.insert(lines, f) end end end end i = i + 1 end return ( #lines > 0 ) and lines or error('No images found') end p._main = function(args, transclude, containerClassName) if not args[1] then return error(linked and 'No page specified' or 'No page specified', 0) end local lines = transclude and makeTranscludedGalleryLinesTables(args) or makeGalleryLinesTable(args) return makeOutput(lines, args.width or '100%', containerClassName or 'randomSlideshow-container', isDeclined(args.random)) end p.main = function(frame) local parent = frame.getParent(frame) local parentArgs = parent.args local args = cleanupArgs(parentArgs) local output = p._main(args, false) return frame:extensionTag{ name='templatestyles', args = { src='Module:Random slideshow/styles.css'} } .. frame:preprocess(output) end p.transclude = function(frame) local parent = frame.getParent(frame) local parentArgs = parent.args local args = cleanupArgs(parentArgs) local output = p._main(args, true) return frame:extensionTag{ name='templatestyles', args = { src='Module:Random slideshow/styles.css'} } .. frame:preprocess(output) 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