URL: https://linuxfr.org/users/dark_moule/journaux/creation-d-un-script-pour-nextcloud-ouvrir-le-dossier
Title: Création d'un script pour Nextcloud : ouvrir le dossier
Authors: dark_moule
Date: 2026年04月20日T09:51:49+02:00
License: CC By-SA
Tags: claude, intelligence_artificielle, grands_modèles_de_langage, vibe_coding, slop et nextcloud
Score: -2
Bonjour,
J'utilise Nextcloud pour mon activité professionnelle, via un navigateur. Je suis assez embêté par l'absence d'une fonction qui me paraît essentielle lors d'une recherche de fichier : ouvrir le dossier. Simplement.
L'objectif est d'ouvrir le dossier du résultat de la recherche, au lieu d'ouvrir le fichier lui-même. Cela m'est nécessaire pour trois cas d'usages :
1. Je dois consulter / copier / manipuler plusieurs fichiers qui sont dans le même dossier
2. Je dois ajouter un fichier / dossier dans le dossier contenant le fichier, mais je ne sais pas où est dans l'arborescence
3. Je ne me souviens plus du nom du fichier que je cherche, mais je me souviens d'un autre fichier qui est dans le même dossier.
Comme je n'ai rien trouvé de pertinent sur le web, j'ai demandé à Claude :>J'utilise nextcloud à partir d'un navigateur web. Lorsque je cherche un fichier, je souhaite pouvoir visualiser le dossier dans lequel il est stocké. Sur le même modèle que "Ouvrir l'emplacement de l'élément" que j'ai avec nautilus.
Voici sa réponse :>Malheureusement, la recherche native de Nextcloud (via la barre de recherche en haut) n'offre pas de bouton "ouvrir le dossier parent" dans les résultats. Voici les options selon ton niveau de confort :>>Option 1 — Extension navigateur : Nextcloud Cospend / scripts utilisateur (Greasemonkey/Tampermonkey)>Tu peux installer un userscript via Tampermonkey qui ajoute un lien "Ouvrir le dossier" sur chaque résultat de recherche. C'est la solution la plus proche de "Ouvrir l'emplacement" de Nautilus.>Cherche sur Greasy Fork : Nextcloud Files open folder.>>Option 2 — Utiliser l'application Files + le chemin dans l'URL>Quand un résultat de recherche apparaît, tu peux cliquer droit → Copier le lien sur le fichier, puis modifier l'URL manuellement :>URL d'un fichier : .../apps/files/?dir=/MonDossier/SousDossier&scrollto=monfichier.pdf>Le paramètre dir= contient exactement le chemin du dossier parent — il suffit de le garder et de supprimer &scrollto=...>>C'est manuel mais ça fonctionne immédiatement sans rien installer.
Je tiens à préciser que ne suis pas développeur et que je n'ai absolument aucune connaissance dans ce domaine. La réponse de Claude m'a donc surpris, car je ne suis pas du tout le public cible à ce type de proposition. De plus, je n'ai jamais demandé d'aide à Claude à ce sujet, ce qui aurait pu favoriser une telle réponse. Néanmoins, j'ai installé un des gestionnaires de script dans Firefox, copier/coller le résultat, suivi les instructions présentées et... recommencé quelques fois, cinq exactement (coucou la console du navigateur F12 !)
Maintenant cela fonctionne et je suis tout content. Je vais pouvoir passer moins de temps dans mes recherches sur Nextcloud.
L'objectif de ce journal n'est pas tant de publier le résultat que tout le monde peut reproduire facilement, mais pour faire part de possibilités que je n'envisageai pas du tout jusqu'à présent. Cela ouvre de nouvelles perspectives.
Je publie le résultat ici, puisque cela pourra éventuellement aider d'autres personnes.
```javascript
// ==UserScript==
// @name Nextcloud – Ouvrir le dossier parent
// @version 1.0.5
// @description Ajoute un bouton "Ouvrir le dossier" sur chaque résultat de recherche Nextcloud 32
// @author Claude / Anthropic
// @match *://*/*
// @grant none
// @run-at document-idle
// ==/UserScript==
(function () {
'use strict';
function isNextcloud() {
return !!(
document.querySelector('#unified-search') ||
document.querySelector('meta[name="apple-itunes-app"][content*="1125420102"]')
);
}
if (!isNextcloud()) return;
const origin = window.location.origin;
// -----------------------------------------------------------------------
// Styles
// -----------------------------------------------------------------------
const style = document.createElement('style');
style.textContent = `
.nc-folder-btn {
display: inline-flex;
align-items: center;
gap: 5px;
margin-left: 8px;
padding: 2px 8px;
border-radius: 4px;
font-size: 12px;
font-family: inherit;
color: var(--color-primary-element, #0082c9);
background: var(--color-primary-element-light, rgba(0,130,201,0.1));
border: 1px solid var(--color-primary-element, #0082c9);
cursor: pointer;
white-space: nowrap;
vertical-align: middle;
opacity: 0.9;
transition: opacity 0.15s;
}
.nc-folder-btn:hover { opacity: 1; }
.nc-folder-btn svg { flex-shrink: 0; }
.nc-folder-btn--loading { opacity: 0.5; cursor: wait; }
`;
document.head.appendChild(style);
const FOLDER_ICON = ``;
// -----------------------------------------------------------------------
// Helpers
// -----------------------------------------------------------------------
function getRequestToken() {
return document.head.dataset.requesttoken || '';
}
function getUser() {
return document.head.dataset.user || '';
}
// Encode chaque segment du chemin séparément pour préserver les "/"
function encodePath(path) {
return path.split('/').map(segment => encodeURIComponent(segment)).join('/');
}
// -----------------------------------------------------------------------
// Cache et résolution du chemin via WebDAV SEARCH
// -----------------------------------------------------------------------
const pathCache = {};
async function getFilePath(fileId) {
if (pathCache[fileId] !== undefined) return pathCache[fileId];
const user = getUser();
const body = `