ব্যবহারকারী:Md.Farhan Mahmud/notice.js

উইকিউক্তি, মুক্ত উক্তি-উদ্ধৃতির সংকলন থেকে

লক্ষ্য করুন: প্রকাশ করার পর, পরিবর্তনগুলো দেখতে আপনাকে আপনার ব্রাউজারের ক্যাশে পরিষ্কার করার প্রয়োজন হতে পারে।

  • ফায়ারফক্স / সাফারি: পুনরায় লোড-এ ক্লিক করার সময় শিফট টিপে ধরে রাখুন, অথবা হয় Ctrl-F5 বা Ctrl-R টিপুন (ম্যাকে ⌘-R টিপুন)
  • গুগল ক্রোম: Ctrl-Shift-R (ম্যাকে ⌘-Shift-R) টিপুন
  • ইন্টারনেট এক্সপ্লোরার / এজ: Ctrl ধরে রাখা অবস্থায় Refresh-এ ক্লিক করুন, অথবা Ctrl-F5 টিপুন
  • অপেরা: Ctrl-F5 টিপুন।
//লেখক:মোহাম্মদ মারুফ 
//

(function () {
  var alertValue = "আপনি এই পাতায় দ্রুত অপসারণ ট্যাগ যোগ করেছেন এবং যিনি এই পাতাটি তৈরি করেছেন তাকে এই বিজ্ঞপ্তি পাঠানো হয়েছে। এই স্ক্রিপ্টটে কোন সমস্যা পরিলক্ষিত হলে Md.Farhan_Mahmud-এর আলাপ পাতায় বার্তা দিন, ধন্যবাদ!";
  if (typeof window.mr === "undefined") {
    window.mr = new Object();
  }
  var This = this.prototype;
  This = {
    //looking for the page creator
    creatorLookOut: function (callbacks) {
      var params = {};
      var ts = new Morebits.wiki.page(mw.config.get("wgPageName"));
      ts.setFollowRedirect(true); // for NPP, and also because redirects are ineligible for PROD
      ts.setLookupNonRedirectCreator(true); // Look for author of first non-redirect revision
      //console.log("creatorLookOut");
      ts.lookupCreation(
        function (pageobj) {
          params.initialContrib = pageobj.getCreator();
          params.creation = pageobj.getCreationTimestamp();
          /*         pageobj
          .getStatusElement()
          .info(params.initialContrib + " এই পাতাটি তৈরি করেছেন");*/
          callbacks(params);
        },
        function (pageobj) {
          pageobj.getStatusElement().info("কোন প্রণেতা পাওয়া যায়নি");
        }
      );
    },
    //choise message
    choiseMsg: function (
      reason,
      creator,
      creation,
      pagename,
      sender,
      template,
      prefarence
    ) {
      var strObj = {
        string: "",
        template: template,
        reason: reason,
        color: "black",
        days: 0,
        creator: creator,
      };
      var prefarence = typeof prefarence === "object" && !{} ? prefarence : {};
      //console.log("choiseMsg");
      if (reason && pagename && creator && creation && sender && template) {
        //counting on date
        var creationDate = This.countDay(creation);
        //if the page is created more than 7 days ago
        if (creationDate.days > 7) {
          strObj.color = "red";
        } else if (creationDate.days > 3) {
          strObj.color = "orange";
        } else {
          strObj.color = "black";
        }
        //creation day count translation
        creationDate.days =
          creationDate.days > 0
            ? '<span style="color:' +
              strObj.color +
              '">' +
              This.translateNumbers(creationDate.days) +
              " দিন পূর্বে </span>"
            : "দিন"; //if the page is created today
        //string operation
        var finalStr = `<nowiki>{{subst:টেমপ্লেট:${strObj.template}|reason=${strObj.reason}|page=${pagename}|creator=${strObj.creator}|color=${strObj.color}|days=${creationDate.days}|date=${creationDate.date}|${strObj.string}|sign=~~~~}}</nowiki>`;
        return finalStr;
      } else {
        if (!pagename) {
          alertValue = "পাতার নাম পাওয়া যায়নি";
        } else if (!creator) {
          alertValue = "কোনো প্রণেতা পাওয়া যায়নি";
        } else if (!creation) {
          alertValue = "পাতা প্রকাশের সময় পাওয়া যায়নি";
        } else if (!sender) {
          alertValue = "আপনার নাম পাওয়া যায়নি, সম্ভবত আপনি লগ আউট করেছেন";
        } else if (!reason) {
          alertValue = "ট্যাগ সঠিকভাবে আসেনি";
        } else if (!template) {
          throw new Error("নোটিশ পাঠানো লেটের নাম উল্লেখ করেননি");
        } else {
          alertValue = "নোটিশ পাঠানো যায়নি";
        }
      }
    },
    //main function to exicute
    main: function (
      creator,
      creation,
      sender,
      reason,
      pagename,
      template,
      prefarence
    ) {
      //suggestion for the creator
      var rawtext = "";
      rawtext = This.choiseMsg(
        reason,
        creator,
        creation,
        pagename,
        sender,
        template,
        prefarence
      )
        ? This.choiseMsg(
            reason,
            creator,
            creation,
            pagename,
            sender,
            template,
            prefarence
          )
        : "";
      //console.log("main");
      if (rawtext.trim() !== "") {
        //notify user
        var notifytext =
            "\n\n" + rawtext.replace("<nowiki>", "").replace("</nowiki>", ""),
          //edit summary
          editsummary =
            "[[ব্যবহারকারী:" +
            sender +
            "|" +
            sender +
            "]] [[ব্যবহারকারী:Md.Farhan Mahmud/notice.js|নোটিশ]] সরঞ্জামটি ব্যবহার করে [[ব্যবহারকারী:" +
            creator +
            "|" +
            creator +
            "]] এর আলাপ পাতায় " +
            prefarence.summary;
        //sidebar button
        //putting user talkpage info here
        if (creator) {
          var usertalkpage = new Morebits.wiki.page(
            "ব্যবহারকারী আলাপ:" + creator,
            "মূল অবদানকারীকে জানানো হচ্ছে (" + creator + ")"
          );
          usertalkpage.setAppendText(notifytext);
          usertalkpage.setEditSummary(editsummary);
          //usertalkpage.setChangeTags("twinkle"); //বার্তাপ্রদান
          usertalkpage.setCreateOption("recreate");
          usertalkpage.setWatchlist("1 month");
          usertalkpage.setFollowRedirect(true, false);
          usertalkpage.append(
            function onNotifySuccess() {
              // add this nomination to the user's userspace log, if the user has enabled it
              /* if (params.lognomination) {
            Twinkle.speedy.callbacks.user.addToLog(params, initialContrib);
          } */ // যদি কোনোদিন টুইংকেল আসে তাহলে এটা আবার চালু করতে হবে
              alertValue = "সফলভাবে নোটিশ পাঠানো হয়েছে";
            },
            function onNotifyError() {
              /*           // if user could not be notified, log nomination without mentioning that notification was sent
          if (params.lognomination) {
            var usl = new Morebits.userspaceLogger(
              Twinkle.getPref("speedyLogPageName")
            );
          } */ // যদি কোনোদিন টুইংকেল আসে তাহলে এটা আবার চালু করতে হবে
              alertValue = "নোটিশ পাঠানো যায়নি";
            }
          );
        }
      } else {
        alertValue = "নোটিশ পাঠানো যায়নি";
      }
    },
    //counting on date
    countDay: function (date) {
      var today = new Date();
      var diff = today - new Date(date);
      var diffArray = new Date(date);
      var monthArray = [
        "জানুয়ারি",
        "ফেব্রুয়ারি",
        "মার্চ",
        "এপ্রিল",
        "মে",
        "জুন",
        "জুলাই",
        "আগস্ট",
        "সেপ্টেম্বর",
        "অক্টোবর",
        "নভেম্বর",
        "ডিসেম্বর",
      ];
      var diffObj = {
        date:
          This.translateNumbers(diffArray.getDate()) +
          " " +
          monthArray[diffArray.getMonth()] +
          ", " +
          This.translateNumbers(diffArray.getFullYear()),
        days: Math.floor(diff / (1000 * 60 * 60 * 24)),
      };
      //console.log("countDay");
      return {
        days: diffObj.days,
        date: diffObj.date,
      };
    },
    //translate english numbers into bengali numbers
    translateNumbers: function (number) {
      var num = number.toString();
      var result = "";
      //console.log("translateNumbers");
      result = num
        .replace(/0/gi, "০")
        .replace(/1/gi, "১")
        .replace(/2/gi, "২")
        .replace(/3/gi, "৩")
        .replace(/4/gi, "৪")
        .replace(/5/gi, "৫")
        .replace(/6/gi, "৬")
        .replace(/7/gi, "৭")
        .replace(/8/gi, "৮")
        .replace(/9/gi, "৯");
      return result;
    },
  };
  mr.notice = function (reason, template, prefarence) {
    //console.log(reason);
    var reason = typeof reason === "string" && reason.trim() ? reason : false;
    var template =
      typeof template === "string" && template.trim() ? template : false;
    var prefarence =
      typeof prefarence === "object" && prefarence ? prefarence : {};
    prefarence.summary =
      typeof prefarence.summary === "string" && prefarence.summary.trim()
        ? prefarence.summary
        : "নোটিশ পাঠিয়েছেন";
    if (reason && template) {
      This.creatorLookOut(function (params) {
        var creator = params.initialContrib;
        var creation = params.creation;
        var sender = mw.config.get("wgUserName");
        //page name
        var pagename = mw.config.get("wgPageName").replace(/_/g, " ");
        This.main(
          creator,
          creation,
          sender,
          reason,
          pagename,
          template,
          prefarence
        );
      });
    } else {
      if (!reason) {
        throw new Error("বার্তা প্রদানের কারণ উল্লেখ করেননি");
      } else if (!template) {
        throw new Error("টেমপ্লেটের নাম উল্লেখ করেননি");
      }
    }
    return alertValue;
  };
})();