<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="bn">
	<id>https://bn.bharatpedia.org/w/index.php?action=history&amp;feed=atom&amp;title=%E0%A6%AE%E0%A6%A1%E0%A6%BF%E0%A6%89%E0%A6%B2%3A%E0%A6%B6%E0%A7%81%E0%A6%A8%E0%A7%81%E0%A6%A8</id>
	<title>মডিউল:শুনুন - সংশোধনের ইতিহাস</title>
	<link rel="self" type="application/atom+xml" href="https://bn.bharatpedia.org/w/index.php?action=history&amp;feed=atom&amp;title=%E0%A6%AE%E0%A6%A1%E0%A6%BF%E0%A6%89%E0%A6%B2%3A%E0%A6%B6%E0%A7%81%E0%A6%A8%E0%A7%81%E0%A6%A8"/>
	<link rel="alternate" type="text/html" href="https://bn.bharatpedia.org/w/index.php?title=%E0%A6%AE%E0%A6%A1%E0%A6%BF%E0%A6%89%E0%A6%B2:%E0%A6%B6%E0%A7%81%E0%A6%A8%E0%A7%81%E0%A6%A8&amp;action=history"/>
	<updated>2026-08-25T18:58:58Z</updated>
	<subtitle>এই উইকিতে এই পাতার সংশোধনের ইতিহাস</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://bn.bharatpedia.org/w/index.php?title=%E0%A6%AE%E0%A6%A1%E0%A6%BF%E0%A6%89%E0%A6%B2:%E0%A6%B6%E0%A7%81%E0%A6%A8%E0%A7%81%E0%A6%A8&amp;diff=4210&amp;oldid=prev</id>
		<title>১৬:২৬, ৫ আগস্ট ২০২০-এ ImportMaster</title>
		<link rel="alternate" type="text/html" href="https://bn.bharatpedia.org/w/index.php?title=%E0%A6%AE%E0%A6%A1%E0%A6%BF%E0%A6%89%E0%A6%B2:%E0%A6%B6%E0%A7%81%E0%A6%A8%E0%A7%81%E0%A6%A8&amp;diff=4210&amp;oldid=prev"/>
		<updated>2020-08-05T16:26:29Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;নতুন পাতা&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module implements {{listen}}.&lt;br /&gt;
