You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
170 lines
6.4 KiB
170 lines
6.4 KiB
// ==UserScript==
|
|
// @name PodioTweaker-HideAddButtons
|
|
// @namespace http://tampermonkey.net/
|
|
// @version 0.1
|
|
// @description Make tweaks to podio to help ensure a pit of success
|
|
// @author Steven Allen
|
|
// @match https://podio.com/qhreicom/qlty-crm/apps/*
|
|
// @icon https://www.google.com/s2/favicons?sz=64&domain=podio.com
|
|
// @grant none
|
|
// ==/UserScript==
|
|
|
|
// @dont_require https://code.jquery.com/jquery-3.7.1.min.js
|
|
|
|
'use strict';
|
|
|
|
////////
|
|
////////////// BEGIN COPIED CODE FROM @require https://cdn.jsdelivr.net/gh/CoeJoder/waitForKeyElements.js@v1.2/waitForKeyElements.js
|
|
//https://github.com/CoeJoder/waitForKeyElements.js
|
|
/**
|
|
* A utility function for userscripts that detects and handles AJAXed content.
|
|
*
|
|
* Usage example:
|
|
*
|
|
* function callback(domElement) {
|
|
* domElement.innerHTML = "This text inserted by waitForKeyElements().";
|
|
* }
|
|
*
|
|
* waitForKeyElements("div.comments", callback);
|
|
* // or
|
|
* waitForKeyElements(selectorFunction, callback);
|
|
*
|
|
* @param {(string|function)} selectorOrFunction - The selector string or function.
|
|
* @param {function} callback - The callback function; takes a single DOM element as parameter.
|
|
* If returns true, element will be processed again on subsequent iterations.
|
|
* @param {boolean} [waitOnce=true] - Whether to stop after the first elements are found.
|
|
* @param {number} [interval=300] - The time (ms) to wait between iterations.
|
|
* @param {number} [maxIntervals=-1] - The max number of intervals to run (negative number for unlimited).
|
|
*/
|
|
function waitForKeyElements(selectorOrFunction, callback, waitOnce, interval, maxIntervals) {
|
|
if (typeof waitOnce === "undefined") {
|
|
waitOnce = true;
|
|
}
|
|
if (typeof interval === "undefined") {
|
|
interval = 300;
|
|
}
|
|
if (typeof maxIntervals === "undefined") {
|
|
maxIntervals = -1;
|
|
}
|
|
var targetNodes = (typeof selectorOrFunction === "function")
|
|
? selectorOrFunction()
|
|
: document.querySelectorAll(selectorOrFunction);
|
|
|
|
var targetsFound = targetNodes && targetNodes.length > 0;
|
|
if (targetsFound) {
|
|
targetNodes.forEach(function(targetNode) {
|
|
var attrAlreadyFound = "data-userscript-alreadyFound";
|
|
var alreadyFound = targetNode.getAttribute(attrAlreadyFound) || false;
|
|
if (!alreadyFound) {
|
|
var cancelFound = callback(targetNode);
|
|
if (cancelFound) {
|
|
targetsFound = false;
|
|
}
|
|
else {
|
|
targetNode.setAttribute(attrAlreadyFound, true);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
if (maxIntervals !== 0 && !(targetsFound && waitOnce)) {
|
|
maxIntervals -= 1;
|
|
setTimeout(function() {
|
|
waitForKeyElements(selectorOrFunction, callback, waitOnce, interval, maxIntervals);
|
|
}, interval);
|
|
}
|
|
}
|
|
////////////// END OF COPIED CODE
|
|
function getNewDestination(pathName) {
|
|
console.log("pathname: "+ pathName);
|
|
switch (pathName) {
|
|
//💫 Use a differnt form
|
|
case "/qhreicom/qlty-crm/apps/external-leads":
|
|
case "/qhreicom/qlty-crm/apps/seller-leads":
|
|
return "https://podio.com/webforms/29098562/2368311";
|
|
case "/qhreicom/qlty-crm/apps/sales-offers":
|
|
return "https://podio.com/webforms/29098535/2368294";
|
|
case "/qhreicom/qlty-crm/apps/cash-buyers":
|
|
return "https://podio.com/webforms/29098542/2368298";
|
|
case "/qhreicom/qlty-crm/apps/wholesalers":
|
|
return "https://podio.com/webforms/29098543/2368299";
|
|
|
|
//✨Allow people to use
|
|
case "/qhreicom/qlty-crm/apps/marketing-numbers":
|
|
case "/qhreicom/qlty-crm/apps/team-members":
|
|
case "/qhreicom/qlty-crm/apps/major-markets": //Used as list option for Cash Buyers app
|
|
case "/qhreicom/qlty-crm/apps/sops":
|
|
case "/qhreicom/qlty-crm/apps/lead-sources":
|
|
return "";
|
|
|
|
//⛔Dont let people add
|
|
case "/qlty-crm/apps/need-to-sell-fast":
|
|
case "/qhreicom/qlty-crm/apps/sales":
|
|
case "/qhreicom/qlty-crm/apps/smrtphone-logs":
|
|
case "/qhreicom/qlty-crm/apps/lists":
|
|
case "/qhreicom/qlty-crm/apps/member-s":
|
|
case "/qhreicom/qlty-crm/apps/comm-queue": //?
|
|
case "/qhreicom/qlty-crm/apps/kpis-track"://?
|
|
case "/qlty-crm/apps/drip-numbers"://?
|
|
case "/qhreicom/qlty-crm/apps/sales-log"://?
|
|
return "#";
|
|
|
|
//⚠Unsure if we should be using this yet
|
|
case "/qhreicom/qlty-crm/apps/campaigns": //?
|
|
case "/qhreicom/qlty-crm/apps/marketing-kpis": //?
|
|
case "/qhreicom/qlty-crm/apps/settings": //Editing the one extent is ok but not sure if add is allowed
|
|
case "/qhreicom/qlty-crm/apps/feed": //?
|
|
case "/qhreicom/qlty-crm/apps/drip-msgs": //Editing is ok not sure if add should be allowed
|
|
case "/qhreicom/qlty-crm/apps/title-companies": //Does a form exist or should we use this?
|
|
case "/qhreicom/qlty-crm/apps/lead-followups": //?
|
|
return null;
|
|
|
|
default: //Un-reviewed Url's
|
|
return null;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function fixButton(targetButton){
|
|
console.log("found targetButton: "+ targetButton);
|
|
//var targetButton = document.getElementById("featureTourOnboarding");
|
|
|
|
var originalText = targetButton.innerText;
|
|
//replace targets url with the correct url to use
|
|
var newDestination =getNewDestination(window.location.pathname);
|
|
if(newDestination === null) {
|
|
console.log("Has not been reviewed yet");
|
|
targetButton.innerHTML = "⚠"+originalText +"⚠";
|
|
return;
|
|
} else if(newDestination === "") {
|
|
console.log("Ok to use this button");
|
|
targetButton.innerHTML = "✨"+originalText +"✨";
|
|
return;
|
|
} else if(newDestination === "#") {
|
|
console.log("Changed Button Functionality");
|
|
console.log("Dont use this button");
|
|
targetButton.innerHTML = "⛔<s>"+originalText +"</s>⛔";
|
|
} else {
|
|
console.log("Changed Button Functionality");
|
|
targetButton.innerHTML = "💫"+originalText +"💫";
|
|
}
|
|
targetButton.href = getNewDestination(window.location.pathname);
|
|
targetButton.removeAttribute('onclick');
|
|
targetButton.addEventListener('click', () => {
|
|
window.location.assign(targetButton.href);
|
|
});
|
|
}
|
|
|
|
/*
|
|
(new MutationObserver(check)).observe(document, {childList: true, subtree: true});
|
|
|
|
function check(changes, observer) {
|
|
if(document.querySelector('#mySelector')) {
|
|
observer.disconnect();
|
|
// actions to perform after #mySelector is found
|
|
}
|
|
}
|
|
*/
|
|
|
|
waitForKeyElements('.button-new.add-item.primary.baby-button', fixButton,false,300,-1);
|
|
|
|
|