<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ar">
	<id>https://ar.faraghaib.ir/w/index.php?action=history&amp;feed=atom&amp;title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A%3AGadget-WordCount.js</id>
	<title>ميدياويكي:Gadget-WordCount.js - تاريخ المراجعة</title>
	<link rel="self" type="application/atom+xml" href="https://ar.faraghaib.ir/w/index.php?action=history&amp;feed=atom&amp;title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A%3AGadget-WordCount.js"/>
	<link rel="alternate" type="text/html" href="https://ar.faraghaib.ir/w/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-WordCount.js&amp;action=history"/>
	<updated>2026-06-26T01:38:27Z</updated>
	<subtitle>تاريخ التعديل لهذه الصفحة في الويكي</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://ar.faraghaib.ir/w/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-WordCount.js&amp;diff=8&amp;oldid=prev</id>
		<title>Esfandiari: مراجعة واحدة</title>
		<link rel="alternate" type="text/html" href="https://ar.faraghaib.ir/w/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-WordCount.js&amp;diff=8&amp;oldid=prev"/>
		<updated>2026-06-24T22:56:26Z</updated>

		<summary type="html">&lt;p&gt;مراجعة واحدة&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ar&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;→ مراجعة أقدم&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;مراجعة ٢٢:٥٦، ٢٤ يونيو ٢٠٢٦&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;ar&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(لا فرق)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key faraghaib_wiaresfandd73:diff:1.41:old-7:rev-8 --&gt;
&lt;/table&gt;</summary>
		<author><name>Esfandiari</name></author>
	</entry>
	<entry>
		<id>https://ar.faraghaib.ir/w/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-WordCount.js&amp;diff=7&amp;oldid=prev</id>
		<title>esfandiari&gt;Nazarzadeh: مراجعة واحدة</title>
		<link rel="alternate" type="text/html" href="https://ar.faraghaib.ir/w/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-WordCount.js&amp;diff=7&amp;oldid=prev"/>
		<updated>2025-01-07T05:00:37Z</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;//&amp;lt;nowiki&amp;gt;&lt;br /&gt;
