GithubHelp home page GithubHelp logo

cubiclesoft / js-fileexplorer Goto Github PK

View Code? Open in Web Editor NEW
232.0 8.0 40.0 612 KB

A zero dependencies, customizable, pure Javascript widget for navigating, managing, uploading, and downloading files and folders or other hierarchical object structures on any modern web browser.

PLSQL 2.87% CSS 0.79% HTML 3.33% JavaScript 59.70% PHP 33.31%
filemanager file-manager folder-viewer file-uploader file-download file-explorer widget

js-fileexplorer's Issues

License request

Hello, I'd like to use this project in one of my (FOSS) programs. Could I ask you if it would be possible to get a compatible license for this in the repository? Right now there is no indicator as to what the license is, which means it goes under GitHubs default licensing, which isn't great.

onmove - get file names by ids

In my project i use my own backend code to handle refresh/delete/move/rename... requests.
Every operation requires the full path of a file.
For example a delete action GET-Request would look like this https://......../fileHandlerInterface.php?fileName=/home/user1/test.txt&op=delete.
As a gui i used your code and it worked pretty well, until i started working with the move event.
It gives the user the srcpath, which is an array (not a folder object!).
And the moved files as an array of ids.
I tried everything to parse the ids into the correct format, but failed.
Can you help me?

my code:

onmove: function(moved, srcpath, srcids, destfolder) {
                    
	var sourcepath = "";

	srcpath.forEach(element => {
		sourcepath += element[1];
	});
                    
                    
	var destpath = dataContainer.buildAbsolutePath(destfolder);//own function creates absolute path from folder object

	console.log("onmove {sourcepath: " + sourcepath + " srcids: " + srcids + " destfolder: " + destpath + "}");

	moved("Server/Network error");

},

ARIA implementation/ADA screen reader compliance

During the initial development, significant effort was made to make sure keyboard navigation worked well and hit on all the critical navigation areas. This is a very complex widget with lots of little details. The big question is: Is this Americans with Disabilities Act (ADA) compliant? If not, then what ARIA labels, code changes, etc. need to be applied to bring it into compliance?

Firefox has a built-in accessibility analyzer. When I run it, it shows a giant list of "problems" that it found. Here's an example:

Clickable elements must be focusable and should have interactive semantics.

The very first of several hundred potential accessibility issues that Firefox finds with the widget is in regards to the entire widget wrapper and keyboard navigation. Basically, Firefox is saying that while the mouse can click on the widget wrapper, the keyboard can't reach the same element. When the user clicks on the widget, it forces the keyboard focus area to a focusable element.

There are several questions to answer here for just this one issue:

  • Is the mouse-click -> focus-steal behavior the correct thing to do?
  • Does there need to be keyboard interaction on the entire widget wrapper for ADA compliance?
  • What ARIA items and/or code changes are needed to achieve ADA compliance?

I am not qualified (as in, I don't use a screen reader and, even if I did, I wouldn't use it the same way a person with vision deficiencies would) nor am I sufficiently knowledgeable in this area to figure out what the correct answers are despite reading a number of guides on ARIA. What happens now, IMO, makes the most sense under a wide range of circumstances, but the various choices made might not be the best choices.

As I mentioned, I've read a number of ARIA guides - clearly written by fully sighted people (who are also unqualified) - and there doesn't seem to be a consensus on how to approach building widgets like this one. Just broad, sweeping, hand-waving "here are the various ARIA attributes" and "good luck!" style messaging. Neither of which help to actually answer the earlier questions. So if you chance upon this issue and can provide laser-focused answers to those three questions (and whatever others I might have), it would provide a starting point to work through the accessibility issue list and ultimately bring the whole widget into complete ADA compliance.

No tags, no npm/yarn, no composer ?

hey, it was a surprise to find a JS FileExplorer that is not overly priced/free.

So I was happy to try it out on my app,
but sadly there's no package manager to install that component.

Why 🤔

Upload not working for files with size over chunksize

