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:Bölüm listesi/deneme

bullvar_katip

Administrator
Katılım
21 Mayıs 2024
Mesajlar
532,105
local p = {} -- This module requires the use of the following modules: local colorContrastModule = require('Modül:Renk karşıtlığı') local htmlColor = mw.loadData('Modül:Renk karşıtlığı/renkler') local delinkModule = require('Modül:Bağlantıyı kes') local langModule = require("Modül:Lisan") local mathModule = require('Modül:Math') local tableEmptyCellModule = require('Modül:Tablo boş hücre') local yesNoModule = require('Modül:Evethayır') -- mw.html object for the generated row. local row -- Variable that will decide the colspan= of the Short Summary cell. local nonNilParams = 0 -- Variable that will keep track if a TBA value was entered. local cellValueTBA = false -- Variable that handles the assigned tracking categories. local trackingCategories = "" -- List of tracking categories. local trackingCategoryList = { ["air_dates"] = "Kategori:Biçimlendirilmemiş yayın tarihleri içeren bölüm listeleri", ["alt_air_dates"] = "Kategori:Yanlış biçimlendirilmiş alternatif tarihleri içeren bölüm listeleri", ["faulty_line_colors"] = "Kategori:Yanlış çizgi rengi kodu içeren bölüm listeleri", ["non_compliant_line_colors"] = "Kategori:Uyumlu olmayan çizgi rengi içeren bölüm listeleri", ["default_line_colors"] = "Kategori:Episode list using the default LineColor", ["row_deviations"] = "Kategori:Satır sapmaları olan bölüm listeleri", ["invalid_top_colors"] = "Kategori:Belirsiz üst rengi kullanan bölüm listeleri", ["tba_values"] = "Kategori:Episode lists with TBA values", ["nonmatching_numbered_parameters"] = "Kategori:Episode lists with a non-matching set of numbered parameters", ["raw_unformatted_storyteleplay"] = "Kategori:Episode lists with unformatted story or teleplay credits" } -- List of parameter names in this order. local cellNameList = { 'ilave1', 'Ekstra1', 'yönetmen', 'Yönetmen', 'senarist', 'Senarist', 'ilave2', 'Ekstra2', 'ilave3', 'Ekstra3', 'yayıntarihi', 'OrijinalYayınTarihi', 'alttarih', 'AltTarih', 'yapımkodu', 'ProdKodu', 'seyirci', 'Seyirci', 'ilave4', 'Ekstra4' } -- List of cells that have parameter groups local parameterGroupCells = {} local firstParameterGroupCell -- List of title parameter names in this order. -- List used for multi title lists. local titleList = { 'Title', 'RTitle', 'AltTitle', 'RAltTitle', 'NativeTitle', 'TranslitTitle', } -- Local function which is used to retrieve the episode number or production code number, -- without any additional text. local function idTrim(val, search) local valFind = string.find(val, search) if (valFind == nil) then return val else return string.sub(val, 0, valFind-1) end end -- Local function which is used to validate that a parameter has an actual value. local function hasValue(param) if (param ~= nil and param ~= "") then return true else return false end end -- Local function which is used to create a table data cell. local function createTableData(text, rowSpan, textAlign) if (rowSpan ~= nil and tonumber(rowSpan) > 1) then row:tag('td') :attr('rowspan', rowSpan) :wikitext(text) else row:tag('td') :css('text-align', textAlign) :wikitext(text) end end -- Local function which is used to add a tracking category to the page. local function addTrackingCategory(category) trackingCategories = trackingCategories .. category end -- Local function which is used to create a Short Summary row. local function createShortSummaryRow(args, lineColor) -- fix for lists in the Short Summary local shortSummaryText = args["özet"] or args["KısaÖzet"] if (shortSummaryText:match('^[*:;#]') or shortSummaryText:match('^{|')) then shortSummaryText = '\n' .. shortSummaryText end if (shortSummaryText:match('\n[*:;#]')) then shortSummaryText = shortSummaryText .. '\n' end local shortSummaryCell = mw.html.create('td') :addClass('description') :css('border-bottom', 'solid 3px ' .. lineColor) :attr('colspan', nonNilParams) :newline :wikitext(shortSummaryText) return mw.html.create('tr') :addClass('expand-child') :node(shortSummaryCell) end -- Local function which is used to add tracking categories for Top Color issues. local function addTopColorTrackingCategories(args) if (hasValue(args["arkaplan"] or args["ÜstRengi"])) then addTrackingCategory(trackingCategoryList["row_deviations"]) -- Track top colors that have a color contrast rating below AAA with -- respect to text color, link color, or visited link color. See -- WP:COLOR for more about color contrast requirements. local textContrastRatio = colorContrastModule._ratio{(args["arkaplan"] or args["ÜstRengi"]), 'black', ['error'] = 0} local linkContrastRatio = colorContrastModule._ratio{(args["arkaplan"] or args["ÜstRengi"]), '#0B0080', ['error'] = 0} local visitedLinkContrastRatio = colorContrastModule._ratio{(args["arkaplan"] or args["ÜstRengi"]), '#0645AD', ['error'] = 0} if (textContrastRatio " end local titleTextRow titleTextRow = createTitleText(args) titleText = titleText .. titleTextRow isFirstTitleGroup = false else if (isFirstTitleGroup) then titleText, isCellPresent = createTitleText(args) end -- Valid titles have to be in succession (#1, #2, #3 and not #1, #4 #5), so exit for loop if next group is empty. return titleText, isCellPresent end end return titleText end -- Local function which is used to create a Title cell. local function createTitleCell(args, numberOfParameterGroups, multiTitleListEnabled, isSerial) local titleText local isCellPresent if (multiTitleListEnabled) then titleText, isCellPresent = processMultiTitleList(args, numberOfParameterGroups) else titleText, isCellPresent = createTitleText(args) end if (isCellPresent false) then return nil end local textAlign "left" -- If Title is blank, then set Raw Title to TBA if (hasValue(titleText) false) then titleText = tableEmptyCellModule._main({}) textAlign = "left" end -- If title is the first cell, create it with a !scope="row" if (nonNilParams == 0) then if (isSerial) then row:tag('th') :addClass('summary') :attr('scope', 'row') :attr('rowspan', numberOfParameterGroups) :css('text-align', textAlign) :wikitext(titleText) else row:tag('th') :addClass('summary') :attr('scope', 'row') :css('text-align', textAlign) :wikitext(titleText) end else if (isSerial) then row:tag('td') :addClass('summary') :attr('rowspan', numberOfParameterGroups) :css('text-align', textAlign) :wikitext(titleText) else row:tag('td') :addClass('summary') :css('text-align', textAlign) :wikitext(titleText) end end nonNilParams = nonNilParams + 1 end -- Local function which is used to create a table row header for either the -- EpisodeNumber or EpisodeNumber2 column cells. local function createTableRowEpisodeNumberHeader(episodeNumber, numberOfParameterGroups, episodeText) local epID = string.match(episodeNumber, "^%w+") row:tag('th') :attr('scope', 'row') :attr('rowspan', numberOfParameterGroups) :attr('id', epID and 'ep' .. epID or ) :css('text-align', 'center') :wikitext(episodeText) end --Local function which is used to extract the text from the EpisodeNumber or EpisodeNumber2 parameters and format them into a correct MoS compliant version. Styles supported: -- A number range of two numbers, indicating the start and end of the range, seperated by an en-dash (–) with no spaces in between. Example: "1 - 2" -> "1–2"; "1-2-3" -> "1–3". -- An alphanumeric or letter range, similar to the above. Example: "A - B" -> "A–B"; "A-B-C" -> "A–C". Example: "A1 - B1" -> "A1–B1"; "A1-B1-C1" -> "A1–C1". -- A number range of two numbers, indicating the start and end of the range, seperated by a visual (divider line). -- An alphanumeric or letter range, similar to the above. -- local function getEpisodeText(episodeNumber) if (episodeNumber == ) then return tableEmptyCellModule._main({}) else local episodeNumber1 local episodeNumber2 -- Used for double episodes that need a visual "–"" or """ added. local divider episodeNumber = episodeNumber:gsub('%s*%s*', ) if (episodeNumber:match('^(%w+)%s*" elseif (episodeNumber:match('^(%w+)%s*" elseif (mw.ustring.match(episodeNumber, '^(%w+)%s*[%s%-–,/&]%s*(%w+)$')) then episodeNumber1, episodeNumber2 = mw.ustring.match(episodeNumber, '^(%w+)%s*[%s%-–,/&]%s*(%w+)$') divider = "-" else episodeNumber1, episodeNumber2 = mw.ustring.match(episodeNumber, '^(%w+)%s*[%s%-–,/&].-[%s%-–,/&]%s*(%w+)$') -- 3 or more elements divider = "-" end if (not episodeNumber1) then return episodeNumber elseif (not episodeNumber2) then return string.match(episodeNumber, '%w+') else return episodeNumber1 .. divider .. episodeNumber2 end end end -- Local function which is used to create an EpisodeNumber2 cell. local function createEpisodeNumberCell2(args, numberOfParameterGroups) if (args["sezon"] or args["BölümNumarası2"]) then local episodeText = getEpisodeText(args["sezon"] or args["BölümNumarası2"]) if (nonNilParams == 0) then createTableRowEpisodeNumberHeader(args["sezon"] or args["BölümNumarası2"], numberOfParameterGroups, episodeText) else createTableData(episodeText, numberOfParameterGroups, "center") end nonNilParams = nonNilParams + 1 end end -- Local function which is used to create an EpisodeNumber cell. local function createEpisodeNumberCell(args, numberOfParameterGroups) if (args["genel"] or args["BölümNumarası"]) then local episodeText = getEpisodeText(args["genel"] or args["BölümNumarası"]) createTableRowEpisodeNumberHeader(args["genel"] or args["BölümNumarası"], numberOfParameterGroups, episodeText) nonNilParams = nonNilParams + 1 end end -- Local function which is used to create a single row of cells. -- This is the standard function called. local function createSingleRowCells(args, numberOfParameterGroups, multiTitleListEnabled, onInitialPage, title) createEpisodeNumberCell(args, 1) createEpisodeNumberCell2(args, 1) createTitleCell(args, numberOfParameterGroups, multiTitleListEnabled, false) createCells(args, false, 1, onInitialPage, title, numberOfParameterGroups) end -- Local function which is used to create a multiple row of cells. -- This function is called when part of the row is rowspaned. -- Current use is for Doctor Who serials. local function createMultiRowCells(args, numberOfParameterGroups, onInitialPage, title, topColor) createEpisodeNumberCell(args, numberOfParameterGroups) createEpisodeNumberCell2(args, numberOfParameterGroups) createTitleCell(args, numberOfParameterGroups, false, true) for i = 1, numberOfParameterGroups do args = extractDataFromNumberedSerialArgs(args, i, numberOfParameterGroups, title) createCells(args, true, i, onInitialPage, title, numberOfParameterGroups) if (i ~= numberOfParameterGroups) then row = row:done -- Use done to close the 'tr' tag in rowspaned rows. :tag('tr') :css('background', topColor) end end end -- Local function which is used to retrieve the NumParts value. local function getnumberOfParameterGroups(args) for k, v in ipairs(cellNameList) do local numberedParameter = v .. "_" .. 1 if (args[numberedParameter]) then parameterGroupCells[v] = true if not firstParameterGroupCell then firstParameterGroupCell = k end end end if (hasValue(args.NumParts)) then return args.NumParts, true else return 1, false end end -- Local function which is used to retrieve the Top Color value. local function getTopColor(args, rowColorEnabled, onInitialPage) local episodeNumber = mathModule._cleanNumber(args["genel"] or args["BölümNumarası"]) or 1 if (args["arkaplan"] or args["ÜstRengi"]) then if (string.find(args["arkaplan"] or args["ÜstRengi"], "#")) then return (args["arkaplan"] or args["ÜstRengi"]) else return '#' .. (args["arkaplan"] or args["ÜstRengi"]) end elseif (rowColorEnabled and onInitialPage and mathModule._mod(episodeNumber, 2) == 0) then return '#E9E9E9' elseif (onInitialPage and (args["özet"] or args["KısaÖzet"])) then return '#F2F2F2' else return 'inherit' end end -- Local function which is used to retrieve the Row Color value. local function isRowColorEnabled(args) local rowColorEnabled = yesNoModule(args["satırrengi"] or args["SatırRengi"], false) if ((args["satırrengi"] or args["SatırRengi"]) and string.lower(args["satırrengi"] or args["SatırRengi"]) == 'on') then rowColorEnabled = true end return rowColorEnabled end -- Local function which is used to retrieve the Line Color value. local function getLineColor(args) -- Default color to light blue local lineColor = (args["altçizgirengi"] or args["ÇizgiRengi"]) or 'CCCCFF' -- Add # to color if necessary, and set to default color if invalid if (htmlColor[lineColor] nil) then lineColor '#' .. (mw.ustring.match(lineColor, '^[%s#]*([a-fA-F0-9]*)[%s]*$') or ) if (lineColor '#') then lineColor = '#CCCCFF' end end return lineColor end -- Local function which is used to check if the table is located on the page -- currently viewed, or on a transcluded page instead. -- If it is on a transcluded page, the episode summary should not be shown. local function isOnInitialPage(args, sublist, pageTitle, initiallistTitle) -- This should be the only check needed, however, it was previously implemented with two templates -- with one of them not requiring an article name, so for backward compatability, the whole sequence is kept. local onInitialPage -- Only sublist had anything about hiding, so only it needs to even check if (sublist) then onInitialPage = mw.uri.anchorEncode(pageTitle) mw.uri.anchorEncode(initiallistTitle) -- avoid processing ghost references else if (initiallistTitle "") then onInitialPage = true else onInitialPage = mw.uri.anchorEncode(pageTitle) == mw.uri.anchorEncode(initiallistTitle) end end return onInitialPage end -- Local function which does the actual main process. local function _main(args, sublist) local title = mw.title.getCurrentTitle local pageTitle = title.text local initiallistTitle = '' -- Is this list on the same page as the page directly calling the template? local onInitialPage = isOnInitialPage(args, sublist, pageTitle, initiallistTitle) local lineColor = getLineColor(args) local rowColorEnabled = isRowColorEnabled(args) local topColor = getTopColor(args, rowColorEnabled, onInitialPage) local root = mw.html.create -- Create the root mw.html object to return row = root:tag('tr') -- Create the table row and store it globally :addClass('vevent') :css('text-align', 'center') :css('background', topColor) local numberOfParameterGroups, multiTitleListEnabled = getnumberOfParameterGroups(args) if (multiTitleListEnabled and not args.Title_2) then createMultiRowCells(args, numberOfParameterGroups, onInitialPage, title, topColor) else createSingleRowCells(args, numberOfParameterGroups, multiTitleListEnabled, onInitialPage, title) end -- add these categories only in the mainspace and only if they are on the page where the template is used if (onInitialPage and title.namespace 0) then addLineColorTrackingCategories(args) addTopColorTrackingCategories(args) end if (cellValueTBA true and title.namespace == 0) then addTrackingCategory(trackingCategoryList["tba_values"]) end -- Do not show the summary if this is being transcluded on the initial list page -- Do include it on all other lists if (args["özet"] or args["KısaÖzet"]) then local bottomWrapper = createShortSummaryRow(args, lineColor) return tostring(root) .. tostring(bottomWrapper) .. trackingCategories else return tostring(root) .. trackingCategories end end -- Local function which handles both module entry points. local function main(frame, sublist) local getArgs = require('Modül:Bağımsız değişkenler').getArgs local args -- Most parameters should still display when blank, so don't remove blanks if (sublist) then args = getArgs(frame, {removeBlanks = false, wrappers = 'Kullanıcı:????/Çalışmaa'}) else args = getArgs(frame, {removeBlanks = false, wrappers = 'Kullanıcı:????/Çalışma'}) end -- args['1'] = mw.getCurrentFrame:getParent:getTitle return _main(args, sublist, frame) end --1= — required; The title of the article where the Episode Table is located at. -- |EpisodeNumber= — suggested; The overall episode number in the series. -- |EpisodeNumber2= — suggested; The episode number in the season. -- |Title= — suggested; The English title of the episode. -- |RTitle= — optional; Unformatted parameter that can be used to add a reference after "Title", or can be used as a "raw title" to replace "Title" completely. -- |AltTitle= — optional; An alternative title, such as the title of a foreign show's episode in its native language, or a title that was originally changed. -- |TranslitTitle= — optional; The title of the episode transliteration (Romanization) to Latin characters. -- |RAltTitle= — optional; Unformatted parameter that can be used to add a reference after "AltTitle", or can be used as a "raw title" to replace "AltTitle" completely. -- |NativeTitle= — optional; The title of the episode in the native language. -- |NativeTitleLangCode — optional; The language code of the native title language. -- |Aux1= — optional; General purpose parameter. The meaning is specified by the column header. This parameter is also used for Serial episode titles, such as those used in Doctor Who. -- |DirectedBy= — optional; Name of the episode's director. May contain links. -- |WrittenBy= — optional; Primary writer(s) of the episode. May include links. -- |Aux2= — optional; General purpose parameter. The meaning is specified by the column header. -- |Aux3= — optional; General purpose parameter. The meaning is specified by the column header. -- |OriginalAirDate= — optional; This is the date the episode first aired on TV, or is scheduled to air. -- |AltDate= — optional; The next notable air date, such as the first air date of an anime in English. -- |ProdCode= — optional; The production code in the series. When defined, this parameter also creates a link anchor, prefixed by "pc"; for example, List of episodes#pc01. -- |Viewers= — optional; Number of viewers who watched the episode. Should include a reference. -- |Aux4= — optional; General purpose parameter. The meaning is specified by the column header. -- |ShortSummary= — optional; A short 100–200 word plot summary of the episode. -- |LineColor= — optional; Colors the separator line between episode entries. If not defined the color defaults to "#CCCCFF" and the article is placed in Category:Episode list using the default LineColor. Use of "#", or anything but a valid hex code will result in an invalid syntax. -- |TopColor= — discouraged; Colors the main row of information (that is, not the ShortSummary row). Articles using this parameter are placed in Category:Episode lists with row deviations. -- |RowColor= — optional; Switch parameter that must only be defined when the EpisodeNumber= entry is not a regular number (e.g. "12–13" for two episodes described in one table entry). If the first episode number is even, define pass "on". If the first episode number is odd, pass "off". -- function p.sublist(frame) return main(frame, true) end --Public function which is used to create an Episode row for an Episode Table used for lists of episodes where all tables are on the same page. For tables which are on different pages see p.sublist. For complete parameter documentation, see the documentation at p.sublist. -- function p.list(frame) return main(frame, false) 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