// This code is based on https://en.wikipedia.org/wiki/User:Dr_pda/prosesize.js&lt;br /&gt;
// but adds CJK support (http://stackoverflow.com/questions/2315488) and support&lt;br /&gt;
// for references and other lists.&lt;br /&gt;
//&lt;br /&gt;
function getWordCount(html) {&lt;br /&gt;
	var str = html.innerHTML.replace(/(&amp;lt;([^&amp;gt;]+)&amp;gt;)/ig,&amp;quot;&amp;quot;).trim();&lt;br /&gt;
&lt;br /&gt;
	var wordCount = 0;&lt;br /&gt;
&lt;br /&gt;
	var arr = str.match(/[\u3040-\u309F]|[\u30A0-\u30FF]|[\u4E00-\u9FFF\uF900-\uFAFF\u3400-\u4DBF]|\S+/g);&lt;br /&gt;
&lt;br /&gt;
	if (arr) {&lt;br /&gt;
		wordCount = arr.length;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return wordCount;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getContentDiv() {&lt;br /&gt;
	var contentDiv;&lt;br /&gt;
&lt;br /&gt;
	if (mw.config.get(&amp;#039;wgAction&amp;#039;) == &amp;#039;edit&amp;#039;) {&lt;br /&gt;
		contentDiv = document.getElementById(&amp;#039;wikiPreview&amp;#039;);&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		contentDiv = document.getElementById(&amp;#039;mw-content-text&amp;#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return contentDiv;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function isValidListNode(node) {&lt;br /&gt;
	if (node.parentElement.id == &amp;quot;word-count-stats&amp;quot;) {&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (node.className.indexOf(&amp;quot;toclevel-&amp;quot;) &amp;gt; -1 || &lt;br /&gt;
		node.parentElement.parentElement.id == &amp;quot;toc&amp;quot;) {&lt;br /&gt;
&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (node.parentElement.parentElement.parentElement.className == &amp;quot;catlinks&amp;quot;) {&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var bodyContent = getContentDiv();&lt;br /&gt;
	var curNode = node.parentElement.parentElement;&lt;br /&gt;
&lt;br /&gt;
	while (curNode &amp;amp;&amp;amp; (curNode != bodyContent)) {&lt;br /&gt;
		if (curNode.className.indexOf(&amp;quot;infobox&amp;quot;) &amp;gt; -1) {&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		else if (curNode.className.indexOf(&amp;quot;metadata&amp;quot;) &amp;gt; -1) {&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		else if (curNode.className.indexOf(&amp;quot;navbox&amp;quot;) &amp;gt; -1) {&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			curNode = curNode.parentElement;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function isValidParagraphNode(node) {&lt;br /&gt;
	if (node.parentNode.className.indexOf(&amp;quot;mw-parser-output&amp;quot;) &amp;gt; -1 ||&lt;br /&gt;
		node.parentNode.parentNode.className.indexOf(&amp;quot;mw-parser-output&amp;quot;) &amp;gt; -1 ||&lt;br /&gt;
		node.parentNode.nodeName == &amp;quot;BLOCKQUOTE&amp;quot;) {&lt;br /&gt;
&lt;br /&gt;
		return true;&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function isValidReferenceNode(node) {&lt;br /&gt;
	var bodyContent = getContentDiv();&lt;br /&gt;
	var curNode = node.parentElement;&lt;br /&gt;
&lt;br /&gt;
	while (curNode &amp;amp;&amp;amp; (curNode != bodyContent)) {&lt;br /&gt;
		if (curNode.classList.contains(&amp;quot;references&amp;quot;) ||&lt;br /&gt;
			curNode.classList.contains(&amp;quot;reflist&amp;quot;) ||&lt;br /&gt;
			curNode.classList.contains(&amp;quot;refbegin&amp;quot;)) {&lt;br /&gt;
&lt;br /&gt;
			return true;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		curNode = curNode.parentElement;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return false;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function toggleWordCount() {&lt;br /&gt;
	if (mw.config.get(&amp;#039;wgAction&amp;#039;) == &amp;#039;edit&amp;#039;) {&lt;br /&gt;
		var wikiPreview = document.getElementById(&amp;#039;wikiPreview&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		var wikiPreviewStyle = window.getComputedStyle(wikiPreview);&lt;br /&gt;
&lt;br /&gt;
		if (wikiPreviewStyle.display === &amp;#039;none&amp;#039;) {&lt;br /&gt;
			alert(&amp;quot;You need to preview the text for the word count script to work in edit mode.&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	var bodyContent = getContentDiv();&lt;br /&gt;
&lt;br /&gt;
	var output = document.getElementById(&amp;quot;word-count-stats&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	if (output) {&lt;br /&gt;
		var oldStyle = output.className;&lt;br /&gt;
&lt;br /&gt;
		var i = 0;&lt;br /&gt;
&lt;br /&gt;
		// Cleanup background color&lt;br /&gt;
		var pList = bodyContent.getElementsByTagName(&amp;quot;p&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		if (pList) {&lt;br /&gt;
			for (i=0; i &amp;lt; pList.length; i++){&lt;br /&gt;
				if (isValidParagraphNode(pList[i])) {&lt;br /&gt;
					pList[i].style.cssText = oldStyle;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var listTypes = [&amp;quot;li&amp;quot;, &amp;quot;dd&amp;quot;];&lt;br /&gt;
	&lt;br /&gt;
		for (var j = 0; j &amp;lt; listTypes.length; j++) {&lt;br /&gt;
			var liList = bodyContent.getElementsByTagName(listTypes[j]);&lt;br /&gt;
&lt;br /&gt;
			if (liList) {&lt;br /&gt;
				for (i=0; i &amp;lt; liList.length; i++) {&lt;br /&gt;
					liList[i].style.cssText = oldStyle;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		var hList = bodyContent.getElementsByClassName(&amp;quot;mw-headline&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		if (hList) {&lt;br /&gt;
			for (i=0; i &amp;lt; hList.length; i++) {&lt;br /&gt;
				hList[i].style.cssText = oldStyle;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Remove nodes&lt;br /&gt;
		output.parentNode.removeChild(output);&lt;br /&gt;
&lt;br /&gt;
		var header = document.getElementById(&amp;quot;word-count-header&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		header.parentNode.removeChild(header);&lt;br /&gt;
	}&lt;br /&gt;
	else {&lt;br /&gt;
		getStatistics(bodyContent);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// Main counting function&lt;br /&gt;
//&lt;br /&gt;
function getStatistics(bodyContent) {&lt;br /&gt;
&lt;br /&gt;
	// Statistics&lt;br /&gt;
	var output = document.createElement(&amp;quot;ul&amp;quot;);&lt;br /&gt;
	output.id = &amp;quot;word-count-stats&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	var main_body_value = document.createElement(&amp;quot;li&amp;quot;);&lt;br /&gt;
	main_body_value.id = &amp;quot;main-body-stat&amp;quot;;&lt;br /&gt;
	output.appendChild(main_body_value);&lt;br /&gt;
	output.className = bodyContent.getElementsByTagName(&amp;quot;p&amp;quot;).item(0).style.cssText;&lt;br /&gt;
&lt;br /&gt;
	var ref_value = document.createElement(&amp;quot;li&amp;quot;);&lt;br /&gt;
	ref_value.id = &amp;quot;ref-stat&amp;quot;;&lt;br /&gt;
	output.appendChild(ref_value);&lt;br /&gt;
&lt;br /&gt;
	var total_value = document.createElement(&amp;quot;li&amp;quot;);&lt;br /&gt;
	total_value.id = &amp;quot;total-stat&amp;quot;;&lt;br /&gt;
	output.appendChild(total_value);&lt;br /&gt;
&lt;br /&gt;
	bodyContent.insertBefore(output, bodyContent.firstChild);&lt;br /&gt;
&lt;br /&gt;
	// Header&lt;br /&gt;
	var header = document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
	header.id = &amp;quot;word-count-header&amp;quot;;&lt;br /&gt;
	header.innerHTML = &amp;quot;&amp;lt;br/&amp;gt;&amp;lt;b&amp;gt;Word counts&amp;lt;/b&amp;gt; (&amp;lt;a href=&amp;#039;https://en.wikipedia.org/wiki/User:Caorongjin/wordcount&amp;#039;&amp;gt;doc&amp;lt;/a&amp;gt;)&amp;lt;b&amp;gt;:&amp;lt;/b&amp;gt;&amp;quot;;&lt;br /&gt;
	bodyContent.insertBefore(header,output);&lt;br /&gt;
&lt;br /&gt;
	// Create counters&lt;br /&gt;
	var main_body_count = 0;&lt;br /&gt;
	var ref_count = 0;&lt;br /&gt;
&lt;br /&gt;
	var i = 0;&lt;br /&gt;
&lt;br /&gt;
	// Count within paragraphs&lt;br /&gt;
	var pList = bodyContent.getElementsByTagName(&amp;quot;p&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	if (pList) {&lt;br /&gt;
		for (i=0; i &amp;lt; pList.length; i++) {&lt;br /&gt;
			var para = pList[i];&lt;br /&gt;
&lt;br /&gt;
			if (isValidParagraphNode(para)) {&lt;br /&gt;
				var paraCount = getWordCount(para);&lt;br /&gt;
&lt;br /&gt;
				if (paraCount &amp;gt; 0) {&lt;br /&gt;
					main_body_count += paraCount;&lt;br /&gt;
					para.style.cssText = &amp;quot;background-color:yellow&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Count within lists&lt;br /&gt;
	var listTypes = [&amp;quot;li&amp;quot;, &amp;quot;dd&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
	for (var j = 0; j &amp;lt; listTypes.length; j++) {&lt;br /&gt;
		var liList = bodyContent.getElementsByTagName(listTypes[j]);&lt;br /&gt;
&lt;br /&gt;
		if (liList) {&lt;br /&gt;
			for (i=0; i &amp;lt; liList.length; i++) {&lt;br /&gt;
				var li = liList[i];&lt;br /&gt;
&lt;br /&gt;
				if (isValidReferenceNode(li)) {&lt;br /&gt;
					ref_count += getWordCount(li);&lt;br /&gt;
					li.style.cssText = &amp;quot;background-color:cyan&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
				else if (isValidListNode(li)) {&lt;br /&gt;
					main_body_count += getWordCount(li);&lt;br /&gt;
					li.style.cssText = &amp;quot;background-color:yellow&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Count within headings&lt;br /&gt;
	var hList = bodyContent.getElementsByClassName(&amp;quot;mw-headline&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	if (hList) {&lt;br /&gt;
		for (i=0; i &amp;lt; hList.length; i++) {&lt;br /&gt;
			var h = hList[i];&lt;br /&gt;
&lt;br /&gt;
			if (h.id == &amp;quot;Contents&amp;quot;) {&lt;br /&gt;
				continue;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			main_body_count += getWordCount(h);&lt;br /&gt;
			h.style.cssText = &amp;quot;background-color:yellow&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	main_body_value.innerHTML = &amp;quot;Main body: &amp;quot; + main_body_count + &amp;quot; words&amp;quot;;&lt;br /&gt;
	ref_value.innerHTML = &amp;quot;References: &amp;quot; + ref_count + &amp;quot; words&amp;quot;;&lt;br /&gt;
	total_value.innerHTML = &amp;quot;Total: &amp;quot; + (main_body_count + ref_count) + &amp;quot; words&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
jQuery(function () {&lt;br /&gt;
	mw.loader.using( [&amp;#039;mediawiki.util&amp;#039;], function () {&lt;br /&gt;
		if($.inArray(mw.config.get(&amp;#039;wgAction&amp;#039;), [&amp;#039;edit&amp;#039;, &amp;#039;view&amp;#039; , &amp;#039;submit&amp;#039; , &amp;#039;historysubmit&amp;#039; , &amp;#039;purge&amp;#039;]) !== -1) {&lt;br /&gt;
			$( mw.util.addPortletLink(&amp;#039;p-tb&amp;#039;, &amp;#039;#&amp;#039;, &amp;#039;تعداد کلمات&amp;#039;, &amp;#039;t-word-count&amp;#039;, &amp;#039;Calculate word count&amp;#039;) )&lt;br /&gt;
			.click( toggleWordCount );&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
//&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>esfandiari&gt;Nazarzadeh</name></author>
	</entry>
</feed>