Files
advanced-mcp-plugin/assets/js/admin.js
T

195 lines
8.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* AskTam MCP Admin JS */
(function(){
'use strict';
function initToolsForm(){
var form=document.getElementById('asktam-mcp-tools-form');
if(!form)return;
var en=form.querySelector('.asktam-mcp-enable-all');
var dis=form.querySelector('.asktam-mcp-disable-all');
if(en)en.addEventListener('click',function(){form.querySelectorAll('input[type="checkbox"]').forEach(function(cb){cb.checked=true;});updateCards(form);});
if(dis)dis.addEventListener('click',function(){form.querySelectorAll('input[type="checkbox"]').forEach(function(cb){cb.checked=false;});updateCards(form);});
form.querySelectorAll('.asktam-mcp-category').forEach(function(cat){
var ce=cat.querySelector('.asktam-mcp-cat-enable-all');
var cd=cat.querySelector('.asktam-mcp-cat-disable-all');
if(ce)ce.addEventListener('click',function(){cat.querySelectorAll('input[type="checkbox"]').forEach(function(cb){cb.checked=true;});updateCards(form);});
if(cd)cd.addEventListener('click',function(){cat.querySelectorAll('input[type="checkbox"]').forEach(function(cb){cb.checked=false;});updateCards(form);});
});
form.addEventListener('change',function(e){if(e.target.type==='checkbox')updateCards(form);});
}
function updateCards(form){
form.querySelectorAll('.asktam-mcp-tool-card').forEach(function(card){
var cb=card.querySelector('input[type="checkbox"]');
card.classList.toggle('is-enabled',cb.checked);
card.classList.toggle('is-disabled',!cb.checked);
});
}
/* ---- Collapsible categories + per-card minimize. Default EXPANDED; collapse is opt-in. ---- */
var LSKEY='asktamMcpCatCollapsed';
function loadState(){try{return JSON.parse(localStorage.getItem(LSKEY)||'{}')||{};}catch(e){return {};}}
function saveState(m){try{localStorage.setItem(LSKEY,JSON.stringify(m));}catch(e){}}
function initCollapsibleTools(){
var form=document.getElementById('asktam-mcp-tools-form');
if(!form)return;
var state=loadState();
var cats=form.querySelectorAll('.asktam-mcp-category');
function setAll(collapsed){
cats.forEach(function(cat){
cat.classList.toggle('is-collapsed',collapsed);
state[cat.getAttribute('data-category')||'']=collapsed;
});
saveState(state);
}
// Global expand / collapse controls
var bulk=form.querySelector('.asktam-mcp-bulk-actions');
if(bulk && !bulk.querySelector('.asktam-mcp-expand-all')){
var wrap=document.createElement('span');
wrap.className='asktam-mcp-collapse-tools';
var exp=document.createElement('button');exp.type='button';exp.className='button asktam-mcp-expand-all';exp.textContent='Expand all';
var col=document.createElement('button');col.type='button';col.className='button asktam-mcp-collapse-all';col.textContent='Collapse all';
wrap.appendChild(exp);wrap.appendChild(col);
var save=bulk.querySelector('.asktam-mcp-bulk-save');
if(save)bulk.insertBefore(wrap,save);else bulk.appendChild(wrap);
exp.addEventListener('click',function(){setAll(false);});
col.addEventListener('click',function(){setAll(true);});
}
cats.forEach(function(cat){
var id=cat.getAttribute('data-category')||'';
var header=cat.querySelector('.asktam-mcp-category-header');
if(header && !header.querySelector('.asktam-mcp-cat-caret')){
var caret=document.createElement('span');
caret.className='asktam-mcp-cat-caret';
caret.setAttribute('aria-hidden','true');
caret.textContent='▾';
header.insertBefore(caret,header.firstChild);
}
// Default EXPANDED; only collapse if the user previously collapsed this category.
var collapsed=(id in state)?!!state[id]:false;
cat.classList.toggle('is-collapsed',collapsed);
if(header && !header.dataset.collBound){
header.dataset.collBound='1';
header.addEventListener('click',function(e){
if(e.target.closest('.asktam-mcp-category-actions'))return; // let All/None work
var now=!cat.classList.contains('is-collapsed');
cat.classList.toggle('is-collapsed',now);
state[id]=now;saveState(state);
});
}
});
// Per-card minimize (hides description + slug for that one tool)
form.querySelectorAll('.asktam-mcp-tool-card').forEach(function(card){
if(card.querySelector('.asktam-mcp-card-min'))return;
var b=document.createElement('button');
b.type='button';
b.className='asktam-mcp-card-min';
b.setAttribute('aria-label','Minimize tool');
b.textContent='–';
b.addEventListener('click',function(e){
e.preventDefault();e.stopPropagation(); // don't toggle the tool's checkbox
var min=card.classList.toggle('is-min');
b.textContent=min?'+':'–';
});
card.appendChild(b);
});
}
function initFooter(){
var admin=document.querySelector('.asktam-mcp-admin');
if(!admin||admin.querySelector('.asktam-mcp-footer'))return;
var f=document.createElement('div');
f.className='asktam-mcp-footer';
f.innerHTML='Built by <a href="https://asktam.net" target="_blank" rel="noopener">AskTam.net</a>';
admin.appendChild(f);
}
function setBlock(codeId,copyId,text){
var c=document.getElementById(codeId);
var t=document.getElementById(copyId);
if(c)c.textContent=text;
if(t)t.value=text;
}
function initConnectionConfigs(){
var btn=document.getElementById('asktam-generate-configs');
if(!btn)return;
btn.addEventListener('click',function(){
var keyInput=document.getElementById('asktam-api-key-input');
if(!keyInput||!keyInput.value.trim()){alert('Please enter your API key.');return;}
var apiKey=keyInput.value.trim();
var endpoint=(typeof asktamMcpAdmin!=='undefined')?asktamMcpAdmin.sseEndpoint:'';
var bearer='Bearer '+apiKey;
var configsDiv=document.getElementById('asktam-http-configs');
if(configsDiv)configsDiv.style.display='';
// claude.ai custom connector format
var claudeAiJson=JSON.stringify({
mcpServers:{wordpress:{url:endpoint,headers:{Authorization:bearer}}}
},null,2);
setBlock('asktam-claude-ai-code','asktam-claude-ai-copy',claudeAiJson);
// Claude Desktop claude_desktop_config.json
var desktopJson=JSON.stringify({
mcpServers:{wordpress:{url:endpoint,headers:{Authorization:bearer}}}
},null,2);
setBlock('asktam-desktop-code','asktam-desktop-copy',desktopJson);
// Cursor .cursor/mcp.json
var cursorJson=JSON.stringify({
mcpServers:{wordpress:{url:endpoint,headers:{Authorization:bearer}}}
},null,2);
setBlock('asktam-cursor-code','asktam-cursor-copy',cursorJson);
// Windsurf
var windsurfJson=JSON.stringify({
mcpServers:{wordpress:{serverUrl:endpoint,headers:{Authorization:bearer}}}
},null,2);
setBlock('asktam-windsurf-code','asktam-windsurf-copy',windsurfJson);
// npx mcp-remote
var remoteJson=JSON.stringify({
mcpServers:{wordpress:{command:'npx',args:['-y','mcp-remote',endpoint,'--header','Authorization: '+bearer]}}
},null,2);
setBlock('asktam-remote-code','asktam-remote-copy',remoteJson);
});
}
function copyToClipboard(text){
if(navigator.clipboard&&navigator.clipboard.writeText)return navigator.clipboard.writeText(text);
return new Promise(function(resolve){
var 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);resolve();
});
}
function initCopyButtons(){
document.querySelectorAll('.asktam-mcp-copy-btn').forEach(function(btn){
btn.addEventListener('click',function(){
var id=this.getAttribute('data-target');
var src=document.getElementById(id);
if(!src)return;
var copied=(typeof asktamMcpAdmin!=='undefined'&&asktamMcpAdmin.copied)?asktamMcpAdmin.copied:'Copied!';
copyToClipboard(src.value).then(function(){
var orig=btn.textContent;btn.textContent=copied;
setTimeout(function(){btn.textContent=orig;},2000);
});
});
});
}
function boot(){initToolsForm();initCollapsibleTools();initConnectionConfigs();initCopyButtons();initFooter();}
if(document.readyState==='loading'){
document.addEventListener('DOMContentLoaded',boot);
}else{
boot();
}
})();