İçeriğe atla
Ana menü
Ana menü
kenar çubuğuna taşı
gizle
Gezinti
Anasayfa
Son değişiklikler
Rastgele sayfa
Sanat masası
Bağış yap
Özel sayfalar
Ara
Ara
Görünüm
Hesap oluştur
Oturum aç
Kişisel araçlar
Hesap oluştur
Oturum aç
"
Modül:Random slideshow/sandbox
" sayfasını değiştirmektesiniz
Modül
Tartışma
English
Oku
Kaynağı düzenle
Geçmişi gör
Araçlar
Araçlar
kenar çubuğuna taşı
gizle
Eylemler
Oku
Kaynağı düzenle
Geçmişi gör
Genel
Sayfaya bağlantılar
İlgili değişiklikler
Sayfa bilgisi
Görünüm
kenar çubuğuna taşı
gizle
Uyarı:
Oturum açmadınız. Bir düzenleme yaptığınızda, sizin için geçici bir hesap oluşturulur.
Daha fazla bilgi
. Bu hesabın süresi dolduğunda bildirimler almaya devam etmek ve diğer özelliklere erişmek için
oturum açın
ya da
hesap oluşturun
.
Anti spam denetimi. Bunu
doldurmayın
!
-- 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 = '<div class="' .. containerClassName .. '" style="max-width:' .. normaliseCssMeasurement(maxWidth) .. '; margin:-4em auto;">{{#tag:gallery|' .. galleryContent .. '|mode=slideshow}}</div>' return output end function makeGalleryLine(file, caption, credit) local title = mw.title.new(file, "File" ) local creditLine = ( credit and '<p><span style="font-size:88%">' .. credit .. '</span></p>' or '' ) return title.prefixedText .. '{{!}}' .. ( caption or '' ) .. creditLine end function makeGalleryLinesTable(args) local galleryLinesTable = {} local i = 1 while args[i] do table.insert(galleryLinesTable, makeGalleryLine(args[i], 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, '<gallery.->%s*(.-)%s*</gallery>') 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 {{#tag:}} syntax) file = mw.ustring.gsub(file, '|', '{{!}}') file = mw.ustring.gsub(file, '=', '{{=}}') -- remove linebreaks file = mw.ustring.gsub(file, '\n\n', '<br>') 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[i] do if namespaceNumber(args[i]) == 6 then -- file namespace -- args[i] is either just the filename, or uses syntax File:Name.jpg##Caption##Credit local parts = mw.text.split(args[i], '##%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[i]) if not pagename then return error('Cannot read a valid page for "' .. args[i] .. '"', 0) elseif not content then return error('No content found on page "' .. args[i] .. '"', 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
Özet:
Sanarşiv web sitesine yapılan tüm katkıların diğer katılımcılar tarafından düzenlenebileceğini, değiştirilebileceğini veya kaldırılabileceğini lütfen unutmayın. Yazınızın acımasızca düzenlenmesini istemiyorsanız, buraya göndermeyin.
Ayrıca, bunu kendiniz yazdığınızı veya herkese açık bir alandan veya benzeri ücretsiz bir kaynaktan kopyaladığınıza söz veriyorsunuz (ayrıntılar için
Sanarşiv:Telif hakları
sayfasına bakın).
Telif hakkıyla korunan eseri izinsiz göndermeyin!
İptal
Değişiklik yardımı
(yeni pencerede açılır)
Bu sayfada yer alan sayfa:
Modül:Random slideshow/sandbox/belge
(
değiştir
)
Ara
Ara
"
Modül:Random slideshow/sandbox
" sayfasını değiştirmektesiniz
Konu ekle