mirror of
https://github.com/Dvorinka/PPve.git
synced 2026-06-03 20:12:59 +00:00
Add files via upload
This commit is contained in:
+72
-13
@@ -185,20 +185,79 @@
|
||||
});
|
||||
});
|
||||
|
||||
// Function to open Windows Explorer with a specific path using our integrated Go server
|
||||
// Function to open Windows Explorer with a specific path using multiple methods for compatibility
|
||||
function openWindowsFolder(path) {
|
||||
// Call our Go server to open the folder in Windows Explorer
|
||||
fetch(`/open?path=${encodeURIComponent(path)}`)
|
||||
.then(response => {
|
||||
if (!response.ok) {
|
||||
throw new Error('Failed to open folder');
|
||||
}
|
||||
console.log('Folder opened successfully');
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Error opening folder:', error);
|
||||
alert('Could not open folder. Make sure the server is running.');
|
||||
});
|
||||
// Method 1: Try using ActiveX (works in Internet Explorer)
|
||||
if (window.ActiveXObject !== undefined) {
|
||||
try {
|
||||
const shell = new ActiveXObject("Shell.Application");
|
||||
shell.Explore(path);
|
||||
console.log('Folder opened via ActiveX');
|
||||
return;
|
||||
} catch (e) {
|
||||
console.log("ActiveX failed or not supported: " + e.message);
|
||||
}
|
||||
}
|
||||
|
||||
// Method 2: Try using the file:// protocol
|
||||
try {
|
||||
// Format the path for the file:// protocol
|
||||
const formattedPath = path.replace(/\\/g, '/'); // Replace backslashes with forward slashes
|
||||
const fileUrl = 'file:///' + formattedPath;
|
||||
|
||||
// Open in a new window
|
||||
const newWindow = window.open(fileUrl, '_blank');
|
||||
|
||||
// Check if window was blocked by popup blocker
|
||||
if (newWindow) {
|
||||
console.log('Folder opened via file:// protocol');
|
||||
return;
|
||||
} else {
|
||||
console.log('Popup was blocked');
|
||||
}
|
||||
} catch (e) {
|
||||
console.log("file:// protocol failed: " + e.message);
|
||||
}
|
||||
|
||||
// Method 3: Fallback to server-side approach if available
|
||||
try {
|
||||
fetch(`/open?path=${encodeURIComponent(path)}`)
|
||||
.then(response => {
|
||||
if (!response.ok) {
|
||||
throw new Error('Server method failed');
|
||||
}
|
||||
console.log('Folder opened via server');
|
||||
})
|
||||
.catch(error => {
|
||||
// If all methods fail, show instructions to the user
|
||||
console.error('All methods failed:', error);
|
||||
showFolderInstructions(path);
|
||||
});
|
||||
} catch (e) {
|
||||
// If fetch isn't available or fails immediately
|
||||
showFolderInstructions(path);
|
||||
}
|
||||
}
|
||||
|
||||
// Show instructions to the user when all automatic methods fail
|
||||
function showFolderInstructions(path) {
|
||||
const instructions = `
|
||||
<div style="text-align: left; padding: 15px;">
|
||||
<h3>Otevření složky Windows</h3>
|
||||
<p>Automatické otevření složky selhalo. Zkuste jeden z následujících postupů:</p>
|
||||
<ol>
|
||||
<li>Zkopírujte tuto cestu: <br><input type="text" value="${path}" style="width: 100%; padding: 5px; margin: 5px 0;" onclick="this.select();"></li>
|
||||
<li>Otevřete Průzkumník Windows (Win+E)</li>
|
||||
<li>Vložte cestu do adresního řádku a stiskněte Enter</li>
|
||||
</ol>
|
||||
<button onclick="this.parentNode.parentNode.remove()" style="padding: 5px 10px; margin-top: 10px;">Zavřít</button>
|
||||
</div>
|
||||
`;
|
||||
|
||||
const modal = document.createElement('div');
|
||||
modal.style.cssText = 'position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,0.5); display: flex; align-items: center; justify-content: center; z-index: 1000;';
|
||||
modal.innerHTML = `<div style="background: white; border-radius: 8px; max-width: 500px; box-shadow: 0 4px 8px rgba(0,0,0,0.2);">${instructions}</div>`;
|
||||
document.body.appendChild(modal);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user