مستخدم:Adil Faouzi/cosmetics.js
Documentation for this user script can be added at مستخدم:Adil Faouzi/cosmetics. |
ملاحظة: بعد الحفظ، قد يلزمك إفراغ الكاش لرؤية التغييرات.
//<nowiki>
/**
* هذا السكريبت يقوم بعمليات تجميلية عند الضغط على زر نشر التغييرات
* أو زر أظهر معاينة؛ وذلك فقط عندما يقوم المستخدم بأي تعديل على الصفحة ذاتها
* قائمة التعديلات:
**تصحيح الفاصلة الأجنبية
**إزالة المسافة بين القوسين
**إزالة الفراغات والمسافات المتكررة
**إزالة الأسطر المتكررة
**توحيد عناوين الأقسام في المقالات، كالمراجع، والوصلات الخارجية
**ترتيب التصنيفات
**تعريب خواص الصور
**ترتيب القوالب في أسفل الصفحة
* */
/*ترتيب القوالب في أسفل الصفحة أثناء عرض القراءة فقط*/
if (wgNamespaceNumber === 0 && wgAction === "view"){
var sisterLinks = $('.sisterlinks');
sisterLinks.insertBefore("#catlinks");
var navbox= $('.navbox');
navbox.insertBefore("#catlinks");
var fabox= $('#fa-box, #ga-box');
fabox.insertBefore("#catlinks");
var portal= $('.bandeau-portail');
portal.insertBefore("#catlinks");
var stub= $('.stub');
stub.insertBefore("#catlinks");
}
/*التحقق إذا ما كان المستخدم قد قام بأي تعديل على الصفحة*/
/*التحقق إذا كان المستخدم يعدل في النطاق الرئيسي*/
if (mw.config.get( 'wgNamespaceNumber' ) === 0
&& wgAction === "edit"){
/*هل غير المستخدم أي شيء في نص المقالة؟*/
$('#wpTextbox1').change(function() {
/*عند الضغط على زر الحفظ، أو المعاينة ستتم العمليات*/
$('#wpSave,#wpPreview').click (function(){
run ();
});
});
}
/*الدالة الرئيسية*/
function run (){
var content = $('#wpTextbox1').val();
/*التحقق إذا كان المستخدم لا يعدل في التحويلات وصفحات التوضيح*/
if (!content.match (/\#تحويل/g)
&& !content.match (/\#REDIRECT/g)
&& !content.match (/\{\{توضيح\}\}/g)
&& !wgTitle.match (/توضيح/g)){
content = commaFix (content);
content = arDate (content);
//content = tagging (content);
content = decodeUrl (content);
content = sorting (content);
content = replacing (content);
$('#wpTextbox1').val(content);
}
}
/*تصحيح الفاصلة الأجنبية*/
function commaFix (content){
var commaPattern = content.match(/.{3},.{3}/g);
if (commaPattern) {
for (var i = 0; i < commaPattern.length; i++) {
var is = new RegExp(".*[ا-ي].*");
var num = new RegExp(".*\\d+.*");
/*التحقق أن الفاصلة الأجنبية موجودة داخل نص عربي*/
if (is.test(commaPattern[i]) && !num.test(commaPattern[i])) {
content = content.replace(commaPattern[i],commaPattern[i].replace(/ ,/g, ",").replace(/,/g, ", ").replace (/\s{2,}/g," "));
content = content.replace(commaPattern[i], commaPattern[i].replace(" , ", "، "));
content = content.replace(commaPattern[i], commaPattern[i].replace(" ,", "،"));
content = content.replace(commaPattern[i], commaPattern[i].replace(", ", "، "));
content = content.replace(" , ", ", ");
content = content.replace(" ، ", "، ");
content = fixSpaceComma (content);
}
}
}
return content;
}
/**
* دالة لتعريب التاريخ المنقول من الويكيات الأجنبية
* على سبيل المثال
* يناير 26,
* ستصبح
* 26 يناير
*/
function arDate (content){
var arDate = content.match(/(يناير|فبراير|مارس|أبريل|إبريل|مايو|يونيو|يوليو|أغسطس|سبتمبر|أكتوبر|نوفمبر|ديسمبر) \d{1,2},/g );
if (arDate) {
for (var i = 0; i < arDate.length; i++) {
content = content.replace (arDate[0], arDate[0].match(/\d+/g).map(Number)+" "+arDate[0].replace (/\d{1,2},/g,"").trim());
}
}
return content;
}
function fixSpaceComma (content){
var commaPattern = content.match(/.{3}،.{3}/g);
if (commaPattern) {
for (var i = 0; i < commaPattern.length; i++) {
var num = new RegExp(".*\\d+.*");
if (!num.test(commaPattern[i])) {
content = content.replace(commaPattern[i],commaPattern[i].replace(/ ،/g, "،").replace(/،/g, "، ").replace (/\s{2,}/g," "));
}
}
}
return content;
}
/*جلب الشهر والتاريخ لاستخدامهما في قوالب الصيانة*/
function getMonthYear (){
var months = ["يناير", "فبراير", "مارس", "إبريل", "مايو", "يونيو",
"يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"];
var date = new Date();
var currentDate = months[date.getMonth()]+" "+date.getFullYear();
return currentDate;
}
/*وسم المقالات*/
function tagging (content){
/*وسم المقالات التي لا تحتوي على شريط بوابات*/
if (!content.includes ("{{شريط بوابات") && !content.includes ("مقالات بحاجة لشريط بوابات")
&& !$("#firstHeading").text().includes ("تعديل قسم")){
content = content + "\n[[تصنيف:مقالات بحاجة لشريط بوابات]]\n";
}
/*وسم المقالات التي لا تحتوي على وصلات داخلية*/
if (!content.includes ("\[\\[") && !content.includes ("{{نهاية مسدودة")
&& !$("#firstHeading").text().includes ("تعديل قسم")){
content = "{{نهاية مسدودة|"+getMonthYear()+"}}\n"+content;
}
/*وسم المقالات التي لا تحتوي تصانيف*/
if (!content.includes ("\[\\[تصنيف:") && !content.includes ("{{غير مصنفة")
&& !$("#firstHeading").text().includes ("تعديل قسم")){
content = content.replace ("[[تصنيف:","{{غير مصنفة|"+getMonthYear()+"}}\n"+"[[تصنيف:");
}
return content;
}
/*تدقيق إملائي*/
function spellCheck (content){
content = content.replace (/إست.{3}/g, function replacer(match){
return match.replace ("إست","است");
}); //استفعال
content = content.replace (" الى ", " إلى ");
content = content.replace (" فى ", " في ");
content = content.replace (" اول ", " أول ");
content = content.replace (" اكثر ", " أكثر ");
content = content.replace (" امريكي ", " أمريكي ");
content = content.replace (" اول ", " أول ");
content = content.replace (" إثنان ", " اثنان ");
content = content.replace (" إمرأة ", " امرأة ");
content = content.replace (" إبنة ", " ابنة ");
content = content.replace (" إبن ", " ابن ");
content = content.replace (" إثنتان ", " اثنتان ");
content = content.replace (" إسم ", " اسم ");
}
/*استبدالات*/
function replacing (content){
content = content.replace("/ ( /g", " (");
content = content.replace("/ . /g", ". ");
content = content.replace("/ .\n/g", ".");
content = content.replace("/ ) /g", ") ");
content = content.replace("/\[file:/g", "[ملف:");
content = content.replace("/\|thumbnail/g", "|تصغير");
content = content.replace("/\|thumb/g", "|تصغير");
content = content.replace("/\|left\|/g", "|يسار|");
content = content.replace("/\|right\|/g", "|يمين|");
content = content.replace("/\|center\|/g", "|مركز|");
content = content.replace("==اقرأ أيضاً==", "==انظر أيضًا==");
content = content.replace("==طالع أيضاً==", "==انظر أيضًا==");
content = content.replace("==مقالات متعلقة==", "==انظر أيضًا==");
content = content.replace("==صفحات ذات صلة==", "==انظر أيضًا==");
content = content.replace("==See also==", "==انظر أيضًا==");
content = content.replace("==المصادر==", "==مصادر==");
content = content.replace("==الهوامش==", "==هوامش==");
content = content.replace("==المراجع==", "==مراجع==");
content = content.replace("==روابط خارجية==", "==وصلات خارجية==");
content = content.replace("==مصادر خارجية==", "==وصلات خارجية==");
content = content.replace("/ )./g", ").");
content = content.replace("/ )،/g", ")،");
content = content.replace(/ و /g, " و");
content = content.replace(/ {3,}/g,' ');
content = content.replace(/\{\{قالب:/g, "{{");
content = content.replace(/\[\[Category:/g, "[[تصنيف:");
content = content.replace(/\[\[ /g, "[[");
content = content.replace(/ \]\]/g, "]]");
content = content.replace(/<references \/>/g, "{{مراجع}}");
content = content.replace(new RegExp('(\n){3,}', 'gim') , '\n\n');
return content;
}
/*ترتيب القوالب في أسفل المقالة، وترتيب التصنيفات*/
function sorting (content){
var cats = content.match(/\[\[تصنيف:.{3,}\]\]/g);
if (cats){
for (var i=0;i<cats.length;i++){
content = content.replace (cats[i],"");
}
cats.sort();
for (var i=0;i<cats.length;i++){
content = content +cats[i]+"\n";
}
}
var portal = content.match (/\{\{شريط بوابات.{1,}\}\}/g);
var stub = content.match (/\{\{بذرة.{0,}\}\}/g);
var auth = content.match (/\{\{ضبط استنادي{0,}\}\}/g);
var finals = "";
if (auth){
for (var i=0;i<auth.length;i++){
finals = finals + auth[i]+"\n";
content = content.replace (auth[i],"");
}
}
if (portal){
for (var i=0;i<portal.length;i++){
finals = finals + portal[i]+"\n";
content = content.replace (portal[i],"");
}
}
if (stub){
for (var i=0;i<stub.length;i++){
finals = finals + stub[i]+"\n";
content = content.replace (stub[i],"");
}
}
content = content.replace ("[[تصنيف:",finals+"\n[[تصنيف:");
return content;
}
/*جلب الوصلات داخل المقالة*/
function getLinks (content){
}
/*تخصيص البذور، والبوابات*/
function specify (cats){
}
/*فك تشفير الروابط العربية*/
function decodeUrl (content){
var urlRegex = content.match(/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g);
if (urlRegex){
for (var i=0;i<urlRegex.length;i++){
content = content.replace(urlRegex[i],decodeURIComponent(urlRegex[i]).replace (/\s/g,"%20").replace (/\"/g,"%22")
.replace (/\]/g,"%5D").replace (/\[/g,"%5B"));
}
}
return content;
}
//</nowiki>