[DP] PlanetDP Forum Konuları

Planetdp portaldaki yapım sayfalarına forumdaki ilgili konuları ekler.

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         [DP] PlanetDP Forum Konuları
// @description  Planetdp portaldaki yapım sayfalarına forumdaki ilgili konuları ekler.
// @version      1.1
// @author       nht.ctn
// @namespace    https://github.com/nhtctn
// @icon         data:image/png;base64,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

// @include      *://planetdp.org/title/*
// @include      *://www.planetdp.org/title/*

// @grant        GM_addStyle
// @grant        GM_xmlhttpRequest
// @grant        GM_getValue
// @grant        GM_setValue

/* global $ */
// ==/UserScript==
/*jshint esversion: 6 */

(function() {
    'use strict';

    // Bir sayfa için çekilen verinin ne kadar zamanda bir tazeleneceği [X, milisaniye / saniye / dakika / saat / gün / hafta / ay / yıl]
    var cacheTime = millisecondConverter(1, "saat");
    // Yanıt sayısı ve açılma tarihini gösterip göstermeme. [true / false]
    var detailOpt = true;
	// Yapımın sadece bahsedildiği konuları gösterip göstermeme. [true / false]
	var metionOpt = true;


    // Geliştirme için notlar: ===============================
    // Şablon için: document.querySelector('.ipsComposeArea_dummy').click();
    // =======================================================


    // Yapım türü ve forum id eşleştirmesi.

    // Bilgiler:       type: Sohbet, Çeviri, Çeviri İstek, Aktivite
    //                 ft:   forum, topic
    //                 url:
    //                 main: Film, Dizi
    //                 sub:  Genel, Uzak Doğu, Anime, Belgesel, Yerli, DpID -// Portalda önerdiğim sistem de buydu bu arada :/ DpID hariç tabii.

    var forum = [
		// Sinema
		{type: "Sohbet", ft: "topic", id: 14,  title: "Bugün Hangi Filmi İzlediniz?",         url: "14-bugün-hangi-filmi-izlediniz/",           main: ["Film"], sub: ["Genel", "Uzak Doğu", "Belgesel"]},
		{type: "Sohbet", ft: "forum", id: 15,  title: "Sinema Haberleri",                     url: "15-sinema-haberler/",                       main: ["Film"], sub: ["Genel", "Belgesel"]},
		{type: "Sohbet", ft: "forum", id: 236, title: "Asya Film Haberleri",                  url: "236-asya-film-haberleri/",                  main: ["Film"], sub: ["Uzak Doğu"]},
		{type: "Sohbet", ft: "forum", id: 17,  title: "Vizyondaki Filmler",                   url: "17-vizyondaki-filmler/",                    main: ["Film"], sub: ["Genel", "Yerli", "Belgesel"]},
		{type: "Sohbet", ft: "forum", id: 18,  title: "Gelecek Program, Pek Yakında",         url: "18-gelecek-program-pek-yakında/",           main: ["Film"], sub: ["Genel", "Yerli", "Belgesel"]},
		{type: "Sohbet", ft: "forum", id: 19,  title: "Gösterimden Kalkan Filmler Arşivi",    url: "19-gösterimden-kalkan-filmler-arşivi/",     main: ["Film"], sub: ["Genel", "Uzak Doğu", "Yerli", "Belgesel"]},
		{type: "Sohbet", ft: "forum", id: 224, title: "TV Filmleri",                          url: "224-tv-filmleri/",                          main: ["Film"], sub: ["Genel", "Belgesel"]},
		{type: "Sohbet", ft: "forum", id: 20,  title: "Film İncelemeleri",                    url: "20-film-incelemeleri/",                     main: ["Film"], sub: ["Genel", "Uzak Doğu", "Belgesel"]},
		{type: "Sohbet", ft: "forum", id: 28,  title: "Yerli Film İncelemeleri",              url: "28-yerli-film-incelemeleri/",               main: ["Film"], sub: ["Yerli"]},
		{type: "Sohbet", ft: "forum", id: 21,  title: "Eleştiri & Yorum",                     url: "21-eleştiri-yorum/",                        main: ["Film"], sub: ["Genel", "Yerli", "Belgesel"]},
		{type: "Sohbet", ft: "forum", id: 22,  title: "Unutulmazlar",                         url: "22-unutulmazlar/",                          main: ["Film"], sub: ["Genel", "Yerli", "Belgesel"]},

		// Dizi
		{type: "Sohbet", ft: "topic", id: 17,  title: "Bugün Hangi Dizi ve Dizi Bölümlerini İzlediniz?", url: "17-bugün-hangi-dizi-ve-dizi-bölümlerini-izlediniz/", main: ["Dizi"], sub: ["Genel", "Uzak Doğu", "Belgesel"]},
		{type: "Sohbet", ft: "forum", id: 151, title: "Gösterimi Devam Eden Diziler",         url: "151-gösterimi-devam-eden-diziler/",         main: ["Dizi"], sub: ["Genel", "Belgesel"]},
		{type: "Sohbet", ft: "forum", id: 238, title: "Asya Dizileri",                        url: "238-asya-dizileri/",                        main: ["Dizi"], sub: ["Uzak Doğu"]},
		{type: "Sohbet", ft: "forum", id: 32,  title: "Yerli Diziler",                        url: "32-yerli-diziler/",                         main: ["Dizi"], sub: ["Yerli"]},
		{type: "Sohbet", ft: "forum", id: 152, title: "Gelecek Dönemde Yayınlanacak Diziler", url: "152-gelecek-dönemde-yayınlanacak-diziler/", main: ["Dizi"], sub: ["Genel", "Belgesel"]},
		{type: "Sohbet", ft: "forum", id: 237, title: "Gelecek Asya Dizileri",                url: "237-gelecek-asya-dizileri/",                main: ["Dizi"], sub: ["Uzak Doğu"]},
		{type: "Sohbet", ft: "forum", id: 219, title: "Mini Seriler",                         url: "219-mini-seriler/",                         main: ["Dizi"], sub: ["Genel", "Belgesel"]},
		{type: "Sohbet", ft: "forum", id: 153, title: "Sonlanmış Diziler",                    url: "153-sonlanmış-diziler/",                    main: ["Dizi"], sub: ["Genel", "Belgesel"]},
		{type: "Sohbet", ft: "forum", id: 226, title: "Final Yapanlar",                       url: "226-final-yapanlar/",                       main: ["Dizi"], sub: ["Genel"]},
		{type: "Sohbet", ft: "forum", id: 227, title: "İptal Edilenler",                      url: "227-iptal-edilenler/",                      main: ["Dizi"], sub: ["Genel"]},
		{type: "Sohbet", ft: "forum", id: 241, title: "Sonlanmış Asya Dizileri",              url: "241-sonlanmış-asya-dizileri/",              main: ["Dizi"], sub: ["Uzak Doğu"]},

		// Diziye Özel Forumlar
		{type: "Sohbet", ft: "forum", id: 126, title: "Agents of S.H.I.E.L.D.",               url: "126-agents-of-shield/",                     main: ["Dizi"], sub: ["dp2235"]},
		{type: "Sohbet", ft: "forum", id: 127, title: "Arrow",                                url: "127-arrow/",                                main: ["Dizi"], sub: ["dp3927"]},
		{type: "Sohbet", ft: "forum", id: 128, title: "Doctor Who",                           url: "128-doctor-who/",                           main: ["Dizi"], sub: ["dp12322"]},
		{type: "Sohbet", ft: "forum", id: 129, title: "Game of Thrones",                      url: "129-game-of-thrones/",                      main: ["Dizi"], sub: ["dp16274", "dp98690"]},
		{type: "Sohbet", ft: "forum", id: 130, title: "Gotham",                               url: "130-gotham/",                               main: ["Dizi"], sub: ["dp17412"]},
		{type: "Sohbet", ft: "forum", id: 131, title: "Homeland",                             url: "131-homeland/",                             main: ["Dizi"], sub: ["dp54404"]},
		{type: "Sohbet", ft: "forum", id: 125, title: "Legion",                               url: "125-legion/",                               main: ["Dizi"], sub: ["dp54351"]},
		{type: "Sohbet", ft: "forum", id: 133, title: "Prison Break",                         url: "133-prison-break/",                         main: ["Dizi"], sub: ["dp35724", "dp35723"]},
		{type: "Sohbet", ft: "forum", id: 134, title: "Shameless",                            url: "134-shameless/",                            main: ["Dizi"], sub: ["dp39406"]},
		{type: "Sohbet", ft: "forum", id: 136, title: "Supernatural",                         url: "136-supernatural/",                         main: ["Dizi"], sub: ["dp42140"]},
		{type: "Sohbet", ft: "forum", id: 137, title: "The Big Bang Theory",                  url: "137-the-big-bang-theory/",                  main: ["Dizi"], sub: ["dp43687"]},
		{type: "Sohbet", ft: "forum", id: 138, title: "The Flash",                            url: "138-the-flash/",                            main: ["Dizi"], sub: ["dp44890"]},
		{type: "Sohbet", ft: "forum", id: 140, title: "True Detective",                       url: "140-true-detective/",                       main: ["Dizi"], sub: ["dp49990"]},
		{type: "Sohbet", ft: "forum", id: 141, title: "The Walking Dead",                     url: "141-the-walking-dead/",                     main: ["Dizi"], sub: ["dp48410", "dp95039"]},
		{type: "Sohbet", ft: "forum", id: 142, title: "The X-Files",                          url: "142-the-x-files/",                          main: ["Dizi"], sub: ["dp48644"]},
		{type: "Sohbet", ft: "forum", id: 143, title: "Westworld",                            url: "143-westworld/",                            main: ["Dizi"], sub: ["dp52252"]},
		{type: "Sohbet", ft: "forum", id: 145, title: "Breaking Bad",                         url: "145-breaking-bad/",                         main: ["Dizi"], sub: ["dp6992"]},
		{type: "Sohbet", ft: "forum", id: 146, title: "Dexter",                               url: "146-dexter/",                               main: ["Dizi"], sub: ["dp11707"]},
		{type: "Sohbet", ft: "forum", id: 147, title: "Friends",                              url: "147-friends/",                              main: ["Dizi"], sub: ["dp15877"]},
		{type: "Sohbet", ft: "forum", id: 148, title: "Lost",                                 url: "148-lost/",                                 main: ["Dizi"], sub: ["dp27780"]},

		// Altyazı
		{type: "Aktivite",     ft: "forum", id: 35,   title: "Türk Sineması Aktiviteleri",    url: "35-türk-sineması-aktiviteleri/",            main: ["Film", "Dizi"], sub: ["Yerli"]},
		{type: "Çeviri İstek", ft: "forum", id: 36,   title: "Çeviri İstek",                  url: "36-çeviri-istek/",                          main: ["Film", "Dizi"], sub: ["Genel", "Uzak Doğu", "Anime", "Belgesel"]},
		{type: "Çeviri İstek", ft: "topic", id: 5929, title: "Sahipsiz Kalmış Diziler",       url: "5929-sahipsiz-kalmış-diziler/",             main: ["Dizi"],         sub: ["Genel"]},
		{type: "Çeviri",       ft: "forum", id: 39,   title: "Film Çevirileri",               url: "39-film-çevirileri/",                       main: ["Film"],         sub: ["Genel"]},
		{type: "Çeviri",       ft: "forum", id: 40,   title: "Dizi Çevirileri",               url: "40-dizi-çevirileri/",                       main: ["Dizi"],         sub: ["Genel"]},
		{type: "Çeviri",       ft: "forum", id: 239,  title: "Anime Film Çevirileri",         url: "239-anime-film-çevirileri/",                main: ["Film"],         sub: ["Anime"]},
		{type: "Çeviri",       ft: "forum", id: 240,  title: "Anime Dizi Çevirileri",         url: "240-anime-dizi-çevirileri/",                main: ["Dizi"],         sub: ["Anime"]},
		{type: "Çeviri",       ft: "forum", id: 42,   title: "Belgesel Çevirileri",           url: "42-belgesel-çevirileri/",                   main: ["Film"],         sub: ["Belgesel"]},
		{type: "Çeviri",       ft: "forum", id: 234,  title: "Asya Film Çevirileri",          url: "234-asya-film-çevirileri/",                 main: ["Film"],         sub: ["Uzak Doğu"]},
		{type: "Çeviri",       ft: "forum", id: 235,  title: "Asya Dizi Çevirileri",          url: "235-asya-dizi-çevirileri/",                 main: ["Dizi"],         sub: ["Uzak Doğu"]},
		{type: "Aktivite",     ft: "forum", id: 43,   title: "Çeviri Aktiviteleri",           url: "43-çeviri-aktiviteleri/",                   main: ["Film", "Dizi"], sub: ["Genel", "Uzak Doğu", "Belgesel"]},
		{type: "Aktivite",     ft: "topic", id: 178,  title: "Anime Çeviri Aktiviteleri",     url: "178-anime-çeviri-aktiviteleri/",            main: ["Dizi"],         sub: ["Anime"]},
		{type: "Aktivite",     ft: "topic", id: 9485, title: "Anime Çeviri Aktiviteleri",     url: "9485-anime-çeviri-aktiviteleri/",           main: ["Film"],         sub: ["Anime"]},

		// Anime
		{type: "Sohbet", ft: "topic", id: 79,  title: "En Son Hangi Animeyi İzlediniz?",      url: "79-en-son-hangi-animeyi-izlediniz/",        main: ["Film", "Dizi"], sub: ["Anime"]},
		{type: "Sohbet", ft: "forum", id: 87,  title: "Anime Gelecek Program",                url: "87-anime-gelecek-program/",                 main: ["Film", "Dizi"], sub: ["Anime"]},
		{type: "Sohbet", ft: "forum", id: 88,  title: "Gösterime Girmiş/Tamamlanmış Animeler",url: "88-gösterime-girmiştamamlanmış-animeler/",  main: ["Film", "Dizi"], sub: ["Anime"]},
		{type: "Sohbet", ft: "forum", id: 89,  title: "Anime İncelemeleri",                   url: "89-anime-incelemeleri/",                    main: ["Film", "Dizi"], sub: ["Anime"]},

		// Animeye Özel Forumlar
		{type: "Sohbet", ft: "forum", id: 91,  title: "One Piece",                            url: "91-one-piece/",                             main: ["Film", "Dizi"], sub: ["dp51902"]},
		{type: "Sohbet", ft: "forum", id: 92,  title: "Naruto",                               url: "92-naruto/",                                main: ["Film", "Dizi"], sub: ["dp31731", "dp31734", "dp55543"]},
		{type: "Sohbet", ft: "forum", id: 93,  title: "Fairy Tail",                           url: "93-fairy-tail/",                            main: ["Film", "Dizi"], sub: ["dp14635"]},
		{type: "Sohbet", ft: "forum", id: 94,  title: "Bleach",                               url: "94-bleach/",                                main: ["Film", "Dizi"], sub: ["dp6299"]},
		{type: "Sohbet", ft: "forum", id: 95,  title: "Meitantei Conan",                      url: "95-meitantei-conan/",                       main: ["Film", "Dizi"], sub: ["dp29551"]},
		{type: "Sohbet", ft: "forum", id: 96,  title: "Gintama",                              url: "96-gintama/",                               main: ["Film", "Dizi"], sub: ["dp16914"]},
		{type: "Sohbet", ft: "forum", id: 97,  title: "Hunter X Hunter",                      url: "97-hunter-x-hunter/",                       main: ["Film", "Dizi"], sub: ["dp19995", "dp19996"]},
		{type: "Sohbet", ft: "forum", id: 221, title: "Universal Century",                    url: "221-universal-century/",                    main: ["Film", "Dizi"], sub: [""]},
		{type: "Sohbet", ft: "forum", id: 222, title: "Paralel Evrenler",                     url: "222-paralel-evrenler/",                     main: ["Film", "Dizi"], sub: [""]},

    ];

    var excludedForum = [
        {type: "archive", id: 117, title: "Deneme",                    url: "117-deneme/"},
    ];

    // Yapım sayfası için gerekli HTML ve CSS'ler.
    var forumHtml = `
<section class="forum_main" id="forumdiv">
    <h1>
        <i class="fa fa-comments" aria-hidden="true"></i> Forum Konuları
        <a id="forumButton">FORUMDA KONU AÇ<i class="fa fa-caret-down" id="caret-down"></i></a>
        <div style="position: relative;">
            <ul class="forum-dropdown unselectable">
            </ul>
        </div>
    </h1>
    <div class="exactTopicContainer"></div>
    <div class="mentionedTopicContainer"></div>
</section>
`;

    var forumCss = `
.forumCol { display: grid; grid-template-columns: repeat(6, 1fr); grid-template-rows: 1fr; grid-column-gap: 0px; grid-row-gap: 0px; align-items: center; padding: 0 8px; margin-bottom: 3px; border-radius: 2px;}

.div1 { grid-area: 1 / 1 / span 1 / span 3; text-align:left;  align-items: center; padding: 0 4px; display: flex; position: relative;}
.div2 { grid-area: 1 / 4 / span 1 / span 2; text-align:right; align-items: center; padding: 0 4px; }
.div3 { grid-area: 1 / 6 / span 1 / span 1; text-align:right; align-items: center; padding: 0 4px; }

.div2 a, .div3 a { color: inherit; cursor: pointer; }

.colColor:nth-of-type(2n+1) { background-color: #d8d8d8; }
.colColor:nth-of-type(2n) { background-color: #f1efed; }
.colColor:hover { background-color:#ffffe0; }

.topicThumb { height: 50px; width: 50px; margin: 4px 10px 4px 18px; background-size: cover; background-position: center center; }
.defaultThumb_Dizi { background-image: url(https://forum.planetdp.org/uploads/monthly_2018_02/topicthumbnail.png.da974cf5f9ef0f494f4728dff92febde.png); }
.defaultThumb_Film { background-image: url(https://i.ibb.co/MP8wvPJ/film-default2.png); }
#caret-down {font-size: 15px;color: #fff;vertical-align: middle;margin-left: 15px;}

.autor-avatar {
    display: inline-block;
    height: 20px;
    width: 20px;
    border-radius: 50%;
    vertical-align: sub;
    margin: 0 8px 0 0;
    background-size: cover;
    background-position: center center;
}

.forum_main {
    width: 100%;
    float: left;
    background: #fff;
    margin: 30px 0 0 0;
    padding: 25px;
}
.forum_main h1 {
    color: #000;
    font-size: 24px;
    font-weight: bold;
    margin: 0 0 20px 0;
}

.topicUrl {
    display: flex;
    align-items: center;
}
.forumBadge {
    height: 17px;
    border-radius: 4px;
    margin-right: 5px;
    color: white;
    font-weight: 500;
    padding: 0 8px;
    font-size: 10px;
}
.readStatus {
    font-size: 12px!important;
    color: #ff6d00c4;
    position: absolute;
    left: -2px;
    top: 50%;
    transform: translateY(-40%);
}
.readedTopic .readStatus {
    color: #74797dd9;
}
.readedTopic b {
    font-weight: 600;
}

a#forumButton:hover {
    background-color: #ff6d00;
}
a#forumButton {
    background-color: #3f51b5;
    color: #fff;
    font-size: 14px;
    font-weight: 400;
    padding: 10px 11px 10px 11px;
    border-radius: 5px;
    float: right;
    margin: -5px 0 0 0;
    cursor: pointer;
}
.forum-dropdown {
    display: none;
    list-style: none;
    position: absolute;
    z-index: 100;
    width: 166px;
    text-align: left;
    right: 0px;
    left: auto;
    top: 6px;
}
.unselectable {
	-webkit-user-select: none; /* Safari */
	-moz-user-select: none; /* Firefox */
	-ms-user-select: none; /* IE10+/Edge */
	user-select: none; /* Standard */
}
.forum-dropdown li {
    height: 32px;
    line-height: 30px!important;
    box-shadow: none;
    border: none;
    margin-top: 1px;
    text-align: center;
    list-style: none;
}
.forum-dropdown > li {
    background-color: #ff6d00;
}
.forum-dropdown > li a {
    font-size: 16px;
    height: 32px;
    color: #fff!important;
    text-decoration: none!important;
    display: block!important;
    cursor: pointer;
    font-weight: 600;
    float: none!important;
    margin: 0!important;
    transform: none!important;
    -webkit-transform: none!important;
    transition: none!important;
    -webkit-transition: none!important;
}
.forum-dropdown > li a:hover {
    text-shadow: 0px 0px 1.5px white;
}
.forum-drop-show {
    display: inherit!important;
}
.forum-dropdown > li > ul {
    display: none;
    flex-direction: column;
    width: max-content;
    right: 0;
    position: absolute;
    z-index: 101;
}
.forum-dropdown > li > ul > li {
    min-width: 180px;
    background-color: brown;
    padding: 0 10px;
}
.sublist-drop-show {
    display: flex!important;
}

/* MOBİL GÖRÜNÜM */
@media only screen and (max-width: 767px) and (min-width: 320px){
    .forum_main {padding: 25px 15px;}
    .forum_main h1 {font-size: 18px !important;}

	.readStatus {display: none!important;}
	.topicThumb {margin: 0 10px 0 0;}
    a#forumButton {padding: 4px 6px 3px 6px; font-size: 12px; margin:auto;}

    .forumCol {display: flex; flex-wrap: wrap; flex-direction: column; align-items: center; padding: 8px; margin-bottom: 3px; width: 100%;}

    .div1 {display: inline-flex; width: 100%; text-align: left;}
    .div2 {display: inline-flex; width: 100%; text-align: end;}
    .div3 {display: inline-flex; width: 100%; text-align: end;}

    #date {display: none;}
    #comments {display: none;}
	.mentionCol #comments {display: block;}
	.mentionCol .div3 {display: none;}

    .aName {flex: auto; margin-right: 10px;}
    .tName {flex: auto; margin-bottom: 5px; font-size: 15px;}
    #autor {font-weight: normal !important;}
    #topicUrl {font-size: 15px;}
    .autor-avatar {box-shadow: 1px 1px 5px black;}
    .forum-dropdown {top: 2px;}
}
`;
    var forumCss_dark = `
.forum_main { background: #2a2a2a!important; }
.forum_main h1 { color: #ccc!important; }

.colColor:nth-of-type(2n+1) { background-color: #14141452!important; }
.colColor:nth-of-type(2n) { background-color: #2e2e2e!important; }
.colColor:hover { background-color: #1b1b1b!important; }
`;

    // HTML ve CSS'leri uygula.
    document.querySelector('section.section-one').insertAdjacentHTML("afterend", forumHtml);
    GM_addStyle(forumCss);
    $('#dpDarkCss').after('<style id="forumCss_dark">' + forumCss_dark + '</style>');
    darkToggle();
    $('#darkSwitchButton').on("click", function() {darkToggle();} );
    function darkToggle() {
        if ($('#dpDarkCss').attr("disabled")) { $('#forumCss_dark').prop("disabled", "disabled"); }
        else { $('#forumCss_dark').prop("disabled", ""); }
    }

    // Butona tıkladığında menüyü aç/kapa
    document.querySelector('#forumButton').onclick = function() {
        document.querySelector('.forum-dropdown').classList.toggle('forum-drop-show');
        this.querySelector('i.fa').classList.toggle('fa-caret-up');
        this.querySelector('i.fa').classList.toggle('fa-caret-down');
    };

    // Buton dışı bir yere tıklandığında menüyü kapa
    window.onclick = function(event) {
        if (!$(event.target).closest('#forumButton').length && !$(event.target).closest('.forum-dropdown').length && document.querySelector(".forum-dropdown.forum-drop-show")) {
            document.querySelector(".forum-drop-show").classList.remove('forum-drop-show');
            var icon = document.querySelector('#forumButton > i.fa');
            icon.classList.toggle('fa-caret-up');
            icon.classList.toggle('fa-caret-down');
        }
        else if (!$(event.target).closest('#sohbet-sublist').length && document.querySelector('#sohbet-sublist + .sublist-drop-show')) {
            document.querySelector('#sohbet-sublist + .sublist-drop-show').classList.remove('sublist-drop-show');
        }
        else if (!$(event.target).closest('#çeviri-sublist').length && document.querySelector('#çeviri-sublist + .sublist-drop-show')) {
            document.querySelector('#çeviri-sublist + .sublist-drop-show').classList.remove('sublist-drop-show');
        }
        else if (!$(event.target).closest('#çeviri-i̇stek-sublist').length && document.querySelector('#çeviri-i̇stek-sublist + .sublist-drop-show')) {
            document.querySelector('#çeviri-i̇stek-sublist + .sublist-drop-show').classList.remove('sublist-drop-show');
        }
        else if (!$(event.target).closest('#aktivite-sublist').length && document.querySelector('#aktivite-sublist + .sublist-drop-show')) {
            document.querySelector('#aktivite-sublist + .sublist-drop-show').classList.remove('sublist-drop-show');
        }
    };

    // PlanetDP, IMDb ve MAL ID'lerini al.
    var malId = document.querySelector( 'h1 span > a[href*="myanimelist.net/anime"]');
    if (malId != null) {
        malId = malId.href.replace( /.+\/anime\/(\/?\d+)/, "$1");
    }
    var imdbId = document.querySelector( 'div.baba_main_right a[href*="imdb.com/title/"]' );
    if (imdbId != null && imdbId.textContent.length > 2) {
        imdbId = imdbId.href.replace( /.+\/title\/tt(\d+)\/?/, "$1");
    }
    var pageUrl = window.location.href;
    var dpId = pageUrl.match( /planetdp\.org\/title\/.+?dp(\d+)/ )[1];

    // Forumda aranacak terimi belirle.
    var searcText = (malId) ? "%22[mal%20type=anime%20id=" + malId + "]%22" : "%22[imdb=tt" + imdbId + "]%22";

    // Yapımın tipini belirle (Temel: Dizi, Film | Alt: Genel, Anime, Drama, Belgesel, Yerli)
    var mainType = (document.querySelector( '[itemprop="copyrightYear"]').parentElement.querySelector('span > span:first-of-type' ).textContent.search("Dizi") >= 0) ? "Dizi" : "Film";
    var countryInfo = document.querySelector( '[itemprop="countryOfOrigin"]' ).textContent.trim();
    var genreInfo = document.querySelector( '[class*="three"] > [class="abd_value"]' ).textContent.trim();
    var subType = null;
    subType = (document.querySelector( 'h1 span > a[href*="myanimelist.net/anime"]') != null) ? "Anime" : subType;
    subType = (countryInfo.search( /(Türkiye)/i ) >= 0) ? "Yerli" : subType;
    subType = (genreInfo.search( /Belgesel/i ) >= 0) ? "Belgesel" : subType;
    subType = (countryInfo.search( /(ABD|İngiltere)/i ) < 0 && genreInfo.search( /Animasyon/i ) < 0 && countryInfo.search( /(Güney Kore|Japonya|Tayland|Çin|Tayvan|Hong Kong)/i ) >= 0) ? "Uzak Doğu" : subType;
    subType = !(subType) ? "Genel" : subType;

    // Cache'de bilgi yoksa istek atan fonksiyonu çalıştır.
	var topicArray = [];
    var topics = [];
    var d = new Date();
    var currentTime = d.getTime();
    var lastUpdateArray = GM_getValue("cache_time");
    var lastUpdateTime = (lastUpdateArray) ? JSON.parse(lastUpdateArray) : 0;

	// Cache yoksa istek at.
    if (lastUpdateTime[dpId] == null) {
        findTopics(searcText);
    }
    else {
		// Cache varsa eski bilgileri alıp yaz.
        topics = JSON.parse( GM_getValue( "exactCache" ) )[dpId];
        placeTopics(topics);
		if (metionOpt) {
        	topics = JSON.parse( GM_getValue( "mentionedCache" ) )[dpId];
        	placeTopics(topics, "mentioned");
		}

		// Cache var ama kodun başında belirtilen cache süresindenden eskiyse yeni istek at.
		if (currentTime - lastUpdateTime[dpId] > cacheTime) {
        	findTopics(searcText);
		}
    }

    // Kütüphanedeki forum ve konuları bu yapımın türlerini kullanarak süz.
    var forumsForThis = [];
    for( let f = 0; f < forum.length; f++ ){
        if ( forum[f].main.includes(mainType) && ( forum[f].sub.includes(subType) || forum[f].sub.includes("dp" + dpId) ) ) {
            forumsForThis.push(forum[f]);
        }
    }

    // Dropdown menüsünün içini doldur.
    makeTypeDropdowns("Sohbet");
    makeTypeDropdowns("Çeviri");
    makeTypeDropdowns("Çeviri İstek");
    makeTypeDropdowns("Aktivite");

    function makeTypeDropdowns(type) {
        var fa = arrayFilter(forumsForThis, "type", type);
        if (fa.length > 0) {
            var id = type.toLowerCase().replace(" ", "-");
            var inside = '';
            var idParams = "&template=yes&dpid=" + dpId + ( (malId) ? "&malid=" + malId : "&imdbid=tt" + imdbId );
            for (let x = 0; x < fa.length; x++) {
                var url = "https://forum.planetdp.org/index.php?/" + (fa[x].ft == "forum" ? "forum/" + fa[x].url + "&do=add" + idParams : "topic/" + fa[x].url + idParams + "/#replyForm");
                inside += '<li><a href="' + url + '" target="_blank">' + fa[x].title + '</a></li>';
            }
            var outside = '<li><a id="' + id + '-sublist">' + type + '</a><ul class="' + id + '-dropdown">' + inside + '</ul></li>';
            document.querySelector('ul.forum-dropdown').insertAdjacentHTML("beforeend", outside);

            // Butona tıkladığında menüyü aç/kapa
            document.querySelector('#' + id + '-sublist').onclick = function() {
                document.querySelector('.' + id + '-dropdown').classList.toggle('sublist-drop-show');
            };
        }
    }

    function findTopics (search, pageNo) {
        // Eğer birden sayfadan fazla sonuç varsa sayfa no'yu belirlemek için "repeat" değişkeni sakla. Bir sayfada 25 sonuç var.
        pageNo = (pageNo == null) ? 1 : pageNo;
        var offset = pageNo*25;
            GM_xmlhttpRequest({
                method: "GET",
                url: "https://forum.planetdp.org/index.php?/search/&q=" + search + "&page=" + pageNo,
                onload: function(response) {
                    var json = response.responseText;
                    var htmlObj = $(json);
                    var page = htmlObj.find('[data-role="resultsArea"]')[0];
                    var lang = htmlObj.find('.ipsMenu_itemChecked button[name="id"]')[0].value == 1 ? "eng" : "tr";

                    // Foruma giriş yapılmadıysa veya bir sorun varsa portala uyarı ekle.
                    if (page == null) {
                        $('.exactTopicContainer').html('Konuların çekilmesi için foruma giriş yapmanız gerekir. Giriş yapmış olmanıza rağmen bunu görüyorsanız bir hata var demektir. Eklenti yazarı ile iletişime geçin.');
                    }

                    // Sonuçları ayıkla.
                    var topics = page.querySelectorAll('.ipsStreamItem_header .ipsStreamItem_title');
                    for (let x = 0; x < topics.length; x++) {
                        // Konunun bilgilerini ayrıştır ve "topicArray" dizisine kaydet.
                        var steamItem = topics[x].closest(".ipsStreamItem_container");
                        topicArray.push({
                            type:      steamItem.querySelector('.ipsStreamItem_header .ipsStreamItem_title.ipsStreamItem_titleSmall') ? "old" : "new",
                            topic:     steamItem.querySelector('h2.ipsStreamItem_title > span.ipsType_break > a').textContent,
                            topic_url: steamItem.querySelector('h2.ipsStreamItem_title > span.ipsType_break > a').href.replace(/\/\&do\=findComment\&comment\=\d+/, ""),
                            topic_id:  steamItem.querySelector('h2.ipsStreamItem_title > span.ipsType_break > a').href.replace(/.+\/topic\/(\d+)-.+/, "$1"),
                            comment_id:steamItem.querySelector('h2.ipsStreamItem_title > span.ipsType_break > a').href.replace(/.+\/\&do\=findComment\&comment\=(\d+)/, "$1"),
                            autor:     steamItem.querySelector('p.ipsStreamItem_status > a[href*="planetdp.org/index.php?/profile/"]').textContent,
                            autor_url: steamItem.querySelector('p.ipsStreamItem_status > a[href*="planetdp.org/index.php?/profile/"]').href,
                            autor_img: steamItem.querySelector('.ipsStreamItem_header > a.ipsUserPhoto > img').src,
                            forum:     steamItem.querySelector('p.ipsStreamItem_status > a[href*="planetdp.org/index.php?/forum/"]').textContent,
                            forum_url: steamItem.querySelector('p.ipsStreamItem_status > a[href*="planetdp.org/index.php?/forum/"]').href,
                            forum_id:  steamItem.querySelector('p.ipsStreamItem_status > a[href*="planetdp.org/index.php?/forum/"]').href.replace(/.+\/forum\/(\d+)-.+\//, "$1"),
                            badge:     steamItem.querySelector('.ipsStreamItem_title .ipsBadge') ? steamItem.querySelector('.ipsStreamItem_title .ipsBadge').textContent : null,
                            badge_clr: steamItem.querySelector('.ipsStreamItem_title .ipsBadge') ? steamItem.querySelector('.ipsStreamItem_title .ipsBadge').style.backgroundColor : null,
                            not_read:  steamItem.querySelector('.ipsItemStatus:not(.ipsItemStatus_read)') ? true : false,
                            posted:    steamItem.querySelector('.ipsItemStatus_posted') ? true : false,
                            thumbnail: steamItem.querySelector('img.ipsImage.ipsStream_image') ? steamItem.querySelector('img.ipsImage.ipsStream_image').src : null,
                            date:      dateTransform(steamItem.querySelector('ul.ipsStreamItem_meta time').title, "dd_month_yyyy", lang),
                            comments:  steamItem.querySelector('ul.ipsStreamItem_meta i.fa-comment') ? steamItem.querySelector('ul.ipsStreamItem_meta i.fa-comment').parentElement.textContent.trim() : "",
                        });
                    }

                    // Yapılan arama ile eşleşen sonuç sayısına bakarak tüm sayfalara bakana kadar isteği tekrarla.
                    var resultNumber = page.querySelector('p.ipsType_sectionTitle').textContent.trim().match(/(\d+)/)[1];
                    if(resultNumber > offset) {
                        findTopics (search, pageNo + 1);
                    }
                    // Tüm sayfalara bakınca cacheye al ve konuları bastır.
                    else {
                        // Yapıma ait konular
                        var exactTopics = arrayIntersection(forum, arrayFilter(topicArray, "type", "new"), "second", "id", "forum_id");

                        // Yapımdan bahsedilen konular (Büyük listenin üstteki süzülmüş hariç kısmı)
                        var mentionedTopics = arrayExclusion(topicArray, exactTopics, "first", "forum_id", "forum_id");
                        mentionedTopics = arrayExclusion(mentionedTopics, excludedForum, "first", "forum_id", "id");

						// Veri tabnalarını al, yoksa yarat.
                        var exactCache = GM_getValue("exactCache");
                        exactCache = (exactCache) ? JSON.parse(exactCache) : [];
                        var mentionedCache = GM_getValue("mentionedCache");
                        mentionedCache = (mentionedCache) ? JSON.parse(mentionedCache) : [];
                        var cache_time = GM_getValue("cache_time");
                        cache_time = (cache_time) ? JSON.parse(cache_time) : [];

						// Veri tabanlarına konuları işle ve kaydet.
                        exactCache[dpId] = exactTopics;
                        mentionedCache[dpId] = mentionedTopics;
                        cache_time[dpId] = currentTime;
                        GM_setValue( "exactCache", JSON.stringify(exactCache) );
                        GM_setValue( "mentionedCache", JSON.stringify(mentionedCache) );
                        GM_setValue( "cache_time", JSON.stringify(cache_time) );

						// Konulara sayfaya bastır.
                        placeTopics(exactTopics);
                        if (metionOpt) {
							placeTopics(mentionedTopics, "mentioned");
						}
                        console.log("Forum topics are refreshed.");
                    }
                }
            });
    }

    // Konuları yapım sayfasındaki HTML'ye yerleştiren fonksiyon.
    function placeTopics(array, isMentioned) {
        if (isMentioned != "mentioned") {
            array = arraySorter( arraySorter(array, "topic_id"), "forum_id" );
        } else {
            array = arraySorter( arraySorter( arraySorter(array, "comment_id", "reverse"), "topic_id" ), "forum_id" );
            array = arrayGroup(array, "topic_id");
        }

        var topicHtml = "";
        for (let x = 0; x < array.length; x++) {
            var a, comment, autorTitle, clss, url, urlThumb, dateTitle;
            if (isMentioned != "mentioned") {
                // Gerekli bilgileri topla.
                a          = array[x];
				clss       = `forumCol colColor`;
				url        = a.topic_url;
                comment    = `<br><span id="comments" class="aName">` + a.comments + `</span>`;
                autorTitle = `Konuyu açan üye`;
                dateTitle  = `Konunun açıldığı tarih`;
            } else {
                // Gerekli bilgileri topla.
                var commentTitle = 'Bahsedenler: ';
                for (let y = 0; y < array[x].length; y++) {commentTitle += (y != 0) ? ', ' + array[x][y].autor : array[x][y].autor;}
                a          = array[x][0];
				clss       = `forumCol colColor mentionCol`;
				url        = `https://forum.planetdp.org/index.php?/search/&q=` + searcText + `&type=forums_topic&item=` + a.topic_id;
                comment    = `<br><a id="comments" class="aName" href="https://forum.planetdp.org/index.php?/search/&q=` + searcText + `&type=forums_topic&item=` + a.topic_id + `" title="` + commentTitle + `" target="_blank">` + array[x].length + ` yanıtta bahsedilmiş</a>`;
                autorTitle = `Son bahseden üye`;
                dateTitle  = `Son bahsedilme tarihi`;
                /* Üste altyazı listesi gibi bir açıklama barı koyup onun üstünden iki kısmı ayıracağım galiba. */
            }
            topicHtml += `
<div class="` + clss + `">
	<div class="div1 ` + (!a.not_read ? `readedTopic` : ``) + `">
		<a href="` + a.topic_url + `/&do=getNewComment" target="_blank" title="İlk okunmamış iletiye git" target="_blank" style="position: relative;">
            <i class="fa fa-` + (a.posted ? 'star' : 'circle' ) + ` readStatus" title="İlk okunmamış iletiye git" target="_blank" goToNew="tooltip" data-placement="top"></i>
			<div class="topicThumb defaultThumb_` + mainType + `" style="` + ( a.thumbnail ? `background-image: url(` + a.thumbnail +`);` : `` ) + `"></div>
		</a>
	    <div>
            ` + (a.badge ? `<a href="https://forum.planetdp.org/index.php?/search/&type=forums_topic&tags=` + a.badge + `&nodes=` + a.forum_id + `" target="_blank">
                <span class="forumBadge" style="background-color:` + a.badge_clr + `" title="Aynı forumda bu etikete sahip diğer konular">` + a.badge + `</span>
            </a>` : ``) + `
            <a href="` + url + `" target="_blank">
                <b>` + a.topic + `</b>
            </a>
        </div>
    </div>
	<div class="div2">
        <span class="tName">
            <a href="` + a.forum_url + `" target="_blank" title="Konunun bulunduğu forum"><b>` + a.forum + `</b></a>` + (!detailOpt ? `` : comment ) + `
        </span>
    </div>
    <div class="div3">
        <span class="aName">
            <a href="` + a.autor_url + `" target="_blank" title="` + autorTitle + `">
                <div class="autor-avatar" style="background-image: url(` + a.autor_img +`);"></div>` + ( !detailOpt ? `</b>` : `<b>`) + `<span id="autor">` + a.autor +`</span></b>
            </a>
            ` + ( !detailOpt ? `` : `<br><span id="date" title="` + dateTitle + `">` + a.date + `</span>` ) + `</span>
    </div>
</div>
`;
        }

        if (isMentioned != "mentioned") {
            topicHtml = (topicHtml == "") ? "Bu yapım için hiçbir konu bulunamadı." : topicHtml;
            document.querySelector('.exactTopicContainer').innerHTML = topicHtml;
        } else {
            // Exact kısmı boşsa onun içini temizle.
            if (document.querySelectorAll('.exactTopicContainer .forumCol').length < 1) {
                document.querySelector('.exactTopicContainer').innerHTML = '';
                topicHtml = (topicHtml == "") ? "Bu yapım için hiçbir konu bulunamadı." : topicHtml;
            }
            document.querySelector('.exactTopicContainer').insertAdjacentHTML("beforeend", topicHtml);
        }
        //document.querySelector( '#forumdiv ' + (isMentioned == "mentioned" ? '.mentionedTopicContainer' : '.exactTopicContainer') ).innerHTML = topicHtml;
        $('[goToNew="tooltip"]').tooltip();
    }

    function millisecondConverter(unit, from, to) {
        var result;
        to = to == null ? "millisecond" : to;
        from = from.replace(/milisaniye/i,"millisecond").replace(/saniye/i,"second").replace(/dakika/i,"minute").replace(/saat/i,"hour").replace(/gün/i,"day").replace(/hafta/i,"week").replace(/^(ay)/i,"month").replace(/yıl/i,"year");
        to = to.replace(/milisaniye/i,"millisecond").replace(/saniye/i,"second").replace(/dakika/i,"minute").replace(/saat/i,"hour").replace(/gün/i,"day").replace(/hafta/i,"week").replace(/^(ay)/i,"month").replace(/yıl/i,"year");
        switch (from) {
            case "millisecond" :
                switch (to) {
                    case "year":    result = Math.round(unit / 31556952000); break;
                    case "month" :  result = Math.round(unit / 2592000000); break;
                    case "week" :   result = Math.round(unit / 604800000); break;
                    case "day" :    result = Math.round(unit / 86400000); break;
                    case "hour" :   result = Math.round(unit / 3600000); break;
                    case "minute" : result = Math.round(unit / 60000); break;
                    case "second" : result = Math.round(unit / 1000); break;
                }
                break;
            case "year":
                switch (to) {case "millisecond": result = unit * 31556952000; break;} break;
            case "month":
                switch (to) {case "millisecond": result = unit * 2592000000; break;} break;
            case "week":
                switch (to) {case "millisecond": result = unit * 604800000; break;} break;
            case "day":
                switch (to) {case "millisecond": result = unit * 86400000; break;} break;
            case "hour":
                switch (to) {case "millisecond": result = unit * 3600000; break;} break;
            case "minute":
                switch (to) {case "millisecond": result = unit * 60000; break;} break;
            case "second":
                switch (to) {case "millisecond": result = unit * 1000; break;} break;
        }
        return result;
    }

    function dateTransform(date, output, lang) {
        var day, month, month_name, month_name_short, year;
        var dateRegex2 = /(\d{4})-(\d{1,2})-(\d{1,2})/; // 2017-04-16T21:16:35Z
        var dateRegex3 = /(\d{1,2})(-|\/)(\d{1,2})(-|\/)(\d{2,4})/; // 11/18/18 00:25 || 11/18/2018 00:25

        if (date.search(dateRegex2) >= 0) {
            day =    Number( dateRegex2.exec(date)[3] ); // 09 => 9
            month =  Number( dateRegex2.exec(date)[2] ); // 03 => 3
            year =   Number( dateRegex2.exec(date)[1] );
        }
        else if (date.search(dateRegex3) >= 0) { //Gün ve ay yer değiştirmiş hal için. Buna bir belirteç eklemek lazım.
            day =    Number( dateRegex3.exec(date)[3] ); // 09 => 9
            month =  Number( dateRegex3.exec(date)[1] ); // 03 => 3
            year =   Number( dateRegex3.exec(date)[5] );
            year = year < 2000 ? 2000 + year : year; // 18 => 2018
        }

        // Ek işlemler
        month_name = lang == "eng" ? ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"][month-1] : ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"][month-1];
        month_name_short = ""; // lazım olabilir

        if (output == "dd_month_yyyy") return day + " " + month_name + " " + year;
    }

    function arraySorter(array, objectType, isReverse) {
        var resultArray = [];
        resultArray = array.sort(function(a, b) {
          var x = ( isFinite(a[objectType]) ) ? Number(a[objectType]) : a[objectType].toString().toLowerCase();
          var y = ( isFinite(b[objectType]) ) ? Number(b[objectType]) : b[objectType].toString().toLowerCase();
          if (x < y) {return (isReverse == "reverse" ? 1 : -1);}
          if (x > y) {return (isReverse == "reverse" ? -1 : 1);}
          return 0;
        });
        return resultArray;
    }

    function arrayFilter(array, type, typeValue) {
        var newArray = [];
        for (let x = 0; x < array.length; x++) {
            if (array[x] != null) {
                if (array[x][type] == typeValue) {
                    newArray.push(array[x]);
                }
            }
        }
        return newArray;
    }

    function arrayIntersection(array1, array2, which, attr1, attr2) {
        var resultArray = [];
        for(let o = 0; o < array1.length; o++){
            for (let i = 0; i < array2.length; i++) {
                if ( array1[o][attr1] == array2[i][attr2] ) {
                    if (which == "first") {
						resultArray.push(array1[o]);
					}
					else {
						resultArray.push(array2[i]);
					}
                }
            }
        }
        return resultArray;
    }

    function arrayExclusion(array1, array2, which, attr1, attr2) {
        var resultArray = [];
        if (array1.length == 0 || array2.length == 0) {
            resultArray = (which == "first") ? array1 : array2;
        } else {
            for(let o = 0; o < array1.length; o++){
                for (let i = 0; i < array2.length; i++) {
                    if (array1[o][attr1] == array2[i][attr2]) {
                        break;
                    }
                    else if (i+1 == array2.length) {
                        if(which == "first") {
							resultArray.push(array1[o]);
						}
						else {
							resultArray.push(array2[i]);
						}
                    }
                }
            }
        }
        return resultArray;
    }

    function arrayGroup(array, attr) {
        var resultArray = [];
        var usedIndex = [];
        for(let o = 0; o < array.length; o++){
            if (usedIndex.indexOf(o) < 0) {
                var subArray = [];
                for (let i = 0; i < array.length; i++) {
                    if (array[o][attr] == array[i][attr]) {
                        subArray.push(array[i]);
                        usedIndex.push(i);
                    }
                }
                resultArray.push(subArray);
            }
        }
        return resultArray;
    }

})();