commit
ec8e262c54
2 changed files with 175 additions and 0 deletions
@ -0,0 +1,170 @@ |
|||
// ==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); |
|||
|
@ -0,0 +1,5 @@ |
|||
# PodioTweaker |
|||
|
|||
This app is to be used inside tampermonkey |
|||
|
|||
The script exists to help ensure a pit of success so people dont click things they should not inside our podio app. |
Loading…
Reference in new issue