Généralités : • L'authentification, non segmentée, protège de l'édition. Elle interdit aussi l'indexation/listing de certains dossier sur le frontend, mais ne doit dans aucun cas être considéré comme une protection de documents privés, qui restent accessiblent pour qui s'en donne les moyens. Ça n'empêche que vous pouvez lui coller un procès au cul si ça vous chante (selon une jurisprudence récente à la con). Frontend Tips : • Éditer le titre d'un alias ne change pas la description de l'élément originel • Bouton "Éditer" : si actif, la description s'édite en double-cliquant dessus; si inactif, le menu doit être utilisé • New link : paste "http://... description" -> automatically split and set the description field ⬇︎ blank Make offline version : # On the server : mksquashfs links links.sqsh -ef links/excl-archive.txt -progress -no-xattrs -all-root # On your computer : squashfuse_ll links.sqsh [mountpoint] -o allow_other # Run php-fpm and nginx with document root at the mountpoint Todo : • URL rewrite for index.php?path=... ($_CONF['urlrewrite']) • Load aliased folder -> open at orig location if reachable through the same page + move focus ; open in new tab if not • if (data[i]['type'] == 'error') -> error item, with error message as description • Web save • Web : die("item ".$_ID." requires manual removing") Structure of an item JSON file : - 'parent' : parent folder ID (`false` for root item) - 'refby' : array of item ID that reference this item - 'type' : type of the item : folder, yt, web, doc, hr, alias - 'public' : `true` if item is visible without auth (default), `false` if not - 'tags' : array of tag names - 'item' : type-specific field : • folder : - 'name', 'descr' - 'children' : array of children items ID • yt : - 'name', 'descr' - 'url' : youtube url • web : - 'name', 'descr' - 'saved' : `true` if the website is saved (as a directory [name].save/), `false` if not - 'url' : url of the ressource • doc : - 'name', 'descr' - 'ext' : extention of the file - 'url' : url of the document if specified, `null` if not • hr : [empty] • alias : - 'orig' : ID of the original item (must be a non-nameless item) - 'descr' : if null, the 'descr' field of the original item is used • txt : - 'descr' : the text note ('name' field is the short name for the item (lowercase, no spaces or special chars, no underscore, hyphens, some accentuated characters), unique inside a specified folder, and used as filename in the file tree, if applicable) ('descr' field is the full title of the item, as displayed on the interface, if applicable) Additional fields sent to frontend : - fields in the 'item' array merged with other fields • web, doc : - 'localurl' : relative url of the saved document/website • alias : - 'origdata' : data that would be sent to frontend for the original item Divers : • La session PHP est créée (et le cookie déposé) uniquement lors de la soumission du formulaire de auth.php • L'ajout d'un document avec pour url "stor:mon_document.ext" va, au lieu de stocker un doc uploadé, crée un lien symbolique depuis un stockage alternatif où le document a déjà été uploadé sous le nom "mon_document.ext". • L'ajout d'un document avec pour url "import:mon_document.ext" prend le document a déjà été uploadé sous le nom "mon_document.ext" dans le répertoire de stockage alternatif et le déplace