&lt;br /&gt;
local mFileLink = require(&amp;#039;Module:File link&amp;#039;)&lt;br /&gt;
local mTableTools = require(&amp;#039;Module:TableTools&amp;#039;)&lt;br /&gt;
local mSideBox = require(&amp;#039;মডিউল:পার্শ্ব বাক্স&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
local hasMissing -- For the tracking category&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local origArgs = frame:getParent().args&lt;br /&gt;
	local args = {}&lt;br /&gt;
	for k, v in pairs(origArgs) do&lt;br /&gt;
		v = v:match(&amp;#039;^%s*(.-)%s*$&amp;#039;)&lt;br /&gt;
		if v ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	-- Find whether we are outputting a plain or an embedded box.&lt;br /&gt;
	local isPlain = args.plain == &amp;#039;yes&amp;#039;&lt;br /&gt;
	local isEmbedded = args.embed and true&lt;br /&gt;
&lt;br /&gt;
	-- Organise the arguments by number.&lt;br /&gt;
	local numArgs = {}&lt;br /&gt;
	do&lt;br /&gt;
		local origNumArgs = mTableTools.numData(args)&lt;br /&gt;
		origNumArgs[1] = origNumArgs.other -- Overwrite args.filename1 etc. with args.filename etc.&lt;br /&gt;
		origNumArgs = mTableTools.compressSparseArray(origNumArgs)&lt;br /&gt;
		for i, t in ipairs(origNumArgs) do&lt;br /&gt;
			-- Check if the files exist.&lt;br /&gt;
			local obj = t.filename and mw.title.new(&amp;#039;Media:&amp;#039; .. t.filename)&lt;br /&gt;
			if obj and obj.exists then&lt;br /&gt;
				numArgs[#numArgs + 1] = t&lt;br /&gt;
			else&lt;br /&gt;
				hasMissing = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		-- Exit early if none exist.&lt;br /&gt;
		if #numArgs == 0 then&lt;br /&gt;
			return p.renderTrackingCategories(isPlain, true)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Build the arguments for {{side box}}&lt;br /&gt;
	local sbargs = {}&lt;br /&gt;
	sbargs.class = &amp;#039;noprint&amp;#039;&lt;br /&gt;
	sbargs.metadata = &amp;#039;no&amp;#039;&lt;br /&gt;
	sbargs.position = args.pos&lt;br /&gt;
&lt;br /&gt;
	-- Style arguments&lt;br /&gt;
	do&lt;br /&gt;
		local style = {}&lt;br /&gt;
		if isPlain then&lt;br /&gt;
			style[#style + 1] = &amp;#039;border:none&amp;#039;&lt;br /&gt;
			style[#style + 1] = &amp;#039;background:transparent&amp;#039;&lt;br /&gt;
			style[#style + 1] = &amp;#039;float:none&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		if isEmbedded then&lt;br /&gt;
			style[#style + 1] = &amp;#039;border-collapse:collapse&amp;#039;&lt;br /&gt;
			style[#style + 1] = &amp;#039;border-width:1px 0 0 0&amp;#039;&lt;br /&gt;
			style[#style + 1] = &amp;#039;background:transparent&amp;#039;&lt;br /&gt;
			style[#style + 1] = &amp;#039;float:none&amp;#039;&lt;br /&gt;
			style[#style + 1] = &amp;#039;margin:0 -5px&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		if args.pos == &amp;#039;left&amp;#039; then&lt;br /&gt;
			style[#style + 1] = &amp;#039;float:left&amp;#039;&lt;br /&gt;
		elseif args.pos == &amp;#039;center&amp;#039; then&lt;br /&gt;
			style[#style + 1] = &amp;#039;float:none&amp;#039;&lt;br /&gt;
			style[#style + 1] = &amp;#039;margin-left:auto&amp;#039;&lt;br /&gt;
			style[#style + 1] = &amp;#039;margin-right:auto&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		style[#style + 1] = args.style&lt;br /&gt;
		sbargs.style = table.concat(style, &amp;#039;; &amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	sbargs.textstyle = &amp;#039;line-height:1.1em&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	-- Image&lt;br /&gt;
	if not isPlain and not isEmbedded then&lt;br /&gt;
		if args.image then&lt;br /&gt;
			sbargs.image = args.image&lt;br /&gt;
		else&lt;br /&gt;
			local images = {&lt;br /&gt;
				speech = &amp;#039;Audio-input-microphone.svg&amp;#039;,&lt;br /&gt;
				music = &amp;#039;Gnome-mime-audio-openclipart.svg&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
			local image = args.type&lt;br /&gt;
				and images[args.type]&lt;br /&gt;
				or &amp;#039;Gnome-mime-sound-openclipart.svg&amp;#039;&lt;br /&gt;
			sbargs.image = mFileLink._main{&lt;br /&gt;
				file = image,&lt;br /&gt;
				size = &amp;#039;65x50px&amp;#039;,&lt;br /&gt;
				location = &amp;#039;center&amp;#039;,&lt;br /&gt;
				link = &amp;#039;&amp;#039;,&lt;br /&gt;
				alt = &amp;#039;&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Text&lt;br /&gt;
	do&lt;br /&gt;
		local header&lt;br /&gt;
		if args.header then&lt;br /&gt;
			header = mw.html.create(&amp;#039;div&amp;#039;)&lt;br /&gt;
			header:css{&lt;br /&gt;
				background = &amp;#039;transparent&amp;#039;,&lt;br /&gt;
				[&amp;#039;text-align&amp;#039;] = &amp;#039;left&amp;#039;,&lt;br /&gt;
				padding = args.embed and &amp;#039;2px 0&amp;#039; or &amp;#039;2px&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
				:wikitext(args.header)&lt;br /&gt;
			header = tostring(header)&lt;br /&gt;
			header = header .. &amp;#039;\n&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			header = &amp;#039;&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		local text = {}&lt;br /&gt;
		for i, t in ipairs(numArgs) do&lt;br /&gt;
			text[#text + 1] = p.renderRow(&lt;br /&gt;
				t.filename, t.title, t.play, t.alt, t.description, t.start&lt;br /&gt;
			)&lt;br /&gt;
			if numArgs[i + 1] then&lt;br /&gt;
				text[#text + 1] = &amp;#039;&amp;lt;hr/&amp;gt;&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		sbargs.text = header .. table.concat(text)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Below&lt;br /&gt;
	if not isPlain and not isEmbedded and args.help ~= &amp;#039;no&amp;#039; then&lt;br /&gt;
		sbargs.below = string.format(&lt;br /&gt;
			&amp;#039;&amp;lt;hr/&amp;gt;&amp;lt;i class=&amp;quot;selfreference&amp;quot;&amp;gt;%s শুনতে অসুবিধা হচ্ছে? [[উইকিপিডিয়া:মিডিয়া সাহায্য|মিডিয়া সাহায্য]] দেখুন।&amp;lt;/i&amp;gt;&amp;#039;,&lt;br /&gt;
			#numArgs == 1 and &amp;#039;এই ফাইলটি&amp;#039; or &amp;#039;এই ফাইলসমূহ&amp;#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Render the side box.&lt;br /&gt;
	local sideBox = mSideBox._main(sbargs)&lt;br /&gt;
&lt;br /&gt;
	-- Render the tracking categories.&lt;br /&gt;
	local trackingCategories = p.renderTrackingCategories(isPlain)&lt;br /&gt;
&lt;br /&gt;
	return sideBox .. trackingCategories&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderRow(filename, title, play, alt, description, start)&lt;br /&gt;
	-- Renders the HTML for one file description row.&lt;br /&gt;
	if not filename then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local root = mw.html.create(&amp;#039;&amp;#039;)&lt;br /&gt;
	root:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
		:addClass(&amp;#039;haudio&amp;#039;)&lt;br /&gt;
		:newline()&lt;br /&gt;
		:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;padding&amp;#039;, &amp;#039;4px 0&amp;#039;)&lt;br /&gt;
			:wikitext(string.format(&amp;#039;[[:File:%s|%s]]&amp;#039;, filename, title or &amp;#039;&amp;#039;))&lt;br /&gt;
			:done()&lt;br /&gt;
		:newline()&lt;br /&gt;
		:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:wikitext(&lt;br /&gt;
				play ~= &amp;#039;no&amp;#039;&lt;br /&gt;
					and mFileLink._main{&lt;br /&gt;
						file = filename,&lt;br /&gt;
						size = &amp;#039;220px&amp;#039;,&lt;br /&gt;
						alt = alt,&lt;br /&gt;
						start = start&lt;br /&gt;
					}&lt;br /&gt;
					or nil&lt;br /&gt;
			)&lt;br /&gt;
			:done()&lt;br /&gt;
		:newline()&lt;br /&gt;
		:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:css(&amp;#039;padding&amp;#039;, &amp;#039;2px 0 0 0&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;description&amp;#039;)&lt;br /&gt;
			:wikitext(description)&lt;br /&gt;
			:done()&lt;br /&gt;
		:done()&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderTrackingCategories(isPlain, isEmpty, titleObj)&lt;br /&gt;
	-- Renders all tracking categories produced by the template.&lt;br /&gt;
	-- isPlain and isEmpty are passed through from p._main,&lt;br /&gt;
	-- and the titleObj is only used for testing purposes.&lt;br /&gt;
	local cats = {}&lt;br /&gt;
	local currentTitle = titleObj or mw.title.getCurrentTitle()&lt;br /&gt;
	if currentTitle.namespace == 0 then&lt;br /&gt;
		-- We are in mainspace.&lt;br /&gt;
		if not isEmpty then&lt;br /&gt;
			cats[#cats + 1] = &amp;#039;এইচঅডিওর মাইক্রোবিন্যাসের সাথে নিবন্ধসমূহ&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		if hasMissing then&lt;br /&gt;
			cats[#cats + 1] = &amp;#039;খালি শুনুন টেমপ্লেটসহ নিবন্ধ&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if isPlain then&lt;br /&gt;
		cats[#cats + 1] = &amp;#039;শুনুন টেমপ্লেট সমভূমি প্যারামিটার ব্যবহার করছে&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	for i, cat in ipairs(cats) do&lt;br /&gt;
		cats[i] = string.format(&amp;#039;[[Category:%s]]&amp;#039;, cat)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(cats)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>ImportMaster</name></author>
	</entry>
</feed>