fix: échappement cassé dans _loadPreviewContent — quotes échappées causaient SyntaxError
- window.location=\\'/path\\'" → <a href="..."> (évite onclick inline échappé)
- onerror="this.parentElement.innerHTML=\\'...\\'" → onerror="this.style.display='none'"
- Ces doubles-échappements injectés par le patch tool cassaient le parsing JS
- Résultat: Alpine.data('wsInit') ne s'exécutait pas → toutes variables 'not defined'
This commit is contained in:
@@ -1159,7 +1159,7 @@ document.addEventListener('alpine:init', function() {
|
|||||||
this.previewPanelContent = '<div style="text-align:center;padding:40px;color:var(--text-secondary)">'
|
this.previewPanelContent = '<div style="text-align:center;padding:40px;color:var(--text-secondary)">'
|
||||||
+ '<span style="font-size:48px;display:block;margin-bottom:12px">📁</span>'
|
+ '<span style="font-size:48px;display:block;margin-bottom:12px">📁</span>'
|
||||||
+ '<div style="font-size:14px">' + (node.child_count||0) + ' item(s)</div>'
|
+ '<div style="font-size:14px">' + (node.child_count||0) + ' item(s)</div>'
|
||||||
+ '<button class="btn btn-secondary" style="margin-top:16px" onclick="window.location=\\'/local-workspace?folder=' + node.id + '\\'">Open folder</button>'
|
+ '<a href="/local-workspace?folder=' + node.id + '" class="btn btn-secondary" style="display:inline-block;text-decoration:none;margin-top:16px">Open folder</a>'
|
||||||
+ '</div>';
|
+ '</div>';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1167,10 +1167,10 @@ document.addEventListener('alpine:init', function() {
|
|||||||
var name = (node.name || '').toLowerCase();
|
var name = (node.name || '').toLowerCase();
|
||||||
// Image preview
|
// Image preview
|
||||||
if (/\.(png|jpe?g|gif|webp|svg|bmp|ico)$/.test(name)) {
|
if (/\.(png|jpe?g|gif|webp|svg|bmp|ico)$/.test(name)) {
|
||||||
var wsId = 1; // from workspace
|
var wsId = 1;
|
||||||
var imgUrl = '/api/files/' + wsId + '/' + encodeURIComponent(node.name);
|
var imgUrl = '/api/files/' + wsId + '/' + encodeURIComponent(node.name);
|
||||||
this.previewPanelContent = '<div style="text-align:center;padding:12px;">'
|
this.previewPanelContent = '<div style="text-align:center;padding:12px;">'
|
||||||
+ '<img src="' + imgUrl + '" style="max-width:100%;max-height:50vh;border-radius:8px;" onerror="this.parentElement.innerHTML=\\'<div style=padding:20px;color:var(--text-tertiary)>Image not available</div>\\'">'
|
+ '<img src="' + imgUrl + '" style="max-width:100%;max-height:50vh;border-radius:8px;" onerror="this.style.display=\'none\'">'
|
||||||
+ '</div>';
|
+ '</div>';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1189,7 +1189,6 @@ document.addEventListener('alpine:init', function() {
|
|||||||
var format = r.format || '';
|
var format = r.format || '';
|
||||||
var preview = '';
|
var preview = '';
|
||||||
if (format === 'file') {
|
if (format === 'file') {
|
||||||
// Try to detect image/pdf from content metadata
|
|
||||||
try {
|
try {
|
||||||
var meta = JSON.parse(content);
|
var meta = JSON.parse(content);
|
||||||
if (meta.file_path && /\.(png|jpe?g|gif|webp|svg|bmp|ico)$/i.test(meta.file_path)) {
|
if (meta.file_path && /\.(png|jpe?g|gif|webp|svg|bmp|ico)$/i.test(meta.file_path)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user