adding to gitea repo
This commit is contained in:
@@ -0,0 +1,191 @@
|
|||||||
|
// ==UserScript==
|
||||||
|
// @name D2L Auto-Advance v7.3
|
||||||
|
// @namespace d2l-autoadvance-v7
|
||||||
|
// @version 7.3
|
||||||
|
// @description Auto-advances D2L Brightspace. F7=Toggle UI, F8=Start/Stop, F9=Next
|
||||||
|
// @match https://*.modernstates.org/*
|
||||||
|
// @grant none
|
||||||
|
// @run-at document-idle
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// ── Only run in the TOP frame, never in iframes ────────────────────
|
||||||
|
if (window !== window.top) return;
|
||||||
|
|
||||||
|
// ── Kill any previous instance + nuke all old UIs ─────────────────
|
||||||
|
document.querySelectorAll('#d2l-aa').forEach(e => e.remove());
|
||||||
|
if (window.__d2lAA) { try { window.__d2lAA.kill(); } catch (_) {} delete window.__d2lAA; }
|
||||||
|
|
||||||
|
const MIN_MS = 3000, MAX_MS = 4000;
|
||||||
|
const rand = () => MIN_MS + Math.floor(Math.random() * (MAX_MS - MIN_MS));
|
||||||
|
|
||||||
|
function getLinks() {
|
||||||
|
const results = [];
|
||||||
|
function walk(node) {
|
||||||
|
if (!node) return;
|
||||||
|
try {
|
||||||
|
node.querySelectorAll('d2l-activity-link[href]').forEach(el => results.push(el));
|
||||||
|
node.querySelectorAll('*').forEach(el => { if (el.shadowRoot) walk(el.shadowRoot); });
|
||||||
|
} catch (_) {}
|
||||||
|
}
|
||||||
|
walk(document);
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCurrentIndex(links) {
|
||||||
|
const i = links.findIndex(l => l.hasAttribute('is-current-activity'));
|
||||||
|
return i >= 0 ? i : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function clickLink(link) {
|
||||||
|
if (!link) return;
|
||||||
|
link.click();
|
||||||
|
try {
|
||||||
|
const inner = link.shadowRoot?.querySelector('a, button, [role="link"]');
|
||||||
|
if (inner) inner.click();
|
||||||
|
} catch (_) {}
|
||||||
|
link.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
||||||
|
console.log('[D2L v7.3] →', link.getAttribute('href')?.split('/').pop());
|
||||||
|
}
|
||||||
|
|
||||||
|
let idx = -1, running = false, mainT = null, tickT = null, secs = 0, uiVisible = true;
|
||||||
|
|
||||||
|
// ── Build UI ───────────────────────────────────────────────────────
|
||||||
|
const ui = document.createElement('div');
|
||||||
|
ui.id = 'd2l-aa';
|
||||||
|
ui.style.cssText = `
|
||||||
|
position:fixed;bottom:18px;right:18px;z-index:2147483647;
|
||||||
|
background:#0d1117;color:#cdd6e0;
|
||||||
|
font:13px/1.5 "Segoe UI",Arial,sans-serif;
|
||||||
|
padding:12px 15px;border-radius:11px;
|
||||||
|
box-shadow:0 4px 24px rgba(0,0,0,.85);
|
||||||
|
min-width:235px;border:1px solid #30363d;
|
||||||
|
transition:opacity 0.3s,transform 0.3s;
|
||||||
|
`;
|
||||||
|
ui.innerHTML = `
|
||||||
|
<div style="font-weight:700;font-size:14px;color:#58a6ff;margin-bottom:8px">⚡ D2L Auto-Advance</div>
|
||||||
|
<div id="d2l-aa-s" style="color:#8b949e;margin-bottom:3px">Scanning...</div>
|
||||||
|
<div id="d2l-aa-p" style="color:#58a6ff;margin-bottom:3px">0 / 0</div>
|
||||||
|
<div id="d2l-aa-c" style="font-size:11px;color:#484f58;margin-bottom:10px"> </div>
|
||||||
|
<div style="display:flex;gap:6px;margin-bottom:6px">
|
||||||
|
<button id="d2l-aa-b0" style="flex:1;padding:6px;border:none;border-radius:6px;background:#238636;color:#fff;cursor:pointer;font-size:12px;font-weight:700">▶ F8</button>
|
||||||
|
<button id="d2l-aa-b1" style="flex:1;padding:6px;border:none;border-radius:6px;background:#1f6feb;color:#fff;cursor:pointer;font-size:12px;font-weight:700">⏭ F9</button>
|
||||||
|
<button id="d2l-aa-b2" style="flex:1;padding:6px;border:none;border-radius:6px;background:#b62324;color:#fff;cursor:pointer;font-size:12px;font-weight:700">↺</button>
|
||||||
|
</div>
|
||||||
|
<div style="font-size:10px;color:#30363d;text-align:center">F7=Hide · F8=Start/Stop · F9=Next</div>
|
||||||
|
`;
|
||||||
|
document.body.appendChild(ui);
|
||||||
|
|
||||||
|
const el = id => document.getElementById(id);
|
||||||
|
const setS = (t, c='#8b949e') => { const e=el('d2l-aa-s'); if(e){e.textContent=t;e.style.color=c;} };
|
||||||
|
const setP = (i, n) => { const e=el('d2l-aa-p'); if(e) e.textContent=`${i} / ${n}`; };
|
||||||
|
const setC = t => { const e=el('d2l-aa-c'); if(e) e.textContent=t||' '; };
|
||||||
|
const setB = (t, bg) => { const e=el('d2l-aa-b0'); if(e){e.textContent=t;e.style.background=bg;} };
|
||||||
|
|
||||||
|
function clearTimers() {
|
||||||
|
clearTimeout(mainT); clearInterval(tickT); mainT = tickT = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function advance() {
|
||||||
|
const links = getLinks();
|
||||||
|
if (!links.length) { setS('⚠ No links found', '#e3b341'); return false; }
|
||||||
|
if (idx < 0) idx = getCurrentIndex(links);
|
||||||
|
else idx++;
|
||||||
|
if (idx >= links.length) {
|
||||||
|
setS('✅ All done!', '#3fb950'); setP(links.length, links.length);
|
||||||
|
setC('Complete!'); running = false; clearTimers(); setB('▶ F8', '#238636');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
clickLink(links[idx]);
|
||||||
|
setS('▶ Running', '#3fb950');
|
||||||
|
setP(idx + 1, links.length);
|
||||||
|
setC(`Activity ${links[idx].getAttribute('href')?.split('/').pop().split('?')[0] || ''}`);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function schedule() {
|
||||||
|
if (!running) return;
|
||||||
|
clearTimers();
|
||||||
|
const ms = rand();
|
||||||
|
secs = Math.ceil(ms / 1000);
|
||||||
|
setC(`Next in ${secs}s`);
|
||||||
|
tickT = setInterval(() => {
|
||||||
|
secs--;
|
||||||
|
setC(secs > 0 ? `Next in ${secs}s` : 'Advancing…');
|
||||||
|
if (secs <= 0) clearInterval(tickT);
|
||||||
|
}, 1000);
|
||||||
|
mainT = setTimeout(() => { if (running && advance()) schedule(); }, ms);
|
||||||
|
}
|
||||||
|
|
||||||
|
function toggleAuto() {
|
||||||
|
if (running) {
|
||||||
|
running = false; clearTimers();
|
||||||
|
setS('⏸ Paused', '#e3b341'); setB('▶ F8', '#238636');
|
||||||
|
} else {
|
||||||
|
const links = getLinks();
|
||||||
|
if (!links.length) { setS('⚠ No links — reload page', '#e3b341'); return; }
|
||||||
|
if (idx < 0) idx = getCurrentIndex(links) - 1;
|
||||||
|
running = true; setB('⏸ F8', '#e3b341');
|
||||||
|
if (advance()) schedule();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function manualNext() {
|
||||||
|
clearTimers();
|
||||||
|
if (advance() && running) schedule();
|
||||||
|
}
|
||||||
|
|
||||||
|
function reset() {
|
||||||
|
running = false; idx = -1; clearTimers();
|
||||||
|
const links = getLinks();
|
||||||
|
setS('↺ Reset — press F8', '#8b949e');
|
||||||
|
setP(0, links.length); setC(' '); setB('▶ F8', '#238636');
|
||||||
|
}
|
||||||
|
|
||||||
|
function toggleUI() {
|
||||||
|
uiVisible = !uiVisible;
|
||||||
|
ui.style.opacity = uiVisible ? '1' : '0';
|
||||||
|
ui.style.pointerEvents = uiVisible ? 'auto' : 'none';
|
||||||
|
ui.style.transform = uiVisible ? 'translateY(0)' : 'translateY(20px)';
|
||||||
|
}
|
||||||
|
|
||||||
|
el('d2l-aa-b0').onclick = toggleAuto;
|
||||||
|
el('d2l-aa-b1').onclick = manualNext;
|
||||||
|
el('d2l-aa-b2').onclick = reset;
|
||||||
|
|
||||||
|
function onKey(e) {
|
||||||
|
if (e.key === 'F7') { e.preventDefault(); toggleUI(); }
|
||||||
|
if (e.key === 'F8') { e.preventDefault(); toggleAuto(); }
|
||||||
|
if (e.key === 'F9') { e.preventDefault(); manualNext(); }
|
||||||
|
}
|
||||||
|
document.addEventListener('keydown', onKey, true);
|
||||||
|
|
||||||
|
function init(attempts = 0) {
|
||||||
|
const links = getLinks();
|
||||||
|
if (links.length > 0) {
|
||||||
|
idx = getCurrentIndex(links) - 1;
|
||||||
|
setS(`✅ ${links.length} links — press F8`, '#3fb950');
|
||||||
|
setP(0, links.length);
|
||||||
|
console.log(`[D2L v7.3] Ready. ${links.length} links found.`);
|
||||||
|
} else if (attempts < 10) {
|
||||||
|
setTimeout(() => init(attempts + 1), 1000);
|
||||||
|
} else {
|
||||||
|
setS('⚠ No links found', '#e3b341');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setTimeout(() => init(), 1500);
|
||||||
|
|
||||||
|
window.__d2lAA = {
|
||||||
|
initialized: true,
|
||||||
|
kill() {
|
||||||
|
running = false; clearTimers();
|
||||||
|
document.getElementById('d2l-aa')?.remove();
|
||||||
|
document.removeEventListener('keydown', onKey, true);
|
||||||
|
delete window.__d2lAA;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
})();
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
// ==UserScript==
|
||||||
|
// @name Force Enable Right Click, Copy & Paste
|
||||||
|
// @version 3.0
|
||||||
|
// @description Re-enables right click, text selection, and copying/pasting on all sites
|
||||||
|
// @author You
|
||||||
|
// @match https://www.netacad.com/*
|
||||||
|
// @match https://*ucertify.com/*
|
||||||
|
// @grant none
|
||||||
|
// @run-at document-start
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// Re-enable text selection and right-click
|
||||||
|
const styles = `* { user-select: auto !important; -webkit-user-select: auto !important; pointer-events: auto !important; }`;
|
||||||
|
const styleSheet = document.createElement('style');
|
||||||
|
styleSheet.textContent = styles;
|
||||||
|
document.head.appendChild(styleSheet);
|
||||||
|
|
||||||
|
// Prevent right-click blocking
|
||||||
|
document.addEventListener('contextmenu', e => e.stopPropagation(), true);
|
||||||
|
|
||||||
|
// Prevent text selection blocking
|
||||||
|
document.addEventListener('selectstart', e => e.stopPropagation(), true);
|
||||||
|
|
||||||
|
// Prevent dragstart blocking
|
||||||
|
document.addEventListener('dragstart', e => e.stopPropagation(), true);
|
||||||
|
|
||||||
|
// Stop blocking copy and cut events
|
||||||
|
document.addEventListener('copy', e => e.stopPropagation(), true);
|
||||||
|
document.addEventListener('cut', e => e.stopPropagation(), true);
|
||||||
|
|
||||||
|
// Prevent scripts from blocking pasting
|
||||||
|
document.addEventListener('paste', e => e.stopPropagation(), true);
|
||||||
|
|
||||||
|
// Optional: Override any inline scripts that may be preventing user actions
|
||||||
|
const scriptOverride = setInterval(() => {
|
||||||
|
const blockers = document.querySelectorAll('script');
|
||||||
|
blockers.forEach(script => {
|
||||||
|
if (script.innerHTML.includes('event.preventDefault()') || script.innerHTML.includes('return false;')) {
|
||||||
|
script.innerHTML = script.innerHTML.replace(/event.preventDefault\(\)/g, '').replace(/return false;/g, '');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, 1000);
|
||||||
|
|
||||||
|
// Stop the interval once all blockers are cleared
|
||||||
|
setTimeout(() => clearInterval(scriptOverride), 5000);
|
||||||
|
})();
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
// ==UserScript==
|
||||||
|
// @name KnowledgeHub - Remove no-copy class
|
||||||
|
// @namespace https://github.com/yourname/
|
||||||
|
// @version 1.0
|
||||||
|
// @description Removes the "no-copy" class from body to allow text selection and copying
|
||||||
|
// @author You
|
||||||
|
// @match https://www.knowledgehub.com/*
|
||||||
|
// @grant none
|
||||||
|
// @run-at document-start
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
document.addEventListener('contextmenu', e => e.stopPropagation(), true);
|
||||||
|
// Prevent text selection blocking
|
||||||
|
document.addEventListener('selectstart', e => e.stopPropagation(), true);
|
||||||
|
|
||||||
|
// Prevent dragstart blocking
|
||||||
|
document.addEventListener('dragstart', e => e.stopPropagation(), true);
|
||||||
|
|
||||||
|
// Stop blocking copy and cut events
|
||||||
|
document.addEventListener('copy', e => e.stopPropagation(), true);
|
||||||
|
document.addEventListener('cut', e => e.stopPropagation(), true);
|
||||||
|
|
||||||
|
// Prevent scripts from blocking pasting
|
||||||
|
document.addEventListener('paste', e => e.stopPropagation(), true);
|
||||||
|
(function() {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
function removeNoCopyClass() {
|
||||||
|
if (document.body) {
|
||||||
|
document.body.classList.remove('no-copy');
|
||||||
|
// Optional: completely clear the class attribute if it only had "no-copy"
|
||||||
|
// document.body.className = document.body.className.replace(/\bno-copy\b/g, '').trim();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Run as early as possible
|
||||||
|
if (document.body) {
|
||||||
|
removeNoCopyClass();
|
||||||
|
} else {
|
||||||
|
// Fallback: wait for body to be available
|
||||||
|
const observer = new MutationObserver(() => {
|
||||||
|
if (document.body) {
|
||||||
|
removeNoCopyClass();
|
||||||
|
observer.disconnect();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
observer.observe(document.documentElement, { childList: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
// Also run again after page is fully loaded (in case the site re-adds the class)
|
||||||
|
window.addEventListener('load', removeNoCopyClass);
|
||||||
|
|
||||||
|
// Optional: re-run every time the class changes (very aggressive)
|
||||||
|
// const classObserver = new MutationObserver(removeNoCopyClass);
|
||||||
|
// if (document.body) classObserver.observe(document.body, { attributes: true, attributeFilter: ['class'] });
|
||||||
|
|
||||||
|
})();
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
// ==UserScript==
|
||||||
|
// @name Rename Tab – Alt+F2
|
||||||
|
// @match *://*/*
|
||||||
|
// @run-at document-start
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
addEventListener('keydown', e=>{
|
||||||
|
if (e.altKey && e.key==='F2') {
|
||||||
|
e.preventDefault();
|
||||||
|
let t = prompt('New title:', document.title);
|
||||||
|
document.title = t?.trim() || document.title;
|
||||||
|
}
|
||||||
|
}, true);
|
||||||
@@ -0,0 +1,213 @@
|
|||||||
|
// ==UserScript==
|
||||||
|
// @name Submit Click (F12) + Copy CURRENT Visible Question (F10)
|
||||||
|
// @namespace vm-submit-click-and-copy-visible-text
|
||||||
|
// @match https://*netacad.com/*
|
||||||
|
// @require https://cdn.jsdelivr.net/npm/@violentmonkey/shortcut@1
|
||||||
|
// @grant none
|
||||||
|
// @version 2.0
|
||||||
|
// @run-at document-end
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// ────────────────────────────────────────────────
|
||||||
|
// Submit button click (F12) – unchanged
|
||||||
|
// ────────────────────────────────────────────────
|
||||||
|
function findSubmitButton() {
|
||||||
|
let btns = document.querySelectorAll('button[aria-label="submit"].submit-button');
|
||||||
|
for (const btn of btns) {
|
||||||
|
const innerDiv = btn.querySelector('div.submit');
|
||||||
|
if (innerDiv && innerDiv.textContent.trim() === 'Submit') return btn;
|
||||||
|
}
|
||||||
|
|
||||||
|
function searchShadows(root) {
|
||||||
|
const walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT);
|
||||||
|
let node;
|
||||||
|
while ((node = walker.nextNode())) {
|
||||||
|
if (node.shadowRoot) {
|
||||||
|
const shadowBtns = node.shadowRoot.querySelectorAll('button[aria-label="submit"].submit-button');
|
||||||
|
for (const btn of shadowBtns) {
|
||||||
|
const innerDiv = btn.querySelector('div.submit');
|
||||||
|
if (innerDiv && innerDiv.textContent.trim() === 'Submit') return btn;
|
||||||
|
}
|
||||||
|
const found = searchShadows(node.shadowRoot);
|
||||||
|
if (found) return found;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return searchShadows(document.body);
|
||||||
|
}
|
||||||
|
|
||||||
|
function triggerSubmitClick() {
|
||||||
|
const btn = findSubmitButton();
|
||||||
|
if (!btn) return false;
|
||||||
|
try { btn.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: window })); } catch {}
|
||||||
|
if (btn.click) try { btn.click(); } catch {}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ────────────────────────────────────────────────
|
||||||
|
// Copy CURRENT visible question text (F10) – improved
|
||||||
|
// ────────────────────────────────────────────────
|
||||||
|
function isVisibleAndInView(el) {
|
||||||
|
if (!el) return false;
|
||||||
|
const style = window.getComputedStyle(el);
|
||||||
|
if (style.display === 'none' || style.visibility === 'hidden' || parseFloat(style.opacity) < 0.1) return false;
|
||||||
|
|
||||||
|
let current = el;
|
||||||
|
let depth = 0;
|
||||||
|
while (current && depth < 15) {
|
||||||
|
const s = window.getComputedStyle(current);
|
||||||
|
if (s.display === 'none' || s.visibility === 'hidden' || parseFloat(s.opacity) < 0.1) return false;
|
||||||
|
current = current.parentElement;
|
||||||
|
depth++;
|
||||||
|
}
|
||||||
|
|
||||||
|
const rect = el.getBoundingClientRect();
|
||||||
|
if (rect.width < 50 || rect.height < 20) return false; // too tiny for question text
|
||||||
|
|
||||||
|
// Roughly in viewport
|
||||||
|
return rect.top > -50 && rect.bottom < (window.innerHeight + 50) &&
|
||||||
|
rect.left > -50 && rect.right < (window.innerWidth + 50);
|
||||||
|
}
|
||||||
|
|
||||||
|
function findCurrentQuestionSpan() {
|
||||||
|
console.log('[TextCopy] Searching for CURRENT visible question (strict mode)...');
|
||||||
|
|
||||||
|
const containerSelectors = [
|
||||||
|
'[class*="body-inner"]',
|
||||||
|
'.mcq__body-inner',
|
||||||
|
'.component__body-inner',
|
||||||
|
'[class*="mcq__body"]',
|
||||||
|
'[class*="component__body"]'
|
||||||
|
];
|
||||||
|
|
||||||
|
const spanSelectors = ['p span', 'p > span', 'span'];
|
||||||
|
|
||||||
|
let candidates = [];
|
||||||
|
|
||||||
|
// Light DOM
|
||||||
|
containerSelectors.forEach(sel => {
|
||||||
|
document.querySelectorAll(sel).forEach(container => {
|
||||||
|
if (!isVisibleAndInView(container)) return;
|
||||||
|
spanSelectors.forEach(sSel => {
|
||||||
|
container.querySelectorAll(sSel).forEach(span => {
|
||||||
|
const txt = span.textContent?.trim();
|
||||||
|
if (!txt || txt.length < 20) return;
|
||||||
|
if (!isVisibleAndInView(span)) return;
|
||||||
|
|
||||||
|
const rect = span.getBoundingClientRect();
|
||||||
|
const area = rect.width * rect.height;
|
||||||
|
const z = parseFloat(window.getComputedStyle(span).zIndex) || 0;
|
||||||
|
const hasQuestionMark = txt.includes('?');
|
||||||
|
|
||||||
|
candidates.push({
|
||||||
|
span,
|
||||||
|
txt,
|
||||||
|
area,
|
||||||
|
zIndex: isNaN(z) ? 0 : z,
|
||||||
|
hasQuestionMark,
|
||||||
|
depth: span.compareDocumentPosition(document.body) // rough DOM order
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Shadow DOM
|
||||||
|
function walkShadows(root) {
|
||||||
|
const walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT);
|
||||||
|
let node;
|
||||||
|
while ((node = walker.nextNode())) {
|
||||||
|
if (node.shadowRoot) {
|
||||||
|
containerSelectors.forEach(sel => {
|
||||||
|
node.shadowRoot.querySelectorAll(sel).forEach(container => {
|
||||||
|
if (!isVisibleAndInView(container)) return;
|
||||||
|
spanSelectors.forEach(sSel => {
|
||||||
|
container.querySelectorAll(sSel).forEach(span => {
|
||||||
|
const txt = span.textContent?.trim();
|
||||||
|
if (!txt || txt.length < 20) return;
|
||||||
|
if (!isVisibleAndInView(span)) return;
|
||||||
|
|
||||||
|
const rect = span.getBoundingClientRect();
|
||||||
|
const area = rect.width * rect.height;
|
||||||
|
const z = parseFloat(window.getComputedStyle(span).zIndex) || 0;
|
||||||
|
const hasQuestionMark = txt.includes('?');
|
||||||
|
|
||||||
|
candidates.push({
|
||||||
|
span,
|
||||||
|
txt,
|
||||||
|
area,
|
||||||
|
zIndex: isNaN(z) ? 0 : z,
|
||||||
|
hasQuestionMark,
|
||||||
|
depth: span.compareDocumentPosition(document.body)
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
walkShadows(node.shadowRoot);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
walkShadows(document.body);
|
||||||
|
|
||||||
|
if (candidates.length === 0) {
|
||||||
|
console.log('[TextCopy] No visible candidates found');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sort: prefer question mark → higher z-index → larger area → earlier in DOM
|
||||||
|
candidates.sort((a, b) => {
|
||||||
|
if (a.hasQuestionMark !== b.hasQuestionMark) return b.hasQuestionMark - a.hasQuestionMark;
|
||||||
|
if (a.zIndex !== b.zIndex) return b.zIndex - a.zIndex;
|
||||||
|
if (a.area !== b.area) return b.area - a.area;
|
||||||
|
return a.depth - b.depth;
|
||||||
|
});
|
||||||
|
|
||||||
|
const best = candidates[0];
|
||||||
|
console.log('[TextCopy] Selected:', best.txt.substring(0, 120) + (best.txt.length > 120 ? '...' : ''));
|
||||||
|
console.log('[TextCopy] Stats → area:', best.area, '| z-index:', best.zIndex, '| has ?:', best.hasQuestionMark, '| candidates total:', candidates.length);
|
||||||
|
|
||||||
|
return best.span;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function copyCurrentQuestion() {
|
||||||
|
const el = findCurrentQuestionSpan();
|
||||||
|
if (!el) return;
|
||||||
|
|
||||||
|
const text = el.textContent?.trim() || '';
|
||||||
|
if (!text) return;
|
||||||
|
|
||||||
|
console.log('[TextCopy] Copying:', text.substring(0, 120) + (text.length > 120 ? '...' : ''));
|
||||||
|
|
||||||
|
try {
|
||||||
|
await navigator.clipboard.writeText(text);
|
||||||
|
console.log('[TextCopy] SUCCESS – current question copied');
|
||||||
|
} catch (err) {
|
||||||
|
console.error('[TextCopy] Clipboard failed:', err);
|
||||||
|
const ta = document.createElement('textarea');
|
||||||
|
ta.value = text;
|
||||||
|
ta.style.position = 'fixed'; ta.style.opacity = '0';
|
||||||
|
document.body.appendChild(ta);
|
||||||
|
ta.select();
|
||||||
|
document.execCommand('copy');
|
||||||
|
document.body.removeChild(ta);
|
||||||
|
console.log('[TextCopy] Fallback copy done');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ────────────────────────────────────────────────
|
||||||
|
// Hotkeys
|
||||||
|
// ────────────────────────────────────────────────
|
||||||
|
VM.shortcut.register('f12', () => {
|
||||||
|
setTimeout(() => { if (!triggerSubmitClick()) setTimeout(triggerSubmitClick, 400); }, 60);
|
||||||
|
});
|
||||||
|
|
||||||
|
VM.shortcut.register('f10', copyCurrentQuestion);
|
||||||
|
|
||||||
|
console.log('[VM-Tools] Loaded v2.0 → F12 = Submit | F10 = Copy CURRENT visible question (strict visibility)');
|
||||||
|
})();
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
// ==UserScript==
|
||||||
|
// @name Ucertify Tests F12 to Next Question
|
||||||
|
// @namespace Violentmonkey Scripts
|
||||||
|
// @match https://*ucertify.com/*
|
||||||
|
// @grant none
|
||||||
|
// @version 1.0
|
||||||
|
// @author -
|
||||||
|
// @description 2/4/2026, 2:39:45 PM
|
||||||
|
// @require https://cdn.jsdelivr.net/npm/@violentmonkey/shortcut@1
|
||||||
|
// ==/UserScript==
|
||||||
|
function clickNexT(){
|
||||||
|
next.click()
|
||||||
|
}
|
||||||
|
VM.shortcut.register('F12', () =>
|
||||||
|
clickNexT()
|
||||||
|
);
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
// ==UserScript==
|
||||||
|
// @name Rename Tab – Alt+F2
|
||||||
|
// @match *://*/*
|
||||||
|
// @run-at document-start
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
addEventListener('keydown', e=>{
|
||||||
|
if (e.altKey && e.key==='F2') {
|
||||||
|
e.preventDefault();
|
||||||
|
let t = prompt('New title:', document.title);
|
||||||
|
document.title = t?.trim() || document.title;
|
||||||
|
}
|
||||||
|
}, true);
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
// ==UserScript==
|
||||||
|
// @name Force Enable Right Click, Copy & Paste
|
||||||
|
// @version 3.0
|
||||||
|
// @description Re-enables right click, text selection, and copying/pasting on all sites
|
||||||
|
// @author You
|
||||||
|
// @match https://www.netacad.com/*
|
||||||
|
// @match https://*ucertify.com/*
|
||||||
|
// @grant none
|
||||||
|
// @run-at document-start
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// Re-enable text selection and right-click
|
||||||
|
const styles = `* { user-select: auto !important; -webkit-user-select: auto !important; pointer-events: auto !important; }`;
|
||||||
|
const styleSheet = document.createElement('style');
|
||||||
|
styleSheet.textContent = styles;
|
||||||
|
document.head.appendChild(styleSheet);
|
||||||
|
|
||||||
|
// Prevent right-click blocking
|
||||||
|
document.addEventListener('contextmenu', e => e.stopPropagation(), true);
|
||||||
|
|
||||||
|
// Prevent text selection blocking
|
||||||
|
document.addEventListener('selectstart', e => e.stopPropagation(), true);
|
||||||
|
|
||||||
|
// Prevent dragstart blocking
|
||||||
|
document.addEventListener('dragstart', e => e.stopPropagation(), true);
|
||||||
|
|
||||||
|
// Stop blocking copy and cut events
|
||||||
|
document.addEventListener('copy', e => e.stopPropagation(), true);
|
||||||
|
document.addEventListener('cut', e => e.stopPropagation(), true);
|
||||||
|
|
||||||
|
// Prevent scripts from blocking pasting
|
||||||
|
document.addEventListener('paste', e => e.stopPropagation(), true);
|
||||||
|
|
||||||
|
// Optional: Override any inline scripts that may be preventing user actions
|
||||||
|
const scriptOverride = setInterval(() => {
|
||||||
|
const blockers = document.querySelectorAll('script');
|
||||||
|
blockers.forEach(script => {
|
||||||
|
if (script.innerHTML.includes('event.preventDefault()') || script.innerHTML.includes('return false;')) {
|
||||||
|
script.innerHTML = script.innerHTML.replace(/event.preventDefault\(\)/g, '').replace(/return false;/g, '');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, 1000);
|
||||||
|
|
||||||
|
// Stop the interval once all blockers are cleared
|
||||||
|
setTimeout(() => clearInterval(scriptOverride), 5000);
|
||||||
|
})();
|
||||||
@@ -0,0 +1,110 @@
|
|||||||
|
// ==UserScript==
|
||||||
|
// @name Click "Submit" arrow button on F12
|
||||||
|
// @namespace vm-click-submit-arrow
|
||||||
|
// @match https://*netacad.com/*
|
||||||
|
// @require https://cdn.jsdelivr.net/npm/@violentmonkey/shortcut@1
|
||||||
|
// @grant none
|
||||||
|
// @version 1.5
|
||||||
|
// @run-at document-end
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
function findSubmitButton() {
|
||||||
|
// Primary search: light DOM + exact attributes & content
|
||||||
|
let btns = document.querySelectorAll('button[aria-label="submit"].submit-button');
|
||||||
|
|
||||||
|
for (const btn of btns) {
|
||||||
|
const innerDiv = btn.querySelector('div.submit');
|
||||||
|
if (innerDiv && innerDiv.textContent.trim() === 'Submit') {
|
||||||
|
console.log('[SubmitClick] Exact match found in light DOM');
|
||||||
|
return btn;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deep shadow DOM recursive search
|
||||||
|
function searchShadows(root) {
|
||||||
|
const walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT);
|
||||||
|
let node;
|
||||||
|
while ((node = walker.nextNode())) {
|
||||||
|
if (node.shadowRoot) {
|
||||||
|
const shadowBtns = node.shadowRoot.querySelectorAll('button[aria-label="submit"].submit-button');
|
||||||
|
for (const btn of shadowBtns) {
|
||||||
|
const innerDiv = btn.querySelector('div.submit');
|
||||||
|
if (innerDiv && innerDiv.textContent.trim() === 'Submit') {
|
||||||
|
console.log('[SubmitClick] Found in shadow root of:', node.tagName.toLowerCase());
|
||||||
|
return btn;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Recurse deeper
|
||||||
|
const found = searchShadows(node.shadowRoot);
|
||||||
|
if (found) return found;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const shadowResult = searchShadows(document.body);
|
||||||
|
if (shadowResult) return shadowResult;
|
||||||
|
|
||||||
|
console.log('[SubmitClick] No Submit button detected yet (aria-label + div.submit + text "Submit")');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function triggerClick() {
|
||||||
|
const btn = findSubmitButton();
|
||||||
|
|
||||||
|
if (!btn) {
|
||||||
|
console.log('[SubmitClick] → Submit button not found yet');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('[SubmitClick] → Found Submit button, clicking it');
|
||||||
|
|
||||||
|
// Synthetic click event
|
||||||
|
try {
|
||||||
|
const clickEvent = new MouseEvent('click', {
|
||||||
|
bubbles: true,
|
||||||
|
cancelable: true,
|
||||||
|
view: window,
|
||||||
|
detail: 1
|
||||||
|
});
|
||||||
|
btn.dispatchEvent(clickEvent);
|
||||||
|
} catch (err) {
|
||||||
|
console.warn('[SubmitClick] dispatchEvent failed', err);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Direct .click() fallback
|
||||||
|
if (typeof btn.click === 'function') {
|
||||||
|
try {
|
||||||
|
btn.click();
|
||||||
|
} catch (err) {
|
||||||
|
console.warn('[SubmitClick] .click() failed', err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
VM.shortcut.register('f12', () => {
|
||||||
|
setTimeout(() => {
|
||||||
|
if (!triggerClick()) {
|
||||||
|
// Extra retry for slow-rendering elements
|
||||||
|
setTimeout(triggerClick, 400);
|
||||||
|
}
|
||||||
|
}, 60);
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log('[SubmitClick] Loaded – press F12 to click the Submit button');
|
||||||
|
|
||||||
|
// Optional: uncomment for auto-click every ~1.5 seconds until success
|
||||||
|
/*
|
||||||
|
const autoInterval = setInterval(() => {
|
||||||
|
if (triggerClick()) {
|
||||||
|
clearInterval(autoInterval);
|
||||||
|
console.log('[SubmitClick] Auto-click successful – stopping checks');
|
||||||
|
}
|
||||||
|
}, 1500);
|
||||||
|
*/
|
||||||
|
})();
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
// ==UserScript==
|
||||||
|
// @name Ucertify Tests F12 to Next Question
|
||||||
|
// @namespace Violentmonkey Scripts
|
||||||
|
// @match https://*ucertify.com/*
|
||||||
|
// @grant none
|
||||||
|
// @version 1.0
|
||||||
|
// @author -
|
||||||
|
// @description 2/4/2026, 2:39:45 PM
|
||||||
|
// @require https://cdn.jsdelivr.net/npm/@violentmonkey/shortcut@1
|
||||||
|
// ==/UserScript==
|
||||||
|
function clickNexT(){
|
||||||
|
next.click()
|
||||||
|
}
|
||||||
|
VM.shortcut.register('F12', () =>
|
||||||
|
clickNexT()
|
||||||
|
);
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
// ==UserScript==
|
||||||
|
// @name Fast Timesheets
|
||||||
|
// @namespace Violentmonkey Scripts
|
||||||
|
// @grant none
|
||||||
|
// @version 1.0
|
||||||
|
// @author -
|
||||||
|
// @match https://wd5.myworkday.com/*
|
||||||
|
// @description 2/3/2026, 1:18:01 PM
|
||||||
|
// @require https://cdn.jsdelivr.net/npm/@violentmonkey/shortcut@1
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
function clickThing(){
|
||||||
|
document.querySelector("[data-automation-id='promptIcon']").click();
|
||||||
|
//document.querySelector("[data-automation-id='promptSearchButton']").click();
|
||||||
|
}
|
||||||
|
function clickThing2(){
|
||||||
|
document.querySelector("[data-automation-label='Regular Hours Worked']").click();
|
||||||
|
}
|
||||||
|
function clickThing3(){
|
||||||
|
document.querySelectorAll("[data-automation-id='wd-CommandButton']")[4].click()
|
||||||
|
}
|
||||||
|
|
||||||
|
VM.shortcut.register('F1', () =>
|
||||||
|
clickThing()
|
||||||
|
);
|
||||||
|
VM.shortcut.register('F2', () =>
|
||||||
|
clickThing2()
|
||||||
|
);
|
||||||
|
VM.shortcut.register('F3', () =>
|
||||||
|
clickThing3()
|
||||||
|
);
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
// ==UserScript==
|
||||||
|
// @name CW Auto-Closer
|
||||||
|
// @namespace Violentmonkey Scripts
|
||||||
|
// @match https://sc.247mgmt.com/App_Extensions/*
|
||||||
|
// @grant none
|
||||||
|
// @version 1.0
|
||||||
|
// @noframes
|
||||||
|
// @author -
|
||||||
|
// @description 8/21/2024, 4:41:25 PM
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
//Connectwise doesn't auto-close tabs
|
||||||
|
//This is a workaround
|
||||||
|
|
||||||
|
//Works most of the time, but VM userscripts are jank and sometimes break for no reason
|
||||||
|
|
||||||
|
function wait(ms) {
|
||||||
|
return new Promise(resolve => setTimeout(resolve, ms));
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
wait(500).then(() => window.close());
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
// ==UserScript==
|
||||||
|
// @name ClipHTMLEdit
|
||||||
|
// @namespace Violentmonkey Scripts
|
||||||
|
// @version 1.0
|
||||||
|
// @author -
|
||||||
|
// @grant GM.setClipboard
|
||||||
|
// @grant GM.getClipboard
|
||||||
|
// @description 6/18/2024, 12:25:28 PM
|
||||||
|
// @match https://wiki.gianluccapirovano.com/*
|
||||||
|
// @require https://cdn.jsdelivr.net/npm/@violentmonkey/shortcut@1
|
||||||
|
// ==/UserScript==
|
||||||
|
var mariohtml
|
||||||
|
navigator.clipboard.read()
|
||||||
|
|
||||||
|
|
||||||
|
VM.shortcut.register('a-1', () => {
|
||||||
|
var htmltext = prompt("What do you want to copy as html?", mariohtml)
|
||||||
|
GM.setClipboard(htmltext, 'text/html')
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
VM.shortcut.register('a-2', async () => {
|
||||||
|
const clipboardContents = await navigator.clipboard.read({
|
||||||
|
unsanitized: ["text/html"],
|
||||||
|
});
|
||||||
|
mariohtml = await getHTMLFromClipboardContents(clipboardContents);
|
||||||
|
window.alert(mariohtml)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
async function getHTMLFromClipboardContents(clipboardContents) {
|
||||||
|
for (const item of clipboardContents) {
|
||||||
|
if (item.types.includes("text/html")) {
|
||||||
|
const blob = await item.getType("text/html");
|
||||||
|
const blobText = await blob.text();
|
||||||
|
return blobText;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
@@ -0,0 +1,111 @@
|
|||||||
|
// ==UserScript==
|
||||||
|
// @name ConnectWiseManageEqualSignRebind
|
||||||
|
// @namespace Violentmonkey Scripts
|
||||||
|
// @match https://na.myconnectwise.net/*
|
||||||
|
// @match https://app.powerbi.com/*
|
||||||
|
// @grant GM.openInTab
|
||||||
|
// @grant GM.getValue
|
||||||
|
// @grant GM.setValue
|
||||||
|
// @grant GM.setClipboard
|
||||||
|
// @grant GM.getClipboard
|
||||||
|
// @version 1.0
|
||||||
|
// @author -
|
||||||
|
// @require https://cdn.jsdelivr.net/npm/@violentmonkey/shortcut@1
|
||||||
|
// ==/UserScript==
|
||||||
|
VM.shortcut.register('=', () => {
|
||||||
|
getTicketInfo();
|
||||||
|
copyPodPost(contact+" @ "+company+"\n\n"+detailLabel+"\n\n"+initialDescription+"");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-=', () => {
|
||||||
|
getTicketInfo();
|
||||||
|
getMoreTicketInfo();
|
||||||
|
copyPodPost(contact+" @ "+company+"\n\n"+detailLabel+"\n\n"+initialDescription+"\n\n"+internalNote+"\n\n");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-=', () => {
|
||||||
|
getTicketInfo();
|
||||||
|
copyPodPost(contact+" @ "+company+"\n\n"+detailLabel+"");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-a-=', () => {
|
||||||
|
getTicketInfo();
|
||||||
|
copyPodPost(contact+" @ "+company+"\n\n"+detailLabel+"\n\nClient is calling to get in touch with @"+assignedTech+" ");
|
||||||
|
});
|
||||||
|
|
||||||
|
//Functions below
|
||||||
|
function focusSlaMonitoring(){
|
||||||
|
putTextIntoClass('cw_CwComboBox', 2, 'Response SLA Monitoring');
|
||||||
|
clickClass('cw-ml-search-button', 0);
|
||||||
|
}
|
||||||
|
async function doTimeSheet(startTime, endTime, chargeTo){
|
||||||
|
await putTextIntoClass("cw_ChargeToTextBox", 0, chargeTo);
|
||||||
|
await focusClass("cw_startTime", 0);
|
||||||
|
await putTextIntoClass("cw_startTime", 0, startTime);
|
||||||
|
await focusClass("cw_endTime", 0);
|
||||||
|
await putTextIntoClass("cw_endTime", 0, endTime);
|
||||||
|
await focusClass("cw_ChargeToTextBox", 0);
|
||||||
|
await new Promise(r => setTimeout(r, 800));
|
||||||
|
await clickClass("cw_Refresh", 0);
|
||||||
|
await new Promise(r => setTimeout(r, 1200));
|
||||||
|
await contains("span", chargeTo)[0].click();
|
||||||
|
await new Promise(r => setTimeout(r, 500));
|
||||||
|
await clickClass("cw_ToolbarButton_SaveAndClose", 0);
|
||||||
|
};
|
||||||
|
async function doTimeSheetMini(chargeTo){
|
||||||
|
await putTextIntoClass("cw_ChargeToTextBox", 0, chargeTo);
|
||||||
|
await focusClass("cw_ChargeToTextBox", 0);
|
||||||
|
await new Promise(r => setTimeout(r, 800));
|
||||||
|
await clickClass("cw_Refresh", 0);
|
||||||
|
await new Promise(r => setTimeout(r, 1200));
|
||||||
|
await contains("span", chargeTo)[0].click();
|
||||||
|
//await new Promise(r => setTimeout(r, 500));
|
||||||
|
//await clickClass("cw_ToolbarButton_SaveAndClose", 0);
|
||||||
|
};
|
||||||
|
function contains(selector, text) {
|
||||||
|
var elements = document.querySelectorAll(selector);
|
||||||
|
return Array.prototype.filter.call(elements, function(element){
|
||||||
|
return RegExp(text).test(element.textContent);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function getTicketInfo(){
|
||||||
|
contactinput = null;
|
||||||
|
document.querySelector('[data-id="internal"]').click(); // click internal note so we can pull it later
|
||||||
|
contact = getByClass('cw_contact', 0);
|
||||||
|
contactinput = prompt("What is the caller's name?", contact);
|
||||||
|
contact = contactinput;
|
||||||
|
company = getByClass('cw_company', 0);
|
||||||
|
detailLabel = getInnerTextByClass('detailLabel', 0);
|
||||||
|
assignedTech = getByClass('cw_ticketOwner', 0);
|
||||||
|
initialDescription = getInnerTextByClass('TicketNote-rowNote', 0);
|
||||||
|
};
|
||||||
|
function getMoreTicketInfo(){
|
||||||
|
internalNote = getInnerTextByClass('TicketNote-noteLabel', 1);
|
||||||
|
};
|
||||||
|
function copyPodPost(podPost){
|
||||||
|
if (contactinput === null){ //terminate function if user hits cancel button or provides no input
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
GM.setClipboard(podPost, 'text/plain')
|
||||||
|
window.alert(podPost);
|
||||||
|
};
|
||||||
|
function clickClass(theClass, elementIndex){
|
||||||
|
var elements = document.getElementsByClassName(theClass);
|
||||||
|
var requiredElement = elements[elementIndex];
|
||||||
|
requiredElement.click();
|
||||||
|
};
|
||||||
|
function focusClass(theClass, elementIndex){
|
||||||
|
var elements = document.getElementsByClassName(theClass);
|
||||||
|
var requiredElement = elements[elementIndex];
|
||||||
|
requiredElement.focus();
|
||||||
|
};
|
||||||
|
function getByClass(theClass, elementIndex){
|
||||||
|
var elements = document.getElementsByClassName(theClass); var requiredElement = elements[elementIndex]; return requiredElement.value;
|
||||||
|
};
|
||||||
|
function getInnerTextByClass(theClass, elementIndex){
|
||||||
|
var elements = document.getElementsByClassName(theClass); var requiredElement = elements[elementIndex]; return requiredElement.innerText;
|
||||||
|
};
|
||||||
|
function putTextIntoClass(theClass, elementIndex, text){
|
||||||
|
var elements = document.getElementsByClassName(theClass); var requiredElement = elements[elementIndex]; requiredElement.value = text;
|
||||||
|
};
|
||||||
|
function setStatus(desiredStatus){
|
||||||
|
focusClass("cw_status", 0);
|
||||||
|
putTextIntoClass("cw_status", 0, desiredStatus);
|
||||||
|
}
|
||||||
@@ -0,0 +1,392 @@
|
|||||||
|
// ==UserScript==
|
||||||
|
// @name New script - myconnectwise.net
|
||||||
|
// @namespace Violentmonkey Scripts
|
||||||
|
// @match https://na.myconnectwise.net/*
|
||||||
|
// @match https://app.powerbi.com/*
|
||||||
|
// @grant GM.openInTab
|
||||||
|
// @grant GM.getValue
|
||||||
|
// @grant GM.setValue
|
||||||
|
// @grant GM.setClipboard
|
||||||
|
// @version 1.0
|
||||||
|
// @author -
|
||||||
|
// @require https://cdn.jsdelivr.net/npm/@violentmonkey/shortcut@1
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
//Declare global variables
|
||||||
|
var contact = ""
|
||||||
|
var contactinput = ""
|
||||||
|
var company = ""
|
||||||
|
var detailLabel = ""
|
||||||
|
var initialDescription = ""
|
||||||
|
var internalNote = ""
|
||||||
|
var assignedTech = ""
|
||||||
|
var assignedPod = ""
|
||||||
|
var ticketlink = ""
|
||||||
|
var ticketnumber = ""
|
||||||
|
var detailLabelSplit = ""
|
||||||
|
var oldTime = ""
|
||||||
|
var newTime = ""
|
||||||
|
|
||||||
|
//Hotkeys
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
VM.shortcut.register('c-a-s', () => {
|
||||||
|
company = getByClass('cw_company', 0);
|
||||||
|
GM.setClipboard("https://hudu.247mgmt.com/c?tab=&page=&sort_direction=&sort_column=&tag=&folder=&query="+company);
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-i', () => {
|
||||||
|
document.querySelector('[data-id="internal"]').click();
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-s-i', () => {
|
||||||
|
document.querySelector('[data-id="discussion"]').click();
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-r', () => {
|
||||||
|
document.querySelector('[data-id="resolution"]').click();
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-1', () => {
|
||||||
|
setStatus("In Progress")
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-s-!', () => {
|
||||||
|
setStatus("In Queue")
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-s-!', () => {
|
||||||
|
setStatus("In Chat")
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-2', () => {
|
||||||
|
setStatus("New Via Phone")
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-s-@', () => {
|
||||||
|
setStatus("New Transfer From Triage")
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-3', () => {
|
||||||
|
setStatus("Pending Tech Assignment")
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-s-#', () => {
|
||||||
|
setStatus("Agent Responded")
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-4', () => {
|
||||||
|
setStatus("Completed (Closed)")
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-s-$', () => {
|
||||||
|
setStatus("Enter Time")
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-5', () => {
|
||||||
|
setStatus("Waiting on client")
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-s-%', () => {
|
||||||
|
setStatus("Canceled")
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-6', () => {
|
||||||
|
setStatus("Scheduled for Remote")
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-s-^', () => {
|
||||||
|
putTextIntoClass("cw_workType", 0, "Voicemail/Email")
|
||||||
|
focusClass("cw_workType", 0)
|
||||||
|
focusClass("public-DraftEditor-content", 0)
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-a-1', () => {
|
||||||
|
document.title="Contact"
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-a-2', () => {
|
||||||
|
document.title="Companies"
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-a-3', () => {
|
||||||
|
document.title="In Queue"
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-a-4', () => {
|
||||||
|
document.title="SLA"
|
||||||
|
focusSlaMonitoring();
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-a-5', () => {
|
||||||
|
document.title="Triage"
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-a-6', () => {
|
||||||
|
document.title="Ticket Search"
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-a-s-W', () => {
|
||||||
|
company = getByClass('cw_company', 0);
|
||||||
|
GM.setValue('company', company);
|
||||||
|
GM.setValue('pod', "");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-a-s-R', () => {
|
||||||
|
clickClass("multilineClickable", 1)
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-a-s', () => {
|
||||||
|
assignedPod = ""
|
||||||
|
async function setPod(){
|
||||||
|
assignedPod = await GM.getValue("pod", 0);
|
||||||
|
await focusClass("cw_serviceBoard", 0);
|
||||||
|
await putTextIntoClass("cw_serviceBoard", 0, assignedPod + " - *Support");
|
||||||
|
}setPod();
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-s-s', () => {
|
||||||
|
clickClass("cw_ToolbarButton_Save", 0);
|
||||||
|
});
|
||||||
|
VM.shortcut.register('m--', () => {
|
||||||
|
clickClass("cw-gxt-wnd-cls", 0);
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-Delete', () => {
|
||||||
|
clickClass("cw-gxt-wnd-cls", 0);
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-s-Delete', () => {
|
||||||
|
clickClass("cw_CwNegativeActionButton", 0);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
//TICKET NOTE SHORTCUTS START
|
||||||
|
VM.shortcut.register('a-contextmenu', () => {
|
||||||
|
clickClass('TicketNote-newNoteButton', 0);
|
||||||
|
});
|
||||||
|
VM.shortcut.register('f3', () => {
|
||||||
|
clickClass('TicketNote-newNoteButton', 0);
|
||||||
|
});
|
||||||
|
VM.shortcut.register('s-f3', () => {
|
||||||
|
clickClass('cw_isEnteringTime', 0);
|
||||||
|
clickClass('DraftEditor-editorContainer', 0);
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-f3', () => {
|
||||||
|
clickClass('cw_isDiscussion', 0);
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-f3', () => {
|
||||||
|
clickClass('cw_isInternal', 0);
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-a-f3', () => {
|
||||||
|
clickClass('cw_isResolution', 0);
|
||||||
|
});
|
||||||
|
VM.shortcut.register('m-s-f4', () => {
|
||||||
|
clickClass('cw_isToContact', 0);
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-s-f4', () => {
|
||||||
|
clickClass('cw_isToResources', 0);
|
||||||
|
});
|
||||||
|
VM.shortcut.register('m-f4', () => {
|
||||||
|
clickClass('cw_isToCcs', 0);
|
||||||
|
});
|
||||||
|
VM.shortcut.register('m-[', () => {
|
||||||
|
getElementByClass("cw_btnStartTime", 0).children[0].click()
|
||||||
|
});
|
||||||
|
VM.shortcut.register('m-s-{', () => {
|
||||||
|
document.querySelector('[title="Start Time"]').click()
|
||||||
|
});
|
||||||
|
VM.shortcut.register('m-]', () => {
|
||||||
|
getElementByClass("cw_btnEndTime", 0).children[0].click()
|
||||||
|
});
|
||||||
|
VM.shortcut.register('m-s-}', () => {
|
||||||
|
//window.alert(getElementByClass("cw_endTime", 0).value)
|
||||||
|
getElementByClass("cw_btnEndTime", 0).children[0].click()
|
||||||
|
oldTime = getElementByClass("cw_endTime", 0).value
|
||||||
|
let newTime = addMinute(oldTime);
|
||||||
|
focusClass("cw_endTime", 0);
|
||||||
|
putTextIntoClass("cw_endTime", 0, newTime);
|
||||||
|
focusClass("public-DraftEditor-content", 0)
|
||||||
|
});
|
||||||
|
//TICKET NOTE SHORTCUTS END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
VM.shortcut.register('f10', () => {
|
||||||
|
getTicketInfo();
|
||||||
|
copyPodPost(contact+" @ "+company+"<br><br>"+detailLabel+"<br><br>"+initialDescription+"<br><br>");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-f10', () => {
|
||||||
|
getTicketInfo();
|
||||||
|
getMoreTicketInfo();
|
||||||
|
copyPodPost(contact+" @ "+company+"<br><br>"+detailLabel+"<br><br>"+initialDescription+"<br><br>"+internalNote+"<br><br>");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-f10', () => {
|
||||||
|
getTicketInfo();
|
||||||
|
copyPodPost(contact+" @ "+company+"<br><br>"+detailLabel+"<br><br>");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-a-f10', () => {
|
||||||
|
getTicketInfo();
|
||||||
|
copyPodPost(contact+" @ "+company+"<br><br>"+detailLabel+"<br><br>Client is calling to get in touch with @"+assignedTech+" ");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('m-f10', () => {
|
||||||
|
getTicketInfo();
|
||||||
|
copyPodPost(detailLabel);
|
||||||
|
});
|
||||||
|
VM.shortcut.register('m-s-f10', () => {
|
||||||
|
ticketLabel = getInnerTextByClass('detailLabel', 0);
|
||||||
|
GM.setClipboard(ticketLabel);
|
||||||
|
window.alert("Copied to clipboard: "+ticketLabel);
|
||||||
|
});
|
||||||
|
VM.shortcut.register('f6', () => {
|
||||||
|
clickClass('cw-toolbar-clear', 0);
|
||||||
|
clickClass('cw-ml-search-button', 0);
|
||||||
|
});
|
||||||
|
VM.shortcut.register('s-f6', () => {
|
||||||
|
clickClass('cw_ToolbarButton_Refresh', 0);
|
||||||
|
});
|
||||||
|
VM.shortcut.register('f7', () => {
|
||||||
|
clickClass('cw_ToolbarButton_Refresh', 0);
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-a-BackSpace', () => {
|
||||||
|
clickClass('cw_ToolbarButton_Back', 0);
|
||||||
|
clickClass('cw-gxt-wnd-cls', 0);
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a--', () => {
|
||||||
|
clickClass('cw_ToolbarButton_Back', 0);
|
||||||
|
clickClass('cw-gxt-wnd-cls', 0);
|
||||||
|
});
|
||||||
|
VM.shortcut.register('f12', () => {
|
||||||
|
doTimeSheet("9:00 AM", "2:30 PM", "Mentoring");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-f12', () => {
|
||||||
|
doTimeSheet("3:30 PM", "4:30 PM", "Lunch Break");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('s-f12', () => {
|
||||||
|
doTimeSheet("4:30 PM", "6:00 PM", "Mentoring");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-a-f12', () => {
|
||||||
|
doTimeSheetMini("Call Queue");
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
//PowerBI Script Start
|
||||||
|
var pod
|
||||||
|
VM.shortcut.register('f2', () => {
|
||||||
|
document.querySelector('[aria-label="Navigating to visual"]').focus();
|
||||||
|
document.querySelector('[aria-label="enter your search"]').focus();
|
||||||
|
});
|
||||||
|
VM.shortcut.register('s-f2', () => {
|
||||||
|
async function pasteCompany(){
|
||||||
|
company = await GM.getValue('company', 0);
|
||||||
|
document.querySelector('[aria-label="Enter your search"]').value = company;
|
||||||
|
}pasteCompany();
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-f2', () => {
|
||||||
|
//pod = document.querySelector("#pvExplorationHost > div > div > exploration > div > explore-canvas > div > div.canvasFlexBox > div > div.displayArea.disableAnimations.fitToPage > div.visualContainerHost.visualContainerOutOfFocus > visual-container-repeat > visual-container:nth-child(2) > transform > div > div.visualContent > div > div > visual-modern > div > div > div.pivotTable > div.interactive-grid.innerContainer > div.mid-viewport > div > div:nth-child(1) > div.scrollable-cells-viewport > div > div:nth-child(2)").innerText
|
||||||
|
pod = document.querySelector("#pvExplorationHost > div > div > exploration > div > explore-canvas > div > div.canvasFlexBox > div > div.displayArea.disableAnimations.fitToPage > div.visualContainerHost.visualContainerOutOfFocus > visual-container-repeat > visual-container:nth-child(3) > transform > div > div.visualContent > div > div > visual-modern > div > div > div.pivotTable > div.interactive-grid.innerContainer > div.mid-viewport > div > div > div.scrollable-cells-viewport > div > div:nth-child(2)").innerText
|
||||||
|
pod = pod.replace(/\u00a0/g, " ");
|
||||||
|
podFirst = pod.split(" ")[0];
|
||||||
|
podFirstUp = podFirst.toUpperCase();
|
||||||
|
GM.setValue('pod', podFirstUp)
|
||||||
|
});
|
||||||
|
//PowerBI Script END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//Functions
|
||||||
|
function addMinute(timeStr) {
|
||||||
|
// Parse the time string
|
||||||
|
let [time, modifier] = timeStr.split(' ');
|
||||||
|
let [hours, minutes] = time.split(':').map(Number);
|
||||||
|
|
||||||
|
// Add one minute
|
||||||
|
minutes += 1;
|
||||||
|
|
||||||
|
// Handle minute overflow
|
||||||
|
if (minutes === 60) {
|
||||||
|
minutes = 0;
|
||||||
|
hours += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle hour overflow and AM/PM switch
|
||||||
|
if (hours === 12) {
|
||||||
|
modifier = modifier === 'AM' ? 'PM' : 'AM';
|
||||||
|
} else if (hours === 13) {
|
||||||
|
hours = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Format the new time string
|
||||||
|
let newTimeStr = `${hours}:${minutes.toString().padStart(2, '0')} ${modifier}`;
|
||||||
|
return newTimeStr;
|
||||||
|
}
|
||||||
|
function focusSlaMonitoring(){
|
||||||
|
putTextIntoClass('cw_CwComboBox', 2, 'Response SLA Monitoring');
|
||||||
|
clickClass('cw-ml-search-button', 0);
|
||||||
|
}
|
||||||
|
async function doTimeSheet(startTime, endTime, chargeTo){
|
||||||
|
await putTextIntoClass("cw_ChargeToTextBox", 0, chargeTo);
|
||||||
|
await focusClass("cw_startTime", 0);
|
||||||
|
await putTextIntoClass("cw_startTime", 0, startTime);
|
||||||
|
await focusClass("cw_endTime", 0);
|
||||||
|
await putTextIntoClass("cw_endTime", 0, endTime);
|
||||||
|
await focusClass("cw_ChargeToTextBox", 0);
|
||||||
|
await new Promise(r => setTimeout(r, 800));
|
||||||
|
await clickClass("cw_Refresh", 0);
|
||||||
|
await new Promise(r => setTimeout(r, 1200));
|
||||||
|
await contains("span", chargeTo)[0].click();
|
||||||
|
await new Promise(r => setTimeout(r, 500));
|
||||||
|
// await clickClass("cw_ToolbarButton_SaveAndClose", 0);
|
||||||
|
};
|
||||||
|
async function doTimeSheetMini(chargeTo){
|
||||||
|
await putTextIntoClass("cw_ChargeToTextBox", 0, chargeTo);
|
||||||
|
await focusClass("cw_ChargeToTextBox", 0);
|
||||||
|
await new Promise(r => setTimeout(r, 800));
|
||||||
|
await clickClass("cw_Refresh", 0);
|
||||||
|
await new Promise(r => setTimeout(r, 1200));
|
||||||
|
await contains("span", chargeTo)[0].click();
|
||||||
|
//await new Promise(r => setTimeout(r, 500));
|
||||||
|
//await clickClass("cw_ToolbarButton_SaveAndClose", 0);
|
||||||
|
};
|
||||||
|
function contains(selector, text) {
|
||||||
|
var elements = document.querySelectorAll(selector);
|
||||||
|
return Array.prototype.filter.call(elements, function(element){
|
||||||
|
return RegExp(text).test(element.textContent);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function getTicketInfo(){
|
||||||
|
contactinput = null;
|
||||||
|
document.querySelector('[data-id="internal"]').click(); // click internal note so we can pull it later
|
||||||
|
contact = getByClass('cw_contact', 0);
|
||||||
|
company = getByClass('cw_company', 0);
|
||||||
|
detailLabel = getInnerTextByClass('detailLabel', 0);
|
||||||
|
detailLabelSplit = detailLabel.split(" ");
|
||||||
|
ticketnumber = detailLabelSplit[2].replace("#", "");
|
||||||
|
ticketlink = "<a class='ui-text byt bew bxw byu byv byw' dir='auto' data-nav='true' title='https://na.myconnectwise.net/v4_6_release/services/system_io/router/openrecord.rails?companyName=wheelhouseit&recordType=ServiceFv&recid=TICKETLINKNUMBER' target='_blank' rel='noreferrer noopener' href='https://na.myconnectwise.net/v4_6_release/services/system_io/router/openrecord.rails?companyName=wheelhouseit&recordType=ServiceFv&recid=TICKETLINKNUMBER'>TICKETLINKNUMBER</a>".replace(/TICKETLINKNUMBER/g, ticketnumber);
|
||||||
|
detailLabel = detailLabel.replace(ticketnumber,ticketlink);
|
||||||
|
assignedTech = getByClass('cw_ticketOwner', 0);
|
||||||
|
initialDescription = getInnerTextByClass('TicketNote-rowNote', 0);
|
||||||
|
contactinput = prompt("What is the caller's name?", contact);
|
||||||
|
contact = contactinput;
|
||||||
|
};
|
||||||
|
function getMoreTicketInfo(){
|
||||||
|
internalNote = getInnerTextByClass('TicketNote-noteLabel', 1);
|
||||||
|
};
|
||||||
|
function copyPodPost(podPost){
|
||||||
|
if (contactinput === null){ //terminate function if user hits cancel button or provides no input
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
GM.setClipboard(podPost, 'text/html')
|
||||||
|
window.alert(podPost);
|
||||||
|
};
|
||||||
|
function clickClass(theClass, elementIndex){
|
||||||
|
var elements = document.getElementsByClassName(theClass);
|
||||||
|
var requiredElement = elements[elementIndex];
|
||||||
|
requiredElement.click();
|
||||||
|
};
|
||||||
|
function focusClass(theClass, elementIndex){
|
||||||
|
var elements = document.getElementsByClassName(theClass);
|
||||||
|
var requiredElement = elements[elementIndex];
|
||||||
|
requiredElement.focus();
|
||||||
|
};
|
||||||
|
function getElementByClass(theClass, elementIndex){
|
||||||
|
var elements = document.getElementsByClassName(theClass); var requiredElement = elements[elementIndex]; return requiredElement;
|
||||||
|
};
|
||||||
|
function getByClass(theClass, elementIndex){
|
||||||
|
var elements = document.getElementsByClassName(theClass); var requiredElement = elements[elementIndex]; return requiredElement.value;
|
||||||
|
};
|
||||||
|
function getInnerTextByClass(theClass, elementIndex){
|
||||||
|
var elements = document.getElementsByClassName(theClass); var requiredElement = elements[elementIndex]; return requiredElement.innerText;
|
||||||
|
};
|
||||||
|
function putTextIntoClass(theClass, elementIndex, text){
|
||||||
|
var elements = document.getElementsByClassName(theClass); var requiredElement = elements[elementIndex]; requiredElement.value = text;
|
||||||
|
};
|
||||||
|
function setStatus(desiredStatus){
|
||||||
|
if (window.location.href.indexOf("timeexpensemodule.html") > -1) {
|
||||||
|
putTextIntoClass("cw_ticketStatus", 0, desiredStatus);
|
||||||
|
focusClass("cw_ticketStatus", 0);
|
||||||
|
}else{
|
||||||
|
putTextIntoClass("cw_status", 0, desiredStatus);
|
||||||
|
focusClass("cw_status", 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
// ==UserScript==
|
||||||
|
// @name New post
|
||||||
|
// @namespace Violentmonkey Scripts
|
||||||
|
// @match https://teams.microsoft.com/*
|
||||||
|
// @grant none
|
||||||
|
// @version 1.0
|
||||||
|
// @author -
|
||||||
|
// @description 12/22/2023, 9:45:49 AM
|
||||||
|
// @require https://cdn.jsdelivr.net/npm/@violentmonkey/shortcut@1
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
|
//disable teams overriding right click menus
|
||||||
|
document.addEventListener("contextmenu", (e)=>e.stopPropagation(), true);
|
||||||
|
|
||||||
|
|
||||||
|
VM.shortcut.register('a-i', () => {
|
||||||
|
document.querySelector("[id='new-post-button']").click();
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-i', () => {
|
||||||
|
//window.alert("mario")
|
||||||
|
document.querySelector("[data-tid='compose-start-post']").click();
|
||||||
|
focusElement('[data-tid="ckeditor"]');
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-r', () => {
|
||||||
|
document.querySelector("[data-tid='ckeditor']").focus();
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-c-`', () => { // Click "teams" button
|
||||||
|
document.title = "Switching to Teams...";
|
||||||
|
document.querySelector("[data-tid='2a84919f-59d8-4441-a975-2a8c2643b741']").click();
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-s-~', () => { // Click "teams" button
|
||||||
|
document.title = "Switching to Chat...";
|
||||||
|
document.querySelector("[data-tid='86fcd49b-61a2-4701-b771-54728cd291fb']").click();
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-s-(', () => {
|
||||||
|
chatSwitch("Corey Luckett", "[aria-label='Corey Luckett']", "SD General", "[data-tid='channel-list-item-text-19:17d0f18bbe38444585becef3f654c859@thread.skype']");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-9', () => {
|
||||||
|
chatSwitch("Support Agents and Alumni", "[aria-label='Support Agents and Alumni']", "Alpha Pod", "[data-tid='channel-list-item-text-19:7a5705aa5f5e4189998a90a6f89c136f@thread.skype']");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-0', () => {
|
||||||
|
chatSwitch("Sierra Alpha Only", "[aria-label='Sierra Alpha Only']", "Charlie Pod", "[data-tid='channel-list-item-text-19:95c6eb80937a44d4a6540b9e6fdfc6c5@thread.skype']");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a--', () => {
|
||||||
|
chatSwitch("Sigma Pod", "[aria-label='Sigma Pod']", "Gamma Pod", "[data-tid='channel-list-item-text-19:83b2a5bf12d94019840d1d5687c49107@thread.skype']");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-=', () => {
|
||||||
|
toggleTeams()
|
||||||
|
});
|
||||||
|
function toggleTeams(){
|
||||||
|
var chatButton = document.querySelector("[data-tid='86fcd49b-61a2-4701-b771-54728cd291fb']")
|
||||||
|
if(chatButton.getAttribute('aria-pressed') == "true"){
|
||||||
|
//chat is pressed! :D
|
||||||
|
document.title = "Switching to Teams...";
|
||||||
|
document.querySelector("[data-tid='2a84919f-59d8-4441-a975-2a8c2643b741']").click();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
//window.alert("chat is not pressed! D:");
|
||||||
|
document.title = "Switching to Chat...";
|
||||||
|
document.querySelector("[data-tid='86fcd49b-61a2-4701-b771-54728cd291fb']").click();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function chatSwitch(chatChatName, chatChatAttribute, teamsChatName, teamsChatAttribute){
|
||||||
|
var chatButton = document.querySelector("[data-tid='86fcd49b-61a2-4701-b771-54728cd291fb']")
|
||||||
|
//if(document.querySelector("[data-tid='86fcd49b-61a2-4701-b771-54728cd291fb']").getAttribute('aria-pressed') == "true"){
|
||||||
|
if(chatButton.getAttribute('aria-pressed') == "true"){
|
||||||
|
//chat is pressed! :D
|
||||||
|
document.title = "Switching to "+chatChatName+"...";
|
||||||
|
document.querySelector(chatChatAttribute).click();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
//window.alert("chat is not pressed! D:");
|
||||||
|
document.title = "Switching to "+teamsChatName+"...";
|
||||||
|
document.querySelector(teamsChatAttribute).click();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function focusElement(query){
|
||||||
|
var intv = setInterval(function() {
|
||||||
|
var elems = document.querySelectorAll(query);
|
||||||
|
if(elems.length < 1){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
//when element is found, clear the interval.
|
||||||
|
clearInterval(intv);
|
||||||
|
for (var i = 0, len = elems.length; i < len; i++){
|
||||||
|
elems[i].value = "";
|
||||||
|
console.log("loop!")
|
||||||
|
}
|
||||||
|
document.querySelector(query).focus();
|
||||||
|
}, 100);
|
||||||
|
};
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
// ==UserScript==
|
||||||
|
// @name Microsoft Admin Portal
|
||||||
|
// @namespace Violentmonkey Scripts
|
||||||
|
// @match https://admin.exchange.microsoft.com/*
|
||||||
|
// @match https://admin.microsoft.com/*
|
||||||
|
// @grant none
|
||||||
|
// @version 1.0
|
||||||
|
// @author -
|
||||||
|
// @description 6/11/2024, 12:49:02 PM
|
||||||
|
// ==/UserScript==
|
||||||
|
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
// ==UserScript==
|
||||||
|
// @name changeZoom
|
||||||
|
// @namespace Violentmonkey Scripts
|
||||||
|
// @grant GM.openInTab
|
||||||
|
// @version 1.0
|
||||||
|
// @author -
|
||||||
|
// @require https://cdn.jsdelivr.net/npm/@violentmonkey/shortcut@1
|
||||||
|
// ==/UserScript==
|
||||||
|
VM.shortcut.register('a-7', () => {
|
||||||
|
document.body.style.zoom = "70%";
|
||||||
|
});
|
||||||
|
|
||||||
|
VM.shortcut.register('a-8', () => {
|
||||||
|
document.body.style.zoom = "80%";
|
||||||
|
});
|
||||||
|
|
||||||
|
VM.shortcut.register('a-9', () => {
|
||||||
|
document.body.style.zoom = "90%";
|
||||||
|
});
|
||||||
|
|
||||||
|
VM.shortcut.register('a-0', () => {
|
||||||
|
document.body.style.zoom = "100%";
|
||||||
|
});
|
||||||
@@ -0,0 +1,116 @@
|
|||||||
|
// ==UserScript==
|
||||||
|
// @name openUrl
|
||||||
|
// @namespace Violentmonkey Scripts
|
||||||
|
// @grant GM.openInTab
|
||||||
|
// @grant GM.setValue
|
||||||
|
// @grant GM.getValue
|
||||||
|
// @grant GM.notification
|
||||||
|
// @version 1.0
|
||||||
|
// @author -
|
||||||
|
// @require https://cdn.jsdelivr.net/npm/@violentmonkey/shortcut@1
|
||||||
|
// ==/UserScript==
|
||||||
|
VM.shortcut.register('a-F2', () => {
|
||||||
|
document.title = prompt("What would you like to name this tab?")
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-t', () => {
|
||||||
|
GM.openInTab("https://na.myconnectwise.net/v2025_1/connectwise.aspx?fullscreen=false&locale=en_US#XQAACAD0AAAAAAAAAAA9iIoG07$U9XgivLgsNhRsAzclmBsEVPOUvf12ZCOSL1cKld_sNK5vxzDxKqEIQN1BvG7dqFASg8$hPG4Tn9O9idccWjDsAW7JjklbemtIH39ZGIrt3xvMiJgp$sTd4Q1ZXCVHDvWAoouZMsezMi3KbX83f6zqULZmLL$d3PirBCuIv_6gscA=??ServiceTicketNew");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-s-c', () => {
|
||||||
|
GM.openInTab("https://na.myconnectwise.net/v2025_1/ConnectWise.aspx?locale=en_US#XQAACABxAQAAAAAAAAA9iIoG07$U9Xgsgy4H5d1QIn66fpE_52stocC7hTyEheVB0jdOBWGpoyiuAdMBDAJL8bBV7A_wzv_ohFRtPN3CHR1tdahbjINpBe7c_SX3X2tQyTs8xWay2oXAWd2AOzUd0i4MpVKQIG4tx0$Jc1NwtE_4m1ZGBwXHX$JKREIOW2ONr3tvx9FJiyiuMBd7mZNbcj1fKHdzjNyqRR8SnfCwT8gxbamKCXWk6BjfYcJi2a5pqCsMcG8QoRZgLm_wXKz_bkP8AA==??ConfigurationList");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-s-t', () => {
|
||||||
|
GM.openInTab("https://na.myconnectwise.net/v2025_1/ConnectWise.aspx?locale=en_US#XQAACACSAQAAAAAAAAA9iIoG07$U9XZqpLgsNhRsI0O_rb8$BDZMLPpOoVsVotL7i6hH34LCO7ZoHJJZg4IeLpcY_gC96MlY$eDRat8hb184i5FbR7ZauFFNtcBLwLDvQHQ8Btgk1ClWQ3TqWzdUcjeXaiNqnMAXVfeq$8t0$iljtbQgTTGhgTz5o1IUwjimoAsIClb$piHlxoB1$9FXLSYgvymFS$FYshezK7okMhpvdv0y3dNmdx3vrMohMaWUtppT90v9DFrq??ServiceSearchList");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-c', () => {
|
||||||
|
GM.openInTab("https://na.myconnectwise.net/v2025_1/ConnectWise.aspx?locale=en_US#XQAACAA1AQAAAAAAAAA9iIoG07$U9XZqpLgsNhRrwys7G93Ec4KnGEAS_6zaRrXLbk1hmJYSHi86Vq6x6D8WzI68Gr6edch4HT$7FhMIlhm_MU4cUr32joWu0bf5wnjaND2nOyFbfXoOhBaJ1CFTlGk1y_zjyjucJKiLmRCDu5qWD4D8v9hCHZfrKN1ePhQsq5WiDEdDnD9McUEJno94Iwp8OtKQ3R9eq8CfWr8sNMKm1GHhvtM7_BFKIA==??ContactsList");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-s-c', () => {
|
||||||
|
GM.openInTab("https://hudu.247mgmt.com/c");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-s-b', () => {
|
||||||
|
GM.openInTab("https://na.myconnectwise.net/v2025_1/connectwise.aspx?fullscreen=false&locale=en_US#XQAACAC0AwAAAAAAAAA9iIoG07$U9XS7KAi9Xl65u3Vs$bByAbA9mswuxDEGw2svj8VhHiB_5tzaJbwShweI$9Ze5iho8Qt2l2IOvtfxAnG9UFX_Qov9TIoJPx_LLTqLVfvQZphPevid_uhiNP$ovM4UPb9wbjcNLyaC6gOGzhmBmTmfVJ99M4f$cnRZi7JV2MmmdVAIcA3HlNQEddO_zv7VbPxNhfe1HDvKw9a8SGmBTAt0rtk07ocgpKpfvVO4qRky$WrRumP69ancUOLW0VR8NedqZOmR754q2j85Fc_3wZ2RTqJu7tWK20H9Mj7cSfv9r54OVr_U$8Kst_4ph4YmZ_sAGSEyCPakUV0GRV9tfM9BbGOqv7k8oHb4wdPgsUKWruHLGBWUdDRpx_$0bt8Sk5GGjRy0dlg3WDcl$fQVBpKbd78pTAVFrSqQuXdTJdsmkBc3VxWv8AQLLRSw1oRSbEq477dE_9uZfeY=??ServiceBoard");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-b', () => {
|
||||||
|
GM.openInTab("https://na.myconnectwise.net/v2025_1/connectwise.aspx?fullscreen=false&locale=en_US#XQAACAC3AwAAAAAAAAA9iIoG07$U9XgivLgsNhRsI0O_rEHSzQCIbZUnpNMnJHh0NEgqfX4ZS9QZp_DnE3XebvTj3FYGLlQ$a1FH0nj9Raf$98EK4uLBiRRTVx9dUgYH_sfxCwkQ$yRUCodKDz5JrcyFY4g7LgWIF8b8zdrq93Dzq9Qsy9kqokMkKbbgQBvaiRAwU4dXmxCyNwz6qHk4U9HuD3qg2CCNTdT5Y4M87aTuCQE2HGwPSDzKbu$EF04Eb7SgJbsvfH$Bwrc9R65tlTJPaFOwzqcfwTSU_wlO_xqMi9rbhAkZQ8$6rKgscwxQcuGtp6K7rimQ$RUGLBwMOQcjxW4iKoYtkCwJ4VOQiclhwlXsZWzNHJaViUNiz4_fKJIcQGGu3LlDqRGkJTAfdBpyfFLuglBz$lJu2_JNLqHY7kwlFYqOTd6PFp2jW_CBwN5o_b$2XgiKTpDe5flQzIAOcDp8b80jrtf_8T8ulg==??ServiceBoard");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-a', () => {
|
||||||
|
GM.openInTab("https://manage.247mgmt.com/automate/browse/companies/computers");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-q', () => {
|
||||||
|
GM.openInTab("https://admin.getquickpass.com/customers");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-s-q', () => {
|
||||||
|
GM.openInTab("https://hudu.247mgmt.com/kba/cyberqp-active-clients-db85c0c1ff78");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-s-h', () => {
|
||||||
|
GM.openInTab("https://hudu.247mgmt.com");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-s-d', () => {
|
||||||
|
GM.openInTab("https://admin-4124d980.duosecurity.com/login?email=gianlucca.pirovano%40wheelhouseit.com&next=%2F");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-m', () => {
|
||||||
|
GM.openInTab("https://na.myconnectwise.net/v2025_1/connectwise.aspx?fullscreen=false&locale=en_US#XQAACAC1AgAAAAAAAAA9iIoG07$U9XS2qbz2sCgCrNjO$vAWHdHdFD2hRcTwBuofF$U3XDsWCqOMg4ZfErfxufo2MkT9yzKJTzo4MlvDs$bGTcaZfpl6DkiG2XfIXtzyDDnuZTSn7RROTTES7vsyXtChnCO3HqJSVm$_1N7a1cFCBfLm4dMx1SCk2mU$eod59rcf67BW$WT3CLeGsPEEOaKOyU03aa2lGOM1PdR3ynFB_c4Nb4sJX8QPKtg7d8A96J_2PCL6QSRUm8Xvn9esOaNIKUGKgKAEkf0dJ3JcaFCq50451o4K8OZ74qYg3EjouZXx1RMGHvJIXIf3$u1Fj64kio5MWlcLzQcOsb6oqNwnoRAfe_vBp17gZG1MUu3hfI4b0xVfeYLKoNUmt4O4u4lP5Kv9Y8mY");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-a-m', () => {
|
||||||
|
GM.openInTab("https://mxtoolbox.com/EmailHeaders.aspx");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('c-s-m', () => {
|
||||||
|
GM.openInTab("https://security.microsoft.com/tenantAllowBlockList");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-y', () => {
|
||||||
|
var detailLabel = getInnerTextByClass('detailLabel', 0);
|
||||||
|
var detailLabelSplit = detailLabel.split(" ");
|
||||||
|
var ticketnumber = detailLabelSplit[2].replace("#", "");
|
||||||
|
var tickettitle = detailLabel.replace("Service Ticket ", "");
|
||||||
|
GM.setValue('ticketnumber', ticketnumber);
|
||||||
|
GM.setValue('tickettitle', tickettitle);
|
||||||
|
document.title = tickettitle;
|
||||||
|
//GM.notification(ticketnumber+" saved to variable!\nPaste with Alt+Shift+P");
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-s-y', () => {
|
||||||
|
var detailLabel = getInnerTextByClass('detailLabel', 0);
|
||||||
|
var detailLabelSplit = detailLabel.split(" ");
|
||||||
|
var ticketnumber = detailLabelSplit[2].replace("#", "");
|
||||||
|
var tickettitle = detailLabel.replace("Service Ticket ", "");
|
||||||
|
GM.setValue('ticketnumber', ticketnumber);
|
||||||
|
GM.setValue('tickettitle', tickettitle);
|
||||||
|
});
|
||||||
|
VM.shortcut.register('a-s-p', () => {
|
||||||
|
async function openTicketNumber(){
|
||||||
|
ticketnumber = await GM.getValue('ticketnumber', 0);
|
||||||
|
var input = await prompt("What is the ticket number you wish to open?", ticketnumber);
|
||||||
|
if (input === null){ //terminate function if user hits cancel button or provides no input
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ticketnumber = input
|
||||||
|
GM.setValue('ticketnumber', ticketnumber);
|
||||||
|
await GM.openInTab("https://na.myconnectwise.net/v4_6_release/services/system_io/router/openrecord.rails?companyName=wheelhouseit&recordType=ServiceFv&recid="+ticketnumber);
|
||||||
|
}openTicketNumber();
|
||||||
|
});
|
||||||
|
|
||||||
|
VM.shortcut.register('c-a-s-p', () => {
|
||||||
|
async function openTicketNumber(){
|
||||||
|
ticketnumber = await GM.getValue('ticketnumber', 0);
|
||||||
|
var input = await prompt("What is the ticket number you wish to open a report for?", ticketnumber);
|
||||||
|
if (input === null){ //terminate function if user hits cancel button or provides no input
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ticketnumber = input
|
||||||
|
GM.setValue('ticketnumber', ticketnumber);
|
||||||
|
await GM.openInTab("https://na.myconnectwise.net/v2025_1/services/system_io/reports/reportingservices/PdfViewer.rails?reportLink=ServiceTicket_Button¶meters=SR_Service_RecID%3D"+ticketnumber+"%26My_Member_ID%3D373%26TimeZoneName%3DEastern%2BStandard%2BTime%26Language%3Den-US");
|
||||||
|
}openTicketNumber();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//Functions Below
|
||||||
|
function getInnerTextByClass(theClass, elementIndex){
|
||||||
|
var elements = document.getElementsByClassName(theClass); var requiredElement = elements[elementIndex]; return requiredElement.innerText;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,235 @@
|
|||||||
|
{
|
||||||
|
"scripts": {
|
||||||
|
"Lazy Teams": {
|
||||||
|
"custom": {
|
||||||
|
"origInclude": true,
|
||||||
|
"origExclude": true,
|
||||||
|
"origMatch": true,
|
||||||
|
"origExcludeMatch": true,
|
||||||
|
"injectInto": "auto",
|
||||||
|
"name": "Lazy Teams",
|
||||||
|
"noframes": 0,
|
||||||
|
"pathMap": {},
|
||||||
|
"runAt": "document-start"
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"enabled": true,
|
||||||
|
"removed": 0,
|
||||||
|
"shouldUpdate": 1
|
||||||
|
},
|
||||||
|
"position": 1,
|
||||||
|
"lastModified": 1736183756169,
|
||||||
|
"lastUpdated": 1715892082262
|
||||||
|
},
|
||||||
|
"Lazy Connectwise": {
|
||||||
|
"custom": {
|
||||||
|
"origInclude": true,
|
||||||
|
"origExclude": true,
|
||||||
|
"origMatch": true,
|
||||||
|
"origExcludeMatch": true,
|
||||||
|
"injectInto": "auto",
|
||||||
|
"name": "Lazy Connectwise",
|
||||||
|
"noframes": 0,
|
||||||
|
"pathMap": {},
|
||||||
|
"runAt": "document-start"
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"enabled": 1,
|
||||||
|
"removed": 0,
|
||||||
|
"shouldUpdate": 1
|
||||||
|
},
|
||||||
|
"position": 2,
|
||||||
|
"lastModified": 1739208739806,
|
||||||
|
"lastUpdated": 1739208739806
|
||||||
|
},
|
||||||
|
"openUrl": {
|
||||||
|
"custom": {
|
||||||
|
"origInclude": true,
|
||||||
|
"origExclude": true,
|
||||||
|
"origMatch": true,
|
||||||
|
"origExcludeMatch": true,
|
||||||
|
"pathMap": {}
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"enabled": 1,
|
||||||
|
"removed": 0,
|
||||||
|
"shouldUpdate": 1
|
||||||
|
},
|
||||||
|
"position": 3,
|
||||||
|
"lastModified": 1740578953770,
|
||||||
|
"lastUpdated": 1740578953770
|
||||||
|
},
|
||||||
|
"changeZoom": {
|
||||||
|
"custom": {
|
||||||
|
"origInclude": true,
|
||||||
|
"origExclude": true,
|
||||||
|
"origMatch": true,
|
||||||
|
"origExcludeMatch": true,
|
||||||
|
"pathMap": {}
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"enabled": 0,
|
||||||
|
"removed": 0,
|
||||||
|
"shouldUpdate": 1
|
||||||
|
},
|
||||||
|
"position": 4,
|
||||||
|
"lastModified": 1715783135740,
|
||||||
|
"lastUpdated": 1715783135740
|
||||||
|
},
|
||||||
|
"ConnectWiseManageEqualSignRebind": {
|
||||||
|
"custom": {
|
||||||
|
"origInclude": true,
|
||||||
|
"origExclude": true,
|
||||||
|
"origMatch": true,
|
||||||
|
"origExcludeMatch": true,
|
||||||
|
"pathMap": {}
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"enabled": 0,
|
||||||
|
"removed": 0,
|
||||||
|
"shouldUpdate": 1
|
||||||
|
},
|
||||||
|
"position": 5,
|
||||||
|
"lastModified": 1715895001143,
|
||||||
|
"lastUpdated": 1715895001143
|
||||||
|
},
|
||||||
|
"Microsoft Admin Portal": {
|
||||||
|
"custom": {
|
||||||
|
"origInclude": true,
|
||||||
|
"origExclude": true,
|
||||||
|
"origMatch": true,
|
||||||
|
"origExcludeMatch": true,
|
||||||
|
"pathMap": {}
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"enabled": 1,
|
||||||
|
"removed": 0,
|
||||||
|
"shouldUpdate": 1
|
||||||
|
},
|
||||||
|
"position": 6,
|
||||||
|
"lastModified": 1718124605141,
|
||||||
|
"lastUpdated": 1718124605141
|
||||||
|
},
|
||||||
|
"ClipHTMLEdit": {
|
||||||
|
"custom": {
|
||||||
|
"origInclude": true,
|
||||||
|
"origExclude": true,
|
||||||
|
"origMatch": true,
|
||||||
|
"origExcludeMatch": true,
|
||||||
|
"pathMap": {},
|
||||||
|
"match": [
|
||||||
|
"https://wiki.gianluccapirovano.com/*"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"enabled": 1,
|
||||||
|
"removed": 0,
|
||||||
|
"shouldUpdate": 1
|
||||||
|
},
|
||||||
|
"position": 7,
|
||||||
|
"lastModified": 1740579178008,
|
||||||
|
"lastUpdated": 1740579178008
|
||||||
|
},
|
||||||
|
"CW Auto-Closer": {
|
||||||
|
"custom": {
|
||||||
|
"origInclude": true,
|
||||||
|
"origExclude": true,
|
||||||
|
"origMatch": true,
|
||||||
|
"origExcludeMatch": true,
|
||||||
|
"pathMap": {}
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"enabled": 0,
|
||||||
|
"removed": 0,
|
||||||
|
"shouldUpdate": 1
|
||||||
|
},
|
||||||
|
"position": 8,
|
||||||
|
"lastModified": 1736884973399,
|
||||||
|
"lastUpdated": 1728927612984
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"isApplied": true,
|
||||||
|
"blacklist": "file://*/*",
|
||||||
|
"blacklistNet": "file://*/*",
|
||||||
|
"popupWidth": 320,
|
||||||
|
"updateEnabledScriptsOnly": true,
|
||||||
|
"autoUpdate": 1,
|
||||||
|
"lastUpdate": 1740577957782,
|
||||||
|
"lastModified": 1707747155098,
|
||||||
|
"showBadge": "unique",
|
||||||
|
"badgeColor": "#880088",
|
||||||
|
"badgeColorBlocked": "#888888",
|
||||||
|
"exportValues": true,
|
||||||
|
"exportNameTemplate": "[violentmonkey]_YYYY-MM-DD_HH.mm.ss",
|
||||||
|
"expose": {
|
||||||
|
"greasyfork%2Eorg": true,
|
||||||
|
"sleazyfork%2Eorg": false
|
||||||
|
},
|
||||||
|
"closeAfterInstall": false,
|
||||||
|
"editAfterInstall": false,
|
||||||
|
"helpForLocalFile": true,
|
||||||
|
"trackLocalFile": false,
|
||||||
|
"autoReload": false,
|
||||||
|
"features": null,
|
||||||
|
"syncScriptStatus": true,
|
||||||
|
"customCSS": "",
|
||||||
|
"importScriptData": true,
|
||||||
|
"importSettings": true,
|
||||||
|
"notifyUpdates": false,
|
||||||
|
"notifyUpdatesGlobal": false,
|
||||||
|
"version": 1,
|
||||||
|
"defaultInjectInto": "auto",
|
||||||
|
"ffInject": false,
|
||||||
|
"xhrInject": false,
|
||||||
|
"filters": {
|
||||||
|
"searchScope": "name",
|
||||||
|
"showOrder": false,
|
||||||
|
"sort": "exec",
|
||||||
|
"viewSingleColumn": false,
|
||||||
|
"viewTable": true
|
||||||
|
},
|
||||||
|
"filtersPopup": {
|
||||||
|
"sort": "exec",
|
||||||
|
"enabledFirst": false,
|
||||||
|
"groupRunAt": true,
|
||||||
|
"hideDisabled": ""
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"killTrailingSpaceOnSave": true,
|
||||||
|
"showTrailingSpace": true,
|
||||||
|
"autocompleteOnTyping": 100,
|
||||||
|
"lineWrapping": false,
|
||||||
|
"indentWithTabs": false,
|
||||||
|
"indentUnit": 2,
|
||||||
|
"tabSize": 2,
|
||||||
|
"undoDepth": 500
|
||||||
|
},
|
||||||
|
"editorTheme": "",
|
||||||
|
"editorThemeName": null,
|
||||||
|
"editorWindow": false,
|
||||||
|
"editorWindowPos": {},
|
||||||
|
"editorWindowSimple": true,
|
||||||
|
"scriptTemplate": "// ==UserScript==\n// @name New script {{name}}\n// @namespace Violentmonkey Scripts\n// @match {{url}}\n// @grant none\n// @version 1.0\n// @author -\n// @description {{date}}\n// ==/UserScript==\n",
|
||||||
|
"showAdvanced": true,
|
||||||
|
"valueEditor": {
|
||||||
|
"autocompleteOnTyping": 100,
|
||||||
|
"lineWrapping": false,
|
||||||
|
"indentWithTabs": false,
|
||||||
|
"indentUnit": 2,
|
||||||
|
"tabSize": 2,
|
||||||
|
"undoDepth": 500
|
||||||
|
},
|
||||||
|
"uiTheme": ""
|
||||||
|
},
|
||||||
|
"values": {
|
||||||
|
"Violentmonkey-20Scripts-0aNew-20script-20-2d-20myconnectwise.net-0a": {
|
||||||
|
"company": "sAccuity Delivery Systems, LLC",
|
||||||
|
"pod": "sINDIE"
|
||||||
|
},
|
||||||
|
"Violentmonkey-20Scripts-0aopenUrl-0a": {
|
||||||
|
"ticketnumber": "s9827510",
|
||||||
|
"tickettitle": "s#9891179 - Assistance Needed for New Laptop Setup and ConnectWise Agent Installation"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+193
@@ -0,0 +1,193 @@
|
|||||||
|
{
|
||||||
|
"scripts": {
|
||||||
|
"Force Enable Right Click, Copy & Paste": {
|
||||||
|
"custom": {
|
||||||
|
"origInclude": true,
|
||||||
|
"origExclude": true,
|
||||||
|
"origMatch": true,
|
||||||
|
"origExcludeMatch": true,
|
||||||
|
"origTag": true,
|
||||||
|
"pathMap": {}
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"enabled": 1,
|
||||||
|
"shouldUpdate": 1,
|
||||||
|
"removed": 0
|
||||||
|
},
|
||||||
|
"position": 1,
|
||||||
|
"lastModified": 1776204395857,
|
||||||
|
"lastUpdated": 1776204395857
|
||||||
|
},
|
||||||
|
"Rename Tab – Alt+F2": {
|
||||||
|
"custom": {
|
||||||
|
"origInclude": true,
|
||||||
|
"origExclude": true,
|
||||||
|
"origMatch": true,
|
||||||
|
"origExcludeMatch": true,
|
||||||
|
"origTag": true,
|
||||||
|
"pathMap": {}
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"enabled": 1,
|
||||||
|
"shouldUpdate": 1,
|
||||||
|
"removed": 0
|
||||||
|
},
|
||||||
|
"position": 2,
|
||||||
|
"lastModified": 1770065672157,
|
||||||
|
"lastUpdated": 1770065672157
|
||||||
|
},
|
||||||
|
"Ucertify Tests F12 to Next Question": {
|
||||||
|
"custom": {
|
||||||
|
"origInclude": true,
|
||||||
|
"origExclude": true,
|
||||||
|
"origMatch": true,
|
||||||
|
"origExcludeMatch": true,
|
||||||
|
"origTag": true,
|
||||||
|
"pathMap": {}
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"enabled": 1,
|
||||||
|
"shouldUpdate": 1,
|
||||||
|
"removed": 0
|
||||||
|
},
|
||||||
|
"position": 3,
|
||||||
|
"lastModified": 1770234176498,
|
||||||
|
"lastUpdated": 1770234176498
|
||||||
|
},
|
||||||
|
"Submit Click (F12) + Copy CURRENT Visible Question (F10)": {
|
||||||
|
"custom": {
|
||||||
|
"origInclude": true,
|
||||||
|
"origExclude": true,
|
||||||
|
"origMatch": true,
|
||||||
|
"origExcludeMatch": true,
|
||||||
|
"origTag": true,
|
||||||
|
"pathMap": {}
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"enabled": 1,
|
||||||
|
"shouldUpdate": 1,
|
||||||
|
"removed": 0,
|
||||||
|
"httpOnly": 0
|
||||||
|
},
|
||||||
|
"position": 4,
|
||||||
|
"lastModified": 1777411739604,
|
||||||
|
"lastUpdated": 1777411739604
|
||||||
|
},
|
||||||
|
"KnowledgeHub - Remove no-copy class": {
|
||||||
|
"custom": {
|
||||||
|
"origInclude": true,
|
||||||
|
"origExclude": true,
|
||||||
|
"origMatch": true,
|
||||||
|
"origExcludeMatch": true,
|
||||||
|
"origTag": true,
|
||||||
|
"pathMap": {}
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"enabled": false,
|
||||||
|
"shouldUpdate": 1,
|
||||||
|
"removed": 0
|
||||||
|
},
|
||||||
|
"position": 5,
|
||||||
|
"lastModified": 1776793698669,
|
||||||
|
"lastUpdated": 1776204380800
|
||||||
|
},
|
||||||
|
"D2L Auto-Advance v7.3": {
|
||||||
|
"custom": {
|
||||||
|
"origInclude": true,
|
||||||
|
"origExclude": true,
|
||||||
|
"origMatch": true,
|
||||||
|
"origExcludeMatch": true,
|
||||||
|
"origTag": true,
|
||||||
|
"pathMap": {}
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"enabled": false,
|
||||||
|
"shouldUpdate": 1,
|
||||||
|
"httpOnly": 0,
|
||||||
|
"removed": 0
|
||||||
|
},
|
||||||
|
"position": 6,
|
||||||
|
"lastModified": 1779125333652,
|
||||||
|
"lastUpdated": 1777409870714
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"isApplied": true,
|
||||||
|
"blacklist": "file://*/*",
|
||||||
|
"blacklistNet": "file://*/*",
|
||||||
|
"popupWidth": 320,
|
||||||
|
"updateEnabledScriptsOnly": true,
|
||||||
|
"gmCookieHttpOnly": false,
|
||||||
|
"pageMenuCommands": false,
|
||||||
|
"autoUpdate": 1,
|
||||||
|
"lastUpdate": 1781116314217,
|
||||||
|
"lastModified": 1771437550250,
|
||||||
|
"showBadge": "unique",
|
||||||
|
"badgeColor": "#880088",
|
||||||
|
"badgeColorBlocked": "#888888",
|
||||||
|
"exportValues": true,
|
||||||
|
"exportNameTemplate": "[violentmonkey]_YYYY-MM-DD_HH.mm.ss",
|
||||||
|
"expose": {
|
||||||
|
"greasyfork%2Eorg": true,
|
||||||
|
"sleazyfork%2Eorg": false
|
||||||
|
},
|
||||||
|
"closeAfterInstall": false,
|
||||||
|
"editAfterInstall": false,
|
||||||
|
"helpForLocalFile": true,
|
||||||
|
"trackLocalFile": false,
|
||||||
|
"autoReload": false,
|
||||||
|
"features": null,
|
||||||
|
"syncScriptStatus": true,
|
||||||
|
"syncAutomatically": true,
|
||||||
|
"customCSS": "",
|
||||||
|
"importScriptData": true,
|
||||||
|
"importSettings": true,
|
||||||
|
"notifyUpdates": false,
|
||||||
|
"notifyUpdatesGlobal": false,
|
||||||
|
"version": 1,
|
||||||
|
"defaultInjectInto": "auto",
|
||||||
|
"ffInject": true,
|
||||||
|
"xhrInject": false,
|
||||||
|
"filters": {
|
||||||
|
"showOrder": false,
|
||||||
|
"showVisit": false,
|
||||||
|
"sort": "exec",
|
||||||
|
"viewSingleColumn": false,
|
||||||
|
"viewTable": false
|
||||||
|
},
|
||||||
|
"filtersPopup": {
|
||||||
|
"sort": "exec",
|
||||||
|
"enabledFirst": false,
|
||||||
|
"groupRunAt": true,
|
||||||
|
"hideDisabled": ""
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"killTrailingSpaceOnSave": true,
|
||||||
|
"showTrailingSpace": true,
|
||||||
|
"autocompleteOnTyping": 100,
|
||||||
|
"lineWrapping": false,
|
||||||
|
"indentWithTabs": false,
|
||||||
|
"indentUnit": 2,
|
||||||
|
"tabSize": 2,
|
||||||
|
"undoDepth": 500
|
||||||
|
},
|
||||||
|
"editorTheme": "",
|
||||||
|
"editorThemeName": null,
|
||||||
|
"editorWindow": false,
|
||||||
|
"editorWindowPos": {},
|
||||||
|
"editorWindowSimple": true,
|
||||||
|
"scriptTemplate": "// ==UserScript==\n// @name New script {{name}}\n// @namespace Violentmonkey Scripts\n// @icon {{icon}}\n// @version 1.0.0\n//\n// @match {{url}}\n// @grant none\n//\n// @author -\n// @description\n// ==/UserScript==\n",
|
||||||
|
"showAdvanced": true,
|
||||||
|
"valueEditor": {
|
||||||
|
"autocompleteOnTyping": 100,
|
||||||
|
"lineWrapping": false,
|
||||||
|
"indentWithTabs": false,
|
||||||
|
"indentUnit": 2,
|
||||||
|
"tabSize": 2,
|
||||||
|
"undoDepth": 500,
|
||||||
|
"editAsString": true
|
||||||
|
},
|
||||||
|
"uiTheme": ""
|
||||||
|
},
|
||||||
|
"values": {}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user