WXplorer (wěk-splôr'ər)

WXplorer began with the need for a javascript treeview to display navigational content. Actually, the need wasn't even for a treeview as much just a structure of dynamically expanding and collapsing elements based on some interaction (right, a treeview). I decided rather than reinvent the wheel, I'd just google "javascript treeview" and voila, I'd have a good, free, perfect thing.

As it turned out, however, that didn't happen. For a few hours I trapsed through different implementations from here and there, and basically decided I'd write my own. If anything, it'd be a good experience to learn Javascript.

A couple days went by and the treeview was finished. The thing is though, what can you really do with a treeview all by itself? So from there the idea evolved into an what it has become: a file explorer with the look and feel of a file explorer, but sitting in your browser.

WXplorer

NOTE: As of September 19 2007, I have decided that this version of the development process has ended (actually, it ended weeks ago), and will be putting the new source up within the next couple of days.

The changes include a complete rewrite of the object structure, some minor bug fixes, the shell of an auth system, and the shell/hooks for added server interaction via (unimplemented) RMB context menus. This will also mark the official deprecation of PHP4 support. Stay tuned for new source.

NOTE: As of August 24 2007, I have successfully updated much of the event handling, and am continuing to re-work the internals. If you have been trying to run WXplorer so far with PHP5 and are receiving an error, please let me know and I'll provide you and updated script immediately. Otherwise the new version will be up shortly (next couple weeks, days, something...) and should be much improved.

NOTE: As of August 01, 2007, I plan to rewrite some of the event handling in WXplorer, probably over the course of a weekend. When the rewrite is done, which will make the setup a little easier, I'll post links to both the new package and the existing one for those of you who are currently using it. If you have comments or suggestions, email them to me.

Features

Currently, WXplorer is at the end of phase 1, which includes the following features:

  1. Treeview
  2. Listview
  3. Address bar
  4. Customized tooltips
  5. Two styles
  6. Draggable separator between tree and list views

There is no exact plan for what the next phase will entail (or if there will even actually be a next phase), but the future could likely see some of these different functionalities:

  1. An SSL extension that allows the actual modification of a remote directory structure.
  2. An options pane for the toggling of file browser settings.
  3. Other stuff...

Look And Feel

WXplorer currently can be run using two different visual settings, modern and "old school". Modern is meant to resemble the newer file applications coming out in OS X and Windows Vista, though it is not aimed entirely at any one thing. It is just intended to look, well, modern.

The "old school" look is intended to look like the typical version of Windows Explorer, or one of its myriad knock-offs. It probably looks just like the file explorer you use on your desktop today, as opposed to the one you'll be using tomorrow.

Many of the images used in WXplorer are public domain (specifically the "old school" file icons) and many I created myself. Most of the modern images I created, although a few came from different odd places and when this is official it will contain any necessary license texts.

modern

modern

Platform

WXplorer employs three main technologies:

  1. PHP

    The PHP portion of the application runs on the webserver, builds and serves the directory structure in XML format.

    Note: the original PHP implementation was written using PHP5 and DOM. However, the sourceforge server is running PHP4 and Zend, which uses DOM XML. I rewrote the PHP using DOM XML to run on the server here, and will provide both implementations.

  2. XML

    XML DOM is used as the backbone of this entire application. When looking at other implementations of tree views, the one thing that struck out at me was that everyone created their own tree structure to hold the data semantically. Because the HTML DOM and XML DOM are closely related, it seemed like a good idea to just couple them; HTML DOM for the hypertext markup, and XML DOM for the semantic markup. The subset of nodes that make up the tree view and the nodes contained in the XML document are identical, and using XML DOM's tree methods means no crazy tree implementation.

    WXplorer uses Sarissa for cross-browser XML DOM implementation. These files are distributed, unmodified, with the release code.

  3. Javascript

    The bulk of the implementation in in Javascript, since the bulk of the work is done on the client. This allows for the smooth transitions and no callbacks, and in future versions will allow actual remote file manipulation via XML messaging over SSL. Buzzword alert: AJAX.

Currently WXplorer has been tested on

Source

The source for the working version of WXplorer (used in the demos) is available here: wxplorer.tar.gz

Licensing

WXplorer is licensed under the GNU General Public License, Version 2 (GPLv2).

Demo

There are four working implementations running on this server. The first two use PHP to build a document of the current directory structure (on this server) and display it in modern and "old school" visual settings, respectively.

The last two also toggle the settings, but are actually displaying information from documents that reside on the server. Because newer versions of HTTPRequest allow only requests from local servers, I built the documents on my personal webserver and stored them here. They are much larger filesystems, and will provide an example of how this implementation scales. [Note: I have since used a php-based proxy to request documents from outside the local domain, but have not implemented that in the demos here. For an example of how to do this, please refer to this walk-through]

Please note that the implementations on this server are "slow" to load up. I'm not certain if this is due to a slow server and a ton of images or what, but the code runs quickly on every server I have tested it on (only 2 others, but still). The sourceforge server uses Zend so that may have something to do with it as well. One possible solution is a 1990's pre-load image script, but I'm not that inclined at this point to add that.

Also note that because the large demos use a structure that was built in the past, it's possible (and likely) that file links are broken as files have been moved, changed and deleted over time.

Contact Info

If you have any questions or concerns about WXplorer, I can be contacted at