Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Initial commit. Includes working prototype of elFinder class and

a very basic Django project showing how it is used.
  • Loading branch information...
commit d7c98eb9cd09df3742a35ee8e8a8f0bb4a3a0337 0 parents
@mikery authored
Showing with 15,956 additions and 0 deletions.
  1. 0  elfinder/__init__.py
  2. +7 −0 elfinder/admin.py
  3. +290 −0 elfinder/connector.py
  4. +9 −0 elfinder/exceptions.py
  5. +1 −0  elfinder/fixtures/testdata.json
  6. +151 −0 elfinder/models.py
  7. +1,541 −0 elfinder/static/css/elfinder.full.css
  8. +9 −0 elfinder/static/css/elfinder.min.css
  9. +49 −0 elfinder/static/css/theme.css
  10. BIN  elfinder/static/img/arrows-active.png
  11. BIN  elfinder/static/img/arrows-normal.png
  12. BIN  elfinder/static/img/crop.gif
  13. BIN  elfinder/static/img/dialogs.png
  14. BIN  elfinder/static/img/icons-big.png
  15. BIN  elfinder/static/img/icons-small.png
  16. BIN  elfinder/static/img/logo.png
  17. BIN  elfinder/static/img/progress.gif
  18. BIN  elfinder/static/img/quicklook-bg.png
  19. BIN  elfinder/static/img/quicklook-icons.png
  20. BIN  elfinder/static/img/resize.png
  21. BIN  elfinder/static/img/spinner-mini.gif
  22. BIN  elfinder/static/img/toolbar.png
  23. +9,831 −0 elfinder/static/js/elfinder.full.js
  24. +23 −0 elfinder/static/js/elfinder.min.js
  25. +313 −0 elfinder/static/js/i18n/elfinder.LANG.js
  26. +290 −0 elfinder/static/js/i18n/elfinder.ar.js
  27. +285 −0 elfinder/static/js/i18n/elfinder.cs.js
  28. +280 −0 elfinder/static/js/i18n/elfinder.de.js
  29. +287 −0 elfinder/static/js/i18n/elfinder.es.js
  30. +298 −0 elfinder/static/js/i18n/elfinder.fr.js
  31. +279 −0 elfinder/static/js/i18n/elfinder.jp.js
  32. +306 −0 elfinder/static/js/i18n/elfinder.nl.js
  33. +280 −0 elfinder/static/js/i18n/elfinder.pt_BR.js
  34. +310 −0 elfinder/static/js/i18n/elfinder.ru.js
  35. +280 −0 elfinder/static/js/i18n/elfinder.zh_CN.js
  36. +338 −0 elfinder/static/js/proxy/elFinderSupportVer1.js
  37. +39 −0 elfinder/templates/elfinder.html
  38. +6 −0 elfinder/templates/read_file.html
  39. +195 −0 elfinder/tests.py
  40. +8 −0 elfinder/urls.py
  41. +53 −0 elfinder/views.py
  42. 0  test_project/__init__.py
  43. +1 −0  test_project/initial_data.json
  44. +14 −0 test_project/manage.py
  45. +154 −0 test_project/settings.py
  46. 0  test_project/test_app/__init__.py
  47. +3 −0  test_project/test_app/models.py
  48. +16 −0 test_project/test_app/tests.py
  49. +1 −0  test_project/test_app/views.py
  50. +9 −0 test_project/urls.py