I'm using lighttpd 1.4.59 with PHP 7.4.27 on Gentoo Linux.

When I try to upload file with size over chunksize (in my case it seems to be 1MB), final stage of upload never happened. File is actually uploaded in full size, but stay with .tmp extension.

Removing .tmp and comparing file with original it's seems identical. If I put fixed chunksize to some very large number like 100GB for example make upload to work.

Error downloading multiple files

Hello. When downloading multiple files, it tells me that the zip file is not correct or contains errors.

It happens with PDF, sometimes with .docx

Unable to open the downloaded zip when selecting an entire folder or selecting multiple files.

What are js-fileexplorer differences from WebDAV?

What are js-fileexplorer differences from WebDAV?

I am a lighttpd developer and lighttpd natively supports WebDAV with lighttpd mod_webdav. Files and folders can be manipulated in MacOS, Windows, Linux, and others using the client OS native file interfaces (as long as they support the WebDAV protocol)

I am curious where js-fileexplorer has advantages, and if these advantages are over the client OS WebDAV implementations or if there is something that lighttpd can do better on the server side.

Cool project.

This looks great.
I would like to integrate with a backend file server on windows using c# and .net core framework.
I guess this can be done since I am comfortable with c# . Right ?
Thanks
giannis

Help following symlinks

Hi! I am trying to use this to access a symlinked folder and it says "failed to load folder. Invalid path specified" even though when I hover over the symlink folder it shows the folder's owner, group, etc, which makes me think I might be missing something silly, or maybe it's intended not to follow symlinks?!

Not sure if this is a bug or an intended feature so sorry if it's not appropriate to raise here as an issue!

Allow for list view

Hello, awesome project. Could you point me in the direction within the 1000s of beautiful lines of code where you set up the view for the files/folder grid? I'd like to take a crack at adding a list/detail styled view. Thanks!

How to empty recycle bin?

Hi there,

I found that I could not delete any files in Recycle Bin or empty the bin.

image

Is there any options for me to allow permanently deleting items in Recycle Bin or empty Recycle Bin?

How to get file object for file upload?

I didn't get the mechanism of how to upload a file. The function for oninitupload receives a fileinfo object.
However, this object does not contain the full path to the file on my local drive. I expected to receive something like a File-object as provided by a file input element like <input type="file" id="fileInput" />

Any help will be appreciated
Thanks

How to use without php?

I have a json to describing directories.
I want to use it without php server. (Only frontend)
how to emulate prepXhr with json file or object?

[
{n: "folder1",
icon:"cloudFolder",
url:"./folder1"
}
]

Display details about each uploaded file in a separate UI

Currently, file upload details are limited to summary information in the upload queue and global cancellation controls. This issue is open to gauge interest in some sort of enhanced UI for tracking and cancelling individual uploads.

If someone wants to pick up the implementation of this feature, let me know. I have some ideas of what I'd like it to look like.

PNG vs. SVG icons

Currently, the icons in the widget are sourced from a single PNG sprite sheet. The switch to PNGs was done after attempting a SVG icon implementation that rendered rather badly on desktop browsers.

Unfortunately, devices with higher pixel densities scale up the PNG icons, which ends up looking blurry. This was discovered pretty late during development.

The quick fix was to apply the relatively new CSS image-rendering: pixelated feature to provide a hint to the scaler to increase the crispness of the images. However, there are now a few jaggy edges and supposedly mobile Safari (iOS) flips the meaning of pixelated vs. crisp-edges. I would prefer a more refined option like "edge-detect-pixelated" that combines nearest neighbor for the interior and smooths out the edges of the scaled image instead of blunt instruments like nearest neighbor vs. bicubic scaling.

Overall, this is a minor issue. If someone wants to tackle it, be my guest. All the artwork used to create the widget is in the 'artwork' directory. Desktop browsers are the most critical environment, which means there can't be odd visual artifacts that show up on desktop browsers. SVGs tend to not display consistently at small sizes across browsers.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.