وحدة:بطاقة/قالب/كتاب

-- Credits:
-- Developer : وهراني @arwiki (وحدة:بطاقة/قالب/كتاب)
-- Version: 20240416


local generic = require( 'وحدة:بطاقة/أدوات' )


local function getWikisource(item)
	local item_id
	if item then item_id = item.id else return nil end
	if not item_id then return nil end
	
	local arwikisourcetitle = mw.wikibase.getSitelink( item_id,'arwikisource' )
	if arwikisourcetitle then
			return "''[[s:" .. arwikisourcetitle .."|نسخة بالعربية]]'' على [[ويكي مصدر]]"
	end	
	return nil
end

return {
	maincolor = '#EE9A4D',
	wikimod = 'Wikidata.Ca',


	description = "قالب يستعمل لعرض بطاقة معلومات موجزة داخل مقالة عن كتاب.",
	
	parts = {
		generic.title({icon='book'}),-- Title
		{type = 'subtitle'
			, value = {'عنوان فرعي','subtitle'}
			, wikidata= {property = 'P1680',
				conjunction = "<br />", separator = "<br />",
				formatting = '$text {{لغة وصلة|$language}}',
				listrank='bestrank'}
		},
		generic.mainimage(),
		{type = 'images',	imageparameters =  {'صورة جانبية'} },
		{type='table', title = 'معلومات عامة', rows = {
			{type = 'row', label = 'المؤلف', 
				value = {'مؤلف','المؤلف','author'}, 
				wikidata = {property = 'P50'},
				metadata = {
					description = "مؤلف الكتاب ",
					option = "suggested", 
					type = "string"
				}
			}, 
			{type = 'row', label = 'المحقق', 
				value = {'محقق'},
				metadata = {
					description = "", -- شرح مختصر
					option = "",  -- أهمية المعلومة :  required / suggested / deprecated
					type = "string"
				}
			},
			{type = 'row', label = 'اللغة', 
				value = {'لغة','اللغة','language'}, 
				wikidata = {property = 'P407'},
				metadata = {
					description = "لغة الكتاب الأصلية",
					option = "suggested",  
					type = "string"
				}
			},
			generic.native_name{type = 'row', label = 'العنوان الأصلي'},
			
			generic.country{property = 'P495'},

			{type = 'row', label = 'الموضوع',
				value = {'موضوع','subject'},
				wikidata= {property = 'P921'},
				metadata = {
					description = "الموضوع أو التصنيف الذي يتحدث عنه الكتاب",
					option = "suggested",
					type = "string", 
				}
			},
			{type = 'row', label = 'النوع الأدبي', 
				value = {'نوع','نوع أدبي','genre','discipline'}, 
				wikidata= {property = 'P136', conjunction = "<br />"},
				metadata = {
					description = "نوع الكتاب من الناحية الأدبية",
					option = "suggested", 
					type = "string", 
					suggestedvalues = {'علمي','أدبي','علمي متأدب','علمي ميسّر'}, 
				}
			},
			{type = 'row', label = 'الشكل الأدبي', 
				value = {'شكل','form'}, 
				wikidata = {property='P7937'},
				metadata = {
					description ='الشكل الأدبي', 
					option = "", 
					type = "string", 
					suggestedvalues = {'رواية','قصة','بحث'}, -- قائمة لقيم مقترحة مساعدة.
				}
			},
			{type = 'row', label = 'الناشر', 
				value = {'ناشر','الناشر','publisher'}, 
				wikidata= {property = 'P123', conjunction = "<br />"},
				metadata = {
					description = "ناشر العمل الأصلي",
					option = "suggested",
					type = "string",
				}
			},
			{type = "row", label = "نسق التوزيع",
				value = {'نسق','نسق التوزيع','distribution format'},
				wikidata = { property = 'P437'},
		        metadata = {
					description = "شكل التوزيع: ورقي / الكتروني",
					option = "", 
					type = "string",
					example = "", 
			}},
			{type = 'row', label = 'كتب لـ',
				value = {'كتب لـ','مخصص لـ'}, 
				wikidata = {property = 'P825'},
				metadata = {
					description = "", -- شرح مختصر
					option = "",  -- أهمية المعلومة :  required / suggested / deprecated
					type = "string", 
					example = "", -- مثال عن نص يساعد في ملء صحيح للخانة 
				}
			},
			{type = 'row', label = 'الإصدار',
				value = {'إصدار'},
				metadata = {
					description = "", -- شرح مختصر
					option = "",  -- أهمية المعلومة :  required / suggested / deprecated
					type = "string"
				}
			},
			{type = 'row', label = 'تاريخ الإصدار', 
				value = {'تاريخ الصدور','تاريخ الإصدار','pub_date','release_date'},
				wikidata = {property = 'P577'},
				metadata = {
					description = "تاريخ إصدار الكتاب الأصلي ", 
					option = "suggested",
					type = "date", 
				}
			},
			{type = 'row', label = 'شخصيات',
				value = {'شخصيات','characters'}, 
				wikidata= {property = 'P674', conjunction = "<br />"},
				metadata = {
					description = "قائمة شخصيات الكتاب (بشكل نقاط أو رابط لمقالة)",
					option = "",  
					type = "string",
				}
			},
			{type = 'row', label = 'أعمال مقتبسة', 
				value = {'أعمال_مقتبسة','adaptation'}, 
				wikidata= {property = 'P4969', conjunction = "<br />"},
				metadata = {
					description = "أعمال اقتبست من أفكار/قصة الكتاب", 
					option = "",  
					type = "string",
					example = "", 
				}
			},

			{type = 'row', label = {'عنوان معلومة1'}, value = {'معلومة1'}},
			{type = 'row', label = {'عنوان معلومة2'}, value = {'معلومة2'}},
			{type = 'row', label = {'عنوان معلومة3'}, value = {'معلومة3'}},
			{type = 'row', label = {'عنوان معلومة4'}, value = {'معلومة4'}},

			generic.awards(),
		}},
		{type='table', title = 'التقديم', rows = {
			{type = 'row', label = 'المصور', value = {'مصور'}},
			{type = 'row', label = '[[الرسام التوضيحي]]',
				value = {'رسام توضيحي','illustrator'}, 
				wikidata = {property = 'P110'},
				metadata = {
					description = "مصمّم الرسوم التوضيحية", 
					option = "",  
					type = "string",
				}
			},
			{type = 'row', label ='فنان الغلاف',
				value = {'فنان الغلاف','cover_artist'} , 
				wikidata = {property = 'P736'},
				metadata = {
					description = "مصمّم الغلاف ", -- شرح مختصر
					option = "", 
					type = "string", 
				}
			},
			{type = 'row', label = 'نوع الطباعة',
				value = {'نوع الطباعة','media_type'},
				metadata = {
					description = "", -- شرح مختصر
					option = "",  
					type = "string", 
					suggestedvalues = {'مطبوع','إلكتروني'}, 
				}
			},
			{type = 'row', label = 'عدد الأجزاء',
				value = {'عدد الأجزاء','عدد_الأجزاء','number_of_books'},
				metadata = {
					description = "", -- شرح مختصر
					option = "",  -- أهمية المعلومة :  required / suggested / deprecated
					type = "string", 
				}
			},
			{type = 'row', label = 'الأجزاء',
				value = {'قائمة الأجزاء','الأجزاء','books'},
				wikidata= {
					property = 'P527',  formatting='table',
				    qualifier1 = 'P1545', qualifier2 = 'P577',
				    rowformat = '$0$R0 $1$2', tablesort='2/1/0',
                    rowsubformat1= '<small><br />الترتيب : $1</small>', 
                    rowsubformat2='<small><br />تاريخ النشر : $2</small>',
                    conjunction ="<hr style=\"clear:both;  margin: 4px 30px 4px 30px;\"/>"
                },
				metadata = {
					description = "قائمة الأجزاء",
					option = "", 
					type = "string", 
				}
			},
			{type = 'row', label = 'عدد الصفحات',
				value = {'عدد الصفحات','pages'},
				wikidata = {property = 'P1104'},
				metadata = {
					description = "", -- شرح مختصر
					option = "suggested", 
					type = "number"
				}
			},
			{type = 'row', label = 'القياسات',  
				value = {'قياس'},
				metadata = {
					description = "قياسات الكتاب", 
					option = "",  
					type = "string"
				}
			},
			{type = 'row', label = 'الوزن', 
				value = {'وزن','weight'}, 
				wikidata = {property = 'P2067'},
				metadata = {
					description = "وزن الكتاب",
					option = "",  
					type = "string"
				}
			},
		}},
		{type='table', title = 'الترجمة', rows = {
			{type = 'row', label ='المترجم',
				value = {'المترجم','مترجم','translator'},
				metadata = {
					description = "مترجم الكتاب إلى اللغة العربية (إذا وُجد)",
					option = "",  
					type = "string"
				}
			},
			{type = 'row', label = 'الناشر',
				value = {'ناشر الترجمة'},
				metadata = {
					description = "ناشر الترجمة العربية (إذا وُجد)، إذا كانت لغة الكتاب الأصلية العربية فلا تستخدم هذه الخانة ",
					option = "", 
					type = "string"
				}
			},
			{type = 'row', label = 'تاريخ الإصدار',
				value = {'تاريخ_الإصدار المترجم','تاريخ الإصدار المترجم'},
				metadata = {
					description = "تاريخ نشر الترجمة العربية (إذا وُجدت)، إذا كانت لغة الكتاب الأصلية العربية فلا تستخدم هذه الخانة ",
					option = "", 
					type = "string"
				}
			},
			{type = 'row', label ='[[الرقم الدولي المعياري للكتاب|ردمك]]',
				value = {'ردمك ترجمة','trans isbn'},
				metadata = {
					description = "", -- شرح مختصر
					option = "",  -- أهمية المعلومة :  required / suggested / deprecated
					type = "string", --  نوع المعلومة : number/boolean/date/url/wiki-file-name/line/content
					example = "", -- مثال عن نص يساعد في ملء صحيح للخانة 
					suggestedvalues = {}, -- قائمة لقيم مقترحة مساعدة.
					autovalue = ""; -- قيمة مولدة آليا مثل :{{subst:CURRENTYEAR}}
					default = "" -- قيمة ثابتة
				}
			},
	    }},
		{type='table', title = 'المعرفات والمواقع', rows = {
			{type = 'row', label = '[[الرقم الدولي المعياري للكتاب|ردمك]]',
				value ={'ردمك','ISBN','ردمك2','ISBN2','isbn'},
				wikidata={
					property = 'P212 OR P957', 
					formatting='[[Special:Booksources/$1|$1]]'
				} ,
				metadata = {
					description = "الرقم الدولي المعياري للكتاب (ردمك)",
					option = "suggested"
				}
			},
			{type = 'row', label = '[[تصنيف ديوي العشري|ديوي]]',
				value = {'ديوي','dewey','Dewey'},
				wikidata = {
					property = 'P1036',
					formatting= '[http://dewey.info/class/$1/ $1]'
				},
				metadata = {
					description = "تصنيف ديوي العشري", 
					option = "", 
					type = "string"
				}
			},
			{type = 'row', label = '[[مركز المكتبة الرقمية على الإنترنت|OCLC]]',
				value = {'أكلس','OCLC','oclc'},
				wikidata= {
					property = 'P243', formatting='[http://www.worldcat.org/oclc/$1 $1]'
				},
				metadata = {
					description = "", -- شرح مختصر
					option = "",  -- أهمية المعلومة :  required / suggested / deprecated
					type = "string"
				}
			},
			{type = 'row', label = '[[تصنيف مكتبة الكونغرس|الكونغرس]]',
				value = {'الكونغرس','P1149'},
				wikidata= {
					property = 'P1149', 
				},
				metadata = {
					description = "تصنيف مكتبة الكونغرس",
					option = "",  -- أهمية المعلومة :  required / suggested / deprecated
					type = "string"
				}
			},
			{type = 'row', label = '[[ويكي مصدر]]',
				value = {'ويكي مصدر','مصدر'},
				wikidata = function ( item ) return getWikisource(item)  end,
				metadata = {
					description = "الكتاب في ويكي مصدر (إذا وُجد)",
					option = "",  -- أهمية المعلومة :  required / suggested / deprecated
					type = "string", --  نوع المعلومة : number/boolean/date/url/wiki-file-name/line/content
					example = "[[:s:كليلة ودمنة]]", -- مثال عن نص يساعد في ملء صحيح للخانة 
					suggestedvalues = {}, -- قائمة لقيم مقترحة مساعدة.
					autovalue = ""; -- قيمة مولدة آليا مثل :{{subst:CURRENTYEAR}}
					default = "" -- قيمة ثابتة
				}
			},
			generic.website('الموقع الرسمي'),
		}},
		{type='table', title = 'كتب أخرى للمؤلف', rows = {
			{type = 'row', label = 'قائمة', 
				value = {'أخرى','كتب أخرى'},
				metadata = {
					description = "قائمة كتب أخرى للمؤلف",
					option = "",  -- أهمية المعلومة :  required / suggested / deprecated
					type = "string"
				}
			},
			{type = 'row',
				label = 'السلسلة',
				value = {'سلسلة','series'},
				wikidata=  { 
					property='P179' , formatting='table',
				    qualifier='P155'  , qualifier2 = 'P156', qualifier3 = 'P1545',
				    rowformat = "<center>$3 $0 $1 $2</center>",
				    rowsubformat1 = "<br/>سبقه : $1" ,
				    rowsubformat2 = "<br/>تلاه: $2 ",
				    rowsubformat3 = "رقم $3 في سلسلة: <br/>",
				    separator ="<hr>"},
				metadata = {
					description = "السلسلة التي ينتمي إليها الكتاب ", -- شرح مختصر
					option = "",  -- أهمية المعلومة :  required / suggested / deprecated
					type = "string"
				}
			},
			{type = 'navbox', inner=true, 
				previousparameter = {"سبقه",'preceded_by'}, 
				previouswikidata ={property = "P155", conjunction="<br>"},
				nextparameter = {"تبعه",'followed_by'},	
				nextwikidata={ property = "P156", conjunction="<br>"}
			}
		}},

	}
}