mirror of
https://github.com/codeigniter4/CodeIgniter4.git
synced 2025-02-20 11:44:28 +08:00
Merge pull request #3070 from enix-app/debugbar-route-link
Small Feature: debugbar link
This commit is contained in:
commit
3c05f34558
@ -44,7 +44,7 @@
|
||||
{routes}
|
||||
<tr>
|
||||
<td>{method}</td>
|
||||
<td>{route}</td>
|
||||
<td data-debugbar-route="{method}">{route}</td>
|
||||
<td>{handler}</td>
|
||||
</tr>
|
||||
{/routes}
|
||||
|
@ -593,3 +593,15 @@
|
||||
|
||||
.debug-bar-noverflow {
|
||||
overflow: hidden; }
|
||||
|
||||
#debug-bar td[data-debugbar-route] form {
|
||||
display: none; }
|
||||
#debug-bar td[data-debugbar-route]:hover form {
|
||||
display: block; }
|
||||
#debug-bar td[data-debugbar-route]:hover > div {
|
||||
display: none; }
|
||||
#debug-bar td[data-debugbar-route] input[type=text] {
|
||||
padding: 2px; }
|
||||
#toolbarContainer.dark td[data-debugbar-route] input[type=text] {
|
||||
background: #000;
|
||||
color: #fff; }
|
||||
|
@ -20,6 +20,7 @@ var ciDebugBar = {
|
||||
ciDebugBar.setToolbarPosition();
|
||||
ciDebugBar.setToolbarTheme();
|
||||
ciDebugBar.toggleViewsHints();
|
||||
ciDebugBar.routerLink();
|
||||
|
||||
document.getElementById('debug-bar-link').addEventListener('click', ciDebugBar.toggleToolbar, true);
|
||||
document.getElementById('debug-icon-link').addEventListener('click', ciDebugBar.toggleToolbar, true);
|
||||
@ -545,7 +546,7 @@ var ciDebugBar = {
|
||||
}
|
||||
else
|
||||
{
|
||||
// In any other cases: if there is no cookie, or the cookie is set to
|
||||
// In any other cases: if there is no cookie, or the cookie is set to
|
||||
// "light", or the "prefers-color-scheme" is "light"...
|
||||
ciDebugBar.createCookie('debug-bar-theme', 'dark', 365);
|
||||
ciDebugBar.removeClass(ciDebugBar.toolbarContainer, 'light');
|
||||
@ -600,5 +601,61 @@ var ciDebugBar = {
|
||||
}
|
||||
}
|
||||
return null;
|
||||
},
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
trimSlash: function(text) {
|
||||
return text.replace(/^\/|\/$/g, '');
|
||||
},
|
||||
|
||||
routerLink: function() {
|
||||
var row, _location;
|
||||
var rowGet = document.querySelectorAll('#debug-bar td[data-debugbar-route="GET"]');
|
||||
var patt = /\((?:[^)(]+|\((?:[^)(]+|\([^)(]*\))*\))*\)/;
|
||||
|
||||
for (var i = 0; i < rowGet.length; i++) {
|
||||
row = rowGet[i];
|
||||
if (!/\/\(.+?\)/.test(rowGet[i].innerText)) {
|
||||
row.style = 'cursor: pointer;';
|
||||
row.setAttribute('title', location.origin + '/' + ciDebugBar.trimSlash(row.innerText));
|
||||
row.addEventListener('click', function(ev) {
|
||||
_location = location.origin + '/' + ciDebugBar.trimSlash(ev.target.innerText);
|
||||
var redirectWindow = window.open(_location, '_blank');
|
||||
redirectWindow.location;
|
||||
});
|
||||
}
|
||||
else {
|
||||
row.innerHTML = '<div>' + row.innerText + '</div>'
|
||||
+ '<form data-debugbar-route-tpl="' + ciDebugBar.trimSlash(row.innerText.replace(patt, '?')) + '">'
|
||||
+ row.innerText.replace(patt, '<input type="text" placeholder="$1">')
|
||||
+ '<input type="submit" value="Go" style="margin-left: 4px;">'
|
||||
+ '</form>';
|
||||
}
|
||||
}
|
||||
|
||||
rowGet = document.querySelectorAll('#debug-bar td[data-debugbar-route="GET"] form');
|
||||
for (var i = 0; i < rowGet.length; i++) {
|
||||
row = rowGet[i];
|
||||
|
||||
row.addEventListener('submit', function(event) {
|
||||
event.preventDefault()
|
||||
var inputArray = [], t = 0;
|
||||
var input = event.target.querySelectorAll('input[type=text]');
|
||||
var tpl = event.target.getAttribute('data-debugbar-route-tpl');
|
||||
|
||||
for (var n = 0; n < input.length; n++) {
|
||||
if (input[n].value.length > 0) inputArray.push(input[n].value);
|
||||
}
|
||||
|
||||
if (inputArray.length > 0) {
|
||||
_location = location.origin + '/' + tpl.replace(/\?/g, function() {return inputArray[t++]});
|
||||
var redirectWindow = window.open(_location, '_blank');
|
||||
redirectWindow.location;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user