0  elfinder/__init__.py
No changes.
7 elfinder/admin.py
@@ -0,0 +1,7 @@
+from django.contrib import admin
+from mptt.admin import MPTTModelAdmin
+from .models import File, Directory, FileCollection
+
+admin.site.register(Directory, MPTTModelAdmin)
+admin.site.register(FileCollection)
+admin.site.register(File)
290 elfinder/connector.py
@@ -0,0 +1,290 @@
+from django.core.exceptions import ObjectDoesNotExist
+from elfinder.models import FileCollection, Directory, File
+from elfinder.exceptions import InvalidTarget
+import logging
+
+""" Connector class for Django/elFinder integration.
+
+ TODO
+
+ Create abstract Volume class so multiple volume types are possible.
+ Implement the current code as ModelVolume.
+
+ Permissions checks when viewing/modifying objects - users can currently
+ create files in other people's file collections, or delete files they
+ do not own. This needs to be implemented in an extendable way, rather
+ than being tied to one method of permissions checking.
+"""
+
+
+logger = logging.getLogger(__name__)
+
+
+class connector():
+ _version = '2.0'
+
+ # _commands maps command names (specified by the client) to functions on
+ # this class. Each command is tuple containing the function name and
+ # an object representing which GET variables must/must not be set for
+ # this command. Used by _check_command_variables.
+ _commands = {'open': ('__open', {'target': True}),
+ 'tree': ('__tree', {'target': True}),
+ 'file': ('__file', {'target': True}),
+ 'parents': ('__parents', {'target': True}),
+ 'mkdir': ('__mkdir', {'target': True, 'name': True}),
+ 'mkfile': ('__mkfile', {'target': True, 'name': True}),
+ }
+
+ httpAllowedParameters = ('cmd', 'target', 'targets[]', 'current', 'tree',
+ 'name', 'content', 'src', 'dst', 'cut', 'init',
+ 'type', 'width', 'height', 'upload[]')
+
+ def __init__(self, collection, options, read_file_view=None):
+ self.collection = collection
+ self.options = options
+ self.httpResponse = {}
+ self.httpStatusCode = 200
+ self.httpHeader = {'Content-type': 'application/json'}
+ self._GET = {}
+ self._response = {}
+ self.return_view = None
+
+ # Use the default read_file view if one has not been specified.
+ # It is imported here to prevent circular imports.
+ if read_file_view == None:
+ from elfinder.views import read_file
+ self.read_file_view = read_file_view
+ self.read_file_view = read_file
+
+ def _get_object_by_hash(self, hash):
+ """ Returns the object specified by the given hash.
+
+ The hash is in the format "xn", where
+ x is a letter identifying the type of object being requested and
+ n is that object's id.
+
+ d: Directory
+ f: File
+
+ The tree_id of the root node of the currently open FileCollection
+ is checked to ensure the target belongs to that tree.
+ The client requests the last-remembered dir on init, which breaks
+ things if they are now looking at a different FileCollection.
+
+ If the target does not belong to the current tree, return the root
+ of the current tree instead.
+ """
+ if hash == '':
+ # No target has been specified or the root dir is the target
+ return self.collection.root_node, Directory
+
+ try:
+ object_id = int(hash[1:])
+ except ValueError:
+ logger.error('Invalid target hash: %s' % hash)
+ raise Exception('Invalid target hash')
+
+ current_tree_id = self.collection.root_node.tree_id
+
+ if hash[0] == 'f':
+ model = File
+ query = {'pk': object_id, 'parent__tree_id': current_tree_id}
+ elif hash[0] == 'd':
+ model = Directory
+ query = {'pk': object_id, 'tree_id': current_tree_id}
+ else:
+ raise Exception('Invalid target hash')
+
+ try:
+ object = model.objects.get(**query)
+ except ObjectDoesNotExist:
+ raise InvalidTarget('Could not open target')
+
+ return object, model
+
+ def _check_command_variables(self, command_variables):
+ """ Checks the GET variables to ensure they are valid for this command.
+ _commands controls which commands must or must not be set.
+
+ This means command functions do not need to check for the presence
+ of GET vars manually - they can assume that required items exist.
+ """
+ for field in command_variables:
+ if command_variables[field] == True and field not in self._GET:
+ return False
+ elif command_variables[field] == False and field in self._GET:
+ return False
+ return True
+
+ def _run_command(self, func_name, command_variables):
+ """ Attempts to run the given command.
+
+ If the command does not execute, or there are any problems
+ validating the given _GET vars, an error message is set.
+
+ func: the name of the function to run (e.g. __open)
+ command_variables: a list of 'name':True/False tuples specifying
+ which GET variables must be present or empty for this command.
+ """
+ if not self._check_command_variables(command_variables):
+ self._response['error'] = 'Invalid arguments'
+ return
+
+ func = getattr(self, '_' + self.__class__.__name__ + func_name, None)
+ if not callable(func):
+ self._response['error'] = 'Command failed'
+ return
+
+ import traceback
+ import sys
+ try:
+ func()
+ except Exception, e:
+ self._response['error'] = '%s' % e
+ logger.exception(e)
+
+ def run(self, request):
+ """ Main entry point for running commands. Attemps to run a command
+ function based on info in request.GET.
+
+ The command function will complete in one of two ways. It can
+ set _response, which will be turned in to an HttpResponse and
+ returned to the client.
+
+ Or it can set return_view, a Django View function which will
+ be rendered and returned to the client.
+ """
+
+ self.request = request
+ # Copy allowed parameters from the given request's GET to self._GET
+ for field in self.httpAllowedParameters:
+ if field in request.GET:
+ if field == "targets[]":
+ self._GET[field] = request.GET.getlist(field)
+ else:
+ self._GET[field] = request.GET[field]
+
+ # If a valid command has been specified, try and run it. Otherwise set
+ # the relevant error message.
+ if 'cmd' in self._GET:
+ if self._GET['cmd'] in self._commands:
+ cmd = self._commands[self._GET['cmd']]
+ self._run_command(cmd[0], cmd[1])
+ else:
+ self._response['error'] = 'Unknown command'
+ else:
+ self._response['error'] = 'No command specified'
+
+ self.httpResponse = self._response
+ return self.httpStatusCode, self.httpHeader, self.httpResponse
+
+ def __parents(self):
+ """ Handles the parent command.
+
+ Sets _response['tree'], which contains a list of dicts representing
+ the ancestors/siblings of the target object.
+
+ The tree is not a tree in the traditional hierarchial sense, but
+ rather a flat list of dicts which have hash and parent_hash (phash)
+ values so the client can draw the tree.
+ """
+ object, model = self._get_object_by_hash(self._GET['target'])
+ self._response['tree'] = object.get_tree(ancestors=True, siblings=True)
+
+ def __tree(self):
+ """ Handles the 'tree' command.
+
+ Sets _response['tree'] - a list of children of the specified
+ target Directory.
+ """
+ object, model = self._get_object_by_hash(self._GET['target'])
+ self._response['tree'] = object.get_tree(children=True)
+
+ def __file(self):
+ """ Handles the 'file' command.
+
+ Sets return_view, which will cause read_file_view to be rendered
+ as the response. A custom read_file_view can be when initialising
+ the connector.
+ """
+ object, model = self._get_object_by_hash(self._GET['target'])
+ if model == File:
+ # A file was requested, so return the read_file view.
+ self.return_view = self.read_file_view(self.request, object,
+ self.collection)
+
+ def __open(self):
+ """ Handles the 'open' command.
+
+ Sets _response['files'] and _response['cwd'].
+
+ If 'tree' is requested, 'files' contains information about all
+ ancestors, siblings and children of the target. Otherwise, 'files'
+ only contains info about the target's immediate children.
+
+ 'cwd' contains info about the currently selected directory.
+ """
+ object, model = self._get_object_by_hash(self._GET['target'])
+
+ self._response['cwd'] = object.get_info()
+
+ if 'tree' in self._GET and self._GET['tree'] == '1':
+ # Add info about ancestors, siblings and children
+ self._response['files'] = object.get_tree(True, True, True)
+ self._response['files'].append(object.get_info())
+ else:
+ # Add info about childen only
+ self._response['files'] = object.get_tree(False, False, True)
+
+ # If the request includes 'init', add some client initialisation
+ # data to the response.
+ if 'init' in self._GET:
+ self._response['api'] = '2.0'
+ self._response['disabled'] = []
+ self._response['params'] = {'dotFiles': False,
+ 'uplMaxSize': '128M',
+ 'archives': [],
+ 'extract': [],
+ 'url': 'none'}
+
+ def _create_object(self, model):
+ """ Creates a directory or file.
+
+ 'model' is either Directory or File.
+ The 'target' GET variable specifies the parent of the new object.
+ """
+ from django.core.exceptions import ValidationError
+
+ parent_id = self._GET['target']
+ try:
+ parent = Directory.objects.get(pk=parent_id[1:])
+ except (ValueError, Directory.DoesNotExist), e:
+ self._response['error'] = 'Invalid parent directory'
+ logger.exception(e)
+ return
+
+ name = self._GET['name'].replace('+', ' ')
+
+ new_obj = model(name=name,
+ parent=parent)
+ try:
+ new_obj.validate_unique()
+ except ValidationError, e:
+ self._response['error'] = " ".join(e.messages)
+ logger.exception(e)
+ return
+
+ try:
+ new_obj.save()
+ except Exception, e:
+ self._repsonse['error'] = 'Could not create new object'
+ logger.exception(e)
+
+ # The client expects 'added' to be a list of new items.
+ self._response['added'] = [new_obj.get_info()]
+
+ def __mkdir(self):
+ return self._create_object(Directory)
+
+ def __mkfile(self):
+ return self._create_object(File)
9 elfinder/exceptions.py
@@ -0,0 +1,9 @@
+""" elfinder Exceptions. """
+
+class InvalidTarget(Exception):
+ """ Raised when client requested an invalid File or Directory hash.
+
+ Invalid means it does not exist, or does not belong to the current
+ tree.
+ """
+ pass
1  elfinder/fixtures/testdata.json
@@ -0,0 +1 @@
+[{"pk": 1, "model": "elfinder.directory", "fields": {"rght": 12, "name": "Books", "parent": null, "level": 0, "lft": 1, "tree_id": 1}}, {"pk": 2, "model": "elfinder.directory", "fields": {"rght": 7, "name": "D", "parent": 1, "level": 1, "lft": 2, "tree_id": 1}}, {"pk": 4, "model": "elfinder.directory", "fields": {"rght": 4, "name": "Dickens, Charles", "parent": 2, "level": 2, "lft": 3, "tree_id": 1}}, {"pk": 5, "model": "elfinder.directory", "fields": {"rght": 6, "name": "Doyle, Arthur Conan", "parent": 2, "level": 2, "lft": 5, "tree_id": 1}}, {"pk": 3, "model": "elfinder.directory", "fields": {"rght": 11, "name": "S", "parent": 1, "level": 1, "lft": 8, "tree_id": 1}}, {"pk": 6, "model": "elfinder.directory", "fields": {"rght": 10, "name": "Stevenson, Robert Louis", "parent": 3, "level": 2, "lft": 9, "tree_id": 1}}, {"pk": 1, "model": "elfinder.filecollection", "fields": {"name": "Books", "root_node": 1}}, {"pk": 1, "model": "elfinder.file", "fields": {"content": "To Sherlock Holmes she is always the woman. I have seldom heard him mention her under any other name. In his eyes she eclipses and predominates the whole of her sex. It was not that he felt any emotion akin to love for Irene Adler. All emotions, and that one particularly, were abhorrent to his cold, precise but admirably balanced mind. He was, I take it, the most perfect reasoning and observing machine that the world has seen, but as a lover he would have placed himself in a false position. He never spoke of the softer passions, save with a gibe and a sneer. They were admirable things for the observer\u2014excellent for drawing the veil from men\u2019s motives and actions. But for the trained reasoner to admit such intrusions into his own delicate and finely adjusted temperament was to introduce a distracting factor which might throw a doubt upon all his mental results. Grit in a sensitive instrument, or a crack in one of his own high-power lenses, would not be more disturbing than a strong emotion in a nature such as his. And yet there was but one woman to him, and that woman was the late Irene Adler, of dubious and questionable memory.", "name": "The Adventures of Sherlock Holmes", "parent": 5}}, {"pk": 2, "model": "elfinder.file", "fields": {"content": "Marley was dead: to begin with. There is no doubt whatever about that. The register of his burial was signed by the clergyman, the clerk, the undertaker, and the chief mourner. Scrooge signed it: and Scrooge\u2019s name was good upon \u2019Change, for anything he chose to put his hand to. Old Marley was as dead as a door-nail.\r\n\r\nMind! I don\u2019t mean to say that I know, of my own knowledge, what there is particularly dead about a door-nail. I might have been inclined, myself, to regard a coffin-nail as the deadest piece of ironmongery in the trade. But the wisdom of our ancestors is in the simile; and my unhallowed hands shall not disturb it, or the Country\u2019s done for. You will therefore permit me to repeat, emphatically, that Marley was as dead as a door-nail.", "name": "A Christmas Carol", "parent": 4}}, {"pk": 3, "model": "elfinder.file", "fields": {"content": "Book the First\u2014Recalled to Life\r\n\r\nI. The Period\r\n\r\nIt was the best of times,\r\nit was the worst of times,\r\nit was the age of wisdom,\r\nit was the age of foolishness,\r\nit was the epoch of belief,\r\nit was the epoch of incredulity,\r\nit was the season of Light,\r\nit was the season of Darkness,\r\nit was the spring of hope,\r\nit was the winter of despair,\r\nwe had everything before us, we had nothing before us, we were all going direct to Heaven, we were all going direct the other way\u2014 in short, the period was so far like the present period, that some of its noisiest authorities insisted on its being received, for good or for evil, in the superlative degree of comparison only.", "name": "A Tale of Two Cities", "parent": 4}}, {"pk": 4, "model": "elfinder.file", "fields": {"content": "SQUIRE TRELAWNEY, Dr. Livesey, and the rest of these gentlemen having asked me to write down the whole particulars about Treasure Island, from the beginning to the end, keeping nothing back but the bearings of the island, and that only because there is still treasure not yet lifted, I take up my pen in the year of grace 17__ and go back to the time when my father kept the Admiral Benbow inn and the brown old seaman with the sabre cut first took up his lodging under our roof.\r\n\r\nI remember him as if it were yesterday, as he came plodding to the inn door, his sea-chest following behind him in a hand-barrow\u2014a tall, strong, heavy, nut-brown man, his tarry pigtail falling over the shoulder of his soiled blue coat, his hands ragged and scarred, with black, broken nails, and the sabre cut across one cheek, a dirty, livid white. I remember him looking round the cover and whistling to himself as he did so, and then breaking out in that old sea-song that he sang so often afterwards:\r\n\r\n \"Fifteen men on the dead man's chest\u2014\r\n Yo-ho-ho, and a bottle of rum!\"", "name": "Treasure Island", "parent": 6}}]
151 elfinder/models.py
@@ -0,0 +1,151 @@
+from django.db import models
+from mptt.models import MPTTModel, TreeForeignKey
+
+
+class FileCollectionChildMixin:
+ """ Provides common methods for Files/Directories.
+ """
+ def get_parent_hash(self):
+ """ Returns the hash of this object's parent, or '' if this is the
+ root of the tree.
+ """
+ if self.parent:
+ return self.parent.get_hash()
+ else:
+ return ''
+
+
+class Directory(MPTTModel, FileCollectionChildMixin):
+ """ A Directory in the file structure of a FileCollection. May contain
+ child Directory and File objects.
+
+ TODO prevent directories which are not auto-created root nodes from
+ being saved with no parent.
+ """
+ name = models.CharField(max_length=255)
+ parent = TreeForeignKey('self', null=True, blank=True, related_name='dirs')
+
+ class Meta:
+ verbose_name_plural = 'directories'
+ unique_together = ('name', 'parent')
+
+ def __unicode__(self):
+ return self.name
+
+ def get_hash(self):
+ return 'd%s' % self.id
+
+ def get_info(self):
+ """ Returns an object to represent this object in elFinder. Populates
+ 'cwd' in response to 'open' command.
+
+ If the object is the root dir, 'volume_id' is included in the
+ response.
+ """
+ obj = {'name': self.name,
+ 'hash': self.get_hash(),
+ 'phash': self.get_parent_hash(),
+ 'mime': 'directory',
+ 'read': 1,
+ 'write': 1,
+ 'size': 0,
+ 'date': 'Today 10:00',
+ 'dirs': 0 if (self.dirs.count() == 0) else 1
+ }
+
+ if not self.parent:
+ obj['volume_id'] = 'fc%s_' % self.filecollection.id
+ #obj['volume_id'] = 'fc%s_' % '1234'
+ obj['locked'] = 1
+
+ return obj
+
+ def get_tree(self, ancestors=False, siblings=False, children=False):
+ """ Returns a list of dicts containing information about all dirs in
+ tree. Note, this is not a tree in the hierarchial sense - we return
+ a flat list here, and the client makes it in to a hierarchial tree
+ using the hash/phash (parent hash) values in each dict.
+
+ The boolean values control what content is included in the tree.
+ Any of ancestors, siblings and children may be included.
+
+ The function provides data for the 'tree' and 'parents' commands.
+ """
+ tree = []
+
+ if ancestors:
+ for item in self.get_ancestors(include_self=True):
+ tree.append(item.get_info())
+ for ancestor_sibling in item.get_siblings():
+ tree.append(ancestor_sibling.get_info())
+
+ # Only return siblings for non-root nodes
+ if siblings and self.parent:
+ for item in self.get_siblings():
+ tree.append(item.get_info())
+
+ if children:
+ # Add child directories
+ for item in self.get_children():
+ tree.append(item.get_info())
+ # Add child files
+ for item in self.files.all():
+ tree.append(item.get_info())
+
+ return tree
+
+
+class FileCollection(models.Model):
+ """ A collection of Directory and File objects.
+
+ # TODO delete files/dirs when deleting file collection
+ """
+ name = models.CharField(max_length=255, unique=True)
+ #tree_id = models.CharField(
+ root_node = models.OneToOneField(Directory)
+
+ def save(self, *args, **kwargs):
+ """ Creates a Directory (root node) before saving. As the Directory
+ does not have a parent it causes a new MPTT Tree to be created.
+ The ID of this store is stored on the FileCollection model so
+ we can find its dirs/files later.
+ """
+ # TODO test this properly
+ if not self.id and not self.root_node:
+ self.root_node = Directory(name='test')
+ self.root_node.save()
+ super(FileCollection, self).save(*args, **kwargs)
+
+ def __unicode__(self):
+ return self.name
+
+
+class File(models.Model, FileCollectionChildMixin):
+ """ A File in a FileCollection.
+ """
+ name = models.CharField(max_length=255)
+ parent = TreeForeignKey(Directory, null=True, blank=True,
+ related_name='files')
+ content = models.TextField(max_length=2048, blank=True)
+
+ class Meta:
+ unique_together = ('name', 'parent')
+
+ def __unicode__(self):
+ return self.name
+
+ def get_hash(self):
+ return 'f%s' % self.id
+
+ def get_info(self):
+ """ Returns an object to represent this object in elFinder. Populates
+ 'cwd' in response to 'open' command.
+ """
+ return {'name': self.name,
+ 'hash': self.get_hash(),
+ 'phash': self.get_parent_hash(),
+ 'mime': 'text/plain',
+ 'size': len(self.content),
+ 'read': True,
+ 'write': True,
+ 'rm': True}
1,541 elfinder/static/css/elfinder.full.css
@@ -0,0 +1,1541 @@
+/*!
+ * elFinder - file manager for web
+ * Version 2.0 beta (2011-11-01)
+ * http://elfinder.org
+ *
+ * Copyright 2009-2011, Studio 42
+ * Licensed under a 3 clauses BSD license
+ */
+
+/* File: /root/tmp/elFinder/css/commands.css */
+/******************************************************************/
+/* COMMANDS STYLES */
+/******************************************************************/
+
+/********************** COMMAND "RESIZE" ****************************/
+
+.elfinder-resize-control { padding-top:1em; }
+
+.elfinder-resize-control input[type=text] { border:1px solid #aaa; }
+
+
+.elfinder-resize-preview {
+ width:400px;
+ height:400px;
+ padding:10px;
+ background:#fff;
+ border:1px solid #aaa;
+ float:right;
+ position:relative;
+ overflow:auto;
+/* z-index:100;*/
+}
+
+.elfinder-resize-handle { position:relative;}
+
+.elfinder-resize-handle-hline,
+.elfinder-resize-handle-vline {
+ position:absolute;
+ background-image:url("../img/crop.gif");
+}
+
+.elfinder-resize-handle-hline {
+ width:100%;
+ height:1px !important;
+ background-repeat:repeat-x;
+}
+.elfinder-resize-handle-vline {
+ width:1px !important;
+ height:100%;
+ background-repeat:repeat-y;
+}
+
+.elfinder-resize-handle-hline-top { top:0; left:0; }
+.elfinder-resize-handle-hline-bottom { bottom:0; left:0; }
+.elfinder-resize-handle-vline-left { top:0; left:0; }
+.elfinder-resize-handle-vline-right { top:0; right:0; }
+
+
+
+.elfinder-resize-handle-point {
+ position:absolute;
+ width:8px;
+ height:8px;
+ border:1px solid #777;
+ background:transparent;
+}
+
+.elfinder-resize-handle-point-n {
+
+}
+
+.elfinder-resize-handle-point-ne {
+
+}
+
+.elfinder-resize-handle-point-e {
+ top:50%;
+ right:0;
+ margin-top:-5px;
+ margin-right:-5px;
+}
+
+.elfinder-resize-handle-point-se {
+ bottom:0;
+ right:0;
+ margin-bottom:-5px;
+ margin-right:-5px;
+}
+
+.elfinder-resize-handle-point-s {
+ bottom:0;
+ left:50%;
+ margin-bottom:-5px;
+ margin-left:-5px;
+}
+
+.elfinder-resize-handle-point-sw {
+
+}
+
+.elfinder-resize-handle-point-w {
+
+}
+
+.elfinder-resize-handle-point-nw {
+
+}
+
+
+
+.elfinder-resize-spinner {
+ position:absolute;
+ width:200px;
+ height:30px;
+ top:50%;
+ margin-top:-25px;
+ left:50%;
+ margin-left:-100px;
+ text-align:center;
+ background:url(../img/progress.gif) center bottom repeat-x;
+}
+
+.elfinder-resize-row { margin-bottom:7px; position:relative;}
+
+.elfinder-resize-label { float:left; width:80px;}
+
+.elfinder-resize-reset {
+ width:16px;
+ height:16px;
+/* border:1px solid #111;*/
+ position:absolute;
+ margin-top:-8px;
+}
+
+.elfinder-dialog-resize .ui-resizable-e { height:100%; width:10px; }
+.elfinder-dialog-resize .ui-resizable-s { width:100%; height:10px;}
+.elfinder-dialog-resize .ui-resizable-se {
+ background:transparent;
+ bottom:0;
+ right:0;
+ margin-right:-7px;
+ margin-bottom:-7px;
+}
+
+.elfinder-dialog-resize .ui-icon-grip-solid-vertical {
+ position:absolute;
+ top:50%;
+ right:0;
+ margin-top:-8px;
+ margin-right:-11px;
+}
+.elfinder-dialog-resize .ui-icon-grip-solid-horizontal {
+ position:absolute;
+ left:50%;
+ bottom:0;
+ margin-left:-8px;
+ margin-bottom:-11px;;
+}
+
+/********************** COMMAND "EDIT" ****************************/
+/* edit text file textarea */
+.elfinder-file-edit {
+ width:99%;
+ height:99%;
+ margin:0;
+ padding:2px;
+ border:1px solid #ccc;
+}
+
+
+/********************** COMMAND "HELP" ****************************/
+/* help dialog */
+.elfinder-help { margin-bottom:.5em; }
+
+/* fix tabs */
+.elfinder-help .ui-tabs-panel { padding:.5em; }
+.elfinder-dialog .ui-tabs .ui-tabs-nav li a { padding:.2em 1em;}
+
+.elfinder-help-shortcuts {
+ height:300px;
+ padding:1em;
+ margin:.5em 0;
+ overflow:auto;
+}
+.elfinder-help-shortcut { white-space:nowrap; clear:both;}
+
+.elfinder-help-shortcut-pattern { float:left; width:160px;}
+
+.elfinder-help-logo {
+ width:100px;
+ height:96px;
+ float:left;
+ margin-right:1em;
+ background:url('../img/logo.png') center center no-repeat;
+}
+
+.elfinder-help h3 { font-size:1.5em; margin:.2em 0 .3em 0; }
+
+.elfinder-help-separator { clear:both; padding:.5em; }
+
+.elfinder-help-link { padding:2px; }
+
+.elfinder-help .ui-priority-secondary { font-size:.9em;}
+
+.elfinder-help .ui-priority-primary { margin-bottom:7px;}
+
+.elfinder-help-team {
+ clear: both;
+ text-align:right;
+ border-bottom:1px solid #ccc;
+ margin:.5em 0;
+ font-size:.9em;
+}
+
+.elfinder-help-team div { float:left; }
+.elfinder-help-license { font-size:.9em;}
+
+.elfinder-help-disabled {
+ font-weight:bold;
+ text-align:center;
+ margin:90px 0;
+}
+
+.elfinder-help .elfinder-dont-panic {
+ display:block;
+ border:1px solid transparent;
+ width:200px;
+ height:200px;
+ margin:30px auto;
+ text-decoration:none;
+ text-align:center;
+ position:relative;
+ background:#d90004;
+ -moz-box-shadow: 5px 5px 9px #111;
+ -webkit-box-shadow: 5px 5px 9px #111;
+ box-shadow: 5px 5px 9px #111;
+ background: -moz-radial-gradient(80px 80px, circle farthest-corner, #d90004 35%, #960004 100%);
+ background: -webkit-gradient(radial, 80 80, 60, 80 80, 120, from(#d90004), to(#960004));
+ -moz-border-radius: 100px;
+ -webkit-border-radius: 100px;
+ border-radius: 100px;
+ outline:none;
+}
+
+.elfinder-help .elfinder-dont-panic span {
+ font-size:3em;
+ font-weight:bold;
+ text-align:center;
+ color:#fff;
+ position:absolute;
+ left:0;
+ top:45px;
+}
+
+
+
+
+/* File: /root/tmp/elFinder/css/common.css */
+/*********************************************/
+/* COMMON ELFINDER STUFFS */
+/*********************************************/
+
+/* common container */
+.elfinder { padding:0; position:relative; display:block; }
+
+/* right to left enviroment */
+.elfinder-rtl { text-align:right; direction:rtl; }
+
+/* nav and cwd container */
+.elfinder-workzone {
+ padding: 0;
+ position:relative;
+ overflow:hidden;
+}
+
+/* dir/file permissions and symlink markers */
+.elfinder-perms,
+.elfinder-symlink {
+ position:absolute;
+ width:16px;
+ height:16px;
+ background-image:url(../img/toolbar.png);
+ background-repeat:no-repeat;
+ background-position:0 -528px;
+}
+
+.elfinder-symlink { }
+
+/* noaccess */
+.elfinder-na .elfinder-perms { background-position:0 -96px; }
+
+/* read only */
+.elfinder-ro .elfinder-perms { background-position:0 -64px;}
+
+/* write only */
+.elfinder-wo .elfinder-perms { background-position:0 -80px;}
+
+/* drag helper */
+.elfinder-drag-helper {
+ width:60px;
+ height:50px;
+ padding:0 0 0 25px;
+ z-index:100000;
+}
+
+/* drag helper "plus" icon */
+.elfinder-drag-helper-icon-plus {
+ position:absolute;
+ width:16px;
+ height:16px;
+ left:43px;
+ top:55px;
+ background:url('../img/toolbar.png') 0 -544px no-repeat;
+ display:none;
+}
+
+/* show "plus" icon when ctrl/shift pressed */
+.elfinder-drag-helper-plus .elfinder-drag-helper-icon-plus { display:block; }
+
+/* files num in drag helper */
+.elfinder-drag-num {
+ position:absolute;
+ top:0;
+ left:0;
+ width:16px;
+ height:14px;
+ text-align:center;
+ padding-top:2px;
+ font-size:12px;
+ font-weight:bold;
+ color:#fff;
+ background-color:red;
+ -moz-border-radius: 8px;
+ -webkit-border-radius: 8px;
+ border-radius: 8px;
+}
+
+/* icon in drag helper */
+.elfinder-drag-helper .elfinder-cwd-icon { margin:0 0 0 -24px; float:left; }
+
+/* transparent overlay >_< */
+.elfinder-overlay { opacity: 0; filter:Alpha(Opacity=0); }
+
+/* panels under/below cwd (for search field etc) */
+.elfinder .elfinder-panel {
+ position:relative;
+ background-image:none;
+ padding:7px 12px;
+}
+
+
+
+
+
+
+/* File: /root/tmp/elFinder/css/contexmenu.css */
+/* menu and submenu */
+.elfinder-contextmenu,
+.elfinder-contextmenu-sub {
+ display:none;
+ position:absolute;
+ border:1px solid #aaa;
+ background:#fff;
+ color:#555;
+ padding:4px 0;
+}
+
+/* submenu */
+.elfinder-contextmenu-sub { top:5px; }
+/* submenu in rtl/ltr enviroment */
+.elfinder-contextmenu-ltr .elfinder-contextmenu-sub { margin-left:-5px; }
+.elfinder-contextmenu-rtl .elfinder-contextmenu-sub { margin-right:-5px; }
+
+/* menu item */
+.elfinder-contextmenu-item {
+ position:relative;
+ display:block;
+ padding:4px 30px;
+ text-decoration:none;
+ white-space:nowrap;
+ cursor:default;
+}
+/* text in item */
+.elfinder-contextmenu .elfinder-contextmenu-item span { font-size:.76em; display:block; }
+
+
+
+/* submenu item in rtl/ltr enviroment */
+.elfinder-contextmenu-ltr .elfinder-contextmenu-item { text-align:left; }
+.elfinder-contextmenu-rtl .elfinder-contextmenu-item { text-align:right; }
+.elfinder-contextmenu-ltr .elfinder-contextmenu-sub .elfinder-contextmenu-item { padding-left:12px; }
+.elfinder-contextmenu-rtl .elfinder-contextmenu-sub .elfinder-contextmenu-item { padding-right:12px; }
+
+/* command/submenu icon */
+.elfinder-contextmenu-arrow,
+.elfinder-contextmenu-icon {
+ position:absolute;
+ top:50%;
+ margin-top:-8px;
+}
+
+/* command icon in rtl/ltr enviroment */
+.elfinder-contextmenu-ltr .elfinder-contextmenu-icon { left:8px; }
+.elfinder-contextmenu-rtl .elfinder-contextmenu-icon { right:8px; }
+
+/* arrow icon */
+.elfinder-contextmenu-arrow {
+ width:16px;
+ height:16px;
+ background:url('../img/arrows-normal.png') 5px 4px no-repeat;
+}
+
+/* arrow icon in rtl/ltr enviroment */
+.elfinder-contextmenu-ltr .elfinder-contextmenu-arrow { right:5px; }
+.elfinder-contextmenu-rtl .elfinder-contextmenu-arrow { left:5px; background-position: 0 -10px; }
+
+/* disable ui border/bg image on hover */
+.elfinder-contextmenu .ui-state-hover { border:0 solid; background-image:none;}
+
+/* separator */
+.elfinder-contextmenu-separator {
+ height:0px;
+ border-top:1px solid #ccc;
+ margin:0 1px;
+}
+
+/* File: /root/tmp/elFinder/css/cwd.css */
+/******************************************************************/
+/* CURRENT DIRECTORY STYLES */
+/******************************************************************/
+/* cwd container to avoid selectable on scrollbar */
+.elfinder-cwd-wrapper {
+ overflow: auto;
+ position:relative;
+ padding:2px;
+ margin:0;
+}
+
+.elfinder-cwd-wrapper-list { padding:0; }
+
+/* container */
+.elfinder-cwd {
+ position:relative;
+ font-size:.7em;
+ cursor:default;
+ padding:0;
+ margin:0;
+ -moz-user-select: -moz-none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ user-select: none;
+}
+
+/* container active on dropenter */
+.elfinder .elfinder-cwd-wrapper.elfinder-droppable-active {
+ padding:0;
+ border:2px solid #8cafed;
+}
+
+
+/************************** ICONS VIEW ********************************/
+
+/* file container */
+.elfinder-cwd-view-icons .elfinder-cwd-file {
+ width:120px;
+ height:80px;
+ padding-bottom:2px;
+ cursor:default;
+ overflow:hidden;
+/* position:relative;*/
+}
+
+/* ltr/rtl enviroment */
+.elfinder-ltr .elfinder-cwd-view-icons .elfinder-cwd-file { float:left; margin:0 3px 12px 0; }
+.elfinder-rtl .elfinder-cwd-view-icons .elfinder-cwd-file { float:right; margin:0 0 5px 3px; }
+
+/* remove ui hover class border */
+.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover { border:0 solid; }
+
+/* icon wrapper to create selected highlight around icon */
+.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper {
+ width:52px;
+ height:52px;
+ margin:1px auto 1px auto;
+ padding:2px;
+ position:relative;
+}
+
+/* file name place */
+.elfinder-cwd-view-icons .elfinder-cwd-filename {
+ text-align:center;
+ white-space:nowrap;
+ overflow:hidden;
+ text-overflow:ellipsis;
+ -o-text-overflow:ellipsis;
+ margin:3px 1px 0 1px;
+ padding:1px;
+ -moz-border-radius: 8px;
+ -webkit-border-radius: 8px;
+ border-radius: 8px;
+}
+
+/* permissions/symlink markers */
+.elfinder-cwd-view-icons .elfinder-perms { bottom:4px; right:2px; }
+.elfinder-cwd-view-icons .elfinder-symlink { bottom:6px; left:0px; }
+
+/* icon/thumbnail */
+.elfinder-cwd-icon {
+ display:block;
+ width:48px;
+ height:48px;
+ margin:0 auto;
+ background: url('../img/icons-big.png') 0 0 no-repeat;
+ -moz-background-clip: padding;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+}
+
+/* "opened folder" icon on dragover */
+.elfinder-cwd .elfinder-droppable-active .elfinder-cwd-icon { background-position: 0 -100px; }
+
+/* mimetypes icons */
+.elfinder-cwd-icon-directory { background-position:0 -50px; }
+.elfinder-cwd-icon-application { background-position:0 -150px; }
+.elfinder-cwd-icon-x-empty,
+.elfinder-cwd-icon-text { background-position:0 -200px; }
+.elfinder-cwd-icon-image,
+.elfinder-cwd-icon-vnd-adobe-photoshop,
+.elfinder-cwd-icon-postscript { background-position:0 -250px; }
+.elfinder-cwd-icon-audio { background-position:0 -300px; }
+.elfinder-cwd-icon-video,
+.elfinder-cwd-icon-flash-video { background-position:0 -350px; }
+.elfinder-cwd-icon-rtf,
+.elfinder-cwd-icon-rtfd { background-position: 0 -401px; }
+.elfinder-cwd-icon-pdf { background-position: 0 -450px; }
+.elfinder-cwd-icon-vnd-ms-office,
+.elfinder-cwd-icon-msword,
+.elfinder-cwd-icon-vnd-ms-word,
+.elfinder-cwd-icon-vnd-oasis-opendocument-text,
+.elfinder-cwd-icon-ms-excel,
+.elfinder-cwd-icon-vnd-ms-excel,
+.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,
+.elfinder-cwd-icon-vnd-ms-powerpoint,
+.elfinder-cwd-icon-vnd-oasis-opendocument-presentation { background-position: 0 -500px; }
+.elfinder-cwd-icon-html { background-position: 0 -550px; }
+.elfinder-cwd-icon-css { background-position: 0 -600px; }
+.elfinder-cwd-icon-javascript,
+.elfinder-cwd-icon-x-javascript { background-position: 0 -650px; }
+.elfinder-cwd-icon-x-perl { background-position: 0 -700px; }
+.elfinder-cwd-icon-x-python { background-position: 0 -750px; }
+.elfinder-cwd-icon-x-ruby { background-position: 0 -800px; }
+.elfinder-cwd-icon-x-sh,
+.elfinder-cwd-icon-x-shellscript { background-position: 0 -850px; }
+.elfinder-cwd-icon-x-c,
+.elfinder-cwd-icon-x-csrc,
+.elfinder-cwd-icon-x-chdr,
+.elfinder-cwd-icon-x-c--,
+.elfinder-cwd-icon-x-c--src,
+.elfinder-cwd-icon-x-c--hdr,
+.elfinder-cwd-icon-x-java,
+.elfinder-cwd-icon-x-java-source { background-position: 0 -900px; }
+.elfinder-cwd-icon-x-php { background-position: 0 -950px; }
+.elfinder-cwd-icon-xml { background-position: 0 -1000px; }
+.elfinder-cwd-icon-zip,
+.elfinder-cwd-icon-x-7z-compressed { background-position: 0 -1050px; }
+.elfinder-cwd-icon-x-gzip,
+.elfinder-cwd-icon-x-tar { background-position: 0 -1100px; }
+.elfinder-cwd-icon-x-bzip,
+.elfinder-cwd-icon-x-bzip2 { background-position: 0 -1150px; }
+.elfinder-cwd-icon-x-rar,
+.elfinder-cwd-icon-x-rar-compressed { background-position: 0 -1200px; }
+.elfinder-cwd-icon-x-shockwave-flash { background-position: 0 -1250px; }
+.elfinder-cwd-icon-group { background-position:0 -1300px;}
+
+/* textfield inside icon */
+.elfinder-cwd input { width:100%; border:0px solid; margin:0; padding:0; }
+.elfinder-cwd-view-icons input {text-align:center; }
+
+.elfinder-cwd-view-icons { text-align:center; }
+
+
+/************************************ LIST VIEW ************************************/
+
+/*.elfinder-cwd-view-list { padding:0 0 4px 0; }*/
+
+.elfinder-cwd table { width:100%; border-collapse:collapse; border:0 solid; margin:0 0 10px 0; }
+.elfinder .elfinder-cwd table thead tr { border-left:0 solid; border-top:0 solid; border-right:0 solid; }
+.elfinder .elfinder-cwd table thead td { font-size:.9em;}
+.elfinder .elfinder-cwd table td {
+ padding:3px 12px;
+ white-space:nowrap;
+ overflow:hidden;
+ text-align:right;
+ cursor:default;
+ border:0 solid;
+
+}
+
+.elfinder-ltr .elfinder-cwd table td { text-align:right; }
+.elfinder-ltr .elfinder-cwd table td:first-child { text-align:left; }
+.elfinder-rtl .elfinder-cwd table td { text-align:left; }
+.elfinder-rtl .elfinder-cwd table td:first-child { text-align:right; }
+
+.elfinder-odd-row { background:#eee; }
+
+/* filename container */
+.elfinder-cwd-view-list .elfinder-cwd-file-wrapper { width:97%; position:relative; }
+/* filename container in ltr/rtl enviroment */
+.elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-file-wrapper { padding-left:23px; }
+.elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-file-wrapper { padding-right:23px; }
+
+/* premissions/symlink marker */
+.elfinder-cwd-view-list .elfinder-perms,
+.elfinder-cwd-view-list .elfinder-symlink { top:50%; margin-top:-6px; }
+/* markers in ltr/rtl enviroment */
+.elfinder-ltr .elfinder-cwd-view-list .elfinder-perms { left:7px; }
+.elfinder-ltr .elfinder-cwd-view-list .elfinder-symlink { left:-7px; }
+
+/* file icon */
+.elfinder-cwd-view-list td .elfinder-cwd-icon {
+ width:16px;
+ height:16px;
+ position:absolute;
+ top:50%;
+ margin-top:-8px;
+ background-image:url(../img/icons-small.png);
+}
+/* icon in ltr/rtl enviroment */
+.elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-icon { left:0; }
+.elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-icon { right:0; }
+
+
+
+/* File: /root/tmp/elFinder/css/dialog.css */
+/*********************************************/
+/* DIALOGS STYLES */
+/*********************************************/
+
+/* common dialogs class */
+.std42-dialog { padding:0; }
+
+/* titlebar */
+.std42-dialog .ui-dialog-titlebar {
+ border-left:0 solid transparent;
+ border-top:0 solid transparent;
+ border-right:0 solid transparent;
+ -moz-border-radius-bottomleft: 0;
+ -webkit-border-bottom-left-radius: 0;
+ border-bottom-left-radius: 0;
+ -moz-border-radius-bottomright: 0;
+ -webkit-border-bottom-right-radius: 0;
+ border-bottom-right-radius: 0;
+ font-size:.82em;
+ font-weight:normal;
+ padding:.2em 1em;
+}
+
+.std42-dialog .ui-dialog-titlebar-close,
+.std42-dialog .ui-dialog-titlebar-close:hover { padding:1px; }
+
+.elfinder-rtl .elfinder-dialog .ui-dialog-titlebar { text-align:right; }
+.elfinder-rtl .elfinder-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close { right:auto; left:.3em; }
+
+/* content */
+.std42-dialog .ui-dialog-content {
+ padding:.3em .5em;
+ font-size:.72em;
+}
+
+/* buttons */
+.std42-dialog .ui-dialog-buttonpane {
+ border:0 solid;
+ margin:0;
+ padding:.5em .7em;
+ font-size:.76em;
+}
+
+.std42-dialog .ui-dialog-buttonpane button { margin:0 0 0 .4em; padding:0; outline:0 solid; }
+.std42-dialog .ui-dialog-buttonpane button span { padding:2px 9px; }
+
+.elfinder-dialog .ui-resizable-e,
+.elfinder-dialog .ui-resizable-s { width:0; height:0;}
+
+.std42-dialog .ui-button input { cursor: pointer;}
+
+/* error/notify/confirm dialogs icon */
+.elfinder-dialog-icon {
+ position:absolute;
+ width:32px;
+ height:32px;
+ left:12px;
+ top:50%;
+ margin-top:-15px;
+ background:url("../img/dialogs.png") 0 0 no-repeat;
+}
+
+.elfinder-rtl .elfinder-dialog-icon { left:auto; right:12px;}
+
+
+
+/*********************** ERROR DIALOG **************************/
+
+.elfinder-dialog-error .ui-dialog-content,
+.elfinder-dialog-confirm .ui-dialog-content { padding-left: 56px; min-height:35px; }
+
+.elfinder-rtl .elfinder-dialog-error .ui-dialog-content,
+.elfinder-rtl .elfinder-dialog-confirm .ui-dialog-content { padding-left:0; padding-right: 56px; }
+
+/*********************** NOTIFY DIALOG **************************/
+
+.elfinder-dialog-notify .ui-dialog-titlebar-close { display:none; }
+.elfinder-dialog-notify .ui-dialog-content { padding:0; }
+
+/* one notification container */
+.elfinder-notify {
+ border-bottom:1px solid #ccc;
+ position:relative;
+ padding:.5em;
+
+ text-align:center;
+ overflow:hidden;
+}
+
+.elfinder-ltr .elfinder-notify { padding-left:30px; }
+.elfinder-rtl .elfinder-notify { padding-right:30px; }
+
+.elfinder-notify:last-child { border:0 solid; }
+
+/* progressbar */
+.elfinder-notify-progressbar {
+ width:180px;
+ height:8px;
+ border:1px solid #aaa;
+ background:#f5f5f5;
+ margin:5px auto;
+ overflow:hidden;
+}
+
+.elfinder-notify-progress {
+ width:100%;
+ height:8px;
+ background:url(../img/progress.gif) center center repeat-x;
+}
+
+.elfinder-notify-progressbar, .elfinder-notify-progress {
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ border-radius: 2px;
+}
+
+/* icons */
+.elfinder-dialog-icon-open,
+.elfinder-dialog-icon-file { background-position: 0 -225px; }
+.elfinder-dialog-icon-reload { background-position: 0 -225px; }
+.elfinder-dialog-icon-mkdir { background-position: 0 -64px; }
+.elfinder-dialog-icon-mkfile { background-position: 0 -96px; }
+.elfinder-dialog-icon-copy,
+.elfinder-dialog-icon-prepare,
+.elfinder-dialog-icon-move { background-position: 0 -128px;}
+.elfinder-dialog-icon-upload { background-position: 0 -160px; }
+.elfinder-dialog-icon-rm { background-position: 0 -192px; }
+.elfinder-dialog-icon-download { background-position: 0 -260px; }
+.elfinder-dialog-icon-save { background-position: 0 -295px; }
+.elfinder-dialog-icon-rename { background-position: 0 -330px; }
+.elfinder-dialog-icon-archive,
+.elfinder-dialog-icon-extract { background-position: 0 -365px; }
+.elfinder-dialog-icon-search { background-position: 0 -402px; }
+
+/*********************** CONFIRM DIALOG **************************/
+
+.elfinder-dialog-confirm-applyall { padding-top:3px; }
+
+.elfinder-dialog-confirm .elfinder-dialog-icon { background-position:0 -32px; }
+
+
+
+/*********************** FILE INFO DIALOG **************************/
+
+
+.elfinder-info-title .elfinder-cwd-icon {
+ float:left;
+ width:48px;
+ height:48px;
+ margin-right:1em;
+}
+
+.elfinder-info-title strong { display:block; padding:.3em 0 .5em 0; }
+
+.elfinder-info-tb {
+ min-width:200px;
+ border:0 solid;
+ margin:1em .2em 1em .2em;
+ font-size:.9em;
+}
+
+.elfinder-info-tb td { white-space:nowrap; padding:2px; }
+
+.elfinder-info-tb tr td:first-child { text-align:right; }
+
+.elfinder-info-tb span { float:left;}
+.elfinder-info-tb a { outline: none; text-decoration:underline; }
+.elfinder-info-tb a:hover { text-decoration:none; }
+.elfinder-info-spinner {
+ width:14px;
+ height:14px;
+ float:left;
+ background: url("../img/spinner-mini.gif") center center no-repeat;
+ margin:0 5px;
+}
+
+/*********************** UPLOAD DIALOG **************************/
+
+.elfinder-upload-dropbox {
+ font-size:1.2em;
+ text-align:center;
+ padding:2em 0;
+ border:3px dashed #aaa;
+}
+
+.elfinder-upload-dropbox.ui-state-hover {
+ background:#dfdfdf;
+ border:3px dashed #555;
+}
+
+.elfinder-upload-dialog-or {
+ font-size:1.2em;
+ margin:.3em 0;
+ text-align:center;
+}
+
+.elfinder-upload-dialog-wrapper { text-align:center; }
+
+.elfinder-upload-dialog-wrapper .ui-button { position:relative; overflow:hidden; }
+
+.elfinder-upload-dialog-wrapper .ui-button form {
+ position:absolute;
+ right:0;
+ top:0;
+ opacity: 0; filter:Alpha(Opacity=0);
+}
+
+.elfinder-upload-dialog-wrapper .ui-button form input {
+ padding:0 20px;
+ font-size:3em;
+
+}
+
+
+/* dialog for elFinder itself */
+.dialogelfinder .dialogelfinder-drag {
+ border-left:0 solid;
+ border-top:0 solid;
+ border-right:0 solid;
+ font-weight:normal;
+ font-size:.9em;
+ padding:2px 12px;
+ cursor:move;
+ position:relative;
+ text-align:left;
+}
+
+.elfinder-rtl .dialogelfinder-drag { text-align:right;}
+
+.dialogelfinder-drag-close {
+ position: absolute;
+ top:50%;
+ margin-top:-8px;
+}
+
+.elfinder-ltr .dialogelfinder-drag-close { right:12px; }
+.elfinder-rtl .dialogelfinder-drag-close { left:12px; }
+
+
+
+/* File: /root/tmp/elFinder/css/navbar.css */
+/*********************************************/
+/* NAVIGATION PANEL */
+/*********************************************/
+
+/* container */
+.elfinder .elfinder-navbar {
+ width:230px;
+ padding:3px 5px;
+ font-size:.72em;
+ background-image:none;
+ border-top:0 solid;
+ border-bottom:0 solid;
+ overflow:auto;
+ display:none;
+ position:relative;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ user-select: none;
+/* border:1px solid #111;*/
+}
+
+
+/* ltr/rtl enviroment */
+.elfinder-ltr .elfinder-navbar { float:left; border-left:0 solid; padding-right:10px; }
+.elfinder-rtl .elfinder-navbar { float:right; border-right:0 solid; padding-left:10px; }
+
+/* folders tree container */
+.elfinder-tree { display:table; width:100%; margin: 0 0 .5em 0; }
+
+/* one folder wrapper */
+.elfinder-navbar-wrapper, .elfinder-place-wrapper { }
+
+/* folder */
+.elfinder-navbar-dir {
+ position:relative;
+ display:block;
+ white-space:nowrap;
+ padding:3px 12px;
+ margin: 0;
+ outline:0 solid;
+ border:1px solid transparent;
+ cursor:default;
+
+}
+
+/* ltr/rtl enviroment */
+.elfinder-ltr .elfinder-navbar-dir { padding-left:35px; }
+.elfinder-rtl .elfinder-navbar-dir { padding-right:35px; }
+
+/* arrow before icon */
+.elfinder-navbar-arrow {
+ width:12px;
+ height:14px;
+ position:absolute;
+ display:none;
+ top:50%;
+ margin-top:-8px;
+ background-image:url("../img/arrows-normal.png");
+ background-repeat:no-repeat;
+/* border:1px solid #111;*/
+}
+
+.ui-state-active .elfinder-navbar-arrow { background-image:url("../img/arrows-active.png"); }
+
+/* collapsed/expanded arrow view */
+.elfinder-navbar-collapsed .elfinder-navbar-arrow { display:block; }
+
+/* arrow ltr/rtl enviroment */
+.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow { background-position: 0 4px; left:0; }
+.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow { background-position: 0 -10px; right:0; }
+.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow,
+.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow { background-position:0 -21px; }
+
+
+/* folder icon */
+.elfinder-navbar-icon {
+ width:16px;
+ height:16px;
+ position:absolute;
+ top:50%;
+ margin-top:-8px;
+ background-image:url("../img/toolbar.png");
+ background-repeat:no-repeat;
+ background-position:0 -16px;
+}
+
+/* ltr/rtl enviroment */
+.elfinder-ltr .elfinder-navbar-icon { left:14px; }
+.elfinder-rtl .elfinder-navbar-icon { right:14px; }
+
+/* root folder */
+.elfinder-tree .elfinder-navbar-root .elfinder-navbar-icon { background-position:0 0; }
+.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon { background-position:0 -48px; }
+
+/* icon in active/hove/dropactive state */
+.ui-state-active .elfinder-navbar-icon,
+.elfinder-droppable-active .elfinder-navbar-icon,
+.ui-state-hover .elfinder-navbar-icon { background-position:0 -32px; }
+
+/* subdirs tree */
+.elfinder-navbar-subtree { display:none; }
+
+/* ltr/rtl enviroment */
+.elfinder-ltr .elfinder-navbar-subtree { margin-left:12px; }
+.elfinder-rtl .elfinder-navbar-subtree { margin-right:12px; }
+
+
+/* spinner */
+.elfinder-navbar-spinner {
+ width:14px;
+ height:14px;
+ position:absolute;
+ display:block;
+ top:50%;
+ margin-top:-7px;
+ background: url("../img/spinner-mini.gif") center center no-repeat;
+}
+/* spinner ltr/rtl enviroment */
+.elfinder-ltr .elfinder-navbar-spinner { left:0; margin-left:-2px; }
+.elfinder-rtl .elfinder-navbar-spinner { right:0; margin-right:-2px; }
+
+/* permissions marker */
+.elfinder-navbar .elfinder-perms { top:50%; margin-top:-8px; }
+
+/* permissions/symlink markers ltr/rtl enviroment */
+.elfinder-ltr .elfinder-navbar .elfinder-perms { left: 18px; }
+.elfinder-rtl .elfinder-navbar .elfinder-perms { right: 18px; }
+.elfinder-ltr .elfinder-navbar .elfinder-symlink { left: 8px; }
+.elfinder-rtl .elfinder-navbar .elfinder-symlink { right: 8px; }
+
+/* resizable */
+.elfinder-navbar .ui-resizable-handle { width:12px; background:transparent url('../img/resize.png') center center no-repeat; left:0; }
+.elfinder-nav-handle-icon {
+ position:absolute;
+ top:50%;
+ margin:-8px 2px 0 2px;
+ opacity: .5; filter:Alpha(Opacity=50);
+}
+
+.elfinder-places { border:1px solid transparent;}
+.elfinder-places.elfinder-droppable-active {
+ border:1px solid #8cafed;
+}
+
+.elfinder-place-drag .elfinder-navbar-dir { font-size:.9em;}
+
+
+
+
+/* File: /root/tmp/elFinder/css/places.css */
+
+/* File: /root/tmp/elFinder/css/quicklook.css */
+/* quicklook window */
+.elfinder-quicklook {
+ position:absolute;
+ background:url("../img/quicklook-bg.png");
+ display:none;
+ overflow:hidden;
+ border-radius:7px;
+ -moz-border-radius:7px;
+ -webkit-border-radius:7px;
+ padding:20px 0 40px 0;
+}
+
+.elfinder-quicklook .ui-resizable-se {
+ width:14px;
+ height:14px;
+ right:5px;
+ bottom:3px;
+ background:url("../img/toolbar.png") 0 -496px no-repeat;}
+
+/* quicklook fullscreen window */
+.elfinder-quicklook-fullscreen {
+ border-radius:0;
+ -moz-border-radius:0;
+ -webkit-border-radius:0;
+ -webkit-background-clip: padding-box;
+/* background-clip:padding-box;*/
+ padding:0;
+ background:#000;
+ z-index:90000;
+ display:block;
+}
+/* hide titlebar in fullscreen mode */
+.elfinder-quicklook-fullscreen .elfinder-quicklook-titlebar { display:none; }
+
+/* hide preview border in fullscreen mode */
+.elfinder-quicklook-fullscreen .elfinder-quicklook-preview { border:0 solid ;}
+
+/* quicklook titlebar */
+.elfinder-quicklook-titlebar {
+ text-align:center;
+ background:#777;
+ position:absolute;
+ left:0;
+ top:0;
+ width:100%;
+ height:20px;
+ -moz-border-radius-topleft: 7px;
+ -webkit-border-top-left-radius: 7px;
+ border-top-left-radius: 7px;
+ -moz-border-radius-topright: 7px;
+ -webkit-border-top-right-radius: 7px;
+ border-top-right-radius: 7px;
+ cursor:move;
+}
+
+/* window title */
+.elfinder-quicklook-title {
+ font-size:.7em;
+ color:#fff;
+ white-space:nowrap;
+ overflow:hidden;
+ padding:2px 0;
+}
+
+/* icon "close" in titlebar */
+.elfinder-quicklook-titlebar .ui-icon {
+ position:absolute;
+ left : 4px;
+ top:50%;
+ margin-top:-8px;
+ width:16px;
+ height:16px;
+ cursor:default;
+}
+
+/* main part of quicklook window */
+.elfinder-quicklook-preview {
+ overflow:hidden;
+ position:relative;
+ border:0 solid;
+ border-left:1px solid transparent;
+ border-right:1px solid transparent;
+ height:100%;
+}
+
+/* wrapper for file info/icon */
+.elfinder-quicklook-info-wrapper {
+ position:absolute;
+ width:100%;
+ left:0;
+ top:50%;
+ margin-top:-50px;
+}
+
+/* file info */
+.elfinder-quicklook-info {
+ padding: 0 12px 0 112px;
+}
+
+/* file name in info */
+.elfinder-quicklook-info .elfinder-quicklook-info-data:first-child {
+ color:#fff;
+ font-weight:bold;
+ padding-bottom:.5em;
+}
+
+/* other data in info */
+.elfinder-quicklook-info-data {
+ font-size:.72em;
+ padding-bottom:.2em;
+ color:#fff;
+}
+
+
+/* file icon */
+.elfinder-quicklook .elfinder-cwd-icon {
+ position:absolute;
+ left:32px;
+ top:50%;
+ margin-top:-20px;
+}
+
+/* image in preview */
+.elfinder-quicklook-preview img {
+ display:block;
+ margin:0 auto;
+}
+
+/* navigation bar on quicklook window bottom */
+.elfinder-quicklook-navbar {
+ position:absolute;
+ left:50%;
+ bottom:4px;
+ width:140px;
+ height:32px;
+ padding:0px;
+ margin-left:-70px;
+ border:1px solid transparent;
+ border-radius:19px;
+ -moz-border-radius:19px;
+ -webkit-border-radius:19px;
+}
+
+/* navigation bar in fullscreen mode */
+.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar {
+ width:188px;
+ margin-left:-94px;
+ padding:5px;
+ border:1px solid #eee;
+ background:#000;
+}
+
+/* show close icon in fullscreen mode */
+.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-icon-close,
+.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-separator {
+ display:inline;
+}
+
+/* icons in navbar */
+.elfinder-quicklook-navbar-icon {
+ width:32px;
+ height:32px;
+ margin:0 7px;
+ float:left;
+ background:url("../img/quicklook-icons.png") 0 0 no-repeat;
+
+}
+
+/* fullscreen icon */
+.elfinder-quicklook-navbar-icon-fullscreen {
+ background-position:0 -64px;
+}
+
+/* exit fullscreen icon */
+.elfinder-quicklook-navbar-icon-fullscreen-off {
+ background-position:0 -96px;
+}
+
+/* prev file icon */
+.elfinder-quicklook-navbar-icon-prev {
+ background-position:0 0;
+}
+
+/* next file icon */
+.elfinder-quicklook-navbar-icon-next {
+ background-position:0 -32px;
+}
+
+/* close icon */
+.elfinder-quicklook-navbar-icon-close {
+ background-position:0 -128px;
+ display:none;
+}
+
+/* icons separator */
+.elfinder-quicklook-navbar-separator {
+ width:1px;
+ height:32px;
+ float:left;
+ border-left:1px solid #fff;
+ display:none;
+}
+
+/* text files preview wrapper */
+.elfinder-quicklook-preview-text-wrapper {
+ width: 100%;
+ height:100%;
+ background:#fff;
+ color:#222;
+ font-size:.9em;
+ overflow:auto;
+}
+
+/* text preview */
+pre.elfinder-quicklook-preview-text {
+ margin:0;
+ padding:3px 9px;
+}
+
+/* html/pdf preview */
+.elfinder-quicklook-preview-html,
+.elfinder-quicklook-preview-pdf {
+ width:100%;
+ height:100%;
+ background:#fff;
+ border:0 solid;
+ margin:0;
+}
+
+/* swf preview container */
+.elfinder-quicklook-preview-flash {
+ width:100%;
+ height:100%;
+}
+
+/* audio preview container */
+.elfinder-quicklook-preview-audio {
+ width:100%;
+ position:absolute;
+ bottom:0;
+ left:0;
+}
+
+/* audio preview using embed */
+embed.elfinder-quicklook-preview-audio {
+ height:30px;
+ background:transparent;
+}
+
+/* video preview container */
+.elfinder-quicklook-preview-video {
+ width:100%;
+ height:100%;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/* File: /root/tmp/elFinder/css/statusbar.css */
+/******************************************************************/
+/* STATUSBAR STYLES */
+/******************************************************************/
+
+
+/* statusbar container */
+.elfinder-statusbar {
+ text-align:center;
+ font-weight:normal;
+ padding:.2em .5em;
+
+ border-right:0 solid transparent;
+ border-bottom:0 solid transparent;
+ border-left:0 solid transparent;
+}
+
+.elfinder-statusbar a { text-decoration:none; }
+
+.elfinder-statusbar div { font-size:.7em; }
+
+/* path in statusbar */
+.elfinder-ltr .elfinder-path { float:left; }
+.elfinder-rtl .elfinder-path { float:right; }
+
+/* total/selected size in statusbar */
+.elfinder-ltr .elfinder-stat-size { float:right; }
+.elfinder-rtl .elfinder-stat-size { float:left; }
+
+/* File: /root/tmp/elFinder/css/toolbar.css */
+/*********************************************/
+/* TOOLBAR STYLES */
+/*********************************************/
+/* toolbar container */
+.elfinder-toolbar {
+ padding:4px 0 3px 0;
+ border-left:0 solid transparent;
+ border-top:0 solid transparent;
+ border-right:0 solid transparent;
+}
+
+/* container for button's group */
+.elfinder-buttonset {
+ margin: 1px 4px;
+ float:left;
+ background:transparent;
+ padding:0;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+}
+
+/*.elfinder-buttonset:first-child { margin:0; }*/
+
+/* button */
+.elfinder .elfinder-button {
+ width:16px;
+ height:16px;
+ margin:0;
+ padding:4px;
+ float:left;
+ overflow:hidden;
+ position:relative;
+ border:0 solid;
+}
+
+.elfinder .ui-icon-search { cursor:pointer;}
+
+.elfinder-button:first-child {
+ -moz-border-radius-topleft: 4px;
+ -webkit-border-top-left-radius: 4px;
+ border-top-left-radius: 4px;
+ -moz-border-radius-bottomleft: 4px;
+ -webkit-border-bottom-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+}
+
+.elfinder-button:last-child {
+ -moz-border-radius-topright: 4px;
+ -webkit-border-top-right-radius: 4px;
+ border-top-right-radius: 4px;
+ -moz-border-radius-bottomright: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+}
+
+/* separator between buttons, required for berder between button with ui color */
+.elfinder-toolbar-button-separator {
+ float:left;
+ padding:0;
+ height:24px;
+ border-top:0 solid;
+ border-right:0 solid;
+ border-bottom:0 solid;
+ width:0;
+}
+
+/* change icon opacity^ not button */
+.elfinder .elfinder-button.ui-state-disabled { opacity:1; filter:Alpha(Opacity=100);}
+.elfinder .elfinder-button.ui-state-disabled .elfinder-button-icon { opacity:.4; filter:Alpha(Opacity=40);}
+
+/* rtl enviroment */
+.elfinder-rtl .elfinder-buttonset { float:right; }
+
+/* icon inside button */
+.elfinder-button-icon {
+ width:16px;
+ height:16px;
+ display:block;
+ background:url('../img/toolbar.png') no-repeat;
+}
+
+/* buttons icons */
+.elfinder-button-icon-home { background-position: 0 0; }
+.elfinder-button-icon-back { background-position: 0 -112px; }
+.elfinder-button-icon-forward { background-position: 0 -128px; }
+.elfinder-button-icon-up { background-position: 0 -144px; }
+.elfinder-button-icon-reload { background-position: 0 -160px; }
+.elfinder-button-icon-open { background-position: 0 -176px; }
+.elfinder-button-icon-mkdir { background-position: 0 -192px; }
+.elfinder-button-icon-mkfile { background-position: 0 -208px; }
+.elfinder-button-icon-rm { background-position: 0 -224px; }
+.elfinder-button-icon-copy { background-position: 0 -240px; }
+.elfinder-button-icon-cut { background-position: 0 -256px; }
+.elfinder-button-icon-paste { background-position: 0 -272px; }
+.elfinder-button-icon-getfile { background-position: 0 -288px; }
+.elfinder-button-icon-duplicate { background-position: 0 -304px; }
+.elfinder-button-icon-rename { background-position: 0 -320px; }
+.elfinder-button-icon-edit { background-position: 0 -336px; }
+.elfinder-button-icon-quicklook { background-position: 0 -352px; }
+.elfinder-button-icon-upload { background-position: 0 -368px; }
+.elfinder-button-icon-download { background-position: 0 -384px; }
+.elfinder-button-icon-info { background-position: 0 -400px; }
+.elfinder-button-icon-extract { background-position: 0 -416px; }
+.elfinder-button-icon-archive { background-position: 0 -432px; }
+.elfinder-button-icon-view { background-position: 0 -448px; }
+.elfinder-button-icon-view-list { background-position: 0 -464px; }
+.elfinder-button-icon-help { background-position: 0 -480px; }
+.elfinder-button-icon-resize { background-position: 0 -512px; }
+.elfinder-button-icon-search { background-position: 0 -561px; }
+.elfinder-button-icon-sort { background-position: 0 -577px; }
+
+
+/* button with dropdown menu*/
+.elfinder .elfinder-menubutton { overflow:visible; }
+
+
+
+/* menu */
+.elfinder-button-menu {
+ position:absolute;
+ left:0;
+ top:26px;
+ padding:3px 0;
+}
+
+/* menu item */
+.elfinder-button-menu-item {
+ white-space:nowrap;
+ font-size:.72em;
+ cursor:default;
+ padding:5px 19px;
+ position:relative;
+}
+
+/* fix hover ui class */
+.elfinder-button-menu .ui-state-hover { border:0 solid; }
+
+.elfinder-menu-item-sort-dir {
+ width:16px;
+ height:16px;
+ position:absolute;
+ left:2px;
+ top:50%;
+ margin-top:-8px;
+ background:url("../img/toolbar.png") 0 -594px no-repeat;
+ display:none;
+}
+
+.elfinder-button-menu-item-selected .elfinder-menu-item-sort-dir { display:block;}
+.elfinder-menu-item-sort-desc .elfinder-menu-item-sort-dir { background-position:0 -610px;}
+/* hack for upload button */
+.elfinder-button form {
+ position:absolute;
+ top:0;
+ right:0;
+ opacity: 0; filter:Alpha(Opacity=0);
+ cursor: pointer;
+}
+
+.elfinder .elfinder-button form input { background:transparent; cursor: default;}
+
+/* search "button" */
+.elfinder .elfinder-button-search {
+ border:0 solid;
+ background:transparent;
+ padding:0;
+ margin: 1px 4px;
+ height:auto;
+ float:right;
+ width:202px;
+}
+
+/* ltr/rte enviroment */
+.elfinder-ltr .elfinder-button-search { float:right; margin-right:10px; }
+.elfinder-rtl .elfinder-button-search { float:left; margin-left:10px; }
+
+/* search text field */
+.elfinder-button-search input {
+ width:160px;
+ height:22px;
+ padding:0 20px;
+ font-size:.8em;
+ line-height: 22px;
+ border:0 solid;
+ border:1px solid #aaa;
+ -moz-border-radius: 12px;
+ -webkit-border-radius: 12px;
+ border-radius: 12px;
+ outline:0 solid;
+}
+
+.elfinder-rtl .elfinder-button-search input { direction:rtl; }
+
+/* icons */
+.elfinder-button-search .ui-icon {
+ position:absolute;
+ height:18px;
+ top: 50%;
+ margin:-7px 4px 0 4px;
+ opacity: .6;
+ filter:Alpha(Opacity=60);
+}
+
+/* search/close icons */
+.elfinder-ltr .elfinder-button-search .ui-icon-search { left:0;}
+.elfinder-rtl .elfinder-button-search .ui-icon-search { right:0;}
+.elfinder-ltr .elfinder-button-search .ui-icon-close { right:0;}
+.elfinder-rtl .elfinder-button-search .ui-icon-close { left:0;}
+
+
+
+
+
+
9 elfinder/static/css/elfinder.min.css
@@ -0,0 +1,9 @@
+/*!
+ * elFinder - file manager for web
+ * Version 2.0 beta (2011-11-01)
+ * http://elfinder.org
+ *
+ * Copyright 2009-2011, Studio 42
+ * Licensed under a 3 clauses BSD license
+ */
+.elfinder-resize-control{padding-top:1em}.elfinder-resize-control input[type=text]{border:1px solid #aaa}.elfinder-resize-preview{width:400px;height:400px;padding:10px;background:#fff;border:1px solid #aaa;float:right;position:relative;overflow:auto}.elfinder-resize-handle{position:relative}.elfinder-resize-handle-hline,.elfinder-resize-handle-vline{position:absolute;background-image:url("../img/crop.gif")}.elfinder-resize-handle-hline{width:100%;height:1px!important;background-repeat:repeat-x}.elfinder-resize-handle-vline{width:1px!important;height:100%;background-repeat:repeat-y}.elfinder-resize-handle-hline-top{top:0;left:0}.elfinder-resize-handle-hline-bottom{bottom:0;left:0}.elfinder-resize-handle-vline-left{top:0;left:0}.elfinder-resize-handle-vline-right{top:0;right:0}.elfinder-resize-handle-point{position:absolute;width:8px;height:8px;border:1px solid #777;background:0 0}.elfinder-resize-handle-point-e{top:50%;right:0;margin-top:-5px;margin-right:-5px}.elfinder-resize-handle-point-se{bottom:0;right:0;margin-bottom:-5px;margin-right:-5px}.elfinder-resize-handle-point-s{bottom:0;left:50%;margin-bottom:-5px;margin-left:-5px}.elfinder-resize-spinner{position:absolute;width:200px;height:30px;top:50%;margin-top:-25px;left:50%;margin-left:-100px;text-align:center;background:url(../img/progress.gif) center bottom repeat-x}.elfinder-resize-row{margin-bottom:7px;position:relative}.elfinder-resize-label{float:left;width:80px}.elfinder-resize-reset{width:16px;height:16px;position:absolute;margin-top:-8px}.elfinder-dialog-resize .ui-resizable-e{height:100%;width:10px}.elfinder-dialog-resize .ui-resizable-s{width:100%;height:10px}.elfinder-dialog-resize .ui-resizable-se{background:0 0;bottom:0;right:0;margin-right:-7px;margin-bottom:-7px}.elfinder-dialog-resize .ui-icon-grip-solid-vertical{position:absolute;top:50%;right:0;margin-top:-8px;margin-right:-11px}.elfinder-dialog-resize .ui-icon-grip-solid-horizontal{position:absolute;left:50%;bottom:0;margin-left:-8px;margin-bottom:-11px}.elfinder-file-edit{width:99%;height:99%;margin:0;padding:2px;border:1px solid #ccc}.elfinder-help{margin-bottom:.5em}.elfinder-help .ui-tabs-panel{padding:.5em}.elfinder-dialog .ui-tabs .ui-tabs-nav li a{padding:.2em 1em}.elfinder-help-shortcuts{height:300px;padding:1em;margin:.5em 0;overflow:auto}.elfinder-help-shortcut{white-space:nowrap;clear:both}.elfinder-help-shortcut-pattern{float:left;width:160px}.elfinder-help-logo{width:100px;height:96px;float:left;margin-right:1em;background:url('../img/logo.png') center center no-repeat}.elfinder-help h3{font-size:1.5em;margin:.2em 0 .3em}.elfinder-help-separator{clear:both;padding:.5em}.elfinder-help-link{padding:2px}.elfinder-help .ui-priority-secondary{font-size:.9em}.elfinder-help .ui-priority-primary{margin-bottom:7px}.elfinder-help-team{clear:both;text-align:right;border-bottom:1px solid #ccc;margin:.5em 0;font-size:.9em}.elfinder-help-team div{float:left}.elfinder-help-license{font-size:.9em}.elfinder-help-disabled{font-weight:700;text-align:center;margin:90px 0}.elfinder-help .elfinder-dont-panic{display:block;border:1px solid transparent;width:200px;height:200px;margin:30px auto;text-decoration:none;text-align:center;position:relative;background:#d90004;-moz-box-shadow:5px 5px 9px #111;-webkit-box-shadow:5px 5px 9px #111;box-shadow:5px 5px 9px #111;background:-moz-radial-gradient(80px 80px,circle farthest-corner,#d90004 35%,#960004 100%);background:-webkit-gradient(radial,80 80,60,80 80,120,from(#d90004),to(#960004));-moz-border-radius:100px;-webkit-border-radius:100px;border-radius:100px;outline:none}.elfinder-help .elfinder-dont-panic span{font-size:3em;font-weight:700;text-align:center;color:#fff;position:absolute;left:0;top:45px}.elfinder{padding:0;position:relative;display:block}.elfinder-rtl{text-align:right;direction:rtl}.elfinder-workzone{padding:0;position:relative;overflow:hidden}.elfinder-perms,.elfinder-symlink{position:absolute;width:16px;height:16px;background-image:url(../img/toolbar.png);background-repeat:no-repeat;background-position:0 -528px}.elfinder-na .elfinder-perms{background-position:0 -96px}.elfinder-ro .elfinder-perms{background-position:0 -64px}.elfinder-wo .elfinder-perms{background-position:0 -80px}.elfinder-drag-helper{width:60px;height:50px;padding:0 0 0 25px;z-index:100000}.elfinder-drag-helper-icon-plus{position:absolute;width:16px;height:16px;left:43px;top:55px;background:url('../img/toolbar.png') 0 -544px no-repeat;display:none}.elfinder-drag-helper-plus .elfinder-drag-helper-icon-plus{display:block}.elfinder-drag-num{position:absolute;top:0;left:0;width:16px;height:14px;text-align:center;padding-top:2px;font-size:12px;font-weight:700;color:#fff;background-color:red;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}.elfinder-drag-helper .elfinder-cwd-icon{margin:0 0 0 -24px;float:left}.elfinder-overlay{opacity:0;filter:Alpha(Opacity=0)}.elfinder .elfinder-panel{position:relative;background-image:none;padding:7px 12px}.elfinder-contextmenu,.elfinder-contextmenu-sub{display:none;position:absolute;border:1px solid #aaa;background:#fff;color:#555;padding:4px 0}.elfinder-contextmenu-sub{top:5px}.elfinder-contextmenu-ltr .elfinder-contextmenu-sub{margin-left:-5px}.elfinder-contextmenu-rtl .elfinder-contextmenu-sub{margin-right:-5px}.elfinder-contextmenu-item{position:relative;display:block;padding:4px 30px;text-decoration:none;white-space:nowrap;cursor:default}.elfinder-contextmenu .elfinder-contextmenu-item span{font-size:.76em;display:block}.elfinder-contextmenu-ltr .elfinder-contextmenu-item{text-align:left}.elfinder-contextmenu-rtl .elfinder-contextmenu-item{text-align:right}.elfinder-contextmenu-ltr .elfinder-contextmenu-sub .elfinder-contextmenu-item{padding-left:12px}.elfinder-contextmenu-rtl .elfinder-contextmenu-sub .elfinder-contextmenu-item{padding-right:12px}.elfinder-contextmenu-arrow,.elfinder-contextmenu-icon{position:absolute;top:50%;margin-top:-8px}.elfinder-contextmenu-ltr .elfinder-contextmenu-icon{left:8px}.elfinder-contextmenu-rtl .elfinder-contextmenu-icon{right:8px}.elfinder-contextmenu-arrow{width:16px;height:16px;background:url('../img/arrows-normal.png') 5px 4px no-repeat}.elfinder-contextmenu-ltr .elfinder-contextmenu-arrow{right:5px}.elfinder-contextmenu-rtl .elfinder-contextmenu-arrow{left:5px;background-position:0 -10px}.elfinder-contextmenu .ui-state-hover{border:0 solid;background-image:none}.elfinder-contextmenu-separator{height:0;border-top:1px solid #ccc;margin:0 1px}.elfinder-cwd-wrapper{overflow:auto;position:relative;padding:2px;margin:0}.elfinder-cwd-wrapper-list{padding:0}.elfinder-cwd{position:relative;font-size:.7em;cursor:default;padding:0;margin:0;-moz-user-select:-moz-none;-khtml-user-select:none;-webkit-user-select:none;user-select:none}.elfinder .elfinder-cwd-wrapper.elfinder-droppable-active{padding:0;border:2px solid #8cafed}.elfinder-cwd-view-icons .elfinder-cwd-file{width:120px;height:80px;padding-bottom:2px;cursor:default;overflow:hidden}.elfinder-ltr .elfinder-cwd-view-icons .elfinder-cwd-file{float:left;margin:0 3px 12px 0}.elfinder-rtl .elfinder-cwd-view-icons .elfinder-cwd-file{float:right;margin:0 0 5px 3px}.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover{border:0 solid}.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper{width:52px;height:52px;margin:1px auto;padding:2px;position:relative}.elfinder-cwd-view-icons .elfinder-cwd-filename{text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;margin:3px 1px 0;padding:1px;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}.elfinder-cwd-view-icons .elfinder-perms{bottom:4px;right:2px}.elfinder-cwd-view-icons .elfinder-symlink{bottom:6px;left:0}.elfinder-cwd-icon{display:block;width:48px;height:48px;margin:0 auto;background:url('../img/icons-big.png') 0 0 no-repeat;-moz-background-clip:padding;-webkit-background-clip:padding-box;background-clip:padding-box}.elfinder-cwd .elfinder-droppable-active .elfinder-cwd-icon{background-position:0 -100px}.elfinder-cwd-icon-directory{background-position:0 -50px}.elfinder-cwd-icon-application{background-position:0 -150px}.elfinder-cwd-icon-x-empty,.elfinder-cwd-icon-text{background-position:0 -200px}.elfinder-cwd-icon-image,.elfinder-cwd-icon-vnd-adobe-photoshop,.elfinder-cwd-icon-postscript{background-position:0 -250px}.elfinder-cwd-icon-audio{background-position:0 -300px}.elfinder-cwd-icon-video,.elfinder-cwd-icon-flash-video{background-position:0 -350px}.elfinder-cwd-icon-rtf,.elfinder-cwd-icon-rtfd{background-position:0 -401px}.elfinder-cwd-icon-pdf{background-position:0 -450px}.elfinder-cwd-icon-vnd-ms-office,.elfinder-cwd-icon-msword,.elfinder-cwd-icon-vnd-ms-word,.elfinder-cwd-icon-vnd-oasis-opendocument-text,.elfinder-cwd-icon-ms-excel,.elfinder-cwd-icon-vnd-ms-excel,.elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet,.elfinder-cwd-icon-vnd-ms-powerpoint,.elfinder-cwd-icon-vnd-oasis-opendocument-presentation{background-position:0 -500px}.elfinder-cwd-icon-html{background-position:0 -550px}.elfinder-cwd-icon-css{background-position:0 -600px}.elfinder-cwd-icon-javascript,.elfinder-cwd-icon-x-javascript{background-position:0 -650px}.elfinder-cwd-icon-x-perl{background-position:0 -700px}.elfinder-cwd-icon-x-python{background-position:0 -750px}.elfinder-cwd-icon-x-ruby{background-position:0 -800px}.elfinder-cwd-icon-x-sh,.elfinder-cwd-icon-x-shellscript{background-position:0 -850px}.elfinder-cwd-icon-x-c,.elfinder-cwd-icon-x-csrc,.elfinder-cwd-icon-x-chdr,.elfinder-cwd-icon-x-c--,.elfinder-cwd-icon-x-c--src,.elfinder-cwd-icon-x-c--hdr,.elfinder-cwd-icon-x-java,.elfinder-cwd-icon-x-java-source{background-position:0 -900px}.elfinder-cwd-icon-x-php{background-position:0 -950px}.elfinder-cwd-icon-xml{background-position:0 -1000px}.elfinder-cwd-icon-zip,.elfinder-cwd-icon-x-7z-compressed{background-position:0 -1050px}.elfinder-cwd-icon-x-gzip,.elfinder-cwd-icon-x-tar{background-position:0 -1100px}.elfinder-cwd-icon-x-bzip,.elfinder-cwd-icon-x-bzip2{background-position:0 -1150px}.elfinder-cwd-icon-x-rar,.elfinder-cwd-icon-x-rar-compressed{background-position:0 -1200px}.elfinder-cwd-icon-x-shockwave-flash{background-position:0 -1250px}.elfinder-cwd-icon-group{background-position:0 -1300px}.elfinder-cwd input{width:100%;border:0 solid;margin:0;padding:0}.elfinder-cwd-view-icons input,.elfinder-cwd-view-icons{text-align:center}.elfinder-cwd table{width:100%;border-collapse:collapse;border:0 solid;margin:0 0 10px}.elfinder .elfinder-cwd table thead tr{border-left:0 solid;border-top:0 solid;border-right:0 solid}.elfinder .elfinder-cwd table thead td{font-size:.9em}.elfinder .elfinder-cwd table td{padding:3px 12px;white-space:nowrap;overflow:hidden;text-align:right;cursor:default;border:0 solid}.elfinder-ltr .elfinder-cwd table td{text-align:right}.elfinder-ltr .elfinder-cwd table td:first-child,.elfinder-rtl .elfinder-cwd table td{text-align:left}.elfinder-rtl .elfinder-cwd table td:first-child{text-align:right}.elfinder-odd-row{background:#eee}.elfinder-cwd-view-list .elfinder-cwd-file-wrapper{width:97%;position:relative}.elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-file-wrapper{padding-left:23px}.elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-file-wrapper{padding-right:23px}.elfinder-cwd-view-list .elfinder-perms,.elfinder-cwd-view-list .elfinder-symlink{top:50%;margin-top:-6px}.elfinder-ltr .elfinder-cwd-view-list .elfinder-perms{left:7px}.elfinder-ltr .elfinder-cwd-view-list .elfinder-symlink{left:-7px}.elfinder-cwd-view-list td .elfinder-cwd-icon{width:16px;height:16px;position:absolute;top:50%;margin-top:-8px;background-image:url(../img/icons-small.png)}.elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-icon{left:0}.elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-icon{right:0}.std42-dialog{padding:0}.std42-dialog .ui-dialog-titlebar{border-left:0 solid transparent;border-top:0 solid transparent;border-right:0 solid transparent;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;font-size:.82em;font-weight:400;padding:.2em 1em}.std42-dialog .ui-dialog-titlebar-close,.std42-dialog .ui-dialog-titlebar-close:hover{padding:1px}.elfinder-rtl .elfinder-dialog .ui-dialog-titlebar{text-align:right}.elfinder-rtl .elfinder-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close{right:auto;left:.3em}.std42-dialog .ui-dialog-content{padding:.3em .5em;font-size:.72em}.std42-dialog .ui-dialog-buttonpane{border:0 solid;margin:0;padding:.5em .7em;font-size:.76em}.std42-dialog .ui-dialog-buttonpane button{margin:0 0 0 .4em;padding:0;outline:0 solid}.std42-dialog .ui-dialog-buttonpane button span{padding:2px 9px}.elfinder-dialog .ui-resizable-e,.elfinder-dialog .ui-resizable-s{width:0;height:0}.std42-dialog .ui-button input{cursor:pointer}.elfinder-dialog-icon{position:absolute;width:32px;height:32px;left:12px;top:50%;margin-top:-15px;background:url("../img/dialogs.png") 0 0 no-repeat}.elfinder-rtl .elfinder-dialog-icon{left:auto;right:12px}.elfinder-dialog-error .ui-dialog-content,.elfinder-dialog-confirm .ui-dialog-content{padding-left:56px;min-height:35px}.elfinder-rtl .elfinder-dialog-error .ui-dialog-content,.elfinder-rtl .elfinder-dialog-confirm .ui-dialog-content{padding-left:0;padding-right:56px}.elfinder-dialog-notify .ui-dialog-titlebar-close{display:none}.elfinder-dialog-notify .ui-dialog-content{padding:0}.elfinder-notify{border-bottom:1px solid #ccc;position:relative;padding:.5em;text-align:center;overflow:hidden}.elfinder-ltr .elfinder-notify{padding-left:30px}.elfinder-rtl .elfinder-notify{padding-right:30px}.elfinder-notify:last-child{border:0 solid}.elfinder-notify-progressbar{width:180px;height:8px;border:1px solid #aaa;background:#f5f5f5;margin:5px auto;overflow:hidden}.elfinder-notify-progress{width:100%;height:8px;background:url(../img/progress.gif) center center repeat-x}.elfinder-notify-progressbar,.elfinder-notify-progress{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.elfinder-dialog-icon-open,.elfinder-dialog-icon-file,.elfinder-dialog-icon-reload{background-position:0 -225px}.elfinder-dialog-icon-mkdir{background-position:0 -64px}.elfinder-dialog-icon-mkfile{background-position:0 -96px}.elfinder-dialog-icon-copy,.elfinder-dialog-icon-prepare,.elfinder-dialog-icon-move{background-position:0 -128px}.elfinder-dialog-icon-upload{background-position:0 -160px}.elfinder-dialog-icon-rm{background-position:0 -192px}.elfinder-dialog-icon-download{background-position:0 -260px}.elfinder-dialog-icon-save{background-position:0 -295px}.elfinder-dialog-icon-rename{background-position:0 -330px}.elfinder-dialog-icon-archive,.elfinder-dialog-icon-extract{background-position:0 -365px}.elfinder-dialog-icon-search{background-position:0 -402px}.elfinder-dialog-confirm-applyall{padding-top:3px}.elfinder-dialog-confirm .elfinder-dialog-icon{background-position:0 -32px}.elfinder-info-title .elfinder-cwd-icon{float:left;width:48px;height:48px;margin-right:1em}.elfinder-info-title strong{display:block;padding:.3em 0 .5em}.elfinder-info-tb{min-width:200px;border:0 solid;margin:1em .2em;font-size:.9em}.elfinder-info-tb td{white-space:nowrap;padding:2px}.elfinder-info-tb tr td:first-child{text-align:right}.elfinder-info-tb span{float:left}.elfinder-info-tb a{outline:none;text-decoration:underline}.elfinder-info-tb a:hover{text-decoration:none}.elfinder-info-spinner{width:14px;height:14px;float:left;background:url("../img/spinner-mini.gif") center center no-repeat;margin:0 5px}.elfinder-upload-dropbox{font-size:1.2em;text-align:center;padding:2em 0;border:3px dashed #aaa}.elfinder-upload-dropbox.ui-state-hover{background:#dfdfdf;border:3px dashed #555}.elfinder-upload-dialog-or{font-size:1.2em;margin:.3em 0;text-align:center}.elfinder-upload-dialog-wrapper{text-align:center}.elfinder-upload-dialog-wrapper .ui-button{position:relative;overflow:hidden}.elfinder-upload-dialog-wrapper .ui-button form{position:absolute;right:0;top:0;opacity:0;filter:Alpha(Opacity=0)}.elfinder-upload-dialog-wrapper .ui-button form input{padding:0 20px;font-size:3em}.dialogelfinder .dialogelfinder-drag{border-left:0 solid;border-top:0 solid;border-right:0 solid;font-weight:400;font-size:.9em;padding:2px 12px;cursor:move;position:relative;text-align:left}.elfinder-rtl .dialogelfinder-drag{text-align:right}.dialogelfinder-drag-close{position:absolute;top:50%;margin-top:-8px}.elfinder-ltr .dialogelfinder-drag-close{right:12px}.elfinder-rtl .dialogelfinder-drag-close{left:12px}.elfinder .elfinder-navbar{width:230px;padding:3px 5px;font-size:.72em;background-image:none;border-top:0 solid;border-bottom:0 solid;overflow:auto;display:none;position:relative;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;user-select:none}.elfinder-ltr .elfinder-navbar{float:left;border-left:0 solid;padding-right:10px}.elfinder-rtl .elfinder-navbar{float:right;border-right:0 solid;padding-left:10px}.elfinder-tree{display:table;width:100%;margin:0 0 .5em}.elfinder-navbar-dir{position:relative;display:block;white-space:nowrap;padding:3px 12px;margin:0;outline:0 solid;border:1px solid transparent;cursor:default}.elfinder-ltr .elfinder-navbar-dir{padding-left:35px}.elfinder-rtl .elfinder-navbar-dir{padding-right:35px}.elfinder-navbar-arrow{width:12px;height:14px;position:absolute;display:none;top:50%;margin-top:-8px;background-image:url("../img/arrows-normal.png");background-repeat:no-repeat}.ui-state-active .elfinder-navbar-arrow{background-image:url("../img/arrows-active.png")}.elfinder-navbar-collapsed .elfinder-navbar-arrow{display:block}.elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow{background-position:0 4px;left:0}.elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow{background-position:0 -10px;right:0}.elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow,.elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow{background-position:0 -21px}.elfinder-navbar-icon{width:16px;height:16px;position:absolute;top:50%;margin-top:-8px;background-image:url("../img/toolbar.png");background-repeat:no-repeat;background-position:0 -16px}.elfinder-ltr .elfinder-navbar-icon{left:14px}.elfinder-rtl .elfinder-navbar-icon{right:14px}.elfinder-tree .elfinder-navbar-root .elfinder-navbar-icon{background-position:0 0}.elfinder-places .elfinder-navbar-root .elfinder-navbar-icon{background-position:0 -48px}.ui-state-active .elfinder-navbar-icon,.elfinder-droppable-active .elfinder-navbar-icon,.ui-state-hover .elfinder-navbar-icon{background-position:0 -32px}.elfinder-navbar-subtree{display:none}.elfinder-ltr .elfinder-navbar-subtree{margin-left:12px}.elfinder-rtl .elfinder-navbar-subtree{margin-right:12px}.elfinder-navbar-spinner{width:14px;height:14px;position:absolute;display:block;top:50%;margin-top:-7px;background:url("../img/spinner-mini.gif") center center no-repeat}.elfinder-ltr .elfinder-navbar-spinner{left:0;margin-left:-2px}.elfinder-rtl .elfinder-navbar-spinner{right:0;margin-right:-2px}.elfinder-navbar .elfinder-perms{top:50%;margin-top:-8px}.elfinder-ltr .elfinder-navbar .elfinder-perms{left:18px}.elfinder-rtl .elfinder-navbar .elfinder-perms{right:18px}.elfinder-ltr .elfinder-navbar .elfinder-symlink{left:8px}.elfinder-rtl .elfinder-navbar .elfinder-symlink{right:8px}.elfinder-navbar .ui-resizable-handle{width:12px;background:url('../img/resize.png') center center no-repeat;left:0}.elfinder-nav-handle-icon{position:absolute;top:50%;margin:-8px 2px 0 2px;opacity:.5;filter:Alpha(Opacity=50)}.elfinder-places{border:1px solid transparent}.elfinder-places.elfinder-droppable-active{border:1px solid #8cafed}.elfinder-place-drag .elfinder-navbar-dir{font-size:.9em}.elfinder-quicklook{position:absolute;background:url("../img/quicklook-bg.png");display:none;overflow:hidden;border-radius:7px;-moz-border-radius:7px;-webkit-border-radius:7px;padding:20px 0 40px}.elfinder-quicklook .ui-resizable-se{width:14px;height:14px;right:5px;bottom:3px;background:url("../img/toolbar.png") 0 -496px no-repeat}.elfinder-quicklook-fullscreen{border-radius:0;-moz-border-radius:0;-webkit-border-radius:0;-webkit-background-clip:padding-box;padding:0;background:#000;z-index:90000;display:block}.elfinder-quicklook-fullscreen .elfinder-quicklook-titlebar{display:none}.elfinder-quicklook-fullscreen .elfinder-quicklook-preview{border:0 solid}.elfinder-quicklook-titlebar{text-align:center;background:#777;position:absolute;left:0;top:0;width:100%;height:20px;-moz-border-radius-topleft:7px;-webkit-border-top-left-radius:7px;border-top-left-radius:7px;-moz-border-radius-topright:7px;-webkit-border-top-right-radius:7px;border-top-right-radius:7px;cursor:move}.elfinder-quicklook-title{font-size:.7em;color:#fff;white-space:nowrap;overflow:hidden;padding:2px 0}.elfinder-quicklook-titlebar .ui-icon{position:absolute;left:4px;top:50%;margin-top:-8px;width:16px;height:16px;cursor:default}.elfinder-quicklook-preview{overflow:hidden;position:relative;border:0 solid;border-left:1px solid transparent;border-right:1px solid transparent;height:100%}.elfinder-quicklook-info-wrapper{position:absolute;width:100%;left:0;top:50%;margin-top:-50px}.elfinder-quicklook-info{padding:0 12px 0 112px}.elfinder-quicklook-info .elfinder-quicklook-info-data:first-child{color:#fff;font-weight:700;padding-bottom:.5em}.elfinder-quicklook-info-data{font-size:.72em;padding-bottom:.2em;color:#fff}.elfinder-quicklook .elfinder-cwd-icon{position:absolute;left:32px;top:50%;margin-top:-20px}.elfinder-quicklook-preview img{display:block;margin:0 auto}.elfinder-quicklook-navbar{position:absolute;left:50%;bottom:4px;width:140px;height:32px;padding:0;margin-left:-70px;border:1px solid transparent;border-radius:19px;-moz-border-radius:19px;-webkit-border-radius:19px}.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar{width:188px;margin-left:-94px;padding:5px;border:1px solid #eee;background:#000}.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-icon-close,.elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-separator{display:inline}.elfinder-quicklook-navbar-icon{width:32px;height:32px;margin:0 7px;float:left;background:url("../img/quicklook-icons.png") 0 0 no-repeat}.elfinder-quicklook-navbar-icon-fullscreen{background-position:0 -64px}.elfinder-quicklook-navbar-icon-fullscreen-off{background-position:0 -96px}.elfinder-quicklook-navbar-icon-prev{background-position:0 0}.elfinder-quicklook-navbar-icon-next{background-position:0 -32px}.elfinder-quicklook-navbar-icon-close{background-position:0 -128px;display:none}.elfinder-quicklook-navbar-separator{width:1px;height:32px;float:left;border-left:1px solid #fff;display:none}.elfinder-quicklook-preview-text-wrapper{width:100%;height:100%;background:#fff;color:#222;font-size:.9em;overflow:auto}pre.elfinder-quicklook-preview-text{margin:0;padding:3px 9px}.elfinder-quicklook-preview-html,.elfinder-quicklook-preview-pdf{width:100%;height:100%;background:#fff;border:0 solid;margin:0}.elfinder-quicklook-preview-flash{width:100%;height:100%}.elfinder-quicklook-preview-audio{width:100%;position:absolute;bottom:0;left:0}embed.elfinder-quicklook-preview-audio{height:30px;background:0 0}.elfinder-quicklook-preview-video{width:100%;height:100%}.elfinder-statusbar{text-align:center;font-weight:400;padding:.2em .5em;border-right:0 solid transparent;border-bottom:0 solid transparent;border-left:0 solid transparent}.elfinder-statusbar a{text-decoration:none}.elfinder-statusbar div{font-size:.7em}.elfinder-ltr .elfinder-path{float:left}.elfinder-rtl .elfinder-path,.elfinder-ltr .elfinder-stat-size{float:right}.elfinder-rtl .elfinder-stat-size{float:left}.elfinder-toolbar{padding:4px 0 3px;border-left:0 solid transparent;border-top:0 solid transparent;border-right:0 solid transparent}.elfinder-buttonset{margin:1px 4px;float:left;background:0 0;padding:0;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}.elfinder .elfinder-button{width:16px;height:16px;margin:0;padding:4px;float:left;overflow:hidden;position:relative;border:0 solid}.elfinder .ui-icon-search{cursor:pointer}.elfinder-button:first-child{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.elfinder-button:last-child{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.elfinder-toolbar-button-separator{float:left;padding:0;height:24px;border-top:0 solid;border-right:0 solid;border-bottom:0 solid;width:0}.elfinder .elfinder-button.ui-state-disabled{opacity:1;filter:Alpha(Opacity=100)}.elfinder .elfinder-button.ui-state-disabled .elfinder-button-icon{opacity:.4;filter:Alpha(Opacity=40)}.elfinder-rtl .elfinder-buttonset{float:right}.elfinder-button-icon{width:16px;height:16px;display:block;background:url('../img/toolbar.png') no-repeat}.elfinder-button-icon-home{background-position:0 0}.elfinder-button-icon-back{background-position:0 -112px}.elfinder-button-icon-forward{background-position:0 -128px}.elfinder-button-icon-up{background-position:0 -144px}.elfinder-button-icon-reload{background-position:0 -160px}.elfinder-button-icon-open{background-position:0 -176px}.elfinder-button-icon-mkdir{background-position:0 -192px}.elfinder-button-icon-mkfile{background-position:0 -208px}.elfinder-button-icon-rm{background-position:0 -224px}.elfinder-button-icon-copy{background-position:0 -240px}.elfinder-button-icon-cut{background-position:0 -256px}.elfinder-button-icon-paste{background-position:0 -272px}.elfinder-button-icon-getfile{background-position:0 -288px}.elfinder-button-icon-duplicate{background-position:0 -304px}.elfinder-button-icon-rename{background-position:0 -320px}.elfinder-button-icon-edit{background-position:0 -336px}.elfinder-button-icon-quicklook{background-position:0 -352px}.elfinder-button-icon-upload{background-position:0 -368px}.elfinder-button-icon-download{background-position:0 -384px}.elfinder-button-icon-info{background-position:0 -400px}.elfinder-button-icon-extract{background-position:0 -416px}.elfinder-button-icon-archive{background-position:0 -432px}.elfinder-button-icon-view{background-position:0 -448px}.elfinder-button-icon-view-list{background-position:0 -464px}.elfinder-button-icon-help{background-position:0 -480px}.elfinder-button-icon-resize{background-position:0 -512px}.elfinder-button-icon-search{background-position:0 -561px}.elfinder-button-icon-sort{background-position:0 -577px}.elfinder .elfinder-menubutton{overflow:visible}.elfinder-button-menu{position:absolute;left:0;top:26px;padding:3px 0}.elfinder-button-menu-item{white-space:nowrap;font-size:.72em;cursor:default;padding:5px 19px;position:relative}.elfinder-button-menu .ui-state-hover{border:0 solid}.elfinder-menu-item-sort-dir{width:16px;height:16px;position:absolute;left:2px;top:50%;margin-top:-8px;background:url("../img/toolbar.png") 0 -594px no-repeat;display:none}.elfinder-button-menu-item-selected .elfinder-menu-item-sort-dir{display:block}.elfinder-menu-item-sort-desc .elfinder-menu-item-sort-dir{background-position:0 -610px}.elfinder-button form{position:absolute;top:0;right:0;opacity:0;filter:Alpha(Opacity=0);cursor:pointer}.elfinder .elfinder-button form input{background:0 0;cursor:default}.elfinder .elfinder-button-search{border:0 solid;background:0 0;padding:0;margin:1px 4px;height:auto;float:right;width:202px}.elfinder-ltr .elfinder-button-search{float:right;margin-right:10px}.elfinder-rtl .elfinder-button-search{float:left;margin-left:10px}.elfinder-button-search input{width:160px;height:22px;padding:0 20px;font-size:.8em;line-height:22px;border:1px solid #aaa;-moz-border-radius:12px;-webkit-border-radius:12px;border-radius:12px;outline:0 solid}.elfinder-rtl .elfinder-button-search input{direction:rtl}.elfinder-button-search .ui-icon{position:absolute;height:18px;top:50%;margin:-7px 4px 0 4px;opacity:.6;filter:Alpha(Opacity=60)}.elfinder-ltr .elfinder-button-search .ui-icon-search{left:0}.elfinder-rtl .elfinder-button-search .ui-icon-search,.elfinder-ltr .elfinder-button-search .ui-icon-close{right:0}.elfinder-rtl .elfinder-button-search .ui-icon-close{left:0}
49 elfinder/static/css/theme.css
@@ -0,0 +1,49 @@
+/**
+ * MacOS X like theme for elFinder.
+ * Required jquery ui "smoothness" theme.
+ *
+ * @author Dmitry (dio) Levashov
+ **/
+
+/* dialogs */
+.std42-dialog, .std42-dialog .ui-widget-content { background-color:#ededed; background-image:none; background-clip: content-box; }
+
+/* navbar */
+.elfinder .elfinder-navbar { background:#dde4eb; }
+.elfinder-navbar .ui-state-hover { background:transparent; border-color:transparent; }
+.elfinder-navbar .ui-state-active { background: #3875d7; border-color:#3875d7; color:#fff; }
+/* disabled elfinder */
+.elfinder-disabled .elfinder-navbar .ui-state-active { background: #dadada; border-color:#aaa; color:#fff; }
+
+
+/* current directory */
+/* selected file in "icons" view */
+.elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover { background:#ccc; }
+/* list view*/
+.elfinder-cwd table tr:nth-child(odd) { background-color:#edf3fe; }
+.elfinder-cwd table tr { border-top:1px solid #fff; }
+
+/* common selected background/color */
+.elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
+.elfinder-cwd table td.ui-state-hover,
+.elfinder-button-menu .ui-state-hover { background: #3875d7; color:#fff;}
+/* disabled elfinder */
+.elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover,
+.elfinder-disabled .elfinder-cwd table td.ui-state-hover { background:#dadada;}
+
+/* statusbar */
+.elfinder .elfinder-statusbar { color:#555; }
+.elfinder .elfinder-statusbar a { text-decoration:none; color:#555;}
+
+
+.std42-dialog .elfinder-help, .std42-dialog .elfinder-help .ui-widget-content { background:#fff;}
+
+/* contextmenu */
+.elfinder-contextmenu .ui-state-hover { background: #3875d7; color:#fff; }
+.elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow { background-image:url('../img/arrows-active.png'); }
+
+
+
+
+
+
BIN  elfinder/static/img/arrows-active.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  elfinder/static/img/arrows-normal.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  elfinder/static/img/crop.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  elfinder/static/img/dialogs.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  elfinder/static/img/icons-big.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  elfinder/static/img/icons-small.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  elfinder/static/img/logo.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  elfinder/static/img/progress.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  elfinder/static/img/quicklook-bg.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  elfinder/static/img/quicklook-icons.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  elfinder/static/img/resize.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  elfinder/static/img/spinner-mini.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN  elfinder/static/img/toolbar.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9,831 elfinder/static/js/elfinder.full.js
9,831 additions, 0 deletions not shown
23 elfinder/static/js/elfinder.min.js
23 additions, 0 deletions not shown
313 elfinder/static/js/i18n/elfinder.LANG.js
@@ -0,0 +1,313 @@
+/**
+ * elFinder translation template
+ * use this file to create new translation
+ * submit new translation via https://github.com/Studio-42/elFinder/issues
+ * or make a pull request
+ */
+
+/**
+ * XXXXX translation
+ * @author Translator Name <translator@email.tld>
+ * @version 201x-xx-xx
+ */
+if (elFinder && elFinder.prototype && typeof(elFinder.prototype.i18) == 'object') {
+ elFinder.prototype.i18.REPLACE_WITH_xx_OR_xx_YY_LANG_CODE = {
+ translator : 'Translator name &lt;translator@email.tld&gt;',
+ language : 'Language of translation in your language',
+ direction : 'ltr',
+ messages : {
+
+ /********************************** errors **********************************/
+ 'error' : 'Error',
+ 'errUnknown' : 'Unknown error.',
+ 'errUnknownCmd' : 'Unknown command.',
+ 'errJqui' : 'Invalid jQuery UI configuration. Selectable, draggable and droppable components must be included.',
+ 'errNode' : 'elFinder requires DOM Element to be created.',
+ 'errURL' : 'Invalid elFinder configuration! URL option is not set.',
+ 'errAccess' : 'Access denied.',
+ 'errConnect' : 'Unable to connect to backend.',
+ 'errAbort' : 'Connection aborted.',
+ 'errTimeout' : 'Connection timeout.',
+ 'errNotFound' : 'Backend not found.',
+ 'errResponse' : 'Invalid backend response.',
+ 'errConf' : 'Invalid backend configuration.',
+ 'errJSON' : 'PHP JSON module not installed.',
+ 'errNoVolumes' : 'Readable volumes not available.',
+ 'errCmdParams' : 'Invalid parameters for command "$1".',
+ 'errDataNotJSON' : 'Data is not JSON.',
+ 'errDataEmpty' : 'Data is empty.',
+ 'errCmdReq' : 'Backend request requires command name.',
+ 'errOpen' : 'Unable to open "$1".',
+ 'errNotFolder' : 'Object is not a folder.',
+ 'errNotFile' : 'Object is not a file.',
+ 'errRead' : 'Unable to read "$1".',
+ 'errWrite' : 'Unable to write into "$1".',
+ 'errPerm' : 'Permission denied.',
+ 'errLocked' : '"$1" is locked and can not be renamed, moved or removed.',
+ 'errExists' : 'File named "$1" already exists.',
+ 'errInvName' : 'Invalid file name.',
+ 'errFolderNotFound' : 'Folder not found.',
+ 'errFileNotFound' : 'File not found.',
+ 'errTrgFolderNotFound' : 'Target folder "$1" not found.',
+ 'errPopup' : 'Browser prevented opening popup window. To open file enable it in browser options.',
+ 'errMkdir' : 'Unable to create folder "$1".',
+ 'errMkfile' : 'Unable to create file "$1".',