// ==UserScript==
// @name Munzee Clanlink Replace
// @namespace https://gf.qytechs.cn/users/156194
// @version 0.8
// @description Replace Clanlinks at profile pages and clan leaderboard
// @author rabe85
// @match https://www.munzee.com/m/*
// @match https://www.munzee.com/m/*/*
// @match https://www.munzee.com/settings
// @match https://www.munzee.com/settings/*
// @match https://www.munzee.com/clans
// @match https://www.munzee.com/clans/*
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_deleteValue
// ==/UserScript==
(function() {
'use strict';
function munzee_clanlink_replace() {
var clanlink_firstrun = GM_getValue('clanlink_firstrun', 1);
if(clanlink_firstrun == 1) {
function clanlink_firstrun_button0() {
GM_setValue('clanlink_option', 0);
GM_setValue('clanlink_firstrun', 0);
location.reload();
}
function clanlink_firstrun_button1() {
GM_setValue('clanlink_option', 1);
GM_setValue('clanlink_firstrun', 0);
location.reload();
}
function clanlink_firstrun_button2() {
GM_setValue('clanlink_option', 2);
GM_setValue('clanlink_firstrun', 0);
location.reload();
}
function clanlink_firstrun_button3() {
document.getElementById('clanlink_firstrun_desc').setAttribute('style', 'display: block;font-style: normal;font-weight: lighter;');
document.getElementById('clanlink_firstrun_input').setAttribute('style', 'display: inline;width: 200px;color: #000;padding: 5px;border-radius: 10px;font-style: normal;');
var input_value = document.getElementById('clanlink_firstrun_input').value;
GM_setValue('clanlink_option', 3);
GM_setValue('clanlink_input', input_value);
GM_setValue('clanlink_firstrun', 0);
if(input_value != 'https://') location.reload();
}
document.body.insertAdjacentHTML('afterbegin', '<div style="position: fixed;left: 0px;top: 0px;height: 100%;width: 100%;background-color: black;opacity: 0.9;z-index: 9999;text-align: center;font-family: Ubuntu,sans-serif;font-weight: 400;font-style: italic;color: #fff;"><div style="margin: 50px;font-style: normal;font-size: x-large;">Munzee Clanlink Replace</div><div style="margin: 50px;color: white;font-size: larger;">Welcome, this script will change the clanlink<br>at the profile page. Please choose an option.<br><br>You can change it whenever you want<br>at your <a href="https://www.munzee.com/settings" style="color: #fff;">profile settings</a> page.</div><div><button id="clanlink_firstrun_button0" class="user-stat stat-green" style="width: 200px;padding-top: 0px;border-radius: 10px !important;margin-bottom: 15px;">Off (default link)</button><br><button id="clanlink_firstrun_button1" class="user-stat stat-green" style="width: 200px;padding-top: 0px;border-radius: 10px !important;margin-bottom: 15px;">Clan Stats by RUJA</button><br><button id="clanlink_firstrun_button2" class="user-stat stat-green" style="width: 200px;padding-top: 0px;border-radius: 10px !important;margin-bottom: 15px;">CuppaZee</button><br><button id="clanlink_firstrun_button3" class="user-stat stat-green" style="width: 200px;padding-top: 0px;border-radius: 10px !important;margin-bottom: 15px;">Own Clanlink</button><br><div style="display:none;" id="clanlink_firstrun_desc"><i class="fa fa-info-circle"></i> Use {id} for Clan ID and {name} for Clan Simple Name</div><br><input type="text" id="clanlink_firstrun_input" name="clanlink_firstrun_input" size="30" value="https://" style="display: none;"></div></div>');
document.getElementById('clanlink_firstrun_button0').addEventListener('click', clanlink_firstrun_button0, false);
document.getElementById('clanlink_firstrun_button1').addEventListener('click', clanlink_firstrun_button1, false);
document.getElementById('clanlink_firstrun_button2').addEventListener('click', clanlink_firstrun_button2, false);
document.getElementById('clanlink_firstrun_button3').addEventListener('click', clanlink_firstrun_button3, false);
document.getElementById('clanlink_firstrun_input').addEventListener('change', clanlink_firstrun_button3, false);
} else {
var url_path = window.location.pathname;
var url_array = url_path.split("/");
var url_array_lenght = url_array.length - 1;
var url_switch = url_array[url_array_lenght];
var clanlink_option = GM_getValue('clanlink_option', 0);
var clanlink_input = GM_getValue('clanlink_input', '');
if(url_array[1] == 'settings') { // Settings page
function clanlink_input_speichern() {
GM_setValue('clanlink_input', document.getElementById('clanlink_input').value);
}
function clanlink_option_aendern() {
var clanlink_option_selected = document.getElementById('clanlink_option').value;
GM_setValue('clanlink_option', clanlink_option_selected);
if(clanlink_option_selected == 3) {
document.getElementById('clanlink_input_div').setAttribute('style', 'margin-bottom: 25px;');
} else {
document.getElementById('clanlink_input_div').setAttribute('style', 'margin-bottom: 25px; display: none;');
}
}
document.getElementById('distance_type').parentElement.parentElement.setAttribute('style', 'margin-bottom: 10px;');
var clanlink_option0_selected = '';
var clanlink_option1_selected = '';
var clanlink_option2_selected = '';
var clanlink_option3_selected = '';
var clanlink_input_style = 'display: none;';
if(clanlink_option == 0) { clanlink_option0_selected = 'selected="selected"'; }
if(clanlink_option == 1) { clanlink_option1_selected = 'selected="selected"'; }
if(clanlink_option == 2) { clanlink_option2_selected = 'selected="selected"'; }
if(clanlink_option == 3) { clanlink_option3_selected = 'selected="selected"'; clanlink_input_style = ''; }
var pos = document.getElementById('email_address').parentElement.parentElement;
pos.setAttribute('style', 'margin-bottom: 10px;');
pos.insertAdjacentHTML('afterend', '<div class="clearfix col-xs-12 col-md-6 setting-box" style="margin-bottom: 25px;"><label for="xxlInput">Clanlink Option</label><div class="input"><select name="clanlink_option" id="clanlink_option" class="form-control"><option value="0" ' + clanlink_option0_selected + '>Off (default link)</option><option value="1" ' + clanlink_option1_selected + '>Clan Stats by RUJA</option><option value="2" ' + clanlink_option2_selected + '>CuppaZee</option><option value="3" ' + clanlink_option3_selected + '>Own Clanlink</option></select></div></div><div class="clearfix col-xs-12 col-md-6 setting-box" id="clanlink_input_div" style="margin-bottom: 25px; ' + clanlink_input_style + '"><label for="xlInput">Own Clanlink <span style="font-weight: normal;"><i class="fa fa-info-circle"></i> Use {id} for Clan ID and {name} for Clan Simple Name</span></label><div class="input"><input class="form-control" id="clanlink_input" name="clanlink_input" size="30" type="text" value="' + clanlink_input + '"></div></div>');
document.getElementById('clanlink_option').addEventListener('change', clanlink_option_aendern, false);
document.getElementById('clanlink_input').addEventListener('input', clanlink_input_speichern, false);
} else {
if(clanlink_option == 1 || clanlink_option == 2 || clanlink_option == 3) {
var load_fancybox = 0;
function clanpage(position,id,name) {
if(clanlink_option == 1) { // Clan Stats by RUJA
if(id != 0 || name != '') {
if(id != 0) {
position.setAttribute('data-src','https://stats.munzee.dk/?' + id);
load_fancybox = 1;
} else {
position.setAttribute('data-src','https://stats.munzee.dk/?clan_name' + name);
load_fancybox = 1;
}
}
} else {
if(clanlink_option == 2) { // CuppaZee
if(id != 0) {
position.setAttribute('data-src','https://cuppazee.app/clan/' + id);
load_fancybox = 1;
}
} else {
position.setAttribute('data-src',clanlink_input.replace(/{id}/g,id).replace(/{name}/g,name));
load_fancybox = 1;
}
}
if(load_fancybox == 1) {
position.setAttribute('href', 'javascript:;');
position.setAttribute('title', 'Open Clanpage (external link)');
position.setAttribute('data-fancybox', '');
position.setAttribute('data-type', 'iframe');
}
}
if(url_array[1] == 'clans') { // Clan Leaderboards
var leaderboard_tr0 = document.getElementsByClassName('table')[0].getElementsByTagName('tr');
for(var ltr = 0, leaderboard_tr; !!(leaderboard_tr=leaderboard_tr0[ltr]); ltr++) {
var leaderboard_clanid = 0;
var leaderboard_clanname = '';
var leaderboard_logo = leaderboard_tr.querySelector('img[data-src*=clan_logos]');
var leaderboard_logo_src = '';
if(leaderboard_logo) {
leaderboard_logo_src = leaderboard_logo.getAttribute('data-src');
leaderboard_logo.setAttribute('src', leaderboard_logo_src); // Workaround, lazy loading doesn't work anymore
}
if(leaderboard_logo_src) {
leaderboard_clanid = parseInt((leaderboard_logo_src.match(/clan_logos\/([^/.]+)\.png/)||[])[1],36);
}
if(leaderboard_clanid != 0) {
var leaderboard_td0 = leaderboard_tr.getElementsByTagName('td');
for(var ltd = 0, leaderboard_td; !!(leaderboard_td=leaderboard_td0[ltd]); ltd++) {
leaderboard_td.innerHTML = '<a href="javascript:;" id="leaderboard_tr' + ltr + 'td' + ltd + '" title="Open Clanpage (external link)" data-fancybox data-type="iframe">' + leaderboard_td.innerHTML + '</a>';
clanpage(document.getElementById('leaderboard_tr' + ltr + 'td' + ltd),leaderboard_clanid,leaderboard_clanname);
}
}
}
} else { // Player profile
var clanlink_replace0 = document.querySelectorAll('a[href^="/clans/"]');
for(var cr = 0, clanlink_replace; !!(clanlink_replace=clanlink_replace0[cr]); cr++) {
var clanid = 0;
var clanname = '';
var logo = document.querySelector('img[src*=clan_logos]');
var logo_src = '';
var link = clanlink_replace.getAttribute('href');
if(logo) {
logo_src = logo.getAttribute('src');
}
if(logo_src) {
clanid = parseInt((logo_src.match(/clan_logos\/([^/.]+)\.png/)||[])[1],36);
}
if(link) {
clanname = link.split('/')[link.split('/').length - 2];
}
clanpage(clanlink_replace,clanid,clanname);
}
}
if(load_fancybox == 1) {
var load_fancybox_css = document.createElement('link');
load_fancybox_css.rel = 'StyleSheet';
load_fancybox_css.type = 'text/css';
load_fancybox_css.href = 'https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.7/jquery.fancybox.min.css';
document.head.appendChild(load_fancybox_css);
var load_fancybox_script = document.createElement('script');
load_fancybox_script.src = 'https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.7/jquery.fancybox.min.js';
document.body.appendChild(load_fancybox_script);
}
}
}
}
}
// DOM vollständig aufgebaut?
if (/complete|interactive|loaded/.test(document.readyState)) {
munzee_clanlink_replace();
} else {
document.addEventListener("DOMContentLoaded", munzee_clanlink_replace, false);
}
})();