From: zuber Date: Thu, 5 Nov 2009 22:51:01 +0000 (+0100) Subject: Dodanie aplikacji sorl.thumbnail i filebrowser. X-Git-Url: https://git.mdrn.pl/redakcja.git/commitdiff_plain/717c14c014e3c988bcb392599a47ffa92630da78?ds=sidebyside;hp=-c Dodanie aplikacji sorl.thumbnail i filebrowser. --- 717c14c014e3c988bcb392599a47ffa92630da78 diff --git a/apps/filebrowser/.svn/all-wcprops b/apps/filebrowser/.svn/all-wcprops new file mode 100644 index 00000000..0b4ed073 --- /dev/null +++ b/apps/filebrowser/.svn/all-wcprops @@ -0,0 +1,71 @@ +K 25 +svn:wc:ra_dav:version-url +V 52 +/svn/!svn/ver/466/branches/filebrowser_3/filebrowser +END +functions.py +K 25 +svn:wc:ra_dav:version-url +V 65 +/svn/!svn/ver/465/branches/filebrowser_3/filebrowser/functions.py +END +base.py +K 25 +svn:wc:ra_dav:version-url +V 60 +/svn/!svn/ver/443/branches/filebrowser_3/filebrowser/base.py +END +LICENSE +K 25 +svn:wc:ra_dav:version-url +V 60 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/LICENSE +END +views.py +K 25 +svn:wc:ra_dav:version-url +V 61 +/svn/!svn/ver/461/branches/filebrowser_3/filebrowser/views.py +END +__init__.py +K 25 +svn:wc:ra_dav:version-url +V 64 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/__init__.py +END +models.py +K 25 +svn:wc:ra_dav:version-url +V 62 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/models.py +END +urls.py +K 25 +svn:wc:ra_dav:version-url +V 60 +/svn/!svn/ver/422/branches/filebrowser_3/filebrowser/urls.py +END +decorators.py +K 25 +svn:wc:ra_dav:version-url +V 66 +/svn/!svn/ver/444/branches/filebrowser_3/filebrowser/decorators.py +END +forms.py +K 25 +svn:wc:ra_dav:version-url +V 61 +/svn/!svn/ver/429/branches/filebrowser_3/filebrowser/forms.py +END +fields.py +K 25 +svn:wc:ra_dav:version-url +V 62 +/svn/!svn/ver/439/branches/filebrowser_3/filebrowser/fields.py +END +fb_settings.py +K 25 +svn:wc:ra_dav:version-url +V 67 +/svn/!svn/ver/462/branches/filebrowser_3/filebrowser/fb_settings.py +END diff --git a/apps/filebrowser/.svn/entries b/apps/filebrowser/.svn/entries new file mode 100644 index 00000000..e43f70a6 --- /dev/null +++ b/apps/filebrowser/.svn/entries @@ -0,0 +1,414 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser +http://django-filebrowser.googlecode.com/svn + + + +2009-10-29T16:15:59.524671Z +466 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +media +dir + +LICENSE +file + + + + +2009-11-05T20:58:53.000000Z +532802c1bd753424e5d261b4bffcb0b2 +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +1492 + +views.py +file + + + + +2009-11-05T20:58:53.000000Z +6b44e5ea8d514f8a5b5ff10f3919d5ae +2009-10-12T15:21:04.608284Z +461 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +17397 + +__init__.py +file + + + + +2009-11-05T20:58:53.000000Z +d41d8cd98f00b204e9800998ecf8427e +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +0 + +templatetags +dir + +decorators.py +file + + + + +2009-11-05T20:58:53.000000Z +359c79d0b20a4221de1baa7e8a73479a +2009-10-11T12:04:42.299426Z +444 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +984 + +fields.py +file + + + + +2009-11-05T20:58:53.000000Z +714900e2e7ed24f41ac0c39e6a97e02d +2009-09-03T11:11:52.997170Z +439 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +4229 + +fb_settings.py +file + + + + +2009-11-05T20:58:53.000000Z +cc0813d16aa849977c769937bfaac3ed +2009-10-12T17:44:24.405122Z +462 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +5334 + +templates +dir + +functions.py +file + + + + +2009-11-05T20:58:53.000000Z +0acc2a96db557874ba954ef7c989f211 +2009-10-14T16:20:12.275006Z +465 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +9302 + +locale +dir + +base.py +file + + + + +2009-11-05T20:58:53.000000Z +551196b16283ed0f2f9b95084bbcbd6b +2009-09-17T14:37:47.395733Z +443 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +5363 + +models.py +file + + + + +2009-11-05T20:58:53.000000Z +be8ad4246f98b8a44b2eef5150fbfe59 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +51 + +urls.py +file + + + + +2009-11-05T20:58:53.000000Z +909a9d7d6b85107630fb30d7938aec9d +2009-07-31T18:34:22.973253Z +422 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +679 + +forms.py +file + + + + +2009-11-05T20:58:53.000000Z +47abec059435b5d60377ff170f60a48c +2009-08-01T09:59:09.789309Z +429 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +2748 + diff --git a/apps/filebrowser/.svn/prop-base/fb_settings.py.svn-base b/apps/filebrowser/.svn/prop-base/fb_settings.py.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/apps/filebrowser/.svn/prop-base/fb_settings.py.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/apps/filebrowser/.svn/prop-base/functions.py.svn-base b/apps/filebrowser/.svn/prop-base/functions.py.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/apps/filebrowser/.svn/prop-base/functions.py.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/apps/filebrowser/.svn/prop-base/models.py.svn-base b/apps/filebrowser/.svn/prop-base/models.py.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/apps/filebrowser/.svn/prop-base/models.py.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/apps/filebrowser/.svn/text-base/LICENSE.svn-base b/apps/filebrowser/.svn/text-base/LICENSE.svn-base new file mode 100644 index 00000000..c42f6c2b --- /dev/null +++ b/apps/filebrowser/.svn/text-base/LICENSE.svn-base @@ -0,0 +1,24 @@ +Copyright (c) 2009, Patrick Kranzlmueller (vonautomatisch werkstaetten), +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. +3. Neither the name of FileBrowser nor the names of its contributors may be used +to endorse or promote products derived from this software without specific prior +written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/apps/filebrowser/.svn/text-base/__init__.py.svn-base b/apps/filebrowser/.svn/text-base/__init__.py.svn-base new file mode 100644 index 00000000..e69de29b diff --git a/apps/filebrowser/.svn/text-base/base.py.svn-base b/apps/filebrowser/.svn/text-base/base.py.svn-base new file mode 100644 index 00000000..e72b9ff0 --- /dev/null +++ b/apps/filebrowser/.svn/text-base/base.py.svn-base @@ -0,0 +1,199 @@ +# coding: utf-8 + +import os, re, datetime +from time import gmtime, strftime +from django.conf import settings + +# filebrowser imports +from filebrowser.fb_settings import * +from filebrowser.functions import _get_file_type, _url_join, _is_selectable, _get_version_path + +# PIL import +if STRICT_PIL: + from PIL import Image +else: + try: + from PIL import Image + except ImportError: + import Image + + +class FileObject(object): + """ + The FileObject represents a File on the Server. + + PATH has to be relative to MEDIA_ROOT. + """ + + def __init__(self, path): + self.path = path + self.head = os.path.split(path)[0] + self.filename = os.path.split(path)[1] + self.filename_lower = self.filename.lower() # important for sorting + self.filetype = _get_file_type(self.filename) + + def _filesize(self): + """ + Filesize. + """ + if os.path.isfile(os.path.join(MEDIA_ROOT, self.path)) or os.path.isdir(os.path.join(MEDIA_ROOT, self.path)): + return os.path.getsize(os.path.join(MEDIA_ROOT, self.path)) + return "" + filesize = property(_filesize) + + def _date(self): + """ + Date. + """ + if os.path.isfile(os.path.join(MEDIA_ROOT, self.path)) or os.path.isdir(os.path.join(MEDIA_ROOT, self.path)): + return os.path.getmtime(os.path.join(MEDIA_ROOT, self.path)) + return "" + date = property(_date) + + def _datetime(self): + """ + Datetime Object. + """ + return datetime.datetime.fromtimestamp(self.date) + datetime = property(_datetime) + + def _extension(self): + """ + Extension. + """ + return u"%s" % os.path.splitext(self.filename)[1] + extension = property(_extension) + + def _filetype_checked(self): + if self.filetype == "Folder" and os.path.isdir(self.path_full): + return self.filetype + elif self.filetype != "Folder" and os.path.isfile(self.path_full): + return self.filetype + else: + return "" + filetype_checked = property(_filetype_checked) + + def _path_full(self): + """ + Full server PATH including MEDIA_ROOT. + """ + return u"%s" % os.path.join(MEDIA_ROOT, self.path) + path_full = property(_path_full) + + def _path_relative(self): + return self.path + path_relative = property(_path_relative) + + def _path_relative_directory(self): + """ + Path relative to initial directory. + """ + directory_re = re.compile(r'^(%s)' % (DIRECTORY)) + value = directory_re.sub('', self.path) + return u"%s" % value + path_relative_directory = property(_path_relative_directory) + + def _url_relative(self): + return self.path + url_relative = property(_url_relative) + + def _url_full(self): + """ + Full URL including MEDIA_URL. + """ + return u"%s" % _url_join(MEDIA_URL, self.path) + url_full = property(_url_full) + + def _url_save(self): + """ + URL used for the filebrowsefield. + """ + if SAVE_FULL_URL: + return self.url_full + else: + return self.path + url_save = property(_url_save) + + def _url_thumbnail(self): + """ + Thumbnail URL. + """ + if self.filetype == "Image": + return u"%s" % _url_join(MEDIA_URL, _get_version_path(self.path, 'fb_thumb')) + else: + return "" + url_thumbnail = property(_url_thumbnail) + + def url_admin(self): + if self.filetype_checked == "Folder": + directory_re = re.compile(r'^(%s)' % (DIRECTORY)) + value = directory_re.sub('', self.path) + return u"%s" % value + else: + return u"%s" % _url_join(MEDIA_URL, self.path) + + def _dimensions(self): + """ + Image Dimensions. + """ + if self.filetype == 'Image': + try: + im = Image.open(os.path.join(MEDIA_ROOT, self.path)) + return im.size + except: + pass + else: + return False + dimensions = property(_dimensions) + + def _width(self): + """ + Image Width. + """ + return self.dimensions[0] + width = property(_width) + + def _height(self): + """ + Image Height. + """ + return self.dimensions[1] + height = property(_height) + + def _orientation(self): + """ + Image Orientation. + """ + if self.dimensions: + if self.dimensions[0] >= self.dimensions[1]: + return "Landscape" + else: + return "Portrait" + else: + return None + orientation = property(_orientation) + + def _is_empty(self): + """ + True if Folder is empty, False if not. + """ + if os.path.isdir(self.path_full): + if not os.listdir(self.path_full): + return True + else: + return False + else: + return None + is_empty = property(_is_empty) + + def __repr__(self): + return u"%s" % self.url_save + + def __str__(self): + return u"%s" % self.url_save + + def __unicode__(self): + return u"%s" % self.url_save + + + diff --git a/apps/filebrowser/.svn/text-base/decorators.py.svn-base b/apps/filebrowser/.svn/text-base/decorators.py.svn-base new file mode 100644 index 00000000..070fa2d0 --- /dev/null +++ b/apps/filebrowser/.svn/text-base/decorators.py.svn-base @@ -0,0 +1,29 @@ +# coding: utf-8 + +from django.contrib.sessions.models import Session +from django.shortcuts import get_object_or_404, render_to_response +from django.contrib.auth.models import User +from django.template import RequestContext +from django.conf import settings + + +def flash_login_required(function): + """ + Decorator to recognize a user by its session. + Used for Flash-Uploading. + """ + + def decorator(request, *args, **kwargs): + try: + engine = __import__(settings.SESSION_ENGINE, {}, {}, ['']) + except: + import django.contrib.sessions.backends.db + engine = django.contrib.sessions.backends.db + session_data = engine.SessionStore(request.POST.get('session_key')) + user_id = session_data['_auth_user_id'] + #will return 404 if the session ID does not resolve to a valid user + request.user = get_object_or_404(User, pk=user_id) + return function(request, *args, **kwargs) + return decorator + + diff --git a/apps/filebrowser/.svn/text-base/fb_settings.py.svn-base b/apps/filebrowser/.svn/text-base/fb_settings.py.svn-base new file mode 100644 index 00000000..502f109f --- /dev/null +++ b/apps/filebrowser/.svn/text-base/fb_settings.py.svn-base @@ -0,0 +1,109 @@ +# coding: utf-8 + +import os +from django.conf import settings +from django.utils.translation import ugettext_lazy as _ + +# settings for django-tinymce +try: + import tinymce.settings + DEFAULT_URL_TINYMCE = tinymce.settings.JS_BASE_URL + '/' + DEFAULT_PATH_TINYMCE = tinymce.settings.JS_ROOT + '/' +except ImportError: + DEFAULT_URL_TINYMCE = settings.ADMIN_MEDIA_PREFIX + "tinymce/jscripts/tiny_mce/" + DEFAULT_PATH_TINYMCE = os.path.join(settings.MEDIA_ROOT, 'admin/tinymce/jscripts/tiny_mce/') + +# Set to True in order to see the FileObject when Browsing. +DEBUG = getattr(settings, "FILEBROWSER_DEBUG", False) + +# Main Media Settings +MEDIA_ROOT = getattr(settings, "FILEBROWSER_MEDIA_ROOT", settings.MEDIA_ROOT) +MEDIA_URL = getattr(settings, "FILEBROWSER_MEDIA_URL", settings.MEDIA_URL) + +# Main FileBrowser Directory. This has to be a directory within MEDIA_ROOT. +# Leave empty in order to browse all files under MEDIA_ROOT. +# DO NOT USE A SLASH AT THE BEGINNING, DO NOT FORGET THE TRAILING SLASH AT THE END. +DIRECTORY = getattr(settings, "FILEBROWSER_DIRECTORY", 'uploads/') + +# The URL/PATH to your filebrowser media-files. +URL_FILEBROWSER_MEDIA = getattr(settings, "FILEBROWSER_URL_FILEBROWSER_MEDIA", "/media/filebrowser/") +PATH_FILEBROWSER_MEDIA = getattr(settings, "FILEBROWSER_PATH_FILEBROWSER_MEDIA", os.path.join(settings.MEDIA_ROOT, 'filebrowser/')) + +# The URL/PATH to your TinyMCE Installation. +URL_TINYMCE = getattr(settings, "FILEBROWSER_URL_TINYMCE", DEFAULT_URL_TINYMCE) +PATH_TINYMCE = getattr(settings, "FILEBROWSER_PATH_TINYMCE", DEFAULT_PATH_TINYMCE) + +# Allowed Extensions for File Upload. Lower case is important. +# Please be aware that there are Icons for the default extension settings. +# Therefore, if you add a category (e.g. "Misc"), you won't get an icon. +EXTENSIONS = getattr(settings, "FILEBROWSER_EXTENSIONS", { + 'Folder': [''], + 'Image': ['.jpg','.jpeg','.gif','.png','.tif','.tiff'], + 'Video': ['.mov','.wmv','.mpeg','.mpg','.avi','.rm'], + 'Document': ['.pdf','.doc','.rtf','.txt','.xls','.csv'], + 'Sound': ['.mp3','.mp4','.wav','.aiff','.midi','.m4p'], + 'Code': ['.html','.py','.js','.css'] +}) + +# Define different formats for allowed selections. +# This has to be a subset of EXTENSIONS. +SELECT_FORMATS = getattr(settings, "FILEBROWSER_SELECT_FORMATS", { + 'File': ['Folder','Document',], + 'Image': ['Image'], + 'Media': ['Video','Sound'], + 'Document': ['Document'], + # for TinyMCE we can also define lower-case items + 'image': ['Image'], + 'file': ['Folder','Image','Document',], +}) + +# Directory to Save Image Versions (and Thumbnails). Relative to MEDIA_ROOT. +# If no directory is given, versions are stored within the Image directory. +# VERSION URL: VERSIONS_BASEDIR/original_path/originalfilename_versionsuffix.extension +VERSIONS_BASEDIR = getattr(settings, 'FILEBROWSER_VERSIONS_BASEDIR', '') +# Versions Format. Available Attributes: verbose_name, width, height, opts +VERSIONS = getattr(settings, "FILEBROWSER_VERSIONS", { + 'fb_thumb': {'verbose_name': 'Admin Thumbnail', 'width': 60, 'height': 60, 'opts': 'crop upscale'}, + 'thumbnail': {'verbose_name': 'Thumbnail (140px)', 'width': 140, 'height': '', 'opts': ''}, + 'small': {'verbose_name': 'Small (300px)', 'width': 300, 'height': '', 'opts': ''}, + 'medium': {'verbose_name': 'Medium (460px)', 'width': 460, 'height': '', 'opts': ''}, + 'big': {'verbose_name': 'Big (620px)', 'width': 620, 'height': '', 'opts': ''}, + 'cropped': {'verbose_name': 'Cropped (60x60px)', 'width': 60, 'height': 60, 'opts': 'crop'}, + 'croppedthumbnail': {'verbose_name': 'Cropped Thumbnail (140x140px)', 'width': 140, 'height': 140, 'opts': 'crop'}, +}) +# Versions available within the Admin-Interface. +ADMIN_VERSIONS = getattr(settings, 'FILEBROWSER_ADMIN_VERSIONS', ['thumbnail','small', 'medium','big']) +# Which Version should be used as Admin-thumbnail. +ADMIN_THUMBNAIL = getattr(settings, 'FILEBROWSER_ADMIN_THUMBNAIL', 'fb_thumb') + +# EXTRA SETTINGS +# True to save the URL including MEDIA_URL to your model fields +# or False (default) to save path relative to MEDIA_URL. +# Note: Full URL does not necessarily means absolute URL. +SAVE_FULL_URL = getattr(settings, "FILEBROWSER_SAVE_FULL_URL", True) +# If set to True, the FileBrowser will not try to import a mis-installed PIL. +STRICT_PIL = getattr(settings, 'FILEBROWSER_STRICT_PIL', False) +# PIL's Error "Suspension not allowed here" work around: +# s. http://mail.python.org/pipermail/image-sig/1999-August/000816.html +IMAGE_MAXBLOCK = getattr(settings, 'FILEBROWSER_IMAGE_MAXBLOCK', 1024*1024) +# Exclude files matching any of the following regular expressions +# Default is to exclude 'thumbnail' style naming of image-thumbnails. +EXTENSION_LIST = [] +for exts in EXTENSIONS.values(): + EXTENSION_LIST += exts +EXCLUDE = getattr(settings, 'FILEBROWSER_EXCLUDE', (r'_(%(exts)s)_.*_q\d{1,3}\.(%(exts)s)' % {'exts': ('|'.join(EXTENSION_LIST))},)) +# Max. Upload Size in Bytes. +MAX_UPLOAD_SIZE = getattr(settings, "FILEBROWSER_MAX_UPLOAD_SIZE", 10485760) +# Convert Filename (replace spaces and convert to lowercase) +CONVERT_FILENAME = getattr(settings, "FILEBROWSER_CONVERT_FILENAME", True) + +# EXTRA TRANSLATION STRINGS +# The following strings are not availabe within views or templates +_('Folder') +_('Image') +_('Video') +_('Document') +_('Sound') +_('Code') + + diff --git a/apps/filebrowser/.svn/text-base/fields.py.svn-base b/apps/filebrowser/.svn/text-base/fields.py.svn-base new file mode 100644 index 00000000..85e981b9 --- /dev/null +++ b/apps/filebrowser/.svn/text-base/fields.py.svn-base @@ -0,0 +1,121 @@ +# coding: utf-8 + +import os + +# django imports +from django.db import models +from django import forms +from django.forms.widgets import Input +from django.db.models.fields import Field, CharField +from django.utils.encoding import force_unicode +from django.template.loader import render_to_string +from django.utils.translation import ugettext_lazy as _ + +# filebrowser imports +from filebrowser.functions import _url_to_path, _dir_from_url, _get_version_path, _url_join +from filebrowser.fb_settings import * +from filebrowser.base import FileObject + +class FileBrowseWidget(Input): + input_type = 'text' + + class Media: + js = (os.path.join(URL_FILEBROWSER_MEDIA, 'js/AddFileBrowser.js'), ) + + def __init__(self, attrs=None): + self.directory = attrs.get('directory', '') + self.extensions = attrs.get('extensions', '') + self.format = attrs.get('format', '') + if attrs is not None: + self.attrs = attrs.copy() + else: + self.attrs = {} + + def render(self, name, value, attrs=None): + if value is None: + value = "" + final_attrs = self.build_attrs(attrs, type=self.input_type, name=name) + final_attrs['search_icon'] = URL_FILEBROWSER_MEDIA + 'img/filebrowser_icon_show.gif' + final_attrs['directory'] = self.directory + final_attrs['extensions'] = self.extensions + final_attrs['format'] = self.format + final_attrs['ADMIN_THUMBNAIL'] = ADMIN_THUMBNAIL + final_attrs['DEBUG'] = DEBUG + if value != "": + try: + final_attrs['directory'] = os.path.split(value.path_relative_directory)[0] + except: + pass + return render_to_string("filebrowser/custom_field.html", locals()) + + +class FileBrowseFormField(forms.CharField): + widget = FileBrowseWidget + + default_error_messages = { + 'extension': _(u'Extension %(ext)s is not allowed. Only %(allowed)s is allowed.'), + } + + def __init__(self, max_length=None, min_length=None, + directory=None, extensions=None, format=None, + *args, **kwargs): + self.max_length, self.min_length = max_length, min_length + self.directory = directory + self.extensions = extensions + if format: + self.format = format or '' + self.extensions = extensions or EXTENSIONS.get(format) + super(FileBrowseFormField, self).__init__(*args, **kwargs) + + def clean(self, value): + value = super(FileBrowseFormField, self).clean(value) + if value == '': + return value + file_extension = os.path.splitext(value)[1].lower() + if self.extensions and not file_extension in self.extensions: + raise forms.ValidationError(self.error_messages['extension'] % {'ext': file_extension, 'allowed': ", ".join(self.extensions)}) + return value + + +class FileBrowseField(Field): + __metaclass__ = models.SubfieldBase + + def __init__(self, *args, **kwargs): + self.directory = kwargs.pop('directory', '') + self.extensions = kwargs.pop('extensions', '') + self.format = kwargs.pop('format', '') + return super(FileBrowseField, self).__init__(*args, **kwargs) + + def to_python(self, value): + if not value or isinstance(value, FileObject): + return value + return FileObject(_url_to_path(value)) + + def get_db_prep_value(self, value): + if value is None: + return None + return unicode(value) + + + def get_manipulator_field_objs(self): + return [oldforms.TextField] + + def get_internal_type(self): + return "CharField" + + def formfield(self, **kwargs): + attrs = {} + attrs["directory"] = self.directory + attrs["extensions"] = self.extensions + attrs["format"] = self.format + defaults = { + 'form_class': FileBrowseFormField, + 'widget': FileBrowseWidget(attrs=attrs), + 'directory': self.directory, + 'extensions': self.extensions, + 'format': self.format + } + defaults.update(kwargs) + return super(FileBrowseField, self).formfield(**defaults) + + diff --git a/apps/filebrowser/.svn/text-base/forms.py.svn-base b/apps/filebrowser/.svn/text-base/forms.py.svn-base new file mode 100644 index 00000000..eef418cc --- /dev/null +++ b/apps/filebrowser/.svn/text-base/forms.py.svn-base @@ -0,0 +1,59 @@ +# coding: utf-8 + +import re, os + +from django import forms +from django.forms.formsets import BaseFormSet +from django.utils.translation import ugettext as _ + +# filebrowser imports +from filebrowser.fb_settings import MAX_UPLOAD_SIZE +from filebrowser.functions import _get_file_type, _convert_filename + +alnum_name_re = re.compile(r'^[\sa-zA-Z0-9._/-]+$') + +class MakeDirForm(forms.Form): + """ + Form for creating Directory. + """ + + def __init__(self, path, *args, **kwargs): + self.path = path + super(MakeDirForm, self).__init__(*args, **kwargs) + + dir_name = forms.CharField(widget=forms.TextInput(attrs=dict({ 'class': 'vTextField' }, max_length=50, min_length=3)), label=_(u'Name'), help_text=_(u'Only letters, numbers, underscores, spaces and hyphens are allowed.'), required=True) + + def clean_dir_name(self): + if self.cleaned_data['dir_name']: + # only letters, numbers, underscores, spaces and hyphens are allowed. + if not alnum_name_re.search(self.cleaned_data['dir_name']): + raise forms.ValidationError(_(u'Only letters, numbers, underscores, spaces and hyphens are allowed.')) + # directory must not already exist. + if os.path.isdir(os.path.join(self.path, _convert_filename(self.cleaned_data['dir_name']))): + raise forms.ValidationError(_(u'The Folder already exists.')) + return _convert_filename(self.cleaned_data['dir_name']) + + +class RenameForm(forms.Form): + """ + Form for renaming File/Directory. + """ + + def __init__(self, path, file_extension, *args, **kwargs): + self.path = path + self.file_extension = file_extension + super(RenameForm, self).__init__(*args, **kwargs) + + name = forms.CharField(widget=forms.TextInput(attrs=dict({ 'class': 'vTextField' }, max_length=50, min_length=3)), label=_(u'New Name'), help_text=_('Only letters, numbers, underscores, spaces and hyphens are allowed.'), required=True) + + def clean_name(self): + if self.cleaned_data['name']: + # only letters, numbers, underscores, spaces and hyphens are allowed. + if not alnum_name_re.search(self.cleaned_data['name']): + raise forms.ValidationError(_(u'Only letters, numbers, underscores, spaces and hyphens are allowed.')) + # file/directory must not already exist. + if os.path.isdir(os.path.join(self.path, _convert_filename(self.cleaned_data['name']))) or os.path.isfile(os.path.join(self.path, _convert_filename(self.cleaned_data['name']) + self.file_extension)): + raise forms.ValidationError(_(u'The File/Folder already exists.')) + return _convert_filename(self.cleaned_data['name']) + + diff --git a/apps/filebrowser/.svn/text-base/functions.py.svn-base b/apps/filebrowser/.svn/text-base/functions.py.svn-base new file mode 100644 index 00000000..cef9dcd9 --- /dev/null +++ b/apps/filebrowser/.svn/text-base/functions.py.svn-base @@ -0,0 +1,312 @@ +# coding: utf-8 + +from django.utils.translation import ugettext as _ +from django.utils.safestring import mark_safe +from time import gmtime, strftime, localtime, mktime, time +from django.core.files import File +from django.core.files.storage import default_storage +import os, re, decimal +from urlparse import urlparse + +# filebrowser imports +from filebrowser.fb_settings import * + +# PIL import +if STRICT_PIL: + from PIL import Image +else: + try: + from PIL import Image + except ImportError: + import Image + + +def _url_to_path(value): + """ + Change URL to PATH. + Value has to be an URL relative to MEDIA URL or a full URL (including MEDIA_URL). + + Returns a PATH relative to MEDIA_ROOT. + """ + mediaurl_re = re.compile(r'^(%s)' % (MEDIA_URL)) + value = mediaurl_re.sub('', value) + return value + + +def _path_to_url(value): + """ + Change PATH to URL. + Value has to be a PATH relative to MEDIA_ROOT. + + Return an URL relative to MEDIA_ROOT. + """ + mediaroot_re = re.compile(r'^(%s)' % (MEDIA_ROOT)) + value = mediaroot_re.sub('', value) + return _url_join(MEDIA_URL, value) + + +def _dir_from_url(value): + """ + Get the relative server directory from a URL. + URL has to be an absolute URL including MEDIA_URL or + an URL relative to MEDIA_URL. + """ + + mediaurl_re = re.compile(r'^(%s)' % (MEDIA_URL)) + value = mediaurl_re.sub('', value) + directory_re = re.compile(r'^(%s)' % (DIRECTORY)) + value = directory_re.sub('', value) + return os.path.split(value)[0] + + +def _get_version_path(value, version_prefix): + """ + Construct the PATH to an Image version. + Value has to be server-path, relative to MEDIA_ROOT. + + version_filename = filename + version_prefix + ext + Returns a path relative to MEDIA_ROOT. + """ + if os.path.isfile(os.path.join(MEDIA_ROOT, value)): + path, filename = os.path.split(value) + filename, ext = os.path.splitext(filename) + version_filename = filename + "_" + version_prefix + ext + return os.path.join(VERSIONS_BASEDIR, path, version_filename) + else: + return None + + +def _sort_by_attr(seq, attr): + """ + Sort the sequence of objects by object's attribute + + Arguments: + seq - the list or any sequence (including immutable one) of objects to sort. + attr - the name of attribute to sort by + + Returns: + the sorted list of objects. + """ + import operator + + # Use the "Schwartzian transform" + # Create the auxiliary list of tuples where every i-th tuple has form + # (seq[i].attr, i, seq[i]) and sort it. The second item of tuple is needed not + # only to provide stable sorting, but mainly to eliminate comparison of objects + # (which can be expensive or prohibited) in case of equal attribute values. + intermed = map(None, map(getattr, seq, (attr,)*len(seq)), xrange(len(seq)), seq) + intermed.sort() + return map(operator.getitem, intermed, (-1,) * len(intermed)) + + +def _url_join(*args): + if args[0].startswith("http://"): + url = "http://" + else: + url = "/" + for arg in args: + arg = str(arg).replace("\\", "/") + arg_split = arg.split("/") + for elem in arg_split: + if elem != "" and elem != "http:": + url = url + elem + "/" + # remove trailing slash for filenames + if os.path.splitext(args[-1])[1]: + url = url.rstrip("/") + return url + + +def _get_path(path): + """ + Get Path. + """ + + if os.path.isabs(path) or not os.path.isdir(os.path.join(MEDIA_ROOT, DIRECTORY, path)): + return None + return path + + +def _get_file(path, filename): + """ + Get File. + """ + + if not os.path.isfile(os.path.join(MEDIA_ROOT, DIRECTORY, path, filename)) and not os.path.isdir(os.path.join(MEDIA_ROOT, DIRECTORY, path, filename)): + return None + return filename + + +def _get_breadcrumbs(query, path, title): + """ + Get breadcrumbs. + """ + + breadcrumbs = [] + dir_query = "" + if path: + for item in path.split(os.sep): + dir_query = os.path.join(dir_query,item) + breadcrumbs.append([item,dir_query]) + if title: + breadcrumbs.append([title,'']) + return breadcrumbs + + +def _get_filterdate(filterDate, dateTime): + """ + Get filterdate. + """ + + returnvalue = '' + dateYear = strftime("%Y", gmtime(dateTime)) + dateMonth = strftime("%m", gmtime(dateTime)) + dateDay = strftime("%d", gmtime(dateTime)) + if filterDate == 'today' and int(dateYear) == int(localtime()[0]) and int(dateMonth) == int(localtime()[1]) and int(dateDay) == int(localtime()[2]): returnvalue = 'true' + elif filterDate == 'thismonth' and dateTime >= time()-2592000: returnvalue = 'true' + elif filterDate == 'thisyear' and int(dateYear) == int(localtime()[0]): returnvalue = 'true' + elif filterDate == 'past7days' and dateTime >= time()-604800: returnvalue = 'true' + elif filterDate == '': returnvalue = 'true' + return returnvalue + + +def _get_settings_var(): + """ + Get settings variables used for FileBrowser listing. + """ + + settings_var = {} + # Main + settings_var['DEBUG'] = DEBUG + settings_var['MEDIA_ROOT'] = MEDIA_ROOT + settings_var['MEDIA_URL'] = MEDIA_URL + settings_var['DIRECTORY'] = DIRECTORY + # FileBrowser + settings_var['URL_FILEBROWSER_MEDIA'] = URL_FILEBROWSER_MEDIA + settings_var['PATH_FILEBROWSER_MEDIA'] = PATH_FILEBROWSER_MEDIA + # TinyMCE + settings_var['URL_TINYMCE'] = URL_TINYMCE + settings_var['PATH_TINYMCE'] = PATH_TINYMCE + # Extensions/Formats (for FileBrowseField) + settings_var['EXTENSIONS'] = EXTENSIONS + settings_var['SELECT_FORMATS'] = SELECT_FORMATS + # Versions + settings_var['VERSIONS_BASEDIR'] = VERSIONS_BASEDIR + settings_var['VERSIONS'] = VERSIONS + settings_var['ADMIN_VERSIONS'] = ADMIN_VERSIONS + settings_var['ADMIN_THUMBNAIL'] = ADMIN_THUMBNAIL + # FileBrowser Options + settings_var['MAX_UPLOAD_SIZE'] = MAX_UPLOAD_SIZE + # Convert Filenames + settings_var['CONVERT_FILENAME'] = CONVERT_FILENAME + return settings_var + + +def _handle_file_upload(path, file): + """ + Handle File Upload. + """ + + file_path = os.path.join(path, file.name) + uploadedfile = default_storage.save(file_path, file) + return uploadedfile + + +def _get_file_type(filename): + """ + Get file type as defined in EXTENSIONS. + """ + + file_extension = os.path.splitext(filename)[1].lower() + file_type = '' + for k,v in EXTENSIONS.iteritems(): + for extension in v: + if file_extension == extension.lower(): + file_type = k + return file_type + + +def _is_selectable(filename, selecttype): + """ + Get select type as defined in FORMATS. + """ + + file_extension = os.path.splitext(filename)[1].lower() + select_types = [] + for k,v in SELECT_FORMATS.iteritems(): + for extension in v: + if file_extension == extension.lower(): + select_types.append(k) + return select_types + + +def _version_generator(value, version_prefix, force=None): + """ + Generate Version for an Image. + value has to be a serverpath relative to MEDIA_ROOT. + """ + + # PIL's Error "Suspension not allowed here" work around: + # s. http://mail.python.org/pipermail/image-sig/1999-August/000816.html + if STRICT_PIL: + from PIL import ImageFile + else: + try: + from PIL import ImageFile + except ImportError: + import ImageFile + ImageFile.MAXBLOCK = IMAGE_MAXBLOCK # default is 64k + + try: + im = Image.open(os.path.join(MEDIA_ROOT, value)) + version_path = _get_version_path(value, version_prefix) + absolute_version_path = os.path.join(MEDIA_ROOT, version_path) + version_dir = os.path.split(absolute_version_path)[0] + if not os.path.isdir(version_dir): + os.makedirs(version_dir) + os.chmod(version_dir, 0775) + version = scale_and_crop(im, VERSIONS[version_prefix]['width'], VERSIONS[version_prefix]['height'], VERSIONS[version_prefix]['opts']) + try: + version.save(absolute_version_path, quality=90, optimize=1) + except IOError: + version.save(absolute_version_path, quality=90) + return version_path + except: + return None + + +def scale_and_crop(im, width, height, opts): + x, y = [float(v) for v in im.size] + if width: + xr = float(width) + else: + xr = float(x*height/y) + if height: + yr = float(height) + else: + yr = float(y*width/x) + + if 'crop' in opts: + r = max(xr/x, yr/y) + else: + r = min(xr/x, yr/y) + + if r < 1.0 or (r > 1.0 and 'upscale' in opts): + im = im.resize((int(x*r), int(y*r)), resample=Image.ANTIALIAS) + + if 'crop' in opts: + x, y = [float(v) for v in im.size] + ex, ey = (x-min(x, xr))/2, (y-min(y, yr))/2 + if ex or ey: + im = im.crop((int(ex), int(ey), int(x-ex), int(y-ey))) + return im +scale_and_crop.valid_options = ('crop', 'upscale') + + +def _convert_filename(value): + if CONVERT_FILENAME: + return value.replace(" ", "_").lower() + else: + return value + + + diff --git a/apps/filebrowser/.svn/text-base/models.py.svn-base b/apps/filebrowser/.svn/text-base/models.py.svn-base new file mode 100644 index 00000000..a11084e2 --- /dev/null +++ b/apps/filebrowser/.svn/text-base/models.py.svn-base @@ -0,0 +1 @@ +# This file is only necessary for the tests to work \ No newline at end of file diff --git a/apps/filebrowser/.svn/text-base/urls.py.svn-base b/apps/filebrowser/.svn/text-base/urls.py.svn-base new file mode 100644 index 00000000..5cfc2596 --- /dev/null +++ b/apps/filebrowser/.svn/text-base/urls.py.svn-base @@ -0,0 +1,16 @@ +from django.conf.urls.defaults import * + +urlpatterns = patterns('', + + # filebrowser urls + url(r'^browse/$', 'filebrowser.views.browse', name="fb_browse"), + url(r'^mkdir/', 'filebrowser.views.mkdir', name="fb_mkdir"), + url(r'^upload/', 'filebrowser.views.upload', name="fb_upload"), + url(r'^rename/$', 'filebrowser.views.rename', name="fb_rename"), + url(r'^delete/$', 'filebrowser.views.delete', name="fb_delete"), + url(r'^versions/$', 'filebrowser.views.versions', name="fb_versions"), + + url(r'^check_file/$', 'filebrowser.views._check_file', name="fb_check"), + url(r'^upload_file/$', 'filebrowser.views._upload_file', name="fb_do_upload"), + +) diff --git a/apps/filebrowser/.svn/text-base/views.py.svn-base b/apps/filebrowser/.svn/text-base/views.py.svn-base new file mode 100644 index 00000000..0976f11e --- /dev/null +++ b/apps/filebrowser/.svn/text-base/views.py.svn-base @@ -0,0 +1,432 @@ +# coding: utf-8 + +# general imports +import os, re +from time import gmtime, strftime + +# django imports +from django.shortcuts import render_to_response, HttpResponse +from django.template import RequestContext as Context +from django.http import HttpResponseRedirect +from django.contrib.admin.views.decorators import staff_member_required +from django.views.decorators.cache import never_cache +from django.utils.translation import ugettext as _ +from django.conf import settings +from django import forms +from django.core.urlresolvers import reverse +from django.core.exceptions import ImproperlyConfigured +from django.dispatch import Signal + +# filebrowser imports +from filebrowser.fb_settings import * +from filebrowser.functions import _url_to_path, _path_to_url, _sort_by_attr, _get_path, _get_file, _get_version_path, _get_breadcrumbs, _get_filterdate, _get_settings_var, _handle_file_upload, _get_file_type, _url_join, _convert_filename +from filebrowser.templatetags.fb_tags import query_helper +from filebrowser.base import FileObject +from filebrowser.decorators import flash_login_required + +# Precompile regular expressions +filter_re = [] +for exp in EXCLUDE: + filter_re.append(re.compile(exp)) +for k,v in VERSIONS.iteritems(): + exp = (r'_%s.(%s)') % (k, '|'.join(EXTENSION_LIST)) + filter_re.append(re.compile(exp)) + + +def browse(request): + """ + Browse Files/Directories. + """ + + # QUERY / PATH CHECK + query = request.GET + path = _get_path(query.get('dir', '')) + directory = _get_path('') + + if path is None: + msg = _('Directory/File does not exist.') + request.user.message_set.create(message=msg) + if directory is None: + # The DIRECTORY does not exist, raise an error to prevent eternal redirecting. + raise ImproperlyConfigured, _("Error finding upload directory. Maybe it does not exist?") + redirect_url = reverse("fb_browse") + query_helper(query, "", "dir") + return HttpResponseRedirect(redirect_url) + abs_path = os.path.join(MEDIA_ROOT, DIRECTORY, path) + + # INITIAL VARIABLES + results_var = {'results_total': 0, 'results_current': 0, 'delete_total': 0, 'images_total': 0, 'select_total': 0 } + counter = {} + for k,v in EXTENSIONS.iteritems(): + counter[k] = 0 + + dir_list = os.listdir(abs_path) + files = [] + for file in dir_list: + + # EXCLUDE FILES MATCHING VERSIONS_PREFIX OR ANY OF THE EXCLUDE PATTERNS + filtered = file.startswith('.') + for re_prefix in filter_re: + if re_prefix.search(file): + filtered = True + if filtered: + continue + results_var['results_total'] += 1 + + # CREATE FILEOBJECT + fileobject = FileObject(os.path.join(DIRECTORY, path, file)) + + # FILTER / SEARCH + append = False + if fileobject.filetype == request.GET.get('filter_type', fileobject.filetype) and _get_filterdate(request.GET.get('filter_date', ''), fileobject.date): + append = True + if request.GET.get('q') and not re.compile(request.GET.get('q').lower(), re.M).search(file.lower()): + append = False + + # APPEND FILE_LIST + if append: + files.append(fileobject) + results_var['results_current'] += 1 + # COUNTER/RESULTS + if fileobject.filetype == 'Image': + results_var['images_total'] += 1 + if fileobject.filetype != 'Folder': + results_var['delete_total'] += 1 + elif fileobject.filetype == 'Folder' and fileobject.is_empty: + results_var['delete_total'] += 1 + if query.get('type') and query.get('type') in SELECT_FORMATS and fileobject.filetype in SELECT_FORMATS[query.get('type')]: + results_var['select_total'] += 1 + elif not query.get('type'): + results_var['select_total'] += 1 + + # COUNTER/RESULTS + if fileobject.filetype: + counter[fileobject.filetype] += 1 + + # SORTING + files = _sort_by_attr(files, request.GET.get('o', 'date')) + if request.GET.get('ot') == "desc": + files.reverse() + + return render_to_response('filebrowser/index.html', { + 'dir': path, + 'files': files, + 'results_var': results_var, + 'counter': counter, + 'query': query, + 'title': _(u'FileBrowser'), + 'settings_var': _get_settings_var(), + 'breadcrumbs': _get_breadcrumbs(query, path, ''), + }, context_instance=Context(request)) +browse = staff_member_required(never_cache(browse)) + + +# mkdir signals +filebrowser_pre_createdir = Signal(providing_args=["path", "dirname"]) +filebrowser_post_createdir = Signal(providing_args=["path", "dirname"]) + +def mkdir(request): + """ + Make Directory. + """ + + from filebrowser.forms import MakeDirForm + + # QUERY / PATH CHECK + query = request.GET + path = _get_path(query.get('dir', '')) + if path is None: + msg = _('Directory/File does not exist.') + request.user.message_set.create(message=msg) + return HttpResponseRedirect(reverse("fb_browse")) + abs_path = os.path.join(MEDIA_ROOT, DIRECTORY, path) + + if request.method == 'POST': + form = MakeDirForm(abs_path, request.POST) + if form.is_valid(): + server_path = os.path.join(abs_path, form.cleaned_data['dir_name']) + try: + # PRE CREATE SIGNAL + filebrowser_pre_createdir.send(sender=request, path=path, dirname=form.cleaned_data['dir_name']) + # CREATE FOLDER + os.mkdir(server_path) + os.chmod(server_path, 0775) + # POST CREATE SIGNAL + filebrowser_post_createdir.send(sender=request, path=path, dirname=form.cleaned_data['dir_name']) + # MESSAGE & REDIRECT + msg = _('The Folder %s was successfully created.') % (form.cleaned_data['dir_name']) + request.user.message_set.create(message=msg) + # on redirect, sort by date desc to see the new directory on top of the list + # remove filter in order to actually _see_ the new folder + redirect_url = reverse("fb_browse") + query_helper(query, "ot=desc,o=date", "ot,o,filter_type,filter_date,q") + return HttpResponseRedirect(redirect_url) + except OSError, (errno, strerror): + if errno == 13: + form.errors['dir_name'] = forms.util.ErrorList([_('Permission denied.')]) + else: + form.errors['dir_name'] = forms.util.ErrorList([_('Error creating directory.')]) + else: + form = MakeDirForm(abs_path) + + return render_to_response('filebrowser/makedir.html', { + 'form': form, + 'query': query, + 'title': _(u'New Folder'), + 'settings_var': _get_settings_var(), + 'breadcrumbs': _get_breadcrumbs(query, path, _(u'New Folder')), + }, context_instance=Context(request)) +mkdir = staff_member_required(never_cache(mkdir)) + + +def upload(request): + """ + Multipe File Upload. + """ + + from django.http import parse_cookie + + # QUERY / PATH CHECK + query = request.GET + path = _get_path(query.get('dir', '')) + if path is None: + msg = _('Directory/File does not exist.') + request.user.message_set.create(message=msg) + return HttpResponseRedirect(reverse("fb_browse")) + abs_path = os.path.join(MEDIA_ROOT, DIRECTORY, path) + + # SESSION (used for flash-uploading) + cookie_dict = parse_cookie(request.META.get('HTTP_COOKIE', '')) + engine = __import__(settings.SESSION_ENGINE, {}, {}, ['']) + session_key = cookie_dict.get(settings.SESSION_COOKIE_NAME, None) + + return render_to_response('filebrowser/upload.html', { + 'query': query, + 'title': _(u'Select files to upload'), + 'settings_var': _get_settings_var(), + 'breadcrumbs': _get_breadcrumbs(query, path, _(u'Upload')), + 'session_key': session_key, + }, context_instance=Context(request)) +upload = staff_member_required(never_cache(upload)) + + +def _check_file(request): + """ + Check if file already exists on the server. + """ + + from django.utils import simplejson + + folder = request.POST.get('folder') + fb_uploadurl_re = re.compile(r'^(%s)' % reverse("fb_upload")) + folder = fb_uploadurl_re.sub('', folder) + + fileArray = {} + if request.method == 'POST': + for k,v in request.POST.items(): + if k != "folder": + v = _convert_filename(v) + if os.path.isfile(os.path.join(MEDIA_ROOT, DIRECTORY, folder, v)): + fileArray[k] = v + + return HttpResponse(simplejson.dumps(fileArray)) + + +# upload signals +filebrowser_pre_upload = Signal(providing_args=["path", "file"]) +filebrowser_post_upload = Signal(providing_args=["path", "file"]) + +def _upload_file(request): + """ + Upload file to the server. + """ + + from django.core.files.move import file_move_safe + + if request.method == 'POST': + folder = request.POST.get('folder') + fb_uploadurl_re = re.compile(r'^(%s)' % reverse("fb_upload")) + folder = fb_uploadurl_re.sub('', folder) + abs_path = os.path.join(MEDIA_ROOT, DIRECTORY, folder) + if request.FILES: + filedata = request.FILES['Filedata'] + filedata.name = _convert_filename(filedata.name) + # PRE UPLOAD SIGNAL + filebrowser_pre_upload.send(sender=request, path=request.POST.get('folder'), file=filedata) + # HANDLE UPLOAD + uploadedfile = _handle_file_upload(abs_path, filedata) + # MOVE UPLOADED FILE + # if file already exists + if os.path.isfile(os.path.join(MEDIA_ROOT, DIRECTORY, folder, filedata.name)): + old_file = os.path.join(abs_path, filedata.name) + new_file = os.path.join(abs_path, uploadedfile) + file_move_safe(new_file, old_file) + # POST UPLOAD SIGNAL + filebrowser_post_upload.send(sender=request, path=request.POST.get('folder'), file=FileObject(os.path.join(DIRECTORY, folder, filedata.name))) + return HttpResponse('True') +_upload_file = flash_login_required(_upload_file) + + +# delete signals +filebrowser_pre_delete = Signal(providing_args=["path", "filename"]) +filebrowser_post_delete = Signal(providing_args=["path", "filename"]) + +def delete(request): + """ + Delete existing File/Directory. + + When trying to delete a Directory, the Directory has to be empty. + """ + + # QUERY / PATH CHECK + query = request.GET + path = _get_path(query.get('dir', '')) + filename = _get_file(query.get('dir', ''), query.get('filename', '')) + if path is None or filename is None: + msg = _('Directory/File does not exist.') + request.user.message_set.create(message=msg) + return HttpResponseRedirect(reverse("fb_browse")) + abs_path = os.path.join(MEDIA_ROOT, DIRECTORY, path) + + msg = "" + if request.GET: + if request.GET.get('filetype') != "Folder": + relative_server_path = os.path.join(DIRECTORY, path, filename) + try: + # PRE DELETE SIGNAL + filebrowser_pre_delete.send(sender=request, path=path, filename=filename) + # DELETE IMAGE VERSIONS/THUMBNAILS + for version in VERSIONS: + try: + os.unlink(os.path.join(MEDIA_ROOT, _get_version_path(relative_server_path, version))) + except: + pass + # DELETE FILE + os.unlink(os.path.join(abs_path, filename)) + # POST DELETE SIGNAL + filebrowser_post_delete.send(sender=request, path=path, filename=filename) + # MESSAGE & REDIRECT + msg = _('The file %s was successfully deleted.') % (filename.lower()) + request.user.message_set.create(message=msg) + redirect_url = reverse("fb_browse") + query_helper(query, "", "filename,filetype") + return HttpResponseRedirect(redirect_url) + except OSError: + # todo: define error message + msg = OSError + else: + try: + # PRE DELETE SIGNAL + filebrowser_pre_delete.send(sender=request, path=path, filename=filename) + # DELETE FOLDER + os.rmdir(os.path.join(abs_path, filename)) + # POST DELETE SIGNAL + filebrowser_post_delete.send(sender=request, path=path, filename=filename) + # MESSAGE & REDIRECT + msg = _('The directory %s was successfully deleted.') % (filename.lower()) + request.user.message_set.create(message=msg) + redirect_url = reverse("fb_browse") + query_helper(query, "", "filename,filetype") + return HttpResponseRedirect(redirect_url) + except OSError: + # todo: define error message + msg = OSError + + if msg: + request.user.message_set.create(message=msg) + + return render_to_response('filebrowser/index.html', { + 'dir': dir_name, + 'file': request.GET.get('filename', ''), + 'query': query, + 'settings_var': _get_settings_var(), + 'breadcrumbs': _get_breadcrumbs(query, dir_name, ''), + }, context_instance=Context(request)) +delete = staff_member_required(never_cache(delete)) + + +# delete signals +filebrowser_pre_rename = Signal(providing_args=["path", "filename"]) +filebrowser_post_rename = Signal(providing_args=["path", "filename"]) + +def rename(request): + """ + Rename existing File/Directory. + + Includes renaming existing Image Versions/Thumbnails. + """ + + from filebrowser.forms import RenameForm + + # QUERY / PATH CHECK + query = request.GET + path = _get_path(query.get('dir', '')) + filename = _get_file(query.get('dir', ''), query.get('filename', '')) + if path is None or filename is None: + msg = _('Directory/File does not exist.') + request.user.message_set.create(message=msg) + return HttpResponseRedirect(reverse("fb_browse")) + abs_path = os.path.join(MEDIA_ROOT, DIRECTORY, path) + file_extension = os.path.splitext(filename)[1].lower() + + if request.method == 'POST': + form = RenameForm(abs_path, file_extension, request.POST) + if form.is_valid(): + relative_server_path = os.path.join(DIRECTORY, path, filename) + new_relative_server_path = os.path.join(DIRECTORY, path, form.cleaned_data['name'] + file_extension) + try: + # PRE RENAME SIGNAL + filebrowser_pre_delete.send(sender=request, path=path, filename=filename) + # DELETE IMAGE VERSIONS/THUMBNAILS + # regenerating versions/thumbs will be done automatically + for version in VERSIONS: + try: + os.unlink(os.path.join(MEDIA_ROOT, _get_version_path(relative_server_path, version))) + except: + pass + # RENAME ORIGINAL + os.rename(os.path.join(MEDIA_ROOT, relative_server_path), os.path.join(MEDIA_ROOT, new_relative_server_path)) + # POST RENAME SIGNAL + filebrowser_post_delete.send(sender=request, path=path, filename=filename) + # MESSAGE & REDIRECT + msg = _('Renaming was successful.') + request.user.message_set.create(message=msg) + redirect_url = reverse("fb_browse") + query_helper(query, "", "filename") + return HttpResponseRedirect(redirect_url) + except OSError, (errno, strerror): + form.errors['name'] = forms.util.ErrorList([_('Error.')]) + else: + form = RenameForm(abs_path, file_extension) + + return render_to_response('filebrowser/rename.html', { + 'form': form, + 'query': query, + 'file_extension': file_extension, + 'title': _(u'Rename "%s"') % filename, + 'settings_var': _get_settings_var(), + 'breadcrumbs': _get_breadcrumbs(query, path, _(u'Rename')), + }, context_instance=Context(request)) +rename = staff_member_required(never_cache(rename)) + + +def versions(request): + """ + Show all Versions for an Image according to ADMIN_VERSIONS. + """ + + # QUERY / PATH CHECK + query = request.GET + path = _get_path(query.get('dir', '')) + filename = _get_file(query.get('dir', ''), query.get('filename', '')) + if path is None or filename is None: + msg = _('Directory/File does not exist.') + request.user.message_set.create(message=msg) + return HttpResponseRedirect(reverse("fb_browse")) + abs_path = os.path.join(MEDIA_ROOT, DIRECTORY, path) + + return render_to_response('filebrowser/versions.html', { + 'original': _path_to_url(os.path.join(DIRECTORY, path, filename)), + 'query': query, + 'title': _(u'Versions for "%s"') % filename, + 'settings_var': _get_settings_var(), + 'breadcrumbs': _get_breadcrumbs(query, path, _(u'Versions for "%s"') % filename), + }, context_instance=Context(request)) +versions = staff_member_required(never_cache(versions)) + + diff --git a/apps/filebrowser/LICENSE b/apps/filebrowser/LICENSE new file mode 100644 index 00000000..c42f6c2b --- /dev/null +++ b/apps/filebrowser/LICENSE @@ -0,0 +1,24 @@ +Copyright (c) 2009, Patrick Kranzlmueller (vonautomatisch werkstaetten), +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. +3. Neither the name of FileBrowser nor the names of its contributors may be used +to endorse or promote products derived from this software without specific prior +written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/apps/filebrowser/__init__.py b/apps/filebrowser/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/apps/filebrowser/base.py b/apps/filebrowser/base.py new file mode 100644 index 00000000..e72b9ff0 --- /dev/null +++ b/apps/filebrowser/base.py @@ -0,0 +1,199 @@ +# coding: utf-8 + +import os, re, datetime +from time import gmtime, strftime +from django.conf import settings + +# filebrowser imports +from filebrowser.fb_settings import * +from filebrowser.functions import _get_file_type, _url_join, _is_selectable, _get_version_path + +# PIL import +if STRICT_PIL: + from PIL import Image +else: + try: + from PIL import Image + except ImportError: + import Image + + +class FileObject(object): + """ + The FileObject represents a File on the Server. + + PATH has to be relative to MEDIA_ROOT. + """ + + def __init__(self, path): + self.path = path + self.head = os.path.split(path)[0] + self.filename = os.path.split(path)[1] + self.filename_lower = self.filename.lower() # important for sorting + self.filetype = _get_file_type(self.filename) + + def _filesize(self): + """ + Filesize. + """ + if os.path.isfile(os.path.join(MEDIA_ROOT, self.path)) or os.path.isdir(os.path.join(MEDIA_ROOT, self.path)): + return os.path.getsize(os.path.join(MEDIA_ROOT, self.path)) + return "" + filesize = property(_filesize) + + def _date(self): + """ + Date. + """ + if os.path.isfile(os.path.join(MEDIA_ROOT, self.path)) or os.path.isdir(os.path.join(MEDIA_ROOT, self.path)): + return os.path.getmtime(os.path.join(MEDIA_ROOT, self.path)) + return "" + date = property(_date) + + def _datetime(self): + """ + Datetime Object. + """ + return datetime.datetime.fromtimestamp(self.date) + datetime = property(_datetime) + + def _extension(self): + """ + Extension. + """ + return u"%s" % os.path.splitext(self.filename)[1] + extension = property(_extension) + + def _filetype_checked(self): + if self.filetype == "Folder" and os.path.isdir(self.path_full): + return self.filetype + elif self.filetype != "Folder" and os.path.isfile(self.path_full): + return self.filetype + else: + return "" + filetype_checked = property(_filetype_checked) + + def _path_full(self): + """ + Full server PATH including MEDIA_ROOT. + """ + return u"%s" % os.path.join(MEDIA_ROOT, self.path) + path_full = property(_path_full) + + def _path_relative(self): + return self.path + path_relative = property(_path_relative) + + def _path_relative_directory(self): + """ + Path relative to initial directory. + """ + directory_re = re.compile(r'^(%s)' % (DIRECTORY)) + value = directory_re.sub('', self.path) + return u"%s" % value + path_relative_directory = property(_path_relative_directory) + + def _url_relative(self): + return self.path + url_relative = property(_url_relative) + + def _url_full(self): + """ + Full URL including MEDIA_URL. + """ + return u"%s" % _url_join(MEDIA_URL, self.path) + url_full = property(_url_full) + + def _url_save(self): + """ + URL used for the filebrowsefield. + """ + if SAVE_FULL_URL: + return self.url_full + else: + return self.path + url_save = property(_url_save) + + def _url_thumbnail(self): + """ + Thumbnail URL. + """ + if self.filetype == "Image": + return u"%s" % _url_join(MEDIA_URL, _get_version_path(self.path, 'fb_thumb')) + else: + return "" + url_thumbnail = property(_url_thumbnail) + + def url_admin(self): + if self.filetype_checked == "Folder": + directory_re = re.compile(r'^(%s)' % (DIRECTORY)) + value = directory_re.sub('', self.path) + return u"%s" % value + else: + return u"%s" % _url_join(MEDIA_URL, self.path) + + def _dimensions(self): + """ + Image Dimensions. + """ + if self.filetype == 'Image': + try: + im = Image.open(os.path.join(MEDIA_ROOT, self.path)) + return im.size + except: + pass + else: + return False + dimensions = property(_dimensions) + + def _width(self): + """ + Image Width. + """ + return self.dimensions[0] + width = property(_width) + + def _height(self): + """ + Image Height. + """ + return self.dimensions[1] + height = property(_height) + + def _orientation(self): + """ + Image Orientation. + """ + if self.dimensions: + if self.dimensions[0] >= self.dimensions[1]: + return "Landscape" + else: + return "Portrait" + else: + return None + orientation = property(_orientation) + + def _is_empty(self): + """ + True if Folder is empty, False if not. + """ + if os.path.isdir(self.path_full): + if not os.listdir(self.path_full): + return True + else: + return False + else: + return None + is_empty = property(_is_empty) + + def __repr__(self): + return u"%s" % self.url_save + + def __str__(self): + return u"%s" % self.url_save + + def __unicode__(self): + return u"%s" % self.url_save + + + diff --git a/apps/filebrowser/decorators.py b/apps/filebrowser/decorators.py new file mode 100644 index 00000000..070fa2d0 --- /dev/null +++ b/apps/filebrowser/decorators.py @@ -0,0 +1,29 @@ +# coding: utf-8 + +from django.contrib.sessions.models import Session +from django.shortcuts import get_object_or_404, render_to_response +from django.contrib.auth.models import User +from django.template import RequestContext +from django.conf import settings + + +def flash_login_required(function): + """ + Decorator to recognize a user by its session. + Used for Flash-Uploading. + """ + + def decorator(request, *args, **kwargs): + try: + engine = __import__(settings.SESSION_ENGINE, {}, {}, ['']) + except: + import django.contrib.sessions.backends.db + engine = django.contrib.sessions.backends.db + session_data = engine.SessionStore(request.POST.get('session_key')) + user_id = session_data['_auth_user_id'] + #will return 404 if the session ID does not resolve to a valid user + request.user = get_object_or_404(User, pk=user_id) + return function(request, *args, **kwargs) + return decorator + + diff --git a/apps/filebrowser/fb_settings.py b/apps/filebrowser/fb_settings.py new file mode 100755 index 00000000..502f109f --- /dev/null +++ b/apps/filebrowser/fb_settings.py @@ -0,0 +1,109 @@ +# coding: utf-8 + +import os +from django.conf import settings +from django.utils.translation import ugettext_lazy as _ + +# settings for django-tinymce +try: + import tinymce.settings + DEFAULT_URL_TINYMCE = tinymce.settings.JS_BASE_URL + '/' + DEFAULT_PATH_TINYMCE = tinymce.settings.JS_ROOT + '/' +except ImportError: + DEFAULT_URL_TINYMCE = settings.ADMIN_MEDIA_PREFIX + "tinymce/jscripts/tiny_mce/" + DEFAULT_PATH_TINYMCE = os.path.join(settings.MEDIA_ROOT, 'admin/tinymce/jscripts/tiny_mce/') + +# Set to True in order to see the FileObject when Browsing. +DEBUG = getattr(settings, "FILEBROWSER_DEBUG", False) + +# Main Media Settings +MEDIA_ROOT = getattr(settings, "FILEBROWSER_MEDIA_ROOT", settings.MEDIA_ROOT) +MEDIA_URL = getattr(settings, "FILEBROWSER_MEDIA_URL", settings.MEDIA_URL) + +# Main FileBrowser Directory. This has to be a directory within MEDIA_ROOT. +# Leave empty in order to browse all files under MEDIA_ROOT. +# DO NOT USE A SLASH AT THE BEGINNING, DO NOT FORGET THE TRAILING SLASH AT THE END. +DIRECTORY = getattr(settings, "FILEBROWSER_DIRECTORY", 'uploads/') + +# The URL/PATH to your filebrowser media-files. +URL_FILEBROWSER_MEDIA = getattr(settings, "FILEBROWSER_URL_FILEBROWSER_MEDIA", "/media/filebrowser/") +PATH_FILEBROWSER_MEDIA = getattr(settings, "FILEBROWSER_PATH_FILEBROWSER_MEDIA", os.path.join(settings.MEDIA_ROOT, 'filebrowser/')) + +# The URL/PATH to your TinyMCE Installation. +URL_TINYMCE = getattr(settings, "FILEBROWSER_URL_TINYMCE", DEFAULT_URL_TINYMCE) +PATH_TINYMCE = getattr(settings, "FILEBROWSER_PATH_TINYMCE", DEFAULT_PATH_TINYMCE) + +# Allowed Extensions for File Upload. Lower case is important. +# Please be aware that there are Icons for the default extension settings. +# Therefore, if you add a category (e.g. "Misc"), you won't get an icon. +EXTENSIONS = getattr(settings, "FILEBROWSER_EXTENSIONS", { + 'Folder': [''], + 'Image': ['.jpg','.jpeg','.gif','.png','.tif','.tiff'], + 'Video': ['.mov','.wmv','.mpeg','.mpg','.avi','.rm'], + 'Document': ['.pdf','.doc','.rtf','.txt','.xls','.csv'], + 'Sound': ['.mp3','.mp4','.wav','.aiff','.midi','.m4p'], + 'Code': ['.html','.py','.js','.css'] +}) + +# Define different formats for allowed selections. +# This has to be a subset of EXTENSIONS. +SELECT_FORMATS = getattr(settings, "FILEBROWSER_SELECT_FORMATS", { + 'File': ['Folder','Document',], + 'Image': ['Image'], + 'Media': ['Video','Sound'], + 'Document': ['Document'], + # for TinyMCE we can also define lower-case items + 'image': ['Image'], + 'file': ['Folder','Image','Document',], +}) + +# Directory to Save Image Versions (and Thumbnails). Relative to MEDIA_ROOT. +# If no directory is given, versions are stored within the Image directory. +# VERSION URL: VERSIONS_BASEDIR/original_path/originalfilename_versionsuffix.extension +VERSIONS_BASEDIR = getattr(settings, 'FILEBROWSER_VERSIONS_BASEDIR', '') +# Versions Format. Available Attributes: verbose_name, width, height, opts +VERSIONS = getattr(settings, "FILEBROWSER_VERSIONS", { + 'fb_thumb': {'verbose_name': 'Admin Thumbnail', 'width': 60, 'height': 60, 'opts': 'crop upscale'}, + 'thumbnail': {'verbose_name': 'Thumbnail (140px)', 'width': 140, 'height': '', 'opts': ''}, + 'small': {'verbose_name': 'Small (300px)', 'width': 300, 'height': '', 'opts': ''}, + 'medium': {'verbose_name': 'Medium (460px)', 'width': 460, 'height': '', 'opts': ''}, + 'big': {'verbose_name': 'Big (620px)', 'width': 620, 'height': '', 'opts': ''}, + 'cropped': {'verbose_name': 'Cropped (60x60px)', 'width': 60, 'height': 60, 'opts': 'crop'}, + 'croppedthumbnail': {'verbose_name': 'Cropped Thumbnail (140x140px)', 'width': 140, 'height': 140, 'opts': 'crop'}, +}) +# Versions available within the Admin-Interface. +ADMIN_VERSIONS = getattr(settings, 'FILEBROWSER_ADMIN_VERSIONS', ['thumbnail','small', 'medium','big']) +# Which Version should be used as Admin-thumbnail. +ADMIN_THUMBNAIL = getattr(settings, 'FILEBROWSER_ADMIN_THUMBNAIL', 'fb_thumb') + +# EXTRA SETTINGS +# True to save the URL including MEDIA_URL to your model fields +# or False (default) to save path relative to MEDIA_URL. +# Note: Full URL does not necessarily means absolute URL. +SAVE_FULL_URL = getattr(settings, "FILEBROWSER_SAVE_FULL_URL", True) +# If set to True, the FileBrowser will not try to import a mis-installed PIL. +STRICT_PIL = getattr(settings, 'FILEBROWSER_STRICT_PIL', False) +# PIL's Error "Suspension not allowed here" work around: +# s. http://mail.python.org/pipermail/image-sig/1999-August/000816.html +IMAGE_MAXBLOCK = getattr(settings, 'FILEBROWSER_IMAGE_MAXBLOCK', 1024*1024) +# Exclude files matching any of the following regular expressions +# Default is to exclude 'thumbnail' style naming of image-thumbnails. +EXTENSION_LIST = [] +for exts in EXTENSIONS.values(): + EXTENSION_LIST += exts +EXCLUDE = getattr(settings, 'FILEBROWSER_EXCLUDE', (r'_(%(exts)s)_.*_q\d{1,3}\.(%(exts)s)' % {'exts': ('|'.join(EXTENSION_LIST))},)) +# Max. Upload Size in Bytes. +MAX_UPLOAD_SIZE = getattr(settings, "FILEBROWSER_MAX_UPLOAD_SIZE", 10485760) +# Convert Filename (replace spaces and convert to lowercase) +CONVERT_FILENAME = getattr(settings, "FILEBROWSER_CONVERT_FILENAME", True) + +# EXTRA TRANSLATION STRINGS +# The following strings are not availabe within views or templates +_('Folder') +_('Image') +_('Video') +_('Document') +_('Sound') +_('Code') + + diff --git a/apps/filebrowser/fields.py b/apps/filebrowser/fields.py new file mode 100644 index 00000000..85e981b9 --- /dev/null +++ b/apps/filebrowser/fields.py @@ -0,0 +1,121 @@ +# coding: utf-8 + +import os + +# django imports +from django.db import models +from django import forms +from django.forms.widgets import Input +from django.db.models.fields import Field, CharField +from django.utils.encoding import force_unicode +from django.template.loader import render_to_string +from django.utils.translation import ugettext_lazy as _ + +# filebrowser imports +from filebrowser.functions import _url_to_path, _dir_from_url, _get_version_path, _url_join +from filebrowser.fb_settings import * +from filebrowser.base import FileObject + +class FileBrowseWidget(Input): + input_type = 'text' + + class Media: + js = (os.path.join(URL_FILEBROWSER_MEDIA, 'js/AddFileBrowser.js'), ) + + def __init__(self, attrs=None): + self.directory = attrs.get('directory', '') + self.extensions = attrs.get('extensions', '') + self.format = attrs.get('format', '') + if attrs is not None: + self.attrs = attrs.copy() + else: + self.attrs = {} + + def render(self, name, value, attrs=None): + if value is None: + value = "" + final_attrs = self.build_attrs(attrs, type=self.input_type, name=name) + final_attrs['search_icon'] = URL_FILEBROWSER_MEDIA + 'img/filebrowser_icon_show.gif' + final_attrs['directory'] = self.directory + final_attrs['extensions'] = self.extensions + final_attrs['format'] = self.format + final_attrs['ADMIN_THUMBNAIL'] = ADMIN_THUMBNAIL + final_attrs['DEBUG'] = DEBUG + if value != "": + try: + final_attrs['directory'] = os.path.split(value.path_relative_directory)[0] + except: + pass + return render_to_string("filebrowser/custom_field.html", locals()) + + +class FileBrowseFormField(forms.CharField): + widget = FileBrowseWidget + + default_error_messages = { + 'extension': _(u'Extension %(ext)s is not allowed. Only %(allowed)s is allowed.'), + } + + def __init__(self, max_length=None, min_length=None, + directory=None, extensions=None, format=None, + *args, **kwargs): + self.max_length, self.min_length = max_length, min_length + self.directory = directory + self.extensions = extensions + if format: + self.format = format or '' + self.extensions = extensions or EXTENSIONS.get(format) + super(FileBrowseFormField, self).__init__(*args, **kwargs) + + def clean(self, value): + value = super(FileBrowseFormField, self).clean(value) + if value == '': + return value + file_extension = os.path.splitext(value)[1].lower() + if self.extensions and not file_extension in self.extensions: + raise forms.ValidationError(self.error_messages['extension'] % {'ext': file_extension, 'allowed': ", ".join(self.extensions)}) + return value + + +class FileBrowseField(Field): + __metaclass__ = models.SubfieldBase + + def __init__(self, *args, **kwargs): + self.directory = kwargs.pop('directory', '') + self.extensions = kwargs.pop('extensions', '') + self.format = kwargs.pop('format', '') + return super(FileBrowseField, self).__init__(*args, **kwargs) + + def to_python(self, value): + if not value or isinstance(value, FileObject): + return value + return FileObject(_url_to_path(value)) + + def get_db_prep_value(self, value): + if value is None: + return None + return unicode(value) + + + def get_manipulator_field_objs(self): + return [oldforms.TextField] + + def get_internal_type(self): + return "CharField" + + def formfield(self, **kwargs): + attrs = {} + attrs["directory"] = self.directory + attrs["extensions"] = self.extensions + attrs["format"] = self.format + defaults = { + 'form_class': FileBrowseFormField, + 'widget': FileBrowseWidget(attrs=attrs), + 'directory': self.directory, + 'extensions': self.extensions, + 'format': self.format + } + defaults.update(kwargs) + return super(FileBrowseField, self).formfield(**defaults) + + diff --git a/apps/filebrowser/forms.py b/apps/filebrowser/forms.py new file mode 100644 index 00000000..eef418cc --- /dev/null +++ b/apps/filebrowser/forms.py @@ -0,0 +1,59 @@ +# coding: utf-8 + +import re, os + +from django import forms +from django.forms.formsets import BaseFormSet +from django.utils.translation import ugettext as _ + +# filebrowser imports +from filebrowser.fb_settings import MAX_UPLOAD_SIZE +from filebrowser.functions import _get_file_type, _convert_filename + +alnum_name_re = re.compile(r'^[\sa-zA-Z0-9._/-]+$') + +class MakeDirForm(forms.Form): + """ + Form for creating Directory. + """ + + def __init__(self, path, *args, **kwargs): + self.path = path + super(MakeDirForm, self).__init__(*args, **kwargs) + + dir_name = forms.CharField(widget=forms.TextInput(attrs=dict({ 'class': 'vTextField' }, max_length=50, min_length=3)), label=_(u'Name'), help_text=_(u'Only letters, numbers, underscores, spaces and hyphens are allowed.'), required=True) + + def clean_dir_name(self): + if self.cleaned_data['dir_name']: + # only letters, numbers, underscores, spaces and hyphens are allowed. + if not alnum_name_re.search(self.cleaned_data['dir_name']): + raise forms.ValidationError(_(u'Only letters, numbers, underscores, spaces and hyphens are allowed.')) + # directory must not already exist. + if os.path.isdir(os.path.join(self.path, _convert_filename(self.cleaned_data['dir_name']))): + raise forms.ValidationError(_(u'The Folder already exists.')) + return _convert_filename(self.cleaned_data['dir_name']) + + +class RenameForm(forms.Form): + """ + Form for renaming File/Directory. + """ + + def __init__(self, path, file_extension, *args, **kwargs): + self.path = path + self.file_extension = file_extension + super(RenameForm, self).__init__(*args, **kwargs) + + name = forms.CharField(widget=forms.TextInput(attrs=dict({ 'class': 'vTextField' }, max_length=50, min_length=3)), label=_(u'New Name'), help_text=_('Only letters, numbers, underscores, spaces and hyphens are allowed.'), required=True) + + def clean_name(self): + if self.cleaned_data['name']: + # only letters, numbers, underscores, spaces and hyphens are allowed. + if not alnum_name_re.search(self.cleaned_data['name']): + raise forms.ValidationError(_(u'Only letters, numbers, underscores, spaces and hyphens are allowed.')) + # file/directory must not already exist. + if os.path.isdir(os.path.join(self.path, _convert_filename(self.cleaned_data['name']))) or os.path.isfile(os.path.join(self.path, _convert_filename(self.cleaned_data['name']) + self.file_extension)): + raise forms.ValidationError(_(u'The File/Folder already exists.')) + return _convert_filename(self.cleaned_data['name']) + + diff --git a/apps/filebrowser/functions.py b/apps/filebrowser/functions.py new file mode 100755 index 00000000..cef9dcd9 --- /dev/null +++ b/apps/filebrowser/functions.py @@ -0,0 +1,312 @@ +# coding: utf-8 + +from django.utils.translation import ugettext as _ +from django.utils.safestring import mark_safe +from time import gmtime, strftime, localtime, mktime, time +from django.core.files import File +from django.core.files.storage import default_storage +import os, re, decimal +from urlparse import urlparse + +# filebrowser imports +from filebrowser.fb_settings import * + +# PIL import +if STRICT_PIL: + from PIL import Image +else: + try: + from PIL import Image + except ImportError: + import Image + + +def _url_to_path(value): + """ + Change URL to PATH. + Value has to be an URL relative to MEDIA URL or a full URL (including MEDIA_URL). + + Returns a PATH relative to MEDIA_ROOT. + """ + mediaurl_re = re.compile(r'^(%s)' % (MEDIA_URL)) + value = mediaurl_re.sub('', value) + return value + + +def _path_to_url(value): + """ + Change PATH to URL. + Value has to be a PATH relative to MEDIA_ROOT. + + Return an URL relative to MEDIA_ROOT. + """ + mediaroot_re = re.compile(r'^(%s)' % (MEDIA_ROOT)) + value = mediaroot_re.sub('', value) + return _url_join(MEDIA_URL, value) + + +def _dir_from_url(value): + """ + Get the relative server directory from a URL. + URL has to be an absolute URL including MEDIA_URL or + an URL relative to MEDIA_URL. + """ + + mediaurl_re = re.compile(r'^(%s)' % (MEDIA_URL)) + value = mediaurl_re.sub('', value) + directory_re = re.compile(r'^(%s)' % (DIRECTORY)) + value = directory_re.sub('', value) + return os.path.split(value)[0] + + +def _get_version_path(value, version_prefix): + """ + Construct the PATH to an Image version. + Value has to be server-path, relative to MEDIA_ROOT. + + version_filename = filename + version_prefix + ext + Returns a path relative to MEDIA_ROOT. + """ + if os.path.isfile(os.path.join(MEDIA_ROOT, value)): + path, filename = os.path.split(value) + filename, ext = os.path.splitext(filename) + version_filename = filename + "_" + version_prefix + ext + return os.path.join(VERSIONS_BASEDIR, path, version_filename) + else: + return None + + +def _sort_by_attr(seq, attr): + """ + Sort the sequence of objects by object's attribute + + Arguments: + seq - the list or any sequence (including immutable one) of objects to sort. + attr - the name of attribute to sort by + + Returns: + the sorted list of objects. + """ + import operator + + # Use the "Schwartzian transform" + # Create the auxiliary list of tuples where every i-th tuple has form + # (seq[i].attr, i, seq[i]) and sort it. The second item of tuple is needed not + # only to provide stable sorting, but mainly to eliminate comparison of objects + # (which can be expensive or prohibited) in case of equal attribute values. + intermed = map(None, map(getattr, seq, (attr,)*len(seq)), xrange(len(seq)), seq) + intermed.sort() + return map(operator.getitem, intermed, (-1,) * len(intermed)) + + +def _url_join(*args): + if args[0].startswith("http://"): + url = "http://" + else: + url = "/" + for arg in args: + arg = str(arg).replace("\\", "/") + arg_split = arg.split("/") + for elem in arg_split: + if elem != "" and elem != "http:": + url = url + elem + "/" + # remove trailing slash for filenames + if os.path.splitext(args[-1])[1]: + url = url.rstrip("/") + return url + + +def _get_path(path): + """ + Get Path. + """ + + if os.path.isabs(path) or not os.path.isdir(os.path.join(MEDIA_ROOT, DIRECTORY, path)): + return None + return path + + +def _get_file(path, filename): + """ + Get File. + """ + + if not os.path.isfile(os.path.join(MEDIA_ROOT, DIRECTORY, path, filename)) and not os.path.isdir(os.path.join(MEDIA_ROOT, DIRECTORY, path, filename)): + return None + return filename + + +def _get_breadcrumbs(query, path, title): + """ + Get breadcrumbs. + """ + + breadcrumbs = [] + dir_query = "" + if path: + for item in path.split(os.sep): + dir_query = os.path.join(dir_query,item) + breadcrumbs.append([item,dir_query]) + if title: + breadcrumbs.append([title,'']) + return breadcrumbs + + +def _get_filterdate(filterDate, dateTime): + """ + Get filterdate. + """ + + returnvalue = '' + dateYear = strftime("%Y", gmtime(dateTime)) + dateMonth = strftime("%m", gmtime(dateTime)) + dateDay = strftime("%d", gmtime(dateTime)) + if filterDate == 'today' and int(dateYear) == int(localtime()[0]) and int(dateMonth) == int(localtime()[1]) and int(dateDay) == int(localtime()[2]): returnvalue = 'true' + elif filterDate == 'thismonth' and dateTime >= time()-2592000: returnvalue = 'true' + elif filterDate == 'thisyear' and int(dateYear) == int(localtime()[0]): returnvalue = 'true' + elif filterDate == 'past7days' and dateTime >= time()-604800: returnvalue = 'true' + elif filterDate == '': returnvalue = 'true' + return returnvalue + + +def _get_settings_var(): + """ + Get settings variables used for FileBrowser listing. + """ + + settings_var = {} + # Main + settings_var['DEBUG'] = DEBUG + settings_var['MEDIA_ROOT'] = MEDIA_ROOT + settings_var['MEDIA_URL'] = MEDIA_URL + settings_var['DIRECTORY'] = DIRECTORY + # FileBrowser + settings_var['URL_FILEBROWSER_MEDIA'] = URL_FILEBROWSER_MEDIA + settings_var['PATH_FILEBROWSER_MEDIA'] = PATH_FILEBROWSER_MEDIA + # TinyMCE + settings_var['URL_TINYMCE'] = URL_TINYMCE + settings_var['PATH_TINYMCE'] = PATH_TINYMCE + # Extensions/Formats (for FileBrowseField) + settings_var['EXTENSIONS'] = EXTENSIONS + settings_var['SELECT_FORMATS'] = SELECT_FORMATS + # Versions + settings_var['VERSIONS_BASEDIR'] = VERSIONS_BASEDIR + settings_var['VERSIONS'] = VERSIONS + settings_var['ADMIN_VERSIONS'] = ADMIN_VERSIONS + settings_var['ADMIN_THUMBNAIL'] = ADMIN_THUMBNAIL + # FileBrowser Options + settings_var['MAX_UPLOAD_SIZE'] = MAX_UPLOAD_SIZE + # Convert Filenames + settings_var['CONVERT_FILENAME'] = CONVERT_FILENAME + return settings_var + + +def _handle_file_upload(path, file): + """ + Handle File Upload. + """ + + file_path = os.path.join(path, file.name) + uploadedfile = default_storage.save(file_path, file) + return uploadedfile + + +def _get_file_type(filename): + """ + Get file type as defined in EXTENSIONS. + """ + + file_extension = os.path.splitext(filename)[1].lower() + file_type = '' + for k,v in EXTENSIONS.iteritems(): + for extension in v: + if file_extension == extension.lower(): + file_type = k + return file_type + + +def _is_selectable(filename, selecttype): + """ + Get select type as defined in FORMATS. + """ + + file_extension = os.path.splitext(filename)[1].lower() + select_types = [] + for k,v in SELECT_FORMATS.iteritems(): + for extension in v: + if file_extension == extension.lower(): + select_types.append(k) + return select_types + + +def _version_generator(value, version_prefix, force=None): + """ + Generate Version for an Image. + value has to be a serverpath relative to MEDIA_ROOT. + """ + + # PIL's Error "Suspension not allowed here" work around: + # s. http://mail.python.org/pipermail/image-sig/1999-August/000816.html + if STRICT_PIL: + from PIL import ImageFile + else: + try: + from PIL import ImageFile + except ImportError: + import ImageFile + ImageFile.MAXBLOCK = IMAGE_MAXBLOCK # default is 64k + + try: + im = Image.open(os.path.join(MEDIA_ROOT, value)) + version_path = _get_version_path(value, version_prefix) + absolute_version_path = os.path.join(MEDIA_ROOT, version_path) + version_dir = os.path.split(absolute_version_path)[0] + if not os.path.isdir(version_dir): + os.makedirs(version_dir) + os.chmod(version_dir, 0775) + version = scale_and_crop(im, VERSIONS[version_prefix]['width'], VERSIONS[version_prefix]['height'], VERSIONS[version_prefix]['opts']) + try: + version.save(absolute_version_path, quality=90, optimize=1) + except IOError: + version.save(absolute_version_path, quality=90) + return version_path + except: + return None + + +def scale_and_crop(im, width, height, opts): + x, y = [float(v) for v in im.size] + if width: + xr = float(width) + else: + xr = float(x*height/y) + if height: + yr = float(height) + else: + yr = float(y*width/x) + + if 'crop' in opts: + r = max(xr/x, yr/y) + else: + r = min(xr/x, yr/y) + + if r < 1.0 or (r > 1.0 and 'upscale' in opts): + im = im.resize((int(x*r), int(y*r)), resample=Image.ANTIALIAS) + + if 'crop' in opts: + x, y = [float(v) for v in im.size] + ex, ey = (x-min(x, xr))/2, (y-min(y, yr))/2 + if ex or ey: + im = im.crop((int(ex), int(ey), int(x-ex), int(y-ey))) + return im +scale_and_crop.valid_options = ('crop', 'upscale') + + +def _convert_filename(value): + if CONVERT_FILENAME: + return value.replace(" ", "_").lower() + else: + return value + + + diff --git a/apps/filebrowser/locale/.svn/all-wcprops b/apps/filebrowser/locale/.svn/all-wcprops new file mode 100644 index 00000000..5b72659b --- /dev/null +++ b/apps/filebrowser/locale/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 59 +/svn/!svn/ver/462/branches/filebrowser_3/filebrowser/locale +END diff --git a/apps/filebrowser/locale/.svn/entries b/apps/filebrowser/locale/.svn/entries new file mode 100644 index 00000000..ab051086 --- /dev/null +++ b/apps/filebrowser/locale/.svn/entries @@ -0,0 +1,61 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/locale +http://django-filebrowser.googlecode.com/svn + + + +2009-10-12T17:44:24.405122Z +462 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +zh_CN +dir + +sr_Latn +dir + +ca +dir + +sr +dir + +ru +dir + +es +dir + +fr +dir + +de +dir + +nl +dir + +zh_TW +dir + +it +dir + diff --git a/apps/filebrowser/locale/ca/.svn/all-wcprops b/apps/filebrowser/locale/ca/.svn/all-wcprops new file mode 100644 index 00000000..761a7e49 --- /dev/null +++ b/apps/filebrowser/locale/ca/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 62 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/ca +END diff --git a/apps/filebrowser/locale/ca/.svn/entries b/apps/filebrowser/locale/ca/.svn/entries new file mode 100644 index 00000000..8b3f6316 --- /dev/null +++ b/apps/filebrowser/locale/ca/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/locale/ca +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +LC_MESSAGES +dir + diff --git a/apps/filebrowser/locale/ca/LC_MESSAGES/.svn/all-wcprops b/apps/filebrowser/locale/ca/LC_MESSAGES/.svn/all-wcprops new file mode 100644 index 00000000..e43f6274 --- /dev/null +++ b/apps/filebrowser/locale/ca/LC_MESSAGES/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/ca/LC_MESSAGES +END +django.po +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/ca/LC_MESSAGES/django.po +END +django.mo +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/ca/LC_MESSAGES/django.mo +END diff --git a/apps/filebrowser/locale/ca/LC_MESSAGES/.svn/entries b/apps/filebrowser/locale/ca/LC_MESSAGES/.svn/entries new file mode 100644 index 00000000..b2b21a1c --- /dev/null +++ b/apps/filebrowser/locale/ca/LC_MESSAGES/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/locale/ca/LC_MESSAGES +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +django.po +file + + + + +2009-11-05T20:58:48.000000Z +5177a8265e2b6d81e88ed3f89978397f +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +8223 + +django.mo +file + + + + +2009-11-05T20:58:48.000000Z +a590980c42b4d9b72421220166c349da +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +5071 + diff --git a/apps/filebrowser/locale/ca/LC_MESSAGES/.svn/prop-base/django.mo.svn-base b/apps/filebrowser/locale/ca/LC_MESSAGES/.svn/prop-base/django.mo.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/locale/ca/LC_MESSAGES/.svn/prop-base/django.mo.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/locale/ca/LC_MESSAGES/.svn/text-base/django.mo.svn-base b/apps/filebrowser/locale/ca/LC_MESSAGES/.svn/text-base/django.mo.svn-base new file mode 100644 index 00000000..bd8106d7 Binary files /dev/null and b/apps/filebrowser/locale/ca/LC_MESSAGES/.svn/text-base/django.mo.svn-base differ diff --git a/apps/filebrowser/locale/ca/LC_MESSAGES/.svn/text-base/django.po.svn-base b/apps/filebrowser/locale/ca/LC_MESSAGES/.svn/text-base/django.po.svn-base new file mode 100644 index 00000000..0dca85e1 --- /dev/null +++ b/apps/filebrowser/locale/ca/LC_MESSAGES/.svn/text-base/django.po.svn-base @@ -0,0 +1,328 @@ +# translation of django.po to Catalan +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# PATRICK KRANZLMUELLER , 2009. +# Antoni Aloy , 2009. +msgid "" +msgstr "" +"Project-Id-Version: django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 21:24+0000\n" +"PO-Revision-Date: 2009-02-15 19:00+0100\n" +"Last-Translator: Antoni Aloy \n" +"Language-Team: Catalan \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: fields.py:27 +#, python-format +msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." +msgstr "" +"Confirma que aquest valor té com a màxim %(max)d caràcters (té longitud %" +"(length)d)." + +#: fields.py:28 +#, python-format +msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." +msgstr "" +"Confirma que aquest valor té com a mínim %(min)d caràcters (té longitud %" +"(length)d)." + +#: fields.py:29 +#, python-format +msgid "Extension %(ext)s is not allowed. Only %(allowed)s is allowed." +msgstr "" +"L'extensió %(ext)s no està permesa. Sols es permeten les extensions %" +"(allowed)s." + +#: forms.py:23 +msgid "Name" +msgstr "Nom" + +#: forms.py:23 forms.py:46 +msgid "" +"The Name will automatically be converted to lowercase. Only letters, " +"numbers, underscores and hyphens are allowed." +msgstr "" +"El nom serà convertit automàticament a minúscules. Sols estan permeses le " +"lletres, nombres, subratllats i guions." + +#: forms.py:30 forms.py:53 +msgid "Only letters, numbers, underscores and hyphens are allowed." +msgstr "Sols es permeten lletres, nombres, subratllats i guions." + +#: forms.py:33 +msgid "The Folder already exists." +msgstr "La carpeta ja existeix." + +#: forms.py:46 +msgid "New Name" +msgstr "Nou nom" + +#: forms.py:56 +msgid "The File/Folder already exists." +msgstr "La carpeta/arixu ja existeix" + +#: forms.py:92 +msgid "File" +msgstr "Arxiu" + +#: forms.py:93 +msgid "Use Image Generator" +msgstr "Fer servir el generador d'imatges" + +#: forms.py:102 +msgid "File already exists." +msgstr "L'arxiu ja existeix" + +#: forms.py:108 +msgid "Filename is not allowed." +msgstr "El nom d'arxiu no està permès" + +#: forms.py:113 +msgid "File extension is not allowed." +msgstr "L'extensió de l'arxiu no està permesa" + +#: forms.py:118 +msgid "Filesize exceeds allowed Upload Size." +msgstr "El tamany de l'arxiu supera el límit permès" + +#: functions.py:84 +msgid "Home" +msgstr "Inici" + +#: functions.py:276 +msgid "Thumbnail creation failed." +msgstr "Ha fallat la creació de la miniatura" + +#: functions.py:331 functions.py:398 +msgid "Image creation failed." +msgstr "La creació de la imatge ha fallat" + +#: views.py:165 +msgid "FileBrowser" +msgstr "Visor d'arxius" + +#: views.py:188 +#, python-format +msgid "The Folder %s was successfully created." +msgstr "La carpeta %s ha estat creada amb èxit." + +#: views.py:194 +msgid "Permission denied." +msgstr "Permís denegat." + +#: views.py:196 +msgid "Error creating directory." +msgstr "Error creant el directori." + +#: views.py:204 views.py:205 templates/filebrowser/index.html:30 +msgid "New Folder" +msgstr "Nova carpeta" + +#: views.py:250 +msgid "Upload successful." +msgstr "Pujada completada" + +#: views.py:263 templates/filebrowser/index.html:33 +#: templates/filebrowser/upload.html:62 +msgid "Upload" +msgstr "Pujar" + +#: views.py:264 +msgid "Select files to upload" +msgstr "Selecciona arxius a pujar." + +#: views.py:294 +msgid "Thumbnail creation successful." +msgstr "S'han creat les miniatures satisfactòriament." + +#: views.py:344 +#, python-format +msgid "The file %s was successfully deleted." +msgstr "L'arxiu %s ha estat borrat amb èxit." + +#: views.py:356 +#, python-format +msgid "The directory %s was successfully deleted." +msgstr "El directori %s ha estat borrat amb èxit." + +#: views.py:407 +msgid "Error renaming Thumbnail." +msgstr "Error reanomenant la miniatura" + +#: views.py:413 +msgid "Renaming was successful." +msgstr "El canvi de nom ha tingut èxit." + +#: views.py:418 +msgid "Error." +msgstr "Error." + +#: views.py:427 templates/filebrowser/include/filelisting.html:52 +msgid "Rename" +msgstr "Reanomenar" + +#: views.py:428 +#, python-format +msgid "Rename \"%s\"" +msgstr "Reanomena \"%s\"" + +#: views.py:465 +msgid "Successfully generated Images." +msgstr "Imatges generades satisfactòriament." + +#: templates/filebrowser/index.html:31 +msgid "Make Thumbs" +msgstr "Crear miniatures" + +#: templates/filebrowser/index.html:32 +msgid "Generate Images" +msgstr "Generar imatges" + +#: templates/filebrowser/makedir.html:24 templates/filebrowser/rename.html:22 +msgid "Please correct the following errors." +msgstr "Per favor, corregeix els següents errors" + +#: templates/filebrowser/makedir.html:34 templates/filebrowser/rename.html:33 +msgid "Submit" +msgstr "Enviar" + +#: templates/filebrowser/upload.html:37 +msgid "Will use image generator." +msgstr "Usaré el generador d'imatges" + +#: templates/filebrowser/upload.html:47 +msgid "Help" +msgstr "Ajuda" + +#: templates/filebrowser/upload.html:51 +msgid "Allowed" +msgstr "Permès" + +#: templates/filebrowser/upload.html:57 +msgid "Max. Filesize" +msgstr "Tamay màxim" + +#: templates/filebrowser/include/filelisting.html:8 +msgid "Select" +msgstr "Selecciona" + +#: templates/filebrowser/include/filelisting.html:15 +msgid "Select File" +msgstr "Selecciona fitxer" + +#: templates/filebrowser/include/filelisting.html:26 +msgid "Make Thumbnail" +msgstr "Crear miniatura" + +#: templates/filebrowser/include/filelisting.html:29 +msgid "View Image" +msgstr "Veure imatge" + +#: templates/filebrowser/include/filelisting.html:46 +msgid "Generate Image Versions" +msgstr "Generar versions de la imatge" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Are you sure you want to delete this file?" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Delete File" +msgstr "Esborrar fitxer" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Are you sure you want to delete this Folder?" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Delete Folder" +msgstr "Esborrar carpeta" + +#: templates/filebrowser/include/filter.html:15 +msgid "Filter" +msgstr "Filtrar" + +#: templates/filebrowser/include/filter.html:21 +msgid "By Date" +msgstr "Per data" + +#: templates/filebrowser/include/filter.html:23 +msgid "Any Date" +msgstr "Qualsevol data" + +#: templates/filebrowser/include/filter.html:25 +msgid "Today" +msgstr "Avui" + +#: templates/filebrowser/include/filter.html:27 +msgid "Past 7 days" +msgstr "Fa 7 dies" + +#: templates/filebrowser/include/filter.html:29 +msgid "Past 30 days" +msgstr "Fa 30 dies" + +#: templates/filebrowser/include/filter.html:31 +msgid "This year" +msgstr "Enguany" + +#: templates/filebrowser/include/filter.html:39 +msgid "By Type" +msgstr "Per tipus" + +#: templates/filebrowser/include/filter.html:41 +msgid "All" +msgstr "Tots" + +#: templates/filebrowser/include/paginator.html:5 +msgid "No Items Found." +msgstr "No s'han trobat items" + +#: templates/filebrowser/include/paginator.html:10 +#, python-format +msgid "%(counter)s Item" +msgid_plural "%(counter)s Items" +msgstr[0] "%(counter)s Item" +msgstr[1] "%(counter)s Item" + +#: templates/filebrowser/include/paginator.html:16 +msgid "No Items." +msgstr "No hi ha items" + +#: templates/filebrowser/include/tableheader.html:13 +#: templates/filebrowser/include/tableheader.html:14 +msgid "Filename" +msgstr "Nom de fitxer" + +#: templates/filebrowser/include/tableheader.html:20 +#: templates/filebrowser/include/tableheader.html:21 +msgid "Size" +msgstr "Tamany" + +#: templates/filebrowser/include/tableheader.html:23 +#: templates/filebrowser/include/tableheader.html:24 +msgid "Date" +msgstr "Data" + +#: templates/filebrowser/include/toolbar.html:14 +msgid "Go" +msgstr "Ves" + +#: templates/filebrowser/include/toolbar.html:16 +#, python-format +msgid "%(counter)s Item found" +msgid_plural "%(counter)s Items found" +msgstr[0] "%(counter)s trobat" +msgstr[1] "%(counter)s trobats" + +#: templates/filebrowser/include/toolbar.html:17 +#, python-format +msgid "%(counter)s Item total" +msgid_plural "%(counter)s Items total" +msgstr[0] "total %(counter)s item" +msgstr[1] "total %(counter)s Items" diff --git a/apps/filebrowser/locale/ca/LC_MESSAGES/django.mo b/apps/filebrowser/locale/ca/LC_MESSAGES/django.mo new file mode 100644 index 00000000..bd8106d7 Binary files /dev/null and b/apps/filebrowser/locale/ca/LC_MESSAGES/django.mo differ diff --git a/apps/filebrowser/locale/ca/LC_MESSAGES/django.po b/apps/filebrowser/locale/ca/LC_MESSAGES/django.po new file mode 100644 index 00000000..0dca85e1 --- /dev/null +++ b/apps/filebrowser/locale/ca/LC_MESSAGES/django.po @@ -0,0 +1,328 @@ +# translation of django.po to Catalan +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# PATRICK KRANZLMUELLER , 2009. +# Antoni Aloy , 2009. +msgid "" +msgstr "" +"Project-Id-Version: django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 21:24+0000\n" +"PO-Revision-Date: 2009-02-15 19:00+0100\n" +"Last-Translator: Antoni Aloy \n" +"Language-Team: Catalan \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: fields.py:27 +#, python-format +msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." +msgstr "" +"Confirma que aquest valor té com a màxim %(max)d caràcters (té longitud %" +"(length)d)." + +#: fields.py:28 +#, python-format +msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." +msgstr "" +"Confirma que aquest valor té com a mínim %(min)d caràcters (té longitud %" +"(length)d)." + +#: fields.py:29 +#, python-format +msgid "Extension %(ext)s is not allowed. Only %(allowed)s is allowed." +msgstr "" +"L'extensió %(ext)s no està permesa. Sols es permeten les extensions %" +"(allowed)s." + +#: forms.py:23 +msgid "Name" +msgstr "Nom" + +#: forms.py:23 forms.py:46 +msgid "" +"The Name will automatically be converted to lowercase. Only letters, " +"numbers, underscores and hyphens are allowed." +msgstr "" +"El nom serà convertit automàticament a minúscules. Sols estan permeses le " +"lletres, nombres, subratllats i guions." + +#: forms.py:30 forms.py:53 +msgid "Only letters, numbers, underscores and hyphens are allowed." +msgstr "Sols es permeten lletres, nombres, subratllats i guions." + +#: forms.py:33 +msgid "The Folder already exists." +msgstr "La carpeta ja existeix." + +#: forms.py:46 +msgid "New Name" +msgstr "Nou nom" + +#: forms.py:56 +msgid "The File/Folder already exists." +msgstr "La carpeta/arixu ja existeix" + +#: forms.py:92 +msgid "File" +msgstr "Arxiu" + +#: forms.py:93 +msgid "Use Image Generator" +msgstr "Fer servir el generador d'imatges" + +#: forms.py:102 +msgid "File already exists." +msgstr "L'arxiu ja existeix" + +#: forms.py:108 +msgid "Filename is not allowed." +msgstr "El nom d'arxiu no està permès" + +#: forms.py:113 +msgid "File extension is not allowed." +msgstr "L'extensió de l'arxiu no està permesa" + +#: forms.py:118 +msgid "Filesize exceeds allowed Upload Size." +msgstr "El tamany de l'arxiu supera el límit permès" + +#: functions.py:84 +msgid "Home" +msgstr "Inici" + +#: functions.py:276 +msgid "Thumbnail creation failed." +msgstr "Ha fallat la creació de la miniatura" + +#: functions.py:331 functions.py:398 +msgid "Image creation failed." +msgstr "La creació de la imatge ha fallat" + +#: views.py:165 +msgid "FileBrowser" +msgstr "Visor d'arxius" + +#: views.py:188 +#, python-format +msgid "The Folder %s was successfully created." +msgstr "La carpeta %s ha estat creada amb èxit." + +#: views.py:194 +msgid "Permission denied." +msgstr "Permís denegat." + +#: views.py:196 +msgid "Error creating directory." +msgstr "Error creant el directori." + +#: views.py:204 views.py:205 templates/filebrowser/index.html:30 +msgid "New Folder" +msgstr "Nova carpeta" + +#: views.py:250 +msgid "Upload successful." +msgstr "Pujada completada" + +#: views.py:263 templates/filebrowser/index.html:33 +#: templates/filebrowser/upload.html:62 +msgid "Upload" +msgstr "Pujar" + +#: views.py:264 +msgid "Select files to upload" +msgstr "Selecciona arxius a pujar." + +#: views.py:294 +msgid "Thumbnail creation successful." +msgstr "S'han creat les miniatures satisfactòriament." + +#: views.py:344 +#, python-format +msgid "The file %s was successfully deleted." +msgstr "L'arxiu %s ha estat borrat amb èxit." + +#: views.py:356 +#, python-format +msgid "The directory %s was successfully deleted." +msgstr "El directori %s ha estat borrat amb èxit." + +#: views.py:407 +msgid "Error renaming Thumbnail." +msgstr "Error reanomenant la miniatura" + +#: views.py:413 +msgid "Renaming was successful." +msgstr "El canvi de nom ha tingut èxit." + +#: views.py:418 +msgid "Error." +msgstr "Error." + +#: views.py:427 templates/filebrowser/include/filelisting.html:52 +msgid "Rename" +msgstr "Reanomenar" + +#: views.py:428 +#, python-format +msgid "Rename \"%s\"" +msgstr "Reanomena \"%s\"" + +#: views.py:465 +msgid "Successfully generated Images." +msgstr "Imatges generades satisfactòriament." + +#: templates/filebrowser/index.html:31 +msgid "Make Thumbs" +msgstr "Crear miniatures" + +#: templates/filebrowser/index.html:32 +msgid "Generate Images" +msgstr "Generar imatges" + +#: templates/filebrowser/makedir.html:24 templates/filebrowser/rename.html:22 +msgid "Please correct the following errors." +msgstr "Per favor, corregeix els següents errors" + +#: templates/filebrowser/makedir.html:34 templates/filebrowser/rename.html:33 +msgid "Submit" +msgstr "Enviar" + +#: templates/filebrowser/upload.html:37 +msgid "Will use image generator." +msgstr "Usaré el generador d'imatges" + +#: templates/filebrowser/upload.html:47 +msgid "Help" +msgstr "Ajuda" + +#: templates/filebrowser/upload.html:51 +msgid "Allowed" +msgstr "Permès" + +#: templates/filebrowser/upload.html:57 +msgid "Max. Filesize" +msgstr "Tamay màxim" + +#: templates/filebrowser/include/filelisting.html:8 +msgid "Select" +msgstr "Selecciona" + +#: templates/filebrowser/include/filelisting.html:15 +msgid "Select File" +msgstr "Selecciona fitxer" + +#: templates/filebrowser/include/filelisting.html:26 +msgid "Make Thumbnail" +msgstr "Crear miniatura" + +#: templates/filebrowser/include/filelisting.html:29 +msgid "View Image" +msgstr "Veure imatge" + +#: templates/filebrowser/include/filelisting.html:46 +msgid "Generate Image Versions" +msgstr "Generar versions de la imatge" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Are you sure you want to delete this file?" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Delete File" +msgstr "Esborrar fitxer" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Are you sure you want to delete this Folder?" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Delete Folder" +msgstr "Esborrar carpeta" + +#: templates/filebrowser/include/filter.html:15 +msgid "Filter" +msgstr "Filtrar" + +#: templates/filebrowser/include/filter.html:21 +msgid "By Date" +msgstr "Per data" + +#: templates/filebrowser/include/filter.html:23 +msgid "Any Date" +msgstr "Qualsevol data" + +#: templates/filebrowser/include/filter.html:25 +msgid "Today" +msgstr "Avui" + +#: templates/filebrowser/include/filter.html:27 +msgid "Past 7 days" +msgstr "Fa 7 dies" + +#: templates/filebrowser/include/filter.html:29 +msgid "Past 30 days" +msgstr "Fa 30 dies" + +#: templates/filebrowser/include/filter.html:31 +msgid "This year" +msgstr "Enguany" + +#: templates/filebrowser/include/filter.html:39 +msgid "By Type" +msgstr "Per tipus" + +#: templates/filebrowser/include/filter.html:41 +msgid "All" +msgstr "Tots" + +#: templates/filebrowser/include/paginator.html:5 +msgid "No Items Found." +msgstr "No s'han trobat items" + +#: templates/filebrowser/include/paginator.html:10 +#, python-format +msgid "%(counter)s Item" +msgid_plural "%(counter)s Items" +msgstr[0] "%(counter)s Item" +msgstr[1] "%(counter)s Item" + +#: templates/filebrowser/include/paginator.html:16 +msgid "No Items." +msgstr "No hi ha items" + +#: templates/filebrowser/include/tableheader.html:13 +#: templates/filebrowser/include/tableheader.html:14 +msgid "Filename" +msgstr "Nom de fitxer" + +#: templates/filebrowser/include/tableheader.html:20 +#: templates/filebrowser/include/tableheader.html:21 +msgid "Size" +msgstr "Tamany" + +#: templates/filebrowser/include/tableheader.html:23 +#: templates/filebrowser/include/tableheader.html:24 +msgid "Date" +msgstr "Data" + +#: templates/filebrowser/include/toolbar.html:14 +msgid "Go" +msgstr "Ves" + +#: templates/filebrowser/include/toolbar.html:16 +#, python-format +msgid "%(counter)s Item found" +msgid_plural "%(counter)s Items found" +msgstr[0] "%(counter)s trobat" +msgstr[1] "%(counter)s trobats" + +#: templates/filebrowser/include/toolbar.html:17 +#, python-format +msgid "%(counter)s Item total" +msgid_plural "%(counter)s Items total" +msgstr[0] "total %(counter)s item" +msgstr[1] "total %(counter)s Items" diff --git a/apps/filebrowser/locale/de/.svn/all-wcprops b/apps/filebrowser/locale/de/.svn/all-wcprops new file mode 100644 index 00000000..b313eb3c --- /dev/null +++ b/apps/filebrowser/locale/de/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 62 +/svn/!svn/ver/462/branches/filebrowser_3/filebrowser/locale/de +END diff --git a/apps/filebrowser/locale/de/.svn/entries b/apps/filebrowser/locale/de/.svn/entries new file mode 100644 index 00000000..a9f5cc19 --- /dev/null +++ b/apps/filebrowser/locale/de/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/locale/de +http://django-filebrowser.googlecode.com/svn + + + +2009-10-12T17:44:24.405122Z +462 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +LC_MESSAGES +dir + diff --git a/apps/filebrowser/locale/de/LC_MESSAGES/.svn/all-wcprops b/apps/filebrowser/locale/de/LC_MESSAGES/.svn/all-wcprops new file mode 100644 index 00000000..3186a89c --- /dev/null +++ b/apps/filebrowser/locale/de/LC_MESSAGES/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/462/branches/filebrowser_3/filebrowser/locale/de/LC_MESSAGES +END +django.po +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/462/branches/filebrowser_3/filebrowser/locale/de/LC_MESSAGES/django.po +END +django.mo +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/de/LC_MESSAGES/django.mo +END diff --git a/apps/filebrowser/locale/de/LC_MESSAGES/.svn/entries b/apps/filebrowser/locale/de/LC_MESSAGES/.svn/entries new file mode 100644 index 00000000..3839a411 --- /dev/null +++ b/apps/filebrowser/locale/de/LC_MESSAGES/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/locale/de/LC_MESSAGES +http://django-filebrowser.googlecode.com/svn + + + +2009-10-12T17:44:24.405122Z +462 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +django.po +file + + + + +2009-11-05T20:58:49.000000Z +008361dcab7ab7869b3edd132067a024 +2009-10-12T17:44:24.405122Z +462 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +7694 + +django.mo +file + + + + +2009-11-05T20:58:49.000000Z +8712cac8b64509ad98a1ff9078bb8ccd +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +5665 + diff --git a/apps/filebrowser/locale/de/LC_MESSAGES/.svn/prop-base/django.mo.svn-base b/apps/filebrowser/locale/de/LC_MESSAGES/.svn/prop-base/django.mo.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/locale/de/LC_MESSAGES/.svn/prop-base/django.mo.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/locale/de/LC_MESSAGES/.svn/text-base/django.mo.svn-base b/apps/filebrowser/locale/de/LC_MESSAGES/.svn/text-base/django.mo.svn-base new file mode 100644 index 00000000..f15bd215 Binary files /dev/null and b/apps/filebrowser/locale/de/LC_MESSAGES/.svn/text-base/django.mo.svn-base differ diff --git a/apps/filebrowser/locale/de/LC_MESSAGES/.svn/text-base/django.po.svn-base b/apps/filebrowser/locale/de/LC_MESSAGES/.svn/text-base/django.po.svn-base new file mode 100644 index 00000000..e5686cc8 --- /dev/null +++ b/apps/filebrowser/locale/de/LC_MESSAGES/.svn/text-base/django.po.svn-base @@ -0,0 +1,361 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-10-12 19:39+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: fb_settings.py:102 +msgid "Folder" +msgstr "" + +#: fb_settings.py:103 +msgid "Image" +msgstr "" + +#: fb_settings.py:104 +msgid "Video" +msgstr "" + +#: fb_settings.py:105 +msgid "Document" +msgstr "" + +#: fb_settings.py:106 +msgid "Sound" +msgstr "" + +#: fb_settings.py:107 +msgid "Code" +msgstr "" + +#: fields.py:56 +#, python-format +msgid "Extension %(ext)s is not allowed. Only %(allowed)s is allowed." +msgstr "" + +#: forms.py:24 templates/filebrowser/versions.html:55 +msgid "Name" +msgstr "" + +#: forms.py:24 forms.py:30 forms.py:47 forms.py:53 +msgid "Only letters, numbers, underscores, spaces and hyphens are allowed." +msgstr "" + +#: forms.py:33 +msgid "The Folder already exists." +msgstr "" + +#: forms.py:47 +msgid "New Name" +msgstr "" + +#: forms.py:56 +msgid "The File/Folder already exists." +msgstr "" + +#: views.py:47 views.py:138 views.py:191 views.py:284 views.py:362 +#: views.py:418 +msgid "Directory/File does not exist." +msgstr "" + +#: views.py:51 +msgid "Error finding upload directory. Maybe it does not exist?" +msgstr "" + +#: views.py:116 templates/filebrowser/include/breadcrumbs.html:7 +#: templates/filebrowser/include/breadcrumbs.html:9 +msgid "FileBrowser" +msgstr "" + +#: views.py:156 +#, python-format +msgid "The Folder %s was successfully created." +msgstr "" + +#: views.py:164 +msgid "Permission denied." +msgstr "" + +#: views.py:166 +msgid "Error creating directory." +msgstr "" + +#: views.py:173 views.py:175 templates/filebrowser/index.html:50 +msgid "New Folder" +msgstr "" + +#: views.py:203 +msgid "Select files to upload" +msgstr "" + +#: views.py:205 templates/filebrowser/index.html:51 +#: templates/filebrowser/upload.html:110 +msgid "Upload" +msgstr "" + +#: views.py:307 +#, python-format +msgid "The file %s was successfully deleted." +msgstr "" + +#: views.py:323 +#, python-format +msgid "The directory %s was successfully deleted." +msgstr "" + +#: views.py:388 +msgid "Renaming was successful." +msgstr "" + +#: views.py:393 +msgid "Error." +msgstr "" + +#: views.py:401 +#, python-format +msgid "Rename \"%s\"" +msgstr "" + +#: views.py:403 templates/filebrowser/include/filelisting.html:73 +msgid "Rename" +msgstr "" + +#: views.py:426 views.py:428 +#, python-format +msgid "Versions for \"%s\"" +msgstr "" + +#: templates/filebrowser/append.html:5 templates/filebrowser/append.html:7 +msgid "File-Browser" +msgstr "" + +#: templates/filebrowser/makedir.html:38 templates/filebrowser/rename.html:38 +msgid "Please correct the following errors." +msgstr "" + +#: templates/filebrowser/makedir.html:47 templates/filebrowser/rename.html:48 +#: templates/filebrowser/upload.html:83 +msgid "Help" +msgstr "" + +#: templates/filebrowser/makedir.html:52 templates/filebrowser/rename.html:53 +#: templates/filebrowser/upload.html:100 +msgid "" +"The Name will be converted to lowercase. Spaces will be replaced with " +"underscores." +msgstr "" + +#: templates/filebrowser/makedir.html:57 templates/filebrowser/rename.html:58 +msgid "Submit" +msgstr "" + +#: templates/filebrowser/upload.html:35 +msgid "BROWSE" +msgstr "" + +#: templates/filebrowser/upload.html:36 +msgid "An Error occured" +msgstr "" + +#: templates/filebrowser/upload.html:37 +msgid "Completed" +msgstr "" + +#: templates/filebrowser/upload.html:38 +msgid "Do you want to replace the file" +msgstr "" + +#: templates/filebrowser/upload.html:39 +msgid "KB" +msgstr "" + +#: templates/filebrowser/upload.html:40 +msgid "MB" +msgstr "" + +#: templates/filebrowser/upload.html:87 +msgid "Allowed" +msgstr "" + +#: templates/filebrowser/upload.html:93 +msgid "Max. Filesize" +msgstr "" + +#: templates/filebrowser/upload.html:108 +msgid "Clear Queue" +msgstr "" + +#: templates/filebrowser/versions.html:57 +msgid "Image Version" +msgstr "" + +#: templates/filebrowser/versions.html:58 +msgid "Debug" +msgstr "" + +#: templates/filebrowser/versions.html:70 +#: templates/filebrowser/include/filelisting.html:10 +msgid "Select" +msgstr "" + +#: templates/filebrowser/versions.html:81 +#: templates/filebrowser/versions.html:92 +#: templates/filebrowser/include/filelisting.html:24 +#: templates/filebrowser/include/filelisting.html:38 +msgid "Select File" +msgstr "" + +#: templates/filebrowser/versions.html:102 +msgid "Width" +msgstr "" + +#: templates/filebrowser/versions.html:103 +msgid "Height" +msgstr "" + +#: templates/filebrowser/include/breadcrumbs.html:4 +msgid "Home" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:49 +msgid "Show Versions" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:60 +msgid "View Image" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:85 +msgid "Are you sure you want to delete this file?" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:85 +msgid "Delete File" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:88 +msgid "Are you sure you want to delete this Folder?" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:88 +msgid "Delete Folder" +msgstr "" + +#: templates/filebrowser/include/filter.html:3 +msgid "Filter" +msgstr "" + +#: templates/filebrowser/include/filter.html:9 +msgid "By Date" +msgstr "" + +#: templates/filebrowser/include/filter.html:11 +msgid "Any Date" +msgstr "" + +#: templates/filebrowser/include/filter.html:13 +msgid "Today" +msgstr "" + +#: templates/filebrowser/include/filter.html:15 +msgid "Past 7 days" +msgstr "" + +#: templates/filebrowser/include/filter.html:17 +msgid "Past 30 days" +msgstr "" + +#: templates/filebrowser/include/filter.html:19 +msgid "This year" +msgstr "" + +#: templates/filebrowser/include/filter.html:27 +msgid "By Type" +msgstr "" + +#: templates/filebrowser/include/filter.html:29 +msgid "All" +msgstr "" + +#: templates/filebrowser/include/paginator.html:4 +msgid "No Items Found." +msgstr "" + +#: templates/filebrowser/include/paginator.html:9 +#, python-format +msgid "%(counter)s Item" +msgid_plural "%(counter)s Items" +msgstr[0] "" +msgstr[1] "" + +#: templates/filebrowser/include/paginator.html:15 +msgid "No Items." +msgstr "" + +#: templates/filebrowser/include/search.html:3 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "" +msgstr[1] "" + +#: templates/filebrowser/include/search.html:4 +#, python-format +msgid "%(full_result_count)s total" +msgstr "" + +#: templates/filebrowser/include/search.html:5 +msgid "Clear Restrictions" +msgstr "" + +#: templates/filebrowser/include/search.html:7 +msgid "Search" +msgstr "" + +#: templates/filebrowser/include/search.html:21 +#: templates/filebrowser/include/toolbar.html:15 +msgid "Go" +msgstr "" + +#: templates/filebrowser/include/search.html:26 +#: templates/filebrowser/include/toolbar.html:18 +#, python-format +msgid "%(counter)s Item found" +msgid_plural "%(counter)s Items found" +msgstr[0] "" +msgstr[1] "" + +#: templates/filebrowser/include/search.html:27 +#: templates/filebrowser/include/toolbar.html:19 +#, python-format +msgid "%(counter)s Item total" +msgid_plural "%(counter)s Items total" +msgstr[0] "" +msgstr[1] "" + +#: templates/filebrowser/include/tableheader.html:20 +#: templates/filebrowser/include/tableheader.html:21 +msgid "Filename" +msgstr "" + +#: templates/filebrowser/include/tableheader.html:27 +#: templates/filebrowser/include/tableheader.html:28 +msgid "Size" +msgstr "" + +#: templates/filebrowser/include/tableheader.html:31 +#: templates/filebrowser/include/tableheader.html:32 +msgid "Date" +msgstr "" diff --git a/apps/filebrowser/locale/de/LC_MESSAGES/django.mo b/apps/filebrowser/locale/de/LC_MESSAGES/django.mo new file mode 100644 index 00000000..f15bd215 Binary files /dev/null and b/apps/filebrowser/locale/de/LC_MESSAGES/django.mo differ diff --git a/apps/filebrowser/locale/de/LC_MESSAGES/django.po b/apps/filebrowser/locale/de/LC_MESSAGES/django.po new file mode 100644 index 00000000..e5686cc8 --- /dev/null +++ b/apps/filebrowser/locale/de/LC_MESSAGES/django.po @@ -0,0 +1,361 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-10-12 19:39+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: fb_settings.py:102 +msgid "Folder" +msgstr "" + +#: fb_settings.py:103 +msgid "Image" +msgstr "" + +#: fb_settings.py:104 +msgid "Video" +msgstr "" + +#: fb_settings.py:105 +msgid "Document" +msgstr "" + +#: fb_settings.py:106 +msgid "Sound" +msgstr "" + +#: fb_settings.py:107 +msgid "Code" +msgstr "" + +#: fields.py:56 +#, python-format +msgid "Extension %(ext)s is not allowed. Only %(allowed)s is allowed." +msgstr "" + +#: forms.py:24 templates/filebrowser/versions.html:55 +msgid "Name" +msgstr "" + +#: forms.py:24 forms.py:30 forms.py:47 forms.py:53 +msgid "Only letters, numbers, underscores, spaces and hyphens are allowed." +msgstr "" + +#: forms.py:33 +msgid "The Folder already exists." +msgstr "" + +#: forms.py:47 +msgid "New Name" +msgstr "" + +#: forms.py:56 +msgid "The File/Folder already exists." +msgstr "" + +#: views.py:47 views.py:138 views.py:191 views.py:284 views.py:362 +#: views.py:418 +msgid "Directory/File does not exist." +msgstr "" + +#: views.py:51 +msgid "Error finding upload directory. Maybe it does not exist?" +msgstr "" + +#: views.py:116 templates/filebrowser/include/breadcrumbs.html:7 +#: templates/filebrowser/include/breadcrumbs.html:9 +msgid "FileBrowser" +msgstr "" + +#: views.py:156 +#, python-format +msgid "The Folder %s was successfully created." +msgstr "" + +#: views.py:164 +msgid "Permission denied." +msgstr "" + +#: views.py:166 +msgid "Error creating directory." +msgstr "" + +#: views.py:173 views.py:175 templates/filebrowser/index.html:50 +msgid "New Folder" +msgstr "" + +#: views.py:203 +msgid "Select files to upload" +msgstr "" + +#: views.py:205 templates/filebrowser/index.html:51 +#: templates/filebrowser/upload.html:110 +msgid "Upload" +msgstr "" + +#: views.py:307 +#, python-format +msgid "The file %s was successfully deleted." +msgstr "" + +#: views.py:323 +#, python-format +msgid "The directory %s was successfully deleted." +msgstr "" + +#: views.py:388 +msgid "Renaming was successful." +msgstr "" + +#: views.py:393 +msgid "Error." +msgstr "" + +#: views.py:401 +#, python-format +msgid "Rename \"%s\"" +msgstr "" + +#: views.py:403 templates/filebrowser/include/filelisting.html:73 +msgid "Rename" +msgstr "" + +#: views.py:426 views.py:428 +#, python-format +msgid "Versions for \"%s\"" +msgstr "" + +#: templates/filebrowser/append.html:5 templates/filebrowser/append.html:7 +msgid "File-Browser" +msgstr "" + +#: templates/filebrowser/makedir.html:38 templates/filebrowser/rename.html:38 +msgid "Please correct the following errors." +msgstr "" + +#: templates/filebrowser/makedir.html:47 templates/filebrowser/rename.html:48 +#: templates/filebrowser/upload.html:83 +msgid "Help" +msgstr "" + +#: templates/filebrowser/makedir.html:52 templates/filebrowser/rename.html:53 +#: templates/filebrowser/upload.html:100 +msgid "" +"The Name will be converted to lowercase. Spaces will be replaced with " +"underscores." +msgstr "" + +#: templates/filebrowser/makedir.html:57 templates/filebrowser/rename.html:58 +msgid "Submit" +msgstr "" + +#: templates/filebrowser/upload.html:35 +msgid "BROWSE" +msgstr "" + +#: templates/filebrowser/upload.html:36 +msgid "An Error occured" +msgstr "" + +#: templates/filebrowser/upload.html:37 +msgid "Completed" +msgstr "" + +#: templates/filebrowser/upload.html:38 +msgid "Do you want to replace the file" +msgstr "" + +#: templates/filebrowser/upload.html:39 +msgid "KB" +msgstr "" + +#: templates/filebrowser/upload.html:40 +msgid "MB" +msgstr "" + +#: templates/filebrowser/upload.html:87 +msgid "Allowed" +msgstr "" + +#: templates/filebrowser/upload.html:93 +msgid "Max. Filesize" +msgstr "" + +#: templates/filebrowser/upload.html:108 +msgid "Clear Queue" +msgstr "" + +#: templates/filebrowser/versions.html:57 +msgid "Image Version" +msgstr "" + +#: templates/filebrowser/versions.html:58 +msgid "Debug" +msgstr "" + +#: templates/filebrowser/versions.html:70 +#: templates/filebrowser/include/filelisting.html:10 +msgid "Select" +msgstr "" + +#: templates/filebrowser/versions.html:81 +#: templates/filebrowser/versions.html:92 +#: templates/filebrowser/include/filelisting.html:24 +#: templates/filebrowser/include/filelisting.html:38 +msgid "Select File" +msgstr "" + +#: templates/filebrowser/versions.html:102 +msgid "Width" +msgstr "" + +#: templates/filebrowser/versions.html:103 +msgid "Height" +msgstr "" + +#: templates/filebrowser/include/breadcrumbs.html:4 +msgid "Home" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:49 +msgid "Show Versions" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:60 +msgid "View Image" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:85 +msgid "Are you sure you want to delete this file?" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:85 +msgid "Delete File" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:88 +msgid "Are you sure you want to delete this Folder?" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:88 +msgid "Delete Folder" +msgstr "" + +#: templates/filebrowser/include/filter.html:3 +msgid "Filter" +msgstr "" + +#: templates/filebrowser/include/filter.html:9 +msgid "By Date" +msgstr "" + +#: templates/filebrowser/include/filter.html:11 +msgid "Any Date" +msgstr "" + +#: templates/filebrowser/include/filter.html:13 +msgid "Today" +msgstr "" + +#: templates/filebrowser/include/filter.html:15 +msgid "Past 7 days" +msgstr "" + +#: templates/filebrowser/include/filter.html:17 +msgid "Past 30 days" +msgstr "" + +#: templates/filebrowser/include/filter.html:19 +msgid "This year" +msgstr "" + +#: templates/filebrowser/include/filter.html:27 +msgid "By Type" +msgstr "" + +#: templates/filebrowser/include/filter.html:29 +msgid "All" +msgstr "" + +#: templates/filebrowser/include/paginator.html:4 +msgid "No Items Found." +msgstr "" + +#: templates/filebrowser/include/paginator.html:9 +#, python-format +msgid "%(counter)s Item" +msgid_plural "%(counter)s Items" +msgstr[0] "" +msgstr[1] "" + +#: templates/filebrowser/include/paginator.html:15 +msgid "No Items." +msgstr "" + +#: templates/filebrowser/include/search.html:3 +#, python-format +msgid "1 result" +msgid_plural "%(counter)s results" +msgstr[0] "" +msgstr[1] "" + +#: templates/filebrowser/include/search.html:4 +#, python-format +msgid "%(full_result_count)s total" +msgstr "" + +#: templates/filebrowser/include/search.html:5 +msgid "Clear Restrictions" +msgstr "" + +#: templates/filebrowser/include/search.html:7 +msgid "Search" +msgstr "" + +#: templates/filebrowser/include/search.html:21 +#: templates/filebrowser/include/toolbar.html:15 +msgid "Go" +msgstr "" + +#: templates/filebrowser/include/search.html:26 +#: templates/filebrowser/include/toolbar.html:18 +#, python-format +msgid "%(counter)s Item found" +msgid_plural "%(counter)s Items found" +msgstr[0] "" +msgstr[1] "" + +#: templates/filebrowser/include/search.html:27 +#: templates/filebrowser/include/toolbar.html:19 +#, python-format +msgid "%(counter)s Item total" +msgid_plural "%(counter)s Items total" +msgstr[0] "" +msgstr[1] "" + +#: templates/filebrowser/include/tableheader.html:20 +#: templates/filebrowser/include/tableheader.html:21 +msgid "Filename" +msgstr "" + +#: templates/filebrowser/include/tableheader.html:27 +#: templates/filebrowser/include/tableheader.html:28 +msgid "Size" +msgstr "" + +#: templates/filebrowser/include/tableheader.html:31 +#: templates/filebrowser/include/tableheader.html:32 +msgid "Date" +msgstr "" diff --git a/apps/filebrowser/locale/es/.svn/all-wcprops b/apps/filebrowser/locale/es/.svn/all-wcprops new file mode 100644 index 00000000..9aadfe55 --- /dev/null +++ b/apps/filebrowser/locale/es/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 62 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/es +END diff --git a/apps/filebrowser/locale/es/.svn/entries b/apps/filebrowser/locale/es/.svn/entries new file mode 100644 index 00000000..0ae34d23 --- /dev/null +++ b/apps/filebrowser/locale/es/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/locale/es +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +LC_MESSAGES +dir + diff --git a/apps/filebrowser/locale/es/LC_MESSAGES/.svn/all-wcprops b/apps/filebrowser/locale/es/LC_MESSAGES/.svn/all-wcprops new file mode 100644 index 00000000..e0575cb5 --- /dev/null +++ b/apps/filebrowser/locale/es/LC_MESSAGES/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/es/LC_MESSAGES +END +django.po +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/es/LC_MESSAGES/django.po +END +django.mo +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/es/LC_MESSAGES/django.mo +END diff --git a/apps/filebrowser/locale/es/LC_MESSAGES/.svn/entries b/apps/filebrowser/locale/es/LC_MESSAGES/.svn/entries new file mode 100644 index 00000000..7b30a11a --- /dev/null +++ b/apps/filebrowser/locale/es/LC_MESSAGES/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/locale/es/LC_MESSAGES +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +django.po +file + + + + +2009-11-05T20:58:49.000000Z +578b89472b0f5a88fe8fa94994da86b8 +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +8245 + +django.mo +file + + + + +2009-11-05T20:58:49.000000Z +951603147daea8a036164a5db6fa818d +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +5093 + diff --git a/apps/filebrowser/locale/es/LC_MESSAGES/.svn/prop-base/django.mo.svn-base b/apps/filebrowser/locale/es/LC_MESSAGES/.svn/prop-base/django.mo.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/locale/es/LC_MESSAGES/.svn/prop-base/django.mo.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/locale/es/LC_MESSAGES/.svn/text-base/django.mo.svn-base b/apps/filebrowser/locale/es/LC_MESSAGES/.svn/text-base/django.mo.svn-base new file mode 100644 index 00000000..bb698f80 Binary files /dev/null and b/apps/filebrowser/locale/es/LC_MESSAGES/.svn/text-base/django.mo.svn-base differ diff --git a/apps/filebrowser/locale/es/LC_MESSAGES/.svn/text-base/django.po.svn-base b/apps/filebrowser/locale/es/LC_MESSAGES/.svn/text-base/django.po.svn-base new file mode 100644 index 00000000..621979a7 --- /dev/null +++ b/apps/filebrowser/locale/es/LC_MESSAGES/.svn/text-base/django.po.svn-base @@ -0,0 +1,328 @@ +# translation of django.po to Spanish +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# PATRICK KRANZLMUELLER , 2009. +# Antoni Aloy , 2009. +msgid "" +msgstr "" +"Project-Id-Version: django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 21:24+0000\n" +"PO-Revision-Date: 2009-02-15 19:14+0100\n" +"Last-Translator: Antoni Aloy \n" +"Language-Team: Spanish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: fields.py:27 +#, python-format +msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." +msgstr "" +"Compruebe que este valor tiene como máximo %(max)d carácters (tiene %(length)" +"d)." + +#: fields.py:28 +#, python-format +msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." +msgstr "" +"Compruebe que este valor tiene como mínimo %(min)d carácteres (tiene %" +"(length)d)." + +#: fields.py:29 +#, python-format +msgid "Extension %(ext)s is not allowed. Only %(allowed)s is allowed." +msgstr "" +"La extensión %(ext)s no está permitida. Sólo se permiten las extensiones %" +"(allowed)s." + +#: forms.py:23 +msgid "Name" +msgstr "Nombre" + +#: forms.py:23 forms.py:46 +msgid "" +"The Name will automatically be converted to lowercase. Only letters, " +"numbers, underscores and hyphens are allowed." +msgstr "" +"El nombre se convertirá automáticamente a minúsculas. Sólo se permiten " +"letras, números, subrayado y guiones." + +#: forms.py:30 forms.py:53 +msgid "Only letters, numbers, underscores and hyphens are allowed." +msgstr "Sólo se permiten letras, números, subrayado y guiones." + +#: forms.py:33 +msgid "The Folder already exists." +msgstr "La carpeta ya existe." + +#: forms.py:46 +msgid "New Name" +msgstr "Nuevo nombre" + +#: forms.py:56 +msgid "The File/Folder already exists." +msgstr "El archivo/carpeta ya existe." + +#: forms.py:92 +msgid "File" +msgstr "Archivo" + +#: forms.py:93 +msgid "Use Image Generator" +msgstr "Emplear el generador de imágenes" + +#: forms.py:102 +msgid "File already exists." +msgstr "El archivo ya existe." + +#: forms.py:108 +msgid "Filename is not allowed." +msgstr "Nombre de archivo no permitido." + +#: forms.py:113 +msgid "File extension is not allowed." +msgstr "Extensión de archivo no permitida." + +#: forms.py:118 +msgid "Filesize exceeds allowed Upload Size." +msgstr "El tamaño del archivo excede el máximo permitido." + +#: functions.py:84 +msgid "Home" +msgstr "Inicio" + +#: functions.py:276 +msgid "Thumbnail creation failed." +msgstr "Falló la creación de la miniatura." + +#: functions.py:331 functions.py:398 +msgid "Image creation failed." +msgstr "Falló la creación de la Imagen." + +#: views.py:165 +msgid "FileBrowser" +msgstr "Visor de archivos" + +#: views.py:188 +#, python-format +msgid "The Folder %s was successfully created." +msgstr "La carpeta %s se creó con éxito." + +#: views.py:194 +msgid "Permission denied." +msgstr "Permiso denegado." + +#: views.py:196 +msgid "Error creating directory." +msgstr "Error creando el directorio." + +#: views.py:204 views.py:205 templates/filebrowser/index.html:30 +msgid "New Folder" +msgstr "Nueva carpeta." + +#: views.py:250 +msgid "Upload successful." +msgstr "Subida completada." + +#: views.py:263 templates/filebrowser/index.html:33 +#: templates/filebrowser/upload.html:62 +msgid "Upload" +msgstr "Subir" + +#: views.py:264 +msgid "Select files to upload" +msgstr "Seleccione archivos a subir." + +#: views.py:294 +msgid "Thumbnail creation successful." +msgstr "Se creó la miniatura con éxito." + +#: views.py:344 +#, python-format +msgid "The file %s was successfully deleted." +msgstr "El archivo %s se eliminó con éxito." + +#: views.py:356 +#, python-format +msgid "The directory %s was successfully deleted." +msgstr "El directorio %s se eliminó con éxito." + +#: views.py:407 +msgid "Error renaming Thumbnail." +msgstr "Error renombrando la miniatura." + +#: views.py:413 +msgid "Renaming was successful." +msgstr "Renombrado satisfactorio." + +#: views.py:418 +msgid "Error." +msgstr "Error." + +#: views.py:427 templates/filebrowser/include/filelisting.html:52 +msgid "Rename" +msgstr "Renombrar" + +#: views.py:428 +#, python-format +msgid "Rename \"%s\"" +msgstr "Renombrar \"%s\"" + +#: views.py:465 +msgid "Successfully generated Images." +msgstr "Las imágenes se generaron satisfactoriamente." + +#: templates/filebrowser/index.html:31 +msgid "Make Thumbs" +msgstr "Crear miniaturas" + +#: templates/filebrowser/index.html:32 +msgid "Generate Images" +msgstr "Generar imágenes" + +#: templates/filebrowser/makedir.html:24 templates/filebrowser/rename.html:22 +msgid "Please correct the following errors." +msgstr "Por favor, corrija los siguientes errores." + +#: templates/filebrowser/makedir.html:34 templates/filebrowser/rename.html:33 +msgid "Submit" +msgstr "Enviar" + +#: templates/filebrowser/upload.html:37 +msgid "Will use image generator." +msgstr "Usa el generador de imágenes." + +#: templates/filebrowser/upload.html:47 +msgid "Help" +msgstr "Ayuda" + +#: templates/filebrowser/upload.html:51 +msgid "Allowed" +msgstr "Permitido" + +#: templates/filebrowser/upload.html:57 +msgid "Max. Filesize" +msgstr "Tamaño máx." + +#: templates/filebrowser/include/filelisting.html:8 +msgid "Select" +msgstr "Selecciona" + +#: templates/filebrowser/include/filelisting.html:15 +msgid "Select File" +msgstr "Selecciona archivo" + +#: templates/filebrowser/include/filelisting.html:26 +msgid "Make Thumbnail" +msgstr "Crear miniatura" + +#: templates/filebrowser/include/filelisting.html:29 +msgid "View Image" +msgstr "Ver imagen" + +#: templates/filebrowser/include/filelisting.html:46 +msgid "Generate Image Versions" +msgstr "Generar versiones de la imagen" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Are you sure you want to delete this file?" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Delete File" +msgstr "Borrar archivo" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Are you sure you want to delete this Folder?" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Delete Folder" +msgstr "Borrar carpeta" + +#: templates/filebrowser/include/filter.html:15 +msgid "Filter" +msgstr "Filtrar" + +#: templates/filebrowser/include/filter.html:21 +msgid "By Date" +msgstr "Por fecha" + +#: templates/filebrowser/include/filter.html:23 +msgid "Any Date" +msgstr "Cualquier fecha" + +#: templates/filebrowser/include/filter.html:25 +msgid "Today" +msgstr "Hoy" + +#: templates/filebrowser/include/filter.html:27 +msgid "Past 7 days" +msgstr "Hace 7 días" + +#: templates/filebrowser/include/filter.html:29 +msgid "Past 30 days" +msgstr "Hace 30 días" + +#: templates/filebrowser/include/filter.html:31 +msgid "This year" +msgstr "Este año" + +#: templates/filebrowser/include/filter.html:39 +msgid "By Type" +msgstr "Por tipo" + +#: templates/filebrowser/include/filter.html:41 +msgid "All" +msgstr "Todo" + +#: templates/filebrowser/include/paginator.html:5 +msgid "No Items Found." +msgstr "No se encontraron items" + +#: templates/filebrowser/include/paginator.html:10 +#, python-format +msgid "%(counter)s Item" +msgid_plural "%(counter)s Items" +msgstr[0] "%(counter)s item" +msgstr[1] "%(counter)s items" + +#: templates/filebrowser/include/paginator.html:16 +msgid "No Items." +msgstr "No hay items." + +#: templates/filebrowser/include/tableheader.html:13 +#: templates/filebrowser/include/tableheader.html:14 +msgid "Filename" +msgstr "Nombre de archivo" + +#: templates/filebrowser/include/tableheader.html:20 +#: templates/filebrowser/include/tableheader.html:21 +msgid "Size" +msgstr "Tamaño" + +#: templates/filebrowser/include/tableheader.html:23 +#: templates/filebrowser/include/tableheader.html:24 +msgid "Date" +msgstr "Fecha" + +#: templates/filebrowser/include/toolbar.html:14 +msgid "Go" +msgstr "Ir" + +#: templates/filebrowser/include/toolbar.html:16 +#, python-format +msgid "%(counter)s Item found" +msgid_plural "%(counter)s Items found" +msgstr[0] "encontrado %(counter)s Item" +msgstr[1] "encontrados %(counter)s Items" + +#: templates/filebrowser/include/toolbar.html:17 +#, python-format +msgid "%(counter)s Item total" +msgid_plural "%(counter)s Items total" +msgstr[0] "total %(counter)s item" +msgstr[1] "total %(counter)s items" diff --git a/apps/filebrowser/locale/es/LC_MESSAGES/django.mo b/apps/filebrowser/locale/es/LC_MESSAGES/django.mo new file mode 100644 index 00000000..bb698f80 Binary files /dev/null and b/apps/filebrowser/locale/es/LC_MESSAGES/django.mo differ diff --git a/apps/filebrowser/locale/es/LC_MESSAGES/django.po b/apps/filebrowser/locale/es/LC_MESSAGES/django.po new file mode 100644 index 00000000..621979a7 --- /dev/null +++ b/apps/filebrowser/locale/es/LC_MESSAGES/django.po @@ -0,0 +1,328 @@ +# translation of django.po to Spanish +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# PATRICK KRANZLMUELLER , 2009. +# Antoni Aloy , 2009. +msgid "" +msgstr "" +"Project-Id-Version: django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 21:24+0000\n" +"PO-Revision-Date: 2009-02-15 19:14+0100\n" +"Last-Translator: Antoni Aloy \n" +"Language-Team: Spanish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: fields.py:27 +#, python-format +msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." +msgstr "" +"Compruebe que este valor tiene como máximo %(max)d carácters (tiene %(length)" +"d)." + +#: fields.py:28 +#, python-format +msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." +msgstr "" +"Compruebe que este valor tiene como mínimo %(min)d carácteres (tiene %" +"(length)d)." + +#: fields.py:29 +#, python-format +msgid "Extension %(ext)s is not allowed. Only %(allowed)s is allowed." +msgstr "" +"La extensión %(ext)s no está permitida. Sólo se permiten las extensiones %" +"(allowed)s." + +#: forms.py:23 +msgid "Name" +msgstr "Nombre" + +#: forms.py:23 forms.py:46 +msgid "" +"The Name will automatically be converted to lowercase. Only letters, " +"numbers, underscores and hyphens are allowed." +msgstr "" +"El nombre se convertirá automáticamente a minúsculas. Sólo se permiten " +"letras, números, subrayado y guiones." + +#: forms.py:30 forms.py:53 +msgid "Only letters, numbers, underscores and hyphens are allowed." +msgstr "Sólo se permiten letras, números, subrayado y guiones." + +#: forms.py:33 +msgid "The Folder already exists." +msgstr "La carpeta ya existe." + +#: forms.py:46 +msgid "New Name" +msgstr "Nuevo nombre" + +#: forms.py:56 +msgid "The File/Folder already exists." +msgstr "El archivo/carpeta ya existe." + +#: forms.py:92 +msgid "File" +msgstr "Archivo" + +#: forms.py:93 +msgid "Use Image Generator" +msgstr "Emplear el generador de imágenes" + +#: forms.py:102 +msgid "File already exists." +msgstr "El archivo ya existe." + +#: forms.py:108 +msgid "Filename is not allowed." +msgstr "Nombre de archivo no permitido." + +#: forms.py:113 +msgid "File extension is not allowed." +msgstr "Extensión de archivo no permitida." + +#: forms.py:118 +msgid "Filesize exceeds allowed Upload Size." +msgstr "El tamaño del archivo excede el máximo permitido." + +#: functions.py:84 +msgid "Home" +msgstr "Inicio" + +#: functions.py:276 +msgid "Thumbnail creation failed." +msgstr "Falló la creación de la miniatura." + +#: functions.py:331 functions.py:398 +msgid "Image creation failed." +msgstr "Falló la creación de la Imagen." + +#: views.py:165 +msgid "FileBrowser" +msgstr "Visor de archivos" + +#: views.py:188 +#, python-format +msgid "The Folder %s was successfully created." +msgstr "La carpeta %s se creó con éxito." + +#: views.py:194 +msgid "Permission denied." +msgstr "Permiso denegado." + +#: views.py:196 +msgid "Error creating directory." +msgstr "Error creando el directorio." + +#: views.py:204 views.py:205 templates/filebrowser/index.html:30 +msgid "New Folder" +msgstr "Nueva carpeta." + +#: views.py:250 +msgid "Upload successful." +msgstr "Subida completada." + +#: views.py:263 templates/filebrowser/index.html:33 +#: templates/filebrowser/upload.html:62 +msgid "Upload" +msgstr "Subir" + +#: views.py:264 +msgid "Select files to upload" +msgstr "Seleccione archivos a subir." + +#: views.py:294 +msgid "Thumbnail creation successful." +msgstr "Se creó la miniatura con éxito." + +#: views.py:344 +#, python-format +msgid "The file %s was successfully deleted." +msgstr "El archivo %s se eliminó con éxito." + +#: views.py:356 +#, python-format +msgid "The directory %s was successfully deleted." +msgstr "El directorio %s se eliminó con éxito." + +#: views.py:407 +msgid "Error renaming Thumbnail." +msgstr "Error renombrando la miniatura." + +#: views.py:413 +msgid "Renaming was successful." +msgstr "Renombrado satisfactorio." + +#: views.py:418 +msgid "Error." +msgstr "Error." + +#: views.py:427 templates/filebrowser/include/filelisting.html:52 +msgid "Rename" +msgstr "Renombrar" + +#: views.py:428 +#, python-format +msgid "Rename \"%s\"" +msgstr "Renombrar \"%s\"" + +#: views.py:465 +msgid "Successfully generated Images." +msgstr "Las imágenes se generaron satisfactoriamente." + +#: templates/filebrowser/index.html:31 +msgid "Make Thumbs" +msgstr "Crear miniaturas" + +#: templates/filebrowser/index.html:32 +msgid "Generate Images" +msgstr "Generar imágenes" + +#: templates/filebrowser/makedir.html:24 templates/filebrowser/rename.html:22 +msgid "Please correct the following errors." +msgstr "Por favor, corrija los siguientes errores." + +#: templates/filebrowser/makedir.html:34 templates/filebrowser/rename.html:33 +msgid "Submit" +msgstr "Enviar" + +#: templates/filebrowser/upload.html:37 +msgid "Will use image generator." +msgstr "Usa el generador de imágenes." + +#: templates/filebrowser/upload.html:47 +msgid "Help" +msgstr "Ayuda" + +#: templates/filebrowser/upload.html:51 +msgid "Allowed" +msgstr "Permitido" + +#: templates/filebrowser/upload.html:57 +msgid "Max. Filesize" +msgstr "Tamaño máx." + +#: templates/filebrowser/include/filelisting.html:8 +msgid "Select" +msgstr "Selecciona" + +#: templates/filebrowser/include/filelisting.html:15 +msgid "Select File" +msgstr "Selecciona archivo" + +#: templates/filebrowser/include/filelisting.html:26 +msgid "Make Thumbnail" +msgstr "Crear miniatura" + +#: templates/filebrowser/include/filelisting.html:29 +msgid "View Image" +msgstr "Ver imagen" + +#: templates/filebrowser/include/filelisting.html:46 +msgid "Generate Image Versions" +msgstr "Generar versiones de la imagen" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Are you sure you want to delete this file?" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Delete File" +msgstr "Borrar archivo" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Are you sure you want to delete this Folder?" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Delete Folder" +msgstr "Borrar carpeta" + +#: templates/filebrowser/include/filter.html:15 +msgid "Filter" +msgstr "Filtrar" + +#: templates/filebrowser/include/filter.html:21 +msgid "By Date" +msgstr "Por fecha" + +#: templates/filebrowser/include/filter.html:23 +msgid "Any Date" +msgstr "Cualquier fecha" + +#: templates/filebrowser/include/filter.html:25 +msgid "Today" +msgstr "Hoy" + +#: templates/filebrowser/include/filter.html:27 +msgid "Past 7 days" +msgstr "Hace 7 días" + +#: templates/filebrowser/include/filter.html:29 +msgid "Past 30 days" +msgstr "Hace 30 días" + +#: templates/filebrowser/include/filter.html:31 +msgid "This year" +msgstr "Este año" + +#: templates/filebrowser/include/filter.html:39 +msgid "By Type" +msgstr "Por tipo" + +#: templates/filebrowser/include/filter.html:41 +msgid "All" +msgstr "Todo" + +#: templates/filebrowser/include/paginator.html:5 +msgid "No Items Found." +msgstr "No se encontraron items" + +#: templates/filebrowser/include/paginator.html:10 +#, python-format +msgid "%(counter)s Item" +msgid_plural "%(counter)s Items" +msgstr[0] "%(counter)s item" +msgstr[1] "%(counter)s items" + +#: templates/filebrowser/include/paginator.html:16 +msgid "No Items." +msgstr "No hay items." + +#: templates/filebrowser/include/tableheader.html:13 +#: templates/filebrowser/include/tableheader.html:14 +msgid "Filename" +msgstr "Nombre de archivo" + +#: templates/filebrowser/include/tableheader.html:20 +#: templates/filebrowser/include/tableheader.html:21 +msgid "Size" +msgstr "Tamaño" + +#: templates/filebrowser/include/tableheader.html:23 +#: templates/filebrowser/include/tableheader.html:24 +msgid "Date" +msgstr "Fecha" + +#: templates/filebrowser/include/toolbar.html:14 +msgid "Go" +msgstr "Ir" + +#: templates/filebrowser/include/toolbar.html:16 +#, python-format +msgid "%(counter)s Item found" +msgid_plural "%(counter)s Items found" +msgstr[0] "encontrado %(counter)s Item" +msgstr[1] "encontrados %(counter)s Items" + +#: templates/filebrowser/include/toolbar.html:17 +#, python-format +msgid "%(counter)s Item total" +msgid_plural "%(counter)s Items total" +msgstr[0] "total %(counter)s item" +msgstr[1] "total %(counter)s items" diff --git a/apps/filebrowser/locale/fr/.svn/all-wcprops b/apps/filebrowser/locale/fr/.svn/all-wcprops new file mode 100644 index 00000000..0cbad90d --- /dev/null +++ b/apps/filebrowser/locale/fr/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 62 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/fr +END diff --git a/apps/filebrowser/locale/fr/.svn/entries b/apps/filebrowser/locale/fr/.svn/entries new file mode 100644 index 00000000..6c18686a --- /dev/null +++ b/apps/filebrowser/locale/fr/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/locale/fr +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +LC_MESSAGES +dir + diff --git a/apps/filebrowser/locale/fr/LC_MESSAGES/.svn/all-wcprops b/apps/filebrowser/locale/fr/LC_MESSAGES/.svn/all-wcprops new file mode 100644 index 00000000..bf27e22d --- /dev/null +++ b/apps/filebrowser/locale/fr/LC_MESSAGES/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/fr/LC_MESSAGES +END +django.po +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/fr/LC_MESSAGES/django.po +END +django.mo +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/fr/LC_MESSAGES/django.mo +END diff --git a/apps/filebrowser/locale/fr/LC_MESSAGES/.svn/entries b/apps/filebrowser/locale/fr/LC_MESSAGES/.svn/entries new file mode 100644 index 00000000..c7f68b9e --- /dev/null +++ b/apps/filebrowser/locale/fr/LC_MESSAGES/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/locale/fr/LC_MESSAGES +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +django.po +file + + + + +2009-11-05T20:58:49.000000Z +6e24f48b2d2d67cacd701f432b994f65 +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +8351 + +django.mo +file + + + + +2009-11-05T20:58:49.000000Z +974d2c2951cc59ba15aecc116dffa5d7 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +5358 + diff --git a/apps/filebrowser/locale/fr/LC_MESSAGES/.svn/prop-base/django.mo.svn-base b/apps/filebrowser/locale/fr/LC_MESSAGES/.svn/prop-base/django.mo.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/locale/fr/LC_MESSAGES/.svn/prop-base/django.mo.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/locale/fr/LC_MESSAGES/.svn/text-base/django.mo.svn-base b/apps/filebrowser/locale/fr/LC_MESSAGES/.svn/text-base/django.mo.svn-base new file mode 100644 index 00000000..26e610df Binary files /dev/null and b/apps/filebrowser/locale/fr/LC_MESSAGES/.svn/text-base/django.mo.svn-base differ diff --git a/apps/filebrowser/locale/fr/LC_MESSAGES/.svn/text-base/django.po.svn-base b/apps/filebrowser/locale/fr/LC_MESSAGES/.svn/text-base/django.po.svn-base new file mode 100644 index 00000000..52411661 --- /dev/null +++ b/apps/filebrowser/locale/fr/LC_MESSAGES/.svn/text-base/django.po.svn-base @@ -0,0 +1,336 @@ +# Copyright (C) 2009 Rémy Hubscher +# This file is distributed under the same license as the django-filebrowser package. +# Rémy Hubscher , 2009. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-05-20 11:04+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: REMY HUBSCHER \n" +"Language-Team: FRENCH \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: fields.py:96 +#, python-format +msgid "Extension %(ext)s is not allowed. Only %(allowed)s is allowed." +msgstr "" +"L'extension de fichier %(ext)s n'est pas autorisée. Les extensions suivantes " +"sont autorisées: %(allowed)s." + +#: forms.py:23 +msgid "Name" +msgstr "Nom" + +#: forms.py:23 forms.py:49 +msgid "" +"The Name will automatically be converted to lowercase. Only letters, " +"numbers, underscores and hyphens are allowed." +msgstr "" +"Le nom sera automatiquement converti en minuscule. Seul les lettres, nombres," +"tirets bas et tirets sont autorisés." + +#: forms.py:30 forms.py:56 +msgid "Only letters, numbers, underscores and hyphens are allowed." +msgstr "Seul les lettres, nombres, tirets bas et tirets sont autorisés." + +#: forms.py:33 +msgid "The Folder already exists." +msgstr "Ce répertoire existe déjà." + +#: forms.py:36 +msgid "Disallowed Folder Name." +msgstr "Nom de fichier interdit." + +#: forms.py:49 +msgid "New Name" +msgstr "Nouveau nom" + +#: forms.py:59 +msgid "The File/Folder already exists." +msgstr "Ce fichier/répertoire existe déjà." + +#: forms.py:95 +msgid "File" +msgstr "Fichier" + +#: forms.py:96 +msgid "Use Image Generator" +msgstr "Utiliser le générateur d'images" + +#: forms.py:105 +msgid "File already exists." +msgstr "Le fichier existe déjà." + +#: forms.py:111 +msgid "Filename is not allowed." +msgstr "Ce nom de fichier n'est pas autorisé." + +#: forms.py:116 +msgid "File extension is not allowed." +msgstr "Cette extension de fichier n'est pas autorisée." + +#: forms.py:121 +msgid "Filesize exceeds allowed Upload Size." +msgstr "La taille du fichier est supérieur à la taille maximale autorisée." + +#: functions.py:84 +msgid "Home" +msgstr "Accueil" + +#: functions.py:279 +msgid "Thumbnail creation failed." +msgstr "La création de miniature à échouée." + +#: functions.py:334 functions.py:389 +msgid "Image creation failed." +msgstr "La création d'image à échouée." + +#: views.py:174 +msgid "FileBrowser" +msgstr "Navigateur de Fichiers" + +#: views.py:198 +#, python-format +msgid "The Folder %s was successfully created." +msgstr "Le répertoire %s a été créé avec succès." + +#: views.py:204 +msgid "Permission denied." +msgstr "Permission refusée." + +#: views.py:206 +msgid "Error creating directory." +msgstr "Impossible de créer le répertoire." + +#: views.py:214 views.py:215 templates/filebrowser/index.html:33 +msgid "New Folder" +msgstr "Nouveau répertoire" + +#: views.py:260 +msgid "Upload successful." +msgstr "L'envoi a réussi." + +#: views.py:273 templates/filebrowser/index.html:36 +#: templates/filebrowser/upload.html:62 +msgid "Upload" +msgstr "Upload" + +#: views.py:274 +msgid "Select files to upload" +msgstr "Sélectionner les fichiers à envoyer" + +#: views.py:304 +msgid "Thumbnail creation successful." +msgstr "Les miniatures ont été créée." + +#: views.py:354 +#, python-format +msgid "The file %s was successfully deleted." +msgstr "Le fichier %s a été supprimé." + +#: views.py:366 +#, python-format +msgid "The directory %s was successfully deleted." +msgstr "Le répertoire %s a été supprimé." + +#: views.py:417 +msgid "Error renaming Thumbnail." +msgstr "Impossible de renommer la miniature." + +#: views.py:423 +msgid "Renaming was successful." +msgstr "La miniature a été renommée." + +#: views.py:428 +msgid "Error." +msgstr "Erreur." + +#: views.py:437 templates/filebrowser/include/filelisting.html:52 +msgid "Rename" +msgstr "Renommer" + +#: views.py:438 +#, python-format +msgid "Rename \"%s\"" +msgstr "Renommer \"%s\"" + +#: views.py:475 +msgid "Successfully generated Images." +msgstr "Les images ont été générées." + +#: templates/filebrowser/append.html:5 templates/filebrowser/append.html:7 +#, fuzzy +msgid "File-Browser" +msgstr "Navigateur de Fichiers" + +#: templates/filebrowser/index.html:34 +msgid "Make Thumbs" +msgstr "Générer les miniatures" + +#: templates/filebrowser/index.html:35 +msgid "Generate Images" +msgstr "Générer les images" + +#: templates/filebrowser/makedir.html:24 templates/filebrowser/rename.html:22 +msgid "Please correct the following errors." +msgstr "Merci de corriger les erreurs suivantes." + +#: templates/filebrowser/makedir.html:34 templates/filebrowser/rename.html:33 +msgid "Submit" +msgstr "Envoyer" + +#: templates/filebrowser/upload.html:37 +msgid "Will use image generator." +msgstr "Utiliser le générateur d'images." + +#: templates/filebrowser/upload.html:47 +msgid "Help" +msgstr "Aide" + +#: templates/filebrowser/upload.html:51 +msgid "Allowed" +msgstr "Autorisé" + +#: templates/filebrowser/upload.html:57 +msgid "Max. Filesize" +msgstr "Taille Max." + +#: templates/filebrowser/include/filelisting.html:8 +msgid "Select" +msgstr "Sélectionner" + +#: templates/filebrowser/include/filelisting.html:15 +msgid "Select File" +msgstr "Sélectionner le fichier" + +#: templates/filebrowser/include/filelisting.html:26 +msgid "Make Thumbnail" +msgstr "Générer une miniature" + +#: templates/filebrowser/include/filelisting.html:29 +msgid "View Image" +msgstr "Voir l'image" + +#: templates/filebrowser/include/filelisting.html:46 +msgid "Generate Image Versions" +msgstr "Générer des versions de l'image" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Are you sure you want to delete this file?" +msgstr "Êtes-vous sur de vouloir supprimer ce fichier ?" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Delete File" +msgstr "Supprimer le fichier" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Are you sure you want to delete this Folder?" +msgstr "Êtes-vous sur de vouloir supprimer ce répertoire ?" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Delete Folder" +msgstr "Supprimer le répertoire" + +#: templates/filebrowser/include/filter.html:15 +msgid "Filter" +msgstr "Filtrer" + +#: templates/filebrowser/include/filter.html:21 +msgid "By Date" +msgstr "Par date" + +#: templates/filebrowser/include/filter.html:23 +msgid "Any Date" +msgstr "Toutes" + +#: templates/filebrowser/include/filter.html:25 +msgid "Today" +msgstr "Aujourd'hui" + +#: templates/filebrowser/include/filter.html:27 +msgid "Past 7 days" +msgstr "Semaine dernière" + +#: templates/filebrowser/include/filter.html:29 +msgid "Past 30 days" +msgstr "Mois dernier" + +#: templates/filebrowser/include/filter.html:31 +msgid "This year" +msgstr "Cette année" + +#: templates/filebrowser/include/filter.html:39 +msgid "By Type" +msgstr "Par type" + +#: templates/filebrowser/include/filter.html:41 +msgid "All" +msgstr "Alle" + +#: templates/filebrowser/include/paginator.html:5 +msgid "No Items Found." +msgstr "Aucun article." + +#: templates/filebrowser/include/paginator.html:10 +#, python-format +msgid "%(counter)s Item" +msgid_plural "%(counter)s Items" +msgstr[0] "%(counter)s article" +msgstr[1] "%(counter)s articles" + +#: templates/filebrowser/include/paginator.html:16 +msgid "No Items." +msgstr "Aucun article." + +#: templates/filebrowser/include/tableheader.html:13 +#: templates/filebrowser/include/tableheader.html:14 +msgid "Filename" +msgstr "Nom" + +#: templates/filebrowser/include/tableheader.html:20 +#: templates/filebrowser/include/tableheader.html:21 +msgid "Size" +msgstr "Taille" + +#: templates/filebrowser/include/tableheader.html:23 +#: templates/filebrowser/include/tableheader.html:24 +msgid "Date" +msgstr "Date" + +#: templates/filebrowser/include/toolbar.html:14 +msgid "Go" +msgstr "Chercher" + +#: templates/filebrowser/include/toolbar.html:16 +#, python-format +msgid "%(counter)s Item found" +msgid_plural "%(counter)s Items found" +msgstr[0] "%(counter)s article trouvé" +msgstr[1] "%(counter)s articles trouvés" + +#: templates/filebrowser/include/toolbar.html:17 +#, python-format +msgid "%(counter)s Item total" +msgid_plural "%(counter)s Items total" +msgstr[0] "%(counter)s article total" +msgstr[1] "%(counter)s articles total" + +msgid "Folder" +msgstr "Répertoire" + +msgid "Image" +msgstr "Image" + +msgid "Document" +msgstr "Document" + +msgid "Code" +msgstr "Code" + +msgid "Sound" +msgstr "Son" \ No newline at end of file diff --git a/apps/filebrowser/locale/fr/LC_MESSAGES/django.mo b/apps/filebrowser/locale/fr/LC_MESSAGES/django.mo new file mode 100644 index 00000000..26e610df Binary files /dev/null and b/apps/filebrowser/locale/fr/LC_MESSAGES/django.mo differ diff --git a/apps/filebrowser/locale/fr/LC_MESSAGES/django.po b/apps/filebrowser/locale/fr/LC_MESSAGES/django.po new file mode 100644 index 00000000..52411661 --- /dev/null +++ b/apps/filebrowser/locale/fr/LC_MESSAGES/django.po @@ -0,0 +1,336 @@ +# Copyright (C) 2009 Rémy Hubscher +# This file is distributed under the same license as the django-filebrowser package. +# Rémy Hubscher , 2009. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-05-20 11:04+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: REMY HUBSCHER \n" +"Language-Team: FRENCH \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: fields.py:96 +#, python-format +msgid "Extension %(ext)s is not allowed. Only %(allowed)s is allowed." +msgstr "" +"L'extension de fichier %(ext)s n'est pas autorisée. Les extensions suivantes " +"sont autorisées: %(allowed)s." + +#: forms.py:23 +msgid "Name" +msgstr "Nom" + +#: forms.py:23 forms.py:49 +msgid "" +"The Name will automatically be converted to lowercase. Only letters, " +"numbers, underscores and hyphens are allowed." +msgstr "" +"Le nom sera automatiquement converti en minuscule. Seul les lettres, nombres," +"tirets bas et tirets sont autorisés." + +#: forms.py:30 forms.py:56 +msgid "Only letters, numbers, underscores and hyphens are allowed." +msgstr "Seul les lettres, nombres, tirets bas et tirets sont autorisés." + +#: forms.py:33 +msgid "The Folder already exists." +msgstr "Ce répertoire existe déjà." + +#: forms.py:36 +msgid "Disallowed Folder Name." +msgstr "Nom de fichier interdit." + +#: forms.py:49 +msgid "New Name" +msgstr "Nouveau nom" + +#: forms.py:59 +msgid "The File/Folder already exists." +msgstr "Ce fichier/répertoire existe déjà." + +#: forms.py:95 +msgid "File" +msgstr "Fichier" + +#: forms.py:96 +msgid "Use Image Generator" +msgstr "Utiliser le générateur d'images" + +#: forms.py:105 +msgid "File already exists." +msgstr "Le fichier existe déjà." + +#: forms.py:111 +msgid "Filename is not allowed." +msgstr "Ce nom de fichier n'est pas autorisé." + +#: forms.py:116 +msgid "File extension is not allowed." +msgstr "Cette extension de fichier n'est pas autorisée." + +#: forms.py:121 +msgid "Filesize exceeds allowed Upload Size." +msgstr "La taille du fichier est supérieur à la taille maximale autorisée." + +#: functions.py:84 +msgid "Home" +msgstr "Accueil" + +#: functions.py:279 +msgid "Thumbnail creation failed." +msgstr "La création de miniature à échouée." + +#: functions.py:334 functions.py:389 +msgid "Image creation failed." +msgstr "La création d'image à échouée." + +#: views.py:174 +msgid "FileBrowser" +msgstr "Navigateur de Fichiers" + +#: views.py:198 +#, python-format +msgid "The Folder %s was successfully created." +msgstr "Le répertoire %s a été créé avec succès." + +#: views.py:204 +msgid "Permission denied." +msgstr "Permission refusée." + +#: views.py:206 +msgid "Error creating directory." +msgstr "Impossible de créer le répertoire." + +#: views.py:214 views.py:215 templates/filebrowser/index.html:33 +msgid "New Folder" +msgstr "Nouveau répertoire" + +#: views.py:260 +msgid "Upload successful." +msgstr "L'envoi a réussi." + +#: views.py:273 templates/filebrowser/index.html:36 +#: templates/filebrowser/upload.html:62 +msgid "Upload" +msgstr "Upload" + +#: views.py:274 +msgid "Select files to upload" +msgstr "Sélectionner les fichiers à envoyer" + +#: views.py:304 +msgid "Thumbnail creation successful." +msgstr "Les miniatures ont été créée." + +#: views.py:354 +#, python-format +msgid "The file %s was successfully deleted." +msgstr "Le fichier %s a été supprimé." + +#: views.py:366 +#, python-format +msgid "The directory %s was successfully deleted." +msgstr "Le répertoire %s a été supprimé." + +#: views.py:417 +msgid "Error renaming Thumbnail." +msgstr "Impossible de renommer la miniature." + +#: views.py:423 +msgid "Renaming was successful." +msgstr "La miniature a été renommée." + +#: views.py:428 +msgid "Error." +msgstr "Erreur." + +#: views.py:437 templates/filebrowser/include/filelisting.html:52 +msgid "Rename" +msgstr "Renommer" + +#: views.py:438 +#, python-format +msgid "Rename \"%s\"" +msgstr "Renommer \"%s\"" + +#: views.py:475 +msgid "Successfully generated Images." +msgstr "Les images ont été générées." + +#: templates/filebrowser/append.html:5 templates/filebrowser/append.html:7 +#, fuzzy +msgid "File-Browser" +msgstr "Navigateur de Fichiers" + +#: templates/filebrowser/index.html:34 +msgid "Make Thumbs" +msgstr "Générer les miniatures" + +#: templates/filebrowser/index.html:35 +msgid "Generate Images" +msgstr "Générer les images" + +#: templates/filebrowser/makedir.html:24 templates/filebrowser/rename.html:22 +msgid "Please correct the following errors." +msgstr "Merci de corriger les erreurs suivantes." + +#: templates/filebrowser/makedir.html:34 templates/filebrowser/rename.html:33 +msgid "Submit" +msgstr "Envoyer" + +#: templates/filebrowser/upload.html:37 +msgid "Will use image generator." +msgstr "Utiliser le générateur d'images." + +#: templates/filebrowser/upload.html:47 +msgid "Help" +msgstr "Aide" + +#: templates/filebrowser/upload.html:51 +msgid "Allowed" +msgstr "Autorisé" + +#: templates/filebrowser/upload.html:57 +msgid "Max. Filesize" +msgstr "Taille Max." + +#: templates/filebrowser/include/filelisting.html:8 +msgid "Select" +msgstr "Sélectionner" + +#: templates/filebrowser/include/filelisting.html:15 +msgid "Select File" +msgstr "Sélectionner le fichier" + +#: templates/filebrowser/include/filelisting.html:26 +msgid "Make Thumbnail" +msgstr "Générer une miniature" + +#: templates/filebrowser/include/filelisting.html:29 +msgid "View Image" +msgstr "Voir l'image" + +#: templates/filebrowser/include/filelisting.html:46 +msgid "Generate Image Versions" +msgstr "Générer des versions de l'image" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Are you sure you want to delete this file?" +msgstr "Êtes-vous sur de vouloir supprimer ce fichier ?" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Delete File" +msgstr "Supprimer le fichier" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Are you sure you want to delete this Folder?" +msgstr "Êtes-vous sur de vouloir supprimer ce répertoire ?" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Delete Folder" +msgstr "Supprimer le répertoire" + +#: templates/filebrowser/include/filter.html:15 +msgid "Filter" +msgstr "Filtrer" + +#: templates/filebrowser/include/filter.html:21 +msgid "By Date" +msgstr "Par date" + +#: templates/filebrowser/include/filter.html:23 +msgid "Any Date" +msgstr "Toutes" + +#: templates/filebrowser/include/filter.html:25 +msgid "Today" +msgstr "Aujourd'hui" + +#: templates/filebrowser/include/filter.html:27 +msgid "Past 7 days" +msgstr "Semaine dernière" + +#: templates/filebrowser/include/filter.html:29 +msgid "Past 30 days" +msgstr "Mois dernier" + +#: templates/filebrowser/include/filter.html:31 +msgid "This year" +msgstr "Cette année" + +#: templates/filebrowser/include/filter.html:39 +msgid "By Type" +msgstr "Par type" + +#: templates/filebrowser/include/filter.html:41 +msgid "All" +msgstr "Alle" + +#: templates/filebrowser/include/paginator.html:5 +msgid "No Items Found." +msgstr "Aucun article." + +#: templates/filebrowser/include/paginator.html:10 +#, python-format +msgid "%(counter)s Item" +msgid_plural "%(counter)s Items" +msgstr[0] "%(counter)s article" +msgstr[1] "%(counter)s articles" + +#: templates/filebrowser/include/paginator.html:16 +msgid "No Items." +msgstr "Aucun article." + +#: templates/filebrowser/include/tableheader.html:13 +#: templates/filebrowser/include/tableheader.html:14 +msgid "Filename" +msgstr "Nom" + +#: templates/filebrowser/include/tableheader.html:20 +#: templates/filebrowser/include/tableheader.html:21 +msgid "Size" +msgstr "Taille" + +#: templates/filebrowser/include/tableheader.html:23 +#: templates/filebrowser/include/tableheader.html:24 +msgid "Date" +msgstr "Date" + +#: templates/filebrowser/include/toolbar.html:14 +msgid "Go" +msgstr "Chercher" + +#: templates/filebrowser/include/toolbar.html:16 +#, python-format +msgid "%(counter)s Item found" +msgid_plural "%(counter)s Items found" +msgstr[0] "%(counter)s article trouvé" +msgstr[1] "%(counter)s articles trouvés" + +#: templates/filebrowser/include/toolbar.html:17 +#, python-format +msgid "%(counter)s Item total" +msgid_plural "%(counter)s Items total" +msgstr[0] "%(counter)s article total" +msgstr[1] "%(counter)s articles total" + +msgid "Folder" +msgstr "Répertoire" + +msgid "Image" +msgstr "Image" + +msgid "Document" +msgstr "Document" + +msgid "Code" +msgstr "Code" + +msgid "Sound" +msgstr "Son" \ No newline at end of file diff --git a/apps/filebrowser/locale/it/.svn/all-wcprops b/apps/filebrowser/locale/it/.svn/all-wcprops new file mode 100644 index 00000000..501f80ae --- /dev/null +++ b/apps/filebrowser/locale/it/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 62 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/it +END diff --git a/apps/filebrowser/locale/it/.svn/entries b/apps/filebrowser/locale/it/.svn/entries new file mode 100644 index 00000000..b2ac8699 --- /dev/null +++ b/apps/filebrowser/locale/it/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/locale/it +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +LC_MESSAGES +dir + diff --git a/apps/filebrowser/locale/it/LC_MESSAGES/.svn/all-wcprops b/apps/filebrowser/locale/it/LC_MESSAGES/.svn/all-wcprops new file mode 100644 index 00000000..e5382e89 --- /dev/null +++ b/apps/filebrowser/locale/it/LC_MESSAGES/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/it/LC_MESSAGES +END +django.po +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/it/LC_MESSAGES/django.po +END +django.mo +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/it/LC_MESSAGES/django.mo +END diff --git a/apps/filebrowser/locale/it/LC_MESSAGES/.svn/entries b/apps/filebrowser/locale/it/LC_MESSAGES/.svn/entries new file mode 100644 index 00000000..78d5a81f --- /dev/null +++ b/apps/filebrowser/locale/it/LC_MESSAGES/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/locale/it/LC_MESSAGES +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +django.po +file + + + + +2009-11-05T20:58:49.000000Z +1de7beb6d46ed6ca848539fd1d0845c7 +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +8586 + +django.mo +file + + + + +2009-11-05T20:58:49.000000Z +977100aa26f0b8f39872acfcbfa221e3 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +3542 + diff --git a/apps/filebrowser/locale/it/LC_MESSAGES/.svn/prop-base/django.mo.svn-base b/apps/filebrowser/locale/it/LC_MESSAGES/.svn/prop-base/django.mo.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/locale/it/LC_MESSAGES/.svn/prop-base/django.mo.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/locale/it/LC_MESSAGES/.svn/text-base/django.mo.svn-base b/apps/filebrowser/locale/it/LC_MESSAGES/.svn/text-base/django.mo.svn-base new file mode 100644 index 00000000..90e8cdcb Binary files /dev/null and b/apps/filebrowser/locale/it/LC_MESSAGES/.svn/text-base/django.mo.svn-base differ diff --git a/apps/filebrowser/locale/it/LC_MESSAGES/.svn/text-base/django.po.svn-base b/apps/filebrowser/locale/it/LC_MESSAGES/.svn/text-base/django.po.svn-base new file mode 100644 index 00000000..69682865 --- /dev/null +++ b/apps/filebrowser/locale/it/LC_MESSAGES/.svn/text-base/django.po.svn-base @@ -0,0 +1,356 @@ +# translation of django.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Alberto BOTTARINI , 2009. +msgid "" +msgstr "" +"Project-Id-Version: django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 21:24+0000\n" +"PO-Revision-Date: 2009-02-04 14:02+0100\n" +"Last-Translator: Alberto BOTTARINI \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: fields.py:27 +#, python-format +msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." +msgstr "" +"Assicurati che il testo abbia al massimo %(max)d caratteri (ora sono %" +"(length)d)" + +#: fields.py:28 +#, python-format +msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." +msgstr "" +"Assicurati che il testo abbia come minimo %(min)d caratteri (ora sono %" +"(length)d)" + +#: fields.py:29 +#, python-format +msgid "Extension %(ext)s is not allowed. Only %(allowed)s is allowed." +msgstr "L'estensione %(ext)s è vietata. Sono accettate: %(allowed)s" + +#: forms.py:23 +msgid "Name" +msgstr "" + +#: forms.py:23 forms.py:46 +#, fuzzy +msgid "" +"The Name will automatically be converted to lowercase. Only letters, " +"numbers, underscores and hyphens are allowed." +msgstr "" +"Il nome del file verrà sostituito con le lettere minuscole.Sono accettati " +"solo lettere. numeri, underscore e accenti." + +#: forms.py:30 forms.py:53 +msgid "Only letters, numbers, underscores and hyphens are allowed." +msgstr "Sono accettati solo lettere. numeri, underscore e accenti." + +#: forms.py:33 +#, fuzzy +msgid "The Folder already exists." +msgstr "La cartella esiste già" + +#: forms.py:46 +msgid "New Name" +msgstr "" + +#: forms.py:56 +#, fuzzy +msgid "The File/Folder already exists." +msgstr "Il file/cartella esiste già" + +#: forms.py:92 +#, fuzzy +msgid "File" +msgstr "Filtro" + +#: forms.py:93 +#, fuzzy +msgid "Use Image Generator" +msgstr "Usa il generatore di immagini" + +#: forms.py:102 +msgid "File already exists." +msgstr "Il file esiste già" + +#: forms.py:108 +msgid "Filename is not allowed." +msgstr "Filename non permesso" + +#: forms.py:113 +msgid "File extension is not allowed." +msgstr "Estensione non permessa" + +#: forms.py:118 +msgid "Filesize exceeds allowed Upload Size." +msgstr "Il file eccede il limite" + +#: functions.py:84 +msgid "Home" +msgstr "Home" + +#: functions.py:276 +msgid "Thumbnail creation failed." +msgstr "Errore nella creazione delle thumbnail" + +#: functions.py:331 functions.py:398 +msgid "Image creation failed." +msgstr "Errore nella creazione dell'immagine" + +#: views.py:165 +msgid "FileBrowser" +msgstr "FileBrowser" + +#: views.py:188 +#, fuzzy, python-format +msgid "The Folder %s was successfully created." +msgstr "Cartella %s creata con successo" + +#: views.py:194 +msgid "Permission denied." +msgstr "Permesso negato" + +#: views.py:196 +msgid "Error creating directory." +msgstr "Errore nella creazione della cartella" + +#: views.py:204 views.py:205 templates/filebrowser/index.html:30 +#, fuzzy +msgid "New Folder" +msgstr "Elimina la cartella" + +#: views.py:250 +msgid "Upload successful." +msgstr "Upload effettuato con successo" + +#: views.py:263 templates/filebrowser/index.html:33 +#: templates/filebrowser/upload.html:62 +msgid "Upload" +msgstr "" + +#: views.py:264 +msgid "Select files to upload" +msgstr "Seleziona i file da uploadare" + +#: views.py:294 +msgid "Thumbnail creation successful." +msgstr "Creazione thumbnail effettuata con successo" + +#: views.py:344 +#, python-format +msgid "The file %s was successfully deleted." +msgstr "Eliminazione di %s effettuata con successo" + +#: views.py:356 +#, python-format +msgid "The directory %s was successfully deleted." +msgstr "Eliminazione di %s effettuata con successo" + +#: views.py:407 +msgid "Error renaming Thumbnail." +msgstr "Errore nella rinominazione delle thumbnail" + +#: views.py:413 +msgid "Renaming was successful." +msgstr "Rinominazione effettuata con successo" + +#: views.py:418 +msgid "Error." +msgstr "Errore" + +#: views.py:427 templates/filebrowser/include/filelisting.html:52 +#, fuzzy +msgid "Rename" +msgstr "Nome del file" + +#: views.py:428 +#, python-format +msgid "Rename \"%s\"" +msgstr "Rinomina \"%s\"" + +#: views.py:465 +msgid "Successfully generated Images." +msgstr "Immagini generate con successo" + +#: templates/filebrowser/index.html:31 +msgid "Make Thumbs" +msgstr "Genera le thumbnail" + +#: templates/filebrowser/index.html:32 +msgid "Generate Images" +msgstr "Genera le immagini" + +#: templates/filebrowser/makedir.html:24 templates/filebrowser/rename.html:22 +msgid "Please correct the following errors." +msgstr "" + +#: templates/filebrowser/makedir.html:34 templates/filebrowser/rename.html:33 +msgid "Submit" +msgstr "Invia" + +#: templates/filebrowser/upload.html:37 +#, fuzzy +msgid "Will use image generator." +msgstr "Usa il generatore di immagini" + +#: templates/filebrowser/upload.html:47 +msgid "Help" +msgstr "Aiuto" + +#: templates/filebrowser/upload.html:51 +msgid "Allowed" +msgstr "Accettate" + +#: templates/filebrowser/upload.html:57 +msgid "Max. Filesize" +msgstr "Dimensione massima" + +#: templates/filebrowser/include/filelisting.html:8 +#, fuzzy +msgid "Select" +msgstr "Seleziona un file" + +#: templates/filebrowser/include/filelisting.html:15 +msgid "Select File" +msgstr "Seleziona un file" + +#: templates/filebrowser/include/filelisting.html:26 +msgid "Make Thumbnail" +msgstr "Genera la thumbnail" + +#: templates/filebrowser/include/filelisting.html:29 +msgid "View Image" +msgstr "Guarda immagine" + +#: templates/filebrowser/include/filelisting.html:46 +msgid "Generate Image Versions" +msgstr "Genera le immagini" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Are you sure you want to delete this file?" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Delete File" +msgstr "Elimina il file" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Are you sure you want to delete this Folder?" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Delete Folder" +msgstr "Elimina la cartella" + +#: templates/filebrowser/include/filter.html:15 +msgid "Filter" +msgstr "Filtro" + +#: templates/filebrowser/include/filter.html:21 +msgid "By Date" +msgstr "Per data" + +#: templates/filebrowser/include/filter.html:23 +msgid "Any Date" +msgstr "Qualsiasi data" + +#: templates/filebrowser/include/filter.html:25 +msgid "Today" +msgstr "Oggi" + +#: templates/filebrowser/include/filter.html:27 +msgid "Past 7 days" +msgstr "Ultimi 7 giorni" + +#: templates/filebrowser/include/filter.html:29 +msgid "Past 30 days" +msgstr "Questo mese" + +#: templates/filebrowser/include/filter.html:31 +msgid "This year" +msgstr "Quest'anno" + +#: templates/filebrowser/include/filter.html:39 +msgid "By Type" +msgstr "Per tipo" + +#: templates/filebrowser/include/filter.html:41 +msgid "All" +msgstr "Tutti" + +#: templates/filebrowser/include/paginator.html:5 +#, fuzzy +msgid "No Items Found." +msgstr "Nessun file trovato" + +#: templates/filebrowser/include/paginator.html:10 +#, python-format +msgid "%(counter)s Item" +msgid_plural "%(counter)s Items" +msgstr[0] "" +msgstr[1] "" + +#: templates/filebrowser/include/paginator.html:16 +msgid "No Items." +msgstr "" + +#: templates/filebrowser/include/tableheader.html:13 +#: templates/filebrowser/include/tableheader.html:14 +msgid "Filename" +msgstr "Nome del file" + +#: templates/filebrowser/include/tableheader.html:20 +#: templates/filebrowser/include/tableheader.html:21 +msgid "Size" +msgstr "Dimensione" + +#: templates/filebrowser/include/tableheader.html:23 +#: templates/filebrowser/include/tableheader.html:24 +msgid "Date" +msgstr "Data" + +#: templates/filebrowser/include/toolbar.html:14 +msgid "Go" +msgstr "" + +#: templates/filebrowser/include/toolbar.html:16 +#, python-format +msgid "%(counter)s Item found" +msgid_plural "%(counter)s Items found" +msgstr[0] "" +msgstr[1] "" + +#: templates/filebrowser/include/toolbar.html:17 +#, python-format +msgid "%(counter)s Item total" +msgid_plural "%(counter)s Items total" +msgstr[0] "" +msgstr[1] "" + +#~ msgid "" +#~ "The directory will automatically be converted to lowercase. Only letters, " +#~ "numbers, underscores and hyphens are allowed." +#~ msgstr "" +#~ "Il nome della cartella verrà sostituito con le lettere minuscole.Sono " +#~ "accettati solo lettere. numeri, underscore e accenti." + +#~ msgid "Make directory" +#~ msgstr "Nuova cartella" + +#~ msgid "Make Directory" +#~ msgstr "Nuova cartella" + +#~ msgid "Multiple Upload" +#~ msgstr "Chargement de fichiers" + +#~ msgid "Rename File" +#~ msgstr "Rinomina il file" + +#~ msgid "No Files" +#~ msgstr "Nessun file" diff --git a/apps/filebrowser/locale/it/LC_MESSAGES/django.mo b/apps/filebrowser/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 00000000..90e8cdcb Binary files /dev/null and b/apps/filebrowser/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/filebrowser/locale/it/LC_MESSAGES/django.po b/apps/filebrowser/locale/it/LC_MESSAGES/django.po new file mode 100644 index 00000000..69682865 --- /dev/null +++ b/apps/filebrowser/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,356 @@ +# translation of django.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Alberto BOTTARINI , 2009. +msgid "" +msgstr "" +"Project-Id-Version: django\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-19 21:24+0000\n" +"PO-Revision-Date: 2009-02-04 14:02+0100\n" +"Last-Translator: Alberto BOTTARINI \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: fields.py:27 +#, python-format +msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." +msgstr "" +"Assicurati che il testo abbia al massimo %(max)d caratteri (ora sono %" +"(length)d)" + +#: fields.py:28 +#, python-format +msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." +msgstr "" +"Assicurati che il testo abbia come minimo %(min)d caratteri (ora sono %" +"(length)d)" + +#: fields.py:29 +#, python-format +msgid "Extension %(ext)s is not allowed. Only %(allowed)s is allowed." +msgstr "L'estensione %(ext)s è vietata. Sono accettate: %(allowed)s" + +#: forms.py:23 +msgid "Name" +msgstr "" + +#: forms.py:23 forms.py:46 +#, fuzzy +msgid "" +"The Name will automatically be converted to lowercase. Only letters, " +"numbers, underscores and hyphens are allowed." +msgstr "" +"Il nome del file verrà sostituito con le lettere minuscole.Sono accettati " +"solo lettere. numeri, underscore e accenti." + +#: forms.py:30 forms.py:53 +msgid "Only letters, numbers, underscores and hyphens are allowed." +msgstr "Sono accettati solo lettere. numeri, underscore e accenti." + +#: forms.py:33 +#, fuzzy +msgid "The Folder already exists." +msgstr "La cartella esiste già" + +#: forms.py:46 +msgid "New Name" +msgstr "" + +#: forms.py:56 +#, fuzzy +msgid "The File/Folder already exists." +msgstr "Il file/cartella esiste già" + +#: forms.py:92 +#, fuzzy +msgid "File" +msgstr "Filtro" + +#: forms.py:93 +#, fuzzy +msgid "Use Image Generator" +msgstr "Usa il generatore di immagini" + +#: forms.py:102 +msgid "File already exists." +msgstr "Il file esiste già" + +#: forms.py:108 +msgid "Filename is not allowed." +msgstr "Filename non permesso" + +#: forms.py:113 +msgid "File extension is not allowed." +msgstr "Estensione non permessa" + +#: forms.py:118 +msgid "Filesize exceeds allowed Upload Size." +msgstr "Il file eccede il limite" + +#: functions.py:84 +msgid "Home" +msgstr "Home" + +#: functions.py:276 +msgid "Thumbnail creation failed." +msgstr "Errore nella creazione delle thumbnail" + +#: functions.py:331 functions.py:398 +msgid "Image creation failed." +msgstr "Errore nella creazione dell'immagine" + +#: views.py:165 +msgid "FileBrowser" +msgstr "FileBrowser" + +#: views.py:188 +#, fuzzy, python-format +msgid "The Folder %s was successfully created." +msgstr "Cartella %s creata con successo" + +#: views.py:194 +msgid "Permission denied." +msgstr "Permesso negato" + +#: views.py:196 +msgid "Error creating directory." +msgstr "Errore nella creazione della cartella" + +#: views.py:204 views.py:205 templates/filebrowser/index.html:30 +#, fuzzy +msgid "New Folder" +msgstr "Elimina la cartella" + +#: views.py:250 +msgid "Upload successful." +msgstr "Upload effettuato con successo" + +#: views.py:263 templates/filebrowser/index.html:33 +#: templates/filebrowser/upload.html:62 +msgid "Upload" +msgstr "" + +#: views.py:264 +msgid "Select files to upload" +msgstr "Seleziona i file da uploadare" + +#: views.py:294 +msgid "Thumbnail creation successful." +msgstr "Creazione thumbnail effettuata con successo" + +#: views.py:344 +#, python-format +msgid "The file %s was successfully deleted." +msgstr "Eliminazione di %s effettuata con successo" + +#: views.py:356 +#, python-format +msgid "The directory %s was successfully deleted." +msgstr "Eliminazione di %s effettuata con successo" + +#: views.py:407 +msgid "Error renaming Thumbnail." +msgstr "Errore nella rinominazione delle thumbnail" + +#: views.py:413 +msgid "Renaming was successful." +msgstr "Rinominazione effettuata con successo" + +#: views.py:418 +msgid "Error." +msgstr "Errore" + +#: views.py:427 templates/filebrowser/include/filelisting.html:52 +#, fuzzy +msgid "Rename" +msgstr "Nome del file" + +#: views.py:428 +#, python-format +msgid "Rename \"%s\"" +msgstr "Rinomina \"%s\"" + +#: views.py:465 +msgid "Successfully generated Images." +msgstr "Immagini generate con successo" + +#: templates/filebrowser/index.html:31 +msgid "Make Thumbs" +msgstr "Genera le thumbnail" + +#: templates/filebrowser/index.html:32 +msgid "Generate Images" +msgstr "Genera le immagini" + +#: templates/filebrowser/makedir.html:24 templates/filebrowser/rename.html:22 +msgid "Please correct the following errors." +msgstr "" + +#: templates/filebrowser/makedir.html:34 templates/filebrowser/rename.html:33 +msgid "Submit" +msgstr "Invia" + +#: templates/filebrowser/upload.html:37 +#, fuzzy +msgid "Will use image generator." +msgstr "Usa il generatore di immagini" + +#: templates/filebrowser/upload.html:47 +msgid "Help" +msgstr "Aiuto" + +#: templates/filebrowser/upload.html:51 +msgid "Allowed" +msgstr "Accettate" + +#: templates/filebrowser/upload.html:57 +msgid "Max. Filesize" +msgstr "Dimensione massima" + +#: templates/filebrowser/include/filelisting.html:8 +#, fuzzy +msgid "Select" +msgstr "Seleziona un file" + +#: templates/filebrowser/include/filelisting.html:15 +msgid "Select File" +msgstr "Seleziona un file" + +#: templates/filebrowser/include/filelisting.html:26 +msgid "Make Thumbnail" +msgstr "Genera la thumbnail" + +#: templates/filebrowser/include/filelisting.html:29 +msgid "View Image" +msgstr "Guarda immagine" + +#: templates/filebrowser/include/filelisting.html:46 +msgid "Generate Image Versions" +msgstr "Genera le immagini" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Are you sure you want to delete this file?" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Delete File" +msgstr "Elimina il file" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Are you sure you want to delete this Folder?" +msgstr "" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Delete Folder" +msgstr "Elimina la cartella" + +#: templates/filebrowser/include/filter.html:15 +msgid "Filter" +msgstr "Filtro" + +#: templates/filebrowser/include/filter.html:21 +msgid "By Date" +msgstr "Per data" + +#: templates/filebrowser/include/filter.html:23 +msgid "Any Date" +msgstr "Qualsiasi data" + +#: templates/filebrowser/include/filter.html:25 +msgid "Today" +msgstr "Oggi" + +#: templates/filebrowser/include/filter.html:27 +msgid "Past 7 days" +msgstr "Ultimi 7 giorni" + +#: templates/filebrowser/include/filter.html:29 +msgid "Past 30 days" +msgstr "Questo mese" + +#: templates/filebrowser/include/filter.html:31 +msgid "This year" +msgstr "Quest'anno" + +#: templates/filebrowser/include/filter.html:39 +msgid "By Type" +msgstr "Per tipo" + +#: templates/filebrowser/include/filter.html:41 +msgid "All" +msgstr "Tutti" + +#: templates/filebrowser/include/paginator.html:5 +#, fuzzy +msgid "No Items Found." +msgstr "Nessun file trovato" + +#: templates/filebrowser/include/paginator.html:10 +#, python-format +msgid "%(counter)s Item" +msgid_plural "%(counter)s Items" +msgstr[0] "" +msgstr[1] "" + +#: templates/filebrowser/include/paginator.html:16 +msgid "No Items." +msgstr "" + +#: templates/filebrowser/include/tableheader.html:13 +#: templates/filebrowser/include/tableheader.html:14 +msgid "Filename" +msgstr "Nome del file" + +#: templates/filebrowser/include/tableheader.html:20 +#: templates/filebrowser/include/tableheader.html:21 +msgid "Size" +msgstr "Dimensione" + +#: templates/filebrowser/include/tableheader.html:23 +#: templates/filebrowser/include/tableheader.html:24 +msgid "Date" +msgstr "Data" + +#: templates/filebrowser/include/toolbar.html:14 +msgid "Go" +msgstr "" + +#: templates/filebrowser/include/toolbar.html:16 +#, python-format +msgid "%(counter)s Item found" +msgid_plural "%(counter)s Items found" +msgstr[0] "" +msgstr[1] "" + +#: templates/filebrowser/include/toolbar.html:17 +#, python-format +msgid "%(counter)s Item total" +msgid_plural "%(counter)s Items total" +msgstr[0] "" +msgstr[1] "" + +#~ msgid "" +#~ "The directory will automatically be converted to lowercase. Only letters, " +#~ "numbers, underscores and hyphens are allowed." +#~ msgstr "" +#~ "Il nome della cartella verrà sostituito con le lettere minuscole.Sono " +#~ "accettati solo lettere. numeri, underscore e accenti." + +#~ msgid "Make directory" +#~ msgstr "Nuova cartella" + +#~ msgid "Make Directory" +#~ msgstr "Nuova cartella" + +#~ msgid "Multiple Upload" +#~ msgstr "Chargement de fichiers" + +#~ msgid "Rename File" +#~ msgstr "Rinomina il file" + +#~ msgid "No Files" +#~ msgstr "Nessun file" diff --git a/apps/filebrowser/locale/nl/.svn/all-wcprops b/apps/filebrowser/locale/nl/.svn/all-wcprops new file mode 100644 index 00000000..62ee80a9 --- /dev/null +++ b/apps/filebrowser/locale/nl/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 62 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/nl +END diff --git a/apps/filebrowser/locale/nl/.svn/entries b/apps/filebrowser/locale/nl/.svn/entries new file mode 100644 index 00000000..82165193 --- /dev/null +++ b/apps/filebrowser/locale/nl/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/locale/nl +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +LC_MESSAGES +dir + diff --git a/apps/filebrowser/locale/nl/LC_MESSAGES/.svn/all-wcprops b/apps/filebrowser/locale/nl/LC_MESSAGES/.svn/all-wcprops new file mode 100644 index 00000000..fdf0eadd --- /dev/null +++ b/apps/filebrowser/locale/nl/LC_MESSAGES/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/nl/LC_MESSAGES +END +django.po +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/nl/LC_MESSAGES/django.po +END +django.mo +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/nl/LC_MESSAGES/django.mo +END diff --git a/apps/filebrowser/locale/nl/LC_MESSAGES/.svn/entries b/apps/filebrowser/locale/nl/LC_MESSAGES/.svn/entries new file mode 100644 index 00000000..f0c7a649 --- /dev/null +++ b/apps/filebrowser/locale/nl/LC_MESSAGES/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/locale/nl/LC_MESSAGES +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +django.po +file + + + + +2009-11-05T20:58:49.000000Z +52c296a507227e52340035589cc4b100 +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +8019 + +django.mo +file + + + + +2009-11-05T20:58:49.000000Z +fb1459c89de85393460937ff2f02a356 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +5152 + diff --git a/apps/filebrowser/locale/nl/LC_MESSAGES/.svn/prop-base/django.mo.svn-base b/apps/filebrowser/locale/nl/LC_MESSAGES/.svn/prop-base/django.mo.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/locale/nl/LC_MESSAGES/.svn/prop-base/django.mo.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/locale/nl/LC_MESSAGES/.svn/text-base/django.mo.svn-base b/apps/filebrowser/locale/nl/LC_MESSAGES/.svn/text-base/django.mo.svn-base new file mode 100644 index 00000000..8a0bb8f3 Binary files /dev/null and b/apps/filebrowser/locale/nl/LC_MESSAGES/.svn/text-base/django.mo.svn-base differ diff --git a/apps/filebrowser/locale/nl/LC_MESSAGES/.svn/text-base/django.po.svn-base b/apps/filebrowser/locale/nl/LC_MESSAGES/.svn/text-base/django.po.svn-base new file mode 100644 index 00000000..35032548 --- /dev/null +++ b/apps/filebrowser/locale/nl/LC_MESSAGES/.svn/text-base/django.po.svn-base @@ -0,0 +1,319 @@ +# Dutch translation for django-filebrowser. +# Copyright (C) 2009 Patrick Kranzlmueller +# This file is distributed under the same license as the django-filebrowser package. +# Joost Cassee , 2009. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-16 13:51+0100\n" +"PO-Revision-Date: 2009-02-20 22:53+0100\n" +"Last-Translator: Joost Cassee \n" +"Language-Team: Dutch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: fields.py:27 +#, python-format +msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." +msgstr "" +"Dit veld mag maximaal %(max)d karakters bevatten (de huidige lengte is " +"%(length)d)." + +#: fields.py:28 +#, python-format +msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." +msgstr "" +"Dit veld moet minstens %(min)d karakters bevatten (de huidige lengte is " +"%(length)d)." + +#: fields.py:29 +#, python-format +msgid "Extension %(ext)s is not allowed. Only %(allowed)s is allowed." +msgstr "Extensie %(ext)s is niet toegestaand. Toegestaan zijn: %(allowed)s." + +#: forms.py:23 +msgid "Name" +msgstr "Naam" + +#: forms.py:23 forms.py:46 +msgid "" +"The Name will automatically be converted to lowercase. Only letters, " +"numbers, underscores and hyphens are allowed." +msgstr "" +"De naam wordt automatisch geconverteerd naar kleine letters. Alleen letters, " +"nummers, liggende streepjes en verbindingstreepjes zijn toegestaan." + +#: forms.py:30 forms.py:53 +msgid "Only letters, numbers, underscores and hyphens are allowed." +msgstr "" +"Alleen letters, nummers, liggende streepjes en verbindingstreepjes zijn " +"toegestaan." + +#: forms.py:33 +msgid "The Folder already exists." +msgstr "Deze map bestaat reeds." + +#: forms.py:46 +msgid "New Name" +msgstr "Nieuwe naam" + +#: forms.py:56 +msgid "The File/Folder already exists." +msgstr "Een map of bestand met deze naam bestaat reeds." + +#: forms.py:92 +msgid "File" +msgstr "Bestand" + +#: forms.py:93 +msgid "Use Image Generator" +msgstr "Maak afbeeldingsversies" + +#: forms.py:102 +msgid "File already exists." +msgstr "Bestand bestaat reeds." + +#: forms.py:108 +msgid "Filename is not allowed." +msgstr "Bestandsnaam is niet toegestaan." + +#: forms.py:113 +msgid "File extension is not allowed." +msgstr "Bestandsextensie is niet toegestaand" + +#: forms.py:118 +msgid "Filesize exceeds allowed Upload Size." +msgstr "Het bestand overschreidt de maximale upload grootte." + +#: functions.py:75 +msgid "Home" +msgstr "Start" + +#: functions.py:267 +msgid "Thumbnail creation failed." +msgstr "Fout bij het aanmaken van de voorbeeldafbeeldingen." + +#: functions.py:316 functions.py:377 +msgid "Image creation failed." +msgstr "Fout bij het aanmaken van de afbeeldingsversies." + +#: views.py:156 +msgid "FileBrowser" +msgstr "FileBrowser" + +#: views.py:179 +#, python-format +msgid "The Folder %s was successfully created." +msgstr "De map %s is aangemaakt." + +#: views.py:185 +msgid "Permission denied." +msgstr "Geen toestemming." + +#: views.py:187 +msgid "Error creating directory." +msgstr "Fout bij het aanmaken van de map." + +#: views.py:195 views.py:196 templates/filebrowser/index.html:30 +msgid "New Folder" +msgstr "Nieuwe map" + +#: views.py:235 +msgid "Upload successful." +msgstr "Upload geslaagd." + +#: views.py:248 templates/filebrowser/index.html:33 +#: templates/filebrowser/upload.html:62 +msgid "Upload" +msgstr "Uploaden" + +#: views.py:249 +msgid "Select files to upload" +msgstr "Selecteer bestanden voor upload" + +#: views.py:279 +msgid "Thumbnail creation successful." +msgstr "Voorbeeldafbeeldingen aangemaakt." + +#: views.py:329 +#, python-format +msgid "The file %s was successfully deleted." +msgstr "Bestand %s verwijderd." + +#: views.py:341 +#, python-format +msgid "The directory %s was successfully deleted." +msgstr "Map %s verwijderd." + +#: views.py:392 +msgid "Error renaming Thumbnail." +msgstr "Fout bij het hernoemen van de voorbeeldafbeelding." + +#: views.py:398 +msgid "Renaming was successful." +msgstr "Hernoemen geslaagd." + +#: views.py:403 +msgid "Error." +msgstr "Fout." + +#: views.py:412 templates/filebrowser/include/filelisting.html:52 +msgid "Rename" +msgstr "Hernoemen" + +#: views.py:413 +#, python-format +msgid "Rename \"%s\"" +msgstr "Hernoem \"%s\"" + +#: views.py:450 +msgid "Successfully generated Images." +msgstr "Afbeeldingsversies aangemaakt." + +#: templates/filebrowser/index.html:31 +msgid "Make Thumbs" +msgstr "Voorbeeldafbeeldingen aanmaken" + +#: templates/filebrowser/index.html:32 +msgid "Generate Images" +msgstr "Afbeeldingsversies aanmaken" + +#: templates/filebrowser/makedir.html:24 templates/filebrowser/rename.html:22 +msgid "Please correct the following errors." +msgstr "Corrigeer onderstaande fouten." + +#: templates/filebrowser/makedir.html:34 templates/filebrowser/rename.html:33 +msgid "Submit" +msgstr "OK" + +#: templates/filebrowser/upload.html:37 +msgid "Will use image generator." +msgstr "Afbeeldingsversies zullen worden aangemaakt." + +#: templates/filebrowser/upload.html:47 +msgid "Help" +msgstr "Help" + +#: templates/filebrowser/upload.html:51 +msgid "Allowed" +msgstr "Toegestaan" + +#: templates/filebrowser/upload.html:57 +msgid "Max. Filesize" +msgstr "Max. bestandsgrootte" + +#: templates/filebrowser/include/filelisting.html:8 +msgid "Select" +msgstr "Selecteren" + +#: templates/filebrowser/include/filelisting.html:15 +msgid "Select File" +msgstr "Selecteer bestand" + +#: templates/filebrowser/include/filelisting.html:26 +msgid "Make Thumbnail" +msgstr "Maak voorbeeldafbeelding" + +#: templates/filebrowser/include/filelisting.html:29 +msgid "View Image" +msgstr "Afbeelding tonen" + +#: templates/filebrowser/include/filelisting.html:46 +msgid "Generate Image Versions" +msgstr "Afbeeldingsversies aanmaken" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Delete File" +msgstr "Bestand verwijderen" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Delete Folder" +msgstr "Verwijder map" + +#: templates/filebrowser/include/filter.html:15 +msgid "Filter" +msgstr "Filter" + +#: templates/filebrowser/include/filter.html:21 +msgid "By Date" +msgstr "Op datum" + +#: templates/filebrowser/include/filter.html:23 +msgid "Any Date" +msgstr "Alle" + +#: templates/filebrowser/include/filter.html:25 +msgid "Today" +msgstr "Vandaag" + +#: templates/filebrowser/include/filter.html:27 +msgid "Past 7 days" +msgstr "Afgelopen 7 dagen" + +#: templates/filebrowser/include/filter.html:29 +msgid "Past 30 days" +msgstr "Afgelopen 30 dagen" + +#: templates/filebrowser/include/filter.html:31 +msgid "This year" +msgstr "Dit jaar" + +#: templates/filebrowser/include/filter.html:39 +msgid "By Type" +msgstr "Op type" + +#: templates/filebrowser/include/filter.html:41 +msgid "All" +msgstr "Alle" + +#: templates/filebrowser/include/paginator.html:5 +msgid "No Items Found." +msgstr "Geen objecten gevonden" + +#: templates/filebrowser/include/paginator.html:10 +#, python-format +msgid "%(counter)s Item" +msgid_plural "%(counter)s Items" +msgstr[0] "%(counter)s object" +msgstr[1] "(counter)s objecten" + +#: templates/filebrowser/include/paginator.html:16 +msgid "No Items." +msgstr "Geen objecten." + +#: templates/filebrowser/include/tableheader.html:13 +#: templates/filebrowser/include/tableheader.html:14 +msgid "Filename" +msgstr "Bestandsnaam" + +#: templates/filebrowser/include/tableheader.html:20 +#: templates/filebrowser/include/tableheader.html:21 +msgid "Size" +msgstr "Grootte" + +#: templates/filebrowser/include/tableheader.html:23 +#: templates/filebrowser/include/tableheader.html:24 +msgid "Date" +msgstr "Datum" + +#: templates/filebrowser/include/toolbar.html:14 +msgid "Go" +msgstr "Ga" + +#: templates/filebrowser/include/toolbar.html:16 +#, python-format +msgid "%(counter)s Item found" +msgid_plural "%(counter)s Items found" +msgstr[0] "%(counter)s object gevonden" +msgstr[1] "%(counter)s objecten gevonden" + +#: templates/filebrowser/include/toolbar.html:17 +#, python-format +msgid "%(counter)s Item total" +msgid_plural "%(counter)s Items total" +msgstr[0] "Totaal %(counter)s object" +msgstr[1] "Totaal %(counter)s objecten" diff --git a/apps/filebrowser/locale/nl/LC_MESSAGES/django.mo b/apps/filebrowser/locale/nl/LC_MESSAGES/django.mo new file mode 100644 index 00000000..8a0bb8f3 Binary files /dev/null and b/apps/filebrowser/locale/nl/LC_MESSAGES/django.mo differ diff --git a/apps/filebrowser/locale/nl/LC_MESSAGES/django.po b/apps/filebrowser/locale/nl/LC_MESSAGES/django.po new file mode 100644 index 00000000..35032548 --- /dev/null +++ b/apps/filebrowser/locale/nl/LC_MESSAGES/django.po @@ -0,0 +1,319 @@ +# Dutch translation for django-filebrowser. +# Copyright (C) 2009 Patrick Kranzlmueller +# This file is distributed under the same license as the django-filebrowser package. +# Joost Cassee , 2009. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-16 13:51+0100\n" +"PO-Revision-Date: 2009-02-20 22:53+0100\n" +"Last-Translator: Joost Cassee \n" +"Language-Team: Dutch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: fields.py:27 +#, python-format +msgid "Ensure this value has at most %(max)d characters (it has %(length)d)." +msgstr "" +"Dit veld mag maximaal %(max)d karakters bevatten (de huidige lengte is " +"%(length)d)." + +#: fields.py:28 +#, python-format +msgid "Ensure this value has at least %(min)d characters (it has %(length)d)." +msgstr "" +"Dit veld moet minstens %(min)d karakters bevatten (de huidige lengte is " +"%(length)d)." + +#: fields.py:29 +#, python-format +msgid "Extension %(ext)s is not allowed. Only %(allowed)s is allowed." +msgstr "Extensie %(ext)s is niet toegestaand. Toegestaan zijn: %(allowed)s." + +#: forms.py:23 +msgid "Name" +msgstr "Naam" + +#: forms.py:23 forms.py:46 +msgid "" +"The Name will automatically be converted to lowercase. Only letters, " +"numbers, underscores and hyphens are allowed." +msgstr "" +"De naam wordt automatisch geconverteerd naar kleine letters. Alleen letters, " +"nummers, liggende streepjes en verbindingstreepjes zijn toegestaan." + +#: forms.py:30 forms.py:53 +msgid "Only letters, numbers, underscores and hyphens are allowed." +msgstr "" +"Alleen letters, nummers, liggende streepjes en verbindingstreepjes zijn " +"toegestaan." + +#: forms.py:33 +msgid "The Folder already exists." +msgstr "Deze map bestaat reeds." + +#: forms.py:46 +msgid "New Name" +msgstr "Nieuwe naam" + +#: forms.py:56 +msgid "The File/Folder already exists." +msgstr "Een map of bestand met deze naam bestaat reeds." + +#: forms.py:92 +msgid "File" +msgstr "Bestand" + +#: forms.py:93 +msgid "Use Image Generator" +msgstr "Maak afbeeldingsversies" + +#: forms.py:102 +msgid "File already exists." +msgstr "Bestand bestaat reeds." + +#: forms.py:108 +msgid "Filename is not allowed." +msgstr "Bestandsnaam is niet toegestaan." + +#: forms.py:113 +msgid "File extension is not allowed." +msgstr "Bestandsextensie is niet toegestaand" + +#: forms.py:118 +msgid "Filesize exceeds allowed Upload Size." +msgstr "Het bestand overschreidt de maximale upload grootte." + +#: functions.py:75 +msgid "Home" +msgstr "Start" + +#: functions.py:267 +msgid "Thumbnail creation failed." +msgstr "Fout bij het aanmaken van de voorbeeldafbeeldingen." + +#: functions.py:316 functions.py:377 +msgid "Image creation failed." +msgstr "Fout bij het aanmaken van de afbeeldingsversies." + +#: views.py:156 +msgid "FileBrowser" +msgstr "FileBrowser" + +#: views.py:179 +#, python-format +msgid "The Folder %s was successfully created." +msgstr "De map %s is aangemaakt." + +#: views.py:185 +msgid "Permission denied." +msgstr "Geen toestemming." + +#: views.py:187 +msgid "Error creating directory." +msgstr "Fout bij het aanmaken van de map." + +#: views.py:195 views.py:196 templates/filebrowser/index.html:30 +msgid "New Folder" +msgstr "Nieuwe map" + +#: views.py:235 +msgid "Upload successful." +msgstr "Upload geslaagd." + +#: views.py:248 templates/filebrowser/index.html:33 +#: templates/filebrowser/upload.html:62 +msgid "Upload" +msgstr "Uploaden" + +#: views.py:249 +msgid "Select files to upload" +msgstr "Selecteer bestanden voor upload" + +#: views.py:279 +msgid "Thumbnail creation successful." +msgstr "Voorbeeldafbeeldingen aangemaakt." + +#: views.py:329 +#, python-format +msgid "The file %s was successfully deleted." +msgstr "Bestand %s verwijderd." + +#: views.py:341 +#, python-format +msgid "The directory %s was successfully deleted." +msgstr "Map %s verwijderd." + +#: views.py:392 +msgid "Error renaming Thumbnail." +msgstr "Fout bij het hernoemen van de voorbeeldafbeelding." + +#: views.py:398 +msgid "Renaming was successful." +msgstr "Hernoemen geslaagd." + +#: views.py:403 +msgid "Error." +msgstr "Fout." + +#: views.py:412 templates/filebrowser/include/filelisting.html:52 +msgid "Rename" +msgstr "Hernoemen" + +#: views.py:413 +#, python-format +msgid "Rename \"%s\"" +msgstr "Hernoem \"%s\"" + +#: views.py:450 +msgid "Successfully generated Images." +msgstr "Afbeeldingsversies aangemaakt." + +#: templates/filebrowser/index.html:31 +msgid "Make Thumbs" +msgstr "Voorbeeldafbeeldingen aanmaken" + +#: templates/filebrowser/index.html:32 +msgid "Generate Images" +msgstr "Afbeeldingsversies aanmaken" + +#: templates/filebrowser/makedir.html:24 templates/filebrowser/rename.html:22 +msgid "Please correct the following errors." +msgstr "Corrigeer onderstaande fouten." + +#: templates/filebrowser/makedir.html:34 templates/filebrowser/rename.html:33 +msgid "Submit" +msgstr "OK" + +#: templates/filebrowser/upload.html:37 +msgid "Will use image generator." +msgstr "Afbeeldingsversies zullen worden aangemaakt." + +#: templates/filebrowser/upload.html:47 +msgid "Help" +msgstr "Help" + +#: templates/filebrowser/upload.html:51 +msgid "Allowed" +msgstr "Toegestaan" + +#: templates/filebrowser/upload.html:57 +msgid "Max. Filesize" +msgstr "Max. bestandsgrootte" + +#: templates/filebrowser/include/filelisting.html:8 +msgid "Select" +msgstr "Selecteren" + +#: templates/filebrowser/include/filelisting.html:15 +msgid "Select File" +msgstr "Selecteer bestand" + +#: templates/filebrowser/include/filelisting.html:26 +msgid "Make Thumbnail" +msgstr "Maak voorbeeldafbeelding" + +#: templates/filebrowser/include/filelisting.html:29 +msgid "View Image" +msgstr "Afbeelding tonen" + +#: templates/filebrowser/include/filelisting.html:46 +msgid "Generate Image Versions" +msgstr "Afbeeldingsversies aanmaken" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Delete File" +msgstr "Bestand verwijderen" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Delete Folder" +msgstr "Verwijder map" + +#: templates/filebrowser/include/filter.html:15 +msgid "Filter" +msgstr "Filter" + +#: templates/filebrowser/include/filter.html:21 +msgid "By Date" +msgstr "Op datum" + +#: templates/filebrowser/include/filter.html:23 +msgid "Any Date" +msgstr "Alle" + +#: templates/filebrowser/include/filter.html:25 +msgid "Today" +msgstr "Vandaag" + +#: templates/filebrowser/include/filter.html:27 +msgid "Past 7 days" +msgstr "Afgelopen 7 dagen" + +#: templates/filebrowser/include/filter.html:29 +msgid "Past 30 days" +msgstr "Afgelopen 30 dagen" + +#: templates/filebrowser/include/filter.html:31 +msgid "This year" +msgstr "Dit jaar" + +#: templates/filebrowser/include/filter.html:39 +msgid "By Type" +msgstr "Op type" + +#: templates/filebrowser/include/filter.html:41 +msgid "All" +msgstr "Alle" + +#: templates/filebrowser/include/paginator.html:5 +msgid "No Items Found." +msgstr "Geen objecten gevonden" + +#: templates/filebrowser/include/paginator.html:10 +#, python-format +msgid "%(counter)s Item" +msgid_plural "%(counter)s Items" +msgstr[0] "%(counter)s object" +msgstr[1] "(counter)s objecten" + +#: templates/filebrowser/include/paginator.html:16 +msgid "No Items." +msgstr "Geen objecten." + +#: templates/filebrowser/include/tableheader.html:13 +#: templates/filebrowser/include/tableheader.html:14 +msgid "Filename" +msgstr "Bestandsnaam" + +#: templates/filebrowser/include/tableheader.html:20 +#: templates/filebrowser/include/tableheader.html:21 +msgid "Size" +msgstr "Grootte" + +#: templates/filebrowser/include/tableheader.html:23 +#: templates/filebrowser/include/tableheader.html:24 +msgid "Date" +msgstr "Datum" + +#: templates/filebrowser/include/toolbar.html:14 +msgid "Go" +msgstr "Ga" + +#: templates/filebrowser/include/toolbar.html:16 +#, python-format +msgid "%(counter)s Item found" +msgid_plural "%(counter)s Items found" +msgstr[0] "%(counter)s object gevonden" +msgstr[1] "%(counter)s objecten gevonden" + +#: templates/filebrowser/include/toolbar.html:17 +#, python-format +msgid "%(counter)s Item total" +msgid_plural "%(counter)s Items total" +msgstr[0] "Totaal %(counter)s object" +msgstr[1] "Totaal %(counter)s objecten" diff --git a/apps/filebrowser/locale/ru/.svn/all-wcprops b/apps/filebrowser/locale/ru/.svn/all-wcprops new file mode 100644 index 00000000..e21d1ff6 --- /dev/null +++ b/apps/filebrowser/locale/ru/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 62 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/ru +END diff --git a/apps/filebrowser/locale/ru/.svn/entries b/apps/filebrowser/locale/ru/.svn/entries new file mode 100644 index 00000000..ad32cd1d --- /dev/null +++ b/apps/filebrowser/locale/ru/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/locale/ru +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +LC_MESSAGES +dir + diff --git a/apps/filebrowser/locale/ru/LC_MESSAGES/.svn/all-wcprops b/apps/filebrowser/locale/ru/LC_MESSAGES/.svn/all-wcprops new file mode 100644 index 00000000..0838209e --- /dev/null +++ b/apps/filebrowser/locale/ru/LC_MESSAGES/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/ru/LC_MESSAGES +END +django.po +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/ru/LC_MESSAGES/django.po +END +django.mo +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/ru/LC_MESSAGES/django.mo +END diff --git a/apps/filebrowser/locale/ru/LC_MESSAGES/.svn/entries b/apps/filebrowser/locale/ru/LC_MESSAGES/.svn/entries new file mode 100644 index 00000000..9f54aec9 --- /dev/null +++ b/apps/filebrowser/locale/ru/LC_MESSAGES/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/locale/ru/LC_MESSAGES +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +django.po +file + + + + +2009-11-05T20:58:49.000000Z +d0cfe787c9e40fd48fb4dc137ca920b4 +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +9016 + +django.mo +file + + + + +2009-11-05T20:58:49.000000Z +a80034152531c66371273a4aad453a9c +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +6095 + diff --git a/apps/filebrowser/locale/ru/LC_MESSAGES/.svn/prop-base/django.mo.svn-base b/apps/filebrowser/locale/ru/LC_MESSAGES/.svn/prop-base/django.mo.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/locale/ru/LC_MESSAGES/.svn/prop-base/django.mo.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/locale/ru/LC_MESSAGES/.svn/text-base/django.mo.svn-base b/apps/filebrowser/locale/ru/LC_MESSAGES/.svn/text-base/django.mo.svn-base new file mode 100644 index 00000000..2f0d22db Binary files /dev/null and b/apps/filebrowser/locale/ru/LC_MESSAGES/.svn/text-base/django.mo.svn-base differ diff --git a/apps/filebrowser/locale/ru/LC_MESSAGES/.svn/text-base/django.po.svn-base b/apps/filebrowser/locale/ru/LC_MESSAGES/.svn/text-base/django.po.svn-base new file mode 100644 index 00000000..6e755066 --- /dev/null +++ b/apps/filebrowser/locale/ru/LC_MESSAGES/.svn/text-base/django.po.svn-base @@ -0,0 +1,317 @@ +# Russian translation +# This file is distributed under the same license as the django-filebrowser package. +# Ivan Gromov , 2009. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: summer.is.gone@gmail.com\n" +"POT-Creation-Date: 2009-05-19 03:17+0600\n" +"PO-Revision-Date: 2009-05-19 03:52\n" +"Last-Translator: IVAN GROMOV \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: fields.py:96 +#, python-format +msgid "Extension %(ext)s is not allowed. Only %(allowed)s is allowed." +msgstr "Расширение %(ext)s запрещено. Разрешено только %(allowed)s." + +#: forms.py:23 +msgid "Name" +msgstr "Имя" + +#: forms.py:23 forms.py:49 +msgid "" +"The Name will automatically be converted to lowercase. Only letters, " +"numbers, underscores and hyphens are allowed." +msgstr "" +"Имя будет автоматически переведено в нижний регистр" +"Допускается вводить буквы, цифры, символы подчерка и дефиса." + +#: forms.py:30 forms.py:56 +msgid "Only letters, numbers, underscores and hyphens are allowed." +msgstr "Допускается вводить буквы, цифры, символы подчерка и дефиса." + +#: forms.py:33 +msgid "The Folder already exists." +msgstr "Папка уже существует." + +#: forms.py:36 +msgid "Disallowed Folder Name." +msgstr "Недопустимое имя папки." + +#: forms.py:49 +msgid "New Name" +msgstr "Новое имя" + +#: forms.py:59 +msgid "The File/Folder already exists." +msgstr "Файл/папка уже существуют." + +#: forms.py:95 +msgid "File" +msgstr "Файл" + +#: forms.py:96 +msgid "Use Image Generator" +msgstr "Использовать генератор изображений" + +#: forms.py:105 +msgid "File already exists." +msgstr "Файл уже существует." + +#: forms.py:111 +msgid "Filename is not allowed." +msgstr "Недопустимое имя файла." + +#: forms.py:116 +msgid "File extension is not allowed." +msgstr "Недопустимое расширение файла." + +#: forms.py:121 +msgid "Filesize exceeds allowed Upload Size." +msgstr "Размер файла превышает допустимый размер загрузки." + +#: functions.py:84 +msgid "Home" +msgstr "Начало" + +#: functions.py:279 +msgid "Thumbnail creation failed." +msgstr "Ошибка создания миниатюр." + +#: functions.py:334 functions.py:389 +msgid "Image creation failed." +msgstr "Ошибка создания изображений." + +#: views.py:174 +msgid "FileBrowser" +msgstr "Файловый менеджер" + +#: views.py:198 +#, python-format +msgid "The Folder %s was successfully created." +msgstr "Папка %s успешно создана." + +#: views.py:204 +msgid "Permission denied." +msgstr "Доступ запрещен." + +#: views.py:206 +msgid "Error creating directory." +msgstr "Ошибка создания папки." + +#: views.py:214 views.py:215 templates/filebrowser/index.html:33 +msgid "New Folder" +msgstr "Новая папка" + +#: views.py:260 +msgid "Upload successful." +msgstr "Загрузка завершена успешно." + +#: views.py:273 templates/filebrowser/index.html:36 +#: templates/filebrowser/upload.html:62 +msgid "Upload" +msgstr "Загрузить" + +#: views.py:274 +msgid "Select files to upload" +msgstr "Выберите файлы для загрузки" + +#: views.py:304 +msgid "Thumbnail creation successful." +msgstr "Миниатюры созданы." + +#: views.py:354 +#, python-format +msgid "The file %s was successfully deleted." +msgstr "Файл %s удален." + +#: views.py:366 +#, python-format +msgid "The directory %s was successfully deleted." +msgstr "Папка %s удалена." + +#: views.py:417 +msgid "Error renaming Thumbnail." +msgstr "Ошибка переименования миниатюры." + +#: views.py:423 +msgid "Renaming was successful." +msgstr "Переименовано." + +#: views.py:428 +msgid "Error." +msgstr "Ошибка." + +#: views.py:437 templates/filebrowser/include/filelisting.html:52 +msgid "Rename" +msgstr "Переименовать" + +#: views.py:438 +#, python-format +msgid "Rename \"%s\"" +msgstr "Переименовать \"%s\"" + +#: views.py:475 +msgid "Successfully generated Images." +msgstr "Изображения созданы." + +#: templates/filebrowser/append.html:5 templates/filebrowser/append.html:7 +msgid "File-Browser" +msgstr "Файловый менеджер" + +#: templates/filebrowser/index.html:34 +msgid "Make Thumbs" +msgstr "Создать миниатюры" + +#: templates/filebrowser/index.html:35 +msgid "Generate Images" +msgstr "Сгенерировать изображения" + +#: templates/filebrowser/makedir.html:24 templates/filebrowser/rename.html:22 +msgid "Please correct the following errors." +msgstr "Пожалуйста, исправьте ошибки." + +#: templates/filebrowser/makedir.html:34 templates/filebrowser/rename.html:33 +msgid "Submit" +msgstr "Отправить" + +#: templates/filebrowser/upload.html:37 +msgid "Will use image generator." +msgstr "Будет использован генератор изображений." + +#: templates/filebrowser/upload.html:47 +msgid "Help" +msgstr "Справка" + +#: templates/filebrowser/upload.html:51 +msgid "Allowed" +msgstr "Разрешено" + +#: templates/filebrowser/upload.html:57 +msgid "Max. Filesize" +msgstr "Макс. размер" + +#: templates/filebrowser/include/filelisting.html:8 +msgid "Select" +msgstr "Выберите" + +#: templates/filebrowser/include/filelisting.html:15 +msgid "Select File" +msgstr "Выберите файл" + +#: templates/filebrowser/include/filelisting.html:26 +msgid "Make Thumbnail" +msgstr "Создать миниатюры" + +#: templates/filebrowser/include/filelisting.html:29 +msgid "View Image" +msgstr "Просмотреть изображение" + +#: templates/filebrowser/include/filelisting.html:46 +msgid "Generate Image Versions" +msgstr "Создать миниатюры" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Are you sure you want to delete this file?" +msgstr "Вы уверены, что хотите удалить этот файл?" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Delete File" +msgstr "Удалить файл" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Are you sure you want to delete this Folder?" +msgstr "Вы уверены, что хотите удалить эту папку?" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Delete Folder" +msgstr "Удалить папку" + +#: templates/filebrowser/include/filter.html:15 +msgid "Filter" +msgstr "Фильтр" + +#: templates/filebrowser/include/filter.html:21 +msgid "By Date" +msgstr "По дате" + +#: templates/filebrowser/include/filter.html:23 +msgid "Any Date" +msgstr "За любое число" + +#: templates/filebrowser/include/filter.html:25 +msgid "Today" +msgstr "Сегодня" + +#: templates/filebrowser/include/filter.html:27 +msgid "Past 7 days" +msgstr "Последние 7 дней" + +#: templates/filebrowser/include/filter.html:29 +msgid "Past 30 days" +msgstr "Последние 30 дней" + +#: templates/filebrowser/include/filter.html:31 +msgid "This year" +msgstr "Этот год" + +#: templates/filebrowser/include/filter.html:39 +msgid "By Type" +msgstr "По типу" + +#: templates/filebrowser/include/filter.html:41 +msgid "All" +msgstr "Все" + +#: templates/filebrowser/include/paginator.html:5 +msgid "No Items Found." +msgstr "Не найдено" + +#: templates/filebrowser/include/paginator.html:10 +#, python-format +msgid "%(counter)s Item" +msgid_plural "%(counter)s Items" +msgstr[0] "%(counter)s элемент" +msgstr[1] "Элементов: %(counter)s" + +#: templates/filebrowser/include/paginator.html:16 +msgid "No Items." +msgstr "Ничего нет" + +#: templates/filebrowser/include/tableheader.html:13 +#: templates/filebrowser/include/tableheader.html:14 +msgid "Filename" +msgstr "Имя файла" + +#: templates/filebrowser/include/tableheader.html:20 +#: templates/filebrowser/include/tableheader.html:21 +msgid "Size" +msgstr "Размер" + +#: templates/filebrowser/include/tableheader.html:23 +#: templates/filebrowser/include/tableheader.html:24 +msgid "Date" +msgstr "Дата" + +#: templates/filebrowser/include/toolbar.html:14 +msgid "Go" +msgstr "Вперед" + +#: templates/filebrowser/include/toolbar.html:16 +#, python-format +msgid "%(counter)s Item found" +msgid_plural "%(counter)s Items found" +msgstr[0] "%(counter)s элемент найден" +msgstr[1] "%(counter)s элементов найдено" + +#: templates/filebrowser/include/toolbar.html:17 +#, python-format +msgid "%(counter)s Item total" +msgid_plural "%(counter)s Items total" +msgstr[0] "%(counter)s элемент всего" +msgstr[1] "%(counter)s элементов всего" diff --git a/apps/filebrowser/locale/ru/LC_MESSAGES/django.mo b/apps/filebrowser/locale/ru/LC_MESSAGES/django.mo new file mode 100644 index 00000000..2f0d22db Binary files /dev/null and b/apps/filebrowser/locale/ru/LC_MESSAGES/django.mo differ diff --git a/apps/filebrowser/locale/ru/LC_MESSAGES/django.po b/apps/filebrowser/locale/ru/LC_MESSAGES/django.po new file mode 100644 index 00000000..6e755066 --- /dev/null +++ b/apps/filebrowser/locale/ru/LC_MESSAGES/django.po @@ -0,0 +1,317 @@ +# Russian translation +# This file is distributed under the same license as the django-filebrowser package. +# Ivan Gromov , 2009. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: summer.is.gone@gmail.com\n" +"POT-Creation-Date: 2009-05-19 03:17+0600\n" +"PO-Revision-Date: 2009-05-19 03:52\n" +"Last-Translator: IVAN GROMOV \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: fields.py:96 +#, python-format +msgid "Extension %(ext)s is not allowed. Only %(allowed)s is allowed." +msgstr "Расширение %(ext)s запрещено. Разрешено только %(allowed)s." + +#: forms.py:23 +msgid "Name" +msgstr "Имя" + +#: forms.py:23 forms.py:49 +msgid "" +"The Name will automatically be converted to lowercase. Only letters, " +"numbers, underscores and hyphens are allowed." +msgstr "" +"Имя будет автоматически переведено в нижний регистр" +"Допускается вводить буквы, цифры, символы подчерка и дефиса." + +#: forms.py:30 forms.py:56 +msgid "Only letters, numbers, underscores and hyphens are allowed." +msgstr "Допускается вводить буквы, цифры, символы подчерка и дефиса." + +#: forms.py:33 +msgid "The Folder already exists." +msgstr "Папка уже существует." + +#: forms.py:36 +msgid "Disallowed Folder Name." +msgstr "Недопустимое имя папки." + +#: forms.py:49 +msgid "New Name" +msgstr "Новое имя" + +#: forms.py:59 +msgid "The File/Folder already exists." +msgstr "Файл/папка уже существуют." + +#: forms.py:95 +msgid "File" +msgstr "Файл" + +#: forms.py:96 +msgid "Use Image Generator" +msgstr "Использовать генератор изображений" + +#: forms.py:105 +msgid "File already exists." +msgstr "Файл уже существует." + +#: forms.py:111 +msgid "Filename is not allowed." +msgstr "Недопустимое имя файла." + +#: forms.py:116 +msgid "File extension is not allowed." +msgstr "Недопустимое расширение файла." + +#: forms.py:121 +msgid "Filesize exceeds allowed Upload Size." +msgstr "Размер файла превышает допустимый размер загрузки." + +#: functions.py:84 +msgid "Home" +msgstr "Начало" + +#: functions.py:279 +msgid "Thumbnail creation failed." +msgstr "Ошибка создания миниатюр." + +#: functions.py:334 functions.py:389 +msgid "Image creation failed." +msgstr "Ошибка создания изображений." + +#: views.py:174 +msgid "FileBrowser" +msgstr "Файловый менеджер" + +#: views.py:198 +#, python-format +msgid "The Folder %s was successfully created." +msgstr "Папка %s успешно создана." + +#: views.py:204 +msgid "Permission denied." +msgstr "Доступ запрещен." + +#: views.py:206 +msgid "Error creating directory." +msgstr "Ошибка создания папки." + +#: views.py:214 views.py:215 templates/filebrowser/index.html:33 +msgid "New Folder" +msgstr "Новая папка" + +#: views.py:260 +msgid "Upload successful." +msgstr "Загрузка завершена успешно." + +#: views.py:273 templates/filebrowser/index.html:36 +#: templates/filebrowser/upload.html:62 +msgid "Upload" +msgstr "Загрузить" + +#: views.py:274 +msgid "Select files to upload" +msgstr "Выберите файлы для загрузки" + +#: views.py:304 +msgid "Thumbnail creation successful." +msgstr "Миниатюры созданы." + +#: views.py:354 +#, python-format +msgid "The file %s was successfully deleted." +msgstr "Файл %s удален." + +#: views.py:366 +#, python-format +msgid "The directory %s was successfully deleted." +msgstr "Папка %s удалена." + +#: views.py:417 +msgid "Error renaming Thumbnail." +msgstr "Ошибка переименования миниатюры." + +#: views.py:423 +msgid "Renaming was successful." +msgstr "Переименовано." + +#: views.py:428 +msgid "Error." +msgstr "Ошибка." + +#: views.py:437 templates/filebrowser/include/filelisting.html:52 +msgid "Rename" +msgstr "Переименовать" + +#: views.py:438 +#, python-format +msgid "Rename \"%s\"" +msgstr "Переименовать \"%s\"" + +#: views.py:475 +msgid "Successfully generated Images." +msgstr "Изображения созданы." + +#: templates/filebrowser/append.html:5 templates/filebrowser/append.html:7 +msgid "File-Browser" +msgstr "Файловый менеджер" + +#: templates/filebrowser/index.html:34 +msgid "Make Thumbs" +msgstr "Создать миниатюры" + +#: templates/filebrowser/index.html:35 +msgid "Generate Images" +msgstr "Сгенерировать изображения" + +#: templates/filebrowser/makedir.html:24 templates/filebrowser/rename.html:22 +msgid "Please correct the following errors." +msgstr "Пожалуйста, исправьте ошибки." + +#: templates/filebrowser/makedir.html:34 templates/filebrowser/rename.html:33 +msgid "Submit" +msgstr "Отправить" + +#: templates/filebrowser/upload.html:37 +msgid "Will use image generator." +msgstr "Будет использован генератор изображений." + +#: templates/filebrowser/upload.html:47 +msgid "Help" +msgstr "Справка" + +#: templates/filebrowser/upload.html:51 +msgid "Allowed" +msgstr "Разрешено" + +#: templates/filebrowser/upload.html:57 +msgid "Max. Filesize" +msgstr "Макс. размер" + +#: templates/filebrowser/include/filelisting.html:8 +msgid "Select" +msgstr "Выберите" + +#: templates/filebrowser/include/filelisting.html:15 +msgid "Select File" +msgstr "Выберите файл" + +#: templates/filebrowser/include/filelisting.html:26 +msgid "Make Thumbnail" +msgstr "Создать миниатюры" + +#: templates/filebrowser/include/filelisting.html:29 +msgid "View Image" +msgstr "Просмотреть изображение" + +#: templates/filebrowser/include/filelisting.html:46 +msgid "Generate Image Versions" +msgstr "Создать миниатюры" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Are you sure you want to delete this file?" +msgstr "Вы уверены, что хотите удалить этот файл?" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Delete File" +msgstr "Удалить файл" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Are you sure you want to delete this Folder?" +msgstr "Вы уверены, что хотите удалить эту папку?" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Delete Folder" +msgstr "Удалить папку" + +#: templates/filebrowser/include/filter.html:15 +msgid "Filter" +msgstr "Фильтр" + +#: templates/filebrowser/include/filter.html:21 +msgid "By Date" +msgstr "По дате" + +#: templates/filebrowser/include/filter.html:23 +msgid "Any Date" +msgstr "За любое число" + +#: templates/filebrowser/include/filter.html:25 +msgid "Today" +msgstr "Сегодня" + +#: templates/filebrowser/include/filter.html:27 +msgid "Past 7 days" +msgstr "Последние 7 дней" + +#: templates/filebrowser/include/filter.html:29 +msgid "Past 30 days" +msgstr "Последние 30 дней" + +#: templates/filebrowser/include/filter.html:31 +msgid "This year" +msgstr "Этот год" + +#: templates/filebrowser/include/filter.html:39 +msgid "By Type" +msgstr "По типу" + +#: templates/filebrowser/include/filter.html:41 +msgid "All" +msgstr "Все" + +#: templates/filebrowser/include/paginator.html:5 +msgid "No Items Found." +msgstr "Не найдено" + +#: templates/filebrowser/include/paginator.html:10 +#, python-format +msgid "%(counter)s Item" +msgid_plural "%(counter)s Items" +msgstr[0] "%(counter)s элемент" +msgstr[1] "Элементов: %(counter)s" + +#: templates/filebrowser/include/paginator.html:16 +msgid "No Items." +msgstr "Ничего нет" + +#: templates/filebrowser/include/tableheader.html:13 +#: templates/filebrowser/include/tableheader.html:14 +msgid "Filename" +msgstr "Имя файла" + +#: templates/filebrowser/include/tableheader.html:20 +#: templates/filebrowser/include/tableheader.html:21 +msgid "Size" +msgstr "Размер" + +#: templates/filebrowser/include/tableheader.html:23 +#: templates/filebrowser/include/tableheader.html:24 +msgid "Date" +msgstr "Дата" + +#: templates/filebrowser/include/toolbar.html:14 +msgid "Go" +msgstr "Вперед" + +#: templates/filebrowser/include/toolbar.html:16 +#, python-format +msgid "%(counter)s Item found" +msgid_plural "%(counter)s Items found" +msgstr[0] "%(counter)s элемент найден" +msgstr[1] "%(counter)s элементов найдено" + +#: templates/filebrowser/include/toolbar.html:17 +#, python-format +msgid "%(counter)s Item total" +msgid_plural "%(counter)s Items total" +msgstr[0] "%(counter)s элемент всего" +msgstr[1] "%(counter)s элементов всего" diff --git a/apps/filebrowser/locale/sr/.svn/all-wcprops b/apps/filebrowser/locale/sr/.svn/all-wcprops new file mode 100644 index 00000000..acc97e80 --- /dev/null +++ b/apps/filebrowser/locale/sr/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 62 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/sr +END diff --git a/apps/filebrowser/locale/sr/.svn/entries b/apps/filebrowser/locale/sr/.svn/entries new file mode 100644 index 00000000..7b603b68 --- /dev/null +++ b/apps/filebrowser/locale/sr/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/locale/sr +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +LC_MESSAGES +dir + diff --git a/apps/filebrowser/locale/sr/LC_MESSAGES/.svn/all-wcprops b/apps/filebrowser/locale/sr/LC_MESSAGES/.svn/all-wcprops new file mode 100644 index 00000000..021c7e93 --- /dev/null +++ b/apps/filebrowser/locale/sr/LC_MESSAGES/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/sr/LC_MESSAGES +END +django.po +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/sr/LC_MESSAGES/django.po +END +django.mo +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/sr/LC_MESSAGES/django.mo +END diff --git a/apps/filebrowser/locale/sr/LC_MESSAGES/.svn/entries b/apps/filebrowser/locale/sr/LC_MESSAGES/.svn/entries new file mode 100644 index 00000000..ac937c3c --- /dev/null +++ b/apps/filebrowser/locale/sr/LC_MESSAGES/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/locale/sr/LC_MESSAGES +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +django.po +file + + + + +2009-11-05T20:58:49.000000Z +3256737d3d82d99d5accd71d52425a3a +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +9526 + +django.mo +file + + + + +2009-11-05T20:58:49.000000Z +2c02d4502b1dffd3b593885330766067 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +6582 + diff --git a/apps/filebrowser/locale/sr/LC_MESSAGES/.svn/prop-base/django.mo.svn-base b/apps/filebrowser/locale/sr/LC_MESSAGES/.svn/prop-base/django.mo.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/locale/sr/LC_MESSAGES/.svn/prop-base/django.mo.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/locale/sr/LC_MESSAGES/.svn/text-base/django.mo.svn-base b/apps/filebrowser/locale/sr/LC_MESSAGES/.svn/text-base/django.mo.svn-base new file mode 100644 index 00000000..c5b4dae6 Binary files /dev/null and b/apps/filebrowser/locale/sr/LC_MESSAGES/.svn/text-base/django.mo.svn-base differ diff --git a/apps/filebrowser/locale/sr/LC_MESSAGES/.svn/text-base/django.po.svn-base b/apps/filebrowser/locale/sr/LC_MESSAGES/.svn/text-base/django.po.svn-base new file mode 100644 index 00000000..cd275413 --- /dev/null +++ b/apps/filebrowser/locale/sr/LC_MESSAGES/.svn/text-base/django.po.svn-base @@ -0,0 +1,330 @@ +# Copyright (C) 2009 Janos Guljas +# This file is distributed under the same license as the django-filebrowser package. +# Janos Guljas , 2009. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-05-06 21:43+0200\n" +"PO-Revision-Date: 2009-05-06 22:18+0200\n" +"Last-Translator: Janos Guljas \n" +"Language-Team: Serbian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: extension translation +msgid "Folder" +msgstr "Фолдер" +msgid "Image" +msgstr "Слика" +msgid "Document" +msgstr "Документ" +msgid "Code" +msgstr "Код" +msgid "Sound" +msgstr "Звук" + +#: fields.py:96 +#, python-format +msgid "Extension %(ext)s is not allowed. Only %(allowed)s is allowed." +msgstr "Фајлови са екстензијом %(ext)s нису дозвољени. Само %(allowed)s екстензије су дозвољене." + +#: forms.py:23 +msgid "Name" +msgstr "Назив" + +#: forms.py:23 forms.py:49 +msgid "" +"The Name will automatically be converted to lowercase. Only letters, " +"numbers, underscores and hyphens are allowed." +msgstr "" +"Слова у називу ће аутоматски бити конвертована у мала. Само слова, цифре, " +"доња црта и црта су дозвољени карактери." + +#: forms.py:30 forms.py:56 +msgid "Only letters, numbers, underscores and hyphens are allowed." +msgstr "Само слова, цифре, доња црта и црта су дозвољени карактери." + +#: forms.py:33 +msgid "The Folder already exists." +msgstr "Фолдер већ постоји." + +#: forms.py:36 +msgid "Disallowed Folder Name." +msgstr "Тај назив фолдера није дозвољен." + +#: forms.py:49 +msgid "New Name" +msgstr "Нови назив" + +#: forms.py:59 +msgid "The File/Folder already exists." +msgstr "Фајл/фолдер већ постоји." + +#: forms.py:95 +msgid "File" +msgstr "Фајл" + +#: forms.py:96 +msgid "Use Image Generator" +msgstr "Користи генератор слика" + +#: forms.py:105 +msgid "File already exists." +msgstr "Фајл већ постоји." + +#: forms.py:111 +msgid "Filename is not allowed." +msgstr "Назив фајла није дозвољен." + +#: forms.py:116 +msgid "File extension is not allowed." +msgstr "Екстензија фајла није дозвиљена." + +#: forms.py:121 +msgid "Filesize exceeds allowed Upload Size." +msgstr "Величина фајла прелази дозвољену вредност." + +#: functions.py:84 +msgid "Home" +msgstr "Почетни фолдер" + +#: functions.py:279 +msgid "Thumbnail creation failed." +msgstr "Генерисање умањеног приказа слике није успело." + +#: functions.py:334 functions.py:389 +msgid "Image creation failed." +msgstr "Генерисање слике није успело." + +#: views.py:174 +msgid "FileBrowser" +msgstr "Фајл брузер" + +#: views.py:198 +#, python-format +msgid "The Folder %s was successfully created." +msgstr "Фолдер %s је успешно направљен." + +#: views.py:204 +msgid "Permission denied." +msgstr "Одбијен приступ." + +#: views.py:206 +msgid "Error creating directory." +msgstr "Грешка при креирању директоријума." + +#: views.py:214 views.py:215 templates/filebrowser/index.html:33 +msgid "New Folder" +msgstr "Нови фолдер" + +#: views.py:260 +msgid "Upload successful." +msgstr "Пренос фајла се успешно завршио." + +#: views.py:273 templates/filebrowser/index.html:36 +#: templates/filebrowser/upload.html:62 +msgid "Upload" +msgstr "Пренос фајла" + +#: views.py:274 +msgid "Select files to upload" +msgstr "Изаберите фајлове за пренос" + +#: views.py:304 +msgid "Thumbnail creation successful." +msgstr "Генерисање умањеног приказа слике је успело." + +#: views.py:354 +#, python-format +msgid "The file %s was successfully deleted." +msgstr "Фајл %s је супешно обрисан." + +#: views.py:366 +#, python-format +msgid "The directory %s was successfully deleted." +msgstr "Директоријум %s је супешно обрисан." + +#: views.py:417 +msgid "Error renaming Thumbnail." +msgstr "Грешка при промени назива умањеног приказа слике." + +#: views.py:423 +msgid "Renaming was successful." +msgstr "Успешна промена назива." + +#: views.py:428 +msgid "Error." +msgstr "Грешка." + +#: views.py:437 templates/filebrowser/include/filelisting.html:52 +msgid "Rename" +msgstr "Промени назив" + +#: views.py:438 +#, python-format +msgid "Rename \"%s\"" +msgstr "Промени назив: „%s“" + +#: views.py:475 +msgid "Successfully generated Images." +msgstr "Слике су успешно генерисане." + +#: templates/filebrowser/append.html:5 templates/filebrowser/append.html:7 +msgid "File-Browser" +msgstr "Фајл-браузер" + +#: templates/filebrowser/index.html:34 +msgid "Make Thumbs" +msgstr "Генериши умањене приказе" + +#: templates/filebrowser/index.html:35 +msgid "Generate Images" +msgstr "Генериши слике" + +#: templates/filebrowser/makedir.html:24 templates/filebrowser/rename.html:22 +msgid "Please correct the following errors." +msgstr "Исправите следеће грешке." + +#: templates/filebrowser/makedir.html:34 templates/filebrowser/rename.html:33 +msgid "Submit" +msgstr "Изврши" + +#: templates/filebrowser/upload.html:37 +msgid "Will use image generator." +msgstr "Користи генератор слика." + +#: templates/filebrowser/upload.html:47 +msgid "Help" +msgstr "Помоћ" + +#: templates/filebrowser/upload.html:51 +msgid "Allowed" +msgstr "Дозвољено" + +#: templates/filebrowser/upload.html:57 +msgid "Max. Filesize" +msgstr "Највећа величина фајла" + +#: templates/filebrowser/include/filelisting.html:8 +msgid "Select" +msgstr "Изаберите" + +#: templates/filebrowser/include/filelisting.html:15 +msgid "Select File" +msgstr "Изаберите фајл" + +#: templates/filebrowser/include/filelisting.html:26 +msgid "Make Thumbnail" +msgstr "Направи умењени приказ" + +#: templates/filebrowser/include/filelisting.html:29 +msgid "View Image" +msgstr "Преглед слике" + +#: templates/filebrowser/include/filelisting.html:46 +msgid "Generate Image Versions" +msgstr "Генериши верзије слика" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Are you sure you want to delete this file?" +msgstr "Да ли сте сигурни да желите да избришете овај фајл?" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Delete File" +msgstr "Избриши фајл" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Are you sure you want to delete this Folder?" +msgstr "Да ли сте сигурни да желите да избришете овај фолдер?" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Delete Folder" +msgstr "Избриши фолдер" + +#: templates/filebrowser/include/filter.html:15 +msgid "Filter" +msgstr "Филтер" + +#: templates/filebrowser/include/filter.html:21 +msgid "By Date" +msgstr "По датуму" + +#: templates/filebrowser/include/filter.html:23 +msgid "Any Date" +msgstr "Сви датуми" + +#: templates/filebrowser/include/filter.html:25 +msgid "Today" +msgstr "Данас" + +#: templates/filebrowser/include/filter.html:27 +msgid "Past 7 days" +msgstr "Последњих 7 дана" + +#: templates/filebrowser/include/filter.html:29 +msgid "Past 30 days" +msgstr "Последњих 30 дана" + +#: templates/filebrowser/include/filter.html:31 +msgid "This year" +msgstr "Ове године" + +#: templates/filebrowser/include/filter.html:39 +msgid "By Type" +msgstr "По типу" + +#: templates/filebrowser/include/filter.html:41 +msgid "All" +msgstr "Сви" + +#: templates/filebrowser/include/paginator.html:5 +msgid "No Items Found." +msgstr "Ниједна слика није пронађена." + +#: templates/filebrowser/include/paginator.html:10 +#, python-format +msgid "%(counter)s Item" +msgid_plural "%(counter)s Items" +msgstr[0] "%(counter)s ставка" +msgstr[1] "%(counter)s ставки" + +#: templates/filebrowser/include/paginator.html:16 +msgid "No Items." +msgstr "Ниједна ставка" + +#: templates/filebrowser/include/tableheader.html:13 +#: templates/filebrowser/include/tableheader.html:14 +msgid "Filename" +msgstr "Назив фајла" + +#: templates/filebrowser/include/tableheader.html:20 +#: templates/filebrowser/include/tableheader.html:21 +msgid "Size" +msgstr "Величина" + +#: templates/filebrowser/include/tableheader.html:23 +#: templates/filebrowser/include/tableheader.html:24 +msgid "Date" +msgstr "Датум" + +#: templates/filebrowser/include/toolbar.html:14 +msgid "Go" +msgstr "Иди" + +#: templates/filebrowser/include/toolbar.html:16 +#, python-format +msgid "%(counter)s Item found" +msgid_plural "%(counter)s Items found" +msgstr[0] "%(counter)s ставка нађена" +msgstr[1] "%(counter)s ставки нађено" + +#: templates/filebrowser/include/toolbar.html:17 +#, python-format +msgid "%(counter)s Item total" +msgid_plural "%(counter)s Items total" +msgstr[0] "%(counter)s ставка укупно" +msgstr[1] "%(counter)s ставки укупно" diff --git a/apps/filebrowser/locale/sr/LC_MESSAGES/django.mo b/apps/filebrowser/locale/sr/LC_MESSAGES/django.mo new file mode 100644 index 00000000..c5b4dae6 Binary files /dev/null and b/apps/filebrowser/locale/sr/LC_MESSAGES/django.mo differ diff --git a/apps/filebrowser/locale/sr/LC_MESSAGES/django.po b/apps/filebrowser/locale/sr/LC_MESSAGES/django.po new file mode 100644 index 00000000..cd275413 --- /dev/null +++ b/apps/filebrowser/locale/sr/LC_MESSAGES/django.po @@ -0,0 +1,330 @@ +# Copyright (C) 2009 Janos Guljas +# This file is distributed under the same license as the django-filebrowser package. +# Janos Guljas , 2009. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-05-06 21:43+0200\n" +"PO-Revision-Date: 2009-05-06 22:18+0200\n" +"Last-Translator: Janos Guljas \n" +"Language-Team: Serbian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: extension translation +msgid "Folder" +msgstr "Фолдер" +msgid "Image" +msgstr "Слика" +msgid "Document" +msgstr "Документ" +msgid "Code" +msgstr "Код" +msgid "Sound" +msgstr "Звук" + +#: fields.py:96 +#, python-format +msgid "Extension %(ext)s is not allowed. Only %(allowed)s is allowed." +msgstr "Фајлови са екстензијом %(ext)s нису дозвољени. Само %(allowed)s екстензије су дозвољене." + +#: forms.py:23 +msgid "Name" +msgstr "Назив" + +#: forms.py:23 forms.py:49 +msgid "" +"The Name will automatically be converted to lowercase. Only letters, " +"numbers, underscores and hyphens are allowed." +msgstr "" +"Слова у називу ће аутоматски бити конвертована у мала. Само слова, цифре, " +"доња црта и црта су дозвољени карактери." + +#: forms.py:30 forms.py:56 +msgid "Only letters, numbers, underscores and hyphens are allowed." +msgstr "Само слова, цифре, доња црта и црта су дозвољени карактери." + +#: forms.py:33 +msgid "The Folder already exists." +msgstr "Фолдер већ постоји." + +#: forms.py:36 +msgid "Disallowed Folder Name." +msgstr "Тај назив фолдера није дозвољен." + +#: forms.py:49 +msgid "New Name" +msgstr "Нови назив" + +#: forms.py:59 +msgid "The File/Folder already exists." +msgstr "Фајл/фолдер већ постоји." + +#: forms.py:95 +msgid "File" +msgstr "Фајл" + +#: forms.py:96 +msgid "Use Image Generator" +msgstr "Користи генератор слика" + +#: forms.py:105 +msgid "File already exists." +msgstr "Фајл већ постоји." + +#: forms.py:111 +msgid "Filename is not allowed." +msgstr "Назив фајла није дозвољен." + +#: forms.py:116 +msgid "File extension is not allowed." +msgstr "Екстензија фајла није дозвиљена." + +#: forms.py:121 +msgid "Filesize exceeds allowed Upload Size." +msgstr "Величина фајла прелази дозвољену вредност." + +#: functions.py:84 +msgid "Home" +msgstr "Почетни фолдер" + +#: functions.py:279 +msgid "Thumbnail creation failed." +msgstr "Генерисање умањеног приказа слике није успело." + +#: functions.py:334 functions.py:389 +msgid "Image creation failed." +msgstr "Генерисање слике није успело." + +#: views.py:174 +msgid "FileBrowser" +msgstr "Фајл брузер" + +#: views.py:198 +#, python-format +msgid "The Folder %s was successfully created." +msgstr "Фолдер %s је успешно направљен." + +#: views.py:204 +msgid "Permission denied." +msgstr "Одбијен приступ." + +#: views.py:206 +msgid "Error creating directory." +msgstr "Грешка при креирању директоријума." + +#: views.py:214 views.py:215 templates/filebrowser/index.html:33 +msgid "New Folder" +msgstr "Нови фолдер" + +#: views.py:260 +msgid "Upload successful." +msgstr "Пренос фајла се успешно завршио." + +#: views.py:273 templates/filebrowser/index.html:36 +#: templates/filebrowser/upload.html:62 +msgid "Upload" +msgstr "Пренос фајла" + +#: views.py:274 +msgid "Select files to upload" +msgstr "Изаберите фајлове за пренос" + +#: views.py:304 +msgid "Thumbnail creation successful." +msgstr "Генерисање умањеног приказа слике је успело." + +#: views.py:354 +#, python-format +msgid "The file %s was successfully deleted." +msgstr "Фајл %s је супешно обрисан." + +#: views.py:366 +#, python-format +msgid "The directory %s was successfully deleted." +msgstr "Директоријум %s је супешно обрисан." + +#: views.py:417 +msgid "Error renaming Thumbnail." +msgstr "Грешка при промени назива умањеног приказа слике." + +#: views.py:423 +msgid "Renaming was successful." +msgstr "Успешна промена назива." + +#: views.py:428 +msgid "Error." +msgstr "Грешка." + +#: views.py:437 templates/filebrowser/include/filelisting.html:52 +msgid "Rename" +msgstr "Промени назив" + +#: views.py:438 +#, python-format +msgid "Rename \"%s\"" +msgstr "Промени назив: „%s“" + +#: views.py:475 +msgid "Successfully generated Images." +msgstr "Слике су успешно генерисане." + +#: templates/filebrowser/append.html:5 templates/filebrowser/append.html:7 +msgid "File-Browser" +msgstr "Фајл-браузер" + +#: templates/filebrowser/index.html:34 +msgid "Make Thumbs" +msgstr "Генериши умањене приказе" + +#: templates/filebrowser/index.html:35 +msgid "Generate Images" +msgstr "Генериши слике" + +#: templates/filebrowser/makedir.html:24 templates/filebrowser/rename.html:22 +msgid "Please correct the following errors." +msgstr "Исправите следеће грешке." + +#: templates/filebrowser/makedir.html:34 templates/filebrowser/rename.html:33 +msgid "Submit" +msgstr "Изврши" + +#: templates/filebrowser/upload.html:37 +msgid "Will use image generator." +msgstr "Користи генератор слика." + +#: templates/filebrowser/upload.html:47 +msgid "Help" +msgstr "Помоћ" + +#: templates/filebrowser/upload.html:51 +msgid "Allowed" +msgstr "Дозвољено" + +#: templates/filebrowser/upload.html:57 +msgid "Max. Filesize" +msgstr "Највећа величина фајла" + +#: templates/filebrowser/include/filelisting.html:8 +msgid "Select" +msgstr "Изаберите" + +#: templates/filebrowser/include/filelisting.html:15 +msgid "Select File" +msgstr "Изаберите фајл" + +#: templates/filebrowser/include/filelisting.html:26 +msgid "Make Thumbnail" +msgstr "Направи умењени приказ" + +#: templates/filebrowser/include/filelisting.html:29 +msgid "View Image" +msgstr "Преглед слике" + +#: templates/filebrowser/include/filelisting.html:46 +msgid "Generate Image Versions" +msgstr "Генериши верзије слика" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Are you sure you want to delete this file?" +msgstr "Да ли сте сигурни да желите да избришете овај фајл?" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Delete File" +msgstr "Избриши фајл" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Are you sure you want to delete this Folder?" +msgstr "Да ли сте сигурни да желите да избришете овај фолдер?" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Delete Folder" +msgstr "Избриши фолдер" + +#: templates/filebrowser/include/filter.html:15 +msgid "Filter" +msgstr "Филтер" + +#: templates/filebrowser/include/filter.html:21 +msgid "By Date" +msgstr "По датуму" + +#: templates/filebrowser/include/filter.html:23 +msgid "Any Date" +msgstr "Сви датуми" + +#: templates/filebrowser/include/filter.html:25 +msgid "Today" +msgstr "Данас" + +#: templates/filebrowser/include/filter.html:27 +msgid "Past 7 days" +msgstr "Последњих 7 дана" + +#: templates/filebrowser/include/filter.html:29 +msgid "Past 30 days" +msgstr "Последњих 30 дана" + +#: templates/filebrowser/include/filter.html:31 +msgid "This year" +msgstr "Ове године" + +#: templates/filebrowser/include/filter.html:39 +msgid "By Type" +msgstr "По типу" + +#: templates/filebrowser/include/filter.html:41 +msgid "All" +msgstr "Сви" + +#: templates/filebrowser/include/paginator.html:5 +msgid "No Items Found." +msgstr "Ниједна слика није пронађена." + +#: templates/filebrowser/include/paginator.html:10 +#, python-format +msgid "%(counter)s Item" +msgid_plural "%(counter)s Items" +msgstr[0] "%(counter)s ставка" +msgstr[1] "%(counter)s ставки" + +#: templates/filebrowser/include/paginator.html:16 +msgid "No Items." +msgstr "Ниједна ставка" + +#: templates/filebrowser/include/tableheader.html:13 +#: templates/filebrowser/include/tableheader.html:14 +msgid "Filename" +msgstr "Назив фајла" + +#: templates/filebrowser/include/tableheader.html:20 +#: templates/filebrowser/include/tableheader.html:21 +msgid "Size" +msgstr "Величина" + +#: templates/filebrowser/include/tableheader.html:23 +#: templates/filebrowser/include/tableheader.html:24 +msgid "Date" +msgstr "Датум" + +#: templates/filebrowser/include/toolbar.html:14 +msgid "Go" +msgstr "Иди" + +#: templates/filebrowser/include/toolbar.html:16 +#, python-format +msgid "%(counter)s Item found" +msgid_plural "%(counter)s Items found" +msgstr[0] "%(counter)s ставка нађена" +msgstr[1] "%(counter)s ставки нађено" + +#: templates/filebrowser/include/toolbar.html:17 +#, python-format +msgid "%(counter)s Item total" +msgid_plural "%(counter)s Items total" +msgstr[0] "%(counter)s ставка укупно" +msgstr[1] "%(counter)s ставки укупно" diff --git a/apps/filebrowser/locale/sr_Latn/.svn/all-wcprops b/apps/filebrowser/locale/sr_Latn/.svn/all-wcprops new file mode 100644 index 00000000..362364bf --- /dev/null +++ b/apps/filebrowser/locale/sr_Latn/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 67 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/sr_Latn +END diff --git a/apps/filebrowser/locale/sr_Latn/.svn/entries b/apps/filebrowser/locale/sr_Latn/.svn/entries new file mode 100644 index 00000000..6b094595 --- /dev/null +++ b/apps/filebrowser/locale/sr_Latn/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/locale/sr_Latn +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +LC_MESSAGES +dir + diff --git a/apps/filebrowser/locale/sr_Latn/LC_MESSAGES/.svn/all-wcprops b/apps/filebrowser/locale/sr_Latn/LC_MESSAGES/.svn/all-wcprops new file mode 100644 index 00000000..9d5cbe4b --- /dev/null +++ b/apps/filebrowser/locale/sr_Latn/LC_MESSAGES/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 79 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/sr_Latn/LC_MESSAGES +END +django.po +K 25 +svn:wc:ra_dav:version-url +V 89 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/sr_Latn/LC_MESSAGES/django.po +END +django.mo +K 25 +svn:wc:ra_dav:version-url +V 89 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/sr_Latn/LC_MESSAGES/django.mo +END diff --git a/apps/filebrowser/locale/sr_Latn/LC_MESSAGES/.svn/entries b/apps/filebrowser/locale/sr_Latn/LC_MESSAGES/.svn/entries new file mode 100644 index 00000000..2ed5a355 --- /dev/null +++ b/apps/filebrowser/locale/sr_Latn/LC_MESSAGES/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/locale/sr_Latn/LC_MESSAGES +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +django.po +file + + + + +2009-11-05T20:58:48.000000Z +03ac27ca944986b4e3f80be993f68ad8 +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +8227 + +django.mo +file + + + + +2009-11-05T20:58:48.000000Z +3cc11e68ca0f53b4048230400ad05490 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +5283 + diff --git a/apps/filebrowser/locale/sr_Latn/LC_MESSAGES/.svn/prop-base/django.mo.svn-base b/apps/filebrowser/locale/sr_Latn/LC_MESSAGES/.svn/prop-base/django.mo.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/locale/sr_Latn/LC_MESSAGES/.svn/prop-base/django.mo.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/locale/sr_Latn/LC_MESSAGES/.svn/text-base/django.mo.svn-base b/apps/filebrowser/locale/sr_Latn/LC_MESSAGES/.svn/text-base/django.mo.svn-base new file mode 100644 index 00000000..bfcbcf08 Binary files /dev/null and b/apps/filebrowser/locale/sr_Latn/LC_MESSAGES/.svn/text-base/django.mo.svn-base differ diff --git a/apps/filebrowser/locale/sr_Latn/LC_MESSAGES/.svn/text-base/django.po.svn-base b/apps/filebrowser/locale/sr_Latn/LC_MESSAGES/.svn/text-base/django.po.svn-base new file mode 100644 index 00000000..8c81cadc --- /dev/null +++ b/apps/filebrowser/locale/sr_Latn/LC_MESSAGES/.svn/text-base/django.po.svn-base @@ -0,0 +1,330 @@ +# Copyright (C) 2009 Janos Guljas +# This file is distributed under the same license as the django-filebrowser package. +# Janos Guljas , 2009. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-05-06 21:43+0200\n" +"PO-Revision-Date: 2009-05-06 22:19+0200\n" +"Last-Translator: Janos Guljas \n" +"Language-Team: Serbian Latin\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: extension translation +msgid "Folder" +msgstr "Folder" +msgid "Image" +msgstr "Slika" +msgid "Document" +msgstr "Dokument" +msgid "Code" +msgstr "Kod" +msgid "Sound" +msgstr "Zvuk" + +#: fields.py:96 +#, python-format +msgid "Extension %(ext)s is not allowed. Only %(allowed)s is allowed." +msgstr "Fajlovi sa ekstenzijom %(ext)s nisu dozvoljeni. Samo %(allowed)s ekstenzije su dozvoljene." + +#: forms.py:23 +msgid "Name" +msgstr "Naziv" + +#: forms.py:23 forms.py:49 +msgid "" +"The Name will automatically be converted to lowercase. Only letters, " +"numbers, underscores and hyphens are allowed." +msgstr "" +"Slova u nazivu će automatski biti konvertovana u mala. Samo slova, cifre, " +"donja crta i crta su dozvoljeni karakteri." + +#: forms.py:30 forms.py:56 +msgid "Only letters, numbers, underscores and hyphens are allowed." +msgstr "Samo slova, cifre, donja crta i crta su dozvoljeni karakteri." + +#: forms.py:33 +msgid "The Folder already exists." +msgstr "Folder već postoji." + +#: forms.py:36 +msgid "Disallowed Folder Name." +msgstr "Taj naziv foldera nije dozvoljen." + +#: forms.py:49 +msgid "New Name" +msgstr "Novi naziv" + +#: forms.py:59 +msgid "The File/Folder already exists." +msgstr "Fajl/folder već postoji." + +#: forms.py:95 +msgid "File" +msgstr "Fajl" + +#: forms.py:96 +msgid "Use Image Generator" +msgstr "Koristi generator slika" + +#: forms.py:105 +msgid "File already exists." +msgstr "Fajl već postoji." + +#: forms.py:111 +msgid "Filename is not allowed." +msgstr "Naziv fajla nije dozvoljen." + +#: forms.py:116 +msgid "File extension is not allowed." +msgstr "Ekstenzija fajla nije dozviljena." + +#: forms.py:121 +msgid "Filesize exceeds allowed Upload Size." +msgstr "Veličina fajla prelazi dozvoljenu vrednost." + +#: functions.py:84 +msgid "Home" +msgstr "Početni folder" + +#: functions.py:279 +msgid "Thumbnail creation failed." +msgstr "Generisanje umanjenog prikaza slike nije uspelo." + +#: functions.py:334 functions.py:389 +msgid "Image creation failed." +msgstr "Generisanje slike nije uspelo." + +#: views.py:174 +msgid "FileBrowser" +msgstr "Fajl bruzer" + +#: views.py:198 +#, python-format +msgid "The Folder %s was successfully created." +msgstr "Folder %s je uspešno napravljen." + +#: views.py:204 +msgid "Permission denied." +msgstr "Odbijen pristup." + +#: views.py:206 +msgid "Error creating directory." +msgstr "Greška pri kreiranju direktorijuma." + +#: views.py:214 views.py:215 templates/filebrowser/index.html:33 +msgid "New Folder" +msgstr "Novi folder" + +#: views.py:260 +msgid "Upload successful." +msgstr "Prenos fajla se uspešno završio." + +#: views.py:273 templates/filebrowser/index.html:36 +#: templates/filebrowser/upload.html:62 +msgid "Upload" +msgstr "Prenos fajla" + +#: views.py:274 +msgid "Select files to upload" +msgstr "Izaberite fajlove za prenos" + +#: views.py:304 +msgid "Thumbnail creation successful." +msgstr "Generisanje umanjenog prikaza slike je uspelo." + +#: views.py:354 +#, python-format +msgid "The file %s was successfully deleted." +msgstr "Fajl %s je supešno obrisan." + +#: views.py:366 +#, python-format +msgid "The directory %s was successfully deleted." +msgstr "Direktorijum %s je supešno obrisan." + +#: views.py:417 +msgid "Error renaming Thumbnail." +msgstr "Greška pri promeni naziva umanjenog prikaza slike." + +#: views.py:423 +msgid "Renaming was successful." +msgstr "Uspešna promena naziva." + +#: views.py:428 +msgid "Error." +msgstr "Greška." + +#: views.py:437 templates/filebrowser/include/filelisting.html:52 +msgid "Rename" +msgstr "Promeni naziv" + +#: views.py:438 +#, python-format +msgid "Rename \"%s\"" +msgstr "Promeni naziv: „%s“" + +#: views.py:475 +msgid "Successfully generated Images." +msgstr "Slike su uspešno generisane." + +#: templates/filebrowser/append.html:5 templates/filebrowser/append.html:7 +msgid "File-Browser" +msgstr "Fajl-brauzer" + +#: templates/filebrowser/index.html:34 +msgid "Make Thumbs" +msgstr "Generiši umanjene prikaze" + +#: templates/filebrowser/index.html:35 +msgid "Generate Images" +msgstr "Generiši slike" + +#: templates/filebrowser/makedir.html:24 templates/filebrowser/rename.html:22 +msgid "Please correct the following errors." +msgstr "Ispravite sledeće greške." + +#: templates/filebrowser/makedir.html:34 templates/filebrowser/rename.html:33 +msgid "Submit" +msgstr "Izvrši" + +#: templates/filebrowser/upload.html:37 +msgid "Will use image generator." +msgstr "Koristi generator slika." + +#: templates/filebrowser/upload.html:47 +msgid "Help" +msgstr "Pomoć" + +#: templates/filebrowser/upload.html:51 +msgid "Allowed" +msgstr "Dozvoljeno" + +#: templates/filebrowser/upload.html:57 +msgid "Max. Filesize" +msgstr "Najveća veličina fajla" + +#: templates/filebrowser/include/filelisting.html:8 +msgid "Select" +msgstr "Izaberite" + +#: templates/filebrowser/include/filelisting.html:15 +msgid "Select File" +msgstr "Izaberite fajl" + +#: templates/filebrowser/include/filelisting.html:26 +msgid "Make Thumbnail" +msgstr "Napravi umenjeni prikaz" + +#: templates/filebrowser/include/filelisting.html:29 +msgid "View Image" +msgstr "Pregled slike" + +#: templates/filebrowser/include/filelisting.html:46 +msgid "Generate Image Versions" +msgstr "Generiši verzije slika" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Are you sure you want to delete this file?" +msgstr "Da li ste sigurni da želite da izbrišete ovaj fajl?" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Delete File" +msgstr "Izbriši fajl" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Are you sure you want to delete this Folder?" +msgstr "Da li ste sigurni da želite da izbrišete ovaj folder?" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Delete Folder" +msgstr "Izbriši folder" + +#: templates/filebrowser/include/filter.html:15 +msgid "Filter" +msgstr "Filter" + +#: templates/filebrowser/include/filter.html:21 +msgid "By Date" +msgstr "Po datumu" + +#: templates/filebrowser/include/filter.html:23 +msgid "Any Date" +msgstr "Svi datumi" + +#: templates/filebrowser/include/filter.html:25 +msgid "Today" +msgstr "Danas" + +#: templates/filebrowser/include/filter.html:27 +msgid "Past 7 days" +msgstr "Poslednjih 7 dana" + +#: templates/filebrowser/include/filter.html:29 +msgid "Past 30 days" +msgstr "Poslednjih 30 dana" + +#: templates/filebrowser/include/filter.html:31 +msgid "This year" +msgstr "Ove godine" + +#: templates/filebrowser/include/filter.html:39 +msgid "By Type" +msgstr "Po tipu" + +#: templates/filebrowser/include/filter.html:41 +msgid "All" +msgstr "Svi" + +#: templates/filebrowser/include/paginator.html:5 +msgid "No Items Found." +msgstr "Nijedna slika nije pronađena." + +#: templates/filebrowser/include/paginator.html:10 +#, python-format +msgid "%(counter)s Item" +msgid_plural "%(counter)s Items" +msgstr[0] "%(counter)s stavka" +msgstr[1] "%(counter)s stavki" + +#: templates/filebrowser/include/paginator.html:16 +msgid "No Items." +msgstr "Nijedna stavka" + +#: templates/filebrowser/include/tableheader.html:13 +#: templates/filebrowser/include/tableheader.html:14 +msgid "Filename" +msgstr "Naziv fajla" + +#: templates/filebrowser/include/tableheader.html:20 +#: templates/filebrowser/include/tableheader.html:21 +msgid "Size" +msgstr "Veličina" + +#: templates/filebrowser/include/tableheader.html:23 +#: templates/filebrowser/include/tableheader.html:24 +msgid "Date" +msgstr "Datum" + +#: templates/filebrowser/include/toolbar.html:14 +msgid "Go" +msgstr "Idi" + +#: templates/filebrowser/include/toolbar.html:16 +#, python-format +msgid "%(counter)s Item found" +msgid_plural "%(counter)s Items found" +msgstr[0] "%(counter)s stavka nađena" +msgstr[1] "%(counter)s stavki nađeno" + +#: templates/filebrowser/include/toolbar.html:17 +#, python-format +msgid "%(counter)s Item total" +msgid_plural "%(counter)s Items total" +msgstr[0] "%(counter)s stavka ukupno" +msgstr[1] "%(counter)s stavki ukupno" diff --git a/apps/filebrowser/locale/sr_Latn/LC_MESSAGES/django.mo b/apps/filebrowser/locale/sr_Latn/LC_MESSAGES/django.mo new file mode 100644 index 00000000..bfcbcf08 Binary files /dev/null and b/apps/filebrowser/locale/sr_Latn/LC_MESSAGES/django.mo differ diff --git a/apps/filebrowser/locale/sr_Latn/LC_MESSAGES/django.po b/apps/filebrowser/locale/sr_Latn/LC_MESSAGES/django.po new file mode 100644 index 00000000..8c81cadc --- /dev/null +++ b/apps/filebrowser/locale/sr_Latn/LC_MESSAGES/django.po @@ -0,0 +1,330 @@ +# Copyright (C) 2009 Janos Guljas +# This file is distributed under the same license as the django-filebrowser package. +# Janos Guljas , 2009. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-05-06 21:43+0200\n" +"PO-Revision-Date: 2009-05-06 22:19+0200\n" +"Last-Translator: Janos Guljas \n" +"Language-Team: Serbian Latin\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: extension translation +msgid "Folder" +msgstr "Folder" +msgid "Image" +msgstr "Slika" +msgid "Document" +msgstr "Dokument" +msgid "Code" +msgstr "Kod" +msgid "Sound" +msgstr "Zvuk" + +#: fields.py:96 +#, python-format +msgid "Extension %(ext)s is not allowed. Only %(allowed)s is allowed." +msgstr "Fajlovi sa ekstenzijom %(ext)s nisu dozvoljeni. Samo %(allowed)s ekstenzije su dozvoljene." + +#: forms.py:23 +msgid "Name" +msgstr "Naziv" + +#: forms.py:23 forms.py:49 +msgid "" +"The Name will automatically be converted to lowercase. Only letters, " +"numbers, underscores and hyphens are allowed." +msgstr "" +"Slova u nazivu će automatski biti konvertovana u mala. Samo slova, cifre, " +"donja crta i crta su dozvoljeni karakteri." + +#: forms.py:30 forms.py:56 +msgid "Only letters, numbers, underscores and hyphens are allowed." +msgstr "Samo slova, cifre, donja crta i crta su dozvoljeni karakteri." + +#: forms.py:33 +msgid "The Folder already exists." +msgstr "Folder već postoji." + +#: forms.py:36 +msgid "Disallowed Folder Name." +msgstr "Taj naziv foldera nije dozvoljen." + +#: forms.py:49 +msgid "New Name" +msgstr "Novi naziv" + +#: forms.py:59 +msgid "The File/Folder already exists." +msgstr "Fajl/folder već postoji." + +#: forms.py:95 +msgid "File" +msgstr "Fajl" + +#: forms.py:96 +msgid "Use Image Generator" +msgstr "Koristi generator slika" + +#: forms.py:105 +msgid "File already exists." +msgstr "Fajl već postoji." + +#: forms.py:111 +msgid "Filename is not allowed." +msgstr "Naziv fajla nije dozvoljen." + +#: forms.py:116 +msgid "File extension is not allowed." +msgstr "Ekstenzija fajla nije dozviljena." + +#: forms.py:121 +msgid "Filesize exceeds allowed Upload Size." +msgstr "Veličina fajla prelazi dozvoljenu vrednost." + +#: functions.py:84 +msgid "Home" +msgstr "Početni folder" + +#: functions.py:279 +msgid "Thumbnail creation failed." +msgstr "Generisanje umanjenog prikaza slike nije uspelo." + +#: functions.py:334 functions.py:389 +msgid "Image creation failed." +msgstr "Generisanje slike nije uspelo." + +#: views.py:174 +msgid "FileBrowser" +msgstr "Fajl bruzer" + +#: views.py:198 +#, python-format +msgid "The Folder %s was successfully created." +msgstr "Folder %s je uspešno napravljen." + +#: views.py:204 +msgid "Permission denied." +msgstr "Odbijen pristup." + +#: views.py:206 +msgid "Error creating directory." +msgstr "Greška pri kreiranju direktorijuma." + +#: views.py:214 views.py:215 templates/filebrowser/index.html:33 +msgid "New Folder" +msgstr "Novi folder" + +#: views.py:260 +msgid "Upload successful." +msgstr "Prenos fajla se uspešno završio." + +#: views.py:273 templates/filebrowser/index.html:36 +#: templates/filebrowser/upload.html:62 +msgid "Upload" +msgstr "Prenos fajla" + +#: views.py:274 +msgid "Select files to upload" +msgstr "Izaberite fajlove za prenos" + +#: views.py:304 +msgid "Thumbnail creation successful." +msgstr "Generisanje umanjenog prikaza slike je uspelo." + +#: views.py:354 +#, python-format +msgid "The file %s was successfully deleted." +msgstr "Fajl %s je supešno obrisan." + +#: views.py:366 +#, python-format +msgid "The directory %s was successfully deleted." +msgstr "Direktorijum %s je supešno obrisan." + +#: views.py:417 +msgid "Error renaming Thumbnail." +msgstr "Greška pri promeni naziva umanjenog prikaza slike." + +#: views.py:423 +msgid "Renaming was successful." +msgstr "Uspešna promena naziva." + +#: views.py:428 +msgid "Error." +msgstr "Greška." + +#: views.py:437 templates/filebrowser/include/filelisting.html:52 +msgid "Rename" +msgstr "Promeni naziv" + +#: views.py:438 +#, python-format +msgid "Rename \"%s\"" +msgstr "Promeni naziv: „%s“" + +#: views.py:475 +msgid "Successfully generated Images." +msgstr "Slike su uspešno generisane." + +#: templates/filebrowser/append.html:5 templates/filebrowser/append.html:7 +msgid "File-Browser" +msgstr "Fajl-brauzer" + +#: templates/filebrowser/index.html:34 +msgid "Make Thumbs" +msgstr "Generiši umanjene prikaze" + +#: templates/filebrowser/index.html:35 +msgid "Generate Images" +msgstr "Generiši slike" + +#: templates/filebrowser/makedir.html:24 templates/filebrowser/rename.html:22 +msgid "Please correct the following errors." +msgstr "Ispravite sledeće greške." + +#: templates/filebrowser/makedir.html:34 templates/filebrowser/rename.html:33 +msgid "Submit" +msgstr "Izvrši" + +#: templates/filebrowser/upload.html:37 +msgid "Will use image generator." +msgstr "Koristi generator slika." + +#: templates/filebrowser/upload.html:47 +msgid "Help" +msgstr "Pomoć" + +#: templates/filebrowser/upload.html:51 +msgid "Allowed" +msgstr "Dozvoljeno" + +#: templates/filebrowser/upload.html:57 +msgid "Max. Filesize" +msgstr "Najveća veličina fajla" + +#: templates/filebrowser/include/filelisting.html:8 +msgid "Select" +msgstr "Izaberite" + +#: templates/filebrowser/include/filelisting.html:15 +msgid "Select File" +msgstr "Izaberite fajl" + +#: templates/filebrowser/include/filelisting.html:26 +msgid "Make Thumbnail" +msgstr "Napravi umenjeni prikaz" + +#: templates/filebrowser/include/filelisting.html:29 +msgid "View Image" +msgstr "Pregled slike" + +#: templates/filebrowser/include/filelisting.html:46 +msgid "Generate Image Versions" +msgstr "Generiši verzije slika" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Are you sure you want to delete this file?" +msgstr "Da li ste sigurni da želite da izbrišete ovaj fajl?" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Delete File" +msgstr "Izbriši fajl" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Are you sure you want to delete this Folder?" +msgstr "Da li ste sigurni da želite da izbrišete ovaj folder?" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Delete Folder" +msgstr "Izbriši folder" + +#: templates/filebrowser/include/filter.html:15 +msgid "Filter" +msgstr "Filter" + +#: templates/filebrowser/include/filter.html:21 +msgid "By Date" +msgstr "Po datumu" + +#: templates/filebrowser/include/filter.html:23 +msgid "Any Date" +msgstr "Svi datumi" + +#: templates/filebrowser/include/filter.html:25 +msgid "Today" +msgstr "Danas" + +#: templates/filebrowser/include/filter.html:27 +msgid "Past 7 days" +msgstr "Poslednjih 7 dana" + +#: templates/filebrowser/include/filter.html:29 +msgid "Past 30 days" +msgstr "Poslednjih 30 dana" + +#: templates/filebrowser/include/filter.html:31 +msgid "This year" +msgstr "Ove godine" + +#: templates/filebrowser/include/filter.html:39 +msgid "By Type" +msgstr "Po tipu" + +#: templates/filebrowser/include/filter.html:41 +msgid "All" +msgstr "Svi" + +#: templates/filebrowser/include/paginator.html:5 +msgid "No Items Found." +msgstr "Nijedna slika nije pronađena." + +#: templates/filebrowser/include/paginator.html:10 +#, python-format +msgid "%(counter)s Item" +msgid_plural "%(counter)s Items" +msgstr[0] "%(counter)s stavka" +msgstr[1] "%(counter)s stavki" + +#: templates/filebrowser/include/paginator.html:16 +msgid "No Items." +msgstr "Nijedna stavka" + +#: templates/filebrowser/include/tableheader.html:13 +#: templates/filebrowser/include/tableheader.html:14 +msgid "Filename" +msgstr "Naziv fajla" + +#: templates/filebrowser/include/tableheader.html:20 +#: templates/filebrowser/include/tableheader.html:21 +msgid "Size" +msgstr "Veličina" + +#: templates/filebrowser/include/tableheader.html:23 +#: templates/filebrowser/include/tableheader.html:24 +msgid "Date" +msgstr "Datum" + +#: templates/filebrowser/include/toolbar.html:14 +msgid "Go" +msgstr "Idi" + +#: templates/filebrowser/include/toolbar.html:16 +#, python-format +msgid "%(counter)s Item found" +msgid_plural "%(counter)s Items found" +msgstr[0] "%(counter)s stavka nađena" +msgstr[1] "%(counter)s stavki nađeno" + +#: templates/filebrowser/include/toolbar.html:17 +#, python-format +msgid "%(counter)s Item total" +msgid_plural "%(counter)s Items total" +msgstr[0] "%(counter)s stavka ukupno" +msgstr[1] "%(counter)s stavki ukupno" diff --git a/apps/filebrowser/locale/zh_CN/.svn/all-wcprops b/apps/filebrowser/locale/zh_CN/.svn/all-wcprops new file mode 100644 index 00000000..09895e65 --- /dev/null +++ b/apps/filebrowser/locale/zh_CN/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 65 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/zh_CN +END diff --git a/apps/filebrowser/locale/zh_CN/.svn/entries b/apps/filebrowser/locale/zh_CN/.svn/entries new file mode 100644 index 00000000..85e38448 --- /dev/null +++ b/apps/filebrowser/locale/zh_CN/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/locale/zh_CN +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +LC_MESSAGES +dir + diff --git a/apps/filebrowser/locale/zh_CN/LC_MESSAGES/.svn/all-wcprops b/apps/filebrowser/locale/zh_CN/LC_MESSAGES/.svn/all-wcprops new file mode 100644 index 00000000..30caeb3d --- /dev/null +++ b/apps/filebrowser/locale/zh_CN/LC_MESSAGES/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 77 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/zh_CN/LC_MESSAGES +END +django.po +K 25 +svn:wc:ra_dav:version-url +V 87 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/zh_CN/LC_MESSAGES/django.po +END +django.mo +K 25 +svn:wc:ra_dav:version-url +V 87 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/zh_CN/LC_MESSAGES/django.mo +END diff --git a/apps/filebrowser/locale/zh_CN/LC_MESSAGES/.svn/entries b/apps/filebrowser/locale/zh_CN/LC_MESSAGES/.svn/entries new file mode 100644 index 00000000..aa55796a --- /dev/null +++ b/apps/filebrowser/locale/zh_CN/LC_MESSAGES/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/locale/zh_CN/LC_MESSAGES +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +django.po +file + + + + +2009-11-05T20:58:48.000000Z +363ba3d6163a0169fdaaf5109edb3ae1 +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +8015 + +django.mo +file + + + + +2009-11-05T20:58:48.000000Z +8819ea481c2829f0c3c5bc71586f229a +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +5067 + diff --git a/apps/filebrowser/locale/zh_CN/LC_MESSAGES/.svn/prop-base/django.mo.svn-base b/apps/filebrowser/locale/zh_CN/LC_MESSAGES/.svn/prop-base/django.mo.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/locale/zh_CN/LC_MESSAGES/.svn/prop-base/django.mo.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/locale/zh_CN/LC_MESSAGES/.svn/text-base/django.mo.svn-base b/apps/filebrowser/locale/zh_CN/LC_MESSAGES/.svn/text-base/django.mo.svn-base new file mode 100644 index 00000000..18da911e Binary files /dev/null and b/apps/filebrowser/locale/zh_CN/LC_MESSAGES/.svn/text-base/django.mo.svn-base differ diff --git a/apps/filebrowser/locale/zh_CN/LC_MESSAGES/.svn/text-base/django.po.svn-base b/apps/filebrowser/locale/zh_CN/LC_MESSAGES/.svn/text-base/django.po.svn-base new file mode 100644 index 00000000..51821c24 --- /dev/null +++ b/apps/filebrowser/locale/zh_CN/LC_MESSAGES/.svn/text-base/django.po.svn-base @@ -0,0 +1,345 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: filebrowser 2.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-05-04 00:05+0800\n" +"PO-Revision-Date: 2009-05-04 00:11+0800\n" +"Last-Translator: freeRen \n" +"Language-Team: freeren.org \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Poedit-Language: Chinese\n" +"X-Poedit-Country: CHINA\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Bookmarks: 0,1,-1,-1,-1,-1,-1,-1,-1,-1\n" + +#: fields.py:96 +#, python-format +msgid "Extension %(ext)s is not allowed. Only %(allowed)s is allowed." +msgstr "扩展名 %(ext)s 是不允许的。只允许 %(allowed)s 。" + +#: forms.py:23 +msgid "Name" +msgstr "名称" + +#: forms.py:23 +#: forms.py:49 +msgid "The Name will automatically be converted to lowercase. Only letters, numbers, underscores and hyphens are allowed." +msgstr "这个名称将自动转换为小写。只允许字母、数字、下划线和连字符。" + +#: forms.py:30 +#: forms.py:56 +msgid "Only letters, numbers, underscores and hyphens are allowed." +msgstr "只允许字母、数字、下划线和连字符。" + +#: forms.py:33 +msgid "The Folder already exists." +msgstr "这个文件夹已经存在。" + +#: forms.py:36 +msgid "Disallowed Folder Name." +msgstr "不允许的文件夹名称。" + +#: forms.py:49 +msgid "New Name" +msgstr "新名称" + +#: forms.py:59 +msgid "The File/Folder already exists." +msgstr "这个文件/文件夹已经存在。" + +#: forms.py:95 +msgid "File" +msgstr "文件" + +#: forms.py:96 +msgid "Use Image Generator" +msgstr "使用图像生成器" + +#: forms.py:105 +msgid "File already exists." +msgstr "文件已经存在。" + +#: forms.py:111 +msgid "Filename is not allowed." +msgstr "文件名不允许。" + +#: forms.py:116 +msgid "File extension is not allowed." +msgstr "文件扩展名不允许。" + +#: forms.py:121 +msgid "Filesize exceeds allowed Upload Size." +msgstr "超出允许的上传大小。" + +#: functions.py:84 +msgid "Home" +msgstr "首页" + +#: functions.py:279 +msgid "Thumbnail creation failed." +msgstr "缩略图创建失败。" + +#: functions.py:334 +#: functions.py:389 +msgid "Image creation failed." +msgstr "图像创建失败。" + +#: views.py:174 +msgid "FileBrowser" +msgstr "文件浏览器" + +#: views.py:198 +#, python-format +msgid "The Folder %s was successfully created." +msgstr "文件夹 \"%s\" 创建成功。" + +#: views.py:204 +msgid "Permission denied." +msgstr "权限被拒绝。" + +#: views.py:206 +msgid "Error creating directory." +msgstr "创建目录错误。" + +#: views.py:214 +#: views.py:215 +#: templates/filebrowser/index.html:33 +msgid "New Folder" +msgstr "创建文件夹" + +#: views.py:260 +msgid "Upload successful." +msgstr "上传成功。" + +#: views.py:273 +#: templates/filebrowser/index.html:36 +#: templates/filebrowser/upload.html:62 +msgid "Upload" +msgstr "上传" + +#: views.py:274 +msgid "Select files to upload" +msgstr "选择上传文件" + +#: views.py:304 +msgid "Thumbnail creation successful." +msgstr "缩略图创建成功。" + +#: views.py:354 +#, python-format +msgid "The file %s was successfully deleted." +msgstr "文件 \"%s\" 删除成功。" + +#: views.py:366 +#, python-format +msgid "The directory %s was successfully deleted." +msgstr "目录 \"%s\" 删除成功。" + +#: views.py:417 +msgid "Error renaming Thumbnail." +msgstr "重命名缩略图错误。" + +#: views.py:423 +msgid "Renaming was successful." +msgstr "重命名成功。" + +#: views.py:428 +msgid "Error." +msgstr "错误。" + +#: views.py:437 +#: templates/filebrowser/include/filelisting.html:52 +msgid "Rename" +msgstr "重命名" + +#: views.py:438 +#, python-format +msgid "Rename \"%s\"" +msgstr "重命名 \"%s\"" + +#: views.py:475 +msgid "Successfully generated Images." +msgstr "生成图像成功。" + +#: templates/filebrowser/append.html:4 +#: templates/filebrowser/append.html:6 +msgid "File-Browser" +msgstr "文件浏览器" + +#: templates/filebrowser/index.html:34 +msgid "Make Thumbs" +msgstr "创建缩略图" + +#: templates/filebrowser/index.html:35 +msgid "Generate Images" +msgstr "生成图像" + +#: templates/filebrowser/makedir.html:24 +#: templates/filebrowser/rename.html:22 +msgid "Please correct the following errors." +msgstr "请修正下面的错误。" + +#: templates/filebrowser/makedir.html:34 +#: templates/filebrowser/rename.html:33 +msgid "Submit" +msgstr "保存" + +#: templates/filebrowser/upload.html:37 +msgid "Will use image generator." +msgstr "使用图像生成器。" + +#: templates/filebrowser/upload.html:47 +msgid "Help" +msgstr "帮助" + +#: templates/filebrowser/upload.html:51 +msgid "Allowed" +msgstr "允许" + +#: templates/filebrowser/upload.html:57 +msgid "Max. Filesize" +msgstr "最大文件大小" + +#: templates/filebrowser/include/filelisting.html:8 +msgid "Select" +msgstr "选择" + +#: templates/filebrowser/include/filelisting.html:15 +msgid "Select File" +msgstr "选择文件" + +#: templates/filebrowser/include/filelisting.html:26 +msgid "Make Thumbnail" +msgstr "创建缩略图" + +#: templates/filebrowser/include/filelisting.html:29 +msgid "View Image" +msgstr "查看图像" + +#: templates/filebrowser/include/filelisting.html:46 +msgid "Generate Image Versions" +msgstr "生成图像版本" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Are you sure you want to delete this file?" +msgstr "你确定要删除这个文件?" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Delete File" +msgstr "删除文件" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Are you sure you want to delete this Folder?" +msgstr "你确定要删除这个文件夹?" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Delete Folder" +msgstr "删除文件夹" + +#: templates/filebrowser/include/filter.html:15 +msgid "Filter" +msgstr "过滤器" + +#: templates/filebrowser/include/filter.html:21 +msgid "By Date" +msgstr "以 日期" + +#: templates/filebrowser/include/filter.html:23 +msgid "Any Date" +msgstr "任意日期" + +#: templates/filebrowser/include/filter.html:25 +msgid "Today" +msgstr "今天" + +#: templates/filebrowser/include/filter.html:27 +msgid "Past 7 days" +msgstr "前7天" + +#: templates/filebrowser/include/filter.html:29 +msgid "Past 30 days" +msgstr "本月" + +#: templates/filebrowser/include/filter.html:31 +msgid "This year" +msgstr "本年" + +#: templates/filebrowser/include/filter.html:39 +msgid "By Type" +msgstr "以 类型" + +#: templates/filebrowser/include/filter.html:41 +msgid "All" +msgstr "全部" + +#: templates/filebrowser/include/paginator.html:5 +msgid "No Items Found." +msgstr "没有找到。" + +#: templates/filebrowser/include/paginator.html:10 +#, python-format +msgid "%(counter)s Item" +msgid_plural "%(counter)s Items" +msgstr[0] "%(counter)s 项" + +#: templates/filebrowser/include/paginator.html:16 +msgid "No Items." +msgstr "没有项。" + +#: templates/filebrowser/include/tableheader.html:13 +#: templates/filebrowser/include/tableheader.html:14 +msgid "Filename" +msgstr "文件名" + +#: templates/filebrowser/include/tableheader.html:20 +#: templates/filebrowser/include/tableheader.html:21 +msgid "Size" +msgstr "大小" + +#: templates/filebrowser/include/tableheader.html:23 +#: templates/filebrowser/include/tableheader.html:24 +msgid "Date" +msgstr "日期" + +#: templates/filebrowser/include/toolbar.html:14 +msgid "Go" +msgstr "执行" + +#: templates/filebrowser/include/toolbar.html:16 +#, python-format +msgid "%(counter)s Item found" +msgid_plural "%(counter)s Items found" +msgstr[0] "找到 %(counter)s 项" + +#: templates/filebrowser/include/toolbar.html:17 +#, python-format +msgid "%(counter)s Item total" +msgid_plural "%(counter)s Items total" +msgstr[0] "共 %(counter)s 项" + +msgid "Folder" +msgstr "目录" + +msgid "Image" +msgstr "图片" + +msgid "Document" +msgstr "文档" + +msgid "Code" +msgstr "代码" + +msgid "Video" +msgstr "视频" + +msgid "Sound" +msgstr "音频" + diff --git a/apps/filebrowser/locale/zh_CN/LC_MESSAGES/django.mo b/apps/filebrowser/locale/zh_CN/LC_MESSAGES/django.mo new file mode 100644 index 00000000..18da911e Binary files /dev/null and b/apps/filebrowser/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/apps/filebrowser/locale/zh_CN/LC_MESSAGES/django.po b/apps/filebrowser/locale/zh_CN/LC_MESSAGES/django.po new file mode 100644 index 00000000..51821c24 --- /dev/null +++ b/apps/filebrowser/locale/zh_CN/LC_MESSAGES/django.po @@ -0,0 +1,345 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: filebrowser 2.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-05-04 00:05+0800\n" +"PO-Revision-Date: 2009-05-04 00:11+0800\n" +"Last-Translator: freeRen \n" +"Language-Team: freeren.org \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Poedit-Language: Chinese\n" +"X-Poedit-Country: CHINA\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Bookmarks: 0,1,-1,-1,-1,-1,-1,-1,-1,-1\n" + +#: fields.py:96 +#, python-format +msgid "Extension %(ext)s is not allowed. Only %(allowed)s is allowed." +msgstr "扩展名 %(ext)s 是不允许的。只允许 %(allowed)s 。" + +#: forms.py:23 +msgid "Name" +msgstr "名称" + +#: forms.py:23 +#: forms.py:49 +msgid "The Name will automatically be converted to lowercase. Only letters, numbers, underscores and hyphens are allowed." +msgstr "这个名称将自动转换为小写。只允许字母、数字、下划线和连字符。" + +#: forms.py:30 +#: forms.py:56 +msgid "Only letters, numbers, underscores and hyphens are allowed." +msgstr "只允许字母、数字、下划线和连字符。" + +#: forms.py:33 +msgid "The Folder already exists." +msgstr "这个文件夹已经存在。" + +#: forms.py:36 +msgid "Disallowed Folder Name." +msgstr "不允许的文件夹名称。" + +#: forms.py:49 +msgid "New Name" +msgstr "新名称" + +#: forms.py:59 +msgid "The File/Folder already exists." +msgstr "这个文件/文件夹已经存在。" + +#: forms.py:95 +msgid "File" +msgstr "文件" + +#: forms.py:96 +msgid "Use Image Generator" +msgstr "使用图像生成器" + +#: forms.py:105 +msgid "File already exists." +msgstr "文件已经存在。" + +#: forms.py:111 +msgid "Filename is not allowed." +msgstr "文件名不允许。" + +#: forms.py:116 +msgid "File extension is not allowed." +msgstr "文件扩展名不允许。" + +#: forms.py:121 +msgid "Filesize exceeds allowed Upload Size." +msgstr "超出允许的上传大小。" + +#: functions.py:84 +msgid "Home" +msgstr "首页" + +#: functions.py:279 +msgid "Thumbnail creation failed." +msgstr "缩略图创建失败。" + +#: functions.py:334 +#: functions.py:389 +msgid "Image creation failed." +msgstr "图像创建失败。" + +#: views.py:174 +msgid "FileBrowser" +msgstr "文件浏览器" + +#: views.py:198 +#, python-format +msgid "The Folder %s was successfully created." +msgstr "文件夹 \"%s\" 创建成功。" + +#: views.py:204 +msgid "Permission denied." +msgstr "权限被拒绝。" + +#: views.py:206 +msgid "Error creating directory." +msgstr "创建目录错误。" + +#: views.py:214 +#: views.py:215 +#: templates/filebrowser/index.html:33 +msgid "New Folder" +msgstr "创建文件夹" + +#: views.py:260 +msgid "Upload successful." +msgstr "上传成功。" + +#: views.py:273 +#: templates/filebrowser/index.html:36 +#: templates/filebrowser/upload.html:62 +msgid "Upload" +msgstr "上传" + +#: views.py:274 +msgid "Select files to upload" +msgstr "选择上传文件" + +#: views.py:304 +msgid "Thumbnail creation successful." +msgstr "缩略图创建成功。" + +#: views.py:354 +#, python-format +msgid "The file %s was successfully deleted." +msgstr "文件 \"%s\" 删除成功。" + +#: views.py:366 +#, python-format +msgid "The directory %s was successfully deleted." +msgstr "目录 \"%s\" 删除成功。" + +#: views.py:417 +msgid "Error renaming Thumbnail." +msgstr "重命名缩略图错误。" + +#: views.py:423 +msgid "Renaming was successful." +msgstr "重命名成功。" + +#: views.py:428 +msgid "Error." +msgstr "错误。" + +#: views.py:437 +#: templates/filebrowser/include/filelisting.html:52 +msgid "Rename" +msgstr "重命名" + +#: views.py:438 +#, python-format +msgid "Rename \"%s\"" +msgstr "重命名 \"%s\"" + +#: views.py:475 +msgid "Successfully generated Images." +msgstr "生成图像成功。" + +#: templates/filebrowser/append.html:4 +#: templates/filebrowser/append.html:6 +msgid "File-Browser" +msgstr "文件浏览器" + +#: templates/filebrowser/index.html:34 +msgid "Make Thumbs" +msgstr "创建缩略图" + +#: templates/filebrowser/index.html:35 +msgid "Generate Images" +msgstr "生成图像" + +#: templates/filebrowser/makedir.html:24 +#: templates/filebrowser/rename.html:22 +msgid "Please correct the following errors." +msgstr "请修正下面的错误。" + +#: templates/filebrowser/makedir.html:34 +#: templates/filebrowser/rename.html:33 +msgid "Submit" +msgstr "保存" + +#: templates/filebrowser/upload.html:37 +msgid "Will use image generator." +msgstr "使用图像生成器。" + +#: templates/filebrowser/upload.html:47 +msgid "Help" +msgstr "帮助" + +#: templates/filebrowser/upload.html:51 +msgid "Allowed" +msgstr "允许" + +#: templates/filebrowser/upload.html:57 +msgid "Max. Filesize" +msgstr "最大文件大小" + +#: templates/filebrowser/include/filelisting.html:8 +msgid "Select" +msgstr "选择" + +#: templates/filebrowser/include/filelisting.html:15 +msgid "Select File" +msgstr "选择文件" + +#: templates/filebrowser/include/filelisting.html:26 +msgid "Make Thumbnail" +msgstr "创建缩略图" + +#: templates/filebrowser/include/filelisting.html:29 +msgid "View Image" +msgstr "查看图像" + +#: templates/filebrowser/include/filelisting.html:46 +msgid "Generate Image Versions" +msgstr "生成图像版本" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Are you sure you want to delete this file?" +msgstr "你确定要删除这个文件?" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Delete File" +msgstr "删除文件" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Are you sure you want to delete this Folder?" +msgstr "你确定要删除这个文件夹?" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Delete Folder" +msgstr "删除文件夹" + +#: templates/filebrowser/include/filter.html:15 +msgid "Filter" +msgstr "过滤器" + +#: templates/filebrowser/include/filter.html:21 +msgid "By Date" +msgstr "以 日期" + +#: templates/filebrowser/include/filter.html:23 +msgid "Any Date" +msgstr "任意日期" + +#: templates/filebrowser/include/filter.html:25 +msgid "Today" +msgstr "今天" + +#: templates/filebrowser/include/filter.html:27 +msgid "Past 7 days" +msgstr "前7天" + +#: templates/filebrowser/include/filter.html:29 +msgid "Past 30 days" +msgstr "本月" + +#: templates/filebrowser/include/filter.html:31 +msgid "This year" +msgstr "本年" + +#: templates/filebrowser/include/filter.html:39 +msgid "By Type" +msgstr "以 类型" + +#: templates/filebrowser/include/filter.html:41 +msgid "All" +msgstr "全部" + +#: templates/filebrowser/include/paginator.html:5 +msgid "No Items Found." +msgstr "没有找到。" + +#: templates/filebrowser/include/paginator.html:10 +#, python-format +msgid "%(counter)s Item" +msgid_plural "%(counter)s Items" +msgstr[0] "%(counter)s 项" + +#: templates/filebrowser/include/paginator.html:16 +msgid "No Items." +msgstr "没有项。" + +#: templates/filebrowser/include/tableheader.html:13 +#: templates/filebrowser/include/tableheader.html:14 +msgid "Filename" +msgstr "文件名" + +#: templates/filebrowser/include/tableheader.html:20 +#: templates/filebrowser/include/tableheader.html:21 +msgid "Size" +msgstr "大小" + +#: templates/filebrowser/include/tableheader.html:23 +#: templates/filebrowser/include/tableheader.html:24 +msgid "Date" +msgstr "日期" + +#: templates/filebrowser/include/toolbar.html:14 +msgid "Go" +msgstr "执行" + +#: templates/filebrowser/include/toolbar.html:16 +#, python-format +msgid "%(counter)s Item found" +msgid_plural "%(counter)s Items found" +msgstr[0] "找到 %(counter)s 项" + +#: templates/filebrowser/include/toolbar.html:17 +#, python-format +msgid "%(counter)s Item total" +msgid_plural "%(counter)s Items total" +msgstr[0] "共 %(counter)s 项" + +msgid "Folder" +msgstr "目录" + +msgid "Image" +msgstr "图片" + +msgid "Document" +msgstr "文档" + +msgid "Code" +msgstr "代码" + +msgid "Video" +msgstr "视频" + +msgid "Sound" +msgstr "音频" + diff --git a/apps/filebrowser/locale/zh_TW/.svn/all-wcprops b/apps/filebrowser/locale/zh_TW/.svn/all-wcprops new file mode 100644 index 00000000..fc4c26a5 --- /dev/null +++ b/apps/filebrowser/locale/zh_TW/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 65 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/zh_TW +END diff --git a/apps/filebrowser/locale/zh_TW/.svn/entries b/apps/filebrowser/locale/zh_TW/.svn/entries new file mode 100644 index 00000000..a8ed0111 --- /dev/null +++ b/apps/filebrowser/locale/zh_TW/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/locale/zh_TW +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +LC_MESSAGES +dir + diff --git a/apps/filebrowser/locale/zh_TW/LC_MESSAGES/.svn/all-wcprops b/apps/filebrowser/locale/zh_TW/LC_MESSAGES/.svn/all-wcprops new file mode 100644 index 00000000..13c66705 --- /dev/null +++ b/apps/filebrowser/locale/zh_TW/LC_MESSAGES/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 77 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/zh_TW/LC_MESSAGES +END +django.po +K 25 +svn:wc:ra_dav:version-url +V 87 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/zh_TW/LC_MESSAGES/django.po +END +django.mo +K 25 +svn:wc:ra_dav:version-url +V 87 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/locale/zh_TW/LC_MESSAGES/django.mo +END diff --git a/apps/filebrowser/locale/zh_TW/LC_MESSAGES/.svn/entries b/apps/filebrowser/locale/zh_TW/LC_MESSAGES/.svn/entries new file mode 100644 index 00000000..91155df9 --- /dev/null +++ b/apps/filebrowser/locale/zh_TW/LC_MESSAGES/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/locale/zh_TW/LC_MESSAGES +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +django.po +file + + + + +2009-11-05T20:58:49.000000Z +9303ff1db63e9d070e8d117fb5625f78 +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +8009 + +django.mo +file + + + + +2009-11-05T20:58:49.000000Z +acbd592d9227d4f5367efede3fe71038 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +4999 + diff --git a/apps/filebrowser/locale/zh_TW/LC_MESSAGES/.svn/prop-base/django.mo.svn-base b/apps/filebrowser/locale/zh_TW/LC_MESSAGES/.svn/prop-base/django.mo.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/locale/zh_TW/LC_MESSAGES/.svn/prop-base/django.mo.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/locale/zh_TW/LC_MESSAGES/.svn/text-base/django.mo.svn-base b/apps/filebrowser/locale/zh_TW/LC_MESSAGES/.svn/text-base/django.mo.svn-base new file mode 100644 index 00000000..14136c06 Binary files /dev/null and b/apps/filebrowser/locale/zh_TW/LC_MESSAGES/.svn/text-base/django.mo.svn-base differ diff --git a/apps/filebrowser/locale/zh_TW/LC_MESSAGES/.svn/text-base/django.po.svn-base b/apps/filebrowser/locale/zh_TW/LC_MESSAGES/.svn/text-base/django.po.svn-base new file mode 100644 index 00000000..c60bc65c --- /dev/null +++ b/apps/filebrowser/locale/zh_TW/LC_MESSAGES/.svn/text-base/django.po.svn-base @@ -0,0 +1,346 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: filebrowser 2.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-05-04 00:06+0800\n" +"PO-Revision-Date: 2009-05-04 00:11+0800\n" +"Last-Translator: freeRen \n" +"Language-Team: freeren.org \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Poedit-Language: Chinese\n" +"X-Poedit-Country: CHINA\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Bookmarks: 0,1,-1,-1,-1,-1,-1,-1,-1,-1\n" + +#: fields.py:96 +#, python-format +msgid "Extension %(ext)s is not allowed. Only %(allowed)s is allowed." +msgstr "擴展名%(ext)s是不允許的。只允許%(allowed)s 。" + +#: forms.py:23 +msgid "Name" +msgstr "名稱" + +#: forms.py:23 +#: forms.py:49 +msgid "The Name will automatically be converted to lowercase. Only letters, numbers, underscores and hyphens are allowed." +msgstr "這個名稱將自動轉換為小寫。只允許字母、數字、下劃線和連字符。" + +#: forms.py:30 +#: forms.py:56 +msgid "Only letters, numbers, underscores and hyphens are allowed." +msgstr "只允許字母、數字、下劃線和連字符。" + +#: forms.py:33 +msgid "The Folder already exists." +msgstr "這個文件夾已經存在。" + +#: forms.py:36 +msgid "Disallowed Folder Name." +msgstr "不允許文件夾名稱。" + +#: forms.py:49 +msgid "New Name" +msgstr "新名稱" + +#: forms.py:59 +msgid "The File/Folder already exists." +msgstr "這個文件/文件夾已經存在。" + +#: forms.py:95 +msgid "File" +msgstr "文件" + +#: forms.py:96 +msgid "Use Image Generator" +msgstr "使用圖像生成器" + +#: forms.py:105 +msgid "File already exists." +msgstr "文件已經存在。" + +#: forms.py:111 +msgid "Filename is not allowed." +msgstr "文件名不允許。" + +#: forms.py:116 +msgid "File extension is not allowed." +msgstr "文件擴展名不允許。" + +#: forms.py:121 +msgid "Filesize exceeds allowed Upload Size." +msgstr "超出允許的上傳大小。" + +#: functions.py:84 +msgid "Home" +msgstr "首頁" + +#: functions.py:279 +msgid "Thumbnail creation failed." +msgstr "縮略圖創建失敗。" + +#: functions.py:334 +#: functions.py:389 +msgid "Image creation failed." +msgstr "圖像創建失敗。" + +#: views.py:174 +msgid "FileBrowser" +msgstr "文件瀏覽器" + +#: views.py:198 +#, python-format +msgid "The Folder %s was successfully created." +msgstr "文件夾\"%s\"創建成功。" + +#: views.py:204 +msgid "Permission denied." +msgstr "權限被拒絕。" + +#: views.py:206 +msgid "Error creating directory." +msgstr "創建目錄錯誤。" + +#: views.py:214 +#: views.py:215 +#: templates/filebrowser/index.html:33 +msgid "New Folder" +msgstr "創建文件夾" + +#: views.py:260 +msgid "Upload successful." +msgstr "上傳成功。" + +#: views.py:273 +#: templates/filebrowser/index.html:36 +#: templates/filebrowser/upload.html:62 +msgid "Upload" +msgstr "上传" + +#: views.py:274 +msgid "Select files to upload" +msgstr "選擇上傳文件" + +#: views.py:304 +msgid "Thumbnail creation successful." +msgstr "縮略圖創建成功。" + +#: views.py:354 +#, python-format +msgid "The file %s was successfully deleted." +msgstr "文件\"%s\"刪除成功。" + +#: views.py:366 +#, python-format +msgid "The directory %s was successfully deleted." +msgstr "目錄\"%s\"刪除成功。" + +#: views.py:417 +msgid "Error renaming Thumbnail." +msgstr "重命名縮略圖錯誤。" + +#: views.py:423 +msgid "Renaming was successful." +msgstr "重命名成功。" + +#: views.py:428 +msgid "Error." +msgstr "錯誤。" + +#: views.py:437 +#: templates/filebrowser/include/filelisting.html:52 +msgid "Rename" +msgstr "重命名" + +#: views.py:438 +#, python-format +msgid "Rename \"%s\"" +msgstr "重命名 \"%s\"" + +#: views.py:475 +msgid "Successfully generated Images." +msgstr "生成圖像成功。" + +#: templates/filebrowser/append.html:4 +#: templates/filebrowser/append.html:6 +#, fuzzy +msgid "File-Browser" +msgstr "文件瀏覽器" + +#: templates/filebrowser/index.html:34 +msgid "Make Thumbs" +msgstr "創建縮略圖" + +#: templates/filebrowser/index.html:35 +msgid "Generate Images" +msgstr "生成圖像" + +#: templates/filebrowser/makedir.html:24 +#: templates/filebrowser/rename.html:22 +msgid "Please correct the following errors." +msgstr "請修正下面的錯誤。" + +#: templates/filebrowser/makedir.html:34 +#: templates/filebrowser/rename.html:33 +msgid "Submit" +msgstr "保存" + +#: templates/filebrowser/upload.html:37 +msgid "Will use image generator." +msgstr "使用圖像生成器。" + +#: templates/filebrowser/upload.html:47 +msgid "Help" +msgstr "幫助" + +#: templates/filebrowser/upload.html:51 +msgid "Allowed" +msgstr "允許" + +#: templates/filebrowser/upload.html:57 +msgid "Max. Filesize" +msgstr "最大文件大小" + +#: templates/filebrowser/include/filelisting.html:8 +msgid "Select" +msgstr "選擇" + +#: templates/filebrowser/include/filelisting.html:15 +msgid "Select File" +msgstr "選擇文件" + +#: templates/filebrowser/include/filelisting.html:26 +msgid "Make Thumbnail" +msgstr "創建縮略圖" + +#: templates/filebrowser/include/filelisting.html:29 +msgid "View Image" +msgstr "查看圖像" + +#: templates/filebrowser/include/filelisting.html:46 +msgid "Generate Image Versions" +msgstr "生成圖像版本" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Are you sure you want to delete this file?" +msgstr "你確定要刪除這個文件?" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Delete File" +msgstr "删除文件" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Are you sure you want to delete this Folder?" +msgstr "你確定要刪除這個文件夾?" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Delete Folder" +msgstr "刪除文件夾" + +#: templates/filebrowser/include/filter.html:15 +msgid "Filter" +msgstr "過濾器" + +#: templates/filebrowser/include/filter.html:21 +msgid "By Date" +msgstr "以 日期" + +#: templates/filebrowser/include/filter.html:23 +msgid "Any Date" +msgstr "任意日期" + +#: templates/filebrowser/include/filter.html:25 +msgid "Today" +msgstr "今天" + +#: templates/filebrowser/include/filter.html:27 +msgid "Past 7 days" +msgstr "前7天" + +#: templates/filebrowser/include/filter.html:29 +msgid "Past 30 days" +msgstr "本月" + +#: templates/filebrowser/include/filter.html:31 +msgid "This year" +msgstr "本年" + +#: templates/filebrowser/include/filter.html:39 +msgid "By Type" +msgstr "以 類型" + +#: templates/filebrowser/include/filter.html:41 +msgid "All" +msgstr "全部" + +#: templates/filebrowser/include/paginator.html:5 +msgid "No Items Found." +msgstr "沒有找到。" + +#: templates/filebrowser/include/paginator.html:10 +#, python-format +msgid "%(counter)s Item" +msgid_plural "%(counter)s Items" +msgstr[0] "%(counter)s 項" + +#: templates/filebrowser/include/paginator.html:16 +msgid "No Items." +msgstr "沒有項" + +#: templates/filebrowser/include/tableheader.html:13 +#: templates/filebrowser/include/tableheader.html:14 +msgid "Filename" +msgstr "文件名" + +#: templates/filebrowser/include/tableheader.html:20 +#: templates/filebrowser/include/tableheader.html:21 +msgid "Size" +msgstr "大小" + +#: templates/filebrowser/include/tableheader.html:23 +#: templates/filebrowser/include/tableheader.html:24 +msgid "Date" +msgstr "日期" + +#: templates/filebrowser/include/toolbar.html:14 +msgid "Go" +msgstr "執行" + +#: templates/filebrowser/include/toolbar.html:16 +#, python-format +msgid "%(counter)s Item found" +msgid_plural "%(counter)s Items found" +msgstr[0] "找到 %(counter)s 項" + +#: templates/filebrowser/include/toolbar.html:17 +#, python-format +msgid "%(counter)s Item total" +msgid_plural "%(counter)s Items total" +msgstr[0] "共 %(counter)s 項" + +msgid "Folder" +msgstr "目錄" + +msgid "Image" +msgstr "圖片" + +msgid "Document" +msgstr "文檔" + +msgid "Code" +msgstr "代碼" + +msgid "Video" +msgstr "視頻" + +msgid "Sound" +msgstr "音頻" + diff --git a/apps/filebrowser/locale/zh_TW/LC_MESSAGES/django.mo b/apps/filebrowser/locale/zh_TW/LC_MESSAGES/django.mo new file mode 100644 index 00000000..14136c06 Binary files /dev/null and b/apps/filebrowser/locale/zh_TW/LC_MESSAGES/django.mo differ diff --git a/apps/filebrowser/locale/zh_TW/LC_MESSAGES/django.po b/apps/filebrowser/locale/zh_TW/LC_MESSAGES/django.po new file mode 100644 index 00000000..c60bc65c --- /dev/null +++ b/apps/filebrowser/locale/zh_TW/LC_MESSAGES/django.po @@ -0,0 +1,346 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: filebrowser 2.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-05-04 00:06+0800\n" +"PO-Revision-Date: 2009-05-04 00:11+0800\n" +"Last-Translator: freeRen \n" +"Language-Team: freeren.org \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Poedit-Language: Chinese\n" +"X-Poedit-Country: CHINA\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-Bookmarks: 0,1,-1,-1,-1,-1,-1,-1,-1,-1\n" + +#: fields.py:96 +#, python-format +msgid "Extension %(ext)s is not allowed. Only %(allowed)s is allowed." +msgstr "擴展名%(ext)s是不允許的。只允許%(allowed)s 。" + +#: forms.py:23 +msgid "Name" +msgstr "名稱" + +#: forms.py:23 +#: forms.py:49 +msgid "The Name will automatically be converted to lowercase. Only letters, numbers, underscores and hyphens are allowed." +msgstr "這個名稱將自動轉換為小寫。只允許字母、數字、下劃線和連字符。" + +#: forms.py:30 +#: forms.py:56 +msgid "Only letters, numbers, underscores and hyphens are allowed." +msgstr "只允許字母、數字、下劃線和連字符。" + +#: forms.py:33 +msgid "The Folder already exists." +msgstr "這個文件夾已經存在。" + +#: forms.py:36 +msgid "Disallowed Folder Name." +msgstr "不允許文件夾名稱。" + +#: forms.py:49 +msgid "New Name" +msgstr "新名稱" + +#: forms.py:59 +msgid "The File/Folder already exists." +msgstr "這個文件/文件夾已經存在。" + +#: forms.py:95 +msgid "File" +msgstr "文件" + +#: forms.py:96 +msgid "Use Image Generator" +msgstr "使用圖像生成器" + +#: forms.py:105 +msgid "File already exists." +msgstr "文件已經存在。" + +#: forms.py:111 +msgid "Filename is not allowed." +msgstr "文件名不允許。" + +#: forms.py:116 +msgid "File extension is not allowed." +msgstr "文件擴展名不允許。" + +#: forms.py:121 +msgid "Filesize exceeds allowed Upload Size." +msgstr "超出允許的上傳大小。" + +#: functions.py:84 +msgid "Home" +msgstr "首頁" + +#: functions.py:279 +msgid "Thumbnail creation failed." +msgstr "縮略圖創建失敗。" + +#: functions.py:334 +#: functions.py:389 +msgid "Image creation failed." +msgstr "圖像創建失敗。" + +#: views.py:174 +msgid "FileBrowser" +msgstr "文件瀏覽器" + +#: views.py:198 +#, python-format +msgid "The Folder %s was successfully created." +msgstr "文件夾\"%s\"創建成功。" + +#: views.py:204 +msgid "Permission denied." +msgstr "權限被拒絕。" + +#: views.py:206 +msgid "Error creating directory." +msgstr "創建目錄錯誤。" + +#: views.py:214 +#: views.py:215 +#: templates/filebrowser/index.html:33 +msgid "New Folder" +msgstr "創建文件夾" + +#: views.py:260 +msgid "Upload successful." +msgstr "上傳成功。" + +#: views.py:273 +#: templates/filebrowser/index.html:36 +#: templates/filebrowser/upload.html:62 +msgid "Upload" +msgstr "上传" + +#: views.py:274 +msgid "Select files to upload" +msgstr "選擇上傳文件" + +#: views.py:304 +msgid "Thumbnail creation successful." +msgstr "縮略圖創建成功。" + +#: views.py:354 +#, python-format +msgid "The file %s was successfully deleted." +msgstr "文件\"%s\"刪除成功。" + +#: views.py:366 +#, python-format +msgid "The directory %s was successfully deleted." +msgstr "目錄\"%s\"刪除成功。" + +#: views.py:417 +msgid "Error renaming Thumbnail." +msgstr "重命名縮略圖錯誤。" + +#: views.py:423 +msgid "Renaming was successful." +msgstr "重命名成功。" + +#: views.py:428 +msgid "Error." +msgstr "錯誤。" + +#: views.py:437 +#: templates/filebrowser/include/filelisting.html:52 +msgid "Rename" +msgstr "重命名" + +#: views.py:438 +#, python-format +msgid "Rename \"%s\"" +msgstr "重命名 \"%s\"" + +#: views.py:475 +msgid "Successfully generated Images." +msgstr "生成圖像成功。" + +#: templates/filebrowser/append.html:4 +#: templates/filebrowser/append.html:6 +#, fuzzy +msgid "File-Browser" +msgstr "文件瀏覽器" + +#: templates/filebrowser/index.html:34 +msgid "Make Thumbs" +msgstr "創建縮略圖" + +#: templates/filebrowser/index.html:35 +msgid "Generate Images" +msgstr "生成圖像" + +#: templates/filebrowser/makedir.html:24 +#: templates/filebrowser/rename.html:22 +msgid "Please correct the following errors." +msgstr "請修正下面的錯誤。" + +#: templates/filebrowser/makedir.html:34 +#: templates/filebrowser/rename.html:33 +msgid "Submit" +msgstr "保存" + +#: templates/filebrowser/upload.html:37 +msgid "Will use image generator." +msgstr "使用圖像生成器。" + +#: templates/filebrowser/upload.html:47 +msgid "Help" +msgstr "幫助" + +#: templates/filebrowser/upload.html:51 +msgid "Allowed" +msgstr "允許" + +#: templates/filebrowser/upload.html:57 +msgid "Max. Filesize" +msgstr "最大文件大小" + +#: templates/filebrowser/include/filelisting.html:8 +msgid "Select" +msgstr "選擇" + +#: templates/filebrowser/include/filelisting.html:15 +msgid "Select File" +msgstr "選擇文件" + +#: templates/filebrowser/include/filelisting.html:26 +msgid "Make Thumbnail" +msgstr "創建縮略圖" + +#: templates/filebrowser/include/filelisting.html:29 +msgid "View Image" +msgstr "查看圖像" + +#: templates/filebrowser/include/filelisting.html:46 +msgid "Generate Image Versions" +msgstr "生成圖像版本" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Are you sure you want to delete this file?" +msgstr "你確定要刪除這個文件?" + +#: templates/filebrowser/include/filelisting.html:61 +msgid "Delete File" +msgstr "删除文件" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Are you sure you want to delete this Folder?" +msgstr "你確定要刪除這個文件夾?" + +#: templates/filebrowser/include/filelisting.html:64 +msgid "Delete Folder" +msgstr "刪除文件夾" + +#: templates/filebrowser/include/filter.html:15 +msgid "Filter" +msgstr "過濾器" + +#: templates/filebrowser/include/filter.html:21 +msgid "By Date" +msgstr "以 日期" + +#: templates/filebrowser/include/filter.html:23 +msgid "Any Date" +msgstr "任意日期" + +#: templates/filebrowser/include/filter.html:25 +msgid "Today" +msgstr "今天" + +#: templates/filebrowser/include/filter.html:27 +msgid "Past 7 days" +msgstr "前7天" + +#: templates/filebrowser/include/filter.html:29 +msgid "Past 30 days" +msgstr "本月" + +#: templates/filebrowser/include/filter.html:31 +msgid "This year" +msgstr "本年" + +#: templates/filebrowser/include/filter.html:39 +msgid "By Type" +msgstr "以 類型" + +#: templates/filebrowser/include/filter.html:41 +msgid "All" +msgstr "全部" + +#: templates/filebrowser/include/paginator.html:5 +msgid "No Items Found." +msgstr "沒有找到。" + +#: templates/filebrowser/include/paginator.html:10 +#, python-format +msgid "%(counter)s Item" +msgid_plural "%(counter)s Items" +msgstr[0] "%(counter)s 項" + +#: templates/filebrowser/include/paginator.html:16 +msgid "No Items." +msgstr "沒有項" + +#: templates/filebrowser/include/tableheader.html:13 +#: templates/filebrowser/include/tableheader.html:14 +msgid "Filename" +msgstr "文件名" + +#: templates/filebrowser/include/tableheader.html:20 +#: templates/filebrowser/include/tableheader.html:21 +msgid "Size" +msgstr "大小" + +#: templates/filebrowser/include/tableheader.html:23 +#: templates/filebrowser/include/tableheader.html:24 +msgid "Date" +msgstr "日期" + +#: templates/filebrowser/include/toolbar.html:14 +msgid "Go" +msgstr "執行" + +#: templates/filebrowser/include/toolbar.html:16 +#, python-format +msgid "%(counter)s Item found" +msgid_plural "%(counter)s Items found" +msgstr[0] "找到 %(counter)s 項" + +#: templates/filebrowser/include/toolbar.html:17 +#, python-format +msgid "%(counter)s Item total" +msgid_plural "%(counter)s Items total" +msgstr[0] "共 %(counter)s 項" + +msgid "Folder" +msgstr "目錄" + +msgid "Image" +msgstr "圖片" + +msgid "Document" +msgstr "文檔" + +msgid "Code" +msgstr "代碼" + +msgid "Video" +msgstr "視頻" + +msgid "Sound" +msgstr "音頻" + diff --git a/apps/filebrowser/media/.svn/all-wcprops b/apps/filebrowser/media/.svn/all-wcprops new file mode 100644 index 00000000..76f4ac06 --- /dev/null +++ b/apps/filebrowser/media/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 58 +/svn/!svn/ver/466/branches/filebrowser_3/filebrowser/media +END diff --git a/apps/filebrowser/media/.svn/entries b/apps/filebrowser/media/.svn/entries new file mode 100644 index 00000000..91a3228e --- /dev/null +++ b/apps/filebrowser/media/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/media +http://django-filebrowser.googlecode.com/svn + + + +2009-10-29T16:15:59.524671Z +466 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +filebrowser +dir + diff --git a/apps/filebrowser/media/filebrowser/.svn/all-wcprops b/apps/filebrowser/media/filebrowser/.svn/all-wcprops new file mode 100644 index 00000000..3752e31b --- /dev/null +++ b/apps/filebrowser/media/filebrowser/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 70 +/svn/!svn/ver/466/branches/filebrowser_3/filebrowser/media/filebrowser +END diff --git a/apps/filebrowser/media/filebrowser/.svn/entries b/apps/filebrowser/media/filebrowser/.svn/entries new file mode 100644 index 00000000..53de6981 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/.svn/entries @@ -0,0 +1,40 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/media/filebrowser +http://django-filebrowser.googlecode.com/svn + + + +2009-10-29T16:15:59.524671Z +466 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +css +dir + +img +dir + +js +dir + +uploadify +dir + diff --git a/apps/filebrowser/media/filebrowser/css/.svn/all-wcprops b/apps/filebrowser/media/filebrowser/css/.svn/all-wcprops new file mode 100644 index 00000000..8cfbfa0f --- /dev/null +++ b/apps/filebrowser/media/filebrowser/css/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/css +END +filebrowser.css +K 25 +svn:wc:ra_dav:version-url +V 90 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/css/filebrowser.css +END diff --git a/apps/filebrowser/media/filebrowser/css/.svn/entries b/apps/filebrowser/media/filebrowser/css/.svn/entries new file mode 100644 index 00000000..e429ef4b --- /dev/null +++ b/apps/filebrowser/media/filebrowser/css/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/media/filebrowser/css +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +filebrowser.css +file + + + + +2009-11-05T20:58:49.000000Z +724fd235089ee5ad15499fcbe5ddfc88 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +1637 + diff --git a/apps/filebrowser/media/filebrowser/css/.svn/prop-base/filebrowser.css.svn-base b/apps/filebrowser/media/filebrowser/css/.svn/prop-base/filebrowser.css.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/apps/filebrowser/media/filebrowser/css/.svn/prop-base/filebrowser.css.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/apps/filebrowser/media/filebrowser/css/.svn/text-base/filebrowser.css.svn-base b/apps/filebrowser/media/filebrowser/css/.svn/text-base/filebrowser.css.svn-base new file mode 100644 index 00000000..c68126ea --- /dev/null +++ b/apps/filebrowser/media/filebrowser/css/.svn/text-base/filebrowser.css.svn-base @@ -0,0 +1,29 @@ +.filebrowser table td { font-size: 10px; } +.filebrowser table a { font-size: 11px; } +.filebrowser thead th.sorted a { padding-right: 13px; } +.filebrowser td { padding: 9px 10px 7px 10px !important; } +.filebrowser td.fb_icon { padding: 6px 5px 5px 5px !important; } + +table a.fb_deletelink, table a.fb_renamelink, table a.fb_selectlink, table a.fb_showversionslink { + cursor: pointer; + display: block; padding: 0; margin: 0; + width: 23px; height: 17px; + background-color: transparent; + background-position: 0 center; + background-repeat: no-repeat; +} + +table .fb_deletelink:link, table .fb_deletelink:visited { + width: 15px; + background-image: url('../img/filebrowser_icon_delete.gif'); +} +table .fb_deletelink:hover, table .fb_deletelink:active { background-image: url('../img/filebrowser_icon_delete_hover.gif'); } +table .fb_renamelink:link, table .fb_renamelink:visited { + width: 14px; + background-image: url('../img/filebrowser_icon_rename.gif'); +} +table .fb_renamelink:hover, table .fb_renamelink:active { background-image: url('../img/filebrowser_icon_rename_hover.gif'); } +table .fb_selectlink:link, table .fb_selectlink:visited { background-image: url('../img/filebrowser_icon_select.gif'); } +table .fb_selectlink:hover, table .fb_selectlink:active { background-image: url('../img/filebrowser_icon_select_hover.gif'); } +table .fb_showversionslink:link, table .fb_showversionslink:visited { background-image: url('../img/filebrowser_icon_showversions.gif'); } +table .fb_showversionslink:hover, table .fb_showversionslink:active { background-image: url('../img/filebrowser_icon_showversions_hover.gif'); } diff --git a/apps/filebrowser/media/filebrowser/css/filebrowser.css b/apps/filebrowser/media/filebrowser/css/filebrowser.css new file mode 100755 index 00000000..c68126ea --- /dev/null +++ b/apps/filebrowser/media/filebrowser/css/filebrowser.css @@ -0,0 +1,29 @@ +.filebrowser table td { font-size: 10px; } +.filebrowser table a { font-size: 11px; } +.filebrowser thead th.sorted a { padding-right: 13px; } +.filebrowser td { padding: 9px 10px 7px 10px !important; } +.filebrowser td.fb_icon { padding: 6px 5px 5px 5px !important; } + +table a.fb_deletelink, table a.fb_renamelink, table a.fb_selectlink, table a.fb_showversionslink { + cursor: pointer; + display: block; padding: 0; margin: 0; + width: 23px; height: 17px; + background-color: transparent; + background-position: 0 center; + background-repeat: no-repeat; +} + +table .fb_deletelink:link, table .fb_deletelink:visited { + width: 15px; + background-image: url('../img/filebrowser_icon_delete.gif'); +} +table .fb_deletelink:hover, table .fb_deletelink:active { background-image: url('../img/filebrowser_icon_delete_hover.gif'); } +table .fb_renamelink:link, table .fb_renamelink:visited { + width: 14px; + background-image: url('../img/filebrowser_icon_rename.gif'); +} +table .fb_renamelink:hover, table .fb_renamelink:active { background-image: url('../img/filebrowser_icon_rename_hover.gif'); } +table .fb_selectlink:link, table .fb_selectlink:visited { background-image: url('../img/filebrowser_icon_select.gif'); } +table .fb_selectlink:hover, table .fb_selectlink:active { background-image: url('../img/filebrowser_icon_select_hover.gif'); } +table .fb_showversionslink:link, table .fb_showversionslink:visited { background-image: url('../img/filebrowser_icon_showversions.gif'); } +table .fb_showversionslink:hover, table .fb_showversionslink:active { background-image: url('../img/filebrowser_icon_showversions_hover.gif'); } diff --git a/apps/filebrowser/media/filebrowser/img/.svn/all-wcprops b/apps/filebrowser/media/filebrowser/img/.svn/all-wcprops new file mode 100644 index 00000000..77268324 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/all-wcprops @@ -0,0 +1,203 @@ +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img +END +filebrowser_object-tools_icon_makethumb.gif +K 25 +svn:wc:ra_dav:version-url +V 118 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_makethumb.gif +END +filebrowser_icon_delete.gif +K 25 +svn:wc:ra_dav:version-url +V 102 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_delete.gif +END +filebrowser_type_code.gif +K 25 +svn:wc:ra_dav:version-url +V 100 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_type_code.gif +END +filebrowser_icon_select_disabled.gif +K 25 +svn:wc:ra_dav:version-url +V 111 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_select_disabled.gif +END +filebrowser_type_.gif +K 25 +svn:wc:ra_dav:version-url +V 96 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_type_.gif +END +filebrowser_icon_rename_hover.gif +K 25 +svn:wc:ra_dav:version-url +V 108 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_rename_hover.gif +END +filebrowser_type_image.gif +K 25 +svn:wc:ra_dav:version-url +V 101 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_type_image.gif +END +filebrowser_icon_showversions_hover.gif +K 25 +svn:wc:ra_dav:version-url +V 114 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_showversions_hover.gif +END +filebrowser_icon_makethumb.gif +K 25 +svn:wc:ra_dav:version-url +V 105 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_makethumb.gif +END +filebrowser_icon_select.gif +K 25 +svn:wc:ra_dav:version-url +V 102 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_select.gif +END +filebrowser_object-tools_icon_imagegenerator_hover.gif +K 25 +svn:wc:ra_dav:version-url +V 129 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_imagegenerator_hover.gif +END +filebrowser_icon_show.gif +K 25 +svn:wc:ra_dav:version-url +V 100 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_show.gif +END +filebrowser_type_sound.gif +K 25 +svn:wc:ra_dav:version-url +V 101 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_type_sound.gif +END +filebrowser_object-tools_icon_makedirectory.gif +K 25 +svn:wc:ra_dav:version-url +V 122 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_makedirectory.gif +END +filebrowser_object-tools_icon_multipleupload_hover.gif +K 25 +svn:wc:ra_dav:version-url +V 129 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_multipleupload_hover.gif +END +filebrowser_icon_imagegenerator_hover.gif +K 25 +svn:wc:ra_dav:version-url +V 116 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_imagegenerator_hover.gif +END +filebrowser_type_video.gif +K 25 +svn:wc:ra_dav:version-url +V 101 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_type_video.gif +END +tableheader_arrow_up.gif +K 25 +svn:wc:ra_dav:version-url +V 99 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/tableheader_arrow_up.gif +END +filebrowser_type_folder.gif +K 25 +svn:wc:ra_dav:version-url +V 102 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_type_folder.gif +END +filebrowser_object-tools_icon_makethumb_hover.gif +K 25 +svn:wc:ra_dav:version-url +V 124 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_makethumb_hover.gif +END +filebrowser_icon_delete_hover.gif +K 25 +svn:wc:ra_dav:version-url +V 108 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_delete_hover.gif +END +filebrowser_type_document.gif +K 25 +svn:wc:ra_dav:version-url +V 104 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_type_document.gif +END +filebrowser_icon_rename.gif +K 25 +svn:wc:ra_dav:version-url +V 102 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_rename.gif +END +filebrowser_icon_showversions.gif +K 25 +svn:wc:ra_dav:version-url +V 108 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_showversions.gif +END +filebrowser_object-tools_icon_imagegenerator.gif +K 25 +svn:wc:ra_dav:version-url +V 123 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_imagegenerator.gif +END +filebrowser_icon_makethumb_hover.gif +K 25 +svn:wc:ra_dav:version-url +V 111 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_makethumb_hover.gif +END +tableheader_arrows.gif +K 25 +svn:wc:ra_dav:version-url +V 97 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/tableheader_arrows.gif +END +filebrowser_icon_select_hover.gif +K 25 +svn:wc:ra_dav:version-url +V 108 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_select_hover.gif +END +filebrowser_icon_show_hover.gif +K 25 +svn:wc:ra_dav:version-url +V 106 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_show_hover.gif +END +filebrowser_object-tools_icon_multipleupload.gif +K 25 +svn:wc:ra_dav:version-url +V 123 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_multipleupload.gif +END +tableheader_arrow_down.gif +K 25 +svn:wc:ra_dav:version-url +V 101 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/tableheader_arrow_down.gif +END +filebrowser_object-tools_icon_makedirectory_hover.gif +K 25 +svn:wc:ra_dav:version-url +V 128 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_makedirectory_hover.gif +END +filebrowser_icon_imagegenerator.gif +K 25 +svn:wc:ra_dav:version-url +V 110 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_imagegenerator.gif +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/entries b/apps/filebrowser/media/filebrowser/img/.svn/entries new file mode 100644 index 00000000..69fc4e76 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/entries @@ -0,0 +1,1150 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/media/filebrowser/img +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +filebrowser_object-tools_icon_makethumb.gif +file + + + + +2009-11-05T20:58:50.000000Z +ac0b0f779a11e12c6fb9be3fd9dae3a9 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +403 + +filebrowser_icon_delete.gif +file + + + + +2009-11-05T20:58:50.000000Z +157eed9c0a8ce56cc2b75cb12065f1cb +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +151 + +filebrowser_type_code.gif +file + + + + +2009-11-05T20:58:50.000000Z +325e306d3e02c8acda7af6adfa7fe004 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +160 + +filebrowser_icon_select_disabled.gif +file + + + + +2009-11-05T20:58:50.000000Z +a0c268883018edf7fb7a89c8bd0818e3 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +3186 + +filebrowser_type_.gif +file + + + + +2009-11-05T20:58:50.000000Z +b5fac564ecb2166984dd3a2bbeed30f2 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +113 + +filebrowser_icon_rename_hover.gif +file + + + + +2009-11-05T20:58:50.000000Z +497f6c51d823c274a60fe2f0e62e5f0c +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +222 + +filebrowser_type_image.gif +file + + + + +2009-11-05T20:58:50.000000Z +f7ee32d90df4f4a881332f8792bff56c +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +127 + +filebrowser_icon_showversions_hover.gif +file + + + + +2009-11-05T20:58:50.000000Z +738f5047e56dfc42c27a2035264d9a5a +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +174 + +filebrowser_icon_makethumb.gif +file + + + + +2009-11-05T20:58:50.000000Z +ab37558a12a7ac398d70967cea5c2490 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +378 + +filebrowser_icon_select.gif +file + + + + +2009-11-05T20:58:50.000000Z +d5f9eece128537b385fbce97dbe845a1 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +377 + +filebrowser_object-tools_icon_imagegenerator_hover.gif +file + + + + +2009-11-05T20:58:50.000000Z +f7283a0d70fde92d648968b4d717b332 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +433 + +filebrowser_icon_show.gif +file + + + + +2009-11-05T20:58:50.000000Z +796cca444bccb1aa3a1177af34df2b55 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +427 + +filebrowser_type_sound.gif +file + + + + +2009-11-05T20:58:50.000000Z +4151664f192446c247002b107e7ef44b +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +223 + +filebrowser_object-tools_icon_makedirectory.gif +file + + + + +2009-11-05T20:58:50.000000Z +a0a9265b740291191ef495408d8462ee +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +390 + +filebrowser_object-tools_icon_multipleupload_hover.gif +file + + + + +2009-11-05T20:58:50.000000Z +9c8b269a5d21539c833af80f93f98857 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +263 + +filebrowser_icon_imagegenerator_hover.gif +file + + + + +2009-11-05T20:58:50.000000Z +f7283a0d70fde92d648968b4d717b332 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +433 + +filebrowser_type_video.gif +file + + + + +2009-11-05T20:58:50.000000Z +a4182f6abe9db217cfe9285bc4d658d8 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +147 + +tableheader_arrow_up.gif +file + + + + +2009-11-05T20:58:50.000000Z +54e3bf1ab4191c053d1f986da869b891 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +292 + +filebrowser_type_folder.gif +file + + + + +2009-11-05T20:58:50.000000Z +06bb3d324d86924674bd696673cf12b5 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +228 + +filebrowser_object-tools_icon_makethumb_hover.gif +file + + + + +2009-11-05T20:58:50.000000Z +ae1a740563fab6107c761690ba1ea4b0 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +284 + +filebrowser_icon_delete_hover.gif +file + + + + +2009-11-05T20:58:50.000000Z +3bc37e729ede0d78618286dcaaec4ecb +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +151 + +filebrowser_type_document.gif +file + + + + +2009-11-05T20:58:50.000000Z +69c60b7de4e9e07a111275424f8aea38 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +118 + +filebrowser_icon_rename.gif +file + + + + +2009-11-05T20:58:50.000000Z +74d609b1407d2ec6a06797be1fa252b4 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +222 + +filebrowser_icon_showversions.gif +file + + + + +2009-11-05T20:58:50.000000Z +5e1a776e0b8cf3a7f28f7a7fe10c04f3 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +174 + +filebrowser_object-tools_icon_imagegenerator.gif +file + + + + +2009-11-05T20:58:50.000000Z +67c3f4a7d6cecec501fdf0561c07a300 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +433 + +filebrowser_icon_makethumb_hover.gif +file + + + + +2009-11-05T20:58:50.000000Z +b53f0c3ec7e9ba09faaf184ae9b9e08e +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +378 + +tableheader_arrows.gif +file + + + + +2009-11-05T20:58:50.000000Z +9938865535b6e2225419b4c97fe3e5ab +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +296 + +filebrowser_icon_select_hover.gif +file + + + + +2009-11-05T20:58:50.000000Z +3b1c5ee35a836335a146e58ef96f5e6d +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +264 + +filebrowser_icon_show_hover.gif +file + + + + +2009-11-05T20:58:50.000000Z +d86a374f1f8fc4dc541d060151e3a3cc +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +426 + +filebrowser_object-tools_icon_multipleupload.gif +file + + + + +2009-11-05T20:58:50.000000Z +592061db6b21baef0214d5ca0db50318 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +387 + +tableheader_arrow_down.gif +file + + + + +2009-11-05T20:58:50.000000Z +b3e7bfc27c65b00e59b6c732fdeccc16 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +292 + +filebrowser_object-tools_icon_makedirectory_hover.gif +file + + + + +2009-11-05T20:58:50.000000Z +0969316f65cbce421d15ae05ed2b6806 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +378 + +filebrowser_icon_imagegenerator.gif +file + + + + +2009-11-05T20:58:50.000000Z +67c3f4a7d6cecec501fdf0561c07a300 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +433 + diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_delete.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_delete.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_delete.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_delete_hover.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_delete_hover.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_delete_hover.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_imagegenerator.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_imagegenerator.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_imagegenerator.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_imagegenerator_hover.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_imagegenerator_hover.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_imagegenerator_hover.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_makethumb.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_makethumb.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_makethumb.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_makethumb_hover.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_makethumb_hover.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_makethumb_hover.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_rename.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_rename.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_rename.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_rename_hover.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_rename_hover.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_rename_hover.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_select.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_select.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_select.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_select_disabled.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_select_disabled.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_select_disabled.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_select_hover.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_select_hover.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_select_hover.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_show.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_show.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_show.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_show_hover.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_show_hover.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_show_hover.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_showversions.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_showversions.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_showversions.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_showversions_hover.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_showversions_hover.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_icon_showversions_hover.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_imagegenerator.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_imagegenerator.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_imagegenerator.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_imagegenerator_hover.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_imagegenerator_hover.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_imagegenerator_hover.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makedirectory.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makedirectory.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makedirectory.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makedirectory_hover.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makedirectory_hover.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makedirectory_hover.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makethumb.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makethumb.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makethumb.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makethumb_hover.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makethumb_hover.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makethumb_hover.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_multipleupload.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_multipleupload.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_multipleupload.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_multipleupload_hover.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_multipleupload_hover.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_multipleupload_hover.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_type_.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_type_.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_type_.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_type_code.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_type_code.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_type_code.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_type_document.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_type_document.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_type_document.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_type_folder.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_type_folder.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_type_folder.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_type_image.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_type_image.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_type_image.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_type_sound.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_type_sound.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_type_sound.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_type_video.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_type_video.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/filebrowser_type_video.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/tableheader_arrow_down.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/tableheader_arrow_down.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/tableheader_arrow_down.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/tableheader_arrow_up.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/tableheader_arrow_up.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/tableheader_arrow_up.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/prop-base/tableheader_arrows.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/tableheader_arrows.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/img/.svn/prop-base/tableheader_arrows.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_delete.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_delete.gif.svn-base new file mode 100644 index 00000000..221a6e1c Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_delete.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_delete_hover.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_delete_hover.gif.svn-base new file mode 100644 index 00000000..2a2142cd Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_delete_hover.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_imagegenerator.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_imagegenerator.gif.svn-base new file mode 100644 index 00000000..9b19a420 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_imagegenerator.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_imagegenerator_hover.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_imagegenerator_hover.gif.svn-base new file mode 100644 index 00000000..aaa256f4 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_imagegenerator_hover.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_makethumb.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_makethumb.gif.svn-base new file mode 100644 index 00000000..837f6cc6 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_makethumb.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_makethumb_hover.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_makethumb_hover.gif.svn-base new file mode 100644 index 00000000..d1d4d4a1 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_makethumb_hover.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_rename.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_rename.gif.svn-base new file mode 100644 index 00000000..bc45fe4b Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_rename.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_rename_hover.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_rename_hover.gif.svn-base new file mode 100644 index 00000000..be8ea08b Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_rename_hover.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_select.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_select.gif.svn-base new file mode 100644 index 00000000..a8384279 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_select.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_select_disabled.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_select_disabled.gif.svn-base new file mode 100644 index 00000000..60ad2d53 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_select_disabled.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_select_hover.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_select_hover.gif.svn-base new file mode 100644 index 00000000..319558e9 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_select_hover.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_show.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_show.gif.svn-base new file mode 100644 index 00000000..dded9824 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_show.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_show_hover.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_show_hover.gif.svn-base new file mode 100644 index 00000000..fbd1f33e Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_show_hover.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_showversions.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_showversions.gif.svn-base new file mode 100644 index 00000000..71525d74 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_showversions.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_showversions_hover.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_showversions_hover.gif.svn-base new file mode 100644 index 00000000..1fbe2e49 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_icon_showversions_hover.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_imagegenerator.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_imagegenerator.gif.svn-base new file mode 100644 index 00000000..9b19a420 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_imagegenerator.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_imagegenerator_hover.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_imagegenerator_hover.gif.svn-base new file mode 100644 index 00000000..aaa256f4 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_imagegenerator_hover.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makedirectory.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makedirectory.gif.svn-base new file mode 100644 index 00000000..bcd98d91 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makedirectory.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makedirectory_hover.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makedirectory_hover.gif.svn-base new file mode 100644 index 00000000..f9938c77 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makedirectory_hover.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makethumb.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makethumb.gif.svn-base new file mode 100644 index 00000000..a6863cb8 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makethumb.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makethumb_hover.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makethumb_hover.gif.svn-base new file mode 100644 index 00000000..b9aba7cc Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makethumb_hover.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_multipleupload.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_multipleupload.gif.svn-base new file mode 100644 index 00000000..6de016be Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_multipleupload.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_multipleupload_hover.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_multipleupload_hover.gif.svn-base new file mode 100644 index 00000000..eaaf2542 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_multipleupload_hover.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_type_.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_type_.gif.svn-base new file mode 100644 index 00000000..6a908e27 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_type_.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_type_code.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_type_code.gif.svn-base new file mode 100644 index 00000000..96508394 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_type_code.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_type_document.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_type_document.gif.svn-base new file mode 100644 index 00000000..65ebd99b Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_type_document.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_type_folder.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_type_folder.gif.svn-base new file mode 100644 index 00000000..115e3fbd Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_type_folder.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_type_image.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_type_image.gif.svn-base new file mode 100644 index 00000000..000b31c1 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_type_image.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_type_sound.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_type_sound.gif.svn-base new file mode 100644 index 00000000..8a8970ab Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_type_sound.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_type_video.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_type_video.gif.svn-base new file mode 100644 index 00000000..f456d59b Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/filebrowser_type_video.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/tableheader_arrow_down.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/tableheader_arrow_down.gif.svn-base new file mode 100644 index 00000000..5ae95a60 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/tableheader_arrow_down.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/tableheader_arrow_up.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/tableheader_arrow_up.gif.svn-base new file mode 100644 index 00000000..85f1e126 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/tableheader_arrow_up.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/.svn/text-base/tableheader_arrows.gif.svn-base b/apps/filebrowser/media/filebrowser/img/.svn/text-base/tableheader_arrows.gif.svn-base new file mode 100644 index 00000000..39b8780c Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/.svn/text-base/tableheader_arrows.gif.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_icon_delete.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_delete.gif new file mode 100644 index 00000000..221a6e1c Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_delete.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_icon_delete_hover.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_delete_hover.gif new file mode 100644 index 00000000..2a2142cd Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_delete_hover.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_icon_imagegenerator.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_imagegenerator.gif new file mode 100644 index 00000000..9b19a420 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_imagegenerator.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_icon_imagegenerator_hover.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_imagegenerator_hover.gif new file mode 100644 index 00000000..aaa256f4 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_imagegenerator_hover.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_icon_makethumb.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_makethumb.gif new file mode 100644 index 00000000..837f6cc6 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_makethumb.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_icon_makethumb_hover.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_makethumb_hover.gif new file mode 100644 index 00000000..d1d4d4a1 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_makethumb_hover.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_icon_rename.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_rename.gif new file mode 100644 index 00000000..bc45fe4b Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_rename.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_icon_rename_hover.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_rename_hover.gif new file mode 100644 index 00000000..be8ea08b Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_rename_hover.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_icon_select.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_select.gif new file mode 100644 index 00000000..a8384279 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_select.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_icon_select_disabled.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_select_disabled.gif new file mode 100644 index 00000000..60ad2d53 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_select_disabled.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_icon_select_hover.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_select_hover.gif new file mode 100644 index 00000000..319558e9 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_select_hover.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_icon_show.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_show.gif new file mode 100644 index 00000000..dded9824 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_show.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_icon_show_hover.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_show_hover.gif new file mode 100644 index 00000000..fbd1f33e Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_show_hover.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_icon_showversions.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_showversions.gif new file mode 100644 index 00000000..71525d74 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_showversions.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_icon_showversions_hover.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_showversions_hover.gif new file mode 100644 index 00000000..1fbe2e49 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_icon_showversions_hover.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_imagegenerator.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_imagegenerator.gif new file mode 100644 index 00000000..9b19a420 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_imagegenerator.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_imagegenerator_hover.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_imagegenerator_hover.gif new file mode 100644 index 00000000..aaa256f4 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_imagegenerator_hover.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_makedirectory.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_makedirectory.gif new file mode 100644 index 00000000..bcd98d91 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_makedirectory.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_makedirectory_hover.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_makedirectory_hover.gif new file mode 100644 index 00000000..f9938c77 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_makedirectory_hover.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_makethumb.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_makethumb.gif new file mode 100644 index 00000000..a6863cb8 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_makethumb.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_makethumb_hover.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_makethumb_hover.gif new file mode 100644 index 00000000..b9aba7cc Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_makethumb_hover.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_multipleupload.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_multipleupload.gif new file mode 100644 index 00000000..6de016be Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_multipleupload.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_multipleupload_hover.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_multipleupload_hover.gif new file mode 100644 index 00000000..eaaf2542 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_multipleupload_hover.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_type_.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_type_.gif new file mode 100644 index 00000000..6a908e27 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_type_.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_type_code.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_type_code.gif new file mode 100644 index 00000000..96508394 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_type_code.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_type_document.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_type_document.gif new file mode 100644 index 00000000..65ebd99b Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_type_document.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_type_folder.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_type_folder.gif new file mode 100644 index 00000000..115e3fbd Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_type_folder.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_type_image.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_type_image.gif new file mode 100644 index 00000000..000b31c1 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_type_image.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_type_sound.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_type_sound.gif new file mode 100644 index 00000000..8a8970ab Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_type_sound.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/filebrowser_type_video.gif b/apps/filebrowser/media/filebrowser/img/filebrowser_type_video.gif new file mode 100644 index 00000000..f456d59b Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/filebrowser_type_video.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/tableheader_arrow_down.gif b/apps/filebrowser/media/filebrowser/img/tableheader_arrow_down.gif new file mode 100644 index 00000000..5ae95a60 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/tableheader_arrow_down.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/tableheader_arrow_up.gif b/apps/filebrowser/media/filebrowser/img/tableheader_arrow_up.gif new file mode 100644 index 00000000..85f1e126 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/tableheader_arrow_up.gif differ diff --git a/apps/filebrowser/media/filebrowser/img/tableheader_arrows.gif b/apps/filebrowser/media/filebrowser/img/tableheader_arrows.gif new file mode 100644 index 00000000..39b8780c Binary files /dev/null and b/apps/filebrowser/media/filebrowser/img/tableheader_arrows.gif differ diff --git a/apps/filebrowser/media/filebrowser/js/.svn/all-wcprops b/apps/filebrowser/media/filebrowser/js/.svn/all-wcprops new file mode 100644 index 00000000..201d6872 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/js/.svn/all-wcprops @@ -0,0 +1,41 @@ +K 25 +svn:wc:ra_dav:version-url +V 73 +/svn/!svn/ver/466/branches/filebrowser_3/filebrowser/media/filebrowser/js +END +FB_CKEditor.js +K 25 +svn:wc:ra_dav:version-url +V 88 +/svn/!svn/ver/452/branches/filebrowser_3/filebrowser/media/filebrowser/js/FB_CKEditor.js +END +FB_FileBrowseField.js +K 25 +svn:wc:ra_dav:version-url +V 95 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/js/FB_FileBrowseField.js +END +AddFileBrowser.js +K 25 +svn:wc:ra_dav:version-url +V 91 +/svn/!svn/ver/466/branches/filebrowser_3/filebrowser/media/filebrowser/js/AddFileBrowser.js +END +FB_TinyMCE.js +K 25 +svn:wc:ra_dav:version-url +V 87 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/js/FB_TinyMCE.js +END +jquery-1.3.2.min.js +K 25 +svn:wc:ra_dav:version-url +V 93 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/js/jquery-1.3.2.min.js +END +TinyMCEAdmin.js +K 25 +svn:wc:ra_dav:version-url +V 89 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/js/TinyMCEAdmin.js +END diff --git a/apps/filebrowser/media/filebrowser/js/.svn/entries b/apps/filebrowser/media/filebrowser/js/.svn/entries new file mode 100644 index 00000000..9e9096ed --- /dev/null +++ b/apps/filebrowser/media/filebrowser/js/.svn/entries @@ -0,0 +1,232 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/media/filebrowser/js +http://django-filebrowser.googlecode.com/svn + + + +2009-10-29T16:15:59.524671Z +466 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +FB_CKEditor.js +file + + + + +2009-11-05T20:58:50.000000Z +fa50cfae580047a009a2b86506210d9f +2009-10-11T14:09:32.302815Z +452 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +652 + +FB_FileBrowseField.js +file + + + + +2009-11-05T20:58:50.000000Z +6b093d924826e1d737086801bda89074 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +1234 + +AddFileBrowser.js +file + + + + +2009-11-05T20:58:50.000000Z +89c9b75dae80816eafa85a1397583b23 +2009-10-29T16:15:59.524671Z +466 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +1094 + +FB_TinyMCE.js +file + + + + +2009-11-05T20:58:50.000000Z +645e7326e1e8be17ce619cdf61731cea +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +942 + +jquery-1.3.2.min.js +file + + + + +2009-11-05T20:58:50.000000Z +bb381e2d19d8eace86b34d20759491a5 +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +57254 + +TinyMCEAdmin.js +file + + + + +2009-11-05T20:58:50.000000Z +fb5327084cd3bde1cdf2421ffd619259 +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +2487 + diff --git a/apps/filebrowser/media/filebrowser/js/.svn/prop-base/FB_FileBrowseField.js.svn-base b/apps/filebrowser/media/filebrowser/js/.svn/prop-base/FB_FileBrowseField.js.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/apps/filebrowser/media/filebrowser/js/.svn/prop-base/FB_FileBrowseField.js.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/apps/filebrowser/media/filebrowser/js/.svn/prop-base/FB_TinyMCE.js.svn-base b/apps/filebrowser/media/filebrowser/js/.svn/prop-base/FB_TinyMCE.js.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/apps/filebrowser/media/filebrowser/js/.svn/prop-base/FB_TinyMCE.js.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/apps/filebrowser/media/filebrowser/js/.svn/text-base/AddFileBrowser.js.svn-base b/apps/filebrowser/media/filebrowser/js/.svn/text-base/AddFileBrowser.js.svn-base new file mode 100644 index 00000000..3a994423 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/js/.svn/text-base/AddFileBrowser.js.svn-base @@ -0,0 +1,30 @@ +var FileBrowser = { + // this is set automatically + admin_media_prefix: '', + // change this + thumb_prefix: 'thumb_', + no_thumb: 'filebrowser/img/no_thumb.gif', + + init: function() { + // Deduce admin_media_prefix by looking at the + + + + + + +
+ +

Cancel All Uploads

+ + diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/_notes/.svn/all-wcprops b/apps/filebrowser/media/filebrowser/uploadify/example/_notes/.svn/all-wcprops new file mode 100644 index 00000000..c0552a6d --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/_notes/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 95 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/_notes +END +dwsync.xml +K 25 +svn:wc:ra_dav:version-url +V 106 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/_notes/dwsync.xml +END diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/_notes/.svn/entries b/apps/filebrowser/media/filebrowser/uploadify/example/_notes/.svn/entries new file mode 100644 index 00000000..dd272fcd --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/_notes/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/_notes +http://django-filebrowser.googlecode.com/svn + + + +2009-10-12T09:29:29.900685Z +459 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +dwsync.xml +file + + + + +2009-11-05T20:58:51.000000Z +1d0d08a0a610122fd7ca380a077cd91c +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +317 + diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/_notes/.svn/prop-base/dwsync.xml.svn-base b/apps/filebrowser/media/filebrowser/uploadify/example/_notes/.svn/prop-base/dwsync.xml.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/_notes/.svn/prop-base/dwsync.xml.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/_notes/.svn/text-base/dwsync.xml.svn-base b/apps/filebrowser/media/filebrowser/uploadify/example/_notes/.svn/text-base/dwsync.xml.svn-base new file mode 100644 index 00000000..36ecaa56 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/_notes/.svn/text-base/dwsync.xml.svn-base @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/_notes/dwsync.xml b/apps/filebrowser/media/filebrowser/uploadify/example/_notes/dwsync.xml new file mode 100755 index 00000000..36ecaa56 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/_notes/dwsync.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/cancel.png b/apps/filebrowser/media/filebrowser/uploadify/example/cancel.png new file mode 100755 index 00000000..1c062ae5 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/uploadify/example/cancel.png differ diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/css/.svn/all-wcprops b/apps/filebrowser/media/filebrowser/uploadify/example/css/.svn/all-wcprops new file mode 100644 index 00000000..8e3e0323 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/css/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 92 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/css +END +uploadify.css +K 25 +svn:wc:ra_dav:version-url +V 106 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/css/uploadify.css +END +default.css +K 25 +svn:wc:ra_dav:version-url +V 104 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/css/default.css +END diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/css/.svn/entries b/apps/filebrowser/media/filebrowser/uploadify/example/css/.svn/entries new file mode 100644 index 00000000..2bba155a --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/css/.svn/entries @@ -0,0 +1,99 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/css +http://django-filebrowser.googlecode.com/svn + + + +2009-10-12T09:29:29.900685Z +459 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +uploadify.css +file + + + + +2009-11-05T20:58:51.000000Z +edec394bac0dc3cf3a17da3837abd642 +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +1792 + +_notes +dir + +default.css +file + + + + +2009-11-05T20:58:51.000000Z +0ad07a2134f8f26293cd2b5420b2d6f7 +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +177 + diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/css/.svn/prop-base/default.css.svn-base b/apps/filebrowser/media/filebrowser/uploadify/example/css/.svn/prop-base/default.css.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/css/.svn/prop-base/default.css.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/css/.svn/prop-base/uploadify.css.svn-base b/apps/filebrowser/media/filebrowser/uploadify/example/css/.svn/prop-base/uploadify.css.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/css/.svn/prop-base/uploadify.css.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/css/.svn/text-base/default.css.svn-base b/apps/filebrowser/media/filebrowser/uploadify/example/css/.svn/text-base/default.css.svn-base new file mode 100644 index 00000000..ec5902d4 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/css/.svn/text-base/default.css.svn-base @@ -0,0 +1,10 @@ +body { + font: 12px/16px Arial, Helvetica, sans-serif; +} +#fileQueue { + width: 400px; + height: 300px; + overflow: auto; + border: 1px solid #E5E5E5; + margin-bottom: 10px; +} \ No newline at end of file diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/css/.svn/text-base/uploadify.css.svn-base b/apps/filebrowser/media/filebrowser/uploadify/example/css/.svn/text-base/uploadify.css.svn-base new file mode 100644 index 00000000..0cf8c0ea --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/css/.svn/text-base/uploadify.css.svn-base @@ -0,0 +1,53 @@ +/* +Uploadify v2.1.0 +Release Date: August 24, 2009 + +Copyright (c) 2009 Ronnie Garcia, Travis Nickels + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ +.uploadifyQueueItem { + font: 11px Verdana, Geneva, sans-serif; + border: 2px solid #E5E5E5; + background-color: #F5F5F5; + margin-top: 5px; + padding: 10px; + width: 350px; +} +.uploadifyError { + border: 2px solid #FBCBBC !important; + background-color: #FDE5DD !important; +} +.uploadifyQueueItem .cancel { + float: right; +} +.uploadifyProgress { + background-color: #FFFFFF; + border-top: 1px solid #808080; + border-left: 1px solid #808080; + border-right: 1px solid #C5C5C5; + border-bottom: 1px solid #C5C5C5; + margin-top: 10px; + width: 100%; +} +.uploadifyProgressBar { + background-color: #0099FF; + width: 1px; + height: 3px; +} \ No newline at end of file diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/css/_notes/.svn/all-wcprops b/apps/filebrowser/media/filebrowser/uploadify/example/css/_notes/.svn/all-wcprops new file mode 100644 index 00000000..98471dc6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/css/_notes/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 99 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/css/_notes +END +dwsync.xml +K 25 +svn:wc:ra_dav:version-url +V 110 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/css/_notes/dwsync.xml +END diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/css/_notes/.svn/entries b/apps/filebrowser/media/filebrowser/uploadify/example/css/_notes/.svn/entries new file mode 100644 index 00000000..e3cddb41 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/css/_notes/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/css/_notes +http://django-filebrowser.googlecode.com/svn + + + +2009-10-12T09:29:29.900685Z +459 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +dwsync.xml +file + + + + +2009-11-05T20:58:51.000000Z +5290468e614f6b7a8ec013b682853d43 +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +322 + diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/css/_notes/.svn/prop-base/dwsync.xml.svn-base b/apps/filebrowser/media/filebrowser/uploadify/example/css/_notes/.svn/prop-base/dwsync.xml.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/css/_notes/.svn/prop-base/dwsync.xml.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/css/_notes/.svn/text-base/dwsync.xml.svn-base b/apps/filebrowser/media/filebrowser/uploadify/example/css/_notes/.svn/text-base/dwsync.xml.svn-base new file mode 100644 index 00000000..049ffa59 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/css/_notes/.svn/text-base/dwsync.xml.svn-base @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/css/_notes/dwsync.xml b/apps/filebrowser/media/filebrowser/uploadify/example/css/_notes/dwsync.xml new file mode 100755 index 00000000..049ffa59 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/css/_notes/dwsync.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/css/default.css b/apps/filebrowser/media/filebrowser/uploadify/example/css/default.css new file mode 100755 index 00000000..ec5902d4 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/css/default.css @@ -0,0 +1,10 @@ +body { + font: 12px/16px Arial, Helvetica, sans-serif; +} +#fileQueue { + width: 400px; + height: 300px; + overflow: auto; + border: 1px solid #E5E5E5; + margin-bottom: 10px; +} \ No newline at end of file diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/css/uploadify.css b/apps/filebrowser/media/filebrowser/uploadify/example/css/uploadify.css new file mode 100755 index 00000000..0cf8c0ea --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/css/uploadify.css @@ -0,0 +1,53 @@ +/* +Uploadify v2.1.0 +Release Date: August 24, 2009 + +Copyright (c) 2009 Ronnie Garcia, Travis Nickels + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ +.uploadifyQueueItem { + font: 11px Verdana, Geneva, sans-serif; + border: 2px solid #E5E5E5; + background-color: #F5F5F5; + margin-top: 5px; + padding: 10px; + width: 350px; +} +.uploadifyError { + border: 2px solid #FBCBBC !important; + background-color: #FDE5DD !important; +} +.uploadifyQueueItem .cancel { + float: right; +} +.uploadifyProgress { + background-color: #FFFFFF; + border-top: 1px solid #808080; + border-left: 1px solid #808080; + border-right: 1px solid #C5C5C5; + border-bottom: 1px solid #C5C5C5; + margin-top: 10px; + width: 100%; +} +.uploadifyProgressBar { + background-color: #0099FF; + width: 1px; + height: 3px; +} \ No newline at end of file diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/index.php b/apps/filebrowser/media/filebrowser/uploadify/example/index.php new file mode 100755 index 00000000..769d11c6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/index.php @@ -0,0 +1,31 @@ + + + + +Uploadify Example Script + + + + + + + + + +
+ +

Cancel All Uploads

+ + diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/all-wcprops b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/all-wcprops new file mode 100644 index 00000000..ebb7812f --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/all-wcprops @@ -0,0 +1,47 @@ +K 25 +svn:wc:ra_dav:version-url +V 96 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts +END +swfobject.js +K 25 +svn:wc:ra_dav:version-url +V 109 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts/swfobject.js +END +uploadify.php +K 25 +svn:wc:ra_dav:version-url +V 110 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts/uploadify.php +END +check.php +K 25 +svn:wc:ra_dav:version-url +V 106 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts/check.php +END +uploadify.swf +K 25 +svn:wc:ra_dav:version-url +V 110 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts/uploadify.swf +END +jquery.uploadify.v2.1.0.min.js +K 25 +svn:wc:ra_dav:version-url +V 127 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts/jquery.uploadify.v2.1.0.min.js +END +jquery-1.3.2.min.js +K 25 +svn:wc:ra_dav:version-url +V 116 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts/jquery-1.3.2.min.js +END +expressInstall.swf +K 25 +svn:wc:ra_dav:version-url +V 115 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts/expressInstall.swf +END diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/entries b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/entries new file mode 100644 index 00000000..df5485f6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/entries @@ -0,0 +1,269 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts +http://django-filebrowser.googlecode.com/svn + + + +2009-10-12T09:29:29.900685Z +459 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +swfobject.js +file + + + + +2009-11-05T20:58:51.000000Z +892a543f3abb54e8ec1ada55be3b0649 +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +10220 + +uploadify.php +file + + + + +2009-11-05T20:58:51.000000Z +18002e871847e9e3ae656a35d5e24cbe +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +1932 + +check.php +file + + + + +2009-11-05T20:58:51.000000Z +c409eb2cfd793515f98f0781fea3ef15 +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +1404 + +_notes +dir + +uploadify.swf +file + + + + +2009-11-05T20:58:51.000000Z +ed069be276d587e0b24cedc3d3a48738 +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +23119 + +jquery.uploadify.v2.1.0.min.js +file + + + + +2009-11-05T20:58:51.000000Z +4f1ceab5d5c04168fbef69362742bc6c +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +7563 + +jquery-1.3.2.min.js +file + + + + +2009-11-05T20:58:51.000000Z +bb381e2d19d8eace86b34d20759491a5 +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +57254 + +expressInstall.swf +file + + + + +2009-11-05T20:58:51.000000Z +7b65fbfaec8b2955090389af60646e8b +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +727 + diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/prop-base/check.php.svn-base b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/prop-base/check.php.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/prop-base/check.php.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/prop-base/expressInstall.swf.svn-base b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/prop-base/expressInstall.swf.svn-base new file mode 100644 index 00000000..dbc918b0 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/prop-base/expressInstall.swf.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/prop-base/jquery-1.3.2.min.js.svn-base b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/prop-base/jquery-1.3.2.min.js.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/prop-base/jquery-1.3.2.min.js.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/prop-base/jquery.uploadify.v2.1.0.min.js.svn-base b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/prop-base/jquery.uploadify.v2.1.0.min.js.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/prop-base/jquery.uploadify.v2.1.0.min.js.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/prop-base/swfobject.js.svn-base b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/prop-base/swfobject.js.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/prop-base/swfobject.js.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/prop-base/uploadify.php.svn-base b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/prop-base/uploadify.php.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/prop-base/uploadify.php.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/prop-base/uploadify.swf.svn-base b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/prop-base/uploadify.swf.svn-base new file mode 100644 index 00000000..dbc918b0 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/prop-base/uploadify.swf.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/text-base/check.php.svn-base b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/text-base/check.php.svn-base new file mode 100644 index 00000000..d7dc5717 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/text-base/check.php.svn-base @@ -0,0 +1,35 @@ + $value) { + if ($key != 'folder') { + if (file_exists($_SERVER['DOCUMENT_ROOT'] . $_POST['folder'] . '/' . $value)) { + $fileArray[$key] = $value; + } + } +} +echo json_encode($fileArray); +?> \ No newline at end of file diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/text-base/expressInstall.swf.svn-base b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/text-base/expressInstall.swf.svn-base new file mode 100644 index 00000000..0fbf8fca Binary files /dev/null and b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/text-base/expressInstall.swf.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/text-base/jquery-1.3.2.min.js.svn-base b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/text-base/jquery-1.3.2.min.js.svn-base new file mode 100644 index 00000000..b1ae21d8 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/text-base/jquery-1.3.2.min.js.svn-base @@ -0,0 +1,19 @@ +/* + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/text-base/jquery.uploadify.v2.1.0.min.js.svn-base b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/text-base/jquery.uploadify.v2.1.0.min.js.svn-base new file mode 100644 index 00000000..04592ffe --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/text-base/jquery.uploadify.v2.1.0.min.js.svn-base @@ -0,0 +1,26 @@ +/* +Uploadify v2.1.0 +Release Date: August 24, 2009 + +Copyright (c) 2009 Ronnie Garcia, Travis Nickels + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +if(jQuery){(function(a){a.extend(a.fn,{uploadify:function(b){a(this).each(function(){settings=a.extend({id:a(this).attr("id"),uploader:"uploadify.swf",script:"uploadify.php",expressInstall:null,folder:"",height:30,width:110,cancelImg:"cancel.png",wmode:"opaque",scriptAccess:"sameDomain",fileDataName:"Filedata",method:"POST",queueSizeLimit:999,simUploadLimit:1,queueID:false,displayData:"percentage",onInit:function(){},onSelect:function(){},onQueueFull:function(){},onCheck:function(){},onCancel:function(){},onError:function(){},onProgress:function(){},onComplete:function(){},onAllComplete:function(){}},b);var e=location.pathname;e=e.split("/");e.pop();e=e.join("/")+"/";var f={};f.uploadifyID=settings.id;f.pagepath=e;if(settings.buttonImg){f.buttonImg=escape(settings.buttonImg)}if(settings.buttonText){f.buttonText=escape(settings.buttonText)}if(settings.rollover){f.rollover=true}f.script=settings.script;f.folder=escape(settings.folder);if(settings.scriptData){var g="";for(var d in settings.scriptData){g+="&"+d+"="+settings.scriptData[d]}f.scriptData=escape(g.substr(1))}f.width=settings.width;f.height=settings.height;f.wmode=settings.wmode;f.method=settings.method;f.queueSizeLimit=settings.queueSizeLimit;f.simUploadLimit=settings.simUploadLimit;if(settings.hideButton){f.hideButton=true}if(settings.fileDesc){f.fileDesc=settings.fileDesc}if(settings.fileExt){f.fileExt=settings.fileExt}if(settings.multi){f.multi=true}if(settings.auto){f.auto=true}if(settings.sizeLimit){f.sizeLimit=settings.sizeLimit}if(settings.checkScript){f.checkScript=settings.checkScript}if(settings.fileDataName){f.fileDataName=settings.fileDataName}if(settings.queueID){f.queueID=settings.queueID}if(settings.onInit()!==false){a(this).css("display","none");a(this).after('
');swfobject.embedSWF(settings.uploader,settings.id+"Uploader",settings.width,settings.height,"9.0.24",settings.expressInstall,f,{quality:"high",wmode:settings.wmode,allowScriptAccess:settings.scriptAccess});if(settings.queueID==false){a("#"+a(this).attr("id")+"Uploader").after('
')}}if(typeof(settings.onOpen)=="function"){a(this).bind("uploadifyOpen",settings.onOpen)}a(this).bind("uploadifySelect",{action:settings.onSelect,queueID:settings.queueID},function(j,h,i){if(j.data.action(j,h,i)!==false){var k=Math.round(i.size/1024*100)*0.01;var l="KB";if(k>1000){k=Math.round(k*0.001*100)*0.01;l="MB"}var m=k.toString().split(".");if(m.length>1){k=m[0]+"."+m[1].substr(0,2)}else{k=m[0]}if(i.name.length>20){fileName=i.name.substr(0,20)+"..."}else{fileName=i.name}queue="#"+a(this).attr("id")+"Queue";if(j.data.queueID){queue="#"+j.data.queueID}a(queue).append('
'+fileName+" ("+k+l+')
')}});if(typeof(settings.onSelectOnce)=="function"){a(this).bind("uploadifySelectOnce",settings.onSelectOnce)}a(this).bind("uploadifyQueueFull",{action:settings.onQueueFull},function(h,i){if(h.data.action(h,i)!==false){alert("The queue is full. The max size is "+i+".")}});a(this).bind("uploadifyCheckExist",{action:settings.onCheck},function(m,l,k,j,o){var i=new Object();i=k;i.folder=e+j;if(o){for(var h in k){var n=h}}a.post(l,i,function(r){for(var p in r){if(m.data.action(m,l,k,j,o)!==false){var q=confirm("Do you want to replace the file "+r[p]+"?");if(!q){document.getElementById(a(m.target).attr("id")+"Uploader").cancelFileUpload(p,true,true)}}}if(o){document.getElementById(a(m.target).attr("id")+"Uploader").startFileUpload(n,true)}else{document.getElementById(a(m.target).attr("id")+"Uploader").startFileUpload(null,true)}},"json")});a(this).bind("uploadifyCancel",{action:settings.onCancel},function(l,h,k,m,j){if(l.data.action(l,h,k,m,j)!==false){var i=(j==true)?0:250;a("#"+a(this).attr("id")+h).fadeOut(i,function(){a(this).remove()})}});if(typeof(settings.onClearQueue)=="function"){a(this).bind("uploadifyClearQueue",settings.onClearQueue)}var c=[];a(this).bind("uploadifyError",{action:settings.onError},function(l,h,k,j){if(l.data.action(l,h,k,j)!==false){var i=new Array(h,k,j);c.push(i);a("#"+a(this).attr("id")+h+" .percentage").text(" - "+j.type+" Error");a("#"+a(this).attr("id")+h).addClass("uploadifyError")}});a(this).bind("uploadifyProgress",{action:settings.onProgress,toDisplay:settings.displayData},function(j,h,i,k){if(j.data.action(j,h,i,k)!==false){a("#"+a(this).attr("id")+h+"ProgressBar").css("width",k.percentage+"%");if(j.data.toDisplay=="percentage"){displayData=" - "+k.percentage+"%"}if(j.data.toDisplay=="speed"){displayData=" - "+k.speed+"KB/s"}if(j.data.toDisplay==null){displayData=" "}a("#"+a(this).attr("id")+h+" .percentage").text(displayData)}});a(this).bind("uploadifyComplete",{action:settings.onComplete},function(k,h,j,i,l){if(k.data.action(k,h,j,unescape(i),l)!==false){a("#"+a(this).attr("id")+h+" .percentage").text(" - Completed");a("#"+a(this).attr("id")+h).fadeOut(250,function(){a(this).remove()})}});if(typeof(settings.onAllComplete)=="function"){a(this).bind("uploadifyAllComplete",{action:settings.onAllComplete},function(h,i){if(h.data.action(h,i)!==false){c=[]}})}})},uploadifySettings:function(f,j,c){var g=false;a(this).each(function(){if(f=="scriptData"&&j!=null){if(c){var i=j}else{var i=a.extend(settings.scriptData,j)}var l="";for(var k in i){l+="&"+k+"="+escape(i[k])}j=l.substr(1)}g=document.getElementById(a(this).attr("id")+"Uploader").updateSettings(f,j)});if(j==null){if(f=="scriptData"){var b=unescape(g).split("&");var e=new Object();for(var d=0;d + is released under the MIT License +*/ +var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y0){for(var af=0;af0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad'}}aa.outerHTML='"+af+"";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab \ No newline at end of file diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/text-base/uploadify.swf.svn-base b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/text-base/uploadify.swf.svn-base new file mode 100644 index 00000000..4d27952f Binary files /dev/null and b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/.svn/text-base/uploadify.swf.svn-base differ diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/_notes/.svn/all-wcprops b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/_notes/.svn/all-wcprops new file mode 100644 index 00000000..d8daf491 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/_notes/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 103 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts/_notes +END +dwsync.xml +K 25 +svn:wc:ra_dav:version-url +V 114 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts/_notes/dwsync.xml +END diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/_notes/.svn/entries b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/_notes/.svn/entries new file mode 100644 index 00000000..89f38db6 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/_notes/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts/_notes +http://django-filebrowser.googlecode.com/svn + + + +2009-10-12T09:29:29.900685Z +459 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +dwsync.xml +file + + + + +2009-11-05T20:58:51.000000Z +a095283fba302c68c7f695198d29f450 +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +1007 + diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/_notes/.svn/prop-base/dwsync.xml.svn-base b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/_notes/.svn/prop-base/dwsync.xml.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/_notes/.svn/prop-base/dwsync.xml.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/_notes/.svn/text-base/dwsync.xml.svn-base b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/_notes/.svn/text-base/dwsync.xml.svn-base new file mode 100644 index 00000000..13ca0434 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/_notes/.svn/text-base/dwsync.xml.svn-base @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/_notes/dwsync.xml b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/_notes/dwsync.xml new file mode 100755 index 00000000..13ca0434 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/_notes/dwsync.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/check.php b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/check.php new file mode 100755 index 00000000..d7dc5717 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/check.php @@ -0,0 +1,35 @@ + $value) { + if ($key != 'folder') { + if (file_exists($_SERVER['DOCUMENT_ROOT'] . $_POST['folder'] . '/' . $value)) { + $fileArray[$key] = $value; + } + } +} +echo json_encode($fileArray); +?> \ No newline at end of file diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/expressInstall.swf b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/expressInstall.swf new file mode 100755 index 00000000..0fbf8fca Binary files /dev/null and b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/expressInstall.swf differ diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/jquery-1.3.2.min.js b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/jquery-1.3.2.min.js new file mode 100755 index 00000000..b1ae21d8 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/jquery-1.3.2.min.js @@ -0,0 +1,19 @@ +/* + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/jquery.uploadify.v2.1.0.min.js b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/jquery.uploadify.v2.1.0.min.js new file mode 100755 index 00000000..04592ffe --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/jquery.uploadify.v2.1.0.min.js @@ -0,0 +1,26 @@ +/* +Uploadify v2.1.0 +Release Date: August 24, 2009 + +Copyright (c) 2009 Ronnie Garcia, Travis Nickels + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +if(jQuery){(function(a){a.extend(a.fn,{uploadify:function(b){a(this).each(function(){settings=a.extend({id:a(this).attr("id"),uploader:"uploadify.swf",script:"uploadify.php",expressInstall:null,folder:"",height:30,width:110,cancelImg:"cancel.png",wmode:"opaque",scriptAccess:"sameDomain",fileDataName:"Filedata",method:"POST",queueSizeLimit:999,simUploadLimit:1,queueID:false,displayData:"percentage",onInit:function(){},onSelect:function(){},onQueueFull:function(){},onCheck:function(){},onCancel:function(){},onError:function(){},onProgress:function(){},onComplete:function(){},onAllComplete:function(){}},b);var e=location.pathname;e=e.split("/");e.pop();e=e.join("/")+"/";var f={};f.uploadifyID=settings.id;f.pagepath=e;if(settings.buttonImg){f.buttonImg=escape(settings.buttonImg)}if(settings.buttonText){f.buttonText=escape(settings.buttonText)}if(settings.rollover){f.rollover=true}f.script=settings.script;f.folder=escape(settings.folder);if(settings.scriptData){var g="";for(var d in settings.scriptData){g+="&"+d+"="+settings.scriptData[d]}f.scriptData=escape(g.substr(1))}f.width=settings.width;f.height=settings.height;f.wmode=settings.wmode;f.method=settings.method;f.queueSizeLimit=settings.queueSizeLimit;f.simUploadLimit=settings.simUploadLimit;if(settings.hideButton){f.hideButton=true}if(settings.fileDesc){f.fileDesc=settings.fileDesc}if(settings.fileExt){f.fileExt=settings.fileExt}if(settings.multi){f.multi=true}if(settings.auto){f.auto=true}if(settings.sizeLimit){f.sizeLimit=settings.sizeLimit}if(settings.checkScript){f.checkScript=settings.checkScript}if(settings.fileDataName){f.fileDataName=settings.fileDataName}if(settings.queueID){f.queueID=settings.queueID}if(settings.onInit()!==false){a(this).css("display","none");a(this).after('
');swfobject.embedSWF(settings.uploader,settings.id+"Uploader",settings.width,settings.height,"9.0.24",settings.expressInstall,f,{quality:"high",wmode:settings.wmode,allowScriptAccess:settings.scriptAccess});if(settings.queueID==false){a("#"+a(this).attr("id")+"Uploader").after('
')}}if(typeof(settings.onOpen)=="function"){a(this).bind("uploadifyOpen",settings.onOpen)}a(this).bind("uploadifySelect",{action:settings.onSelect,queueID:settings.queueID},function(j,h,i){if(j.data.action(j,h,i)!==false){var k=Math.round(i.size/1024*100)*0.01;var l="KB";if(k>1000){k=Math.round(k*0.001*100)*0.01;l="MB"}var m=k.toString().split(".");if(m.length>1){k=m[0]+"."+m[1].substr(0,2)}else{k=m[0]}if(i.name.length>20){fileName=i.name.substr(0,20)+"..."}else{fileName=i.name}queue="#"+a(this).attr("id")+"Queue";if(j.data.queueID){queue="#"+j.data.queueID}a(queue).append('
'+fileName+" ("+k+l+')
')}});if(typeof(settings.onSelectOnce)=="function"){a(this).bind("uploadifySelectOnce",settings.onSelectOnce)}a(this).bind("uploadifyQueueFull",{action:settings.onQueueFull},function(h,i){if(h.data.action(h,i)!==false){alert("The queue is full. The max size is "+i+".")}});a(this).bind("uploadifyCheckExist",{action:settings.onCheck},function(m,l,k,j,o){var i=new Object();i=k;i.folder=e+j;if(o){for(var h in k){var n=h}}a.post(l,i,function(r){for(var p in r){if(m.data.action(m,l,k,j,o)!==false){var q=confirm("Do you want to replace the file "+r[p]+"?");if(!q){document.getElementById(a(m.target).attr("id")+"Uploader").cancelFileUpload(p,true,true)}}}if(o){document.getElementById(a(m.target).attr("id")+"Uploader").startFileUpload(n,true)}else{document.getElementById(a(m.target).attr("id")+"Uploader").startFileUpload(null,true)}},"json")});a(this).bind("uploadifyCancel",{action:settings.onCancel},function(l,h,k,m,j){if(l.data.action(l,h,k,m,j)!==false){var i=(j==true)?0:250;a("#"+a(this).attr("id")+h).fadeOut(i,function(){a(this).remove()})}});if(typeof(settings.onClearQueue)=="function"){a(this).bind("uploadifyClearQueue",settings.onClearQueue)}var c=[];a(this).bind("uploadifyError",{action:settings.onError},function(l,h,k,j){if(l.data.action(l,h,k,j)!==false){var i=new Array(h,k,j);c.push(i);a("#"+a(this).attr("id")+h+" .percentage").text(" - "+j.type+" Error");a("#"+a(this).attr("id")+h).addClass("uploadifyError")}});a(this).bind("uploadifyProgress",{action:settings.onProgress,toDisplay:settings.displayData},function(j,h,i,k){if(j.data.action(j,h,i,k)!==false){a("#"+a(this).attr("id")+h+"ProgressBar").css("width",k.percentage+"%");if(j.data.toDisplay=="percentage"){displayData=" - "+k.percentage+"%"}if(j.data.toDisplay=="speed"){displayData=" - "+k.speed+"KB/s"}if(j.data.toDisplay==null){displayData=" "}a("#"+a(this).attr("id")+h+" .percentage").text(displayData)}});a(this).bind("uploadifyComplete",{action:settings.onComplete},function(k,h,j,i,l){if(k.data.action(k,h,j,unescape(i),l)!==false){a("#"+a(this).attr("id")+h+" .percentage").text(" - Completed");a("#"+a(this).attr("id")+h).fadeOut(250,function(){a(this).remove()})}});if(typeof(settings.onAllComplete)=="function"){a(this).bind("uploadifyAllComplete",{action:settings.onAllComplete},function(h,i){if(h.data.action(h,i)!==false){c=[]}})}})},uploadifySettings:function(f,j,c){var g=false;a(this).each(function(){if(f=="scriptData"&&j!=null){if(c){var i=j}else{var i=a.extend(settings.scriptData,j)}var l="";for(var k in i){l+="&"+k+"="+escape(i[k])}j=l.substr(1)}g=document.getElementById(a(this).attr("id")+"Uploader").updateSettings(f,j)});if(j==null){if(f=="scriptData"){var b=unescape(g).split("&");var e=new Object();for(var d=0;d + is released under the MIT License +*/ +var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y0){for(var af=0;af0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad'}}aa.outerHTML='"+af+"";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab \ No newline at end of file diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/scripts/uploadify.swf b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/uploadify.swf new file mode 100755 index 00000000..4d27952f Binary files /dev/null and b/apps/filebrowser/media/filebrowser/uploadify/example/scripts/uploadify.swf differ diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/uploads/.svn/all-wcprops b/apps/filebrowser/media/filebrowser/uploadify/example/uploads/.svn/all-wcprops new file mode 100644 index 00000000..95ccd61b --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/uploads/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 96 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/uploads +END diff --git a/apps/filebrowser/media/filebrowser/uploadify/example/uploads/.svn/entries b/apps/filebrowser/media/filebrowser/uploadify/example/uploads/.svn/entries new file mode 100644 index 00000000..74afe082 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/example/uploads/.svn/entries @@ -0,0 +1,28 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/uploads +http://django-filebrowser.googlecode.com/svn + + + +2009-10-12T09:29:29.900685Z +459 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + diff --git a/apps/filebrowser/media/filebrowser/uploadify/expressInstall.swf b/apps/filebrowser/media/filebrowser/uploadify/expressInstall.swf new file mode 100755 index 00000000..0fbf8fca Binary files /dev/null and b/apps/filebrowser/media/filebrowser/uploadify/expressInstall.swf differ diff --git a/apps/filebrowser/media/filebrowser/uploadify/jquery-1.3.2.min.js b/apps/filebrowser/media/filebrowser/uploadify/jquery-1.3.2.min.js new file mode 100755 index 00000000..b1ae21d8 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/jquery-1.3.2.min.js @@ -0,0 +1,19 @@ +/* + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file diff --git a/apps/filebrowser/media/filebrowser/uploadify/jquery.uploadify.v2.1.0.js b/apps/filebrowser/media/filebrowser/uploadify/jquery.uploadify.v2.1.0.js new file mode 100755 index 00000000..9a78cd32 --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/jquery.uploadify.v2.1.0.js @@ -0,0 +1,258 @@ +/* +Uploadify v2.1.0 +Release Date: August 24, 2009 + +Copyright (c) 2009 Ronnie Garcia, Travis Nickels + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +if(jQuery)( + function(jQuery){ + jQuery.extend(jQuery.fn,{ + uploadify:function(options) { + jQuery(this).each(function(){ + settings = jQuery.extend({ + id : jQuery(this).attr('id'), // The ID of the object being Uploadified + uploader : 'uploadify.swf', // The path to the uploadify swf file + script : 'uploadify.php', // The path to the uploadify backend upload script + expressInstall : null, // The path to the express install swf file + folder : '', // The path to the upload folder + height : 30, // The height of the flash button + width : 110, // The width of the flash button + cancelImg : 'cancel.png', // The path to the cancel image for the default file queue item container + wmode : 'opaque', // The wmode of the flash file + scriptAccess : 'sameDomain', // Set to "always" to allow script access across domains + fileDataName : 'Filedata', // The name of the file collection object in the backend upload script + method : 'POST', // The method for sending variables to the backend upload script + queueSizeLimit : 999, // The maximum size of the file queue + simUploadLimit : 1, // The number of simultaneous uploads allowed + queueID : false, // The optional ID of the queue container + displayData : 'percentage', // Set to "speed" to show the upload speed in the default queue item + onInit : function() {}, // Function to run when uploadify is initialized + onSelect : function() {}, // Function to run when a file is selected + onQueueFull : function() {}, // Function to run when the queue reaches capacity + onCheck : function() {}, // Function to run when script checks for duplicate files on the server + onCancel : function() {}, // Function to run when an item is cleared from the queue + onError : function() {}, // Function to run when an upload item returns an error + onProgress : function() {}, // Function to run each time the upload progress is updated + onComplete : function() {}, // Function to run when an upload is completed + onAllComplete : function() {} // Functino to run when all uploads are completed + }, options); + var pagePath = location.pathname; + pagePath = pagePath.split('/'); + pagePath.pop(); + pagePath = pagePath.join('/') + '/'; + var data = {}; + data.uploadifyID = settings.id; + data.pagepath = pagePath; + if (settings.buttonImg) data.buttonImg = escape(settings.buttonImg); + if (settings.buttonText) data.buttonText = escape(settings.buttonText); + if (settings.rollover) data.rollover = true; + data.script = settings.script; + data.folder = escape(settings.folder); + if (settings.scriptData) { + var scriptDataString = ''; + for (var name in settings.scriptData) { + scriptDataString += '&' + name + '=' + settings.scriptData[name]; + } + data.scriptData = escape(scriptDataString.substr(1)); + } + data.width = settings.width; + data.height = settings.height; + data.wmode = settings.wmode; + data.method = settings.method; + data.queueSizeLimit = settings.queueSizeLimit; + data.simUploadLimit = settings.simUploadLimit; + if (settings.hideButton) data.hideButton = true; + if (settings.fileDesc) data.fileDesc = settings.fileDesc; + if (settings.fileExt) data.fileExt = settings.fileExt; + if (settings.multi) data.multi = true; + if (settings.auto) data.auto = true; + if (settings.sizeLimit) data.sizeLimit = settings.sizeLimit; + if (settings.checkScript) data.checkScript = settings.checkScript; + if (settings.fileDataName) data.fileDataName = settings.fileDataName; + if (settings.queueID) data.queueID = settings.queueID; + if (settings.onInit() !== false) { + jQuery(this).css('display','none'); + jQuery(this).after('
'); + swfobject.embedSWF(settings.uploader, settings.id + 'Uploader', settings.width, settings.height, '9.0.24', settings.expressInstall, data, {'quality':'high','wmode':settings.wmode,'allowScriptAccess':settings.scriptAccess}); + if (settings.queueID == false) { + jQuery("#" + jQuery(this).attr('id') + "Uploader").after('
'); + } + } + if (typeof(settings.onOpen) == 'function') { + jQuery(this).bind("uploadifyOpen", settings.onOpen); + } + jQuery(this).bind("uploadifySelect", {'action': settings.onSelect, 'queueID': settings.queueID}, function(event, ID, fileObj) { + if (event.data.action(event, ID, fileObj) !== false) { + var byteSize = Math.round(fileObj.size / 1024 * 100) * .01; + var suffix = 'KB'; + if (byteSize > 1000) { + byteSize = Math.round(byteSize *.001 * 100) * .01; + suffix = 'MB'; + } + var sizeParts = byteSize.toString().split('.'); + if (sizeParts.length > 1) { + byteSize = sizeParts[0] + '.' + sizeParts[1].substr(0,2); + } else { + byteSize = sizeParts[0]; + } + if (fileObj.name.length > 20) { + fileName = fileObj.name.substr(0,20) + '...'; + } else { + fileName = fileObj.name; + } + queue = '#' + jQuery(this).attr('id') + 'Queue'; + if (event.data.queueID) { + queue = '#' + event.data.queueID; + } + jQuery(queue).append('
\ +
\ + \ +
\ + ' + fileName + ' (' + byteSize + suffix + ')\ +
\ +
\ +
\ +
'); + } + }); + if (typeof(settings.onSelectOnce) == 'function') { + jQuery(this).bind("uploadifySelectOnce", settings.onSelectOnce); + } + jQuery(this).bind("uploadifyQueueFull", {'action': settings.onQueueFull}, function(event, queueSizeLimit) { + if (event.data.action(event, queueSizeLimit) !== false) { + alert('The queue is full. The max size is ' + queueSizeLimit + '.'); + } + }); + jQuery(this).bind("uploadifyCheckExist", {'action': settings.onCheck}, function(event, checkScript, fileQueueObj, folder, single) { + var postData = new Object(); + postData = fileQueueObj; + postData.folder = pagePath + folder; + if (single) { + for (var ID in fileQueueObj) { + var singleFileID = ID; + } + } + jQuery.post(checkScript, postData, function(data) { + for(var key in data) { + if (event.data.action(event, checkScript, fileQueueObj, folder, single) !== false) { + var replaceFile = confirm("Do you want to replace the file " + data[key] + "?"); + if (!replaceFile) { + document.getElementById(jQuery(event.target).attr('id') + 'Uploader').cancelFileUpload(key, true,true); + } + } + } + if (single) { + document.getElementById(jQuery(event.target).attr('id') + 'Uploader').startFileUpload(singleFileID, true); + } else { + document.getElementById(jQuery(event.target).attr('id') + 'Uploader').startFileUpload(null, true); + } + }, "json"); + }); + jQuery(this).bind("uploadifyCancel", {'action': settings.onCancel}, function(event, ID, fileObj, data, clearFast) { + if (event.data.action(event, ID, fileObj, data, clearFast) !== false) { + var fadeSpeed = (clearFast == true) ? 0 : 250; + jQuery("#" + jQuery(this).attr('id') + ID).fadeOut(fadeSpeed, function() { jQuery(this).remove() }); + } + }); + if (typeof(settings.onClearQueue) == 'function') { + jQuery(this).bind("uploadifyClearQueue", settings.onClearQueue); + } + var errorArray = []; + jQuery(this).bind("uploadifyError", {'action': settings.onError}, function(event, ID, fileObj, errorObj) { + if (event.data.action(event, ID, fileObj, errorObj) !== false) { + var fileArray = new Array(ID, fileObj, errorObj); + errorArray.push(fileArray); + jQuery("#" + jQuery(this).attr('id') + ID + " .percentage").text(" - " + errorObj.type + " Error"); + jQuery("#" + jQuery(this).attr('id') + ID).addClass('uploadifyError'); + } + }); + jQuery(this).bind("uploadifyProgress", {'action': settings.onProgress, 'toDisplay': settings.displayData}, function(event, ID, fileObj, data) { + if (event.data.action(event, ID, fileObj, data) !== false) { + jQuery("#" + jQuery(this).attr('id') + ID + "ProgressBar").css('width', data.percentage + '%'); + if (event.data.toDisplay == 'percentage') displayData = ' - ' + data.percentage + '%'; + if (event.data.toDisplay == 'speed') displayData = ' - ' + data.speed + 'KB/s'; + if (event.data.toDisplay == null) displayData = ' '; + jQuery("#" + jQuery(this).attr('id') + ID + " .percentage").text(displayData); + } + }); + jQuery(this).bind("uploadifyComplete", {'action': settings.onComplete}, function(event, ID, fileObj, response, data) { + if (event.data.action(event, ID, fileObj, unescape(response), data) !== false) { + jQuery("#" + jQuery(this).attr('id') + ID + " .percentage").text(' - Completed'); + jQuery("#" + jQuery(this).attr('id') + ID).fadeOut(250, function() { jQuery(this).remove()}); + } + }); + if (typeof(settings.onAllComplete) == 'function') { + jQuery(this).bind("uploadifyAllComplete", {'action': settings.onAllComplete}, function(event, uploadObj) { + if (event.data.action(event, uploadObj) !== false) { + errorArray = []; + } + }); + } + }); + }, + uploadifySettings:function(settingName, settingValue, resetObject) { + var returnValue = false; + jQuery(this).each(function() { + if (settingName == 'scriptData' && settingValue != null) { + if (resetObject) { + var scriptData = settingValue; + } else { + var scriptData = jQuery.extend(settings.scriptData, settingValue); + } + var scriptDataString = ''; + for (var name in scriptData) { + scriptDataString += '&' + name + '=' + escape(scriptData[name]); + } + settingValue = scriptDataString.substr(1); + } + returnValue = document.getElementById(jQuery(this).attr('id') + 'Uploader').updateSettings(settingName, settingValue); + }); + if (settingValue == null) { + if (settingName == 'scriptData') { + var returnSplit = unescape(returnValue).split('&'); + var returnObj = new Object(); + for (var i = 0; i < returnSplit.length; i++) { + var iSplit = returnSplit[i].split('='); + returnObj[iSplit[0]] = iSplit[1]; + } + returnValue = returnObj; + } + return returnValue; + } + }, + uploadifyUpload:function(ID) { + jQuery(this).each(function() { + document.getElementById(jQuery(this).attr('id') + 'Uploader').startFileUpload(ID, false); + }); + }, + uploadifyCancel:function(ID) { + jQuery(this).each(function() { + document.getElementById(jQuery(this).attr('id') + 'Uploader').cancelFileUpload(ID, true, false); + }); + }, + uploadifyClearQueue:function() { + jQuery(this).each(function() { + document.getElementById(jQuery(this).attr('id') + 'Uploader').clearFileUploadQueue(false); + }); + } + }) +})(jQuery); \ No newline at end of file diff --git a/apps/filebrowser/media/filebrowser/uploadify/jquery.uploadify.v2.1.0.min.js b/apps/filebrowser/media/filebrowser/uploadify/jquery.uploadify.v2.1.0.min.js new file mode 100755 index 00000000..04592ffe --- /dev/null +++ b/apps/filebrowser/media/filebrowser/uploadify/jquery.uploadify.v2.1.0.min.js @@ -0,0 +1,26 @@ +/* +Uploadify v2.1.0 +Release Date: August 24, 2009 + +Copyright (c) 2009 Ronnie Garcia, Travis Nickels + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +if(jQuery){(function(a){a.extend(a.fn,{uploadify:function(b){a(this).each(function(){settings=a.extend({id:a(this).attr("id"),uploader:"uploadify.swf",script:"uploadify.php",expressInstall:null,folder:"",height:30,width:110,cancelImg:"cancel.png",wmode:"opaque",scriptAccess:"sameDomain",fileDataName:"Filedata",method:"POST",queueSizeLimit:999,simUploadLimit:1,queueID:false,displayData:"percentage",onInit:function(){},onSelect:function(){},onQueueFull:function(){},onCheck:function(){},onCancel:function(){},onError:function(){},onProgress:function(){},onComplete:function(){},onAllComplete:function(){}},b);var e=location.pathname;e=e.split("/");e.pop();e=e.join("/")+"/";var f={};f.uploadifyID=settings.id;f.pagepath=e;if(settings.buttonImg){f.buttonImg=escape(settings.buttonImg)}if(settings.buttonText){f.buttonText=escape(settings.buttonText)}if(settings.rollover){f.rollover=true}f.script=settings.script;f.folder=escape(settings.folder);if(settings.scriptData){var g="";for(var d in settings.scriptData){g+="&"+d+"="+settings.scriptData[d]}f.scriptData=escape(g.substr(1))}f.width=settings.width;f.height=settings.height;f.wmode=settings.wmode;f.method=settings.method;f.queueSizeLimit=settings.queueSizeLimit;f.simUploadLimit=settings.simUploadLimit;if(settings.hideButton){f.hideButton=true}if(settings.fileDesc){f.fileDesc=settings.fileDesc}if(settings.fileExt){f.fileExt=settings.fileExt}if(settings.multi){f.multi=true}if(settings.auto){f.auto=true}if(settings.sizeLimit){f.sizeLimit=settings.sizeLimit}if(settings.checkScript){f.checkScript=settings.checkScript}if(settings.fileDataName){f.fileDataName=settings.fileDataName}if(settings.queueID){f.queueID=settings.queueID}if(settings.onInit()!==false){a(this).css("display","none");a(this).after('
');swfobject.embedSWF(settings.uploader,settings.id+"Uploader",settings.width,settings.height,"9.0.24",settings.expressInstall,f,{quality:"high",wmode:settings.wmode,allowScriptAccess:settings.scriptAccess});if(settings.queueID==false){a("#"+a(this).attr("id")+"Uploader").after('
')}}if(typeof(settings.onOpen)=="function"){a(this).bind("uploadifyOpen",settings.onOpen)}a(this).bind("uploadifySelect",{action:settings.onSelect,queueID:settings.queueID},function(j,h,i){if(j.data.action(j,h,i)!==false){var k=Math.round(i.size/1024*100)*0.01;var l="KB";if(k>1000){k=Math.round(k*0.001*100)*0.01;l="MB"}var m=k.toString().split(".");if(m.length>1){k=m[0]+"."+m[1].substr(0,2)}else{k=m[0]}if(i.name.length>20){fileName=i.name.substr(0,20)+"..."}else{fileName=i.name}queue="#"+a(this).attr("id")+"Queue";if(j.data.queueID){queue="#"+j.data.queueID}a(queue).append('
'+fileName+" ("+k+l+')
')}});if(typeof(settings.onSelectOnce)=="function"){a(this).bind("uploadifySelectOnce",settings.onSelectOnce)}a(this).bind("uploadifyQueueFull",{action:settings.onQueueFull},function(h,i){if(h.data.action(h,i)!==false){alert("The queue is full. The max size is "+i+".")}});a(this).bind("uploadifyCheckExist",{action:settings.onCheck},function(m,l,k,j,o){var i=new Object();i=k;i.folder=e+j;if(o){for(var h in k){var n=h}}a.post(l,i,function(r){for(var p in r){if(m.data.action(m,l,k,j,o)!==false){var q=confirm("Do you want to replace the file "+r[p]+"?");if(!q){document.getElementById(a(m.target).attr("id")+"Uploader").cancelFileUpload(p,true,true)}}}if(o){document.getElementById(a(m.target).attr("id")+"Uploader").startFileUpload(n,true)}else{document.getElementById(a(m.target).attr("id")+"Uploader").startFileUpload(null,true)}},"json")});a(this).bind("uploadifyCancel",{action:settings.onCancel},function(l,h,k,m,j){if(l.data.action(l,h,k,m,j)!==false){var i=(j==true)?0:250;a("#"+a(this).attr("id")+h).fadeOut(i,function(){a(this).remove()})}});if(typeof(settings.onClearQueue)=="function"){a(this).bind("uploadifyClearQueue",settings.onClearQueue)}var c=[];a(this).bind("uploadifyError",{action:settings.onError},function(l,h,k,j){if(l.data.action(l,h,k,j)!==false){var i=new Array(h,k,j);c.push(i);a("#"+a(this).attr("id")+h+" .percentage").text(" - "+j.type+" Error");a("#"+a(this).attr("id")+h).addClass("uploadifyError")}});a(this).bind("uploadifyProgress",{action:settings.onProgress,toDisplay:settings.displayData},function(j,h,i,k){if(j.data.action(j,h,i,k)!==false){a("#"+a(this).attr("id")+h+"ProgressBar").css("width",k.percentage+"%");if(j.data.toDisplay=="percentage"){displayData=" - "+k.percentage+"%"}if(j.data.toDisplay=="speed"){displayData=" - "+k.speed+"KB/s"}if(j.data.toDisplay==null){displayData=" "}a("#"+a(this).attr("id")+h+" .percentage").text(displayData)}});a(this).bind("uploadifyComplete",{action:settings.onComplete},function(k,h,j,i,l){if(k.data.action(k,h,j,unescape(i),l)!==false){a("#"+a(this).attr("id")+h+" .percentage").text(" - Completed");a("#"+a(this).attr("id")+h).fadeOut(250,function(){a(this).remove()})}});if(typeof(settings.onAllComplete)=="function"){a(this).bind("uploadifyAllComplete",{action:settings.onAllComplete},function(h,i){if(h.data.action(h,i)!==false){c=[]}})}})},uploadifySettings:function(f,j,c){var g=false;a(this).each(function(){if(f=="scriptData"&&j!=null){if(c){var i=j}else{var i=a.extend(settings.scriptData,j)}var l="";for(var k in i){l+="&"+k+"="+escape(i[k])}j=l.substr(1)}g=document.getElementById(a(this).attr("id")+"Uploader").updateSettings(f,j)});if(j==null){if(f=="scriptData"){var b=unescape(g).split("&");var e=new Object();for(var d=0;d + is released under the MIT License +*/ +var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y0){for(var af=0;af0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad'}}aa.outerHTML='"+af+"";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab \ No newline at end of file diff --git a/apps/filebrowser/media/filebrowser/uploadify/uploadify.swf b/apps/filebrowser/media/filebrowser/uploadify/uploadify.swf new file mode 100755 index 00000000..0385d9e6 Binary files /dev/null and b/apps/filebrowser/media/filebrowser/uploadify/uploadify.swf differ diff --git a/apps/filebrowser/models.py b/apps/filebrowser/models.py new file mode 100755 index 00000000..a11084e2 --- /dev/null +++ b/apps/filebrowser/models.py @@ -0,0 +1 @@ +# This file is only necessary for the tests to work \ No newline at end of file diff --git a/apps/filebrowser/templates/.svn/all-wcprops b/apps/filebrowser/templates/.svn/all-wcprops new file mode 100644 index 00000000..7fc59db2 --- /dev/null +++ b/apps/filebrowser/templates/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 62 +/svn/!svn/ver/463/branches/filebrowser_3/filebrowser/templates +END diff --git a/apps/filebrowser/templates/.svn/entries b/apps/filebrowser/templates/.svn/entries new file mode 100644 index 00000000..142d87b7 --- /dev/null +++ b/apps/filebrowser/templates/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/templates +http://django-filebrowser.googlecode.com/svn + + + +2009-10-12T17:53:18.744015Z +463 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +filebrowser +dir + diff --git a/apps/filebrowser/templates/filebrowser/.svn/all-wcprops b/apps/filebrowser/templates/filebrowser/.svn/all-wcprops new file mode 100644 index 00000000..9c5ee5a5 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/.svn/all-wcprops @@ -0,0 +1,47 @@ +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/463/branches/filebrowser_3/filebrowser/templates/filebrowser +END +makedir.html +K 25 +svn:wc:ra_dav:version-url +V 87 +/svn/!svn/ver/429/branches/filebrowser_3/filebrowser/templates/filebrowser/makedir.html +END +custom_field.html +K 25 +svn:wc:ra_dav:version-url +V 92 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/templates/filebrowser/custom_field.html +END +upload.html +K 25 +svn:wc:ra_dav:version-url +V 86 +/svn/!svn/ver/460/branches/filebrowser_3/filebrowser/templates/filebrowser/upload.html +END +rename.html +K 25 +svn:wc:ra_dav:version-url +V 86 +/svn/!svn/ver/429/branches/filebrowser_3/filebrowser/templates/filebrowser/rename.html +END +index.html +K 25 +svn:wc:ra_dav:version-url +V 85 +/svn/!svn/ver/426/branches/filebrowser_3/filebrowser/templates/filebrowser/index.html +END +append.html +K 25 +svn:wc:ra_dav:version-url +V 86 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/templates/filebrowser/append.html +END +versions.html +K 25 +svn:wc:ra_dav:version-url +V 88 +/svn/!svn/ver/426/branches/filebrowser_3/filebrowser/templates/filebrowser/versions.html +END diff --git a/apps/filebrowser/templates/filebrowser/.svn/entries b/apps/filebrowser/templates/filebrowser/.svn/entries new file mode 100644 index 00000000..954a9c93 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/.svn/entries @@ -0,0 +1,269 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/templates/filebrowser +http://django-filebrowser.googlecode.com/svn + + + +2009-10-12T17:53:18.744015Z +463 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +makedir.html +file + + + + +2009-11-05T20:58:53.000000Z +c036950c229d7f26ebdc53ce05dc55c4 +2009-08-01T09:59:09.789309Z +429 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +2315 + +custom_field.html +file + + + + +2009-11-05T20:58:53.000000Z +e00005343847bfa30f7cb1454c068a14 +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +1372 + +include +dir + +upload.html +file + + + + +2009-11-05T20:58:53.000000Z +a0b75a68b6e40cc3adbc676b2e7127de +2009-10-12T13:24:43.615535Z +460 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +5145 + +rename.html +file + + + + +2009-11-05T20:58:53.000000Z +1a0948c41abb7e1e28a0108e7ec775f9 +2009-08-01T09:59:09.789309Z +429 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +2380 + +index.html +file + + + + +2009-11-05T20:58:53.000000Z +fa7726594d2ad3abb71fbbc2a416717a +2009-08-01T08:00:03.823843Z +426 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +2715 + +append.html +file + + + + +2009-11-05T20:58:53.000000Z +4694ffafd3bdebffaafea14a5119c4c5 +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +303 + +versions.html +file + + + + +2009-11-05T20:58:53.000000Z +7373331acdecf1263354d49f19af3a4d +2009-08-01T08:00:03.823843Z +426 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +7021 + diff --git a/apps/filebrowser/templates/filebrowser/.svn/text-base/append.html.svn-base b/apps/filebrowser/templates/filebrowser/.svn/text-base/append.html.svn-base new file mode 100644 index 00000000..6d1123f1 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/.svn/text-base/append.html.svn-base @@ -0,0 +1,12 @@ +{% load i18n %} + +
+ + + + + + + +
{% trans "File-Browser" %}
{% trans "File-Browser" %}
+
\ No newline at end of file diff --git a/apps/filebrowser/templates/filebrowser/.svn/text-base/custom_field.html.svn-base b/apps/filebrowser/templates/filebrowser/.svn/text-base/custom_field.html.svn-base new file mode 100644 index 00000000..ba851982 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/.svn/text-base/custom_field.html.svn-base @@ -0,0 +1,27 @@ +{% load fb_versions %} + + + + +{% ifequal value.filetype "Image" %} +

+ + + +

+{% else %} + +{% endifequal %} +{% if final_attrs.DEBUG %} +

+ Path {{ value.path }}
+ FileType {{ value.filetype }}

+ Directory {{ final_attrs.directory }}
+ Extensions {{ final_attrs.extensions }}
+ Format {{ final_attrs.format }} +

+{% endif %} \ No newline at end of file diff --git a/apps/filebrowser/templates/filebrowser/.svn/text-base/index.html.svn-base b/apps/filebrowser/templates/filebrowser/.svn/text-base/index.html.svn-base new file mode 100644 index 00000000..24100fb0 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/.svn/text-base/index.html.svn-base @@ -0,0 +1,70 @@ +{% extends "admin/base_site.html" %} + + +{% load i18n adminmedia fb_tags %} + + +{% block extrahead %} + {{ block.super }} + + {% ifequal query.pop '1' %} + + {% endifequal %} + + {% ifequal query.pop '2' %} + + + {% if query.mce_rdomain %}{% endif %} + {% endifequal %} + + {% ifequal query.pop '3' %} + + {% endifequal %} + {{ media }} +{% endblock %} + + +{% block coltype %}flex{% endblock %} +{% block bodyclass %}change-list filebrowser{% if query.pop %} popup{% endif %}{% endblock %} + + +{% block extrastyle %} + {{ block.super }} + + + {% if query.pop %} + +{% endif %} +{% endblock %} + + +{% block breadcrumbs %}{% include "filebrowser/include/breadcrumbs.html" %}{% endblock %} + + +{% block content %} +
+ {% block object-tools %} + + {% endblock %} +
+ {% include "filebrowser/include/toolbar.html" %} + {% include "filebrowser/include/filter.html" %} + + {% if results_var.results_current %} + {% include "filebrowser/include/tableheader.html" %} + {% endif %} + + {% for file in files %} + {% include "filebrowser/include/filelisting.html" %} + {% endfor %} + +
+ {% include "filebrowser/include/paginator.html" %} +
+
+{% endblock %} diff --git a/apps/filebrowser/templates/filebrowser/.svn/text-base/makedir.html.svn-base b/apps/filebrowser/templates/filebrowser/.svn/text-base/makedir.html.svn-base new file mode 100644 index 00000000..7fe19ab2 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/.svn/text-base/makedir.html.svn-base @@ -0,0 +1,62 @@ +{% extends "admin/base_site.html" %} + + +{% load i18n adminmedia fb_tags %} + + +{% block extrahead %} + {{ block.super }} + + + +{% endblock %} + + +{% block coltype %}colM{% endblock %} +{% block bodyclass %}change-form{% endblock %} + + +{% block extrastyle %} + {{ block.super }} + + + {% if query.pop %} + +{% endif %} +{% endblock %} + + +{% block breadcrumbs %}{% include "filebrowser/include/breadcrumbs.html" %}{% endblock %} + + +{% block content %} +
+
+
+ {% if form.errors %}

{% trans 'Please correct the following errors.' %}

{% endif %} +
+
+ {% if form.dir_name.errors %}
    {{ form.dir_name.errors }}
{% endif %} + + {{ form.dir_name }} +
+
+
+

{% trans "Help" %}

+
+ +

+ {{ form.dir_name.help_text|safe }} + {% if settings_var.CONVERT_FILENAME %}
{% trans "The Name will be converted to lowercase. Spaces will be replaced with underscores." %}{% endif %} +

+
+
+
+
+
+
+
+
+{% endblock %} \ No newline at end of file diff --git a/apps/filebrowser/templates/filebrowser/.svn/text-base/rename.html.svn-base b/apps/filebrowser/templates/filebrowser/.svn/text-base/rename.html.svn-base new file mode 100644 index 00000000..31ddc0a1 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/.svn/text-base/rename.html.svn-base @@ -0,0 +1,63 @@ +{% extends "admin/base_site.html" %} + + +{% load i18n adminmedia fb_tags %} + + +{% block extrahead %} + {{ block.super }} + + + +{% endblock %} + + +{% block coltype %}colM{% endblock %} +{% block bodyclass %}change-form{% endblock %} + + +{% block extrastyle %} + {{ block.super }} + + + {% if query.pop %} + +{% endif %} +{% endblock %} + + +{% block breadcrumbs %}{% include "filebrowser/include/breadcrumbs.html" %}{% endblock %} + + +{% block content %} +
+
+
+ {% if form.errors %}

{% trans 'Please correct the following errors.' %}

{% endif %} +
+
+ {% if form.name.errors %}
    {{ form.name.errors }}
{% endif %} + + {{ form.name }} + {% if file_extension %}{{ file_extension }}{% endif %} +
+
+
+

{% trans "Help" %}

+
+ +

+ {{ form.name.help_text|safe }} + {% if settings_var.CONVERT_FILENAME %}
{% trans "The Name will be converted to lowercase. Spaces will be replaced with underscores." %}{% endif %} +

+
+
+
+ +
+
+
+
+{% endblock %} \ No newline at end of file diff --git a/apps/filebrowser/templates/filebrowser/.svn/text-base/upload.html.svn-base b/apps/filebrowser/templates/filebrowser/.svn/text-base/upload.html.svn-base new file mode 100644 index 00000000..2736a3c8 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/.svn/text-base/upload.html.svn-base @@ -0,0 +1,116 @@ +{% extends "admin/base_site.html" %} + + +{% load i18n adminmedia fb_tags %} + + +{% block extrahead %} + {{ block.super }} + + + + + + + +{% endblock %} + + +{% block coltype %}colM{% endblock %} +{% block bodyclass %}change-form{% endblock %} + + +{% block extrastyle %} + {{ block.super }} + + + + {% if query.pop %} + + {% endif %} +{% endblock %} + + +{% block breadcrumbs %}{% include "filebrowser/include/breadcrumbs.html" %}{% endblock %} + + +{% block content %} +
+
+
+
+
+ +
+
+ +
+

{% trans "Help" %}

+
+ {% for extension in settings_var.EXTENSIONS.items %} + {% ifnotequal extension.0 'Folder' %} + +

{{ extension.0|safe }} ({{ extension.1|join:", "|safe }})

+ {% endifnotequal %} + {% endfor %} +
+
+ +

{{ settings_var.MAX_UPLOAD_SIZE|filesizeformat }}

+
+ {% if settings_var.CONVERT_FILENAME %} +
+ +

+ {% trans "The Name will be converted to lowercase. Spaces will be replaced with underscores." %} +

+
+ {% endif %} +
+ + + +
+
+
+{% endblock %} diff --git a/apps/filebrowser/templates/filebrowser/.svn/text-base/versions.html.svn-base b/apps/filebrowser/templates/filebrowser/.svn/text-base/versions.html.svn-base new file mode 100644 index 00000000..b038c042 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/.svn/text-base/versions.html.svn-base @@ -0,0 +1,138 @@ +{% extends "admin/base_site.html" %} + + +{% load i18n adminmedia fb_tags fb_versions %} + + +{% block extrahead %} + {{ block.super }} + {% ifequal query.pop '1' %} + + {% endifequal %} + {% ifequal query.pop '2' %} + + + {% if query.mce_rdomain %}{% endif %} + {% endifequal %} + {% ifequal query.pop '3' %} + + {% endifequal %} + {{ media }} +{% endblock %} + + +{% block coltype %}colM{% endblock %} +{% block bodyclass %}change-list filebrowser{% endblock %} + + +{% block extrastyle %} + {{ block.super }} + + + {% if query.pop %} + +{% endif %} +{% endblock %} + + +{% block breadcrumbs %}{% include "filebrowser/include/breadcrumbs.html" %}{% endblock %} + + +{% block content %} +
+
+
+ + + + + {% ifequal query.pop '1' %}{% endifequal %} + {% ifequal query.pop '2' %}{% endifequal %} + {% ifequal query.pop '3' %}{% endifequal %} + + + + + {% if settings_var.DEBUG %}{% endif %} + + + + {% for version in settings_var.ADMIN_VERSIONS %} + {% version_object original version as image_version %} + + + {% ifequal query.pop '1' %} + + {% endifequal %} + + {% ifequal query.pop '2' %} + + {% endifequal %} + + {% ifequal query.pop '3' %} + + {% endifequal %} + + + + + + {% if settings_var.DEBUG %} + + {% endif %} + + {% endfor %} + +
{% trans 'Name' %}{% trans 'Image Version' %}{% trans "Debug" %}
+ {% selectable image_version.filetype query.type %} + {% if selectable %} + + {% else %} + + {% endif %} + + {% selectable image_version.filetype query.type %} + {% if selectable %} + + {% else %} + + {% endif %} + + {% selectable image_version.filetype query.type %} + {% if selectable %} + + {% else %} + + {% endif %} + + {% version_setting version %} + {{ version_setting.verbose_name }}
+ {% if version_setting.width %}{% trans "Width" %}: {{ version_setting.width }}px
{% endif %} + {% if version_setting.height %}{% trans "Height" %}: {{ version_setting.height }}px{% endif %} +
+ Filename {{ image_version.filename }}
+ Filetype {{ image_version.filetype }}
+ Filesize {{ image_version.filesize }}
+ Extension {{ image_version.extension }}
+ Date {{ image_version.date }}
+ Datetime Object {{ image_version.datetime }}

+ + Relative Path {{ image_version.path_relative }}
+ Full Path {{ image_version.path_full }}
+ Relative URL {{ image_version.url_relative }}
+ Full URL {{ image_version.url_full }}

+ + URL for FileBrowseField {{ image_version.url_save }}
+ Thumbnail URL {{ image_version.url_thumbnail }}

+ + Dimensions {{ image_version.dimensions }}
+ Width {{ image_version.width }}
+ Height {{ image_version.height }}
+ Orientation {{ image_version.orientation }} +
+
+
+
+{% endblock %} \ No newline at end of file diff --git a/apps/filebrowser/templates/filebrowser/append.html b/apps/filebrowser/templates/filebrowser/append.html new file mode 100644 index 00000000..6d1123f1 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/append.html @@ -0,0 +1,12 @@ +{% load i18n %} + +
+ + + + + + + +
{% trans "File-Browser" %}
{% trans "File-Browser" %}
+
\ No newline at end of file diff --git a/apps/filebrowser/templates/filebrowser/custom_field.html b/apps/filebrowser/templates/filebrowser/custom_field.html new file mode 100644 index 00000000..ba851982 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/custom_field.html @@ -0,0 +1,27 @@ +{% load fb_versions %} + + + + +{% ifequal value.filetype "Image" %} +

+ + + +

+{% else %} + +{% endifequal %} +{% if final_attrs.DEBUG %} +

+ Path {{ value.path }}
+ FileType {{ value.filetype }}

+ Directory {{ final_attrs.directory }}
+ Extensions {{ final_attrs.extensions }}
+ Format {{ final_attrs.format }} +

+{% endif %} \ No newline at end of file diff --git a/apps/filebrowser/templates/filebrowser/include/.svn/all-wcprops b/apps/filebrowser/templates/filebrowser/include/.svn/all-wcprops new file mode 100644 index 00000000..b41d11b8 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/include/.svn/all-wcprops @@ -0,0 +1,47 @@ +K 25 +svn:wc:ra_dav:version-url +V 82 +/svn/!svn/ver/463/branches/filebrowser_3/filebrowser/templates/filebrowser/include +END +_response.html +K 25 +svn:wc:ra_dav:version-url +V 97 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/templates/filebrowser/include/_response.html +END +tableheader.html +K 25 +svn:wc:ra_dav:version-url +V 99 +/svn/!svn/ver/424/branches/filebrowser_3/filebrowser/templates/filebrowser/include/tableheader.html +END +toolbar.html +K 25 +svn:wc:ra_dav:version-url +V 95 +/svn/!svn/ver/460/branches/filebrowser_3/filebrowser/templates/filebrowser/include/toolbar.html +END +paginator.html +K 25 +svn:wc:ra_dav:version-url +V 97 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/templates/filebrowser/include/paginator.html +END +filter.html +K 25 +svn:wc:ra_dav:version-url +V 94 +/svn/!svn/ver/460/branches/filebrowser_3/filebrowser/templates/filebrowser/include/filter.html +END +filelisting.html +K 25 +svn:wc:ra_dav:version-url +V 99 +/svn/!svn/ver/424/branches/filebrowser_3/filebrowser/templates/filebrowser/include/filelisting.html +END +breadcrumbs.html +K 25 +svn:wc:ra_dav:version-url +V 99 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/templates/filebrowser/include/breadcrumbs.html +END diff --git a/apps/filebrowser/templates/filebrowser/include/.svn/entries b/apps/filebrowser/templates/filebrowser/include/.svn/entries new file mode 100644 index 00000000..4f9953c1 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/include/.svn/entries @@ -0,0 +1,266 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/templates/filebrowser/include +http://django-filebrowser.googlecode.com/svn + + + +2009-10-12T17:53:18.744015Z +463 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +_response.html +file + + + + +2009-11-05T20:58:53.000000Z +633d152ae6feed3333d7f03f4790e032 +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +14 + +tableheader.html +file + + + + +2009-11-05T20:58:53.000000Z +07195822d8df07bf95705e748af5709e +2009-08-01T07:36:17.001098Z +424 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +2517 + +toolbar.html +file + + + + +2009-11-05T20:58:53.000000Z +e5d1711ea275ccd3c53b489883e4fbfb +2009-10-12T13:24:43.615535Z +460 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +1918 + +paginator.html +file + + + + +2009-11-05T20:58:53.000000Z +c7677ea7d8fbc59cc97545d0ef898b67 +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +661 + +filter.html +file + + + + +2009-11-05T20:58:53.000000Z +3b46164b2f96d36bf5a00e6e09bac934 +2009-10-12T13:24:43.615535Z +460 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +1871 + +filelisting.html +file + + + + +2009-11-05T20:58:53.000000Z +6705461d786e90893ef54f3b5b4b6ae7 +2009-08-01T07:36:17.001098Z +424 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +5651 + +breadcrumbs.html +file + + + + +2009-11-05T20:58:53.000000Z +f110fc06a5d51f3d8c50ba3e0936bb90 +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +601 + diff --git a/apps/filebrowser/templates/filebrowser/include/.svn/text-base/_response.html.svn-base b/apps/filebrowser/templates/filebrowser/include/.svn/text-base/_response.html.svn-base new file mode 100644 index 00000000..e7dff2c6 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/include/.svn/text-base/_response.html.svn-base @@ -0,0 +1 @@ +{{ response }} \ No newline at end of file diff --git a/apps/filebrowser/templates/filebrowser/include/.svn/text-base/breadcrumbs.html.svn-base b/apps/filebrowser/templates/filebrowser/include/.svn/text-base/breadcrumbs.html.svn-base new file mode 100644 index 00000000..5b9d181e --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/include/.svn/text-base/breadcrumbs.html.svn-base @@ -0,0 +1,18 @@ +{% load i18n fb_tags %} + \ No newline at end of file diff --git a/apps/filebrowser/templates/filebrowser/include/.svn/text-base/filelisting.html.svn-base b/apps/filebrowser/templates/filebrowser/include/.svn/text-base/filelisting.html.svn-base new file mode 100644 index 00000000..6b3b7622 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/include/.svn/text-base/filelisting.html.svn-base @@ -0,0 +1,121 @@ +{% load i18n adminmedia fb_tags fb_versions %} + + + + {% ifequal query.pop '1' %} + {% if results_var.select_total %} + + {% selectable file.filetype query.type %} + {% if selectable %} + + {% else %} + + {% endif %} + + {% endif %} + {% endifequal %} + + + {% ifequal query.pop '2' %} + {% if results_var.select_total %} + + {% selectable file.filetype query.type %} + {% if selectable %} + + {% else %} + + {% endif %} + + {% endif %} + {% endifequal %} + + + {% ifequal query.pop '3' %} + {% if results_var.select_total %} + + {% selectable file.filetype query.type %} + {% if selectable %} + + {% else %} + + {% endif %} + + {% endif %} + {% endifequal %} + + + {% if settings_var.ADMIN_VERSIONS and results_var.images_total %} + + {% ifequal file.filetype 'Image' %}{% endifequal %} + + {% endif %} + + + + + + {% if results_var.images_total %} + + {% ifequal file.filetype 'Image' %} + + {% endifequal %} + + {% endif %} + + + {% ifequal file.filetype 'Folder' %} + {{ file.filename }} + {% else %} + {{ file.filename }}{% if file.dimensions %}
{{ file.dimensions.0 }} x {{ file.dimensions.1 }} px{% endif %} + {% endifequal %} + + + + + + {{ file.filesize|filesizeformat }} + + + {{ file.datetime|date:"N j, Y" }} + + + {% if results_var.delete_total %} + + {% ifnotequal file.filetype 'Folder' %} + + {% else %} + {% if file.is_empty %} + + {% endif %} + {% endifnotequal %} + + {% endif %} + + + {% if settings_var.DEBUG %} + + Filename {{ file.filename }}
+ Filetype {{ file.filetype }}
+ Filesize {{ file.filesize }}
+ Extension {{ file.extension }}
+ Date {{ file.date }}
+ Datetime Object {{ file.datetime }}

+ Relative Path {{ file.path_relative }}
+ Full Path {{ file.path_full }}
+ Relative URL {{ file.url_relative }}
+ Full URL {{ file.url_full }}

+ URL for FileBrowseField {{ file.url_save }}
+ Thumbnail URL {{ file.url_thumbnail }} + {% ifequal file.filetype 'Image' %}

+ Dimensions {{ file.dimensions }}
+ Width {{ file.width }}
+ Height {{ file.height }}
+ Orientation {{ file.orientation }} + {% endifequal %} + {% ifequal file.filetype 'Folder' %}

+ Is Empty {{ file.is_empty }} + {% endifequal %} + + {% endif %} + + diff --git a/apps/filebrowser/templates/filebrowser/include/.svn/text-base/filter.html.svn-base b/apps/filebrowser/templates/filebrowser/include/.svn/text-base/filter.html.svn-base new file mode 100644 index 00000000..28713d0f --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/include/.svn/text-base/filter.html.svn-base @@ -0,0 +1,35 @@ +{% load i18n fb_tags %} +
+

{% trans "Filter" %}

+{% if query.filter_date %} +
+{% else %} +
+{% endif %} +

{% trans "By Date" %}

+ +
+{% if query.filter_type %} +
+{% else %} +
+{% endif %} +

{% trans "By Type" %}

+
    + {% if query.filter_type %}
  • {% else %}
  • {% endif %}{% trans "All" %}
  • + {% for extension in settings_var.EXTENSIONS %} + {% ifequal query.filter_type extension %}
  • {% else %}
  • {% endifequal %}{% trans extension %}
  • + {% endfor %} +
+
+
\ No newline at end of file diff --git a/apps/filebrowser/templates/filebrowser/include/.svn/text-base/paginator.html.svn-base b/apps/filebrowser/templates/filebrowser/include/.svn/text-base/paginator.html.svn-base new file mode 100644 index 00000000..73e5006d --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/include/.svn/text-base/paginator.html.svn-base @@ -0,0 +1,17 @@ +{% load i18n %} +{% if not results_var.results_current %} +

+{% trans "No Items Found." %} +

+{% endif %} +

+{% if results_var.results_total %} + {% blocktrans count results_var.results_total as counter %}{{ counter }} Item{% plural %}{{ counter }} Items{% endblocktrans %}  + {% for count in counter.items %} + {% trans count.0 %}: + {{ count.1 }}  + {% endfor %} +{% else %} + {% trans "No Items." %} +{% endif %} +

\ No newline at end of file diff --git a/apps/filebrowser/templates/filebrowser/include/.svn/text-base/tableheader.html.svn-base b/apps/filebrowser/templates/filebrowser/include/.svn/text-base/tableheader.html.svn-base new file mode 100644 index 00000000..1e6e8164 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/include/.svn/text-base/tableheader.html.svn-base @@ -0,0 +1,38 @@ +{% load i18n fb_tags %} + + + + {% ifequal query.pop '1' %}{% if results_var.select_total %}{% endif %}{% endifequal %} + {% ifequal query.pop '2' %}{% if results_var.select_total %}{% endif %}{% endifequal %} + {% ifequal query.pop '3' %}{% if results_var.select_total %}{% endif %}{% endifequal %} + + + {% if settings_var.ADMIN_VERSIONS and results_var.images_total %} {% endif %} + + + {% ifequal query.o 'filetype_checked' %}{% endifequal %} + {% ifnotequal query.o 'filetype_checked' %} {% endifnotequal %} + + + {% if results_var.images_total %} {% endif %} + + + {% ifequal query.o 'filename_lower' %}{% trans 'Filename' %}{% endifequal %} + {% ifnotequal query.o 'filename_lower' %}{% trans 'Filename' %}{% endifnotequal %} + + +   + + + {% ifequal query.o 'filesize' %}{% trans 'Size' %}{% endifequal %} + {% ifnotequal query.o 'filesize' %}{% trans 'Size' %}{% endifnotequal %} + + + {% ifequal query.o 'date' %}{% trans 'Date' %}{% endifequal %} + {% ifnotequal query.o 'date' %}{% trans 'Date' %}{% endifnotequal %} + + + {% if results_var.delete_total %} {% endif %} + {% if settings_var.DEBUG %}Debug{% endif %} + + \ No newline at end of file diff --git a/apps/filebrowser/templates/filebrowser/include/.svn/text-base/toolbar.html.svn-base b/apps/filebrowser/templates/filebrowser/include/.svn/text-base/toolbar.html.svn-base new file mode 100644 index 00000000..a21d36c8 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/include/.svn/text-base/toolbar.html.svn-base @@ -0,0 +1,25 @@ +{% load i18n adminmedia fb_tags %} +
+ +
+ \ No newline at end of file diff --git a/apps/filebrowser/templates/filebrowser/include/_response.html b/apps/filebrowser/templates/filebrowser/include/_response.html new file mode 100644 index 00000000..e7dff2c6 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/include/_response.html @@ -0,0 +1 @@ +{{ response }} \ No newline at end of file diff --git a/apps/filebrowser/templates/filebrowser/include/breadcrumbs.html b/apps/filebrowser/templates/filebrowser/include/breadcrumbs.html new file mode 100644 index 00000000..5b9d181e --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/include/breadcrumbs.html @@ -0,0 +1,18 @@ +{% load i18n fb_tags %} + \ No newline at end of file diff --git a/apps/filebrowser/templates/filebrowser/include/filelisting.html b/apps/filebrowser/templates/filebrowser/include/filelisting.html new file mode 100644 index 00000000..6b3b7622 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/include/filelisting.html @@ -0,0 +1,121 @@ +{% load i18n adminmedia fb_tags fb_versions %} + + + + {% ifequal query.pop '1' %} + {% if results_var.select_total %} + + {% selectable file.filetype query.type %} + {% if selectable %} + + {% else %} + + {% endif %} + + {% endif %} + {% endifequal %} + + + {% ifequal query.pop '2' %} + {% if results_var.select_total %} + + {% selectable file.filetype query.type %} + {% if selectable %} + + {% else %} + + {% endif %} + + {% endif %} + {% endifequal %} + + + {% ifequal query.pop '3' %} + {% if results_var.select_total %} + + {% selectable file.filetype query.type %} + {% if selectable %} + + {% else %} + + {% endif %} + + {% endif %} + {% endifequal %} + + + {% if settings_var.ADMIN_VERSIONS and results_var.images_total %} + + {% ifequal file.filetype 'Image' %}{% endifequal %} + + {% endif %} + + + + + + {% if results_var.images_total %} + + {% ifequal file.filetype 'Image' %} + + {% endifequal %} + + {% endif %} + + + {% ifequal file.filetype 'Folder' %} + {{ file.filename }} + {% else %} + {{ file.filename }}{% if file.dimensions %}
{{ file.dimensions.0 }} x {{ file.dimensions.1 }} px{% endif %} + {% endifequal %} + + + + + + {{ file.filesize|filesizeformat }} + + + {{ file.datetime|date:"N j, Y" }} + + + {% if results_var.delete_total %} + + {% ifnotequal file.filetype 'Folder' %} + + {% else %} + {% if file.is_empty %} + + {% endif %} + {% endifnotequal %} + + {% endif %} + + + {% if settings_var.DEBUG %} + + Filename {{ file.filename }}
+ Filetype {{ file.filetype }}
+ Filesize {{ file.filesize }}
+ Extension {{ file.extension }}
+ Date {{ file.date }}
+ Datetime Object {{ file.datetime }}

+ Relative Path {{ file.path_relative }}
+ Full Path {{ file.path_full }}
+ Relative URL {{ file.url_relative }}
+ Full URL {{ file.url_full }}

+ URL for FileBrowseField {{ file.url_save }}
+ Thumbnail URL {{ file.url_thumbnail }} + {% ifequal file.filetype 'Image' %}

+ Dimensions {{ file.dimensions }}
+ Width {{ file.width }}
+ Height {{ file.height }}
+ Orientation {{ file.orientation }} + {% endifequal %} + {% ifequal file.filetype 'Folder' %}

+ Is Empty {{ file.is_empty }} + {% endifequal %} + + {% endif %} + + diff --git a/apps/filebrowser/templates/filebrowser/include/filter.html b/apps/filebrowser/templates/filebrowser/include/filter.html new file mode 100644 index 00000000..28713d0f --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/include/filter.html @@ -0,0 +1,35 @@ +{% load i18n fb_tags %} +
+

{% trans "Filter" %}

+{% if query.filter_date %} +
+{% else %} +
+{% endif %} +

{% trans "By Date" %}

+ +
+{% if query.filter_type %} +
+{% else %} +
+{% endif %} +

{% trans "By Type" %}

+
    + {% if query.filter_type %}
  • {% else %}
  • {% endif %}{% trans "All" %}
  • + {% for extension in settings_var.EXTENSIONS %} + {% ifequal query.filter_type extension %}
  • {% else %}
  • {% endifequal %}{% trans extension %}
  • + {% endfor %} +
+
+
\ No newline at end of file diff --git a/apps/filebrowser/templates/filebrowser/include/paginator.html b/apps/filebrowser/templates/filebrowser/include/paginator.html new file mode 100644 index 00000000..73e5006d --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/include/paginator.html @@ -0,0 +1,17 @@ +{% load i18n %} +{% if not results_var.results_current %} +

+{% trans "No Items Found." %} +

+{% endif %} +

+{% if results_var.results_total %} + {% blocktrans count results_var.results_total as counter %}{{ counter }} Item{% plural %}{{ counter }} Items{% endblocktrans %}  + {% for count in counter.items %} + {% trans count.0 %}: + {{ count.1 }}  + {% endfor %} +{% else %} + {% trans "No Items." %} +{% endif %} +

\ No newline at end of file diff --git a/apps/filebrowser/templates/filebrowser/include/tableheader.html b/apps/filebrowser/templates/filebrowser/include/tableheader.html new file mode 100644 index 00000000..1e6e8164 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/include/tableheader.html @@ -0,0 +1,38 @@ +{% load i18n fb_tags %} + + + + {% ifequal query.pop '1' %}{% if results_var.select_total %}{% endif %}{% endifequal %} + {% ifequal query.pop '2' %}{% if results_var.select_total %}{% endif %}{% endifequal %} + {% ifequal query.pop '3' %}{% if results_var.select_total %}{% endif %}{% endifequal %} + + + {% if settings_var.ADMIN_VERSIONS and results_var.images_total %} {% endif %} + + + {% ifequal query.o 'filetype_checked' %}{% endifequal %} + {% ifnotequal query.o 'filetype_checked' %} {% endifnotequal %} + + + {% if results_var.images_total %} {% endif %} + + + {% ifequal query.o 'filename_lower' %}{% trans 'Filename' %}{% endifequal %} + {% ifnotequal query.o 'filename_lower' %}{% trans 'Filename' %}{% endifnotequal %} + + +   + + + {% ifequal query.o 'filesize' %}{% trans 'Size' %}{% endifequal %} + {% ifnotequal query.o 'filesize' %}{% trans 'Size' %}{% endifnotequal %} + + + {% ifequal query.o 'date' %}{% trans 'Date' %}{% endifequal %} + {% ifnotequal query.o 'date' %}{% trans 'Date' %}{% endifnotequal %} + + + {% if results_var.delete_total %} {% endif %} + {% if settings_var.DEBUG %}Debug{% endif %} + + \ No newline at end of file diff --git a/apps/filebrowser/templates/filebrowser/include/toolbar.html b/apps/filebrowser/templates/filebrowser/include/toolbar.html new file mode 100644 index 00000000..a21d36c8 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/include/toolbar.html @@ -0,0 +1,25 @@ +{% load i18n adminmedia fb_tags %} +
+ +
+ \ No newline at end of file diff --git a/apps/filebrowser/templates/filebrowser/index.html b/apps/filebrowser/templates/filebrowser/index.html new file mode 100644 index 00000000..24100fb0 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/index.html @@ -0,0 +1,70 @@ +{% extends "admin/base_site.html" %} + + +{% load i18n adminmedia fb_tags %} + + +{% block extrahead %} + {{ block.super }} + + {% ifequal query.pop '1' %} + + {% endifequal %} + + {% ifequal query.pop '2' %} + + + {% if query.mce_rdomain %}{% endif %} + {% endifequal %} + + {% ifequal query.pop '3' %} + + {% endifequal %} + {{ media }} +{% endblock %} + + +{% block coltype %}flex{% endblock %} +{% block bodyclass %}change-list filebrowser{% if query.pop %} popup{% endif %}{% endblock %} + + +{% block extrastyle %} + {{ block.super }} + + + {% if query.pop %} + +{% endif %} +{% endblock %} + + +{% block breadcrumbs %}{% include "filebrowser/include/breadcrumbs.html" %}{% endblock %} + + +{% block content %} +
+ {% block object-tools %} + + {% endblock %} +
+ {% include "filebrowser/include/toolbar.html" %} + {% include "filebrowser/include/filter.html" %} + + {% if results_var.results_current %} + {% include "filebrowser/include/tableheader.html" %} + {% endif %} + + {% for file in files %} + {% include "filebrowser/include/filelisting.html" %} + {% endfor %} + +
+ {% include "filebrowser/include/paginator.html" %} +
+
+{% endblock %} diff --git a/apps/filebrowser/templates/filebrowser/makedir.html b/apps/filebrowser/templates/filebrowser/makedir.html new file mode 100644 index 00000000..7fe19ab2 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/makedir.html @@ -0,0 +1,62 @@ +{% extends "admin/base_site.html" %} + + +{% load i18n adminmedia fb_tags %} + + +{% block extrahead %} + {{ block.super }} + + + +{% endblock %} + + +{% block coltype %}colM{% endblock %} +{% block bodyclass %}change-form{% endblock %} + + +{% block extrastyle %} + {{ block.super }} + + + {% if query.pop %} + +{% endif %} +{% endblock %} + + +{% block breadcrumbs %}{% include "filebrowser/include/breadcrumbs.html" %}{% endblock %} + + +{% block content %} +
+
+
+ {% if form.errors %}

{% trans 'Please correct the following errors.' %}

{% endif %} +
+
+ {% if form.dir_name.errors %}
    {{ form.dir_name.errors }}
{% endif %} + + {{ form.dir_name }} +
+
+
+

{% trans "Help" %}

+
+ +

+ {{ form.dir_name.help_text|safe }} + {% if settings_var.CONVERT_FILENAME %}
{% trans "The Name will be converted to lowercase. Spaces will be replaced with underscores." %}{% endif %} +

+
+
+
+
+
+
+
+
+{% endblock %} \ No newline at end of file diff --git a/apps/filebrowser/templates/filebrowser/rename.html b/apps/filebrowser/templates/filebrowser/rename.html new file mode 100644 index 00000000..31ddc0a1 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/rename.html @@ -0,0 +1,63 @@ +{% extends "admin/base_site.html" %} + + +{% load i18n adminmedia fb_tags %} + + +{% block extrahead %} + {{ block.super }} + + + +{% endblock %} + + +{% block coltype %}colM{% endblock %} +{% block bodyclass %}change-form{% endblock %} + + +{% block extrastyle %} + {{ block.super }} + + + {% if query.pop %} + +{% endif %} +{% endblock %} + + +{% block breadcrumbs %}{% include "filebrowser/include/breadcrumbs.html" %}{% endblock %} + + +{% block content %} +
+
+
+ {% if form.errors %}

{% trans 'Please correct the following errors.' %}

{% endif %} +
+
+ {% if form.name.errors %}
    {{ form.name.errors }}
{% endif %} + + {{ form.name }} + {% if file_extension %}{{ file_extension }}{% endif %} +
+
+
+

{% trans "Help" %}

+
+ +

+ {{ form.name.help_text|safe }} + {% if settings_var.CONVERT_FILENAME %}
{% trans "The Name will be converted to lowercase. Spaces will be replaced with underscores." %}{% endif %} +

+
+
+
+ +
+
+
+
+{% endblock %} \ No newline at end of file diff --git a/apps/filebrowser/templates/filebrowser/upload.html b/apps/filebrowser/templates/filebrowser/upload.html new file mode 100644 index 00000000..2736a3c8 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/upload.html @@ -0,0 +1,116 @@ +{% extends "admin/base_site.html" %} + + +{% load i18n adminmedia fb_tags %} + + +{% block extrahead %} + {{ block.super }} + + + + + + + +{% endblock %} + + +{% block coltype %}colM{% endblock %} +{% block bodyclass %}change-form{% endblock %} + + +{% block extrastyle %} + {{ block.super }} + + + + {% if query.pop %} + + {% endif %} +{% endblock %} + + +{% block breadcrumbs %}{% include "filebrowser/include/breadcrumbs.html" %}{% endblock %} + + +{% block content %} +
+
+
+
+
+ +
+
+ +
+

{% trans "Help" %}

+
+ {% for extension in settings_var.EXTENSIONS.items %} + {% ifnotequal extension.0 'Folder' %} + +

{{ extension.0|safe }} ({{ extension.1|join:", "|safe }})

+ {% endifnotequal %} + {% endfor %} +
+
+ +

{{ settings_var.MAX_UPLOAD_SIZE|filesizeformat }}

+
+ {% if settings_var.CONVERT_FILENAME %} +
+ +

+ {% trans "The Name will be converted to lowercase. Spaces will be replaced with underscores." %} +

+
+ {% endif %} +
+ + + +
+
+
+{% endblock %} diff --git a/apps/filebrowser/templates/filebrowser/versions.html b/apps/filebrowser/templates/filebrowser/versions.html new file mode 100644 index 00000000..b038c042 --- /dev/null +++ b/apps/filebrowser/templates/filebrowser/versions.html @@ -0,0 +1,138 @@ +{% extends "admin/base_site.html" %} + + +{% load i18n adminmedia fb_tags fb_versions %} + + +{% block extrahead %} + {{ block.super }} + {% ifequal query.pop '1' %} + + {% endifequal %} + {% ifequal query.pop '2' %} + + + {% if query.mce_rdomain %}{% endif %} + {% endifequal %} + {% ifequal query.pop '3' %} + + {% endifequal %} + {{ media }} +{% endblock %} + + +{% block coltype %}colM{% endblock %} +{% block bodyclass %}change-list filebrowser{% endblock %} + + +{% block extrastyle %} + {{ block.super }} + + + {% if query.pop %} + +{% endif %} +{% endblock %} + + +{% block breadcrumbs %}{% include "filebrowser/include/breadcrumbs.html" %}{% endblock %} + + +{% block content %} +
+
+
+ + + + + {% ifequal query.pop '1' %}{% endifequal %} + {% ifequal query.pop '2' %}{% endifequal %} + {% ifequal query.pop '3' %}{% endifequal %} + + + + + {% if settings_var.DEBUG %}{% endif %} + + + + {% for version in settings_var.ADMIN_VERSIONS %} + {% version_object original version as image_version %} + + + {% ifequal query.pop '1' %} + + {% endifequal %} + + {% ifequal query.pop '2' %} + + {% endifequal %} + + {% ifequal query.pop '3' %} + + {% endifequal %} + + + + + + {% if settings_var.DEBUG %} + + {% endif %} + + {% endfor %} + +
{% trans 'Name' %}{% trans 'Image Version' %}{% trans "Debug" %}
+ {% selectable image_version.filetype query.type %} + {% if selectable %} + + {% else %} + + {% endif %} + + {% selectable image_version.filetype query.type %} + {% if selectable %} + + {% else %} + + {% endif %} + + {% selectable image_version.filetype query.type %} + {% if selectable %} + + {% else %} + + {% endif %} + + {% version_setting version %} + {{ version_setting.verbose_name }}
+ {% if version_setting.width %}{% trans "Width" %}: {{ version_setting.width }}px
{% endif %} + {% if version_setting.height %}{% trans "Height" %}: {{ version_setting.height }}px{% endif %} +
+ Filename {{ image_version.filename }}
+ Filetype {{ image_version.filetype }}
+ Filesize {{ image_version.filesize }}
+ Extension {{ image_version.extension }}
+ Date {{ image_version.date }}
+ Datetime Object {{ image_version.datetime }}

+ + Relative Path {{ image_version.path_relative }}
+ Full Path {{ image_version.path_full }}
+ Relative URL {{ image_version.url_relative }}
+ Full URL {{ image_version.url_full }}

+ + URL for FileBrowseField {{ image_version.url_save }}
+ Thumbnail URL {{ image_version.url_thumbnail }}

+ + Dimensions {{ image_version.dimensions }}
+ Width {{ image_version.width }}
+ Height {{ image_version.height }}
+ Orientation {{ image_version.orientation }} +
+
+
+
+{% endblock %} \ No newline at end of file diff --git a/apps/filebrowser/templatetags/.svn/all-wcprops b/apps/filebrowser/templatetags/.svn/all-wcprops new file mode 100644 index 00000000..4cb9a9ad --- /dev/null +++ b/apps/filebrowser/templatetags/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 65 +/svn/!svn/ver/432/branches/filebrowser_3/filebrowser/templatetags +END +fb_versions.py +K 25 +svn:wc:ra_dav:version-url +V 80 +/svn/!svn/ver/432/branches/filebrowser_3/filebrowser/templatetags/fb_versions.py +END +__init__.py +K 25 +svn:wc:ra_dav:version-url +V 77 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/templatetags/__init__.py +END +fb_tags.py +K 25 +svn:wc:ra_dav:version-url +V 76 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/templatetags/fb_tags.py +END diff --git a/apps/filebrowser/templatetags/.svn/entries b/apps/filebrowser/templatetags/.svn/entries new file mode 100644 index 00000000..e6bdf1fe --- /dev/null +++ b/apps/filebrowser/templatetags/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/templatetags +http://django-filebrowser.googlecode.com/svn + + + +2009-08-06T07:04:57.356188Z +432 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +fb_versions.py +file + + + + +2009-11-05T20:58:52.000000Z +51b29544dc45eb9c944a841253d1fd5b +2009-08-06T07:04:57.356188Z +432 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +7013 + +__init__.py +file + + + + +2009-11-05T20:58:52.000000Z +d41d8cd98f00b204e9800998ecf8427e +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +0 + +fb_tags.py +file + + + + +2009-11-05T20:58:52.000000Z +b892a5d2e0ad7082f30e5bd4f9b42f4d +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +3880 + diff --git a/apps/filebrowser/templatetags/.svn/text-base/__init__.py.svn-base b/apps/filebrowser/templatetags/.svn/text-base/__init__.py.svn-base new file mode 100644 index 00000000..e69de29b diff --git a/apps/filebrowser/templatetags/.svn/text-base/fb_tags.py.svn-base b/apps/filebrowser/templatetags/.svn/text-base/fb_tags.py.svn-base new file mode 100644 index 00000000..f1e968d0 --- /dev/null +++ b/apps/filebrowser/templatetags/.svn/text-base/fb_tags.py.svn-base @@ -0,0 +1,133 @@ +# coding: utf-8 + +from django import template +from django.utils.encoding import smart_unicode +from django.utils.safestring import mark_safe + +from filebrowser.fb_settings import SELECT_FORMATS + +register = template.Library() + +@register.inclusion_tag('filebrowser/include/_response.html', takes_context=True) +def query_string(context, add=None, remove=None): + """ + Allows the addition and removal of query string parameters. + + _response.html is just {{ response }} + + Usage: + http://www.url.com/{% query_string "param_to_add=value, param_to_add=value" "param_to_remove, params_to_remove" %} + http://www.url.com/{% query_string "" "filter" %}filter={{new_filter}} + http://www.url.com/{% query_string "sort=value" "sort" %} + """ + # Written as an inclusion tag to simplify getting the context. + add = string_to_dict(add) + remove = string_to_list(remove) + params = context['query'].copy() + response = get_query_string(params, add, remove) + return {'response': response } + + +def query_helper(query, add=None, remove=None): + """ + Helper Function for use within views. + """ + add = string_to_dict(add) + remove = string_to_list(remove) + params = query.copy() + return get_query_string(params, add, remove) + + +def get_query_string(p, new_params=None, remove=None): + """ + Add and remove query parameters. From `django.contrib.admin`. + """ + if new_params is None: new_params = {} + if remove is None: remove = [] + for r in remove: + for k in p.keys(): + if k.startswith(r): + del p[k] + for k, v in new_params.items(): + if k in p and v is None: + del p[k] + elif v is not None: + p[k] = v + return mark_safe('?' + '&'.join([u'%s=%s' % (k, v) for k, v in p.items()]).replace(' ', '%20')) + + +def string_to_dict(string): + """ + Usage:: + + {{ url|thumbnail:"width=10,height=20" }} + {{ url|thumbnail:"width=10" }} + {{ url|thumbnail:"height=20" }} + """ + kwargs = {} + if string: + string = str(string) + if ',' not in string: + # ensure at least one ',' + string += ',' + for arg in string.split(','): + arg = arg.strip() + if arg == '': continue + kw, val = arg.split('=', 1) + kwargs[kw] = val + return kwargs + + +def string_to_list(string): + """ + Usage:: + + {{ url|thumbnail:"width,height" }} + """ + args = [] + if string: + string = str(string) + if ',' not in string: + # ensure at least one ',' + string += ',' + for arg in string.split(','): + arg = arg.strip() + if arg == '': continue + args.append(arg) + return args + + +class SelectableNode(template.Node): + def __init__(self, filetype, format): + self.filetype = template.Variable(filetype) + self.format = template.Variable(format) + + def render(self, context): + try: + filetype = self.filetype.resolve(context) + except template.VariableDoesNotExist: + filetype = '' + try: + format = self.format.resolve(context) + except template.VariableDoesNotExist: + format = '' + if filetype and format and filetype in SELECT_FORMATS[format]: + selectable = True + elif filetype and format and filetype not in SELECT_FORMATS[format]: + selectable = False + else: + selectable = True + context['selectable'] = selectable + return '' + + +def selectable(parser, token): + + try: + tag, filetype, format = token.split_contents() + except: + raise TemplateSyntaxError, "%s tag requires 2 arguments" % token.contents.split()[0] + + return SelectableNode(filetype, format) + +register.tag(selectable) diff --git a/apps/filebrowser/templatetags/.svn/text-base/fb_versions.py.svn-base b/apps/filebrowser/templatetags/.svn/text-base/fb_versions.py.svn-base new file mode 100644 index 00000000..887fd9ea --- /dev/null +++ b/apps/filebrowser/templatetags/.svn/text-base/fb_versions.py.svn-base @@ -0,0 +1,171 @@ +# coding: utf-8 + +import os, re +from time import gmtime +from django.template import Library, Node, Variable, VariableDoesNotExist, TemplateSyntaxError +from django.conf import settings +from django.utils.encoding import force_unicode + +# filebrowser imports +from filebrowser.fb_settings import MEDIA_ROOT, MEDIA_URL, VERSIONS +from filebrowser.functions import _url_to_path, _path_to_url, _get_version_path, _version_generator +from filebrowser.base import FileObject + +register = Library() + +class VersionNode(Node): + def __init__(self, src, version_prefix): + self.src = Variable(src) + if (version_prefix[0] == version_prefix[-1] and version_prefix[0] in ('"', "'")): + self.version_prefix = version_prefix[1:-1] + else: + self.version_prefix = None + self.version_prefix_var = Variable(version_prefix) + + def render(self, context): + try: + source = self.src.resolve(context) + except VariableDoesNotExist: + return None + if self.version_prefix: + version_prefix = self.version_prefix + else: + try: + version_prefix = self.version_prefix_var.resolve(context) + except VariableDoesNotExist: + return None + try: + version_path = _get_version_path(_url_to_path(str(source)), version_prefix) + if not os.path.isfile(os.path.join(MEDIA_ROOT, version_path)): + # create version + version_path = _version_generator(_url_to_path(str(source)), version_prefix) + elif os.path.getmtime(os.path.join(MEDIA_ROOT, _url_to_path(str(source)))) > os.path.getmtime(os.path.join(MEDIA_ROOT, version_path)): + # recreate version if original image was updated + version_path = _version_generator(_url_to_path(str(source)), version_prefix, force=True) + return _path_to_url(version_path) + except: + return "" + + +def version(parser, token): + """ + Displaying a version of an existing Image according to the predefined VERSIONS settings (see fb_settings). + {% version field_name version_prefix %} + + Use {% version my_image 'medium' %} in order to display the medium-size + version of an Image stored in a field name my_image. + + version_prefix can be a string or a variable. if version_prefix is a string, use quotes. + """ + + try: + tag, src, version_prefix = token.split_contents() + except: + raise TemplateSyntaxError, "%s tag requires 2 arguments" % token.contents.split()[0] + if (version_prefix[0] == version_prefix[-1] and version_prefix[0] in ('"', "'")) and version_prefix.lower()[1:-1] not in VERSIONS: + raise TemplateSyntaxError, "%s tag received bad version_prefix %s" % (tag, version_prefix) + return VersionNode(src, version_prefix) + + +class VersionObjectNode(Node): + def __init__(self, src, version_prefix, var_name): + self.var_name = var_name + self.src = Variable(src) + if (version_prefix[0] == version_prefix[-1] and version_prefix[0] in ('"', "'")): + self.version_prefix = version_prefix[1:-1] + else: + self.version_prefix = None + self.version_prefix_var = Variable(version_prefix) + + def render(self, context): + try: + source = self.src.resolve(context) + except VariableDoesNotExist: + return None + if self.version_prefix: + version_prefix = self.version_prefix + else: + try: + version_prefix = self.version_prefix_var.resolve(context) + except VariableDoesNotExist: + return None + try: + version_path = _get_version_path(_url_to_path(str(source)), version_prefix) + if not os.path.isfile(os.path.join(MEDIA_ROOT, version_path)): + # create version + version_path = _version_generator(_url_to_path(str(source)), version_prefix) + elif os.path.getmtime(os.path.join(MEDIA_ROOT, _url_to_path(str(source)))) > os.path.getmtime(os.path.join(MEDIA_ROOT, version_path)): + # recreate version if original image was updated + version_path = _version_generator(_url_to_path(str(source)), version_prefix, force=True) + context[self.var_name] = FileObject(version_path) + except: + context[self.var_name] = "" + return '' + + +def version_object(parser, token): + """ + Returns a context variable 'version_object'. + {% version_object field_name version_prefix %} + + Use {% version_object my_image 'medium' %} in order to retrieve the medium + version of an Image stored in a field name my_image. + Use {% version_object my_image 'medium' as var %} in order to use 'var' as + your context variable. + + version_prefix can be a string or a variable. if version_prefix is a string, use quotes. + """ + + try: + #tag, src, version_prefix = token.split_contents() + tag, arg = token.contents.split(None, 1) + except: + raise TemplateSyntaxError, "%s tag requires arguments" % token.contents.split()[0] + m = re.search(r'(.*?) (.*?) as (\w+)', arg) + if not m: + raise TemplateSyntaxError, "%r tag had invalid arguments" % tag + src, version_prefix, var_name = m.groups() + if (version_prefix[0] == version_prefix[-1] and version_prefix[0] in ('"', "'")) and version_prefix.lower()[1:-1] not in VERSIONS: + raise TemplateSyntaxError, "%s tag received bad version_prefix %s" % (tag, version_prefix) + return VersionObjectNode(src, version_prefix, var_name) + + +class VersionSettingNode(Node): + def __init__(self, version_prefix): + if (version_prefix[0] == version_prefix[-1] and version_prefix[0] in ('"', "'")): + self.version_prefix = version_prefix[1:-1] + else: + self.version_prefix = None + self.version_prefix_var = Variable(version_prefix) + + def render(self, context): + if self.version_prefix: + version_prefix = self.version_prefix + else: + try: + version_prefix = self.version_prefix_var.resolve(context) + except VariableDoesNotExist: + return None + context['version_setting'] = VERSIONS[version_prefix] + return '' + + +def version_setting(parser, token): + """ + Get Information about a version setting. + """ + + try: + tag, version_prefix = token.split_contents() + except: + raise TemplateSyntaxError, "%s tag requires 1 argument" % token.contents.split()[0] + if (version_prefix[0] == version_prefix[-1] and version_prefix[0] in ('"', "'")) and version_prefix.lower()[1:-1] not in VERSIONS: + raise TemplateSyntaxError, "%s tag received bad version_prefix %s" % (tag, version_prefix) + return VersionSettingNode(version_prefix) + + +register.tag(version) +register.tag(version_object) +register.tag(version_setting) + + diff --git a/apps/filebrowser/templatetags/__init__.py b/apps/filebrowser/templatetags/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/apps/filebrowser/templatetags/fb_tags.py b/apps/filebrowser/templatetags/fb_tags.py new file mode 100644 index 00000000..f1e968d0 --- /dev/null +++ b/apps/filebrowser/templatetags/fb_tags.py @@ -0,0 +1,133 @@ +# coding: utf-8 + +from django import template +from django.utils.encoding import smart_unicode +from django.utils.safestring import mark_safe + +from filebrowser.fb_settings import SELECT_FORMATS + +register = template.Library() + +@register.inclusion_tag('filebrowser/include/_response.html', takes_context=True) +def query_string(context, add=None, remove=None): + """ + Allows the addition and removal of query string parameters. + + _response.html is just {{ response }} + + Usage: + http://www.url.com/{% query_string "param_to_add=value, param_to_add=value" "param_to_remove, params_to_remove" %} + http://www.url.com/{% query_string "" "filter" %}filter={{new_filter}} + http://www.url.com/{% query_string "sort=value" "sort" %} + """ + # Written as an inclusion tag to simplify getting the context. + add = string_to_dict(add) + remove = string_to_list(remove) + params = context['query'].copy() + response = get_query_string(params, add, remove) + return {'response': response } + + +def query_helper(query, add=None, remove=None): + """ + Helper Function for use within views. + """ + add = string_to_dict(add) + remove = string_to_list(remove) + params = query.copy() + return get_query_string(params, add, remove) + + +def get_query_string(p, new_params=None, remove=None): + """ + Add and remove query parameters. From `django.contrib.admin`. + """ + if new_params is None: new_params = {} + if remove is None: remove = [] + for r in remove: + for k in p.keys(): + if k.startswith(r): + del p[k] + for k, v in new_params.items(): + if k in p and v is None: + del p[k] + elif v is not None: + p[k] = v + return mark_safe('?' + '&'.join([u'%s=%s' % (k, v) for k, v in p.items()]).replace(' ', '%20')) + + +def string_to_dict(string): + """ + Usage:: + + {{ url|thumbnail:"width=10,height=20" }} + {{ url|thumbnail:"width=10" }} + {{ url|thumbnail:"height=20" }} + """ + kwargs = {} + if string: + string = str(string) + if ',' not in string: + # ensure at least one ',' + string += ',' + for arg in string.split(','): + arg = arg.strip() + if arg == '': continue + kw, val = arg.split('=', 1) + kwargs[kw] = val + return kwargs + + +def string_to_list(string): + """ + Usage:: + + {{ url|thumbnail:"width,height" }} + """ + args = [] + if string: + string = str(string) + if ',' not in string: + # ensure at least one ',' + string += ',' + for arg in string.split(','): + arg = arg.strip() + if arg == '': continue + args.append(arg) + return args + + +class SelectableNode(template.Node): + def __init__(self, filetype, format): + self.filetype = template.Variable(filetype) + self.format = template.Variable(format) + + def render(self, context): + try: + filetype = self.filetype.resolve(context) + except template.VariableDoesNotExist: + filetype = '' + try: + format = self.format.resolve(context) + except template.VariableDoesNotExist: + format = '' + if filetype and format and filetype in SELECT_FORMATS[format]: + selectable = True + elif filetype and format and filetype not in SELECT_FORMATS[format]: + selectable = False + else: + selectable = True + context['selectable'] = selectable + return '' + + +def selectable(parser, token): + + try: + tag, filetype, format = token.split_contents() + except: + raise TemplateSyntaxError, "%s tag requires 2 arguments" % token.contents.split()[0] + + return SelectableNode(filetype, format) + +register.tag(selectable) diff --git a/apps/filebrowser/templatetags/fb_versions.py b/apps/filebrowser/templatetags/fb_versions.py new file mode 100644 index 00000000..887fd9ea --- /dev/null +++ b/apps/filebrowser/templatetags/fb_versions.py @@ -0,0 +1,171 @@ +# coding: utf-8 + +import os, re +from time import gmtime +from django.template import Library, Node, Variable, VariableDoesNotExist, TemplateSyntaxError +from django.conf import settings +from django.utils.encoding import force_unicode + +# filebrowser imports +from filebrowser.fb_settings import MEDIA_ROOT, MEDIA_URL, VERSIONS +from filebrowser.functions import _url_to_path, _path_to_url, _get_version_path, _version_generator +from filebrowser.base import FileObject + +register = Library() + +class VersionNode(Node): + def __init__(self, src, version_prefix): + self.src = Variable(src) + if (version_prefix[0] == version_prefix[-1] and version_prefix[0] in ('"', "'")): + self.version_prefix = version_prefix[1:-1] + else: + self.version_prefix = None + self.version_prefix_var = Variable(version_prefix) + + def render(self, context): + try: + source = self.src.resolve(context) + except VariableDoesNotExist: + return None + if self.version_prefix: + version_prefix = self.version_prefix + else: + try: + version_prefix = self.version_prefix_var.resolve(context) + except VariableDoesNotExist: + return None + try: + version_path = _get_version_path(_url_to_path(str(source)), version_prefix) + if not os.path.isfile(os.path.join(MEDIA_ROOT, version_path)): + # create version + version_path = _version_generator(_url_to_path(str(source)), version_prefix) + elif os.path.getmtime(os.path.join(MEDIA_ROOT, _url_to_path(str(source)))) > os.path.getmtime(os.path.join(MEDIA_ROOT, version_path)): + # recreate version if original image was updated + version_path = _version_generator(_url_to_path(str(source)), version_prefix, force=True) + return _path_to_url(version_path) + except: + return "" + + +def version(parser, token): + """ + Displaying a version of an existing Image according to the predefined VERSIONS settings (see fb_settings). + {% version field_name version_prefix %} + + Use {% version my_image 'medium' %} in order to display the medium-size + version of an Image stored in a field name my_image. + + version_prefix can be a string or a variable. if version_prefix is a string, use quotes. + """ + + try: + tag, src, version_prefix = token.split_contents() + except: + raise TemplateSyntaxError, "%s tag requires 2 arguments" % token.contents.split()[0] + if (version_prefix[0] == version_prefix[-1] and version_prefix[0] in ('"', "'")) and version_prefix.lower()[1:-1] not in VERSIONS: + raise TemplateSyntaxError, "%s tag received bad version_prefix %s" % (tag, version_prefix) + return VersionNode(src, version_prefix) + + +class VersionObjectNode(Node): + def __init__(self, src, version_prefix, var_name): + self.var_name = var_name + self.src = Variable(src) + if (version_prefix[0] == version_prefix[-1] and version_prefix[0] in ('"', "'")): + self.version_prefix = version_prefix[1:-1] + else: + self.version_prefix = None + self.version_prefix_var = Variable(version_prefix) + + def render(self, context): + try: + source = self.src.resolve(context) + except VariableDoesNotExist: + return None + if self.version_prefix: + version_prefix = self.version_prefix + else: + try: + version_prefix = self.version_prefix_var.resolve(context) + except VariableDoesNotExist: + return None + try: + version_path = _get_version_path(_url_to_path(str(source)), version_prefix) + if not os.path.isfile(os.path.join(MEDIA_ROOT, version_path)): + # create version + version_path = _version_generator(_url_to_path(str(source)), version_prefix) + elif os.path.getmtime(os.path.join(MEDIA_ROOT, _url_to_path(str(source)))) > os.path.getmtime(os.path.join(MEDIA_ROOT, version_path)): + # recreate version if original image was updated + version_path = _version_generator(_url_to_path(str(source)), version_prefix, force=True) + context[self.var_name] = FileObject(version_path) + except: + context[self.var_name] = "" + return '' + + +def version_object(parser, token): + """ + Returns a context variable 'version_object'. + {% version_object field_name version_prefix %} + + Use {% version_object my_image 'medium' %} in order to retrieve the medium + version of an Image stored in a field name my_image. + Use {% version_object my_image 'medium' as var %} in order to use 'var' as + your context variable. + + version_prefix can be a string or a variable. if version_prefix is a string, use quotes. + """ + + try: + #tag, src, version_prefix = token.split_contents() + tag, arg = token.contents.split(None, 1) + except: + raise TemplateSyntaxError, "%s tag requires arguments" % token.contents.split()[0] + m = re.search(r'(.*?) (.*?) as (\w+)', arg) + if not m: + raise TemplateSyntaxError, "%r tag had invalid arguments" % tag + src, version_prefix, var_name = m.groups() + if (version_prefix[0] == version_prefix[-1] and version_prefix[0] in ('"', "'")) and version_prefix.lower()[1:-1] not in VERSIONS: + raise TemplateSyntaxError, "%s tag received bad version_prefix %s" % (tag, version_prefix) + return VersionObjectNode(src, version_prefix, var_name) + + +class VersionSettingNode(Node): + def __init__(self, version_prefix): + if (version_prefix[0] == version_prefix[-1] and version_prefix[0] in ('"', "'")): + self.version_prefix = version_prefix[1:-1] + else: + self.version_prefix = None + self.version_prefix_var = Variable(version_prefix) + + def render(self, context): + if self.version_prefix: + version_prefix = self.version_prefix + else: + try: + version_prefix = self.version_prefix_var.resolve(context) + except VariableDoesNotExist: + return None + context['version_setting'] = VERSIONS[version_prefix] + return '' + + +def version_setting(parser, token): + """ + Get Information about a version setting. + """ + + try: + tag, version_prefix = token.split_contents() + except: + raise TemplateSyntaxError, "%s tag requires 1 argument" % token.contents.split()[0] + if (version_prefix[0] == version_prefix[-1] and version_prefix[0] in ('"', "'")) and version_prefix.lower()[1:-1] not in VERSIONS: + raise TemplateSyntaxError, "%s tag received bad version_prefix %s" % (tag, version_prefix) + return VersionSettingNode(version_prefix) + + +register.tag(version) +register.tag(version_object) +register.tag(version_setting) + + diff --git a/apps/filebrowser/urls.py b/apps/filebrowser/urls.py new file mode 100644 index 00000000..5cfc2596 --- /dev/null +++ b/apps/filebrowser/urls.py @@ -0,0 +1,16 @@ +from django.conf.urls.defaults import * + +urlpatterns = patterns('', + + # filebrowser urls + url(r'^browse/$', 'filebrowser.views.browse', name="fb_browse"), + url(r'^mkdir/', 'filebrowser.views.mkdir', name="fb_mkdir"), + url(r'^upload/', 'filebrowser.views.upload', name="fb_upload"), + url(r'^rename/$', 'filebrowser.views.rename', name="fb_rename"), + url(r'^delete/$', 'filebrowser.views.delete', name="fb_delete"), + url(r'^versions/$', 'filebrowser.views.versions', name="fb_versions"), + + url(r'^check_file/$', 'filebrowser.views._check_file', name="fb_check"), + url(r'^upload_file/$', 'filebrowser.views._upload_file', name="fb_do_upload"), + +) diff --git a/apps/filebrowser/views.py b/apps/filebrowser/views.py new file mode 100644 index 00000000..0976f11e --- /dev/null +++ b/apps/filebrowser/views.py @@ -0,0 +1,432 @@ +# coding: utf-8 + +# general imports +import os, re +from time import gmtime, strftime + +# django imports +from django.shortcuts import render_to_response, HttpResponse +from django.template import RequestContext as Context +from django.http import HttpResponseRedirect +from django.contrib.admin.views.decorators import staff_member_required +from django.views.decorators.cache import never_cache +from django.utils.translation import ugettext as _ +from django.conf import settings +from django import forms +from django.core.urlresolvers import reverse +from django.core.exceptions import ImproperlyConfigured +from django.dispatch import Signal + +# filebrowser imports +from filebrowser.fb_settings import * +from filebrowser.functions import _url_to_path, _path_to_url, _sort_by_attr, _get_path, _get_file, _get_version_path, _get_breadcrumbs, _get_filterdate, _get_settings_var, _handle_file_upload, _get_file_type, _url_join, _convert_filename +from filebrowser.templatetags.fb_tags import query_helper +from filebrowser.base import FileObject +from filebrowser.decorators import flash_login_required + +# Precompile regular expressions +filter_re = [] +for exp in EXCLUDE: + filter_re.append(re.compile(exp)) +for k,v in VERSIONS.iteritems(): + exp = (r'_%s.(%s)') % (k, '|'.join(EXTENSION_LIST)) + filter_re.append(re.compile(exp)) + + +def browse(request): + """ + Browse Files/Directories. + """ + + # QUERY / PATH CHECK + query = request.GET + path = _get_path(query.get('dir', '')) + directory = _get_path('') + + if path is None: + msg = _('Directory/File does not exist.') + request.user.message_set.create(message=msg) + if directory is None: + # The DIRECTORY does not exist, raise an error to prevent eternal redirecting. + raise ImproperlyConfigured, _("Error finding upload directory. Maybe it does not exist?") + redirect_url = reverse("fb_browse") + query_helper(query, "", "dir") + return HttpResponseRedirect(redirect_url) + abs_path = os.path.join(MEDIA_ROOT, DIRECTORY, path) + + # INITIAL VARIABLES + results_var = {'results_total': 0, 'results_current': 0, 'delete_total': 0, 'images_total': 0, 'select_total': 0 } + counter = {} + for k,v in EXTENSIONS.iteritems(): + counter[k] = 0 + + dir_list = os.listdir(abs_path) + files = [] + for file in dir_list: + + # EXCLUDE FILES MATCHING VERSIONS_PREFIX OR ANY OF THE EXCLUDE PATTERNS + filtered = file.startswith('.') + for re_prefix in filter_re: + if re_prefix.search(file): + filtered = True + if filtered: + continue + results_var['results_total'] += 1 + + # CREATE FILEOBJECT + fileobject = FileObject(os.path.join(DIRECTORY, path, file)) + + # FILTER / SEARCH + append = False + if fileobject.filetype == request.GET.get('filter_type', fileobject.filetype) and _get_filterdate(request.GET.get('filter_date', ''), fileobject.date): + append = True + if request.GET.get('q') and not re.compile(request.GET.get('q').lower(), re.M).search(file.lower()): + append = False + + # APPEND FILE_LIST + if append: + files.append(fileobject) + results_var['results_current'] += 1 + # COUNTER/RESULTS + if fileobject.filetype == 'Image': + results_var['images_total'] += 1 + if fileobject.filetype != 'Folder': + results_var['delete_total'] += 1 + elif fileobject.filetype == 'Folder' and fileobject.is_empty: + results_var['delete_total'] += 1 + if query.get('type') and query.get('type') in SELECT_FORMATS and fileobject.filetype in SELECT_FORMATS[query.get('type')]: + results_var['select_total'] += 1 + elif not query.get('type'): + results_var['select_total'] += 1 + + # COUNTER/RESULTS + if fileobject.filetype: + counter[fileobject.filetype] += 1 + + # SORTING + files = _sort_by_attr(files, request.GET.get('o', 'date')) + if request.GET.get('ot') == "desc": + files.reverse() + + return render_to_response('filebrowser/index.html', { + 'dir': path, + 'files': files, + 'results_var': results_var, + 'counter': counter, + 'query': query, + 'title': _(u'FileBrowser'), + 'settings_var': _get_settings_var(), + 'breadcrumbs': _get_breadcrumbs(query, path, ''), + }, context_instance=Context(request)) +browse = staff_member_required(never_cache(browse)) + + +# mkdir signals +filebrowser_pre_createdir = Signal(providing_args=["path", "dirname"]) +filebrowser_post_createdir = Signal(providing_args=["path", "dirname"]) + +def mkdir(request): + """ + Make Directory. + """ + + from filebrowser.forms import MakeDirForm + + # QUERY / PATH CHECK + query = request.GET + path = _get_path(query.get('dir', '')) + if path is None: + msg = _('Directory/File does not exist.') + request.user.message_set.create(message=msg) + return HttpResponseRedirect(reverse("fb_browse")) + abs_path = os.path.join(MEDIA_ROOT, DIRECTORY, path) + + if request.method == 'POST': + form = MakeDirForm(abs_path, request.POST) + if form.is_valid(): + server_path = os.path.join(abs_path, form.cleaned_data['dir_name']) + try: + # PRE CREATE SIGNAL + filebrowser_pre_createdir.send(sender=request, path=path, dirname=form.cleaned_data['dir_name']) + # CREATE FOLDER + os.mkdir(server_path) + os.chmod(server_path, 0775) + # POST CREATE SIGNAL + filebrowser_post_createdir.send(sender=request, path=path, dirname=form.cleaned_data['dir_name']) + # MESSAGE & REDIRECT + msg = _('The Folder %s was successfully created.') % (form.cleaned_data['dir_name']) + request.user.message_set.create(message=msg) + # on redirect, sort by date desc to see the new directory on top of the list + # remove filter in order to actually _see_ the new folder + redirect_url = reverse("fb_browse") + query_helper(query, "ot=desc,o=date", "ot,o,filter_type,filter_date,q") + return HttpResponseRedirect(redirect_url) + except OSError, (errno, strerror): + if errno == 13: + form.errors['dir_name'] = forms.util.ErrorList([_('Permission denied.')]) + else: + form.errors['dir_name'] = forms.util.ErrorList([_('Error creating directory.')]) + else: + form = MakeDirForm(abs_path) + + return render_to_response('filebrowser/makedir.html', { + 'form': form, + 'query': query, + 'title': _(u'New Folder'), + 'settings_var': _get_settings_var(), + 'breadcrumbs': _get_breadcrumbs(query, path, _(u'New Folder')), + }, context_instance=Context(request)) +mkdir = staff_member_required(never_cache(mkdir)) + + +def upload(request): + """ + Multipe File Upload. + """ + + from django.http import parse_cookie + + # QUERY / PATH CHECK + query = request.GET + path = _get_path(query.get('dir', '')) + if path is None: + msg = _('Directory/File does not exist.') + request.user.message_set.create(message=msg) + return HttpResponseRedirect(reverse("fb_browse")) + abs_path = os.path.join(MEDIA_ROOT, DIRECTORY, path) + + # SESSION (used for flash-uploading) + cookie_dict = parse_cookie(request.META.get('HTTP_COOKIE', '')) + engine = __import__(settings.SESSION_ENGINE, {}, {}, ['']) + session_key = cookie_dict.get(settings.SESSION_COOKIE_NAME, None) + + return render_to_response('filebrowser/upload.html', { + 'query': query, + 'title': _(u'Select files to upload'), + 'settings_var': _get_settings_var(), + 'breadcrumbs': _get_breadcrumbs(query, path, _(u'Upload')), + 'session_key': session_key, + }, context_instance=Context(request)) +upload = staff_member_required(never_cache(upload)) + + +def _check_file(request): + """ + Check if file already exists on the server. + """ + + from django.utils import simplejson + + folder = request.POST.get('folder') + fb_uploadurl_re = re.compile(r'^(%s)' % reverse("fb_upload")) + folder = fb_uploadurl_re.sub('', folder) + + fileArray = {} + if request.method == 'POST': + for k,v in request.POST.items(): + if k != "folder": + v = _convert_filename(v) + if os.path.isfile(os.path.join(MEDIA_ROOT, DIRECTORY, folder, v)): + fileArray[k] = v + + return HttpResponse(simplejson.dumps(fileArray)) + + +# upload signals +filebrowser_pre_upload = Signal(providing_args=["path", "file"]) +filebrowser_post_upload = Signal(providing_args=["path", "file"]) + +def _upload_file(request): + """ + Upload file to the server. + """ + + from django.core.files.move import file_move_safe + + if request.method == 'POST': + folder = request.POST.get('folder') + fb_uploadurl_re = re.compile(r'^(%s)' % reverse("fb_upload")) + folder = fb_uploadurl_re.sub('', folder) + abs_path = os.path.join(MEDIA_ROOT, DIRECTORY, folder) + if request.FILES: + filedata = request.FILES['Filedata'] + filedata.name = _convert_filename(filedata.name) + # PRE UPLOAD SIGNAL + filebrowser_pre_upload.send(sender=request, path=request.POST.get('folder'), file=filedata) + # HANDLE UPLOAD + uploadedfile = _handle_file_upload(abs_path, filedata) + # MOVE UPLOADED FILE + # if file already exists + if os.path.isfile(os.path.join(MEDIA_ROOT, DIRECTORY, folder, filedata.name)): + old_file = os.path.join(abs_path, filedata.name) + new_file = os.path.join(abs_path, uploadedfile) + file_move_safe(new_file, old_file) + # POST UPLOAD SIGNAL + filebrowser_post_upload.send(sender=request, path=request.POST.get('folder'), file=FileObject(os.path.join(DIRECTORY, folder, filedata.name))) + return HttpResponse('True') +_upload_file = flash_login_required(_upload_file) + + +# delete signals +filebrowser_pre_delete = Signal(providing_args=["path", "filename"]) +filebrowser_post_delete = Signal(providing_args=["path", "filename"]) + +def delete(request): + """ + Delete existing File/Directory. + + When trying to delete a Directory, the Directory has to be empty. + """ + + # QUERY / PATH CHECK + query = request.GET + path = _get_path(query.get('dir', '')) + filename = _get_file(query.get('dir', ''), query.get('filename', '')) + if path is None or filename is None: + msg = _('Directory/File does not exist.') + request.user.message_set.create(message=msg) + return HttpResponseRedirect(reverse("fb_browse")) + abs_path = os.path.join(MEDIA_ROOT, DIRECTORY, path) + + msg = "" + if request.GET: + if request.GET.get('filetype') != "Folder": + relative_server_path = os.path.join(DIRECTORY, path, filename) + try: + # PRE DELETE SIGNAL + filebrowser_pre_delete.send(sender=request, path=path, filename=filename) + # DELETE IMAGE VERSIONS/THUMBNAILS + for version in VERSIONS: + try: + os.unlink(os.path.join(MEDIA_ROOT, _get_version_path(relative_server_path, version))) + except: + pass + # DELETE FILE + os.unlink(os.path.join(abs_path, filename)) + # POST DELETE SIGNAL + filebrowser_post_delete.send(sender=request, path=path, filename=filename) + # MESSAGE & REDIRECT + msg = _('The file %s was successfully deleted.') % (filename.lower()) + request.user.message_set.create(message=msg) + redirect_url = reverse("fb_browse") + query_helper(query, "", "filename,filetype") + return HttpResponseRedirect(redirect_url) + except OSError: + # todo: define error message + msg = OSError + else: + try: + # PRE DELETE SIGNAL + filebrowser_pre_delete.send(sender=request, path=path, filename=filename) + # DELETE FOLDER + os.rmdir(os.path.join(abs_path, filename)) + # POST DELETE SIGNAL + filebrowser_post_delete.send(sender=request, path=path, filename=filename) + # MESSAGE & REDIRECT + msg = _('The directory %s was successfully deleted.') % (filename.lower()) + request.user.message_set.create(message=msg) + redirect_url = reverse("fb_browse") + query_helper(query, "", "filename,filetype") + return HttpResponseRedirect(redirect_url) + except OSError: + # todo: define error message + msg = OSError + + if msg: + request.user.message_set.create(message=msg) + + return render_to_response('filebrowser/index.html', { + 'dir': dir_name, + 'file': request.GET.get('filename', ''), + 'query': query, + 'settings_var': _get_settings_var(), + 'breadcrumbs': _get_breadcrumbs(query, dir_name, ''), + }, context_instance=Context(request)) +delete = staff_member_required(never_cache(delete)) + + +# delete signals +filebrowser_pre_rename = Signal(providing_args=["path", "filename"]) +filebrowser_post_rename = Signal(providing_args=["path", "filename"]) + +def rename(request): + """ + Rename existing File/Directory. + + Includes renaming existing Image Versions/Thumbnails. + """ + + from filebrowser.forms import RenameForm + + # QUERY / PATH CHECK + query = request.GET + path = _get_path(query.get('dir', '')) + filename = _get_file(query.get('dir', ''), query.get('filename', '')) + if path is None or filename is None: + msg = _('Directory/File does not exist.') + request.user.message_set.create(message=msg) + return HttpResponseRedirect(reverse("fb_browse")) + abs_path = os.path.join(MEDIA_ROOT, DIRECTORY, path) + file_extension = os.path.splitext(filename)[1].lower() + + if request.method == 'POST': + form = RenameForm(abs_path, file_extension, request.POST) + if form.is_valid(): + relative_server_path = os.path.join(DIRECTORY, path, filename) + new_relative_server_path = os.path.join(DIRECTORY, path, form.cleaned_data['name'] + file_extension) + try: + # PRE RENAME SIGNAL + filebrowser_pre_delete.send(sender=request, path=path, filename=filename) + # DELETE IMAGE VERSIONS/THUMBNAILS + # regenerating versions/thumbs will be done automatically + for version in VERSIONS: + try: + os.unlink(os.path.join(MEDIA_ROOT, _get_version_path(relative_server_path, version))) + except: + pass + # RENAME ORIGINAL + os.rename(os.path.join(MEDIA_ROOT, relative_server_path), os.path.join(MEDIA_ROOT, new_relative_server_path)) + # POST RENAME SIGNAL + filebrowser_post_delete.send(sender=request, path=path, filename=filename) + # MESSAGE & REDIRECT + msg = _('Renaming was successful.') + request.user.message_set.create(message=msg) + redirect_url = reverse("fb_browse") + query_helper(query, "", "filename") + return HttpResponseRedirect(redirect_url) + except OSError, (errno, strerror): + form.errors['name'] = forms.util.ErrorList([_('Error.')]) + else: + form = RenameForm(abs_path, file_extension) + + return render_to_response('filebrowser/rename.html', { + 'form': form, + 'query': query, + 'file_extension': file_extension, + 'title': _(u'Rename "%s"') % filename, + 'settings_var': _get_settings_var(), + 'breadcrumbs': _get_breadcrumbs(query, path, _(u'Rename')), + }, context_instance=Context(request)) +rename = staff_member_required(never_cache(rename)) + + +def versions(request): + """ + Show all Versions for an Image according to ADMIN_VERSIONS. + """ + + # QUERY / PATH CHECK + query = request.GET + path = _get_path(query.get('dir', '')) + filename = _get_file(query.get('dir', ''), query.get('filename', '')) + if path is None or filename is None: + msg = _('Directory/File does not exist.') + request.user.message_set.create(message=msg) + return HttpResponseRedirect(reverse("fb_browse")) + abs_path = os.path.join(MEDIA_ROOT, DIRECTORY, path) + + return render_to_response('filebrowser/versions.html', { + 'original': _path_to_url(os.path.join(DIRECTORY, path, filename)), + 'query': query, + 'title': _(u'Versions for "%s"') % filename, + 'settings_var': _get_settings_var(), + 'breadcrumbs': _get_breadcrumbs(query, path, _(u'Versions for "%s"') % filename), + }, context_instance=Context(request)) +versions = staff_member_required(never_cache(versions)) + + diff --git a/apps/sorl/__init__.py b/apps/sorl/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/apps/sorl/thumbnail/__init__.py b/apps/sorl/thumbnail/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/apps/sorl/thumbnail/base.py b/apps/sorl/thumbnail/base.py new file mode 100755 index 00000000..24f4d973 --- /dev/null +++ b/apps/sorl/thumbnail/base.py @@ -0,0 +1,285 @@ +import os +from os.path import isfile, isdir, getmtime, dirname, splitext, getsize +from tempfile import mkstemp +from shutil import copyfile + +from PIL import Image + +from sorl.thumbnail import defaults +from sorl.thumbnail.processors import get_valid_options, dynamic_import + + +class ThumbnailException(Exception): + # Stop Django templates from choking if something goes wrong. + silent_variable_failure = True + + +class Thumbnail(object): + imagemagick_file_types = defaults.IMAGEMAGICK_FILE_TYPES + + def __init__(self, source, requested_size, opts=None, quality=85, + dest=None, convert_path=defaults.CONVERT, + wvps_path=defaults.WVPS, processors=None): + # Paths to external commands + self.convert_path = convert_path + self.wvps_path = wvps_path + # Absolute paths to files + self.source = source + self.dest = dest + + # Thumbnail settings + try: + x, y = [int(v) for v in requested_size] + except (TypeError, ValueError): + raise TypeError('Thumbnail received invalid value for size ' + 'argument: %s' % repr(requested_size)) + else: + self.requested_size = (x, y) + try: + self.quality = int(quality) + if not 0 < quality <= 100: + raise ValueError + except (TypeError, ValueError): + raise TypeError('Thumbnail received invalid value for quality ' + 'argument: %r' % quality) + + # Processors + if processors is None: + processors = dynamic_import(defaults.PROCESSORS) + self.processors = processors + + # Handle old list format for opts. + opts = opts or {} + if isinstance(opts, (list, tuple)): + opts = dict([(opt, None) for opt in opts]) + + # Set Thumbnail opt(ion)s + VALID_OPTIONS = get_valid_options(processors) + for opt in opts: + if not opt in VALID_OPTIONS: + raise TypeError('Thumbnail received an invalid option: %s' + % opt) + self.opts = opts + + if self.dest is not None: + self.generate() + + def generate(self): + """ + Generates the thumbnail if it doesn't exist or if the file date of the + source file is newer than that of the thumbnail. + """ + # Ensure dest(ination) attribute is set + if not self.dest: + raise ThumbnailException("No destination filename set.") + + if not isinstance(self.dest, basestring): + # We'll assume dest is a file-like instance if it exists but isn't + # a string. + self._do_generate() + elif not isfile(self.dest) or (self.source_exists and + getmtime(self.source) > getmtime(self.dest)): + + # Ensure the directory exists + directory = dirname(self.dest) + if directory and not isdir(directory): + os.makedirs(directory) + + self._do_generate() + + def _check_source_exists(self): + """ + Ensure the source file exists. If source is not a string then it is + assumed to be a file-like instance which "exists". + """ + if not hasattr(self, '_source_exists'): + self._source_exists = (self.source and + (not isinstance(self.source, basestring) or + isfile(self.source))) + return self._source_exists + source_exists = property(_check_source_exists) + + def _get_source_filetype(self): + """ + Set the source filetype. First it tries to use magic and + if import error it will just use the extension + """ + if not hasattr(self, '_source_filetype'): + if not isinstance(self.source, basestring): + # Assuming a file-like object - we won't know it's type. + return None + try: + import magic + except ImportError: + self._source_filetype = splitext(self.source)[1].lower().\ + replace('.', '').replace('jpeg', 'jpg') + else: + m = magic.open(magic.MAGIC_NONE) + m.load() + ftype = m.file(self.source) + if ftype.find('Microsoft Office Document') != -1: + self._source_filetype = 'doc' + elif ftype.find('PDF document') != -1: + self._source_filetype = 'pdf' + elif ftype.find('JPEG') != -1: + self._source_filetype = 'jpg' + else: + self._source_filetype = ftype + return self._source_filetype + source_filetype = property(_get_source_filetype) + + # data property is the image data of the (generated) thumbnail + def _get_data(self): + if not hasattr(self, '_data'): + try: + self._data = Image.open(self.dest) + except IOError, detail: + raise ThumbnailException(detail) + return self._data + + def _set_data(self, im): + self._data = im + data = property(_get_data, _set_data) + + # source_data property is the image data from the source file + def _get_source_data(self): + if not hasattr(self, '_source_data'): + if not self.source_exists: + raise ThumbnailException("Source file: '%s' does not exist." % + self.source) + if self.source_filetype == 'doc': + self._convert_wvps(self.source) + elif self.source_filetype in self.imagemagick_file_types: + self._convert_imagemagick(self.source) + else: + self.source_data = self.source + return self._source_data + + def _set_source_data(self, image): + if isinstance(image, Image.Image): + self._source_data = image + else: + try: + self._source_data = Image.open(image) + except IOError, detail: + raise ThumbnailException("%s: %s" % (detail, image)) + except MemoryError: + raise ThumbnailException("Memory Error: %s" % image) + source_data = property(_get_source_data, _set_source_data) + + def _convert_wvps(self, filename): + try: + import subprocess + except ImportError: + raise ThumbnailException('wvps requires the Python 2.4 subprocess ' + 'package.') + tmp = mkstemp('.ps')[1] + try: + p = subprocess.Popen((self.wvps_path, filename, tmp), + stdout=subprocess.PIPE) + p.wait() + except OSError, detail: + os.remove(tmp) + raise ThumbnailException('wvPS error: %s' % detail) + self._convert_imagemagick(tmp) + os.remove(tmp) + + def _convert_imagemagick(self, filename): + try: + import subprocess + except ImportError: + raise ThumbnailException('imagemagick requires the Python 2.4 ' + 'subprocess package.') + tmp = mkstemp('.png')[1] + if 'crop' in self.opts or 'autocrop' in self.opts: + x, y = [d * 3 for d in self.requested_size] + else: + x, y = self.requested_size + try: + p = subprocess.Popen((self.convert_path, '-size', '%sx%s' % (x, y), + '-antialias', '-colorspace', 'rgb', '-format', 'PNG24', + '%s[0]' % filename, tmp), stdout=subprocess.PIPE) + p.wait() + except OSError, detail: + os.remove(tmp) + raise ThumbnailException('ImageMagick error: %s' % detail) + self.source_data = tmp + os.remove(tmp) + + def _do_generate(self): + """ + Generates the thumbnail image. + + This a semi-private method so it isn't directly available to template + authors if this object is passed to the template context. + """ + im = self.source_data + + for processor in self.processors: + im = processor(im, self.requested_size, self.opts) + + self.data = im + + filelike = not isinstance(self.dest, basestring) + if not filelike: + dest_extension = os.path.splitext(self.dest)[1][1:] + format = None + else: + dest_extension = None + format = 'JPEG' + if (self.source_filetype and self.source_filetype == dest_extension and + self.source_data == self.data): + copyfile(self.source, self.dest) + else: + try: + im.save(self.dest, format=format, quality=self.quality, + optimize=1) + except IOError: + # Try again, without optimization (PIL can't optimize an image + # larger than ImageFile.MAXBLOCK, which is 64k by default) + try: + im.save(self.dest, format=format, quality=self.quality) + except IOError, detail: + raise ThumbnailException(detail) + + if filelike: + self.dest.seek(0) + + # Some helpful methods + + def _dimension(self, axis): + if self.dest is None: + return None + return self.data.size[axis] + + def width(self): + return self._dimension(0) + + def height(self): + return self._dimension(1) + + def _get_filesize(self): + if self.dest is None: + return None + if not hasattr(self, '_filesize'): + self._filesize = getsize(self.dest) + return self._filesize + filesize = property(_get_filesize) + + def _source_dimension(self, axis): + if self.source_filetype in ['pdf', 'doc']: + return None + else: + return self.source_data.size[axis] + + def source_width(self): + return self._source_dimension(0) + + def source_height(self): + return self._source_dimension(1) + + def _get_source_filesize(self): + if not hasattr(self, '_source_filesize'): + self._source_filesize = getsize(self.source) + return self._source_filesize + source_filesize = property(_get_source_filesize) diff --git a/apps/sorl/thumbnail/defaults.py b/apps/sorl/thumbnail/defaults.py new file mode 100644 index 00000000..b4ae142b --- /dev/null +++ b/apps/sorl/thumbnail/defaults.py @@ -0,0 +1,15 @@ +DEBUG = False +BASEDIR = '' +SUBDIR = '' +PREFIX = '' +QUALITY = 85 +CONVERT = '/usr/bin/convert' +WVPS = '/usr/bin/wvPS' +EXTENSION = 'jpg' +PROCESSORS = ( + 'sorl.thumbnail.processors.colorspace', + 'sorl.thumbnail.processors.autocrop', + 'sorl.thumbnail.processors.scale_and_crop', + 'sorl.thumbnail.processors.filters', +) +IMAGEMAGICK_FILE_TYPES = ('eps', 'pdf', 'psd') diff --git a/apps/sorl/thumbnail/fields.py b/apps/sorl/thumbnail/fields.py new file mode 100644 index 00000000..1b527434 --- /dev/null +++ b/apps/sorl/thumbnail/fields.py @@ -0,0 +1,228 @@ +from UserDict import DictMixin +try: + from cStringIO import StringIO +except ImportError: + from StringIO import StringIO + +from django.db.models.fields.files import ImageField, ImageFieldFile +from django.core.files.base import ContentFile +from django.utils.safestring import mark_safe +from django.utils.html import escape + +from sorl.thumbnail.base import Thumbnail +from sorl.thumbnail.main import DjangoThumbnail, build_thumbnail_name +from sorl.thumbnail.utils import delete_thumbnails + + +REQUIRED_ARGS = ('size',) +ALL_ARGS = { + 'size': 'requested_size', + 'options': 'opts', + 'quality': 'quality', + 'basedir': 'basedir', + 'subdir': 'subdir', + 'prefix': 'prefix', + 'extension': 'extension', +} +BASE_ARGS = { + 'size': 'requested_size', + 'options': 'opts', + 'quality': 'quality', +} +TAG_HTML = '' + + +class ThumbsDict(object, DictMixin): + def __init__(self, descriptor): + super(ThumbsDict, self).__init__() + self.descriptor = descriptor + + def keys(self): + return self.descriptor.field.extra_thumbnails.keys() + + +class LazyThumbs(ThumbsDict): + def __init__(self, *args, **kwargs): + super(LazyThumbs, self).__init__(*args, **kwargs) + self.cached = {} + + def __getitem__(self, key): + thumb = self.cached.get(key) + if not thumb: + args = self.descriptor.field.extra_thumbnails[key] + thumb = self.descriptor._build_thumbnail(args) + self.cached[key] = thumb + return thumb + + def keys(self): + return self.descriptor.field.extra_thumbnails.keys() + + +class ThumbTags(ThumbsDict): + def __getitem__(self, key): + thumb = self.descriptor.extra_thumbnails[key] + return self.descriptor._build_thumbnail_tag(thumb) + + +class BaseThumbnailFieldFile(ImageFieldFile): + def _build_thumbnail(self, args): + # Build the DjangoThumbnail kwargs. + kwargs = {} + for k, v in args.items(): + kwargs[ALL_ARGS[k]] = v + # Build the destination filename and return the thumbnail. + name_kwargs = {} + for key in ['size', 'options', 'quality', 'basedir', 'subdir', + 'prefix', 'extension']: + name_kwargs[key] = args.get(key) + source = getattr(self.instance, self.field.name) + dest = build_thumbnail_name(source.name, **name_kwargs) + return DjangoThumbnail(source, relative_dest=dest, **kwargs) + + def _build_thumbnail_tag(self, thumb): + opts = dict(src=escape(thumb), width=thumb.width(), + height=thumb.height()) + return mark_safe(self.field.thumbnail_tag % opts) + + def _get_extra_thumbnails(self): + if self.field.extra_thumbnails is None: + return None + if not hasattr(self, '_extra_thumbnails'): + self._extra_thumbnails = LazyThumbs(self) + return self._extra_thumbnails + extra_thumbnails = property(_get_extra_thumbnails) + + def _get_extra_thumbnails_tag(self): + if self.field.extra_thumbnails is None: + return None + return ThumbTags(self) + extra_thumbnails_tag = property(_get_extra_thumbnails_tag) + + def save(self, *args, **kwargs): + # Optionally generate the thumbnails after the image is saved. + super(BaseThumbnailFieldFile, self).save(*args, **kwargs) + if self.field.generate_on_save: + self.generate_thumbnails() + + def delete(self, *args, **kwargs): + # Delete any thumbnails too (and not just ones defined here in case + # the {% thumbnail %} tag was used or the thumbnail sizes changed). + relative_source_path = getattr(self.instance, self.field.name).name + delete_thumbnails(relative_source_path) + super(BaseThumbnailFieldFile, self).delete(*args, **kwargs) + + def generate_thumbnails(self): + # Getting the thumbs generates them. + if self.extra_thumbnails: + self.extra_thumbnails.values() + + +class ImageWithThumbnailsFieldFile(BaseThumbnailFieldFile): + def _get_thumbnail(self): + return self._build_thumbnail(self.field.thumbnail) + thumbnail = property(_get_thumbnail) + + def _get_thumbnail_tag(self): + return self._build_thumbnail_tag(self.thumbnail) + thumbnail_tag = property(_get_thumbnail_tag) + + def generate_thumbnails(self, *args, **kwargs): + self.thumbnail.generate() + Super = super(ImageWithThumbnailsFieldFile, self) + return Super.generate_thumbnails(*args, **kwargs) + + +class ThumbnailFieldFile(BaseThumbnailFieldFile): + def save(self, name, content, *args, **kwargs): + new_content = StringIO() + # Build the Thumbnail kwargs. + thumbnail_kwargs = {} + for k, argk in BASE_ARGS.items(): + if not k in self.field.thumbnail: + continue + thumbnail_kwargs[argk] = self.field.thumbnail[k] + Thumbnail(source=content, dest=new_content, **thumbnail_kwargs) + new_content = ContentFile(new_content.read()) + super(ThumbnailFieldFile, self).save(name, new_content, *args, + **kwargs) + + def _get_thumbnail_tag(self): + opts = dict(src=escape(self.url), width=self.width, + height=self.height) + return mark_safe(self.field.thumbnail_tag % opts) + thumbnail_tag = property(_get_thumbnail_tag) + + +class BaseThumbnailField(ImageField): + def __init__(self, *args, **kwargs): + # The new arguments for this field aren't explicitly defined so that + # users can still use normal ImageField positional arguments. + self.extra_thumbnails = kwargs.pop('extra_thumbnails', None) + self.thumbnail_tag = kwargs.pop('thumbnail_tag', TAG_HTML) + self.generate_on_save = kwargs.pop('generate_on_save', False) + + super(BaseThumbnailField, self).__init__(*args, **kwargs) + _verify_thumbnail_attrs(self.thumbnail) + if self.extra_thumbnails: + for extra, attrs in self.extra_thumbnails.items(): + name = "%r of 'extra_thumbnails'" + _verify_thumbnail_attrs(attrs, name) + + def south_field_triple(self): + """ + Return a suitable description of this field for South. + """ + # We'll just introspect ourselves, since we inherit. + from south.modelsinspector import introspector + field_class = "django.db.models.fields.files.ImageField" + args, kwargs = introspector(self) + # That's our definition! + return (field_class, args, kwargs) + + +class ImageWithThumbnailsField(BaseThumbnailField): + """ + photo = ImageWithThumbnailsField( + upload_to='uploads', + thumbnail={'size': (80, 80), 'options': ('crop', 'upscale'), + 'extension': 'png'}, + extra_thumbnails={ + 'admin': {'size': (70, 50), 'options': ('sharpen',)}, + } + ) + """ + attr_class = ImageWithThumbnailsFieldFile + + def __init__(self, *args, **kwargs): + self.thumbnail = kwargs.pop('thumbnail', None) + super(ImageWithThumbnailsField, self).__init__(*args, **kwargs) + + +class ThumbnailField(BaseThumbnailField): + """ + avatar = ThumbnailField( + upload_to='uploads', + size=(200, 200), + options=('crop',), + extra_thumbnails={ + 'admin': {'size': (70, 50), 'options': (crop, 'sharpen')}, + } + ) + """ + attr_class = ThumbnailFieldFile + + def __init__(self, *args, **kwargs): + self.thumbnail = {} + for attr in ALL_ARGS: + if attr in kwargs: + self.thumbnail[attr] = kwargs.pop(attr) + super(ThumbnailField, self).__init__(*args, **kwargs) + + +def _verify_thumbnail_attrs(attrs, name="'thumbnail'"): + for arg in REQUIRED_ARGS: + if arg not in attrs: + raise TypeError('Required attr %r missing in %s arg' % (arg, name)) + for attr in attrs: + if attr not in ALL_ARGS: + raise TypeError('Invalid attr %r found in %s arg' % (arg, name)) diff --git a/apps/sorl/thumbnail/main.py b/apps/sorl/thumbnail/main.py new file mode 100644 index 00000000..a59b64f1 --- /dev/null +++ b/apps/sorl/thumbnail/main.py @@ -0,0 +1,115 @@ +import os + +from django.conf import settings +from django.utils.encoding import iri_to_uri, force_unicode + +from sorl.thumbnail.base import Thumbnail +from sorl.thumbnail.processors import dynamic_import +from sorl.thumbnail import defaults + + +def get_thumbnail_setting(setting, override=None): + """ + Get a thumbnail setting from Django settings module, falling back to the + default. + + If override is not None, it will be used instead of the setting. + """ + if override is not None: + return override + if hasattr(settings, 'THUMBNAIL_%s' % setting): + return getattr(settings, 'THUMBNAIL_%s' % setting) + else: + return getattr(defaults, setting) + + +def build_thumbnail_name(source_name, size, options=None, + quality=None, basedir=None, subdir=None, prefix=None, + extension=None): + quality = get_thumbnail_setting('QUALITY', quality) + basedir = get_thumbnail_setting('BASEDIR', basedir) + subdir = get_thumbnail_setting('SUBDIR', subdir) + prefix = get_thumbnail_setting('PREFIX', prefix) + extension = get_thumbnail_setting('EXTENSION', extension) + path, filename = os.path.split(source_name) + basename, ext = os.path.splitext(filename) + name = '%s%s' % (basename, ext.replace(os.extsep, '_')) + size = '%sx%s' % tuple(size) + + # Handle old list format for opts. + options = options or {} + if isinstance(options, (list, tuple)): + options = dict([(opt, None) for opt in options]) + + opts = options.items() + opts.sort() # options are sorted so the filename is consistent + opts = ['%s_' % (v is not None and '%s-%s' % (k, v) or k) + for k, v in opts] + opts = ''.join(opts) + extension = extension and '.%s' % extension + thumbnail_filename = '%s%s_%s_%sq%s%s' % (prefix, name, size, opts, + quality, extension) + return os.path.join(basedir, path, subdir, thumbnail_filename) + + +class DjangoThumbnail(Thumbnail): + imagemagick_file_types = get_thumbnail_setting('IMAGEMAGICK_FILE_TYPES') + + def __init__(self, relative_source, requested_size, opts=None, + quality=None, basedir=None, subdir=None, prefix=None, + relative_dest=None, processors=None, extension=None): + relative_source = force_unicode(relative_source) + # Set the absolute filename for the source file + source = self._absolute_path(relative_source) + + quality = get_thumbnail_setting('QUALITY', quality) + convert_path = get_thumbnail_setting('CONVERT') + wvps_path = get_thumbnail_setting('WVPS') + if processors is None: + processors = dynamic_import(get_thumbnail_setting('PROCESSORS')) + + # Call super().__init__ now to set the opts attribute. generate() won't + # get called because we are not setting the dest attribute yet. + super(DjangoThumbnail, self).__init__(source, requested_size, + opts=opts, quality=quality, convert_path=convert_path, + wvps_path=wvps_path, processors=processors) + + # Get the relative filename for the thumbnail image, then set the + # destination filename + if relative_dest is None: + relative_dest = \ + self._get_relative_thumbnail(relative_source, basedir=basedir, + subdir=subdir, prefix=prefix, + extension=extension) + filelike = not isinstance(relative_dest, basestring) + if filelike: + self.dest = relative_dest + else: + self.dest = self._absolute_path(relative_dest) + + # Call generate now that the dest attribute has been set + self.generate() + + # Set the relative & absolute url to the thumbnail + if not filelike: + self.relative_url = \ + iri_to_uri('/'.join(relative_dest.split(os.sep))) + self.absolute_url = '%s%s' % (settings.MEDIA_URL, + self.relative_url) + + def _get_relative_thumbnail(self, relative_source, + basedir=None, subdir=None, prefix=None, + extension=None): + """ + Returns the thumbnail filename including relative path. + """ + return build_thumbnail_name(relative_source, self.requested_size, + self.opts, self.quality, basedir, subdir, + prefix, extension) + + def _absolute_path(self, filename): + absolute_filename = os.path.join(settings.MEDIA_ROOT, filename) + return absolute_filename.encode(settings.FILE_CHARSET) + + def __unicode__(self): + return self.absolute_url diff --git a/apps/sorl/thumbnail/management/__init__.py b/apps/sorl/thumbnail/management/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/apps/sorl/thumbnail/management/commands/__init__.py b/apps/sorl/thumbnail/management/commands/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/apps/sorl/thumbnail/management/commands/thumbnail_cleanup.py b/apps/sorl/thumbnail/management/commands/thumbnail_cleanup.py new file mode 100644 index 00000000..690c42c7 --- /dev/null +++ b/apps/sorl/thumbnail/management/commands/thumbnail_cleanup.py @@ -0,0 +1,75 @@ +import os +import re +from django.db import models +from django.conf import settings +from django.core.management.base import NoArgsCommand +from sorl.thumbnail.main import get_thumbnail_setting + + +try: + set +except NameError: + from sets import Set as set # For Python 2.3 + +thumb_re = re.compile(r'^%s(.*)_\d{1,}x\d{1,}_[-\w]*q([1-9]\d?|100)\.jpg' % + get_thumbnail_setting('PREFIX')) + + +def get_thumbnail_path(path): + basedir = get_thumbnail_setting('BASEDIR') + subdir = get_thumbnail_setting('SUBDIR') + return os.path.join(basedir, path, subdir) + + +def clean_up(): + paths = set() + for app in models.get_apps(): + model_list = models.get_models(app) + for model in model_list: + for field in model._meta.fields: + if isinstance(field, models.ImageField): + #TODO: take care of date formatted and callable upload_to. + if (not callable(field.upload_to) and + field.upload_to.find("%") == -1): + paths = paths.union((field.upload_to,)) + paths = list(paths) + for path in paths: + thumbnail_path = get_thumbnail_path(path) + try: + file_list = os.listdir(os.path.join(settings.MEDIA_ROOT, + thumbnail_path)) + except OSError: + continue # Dir doesn't exists, no thumbnails here. + for fn in file_list: + m = thumb_re.match(fn) + if m: + # Due to that the naming of thumbnails replaces the dot before + # extension with an underscore we have 2 possibilities for the + # original filename. If either present we do not delete + # suspected thumbnail. + # org_fn is the expected original filename w/o extension + # org_fn_alt is the expected original filename with extension + org_fn = m.group(1) + org_fn_exists = os.path.isfile( + os.path.join(settings.MEDIA_ROOT, path, org_fn)) + + usc_pos = org_fn.rfind("_") + if usc_pos != -1: + org_fn_alt = "%s.%s" % (org_fn[0:usc_pos], + org_fn[usc_pos+1:]) + org_fn_alt_exists = os.path.isfile( + os.path.join(settings.MEDIA_ROOT, path, org_fn_alt)) + else: + org_fn_alt_exists = False + if not org_fn_exists and not org_fn_alt_exists: + del_me = os.path.join(settings.MEDIA_ROOT, + thumbnail_path, fn) + os.remove(del_me) + + +class Command(NoArgsCommand): + help = "Deletes thumbnails that no longer have an original file." + requires_model_validation = False + + def handle_noargs(self, **options): + clean_up() diff --git a/apps/sorl/thumbnail/models.py b/apps/sorl/thumbnail/models.py new file mode 100644 index 00000000..ec325fd5 --- /dev/null +++ b/apps/sorl/thumbnail/models.py @@ -0,0 +1 @@ +# Needs a models.py file so that tests are picked up. diff --git a/apps/sorl/thumbnail/processors.py b/apps/sorl/thumbnail/processors.py new file mode 100644 index 00000000..a6c17416 --- /dev/null +++ b/apps/sorl/thumbnail/processors.py @@ -0,0 +1,130 @@ +from PIL import Image, ImageFilter, ImageChops +from sorl.thumbnail import utils +import re + + +def dynamic_import(names): + imported = [] + for name in names: + # Use rfind rather than rsplit for Python 2.3 compatibility. + lastdot = name.rfind('.') + modname, attrname = name[:lastdot], name[lastdot + 1:] + mod = __import__(modname, {}, {}, ['']) + imported.append(getattr(mod, attrname)) + return imported + + +def get_valid_options(processors): + """ + Returns a list containing unique valid options from a list of processors + in correct order. + """ + valid_options = [] + for processor in processors: + if hasattr(processor, 'valid_options'): + valid_options.extend([opt for opt in processor.valid_options + if opt not in valid_options]) + return valid_options + + +def colorspace(im, requested_size, opts): + if 'bw' in opts and im.mode != "L": + im = im.convert("L") + elif im.mode not in ("L", "RGB", "RGBA"): + im = im.convert("RGB") + return im +colorspace.valid_options = ('bw',) + + +def autocrop(im, requested_size, opts): + if 'autocrop' in opts: + bw = im.convert("1") + bw = bw.filter(ImageFilter.MedianFilter) + # white bg + bg = Image.new("1", im.size, 255) + diff = ImageChops.difference(bw, bg) + bbox = diff.getbbox() + if bbox: + im = im.crop(bbox) + return im +autocrop.valid_options = ('autocrop',) + + +def scale_and_crop(im, requested_size, opts): + x, y = [float(v) for v in im.size] + xr, yr = [float(v) for v in requested_size] + + if 'crop' in opts or 'max' in opts: + r = max(xr / x, yr / y) + else: + r = min(xr / x, yr / y) + + if r < 1.0 or (r > 1.0 and 'upscale' in opts): + im = im.resize((int(x * r), int(y * r)), resample=Image.ANTIALIAS) + + crop = opts.get('crop') or 'crop' in opts + if crop: + # Difference (for x and y) between new image size and requested size. + x, y = [float(v) for v in im.size] + dx, dy = (x - min(x, xr)), (y - min(y, yr)) + if dx or dy: + # Center cropping (default). + ex, ey = dx / 2, dy / 2 + box = [ex, ey, x - ex, y - ey] + # See if an edge cropping argument was provided. + edge_crop = (isinstance(crop, basestring) and + re.match(r'(?:(-?)(\d+))?,(?:(-?)(\d+))?$', crop)) + if edge_crop and filter(None, edge_crop.groups()): + x_right, x_crop, y_bottom, y_crop = edge_crop.groups() + if x_crop: + offset = min(x * int(x_crop) / 100, dx) + if x_right: + box[0] = dx - offset + box[2] = x - offset + else: + box[0] = offset + box[2] = x - (dx - offset) + if y_crop: + offset = min(y * int(y_crop) / 100, dy) + if y_bottom: + box[1] = dy - offset + box[3] = y - offset + else: + box[1] = offset + box[3] = y - (dy - offset) + # See if the image should be "smart cropped". + elif crop == 'smart': + left = top = 0 + right, bottom = x, y + while dx: + slice = min(dx, 10) + l_sl = im.crop((0, 0, slice, y)) + r_sl = im.crop((x - slice, 0, x, y)) + if utils.image_entropy(l_sl) >= utils.image_entropy(r_sl): + right -= slice + else: + left += slice + dx -= slice + while dy: + slice = min(dy, 10) + t_sl = im.crop((0, 0, x, slice)) + b_sl = im.crop((0, y - slice, x, y)) + if utils.image_entropy(t_sl) >= utils.image_entropy(b_sl): + bottom -= slice + else: + top += slice + dy -= slice + box = (left, top, right, bottom) + # Finally, crop the image! + im = im.crop([int(v) for v in box]) + return im +scale_and_crop.valid_options = ('crop', 'upscale', 'max') + + +def filters(im, requested_size, opts): + if 'detail' in opts: + im = im.filter(ImageFilter.DETAIL) + if 'sharpen' in opts: + im = im.filter(ImageFilter.SHARPEN) + return im +filters.valid_options = ('detail', 'sharpen') diff --git a/apps/sorl/thumbnail/templatetags/__init__.py b/apps/sorl/thumbnail/templatetags/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/apps/sorl/thumbnail/templatetags/thumbnail.py b/apps/sorl/thumbnail/templatetags/thumbnail.py new file mode 100755 index 00000000..e7c2177e --- /dev/null +++ b/apps/sorl/thumbnail/templatetags/thumbnail.py @@ -0,0 +1,251 @@ +import re +import math +from django.template import Library, Node, VariableDoesNotExist, \ + TemplateSyntaxError +from sorl.thumbnail.main import DjangoThumbnail, get_thumbnail_setting +from sorl.thumbnail.processors import dynamic_import, get_valid_options +from sorl.thumbnail.utils import split_args + +register = Library() + +size_pat = re.compile(r'(\d+)x(\d+)$') + +filesize_formats = ['k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'] +filesize_long_formats = { + 'k': 'kilo', 'M': 'mega', 'G': 'giga', 'T': 'tera', 'P': 'peta', + 'E': 'exa', 'Z': 'zetta', 'Y': 'yotta', +} + +try: + PROCESSORS = dynamic_import(get_thumbnail_setting('PROCESSORS')) + VALID_OPTIONS = get_valid_options(PROCESSORS) +except: + if get_thumbnail_setting('DEBUG'): + raise + else: + PROCESSORS = [] + VALID_OPTIONS = [] +TAG_SETTINGS = ['quality'] + + +class ThumbnailNode(Node): + def __init__(self, source_var, size_var, opts=None, + context_name=None, **kwargs): + self.source_var = source_var + self.size_var = size_var + self.opts = opts + self.context_name = context_name + self.kwargs = kwargs + + def render(self, context): + # Note that this isn't a global constant because we need to change the + # value for tests. + DEBUG = get_thumbnail_setting('DEBUG') + try: + # A file object will be allowed in DjangoThumbnail class + relative_source = self.source_var.resolve(context) + except VariableDoesNotExist: + if DEBUG: + raise VariableDoesNotExist("Variable '%s' does not exist." % + self.source_var) + else: + relative_source = None + try: + requested_size = self.size_var.resolve(context) + except VariableDoesNotExist: + if DEBUG: + raise TemplateSyntaxError("Size argument '%s' is not a" + " valid size nor a valid variable." % self.size_var) + else: + requested_size = None + # Size variable can be either a tuple/list of two integers or a valid + # string, only the string is checked. + else: + if isinstance(requested_size, basestring): + m = size_pat.match(requested_size) + if m: + requested_size = (int(m.group(1)), int(m.group(2))) + elif DEBUG: + raise TemplateSyntaxError("Variable '%s' was resolved but " + "'%s' is not a valid size." % + (self.size_var, requested_size)) + else: + requested_size = None + if relative_source is None or requested_size is None: + thumbnail = '' + else: + try: + kwargs = {} + for key, value in self.kwargs.items(): + kwargs[key] = value.resolve(context) + opts = dict([(k, v and v.resolve(context)) + for k, v in self.opts.items()]) + thumbnail = DjangoThumbnail(relative_source, requested_size, + opts=opts, processors=PROCESSORS, **kwargs) + except: + if DEBUG: + raise + else: + thumbnail = '' + # Return the thumbnail class, or put it on the context + if self.context_name is None: + return thumbnail + # We need to get here so we don't have old values in the context + # variable. + context[self.context_name] = thumbnail + return '' + + +def thumbnail(parser, token): + """ + Creates a thumbnail of for an ImageField. + + To just output the absolute url to the thumbnail:: + + {% thumbnail image 80x80 %} + + After the image path and dimensions, you can put any options:: + + {% thumbnail image 80x80 quality=95 crop %} + + To put the DjangoThumbnail class on the context instead of just rendering + the absolute url, finish the tag with ``as [context_var_name]``:: + + {% thumbnail image 80x80 as thumb %} + {{ thumb.width }} x {{ thumb.height }} + """ + args = token.split_contents() + tag = args[0] + # Check to see if we're setting to a context variable. + if len(args) > 4 and args[-2] == 'as': + context_name = args[-1] + args = args[:-2] + else: + context_name = None + + if len(args) < 3: + raise TemplateSyntaxError("Invalid syntax. Expected " + "'{%% %s source size [option1 option2 ...] %%}' or " + "'{%% %s source size [option1 option2 ...] as variable %%}'" % + (tag, tag)) + + # Get the source image path and requested size. + source_var = parser.compile_filter(args[1]) + # If the size argument was a correct static format, wrap it in quotes so + # that it is compiled correctly. + m = size_pat.match(args[2]) + if m: + args[2] = '"%s"' % args[2] + size_var = parser.compile_filter(args[2]) + + # Get the options. + args_list = split_args(args[3:]).items() + + # Check the options. + opts = {} + kwargs = {} # key,values here override settings and defaults + + for arg, value in args_list: + value = value and parser.compile_filter(value) + if arg in TAG_SETTINGS and value is not None: + kwargs[str(arg)] = value + continue + if arg in VALID_OPTIONS: + opts[arg] = value + else: + raise TemplateSyntaxError("'%s' tag received a bad argument: " + "'%s'" % (tag, arg)) + return ThumbnailNode(source_var, size_var, opts=opts, + context_name=context_name, **kwargs) + + +def filesize(bytes, format='auto1024'): + """ + Returns the number of bytes in either the nearest unit or a specific unit + (depending on the chosen format method). + + Acceptable formats are: + + auto1024, auto1000 + convert to the nearest unit, appending the abbreviated unit name to the + string (e.g. '2 KiB' or '2 kB'). + auto1024 is the default format. + auto1024long, auto1000long + convert to the nearest multiple of 1024 or 1000, appending the correctly + pluralized unit name to the string (e.g. '2 kibibytes' or '2 kilobytes'). + kB, MB, GB, TB, PB, EB, ZB or YB + convert to the exact unit (using multiples of 1000). + KiB, MiB, GiB, TiB, PiB, EiB, ZiB or YiB + convert to the exact unit (using multiples of 1024). + + The auto1024 and auto1000 formats return a string, appending the correct + unit to the value. All other formats return the floating point value. + + If an invalid format is specified, the bytes are returned unchanged. + """ + format_len = len(format) + # Check for valid format + if format_len in (2, 3): + if format_len == 3 and format[0] == 'K': + format = 'k%s' % format[1:] + if not format[-1] == 'B' or format[0] not in filesize_formats: + return bytes + if format_len == 3 and format[1] != 'i': + return bytes + elif format not in ('auto1024', 'auto1000', + 'auto1024long', 'auto1000long'): + return bytes + # Check for valid bytes + try: + bytes = long(bytes) + except (ValueError, TypeError): + return bytes + + # Auto multiple of 1000 or 1024 + if format.startswith('auto'): + if format[4:8] == '1000': + base = 1000 + else: + base = 1024 + logarithm = bytes and math.log(bytes, base) or 0 + index = min(int(logarithm) - 1, len(filesize_formats) - 1) + if index >= 0: + if base == 1000: + bytes = bytes and bytes / math.pow(1000, index + 1) + else: + bytes = bytes >> (10 * (index)) + bytes = bytes and bytes / 1024.0 + unit = filesize_formats[index] + else: + # Change the base to 1000 so the unit will just output 'B' not 'iB' + base = 1000 + unit = '' + if bytes >= 10 or ('%.1f' % bytes).endswith('.0'): + bytes = '%.0f' % bytes + else: + bytes = '%.1f' % bytes + if format.endswith('long'): + unit = filesize_long_formats.get(unit, '') + if base == 1024 and unit: + unit = '%sbi' % unit[:2] + unit = '%sbyte%s' % (unit, bytes != '1' and 's' or '') + else: + unit = '%s%s' % (base == 1024 and unit.upper() or unit, + base == 1024 and 'iB' or 'B') + + return '%s %s' % (bytes, unit) + + if bytes == 0: + return bytes + base = filesize_formats.index(format[0]) + 1 + # Exact multiple of 1000 + if format_len == 2: + return bytes / (1000.0 ** base) + # Exact multiple of 1024 + elif format_len == 3: + bytes = bytes >> (10 * (base - 1)) + return bytes / 1024.0 + + +register.tag(thumbnail) +register.filter(filesize) diff --git a/apps/sorl/thumbnail/tests/__init__.py b/apps/sorl/thumbnail/tests/__init__.py new file mode 100644 index 00000000..98f1cbd8 --- /dev/null +++ b/apps/sorl/thumbnail/tests/__init__.py @@ -0,0 +1,16 @@ +# For these tests to run successfully, two conditions must be met: +# 1. MEDIA_URL and MEDIA_ROOT must be set in settings +# 2. The user running the tests must have read/write access to MEDIA_ROOT + +# Unit tests: +from sorl.thumbnail.tests.classes import ThumbnailTest, DjangoThumbnailTest +from sorl.thumbnail.tests.templatetags import ThumbnailTagTest +from sorl.thumbnail.tests.fields import FieldTest, \ + ImageWithThumbnailsFieldTest, ThumbnailFieldTest +# Doc tests: +from sorl.thumbnail.tests.utils import utils_tests +from sorl.thumbnail.tests.templatetags import filesize_tests +__test__ = { + 'utils_tests': utils_tests, + 'filesize_tests': filesize_tests, +} diff --git a/apps/sorl/thumbnail/tests/base.py b/apps/sorl/thumbnail/tests/base.py new file mode 100644 index 00000000..44a2fa22 --- /dev/null +++ b/apps/sorl/thumbnail/tests/base.py @@ -0,0 +1,105 @@ +import unittest +import os +from PIL import Image +from django.conf import settings +from sorl.thumbnail.base import Thumbnail + +try: + set +except NameError: + from sets import Set as set # For Python 2.3 + + +def get_default_settings(): + from sorl.thumbnail import defaults + def_settings = {} + for key in dir(defaults): + if key == key.upper() and key not in ['WVPS', 'CONVERT']: + def_settings[key] = getattr(defaults, key) + return def_settings + + +DEFAULT_THUMBNAIL_SETTINGS = get_default_settings() +RELATIVE_PIC_NAME = "sorl-thumbnail-test_source.jpg" +PIC_NAME = os.path.join(settings.MEDIA_ROOT, RELATIVE_PIC_NAME) +THUMB_NAME = os.path.join(settings.MEDIA_ROOT, "sorl-thumbnail-test_%02d.jpg") +PIC_SIZE = (800, 600) + + +class ChangeSettings: + def __init__(self): + self.default_settings = DEFAULT_THUMBNAIL_SETTINGS.copy() + + def change(self, override=None): + if override is not None: + self.default_settings.update(override) + for setting, default in self.default_settings.items(): + settings_s = 'THUMBNAIL_%s' % setting + self_s = 'original_%s' % setting + if hasattr(settings, settings_s) and not hasattr(self, self_s): + setattr(self, self_s, getattr(settings, settings_s)) + if hasattr(settings, settings_s) or \ + default != DEFAULT_THUMBNAIL_SETTINGS[setting]: + setattr(settings, settings_s, default) + + def revert(self): + for setting in self.default_settings: + settings_s = 'THUMBNAIL_%s' % setting + self_s = 'original_%s' % setting + if hasattr(self, self_s): + setattr(settings, settings_s, getattr(self, self_s)) + delattr(self, self_s) + + +class BaseTest(unittest.TestCase): + def setUp(self): + self.images_to_delete = set() + # Create the test image + Image.new('RGB', PIC_SIZE).save(PIC_NAME, 'JPEG') + self.images_to_delete.add(PIC_NAME) + # Change settings so we know they will be constant + self.change_settings = ChangeSettings() + self.change_settings.change() + + def verify_thumbnail(self, expected_size, thumbnail=None, + expected_filename=None, expected_mode=None): + assert thumbnail is not None or expected_filename is not None, \ + 'verify_thumbnail should be passed at least a thumbnail or an' \ + 'expected filename.' + + if thumbnail is not None: + # Verify that the templatetag method returned a Thumbnail instance + self.assertTrue(isinstance(thumbnail, Thumbnail)) + thumb_name = thumbnail.dest + else: + thumb_name = expected_filename + + if isinstance(thumb_name, basestring): + # Verify that the thumbnail file exists + self.assert_(os.path.isfile(thumb_name), + 'Thumbnail file not found') + + # Remember to delete the file + self.images_to_delete.add(thumb_name) + + # If we got an expected_filename, check that it is right + if expected_filename is not None and thumbnail is not None: + self.assertEqual(thumbnail.dest, expected_filename) + + image = Image.open(thumb_name) + + # Verify the thumbnail has the expected dimensions + self.assertEqual(image.size, expected_size) + + if expected_mode is not None: + self.assertEqual(image.mode, expected_mode) + + def tearDown(self): + # Remove all the files that have been created + for image in self.images_to_delete: + try: + os.remove(image) + except: + pass + # Change settings back to original + self.change_settings.revert() diff --git a/apps/sorl/thumbnail/tests/classes.py b/apps/sorl/thumbnail/tests/classes.py new file mode 100644 index 00000000..d15dd193 --- /dev/null +++ b/apps/sorl/thumbnail/tests/classes.py @@ -0,0 +1,175 @@ +# -*- coding: utf-8 -*- +import os +import time +from StringIO import StringIO + +from PIL import Image +from django.conf import settings + +from sorl.thumbnail.base import Thumbnail +from sorl.thumbnail.main import DjangoThumbnail, get_thumbnail_setting +from sorl.thumbnail.processors import dynamic_import, get_valid_options +from sorl.thumbnail.tests.base import BaseTest, RELATIVE_PIC_NAME, PIC_NAME,\ + THUMB_NAME, PIC_SIZE + + +class ThumbnailTest(BaseTest): + def testThumbnails(self): + # Thumbnail + thumb = Thumbnail(source=PIC_NAME, dest=THUMB_NAME % 1, + requested_size=(240, 240)) + self.verify_thumbnail((240, 180), thumb) + + # Cropped thumbnail + thumb = Thumbnail(source=PIC_NAME, dest=THUMB_NAME % 2, + requested_size=(240, 240), opts=['crop']) + self.verify_thumbnail((240, 240), thumb) + + # Thumbnail with altered JPEG quality + thumb = Thumbnail(source=PIC_NAME, dest=THUMB_NAME % 3, + requested_size=(240, 240), quality=95) + self.verify_thumbnail((240, 180), thumb) + + def testRegeneration(self): + # Create thumbnail + thumb_name = THUMB_NAME % 4 + thumb_size = (240, 240) + Thumbnail(source=PIC_NAME, dest=thumb_name, requested_size=thumb_size) + self.images_to_delete.add(thumb_name) + thumb_mtime = os.path.getmtime(thumb_name) + time.sleep(1) + + # Create another instance, shouldn't generate a new thumb + Thumbnail(source=PIC_NAME, dest=thumb_name, requested_size=thumb_size) + self.assertEqual(os.path.getmtime(thumb_name), thumb_mtime) + + # Recreate the source image, then see if a new thumb is generated + Image.new('RGB', PIC_SIZE).save(PIC_NAME, 'JPEG') + Thumbnail(source=PIC_NAME, dest=thumb_name, requested_size=thumb_size) + self.assertNotEqual(os.path.getmtime(thumb_name), thumb_mtime) + + def testFilelikeDest(self): + # Thumbnail + filelike_dest = StringIO() + thumb = Thumbnail(source=PIC_NAME, dest=filelike_dest, + requested_size=(240, 240)) + self.verify_thumbnail((240, 180), thumb) + + def testRGBA(self): + # RGBA image + rgba_pic_name = os.path.join(settings.MEDIA_ROOT, + 'sorl-thumbnail-test_rgba_source.png') + Image.new('RGBA', PIC_SIZE).save(rgba_pic_name) + self.images_to_delete.add(rgba_pic_name) + # Create thumb and verify it's still RGBA + rgba_thumb_name = os.path.join(settings.MEDIA_ROOT, + 'sorl-thumbnail-test_rgba_dest.png') + thumb = Thumbnail(source=rgba_pic_name, dest=rgba_thumb_name, + requested_size=(240, 240)) + self.verify_thumbnail((240, 180), thumb, expected_mode='RGBA') + + +class DjangoThumbnailTest(BaseTest): + def setUp(self): + super(DjangoThumbnailTest, self).setUp() + # Add another source image in a sub-directory for testing subdir and + # basedir. + self.sub_dir = os.path.join(settings.MEDIA_ROOT, 'test_thumbnail') + try: + os.mkdir(self.sub_dir) + except OSError: + pass + self.pic_subdir = os.path.join(self.sub_dir, RELATIVE_PIC_NAME) + Image.new('RGB', PIC_SIZE).save(self.pic_subdir, 'JPEG') + self.images_to_delete.add(self.pic_subdir) + + def testFilenameGeneration(self): + basename = RELATIVE_PIC_NAME.replace('.', '_') + # Basic filename + thumb = DjangoThumbnail(relative_source=RELATIVE_PIC_NAME, + requested_size=(240, 120)) + expected = os.path.join(settings.MEDIA_ROOT, basename) + expected += '_240x120_q85.jpg' + self.verify_thumbnail((160, 120), thumb, expected_filename=expected) + + # Changed quality and cropped + thumb = DjangoThumbnail(relative_source=RELATIVE_PIC_NAME, + requested_size=(240, 120), opts=['crop'], + quality=95) + expected = os.path.join(settings.MEDIA_ROOT, basename) + expected += '_240x120_crop_q95.jpg' + self.verify_thumbnail((240, 120), thumb, expected_filename=expected) + + # All options on + processors = dynamic_import(get_thumbnail_setting('PROCESSORS')) + valid_options = get_valid_options(processors) + + thumb = DjangoThumbnail(relative_source=RELATIVE_PIC_NAME, + requested_size=(240, 120), opts=valid_options) + expected = (os.path.join(settings.MEDIA_ROOT, basename) + '_240x120_' + 'autocrop_bw_crop_detail_max_sharpen_upscale_q85.jpg') + self.verify_thumbnail((240, 120), thumb, expected_filename=expected) + + # Different basedir + basedir = 'sorl-thumbnail-test-basedir' + self.change_settings.change({'BASEDIR': basedir}) + thumb = DjangoThumbnail(relative_source=self.pic_subdir, + requested_size=(240, 120)) + expected = os.path.join(basedir, self.sub_dir, basename) + expected += '_240x120_q85.jpg' + self.verify_thumbnail((160, 120), thumb, expected_filename=expected) + # Different subdir + self.change_settings.change({'BASEDIR': '', 'SUBDIR': 'subdir'}) + thumb = DjangoThumbnail(relative_source=self.pic_subdir, + requested_size=(240, 120)) + expected = os.path.join(settings.MEDIA_ROOT, + os.path.basename(self.sub_dir), 'subdir', + basename) + expected += '_240x120_q85.jpg' + self.verify_thumbnail((160, 120), thumb, expected_filename=expected) + # Different prefix + self.change_settings.change({'SUBDIR': '', 'PREFIX': 'prefix-'}) + thumb = DjangoThumbnail(relative_source=self.pic_subdir, + requested_size=(240, 120)) + expected = os.path.join(self.sub_dir, 'prefix-' + basename) + expected += '_240x120_q85.jpg' + self.verify_thumbnail((160, 120), thumb, expected_filename=expected) + + def testAlternateExtension(self): + basename = RELATIVE_PIC_NAME.replace('.', '_') + # Control JPG + thumb = DjangoThumbnail(relative_source=RELATIVE_PIC_NAME, + requested_size=(240, 120)) + expected = os.path.join(settings.MEDIA_ROOT, basename) + expected += '_240x120_q85.jpg' + expected_jpg = expected + self.verify_thumbnail((160, 120), thumb, expected_filename=expected) + # Test PNG + thumb = DjangoThumbnail(relative_source=RELATIVE_PIC_NAME, + requested_size=(240, 120), extension='png') + expected = os.path.join(settings.MEDIA_ROOT, basename) + expected += '_240x120_q85.png' + self.verify_thumbnail((160, 120), thumb, expected_filename=expected) + # Compare the file size to make sure it's not just saving as a JPG with + # a different extension. + self.assertNotEqual(os.path.getsize(expected_jpg), + os.path.getsize(expected)) + + def testUnicodeName(self): + unicode_name = 'sorl-thumbnail-ążśź_source.jpg' + unicode_path = os.path.join(settings.MEDIA_ROOT, unicode_name) + Image.new('RGB', PIC_SIZE).save(unicode_path) + self.images_to_delete.add(unicode_path) + thumb = DjangoThumbnail(relative_source=unicode_name, + requested_size=(240, 120)) + base_name = unicode_name.replace('.', '_') + expected = os.path.join(settings.MEDIA_ROOT, + base_name + '_240x120_q85.jpg') + self.verify_thumbnail((160, 120), thumb, expected_filename=expected) + + def tearDown(self): + super(DjangoThumbnailTest, self).tearDown() + subdir = os.path.join(self.sub_dir, 'subdir') + if os.path.exists(subdir): + os.rmdir(subdir) + os.rmdir(self.sub_dir) diff --git a/apps/sorl/thumbnail/tests/fields.py b/apps/sorl/thumbnail/tests/fields.py new file mode 100644 index 00000000..425f5553 --- /dev/null +++ b/apps/sorl/thumbnail/tests/fields.py @@ -0,0 +1,131 @@ +import os.path + +from django.db import models +from django.conf import settings +from django.core.files.base import ContentFile + +from sorl.thumbnail.fields import ImageWithThumbnailsField, ThumbnailField +from sorl.thumbnail.tests.base import BaseTest, RELATIVE_PIC_NAME, PIC_NAME + +thumbnail = { + 'size': (50, 50), +} +extra_thumbnails = { + 'admin': { + 'size': (30, 30), + 'options': ('crop',), + } +} +extension_thumbnail = thumbnail.copy() +extension_thumbnail['extension'] = 'png' + + +# Temporary models for field_tests +class TestThumbnailFieldModel(models.Model): + avatar = ThumbnailField(upload_to='test', size=(300, 300)) + photo = ImageWithThumbnailsField(upload_to='test', thumbnail=thumbnail, + extra_thumbnails=extra_thumbnails) + + +class TestThumbnailFieldExtensionModel(models.Model): + photo = ImageWithThumbnailsField(upload_to='test', + thumbnail=extension_thumbnail, + extra_thumbnails=extra_thumbnails) + + +class TestThumbnailFieldGenerateModel(models.Model): + photo = ImageWithThumbnailsField(upload_to='test', thumbnail=thumbnail, + extra_thumbnails=extra_thumbnails, + generate_on_save=True) + + +class FieldTest(BaseTest): + """ + Test the base field functionality. These use an ImageWithThumbnailsField + but all the functionality tested is from BaseThumbnailField. + """ + def test_extra_thumbnails(self): + model = TestThumbnailFieldModel(photo=RELATIVE_PIC_NAME) + self.assertTrue('admin' in model.photo.extra_thumbnails) + thumb = model.photo.extra_thumbnails['admin'] + tag = model.photo.extra_thumbnails_tag['admin'] + expected_filename = os.path.join(settings.MEDIA_ROOT, + 'sorl-thumbnail-test_source_jpg_30x30_crop_q85.jpg') + self.verify_thumbnail((30, 30), thumb, expected_filename) + expected_tag = '' % \ + '/'.join((settings.MEDIA_URL.rstrip('/'), + 'sorl-thumbnail-test_source_jpg_30x30_crop_q85.jpg')) + self.assertEqual(tag, expected_tag) + + def test_extension(self): + model = TestThumbnailFieldExtensionModel(photo=RELATIVE_PIC_NAME) + thumb = model.photo.thumbnail + tag = model.photo.thumbnail_tag + expected_filename = os.path.join(settings.MEDIA_ROOT, + 'sorl-thumbnail-test_source_jpg_50x50_q85.png') + self.verify_thumbnail((50, 37), thumb, expected_filename) + expected_tag = '' % \ + '/'.join((settings.MEDIA_URL.rstrip('/'), + 'sorl-thumbnail-test_source_jpg_50x50_q85.png')) + self.assertEqual(tag, expected_tag) + + def test_delete_thumbnails(self): + model = TestThumbnailFieldModel(photo=RELATIVE_PIC_NAME) + thumb_file = model.photo.thumbnail.dest + open(thumb_file, 'wb').close() + self.assert_(os.path.exists(thumb_file)) + model.photo.delete(save=False) + self.assertFalse(os.path.exists(thumb_file)) + + def test_generate_on_save(self): + main_thumb = os.path.join(settings.MEDIA_ROOT, 'test', + 'sorl-thumbnail-test_source_jpg_50x50_q85.jpg') + admin_thumb = os.path.join(settings.MEDIA_ROOT, 'test', + 'sorl-thumbnail-test_source_jpg_30x30_crop_q85.jpg') + self.images_to_delete.add(main_thumb) + self.images_to_delete.add(admin_thumb) + # Default setting is to only generate when the thumbnail is used. + model = TestThumbnailFieldModel() + source = ContentFile(open(PIC_NAME).read()) + model.photo.save(RELATIVE_PIC_NAME, source, save=False) + self.images_to_delete.add(model.photo.path) + self.assertFalse(os.path.exists(main_thumb)) + self.assertFalse(os.path.exists(admin_thumb)) + os.remove(model.photo.path) + # But it's easy to set it up the other way... + model = TestThumbnailFieldGenerateModel() + source = ContentFile(open(PIC_NAME).read()) + model.photo.save(RELATIVE_PIC_NAME, source, save=False) + self.assert_(os.path.exists(main_thumb)) + self.assert_(os.path.exists(admin_thumb)) + + +class ImageWithThumbnailsFieldTest(BaseTest): + def test_thumbnail(self): + model = TestThumbnailFieldModel(photo=RELATIVE_PIC_NAME) + thumb = model.photo.thumbnail + tag = model.photo.thumbnail_tag + base_name = RELATIVE_PIC_NAME.replace('.', '_') + expected_filename = os.path.join(settings.MEDIA_ROOT, + '%s_50x50_q85.jpg' % base_name) + self.verify_thumbnail((50, 37), thumb, expected_filename) + expected_tag = ('' % + '/'.join([settings.MEDIA_URL.rstrip('/'), + '%s_50x50_q85.jpg' % base_name])) + self.assertEqual(tag, expected_tag) + + +class ThumbnailFieldTest(BaseTest): + def test_thumbnail(self): + model = TestThumbnailFieldModel() + source = ContentFile(open(PIC_NAME).read()) + dest_name = 'sorl-thumbnail-test_dest.jpg' + model.avatar.save(dest_name, source, save=False) + expected_filename = os.path.join(model.avatar.path) + self.verify_thumbnail((300, 225), expected_filename=expected_filename) + + tag = model.avatar.thumbnail_tag + expected_tag = ('' % + '/'.join([settings.MEDIA_URL.rstrip('/'), 'test', + dest_name])) + self.assertEqual(tag, expected_tag) diff --git a/apps/sorl/thumbnail/tests/templatetags.py b/apps/sorl/thumbnail/tests/templatetags.py new file mode 100644 index 00000000..5d1a1cb1 --- /dev/null +++ b/apps/sorl/thumbnail/tests/templatetags.py @@ -0,0 +1,312 @@ +import os +from django.conf import settings +from django.template import Template, Context, TemplateSyntaxError +from sorl.thumbnail.tests.classes import BaseTest, RELATIVE_PIC_NAME + + +class ThumbnailTagTest(BaseTest): + def render_template(self, source): + context = Context({ + 'source': RELATIVE_PIC_NAME, + 'invalid_source': 'not%s' % RELATIVE_PIC_NAME, + 'size': (90, 100), + 'invalid_size': (90, 'fish'), + 'strsize': '80x90', + 'invalid_strsize': ('1notasize2'), + 'invalid_q': 'notanumber'}) + source = '{% load thumbnail %}' + source + return Template(source).render(context) + + def testTagInvalid(self): + # No args, or wrong number of args + src = '{% thumbnail %}' + self.assertRaises(TemplateSyntaxError, self.render_template, src) + src = '{% thumbnail source %}' + self.assertRaises(TemplateSyntaxError, self.render_template, src) + src = '{% thumbnail source 80x80 as variable crop %}' + self.assertRaises(TemplateSyntaxError, self.render_template, src) + + # Invalid option + src = '{% thumbnail source 240x200 invalid %}' + self.assertRaises(TemplateSyntaxError, self.render_template, src) + + # Old comma separated options format can only have an = for quality + src = '{% thumbnail source 80x80 crop=1,quality=1 %}' + self.assertRaises(TemplateSyntaxError, self.render_template, src) + + # Invalid quality + src_invalid = '{% thumbnail source 240x200 quality=invalid_q %}' + src_missing = '{% thumbnail source 240x200 quality=missing_q %}' + # ...with THUMBNAIL_DEBUG = False + self.assertEqual(self.render_template(src_invalid), '') + self.assertEqual(self.render_template(src_missing), '') + # ...and with THUMBNAIL_DEBUG = True + self.change_settings.change({'DEBUG': True}) + self.assertRaises(TemplateSyntaxError, self.render_template, + src_invalid) + self.assertRaises(TemplateSyntaxError, self.render_template, + src_missing) + + # Invalid source + src = '{% thumbnail invalid_source 80x80 %}' + src_on_context = '{% thumbnail invalid_source 80x80 as thumb %}' + # ...with THUMBNAIL_DEBUG = False + self.change_settings.change({'DEBUG': False}) + self.assertEqual(self.render_template(src), '') + # ...and with THUMBNAIL_DEBUG = True + self.change_settings.change({'DEBUG': True}) + self.assertRaises(TemplateSyntaxError, self.render_template, src) + self.assertRaises(TemplateSyntaxError, self.render_template, + src_on_context) + + # Non-existant source + src = '{% thumbnail non_existant_source 80x80 %}' + src_on_context = '{% thumbnail non_existant_source 80x80 as thumb %}' + # ...with THUMBNAIL_DEBUG = False + self.change_settings.change({'DEBUG': False}) + self.assertEqual(self.render_template(src), '') + # ...and with THUMBNAIL_DEBUG = True + self.change_settings.change({'DEBUG': True}) + self.assertRaises(TemplateSyntaxError, self.render_template, src) + + # Invalid size as a tuple: + src = '{% thumbnail source invalid_size %}' + # ...with THUMBNAIL_DEBUG = False + self.change_settings.change({'DEBUG': False}) + self.assertEqual(self.render_template(src), '') + # ...and THUMBNAIL_DEBUG = True + self.change_settings.change({'DEBUG': True}) + self.assertRaises(TemplateSyntaxError, self.render_template, src) + # Invalid size as a string: + src = '{% thumbnail source invalid_strsize %}' + # ...with THUMBNAIL_DEBUG = False + self.change_settings.change({'DEBUG': False}) + self.assertEqual(self.render_template(src), '') + # ...and THUMBNAIL_DEBUG = True + self.change_settings.change({'DEBUG': True}) + self.assertRaises(TemplateSyntaxError, self.render_template, src) + + # Non-existant size + src = '{% thumbnail source non_existant_size %}' + # ...with THUMBNAIL_DEBUG = False + self.change_settings.change({'DEBUG': False}) + self.assertEqual(self.render_template(src), '') + # ...and THUMBNAIL_DEBUG = True + self.change_settings.change({'DEBUG': True}) + self.assertRaises(TemplateSyntaxError, self.render_template, src) + + def testTag(self): + expected_base = RELATIVE_PIC_NAME.replace('.', '_') + # Set DEBUG = True to make it easier to trace any failures + self.change_settings.change({'DEBUG': True}) + + # Basic + output = self.render_template('src="' + '{% thumbnail source 240x240 %}"') + expected = '%s_240x240_q85.jpg' % expected_base + expected_fn = os.path.join(settings.MEDIA_ROOT, expected) + self.verify_thumbnail((240, 180), expected_filename=expected_fn) + expected_url = ''.join((settings.MEDIA_URL, expected)) + self.assertEqual(output, 'src="%s"' % expected_url) + + # Size from context variable + # as a tuple: + output = self.render_template('src="' + '{% thumbnail source size %}"') + expected = '%s_90x100_q85.jpg' % expected_base + expected_fn = os.path.join(settings.MEDIA_ROOT, expected) + self.verify_thumbnail((90, 67), expected_filename=expected_fn) + expected_url = ''.join((settings.MEDIA_URL, expected)) + self.assertEqual(output, 'src="%s"' % expected_url) + # as a string: + output = self.render_template('src="' + '{% thumbnail source strsize %}"') + expected = '%s_80x90_q85.jpg' % expected_base + expected_fn = os.path.join(settings.MEDIA_ROOT, expected) + self.verify_thumbnail((80, 60), expected_filename=expected_fn) + expected_url = ''.join((settings.MEDIA_URL, expected)) + self.assertEqual(output, 'src="%s"' % expected_url) + + # On context + output = self.render_template('height:' + '{% thumbnail source 240x240 as thumb %}{{ thumb.height }}') + self.assertEqual(output, 'height:180') + + # With options and quality + output = self.render_template('src="' + '{% thumbnail source 240x240 sharpen crop quality=95 %}"') + # Note that the opts are sorted to ensure a consistent filename. + expected = '%s_240x240_crop_sharpen_q95.jpg' % expected_base + expected_fn = os.path.join(settings.MEDIA_ROOT, expected) + self.verify_thumbnail((240, 240), expected_filename=expected_fn) + expected_url = ''.join((settings.MEDIA_URL, expected)) + self.assertEqual(output, 'src="%s"' % expected_url) + + # With option and quality on context (also using its unicode method to + # display the url) + output = self.render_template( + '{% thumbnail source 240x240 sharpen crop quality=95 as thumb %}' + 'width:{{ thumb.width }}, url:{{ thumb }}') + self.assertEqual(output, 'width:240, url:%s' % expected_url) + + # Old comma separated format for options is still supported. + output = self.render_template( + '{% thumbnail source 240x240 sharpen,crop,quality=95 as thumb %}' + 'width:{{ thumb.width }}, url:{{ thumb }}') + self.assertEqual(output, 'width:240, url:%s' % expected_url) + +filesize_tests = r""" +>>> from sorl.thumbnail.templatetags.thumbnail import filesize + +>>> filesize('abc') +'abc' +>>> filesize(100, 'invalid') +100 + +>>> bytes = 20 +>>> filesize(bytes) +'20 B' +>>> filesize(bytes, 'auto1000') +'20 B' + +>>> bytes = 1001 +>>> filesize(bytes) +'1001 B' +>>> filesize(bytes, 'auto1000') +'1 kB' + +>>> bytes = 10100 +>>> filesize(bytes) +'9.9 KiB' + +# Note that the decimal place is only used if < 10 +>>> filesize(bytes, 'auto1000') +'10 kB' + +>>> bytes = 190000000 +>>> filesize(bytes) +'181 MiB' +>>> filesize(bytes, 'auto1000') +'190 MB' + +# 'auto*long' methods use pluralisation: +>>> filesize(1, 'auto1024long') +'1 byte' +>>> filesize(1, 'auto1000long') +'1 byte' +>>> filesize(2, 'auto1024long') +'2 bytes' +>>> filesize(0, 'auto1000long') +'0 bytes' + +# Test all 'auto*long' output: +>>> for i in range(1,10): +... print '%s, %s' % (filesize(1024**i, 'auto1024long'), +... filesize(1000**i, 'auto1000long')) +1 kibibyte, 1 kilobyte +1 mebibyte, 1 megabyte +1 gibibyte, 1 gigabyte +1 tebibyte, 1 terabyte +1 pebibyte, 1 petabyte +1 exbibyte, 1 exabyte +1 zebibyte, 1 zettabyte +1 yobibyte, 1 yottabyte +1024 yobibytes, 1000 yottabytes + +# Test all fixed outputs (eg 'kB' or 'MiB') +>>> from sorl.thumbnail.templatetags.thumbnail import filesize_formats,\ +... filesize_long_formats +>>> for f in filesize_formats: +... print '%s (%siB, %sB):' % (filesize_long_formats[f], f.upper(), f) +... for i in range(0, 10): +... print ' %s, %s' % (filesize(1024**i, '%siB' % f.upper()), +... filesize(1000**i, '%sB' % f)) +kilo (KiB, kB): + 0.0009765625, 0.001 + 1.0, 1.0 + 1024.0, 1000.0 + 1048576.0, 1000000.0 + 1073741824.0, 1000000000.0 + 1.09951162778e+12, 1e+12 + 1.12589990684e+15, 1e+15 + 1.15292150461e+18, 1e+18 + 1.18059162072e+21, 1e+21 + 1.20892581961e+24, 1e+24 +mega (MiB, MB): + 0.0, 1e-06 + 0.0009765625, 0.001 + 1.0, 1.0 + 1024.0, 1000.0 + 1048576.0, 1000000.0 + 1073741824.0, 1000000000.0 + 1.09951162778e+12, 1e+12 + 1.12589990684e+15, 1e+15 + 1.15292150461e+18, 1e+18 + 1.18059162072e+21, 1e+21 +giga (GiB, GB): + 0.0, 1e-09 + 0.0, 1e-06 + 0.0009765625, 0.001 + 1.0, 1.0 + 1024.0, 1000.0 + 1048576.0, 1000000.0 + 1073741824.0, 1000000000.0 + 1.09951162778e+12, 1e+12 + 1.12589990684e+15, 1e+15 + 1.15292150461e+18, 1e+18 +tera (TiB, TB): + 0.0, 1e-12 + 0.0, 1e-09 + 0.0, 1e-06 + 0.0009765625, 0.001 + 1.0, 1.0 + 1024.0, 1000.0 + 1048576.0, 1000000.0 + 1073741824.0, 1000000000.0 + 1.09951162778e+12, 1e+12 + 1.12589990684e+15, 1e+15 +peta (PiB, PB): + 0.0, 1e-15 + 0.0, 1e-12 + 0.0, 1e-09 + 0.0, 1e-06 + 0.0009765625, 0.001 + 1.0, 1.0 + 1024.0, 1000.0 + 1048576.0, 1000000.0 + 1073741824.0, 1000000000.0 + 1.09951162778e+12, 1e+12 +exa (EiB, EB): + 0.0, 1e-18 + 0.0, 1e-15 + 0.0, 1e-12 + 0.0, 1e-09 + 0.0, 1e-06 + 0.0009765625, 0.001 + 1.0, 1.0 + 1024.0, 1000.0 + 1048576.0, 1000000.0 + 1073741824.0, 1000000000.0 +zetta (ZiB, ZB): + 0.0, 1e-21 + 0.0, 1e-18 + 0.0, 1e-15 + 0.0, 1e-12 + 0.0, 1e-09 + 0.0, 1e-06 + 0.0009765625, 0.001 + 1.0, 1.0 + 1024.0, 1000.0 + 1048576.0, 1000000.0 +yotta (YiB, YB): + 0.0, 1e-24 + 0.0, 1e-21 + 0.0, 1e-18 + 0.0, 1e-15 + 0.0, 1e-12 + 0.0, 1e-09 + 0.0, 1e-06 + 0.0009765625, 0.001 + 1.0, 1.0 + 1024.0, 1000.0 +""" diff --git a/apps/sorl/thumbnail/tests/utils.py b/apps/sorl/thumbnail/tests/utils.py new file mode 100644 index 00000000..3a20cbbc --- /dev/null +++ b/apps/sorl/thumbnail/tests/utils.py @@ -0,0 +1,149 @@ +from django.conf import settings +from sorl.thumbnail.utils import * + +try: + set +except NameError: + from sets import Set as set # For Python 2.3 + +MEDIA_ROOT_LENGTH = len(os.path.normpath(settings.MEDIA_ROOT)) + +utils_tests = r""" +>>> from sorl.thumbnail.tests.utils import * +>>> from sorl.thumbnail.tests.base import ChangeSettings +>>> from django.conf import settings + +>>> change_settings = ChangeSettings() +>>> change_settings.change() + +>>> media_root = settings.MEDIA_ROOT.rstrip('/') + +#============================================================================== +# Set up test images +#============================================================================== + +>>> make_image('test-thumbnail-utils/subdir/test_jpg_110x110_q85.jpg') +>>> make_image('test-thumbnail-utils/test_jpg_80x80_q85.jpg') +>>> make_image('test-thumbnail-utils/test_jpg_80x80_q95.jpg') +>>> make_image('test-thumbnail-utils/another_test_jpg_80x80_q85.jpg') +>>> make_image('test-thumbnail-utils/test_with_opts_jpg_80x80_crop_bw_q85.jpg') +>>> make_image('test-thumbnail-basedir/test-thumbnail-utils/test_jpg_100x100_' +... 'q85.jpg') +>>> make_image('test-thumbnail-utils/prefix-test_jpg_120x120_q85.jpg') + +#============================================================================== +# all_thumbnails() +#============================================================================== + +# Find all thumbs +>>> thumb_dir = os.path.join(settings.MEDIA_ROOT, 'test-thumbnail-utils') +>>> thumbs = all_thumbnails(thumb_dir) +>>> k = thumbs.keys() +>>> k.sort() +>>> [consistent_slash(path) for path in k] +['another_test.jpg', 'prefix-test.jpg', 'subdir/test.jpg', 'test.jpg', + 'test_with_opts.jpg'] + +# Find all thumbs, no recurse +>>> thumbs = all_thumbnails(thumb_dir, recursive=False) +>>> k = thumbs.keys() +>>> k.sort() +>>> k +['another_test.jpg', 'prefix-test.jpg', 'test.jpg', 'test_with_opts.jpg'] + +#============================================================================== +# thumbnails_for_file() +#============================================================================== + +>>> output = [] +>>> for thumb in thumbs['test.jpg']: +... thumb['rel_fn'] = strip_media_root(thumb['filename']) +... output.append('%(x)sx%(y)s %(quality)s %(rel_fn)s' % thumb) +>>> output.sort() +>>> output +['80x80 85 test-thumbnail-utils/test_jpg_80x80_q85.jpg', + '80x80 95 test-thumbnail-utils/test_jpg_80x80_q95.jpg'] + +# Thumbnails for file +>>> output = [] +>>> for thumb in thumbnails_for_file('test-thumbnail-utils/test.jpg'): +... output.append(strip_media_root(thumb['filename'])) +>>> output.sort() +>>> output +['test-thumbnail-utils/test_jpg_80x80_q85.jpg', + 'test-thumbnail-utils/test_jpg_80x80_q95.jpg'] + +# Thumbnails for file - shouldn't choke on non-existant file +>>> thumbnails_for_file('test-thumbnail-utils/non-existant.jpg') +[] + +# Thumbnails for file, with basedir setting +>>> change_settings.change({'BASEDIR': 'test-thumbnail-basedir'}) +>>> for thumb in thumbnails_for_file('test-thumbnail-utils/test.jpg'): +... print strip_media_root(thumb['filename']) +test-thumbnail-basedir/test-thumbnail-utils/test_jpg_100x100_q85.jpg + +# Thumbnails for file, with subdir setting +>>> change_settings.change({'SUBDIR': 'subdir', 'BASEDIR': ''}) +>>> for thumb in thumbnails_for_file('test-thumbnail-utils/test.jpg'): +... print strip_media_root(thumb['filename']) +test-thumbnail-utils/subdir/test_jpg_110x110_q85.jpg + +# Thumbnails for file, with prefix setting +>>> change_settings.change({'PREFIX': 'prefix-', 'SUBDIR': ''}) +>>> for thumb in thumbnails_for_file('test-thumbnail-utils/test.jpg'): +... print strip_media_root(thumb['filename']) +test-thumbnail-utils/prefix-test_jpg_120x120_q85.jpg + +#============================================================================== +# Clean up images / directories +#============================================================================== + +>>> clean_up() +""" + +images_to_delete = set() +dirs_to_delete = [] + + +def make_image(relative_image): + absolute_image = os.path.join(settings.MEDIA_ROOT, relative_image) + make_dirs(os.path.dirname(relative_image)) + open(absolute_image, 'w').close() + images_to_delete.add(absolute_image) + + +def make_dirs(relative_path): + if not relative_path: + return + absolute_path = os.path.join(settings.MEDIA_ROOT, relative_path) + if os.path.isdir(absolute_path): + return + if absolute_path not in dirs_to_delete: + dirs_to_delete.append(absolute_path) + make_dirs(os.path.dirname(relative_path)) + os.mkdir(absolute_path) + + +def clean_up(): + for image in images_to_delete: + os.remove(image) + for path in dirs_to_delete: + os.rmdir(path) + + +def strip_media_root(path): + path = os.path.normpath(path) + # chop off the MEDIA_ROOT and strip any leading os.sep + path = path[MEDIA_ROOT_LENGTH:].lstrip(os.sep) + return consistent_slash(path) + + +def consistent_slash(path): + """ + Ensure we're always testing against the '/' os separator (otherwise tests + fail against Windows). + """ + if os.sep != '/': + path = path.replace(os.sep, '/') + return path diff --git a/apps/sorl/thumbnail/utils.py b/apps/sorl/thumbnail/utils.py new file mode 100644 index 00000000..18b18b0b --- /dev/null +++ b/apps/sorl/thumbnail/utils.py @@ -0,0 +1,170 @@ +import math +import os +import re + + +re_thumbnail_file = re.compile(r'(?P.+)_(?P\d+)x(?P\d+)' + r'(?:_(?P\w+))?_q(?P\d+)' + r'(?:.[^.]+)?$') +re_new_args = re.compile('(? 1 and split_arg[1] or None + args_dict[split_arg[0]] = value + return args_dict + + +def image_entropy(im): + """ + Calculate the entropy of an image. Used for "smart cropping". + """ + hist = im.histogram() + hist_size = float(sum(hist)) + hist = [h / hist_size for h in hist] + return -sum([p * math.log(p, 2) for p in hist if p != 0]) diff --git a/platforma/settings.py b/platforma/settings.py index 87868ce3..1e0d2127 100644 --- a/platforma/settings.py +++ b/platforma/settings.py @@ -118,12 +118,17 @@ INSTALLED_APPS = ( 'django.contrib.admindocs', 'piston', + 'sorl.thumbnail', + 'filebrowser', 'explorer', 'toolbar', 'api', ) +FILEBROWSER_URL_FILEBROWSER_MEDIA = STATIC_URL + 'filebrowser/' + + # REPOSITORY_PATH = '/Users/zuber/Projekty/platforma/files/books' IMAGE_DIR = 'images' EDITOR_COOKIE_NAME = 'options' diff --git a/platforma/static/filebrowser/.svn/all-wcprops b/platforma/static/filebrowser/.svn/all-wcprops new file mode 100644 index 00000000..3752e31b --- /dev/null +++ b/platforma/static/filebrowser/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 70 +/svn/!svn/ver/466/branches/filebrowser_3/filebrowser/media/filebrowser +END diff --git a/platforma/static/filebrowser/.svn/entries b/platforma/static/filebrowser/.svn/entries new file mode 100644 index 00000000..53de6981 --- /dev/null +++ b/platforma/static/filebrowser/.svn/entries @@ -0,0 +1,40 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/media/filebrowser +http://django-filebrowser.googlecode.com/svn + + + +2009-10-29T16:15:59.524671Z +466 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +css +dir + +img +dir + +js +dir + +uploadify +dir + diff --git a/platforma/static/filebrowser/css/.svn/all-wcprops b/platforma/static/filebrowser/css/.svn/all-wcprops new file mode 100644 index 00000000..8cfbfa0f --- /dev/null +++ b/platforma/static/filebrowser/css/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/css +END +filebrowser.css +K 25 +svn:wc:ra_dav:version-url +V 90 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/css/filebrowser.css +END diff --git a/platforma/static/filebrowser/css/.svn/entries b/platforma/static/filebrowser/css/.svn/entries new file mode 100644 index 00000000..e429ef4b --- /dev/null +++ b/platforma/static/filebrowser/css/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/media/filebrowser/css +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +filebrowser.css +file + + + + +2009-11-05T20:58:49.000000Z +724fd235089ee5ad15499fcbe5ddfc88 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +1637 + diff --git a/platforma/static/filebrowser/css/.svn/prop-base/filebrowser.css.svn-base b/platforma/static/filebrowser/css/.svn/prop-base/filebrowser.css.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/platforma/static/filebrowser/css/.svn/prop-base/filebrowser.css.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/platforma/static/filebrowser/css/.svn/text-base/filebrowser.css.svn-base b/platforma/static/filebrowser/css/.svn/text-base/filebrowser.css.svn-base new file mode 100644 index 00000000..c68126ea --- /dev/null +++ b/platforma/static/filebrowser/css/.svn/text-base/filebrowser.css.svn-base @@ -0,0 +1,29 @@ +.filebrowser table td { font-size: 10px; } +.filebrowser table a { font-size: 11px; } +.filebrowser thead th.sorted a { padding-right: 13px; } +.filebrowser td { padding: 9px 10px 7px 10px !important; } +.filebrowser td.fb_icon { padding: 6px 5px 5px 5px !important; } + +table a.fb_deletelink, table a.fb_renamelink, table a.fb_selectlink, table a.fb_showversionslink { + cursor: pointer; + display: block; padding: 0; margin: 0; + width: 23px; height: 17px; + background-color: transparent; + background-position: 0 center; + background-repeat: no-repeat; +} + +table .fb_deletelink:link, table .fb_deletelink:visited { + width: 15px; + background-image: url('../img/filebrowser_icon_delete.gif'); +} +table .fb_deletelink:hover, table .fb_deletelink:active { background-image: url('../img/filebrowser_icon_delete_hover.gif'); } +table .fb_renamelink:link, table .fb_renamelink:visited { + width: 14px; + background-image: url('../img/filebrowser_icon_rename.gif'); +} +table .fb_renamelink:hover, table .fb_renamelink:active { background-image: url('../img/filebrowser_icon_rename_hover.gif'); } +table .fb_selectlink:link, table .fb_selectlink:visited { background-image: url('../img/filebrowser_icon_select.gif'); } +table .fb_selectlink:hover, table .fb_selectlink:active { background-image: url('../img/filebrowser_icon_select_hover.gif'); } +table .fb_showversionslink:link, table .fb_showversionslink:visited { background-image: url('../img/filebrowser_icon_showversions.gif'); } +table .fb_showversionslink:hover, table .fb_showversionslink:active { background-image: url('../img/filebrowser_icon_showversions_hover.gif'); } diff --git a/platforma/static/filebrowser/css/filebrowser.css b/platforma/static/filebrowser/css/filebrowser.css new file mode 100755 index 00000000..c68126ea --- /dev/null +++ b/platforma/static/filebrowser/css/filebrowser.css @@ -0,0 +1,29 @@ +.filebrowser table td { font-size: 10px; } +.filebrowser table a { font-size: 11px; } +.filebrowser thead th.sorted a { padding-right: 13px; } +.filebrowser td { padding: 9px 10px 7px 10px !important; } +.filebrowser td.fb_icon { padding: 6px 5px 5px 5px !important; } + +table a.fb_deletelink, table a.fb_renamelink, table a.fb_selectlink, table a.fb_showversionslink { + cursor: pointer; + display: block; padding: 0; margin: 0; + width: 23px; height: 17px; + background-color: transparent; + background-position: 0 center; + background-repeat: no-repeat; +} + +table .fb_deletelink:link, table .fb_deletelink:visited { + width: 15px; + background-image: url('../img/filebrowser_icon_delete.gif'); +} +table .fb_deletelink:hover, table .fb_deletelink:active { background-image: url('../img/filebrowser_icon_delete_hover.gif'); } +table .fb_renamelink:link, table .fb_renamelink:visited { + width: 14px; + background-image: url('../img/filebrowser_icon_rename.gif'); +} +table .fb_renamelink:hover, table .fb_renamelink:active { background-image: url('../img/filebrowser_icon_rename_hover.gif'); } +table .fb_selectlink:link, table .fb_selectlink:visited { background-image: url('../img/filebrowser_icon_select.gif'); } +table .fb_selectlink:hover, table .fb_selectlink:active { background-image: url('../img/filebrowser_icon_select_hover.gif'); } +table .fb_showversionslink:link, table .fb_showversionslink:visited { background-image: url('../img/filebrowser_icon_showversions.gif'); } +table .fb_showversionslink:hover, table .fb_showversionslink:active { background-image: url('../img/filebrowser_icon_showversions_hover.gif'); } diff --git a/platforma/static/filebrowser/img/.svn/all-wcprops b/platforma/static/filebrowser/img/.svn/all-wcprops new file mode 100644 index 00000000..77268324 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/all-wcprops @@ -0,0 +1,203 @@ +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img +END +filebrowser_object-tools_icon_makethumb.gif +K 25 +svn:wc:ra_dav:version-url +V 118 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_makethumb.gif +END +filebrowser_icon_delete.gif +K 25 +svn:wc:ra_dav:version-url +V 102 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_delete.gif +END +filebrowser_type_code.gif +K 25 +svn:wc:ra_dav:version-url +V 100 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_type_code.gif +END +filebrowser_icon_select_disabled.gif +K 25 +svn:wc:ra_dav:version-url +V 111 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_select_disabled.gif +END +filebrowser_type_.gif +K 25 +svn:wc:ra_dav:version-url +V 96 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_type_.gif +END +filebrowser_icon_rename_hover.gif +K 25 +svn:wc:ra_dav:version-url +V 108 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_rename_hover.gif +END +filebrowser_type_image.gif +K 25 +svn:wc:ra_dav:version-url +V 101 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_type_image.gif +END +filebrowser_icon_showversions_hover.gif +K 25 +svn:wc:ra_dav:version-url +V 114 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_showversions_hover.gif +END +filebrowser_icon_makethumb.gif +K 25 +svn:wc:ra_dav:version-url +V 105 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_makethumb.gif +END +filebrowser_icon_select.gif +K 25 +svn:wc:ra_dav:version-url +V 102 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_select.gif +END +filebrowser_object-tools_icon_imagegenerator_hover.gif +K 25 +svn:wc:ra_dav:version-url +V 129 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_imagegenerator_hover.gif +END +filebrowser_icon_show.gif +K 25 +svn:wc:ra_dav:version-url +V 100 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_show.gif +END +filebrowser_type_sound.gif +K 25 +svn:wc:ra_dav:version-url +V 101 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_type_sound.gif +END +filebrowser_object-tools_icon_makedirectory.gif +K 25 +svn:wc:ra_dav:version-url +V 122 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_makedirectory.gif +END +filebrowser_object-tools_icon_multipleupload_hover.gif +K 25 +svn:wc:ra_dav:version-url +V 129 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_multipleupload_hover.gif +END +filebrowser_icon_imagegenerator_hover.gif +K 25 +svn:wc:ra_dav:version-url +V 116 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_imagegenerator_hover.gif +END +filebrowser_type_video.gif +K 25 +svn:wc:ra_dav:version-url +V 101 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_type_video.gif +END +tableheader_arrow_up.gif +K 25 +svn:wc:ra_dav:version-url +V 99 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/tableheader_arrow_up.gif +END +filebrowser_type_folder.gif +K 25 +svn:wc:ra_dav:version-url +V 102 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_type_folder.gif +END +filebrowser_object-tools_icon_makethumb_hover.gif +K 25 +svn:wc:ra_dav:version-url +V 124 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_makethumb_hover.gif +END +filebrowser_icon_delete_hover.gif +K 25 +svn:wc:ra_dav:version-url +V 108 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_delete_hover.gif +END +filebrowser_type_document.gif +K 25 +svn:wc:ra_dav:version-url +V 104 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_type_document.gif +END +filebrowser_icon_rename.gif +K 25 +svn:wc:ra_dav:version-url +V 102 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_rename.gif +END +filebrowser_icon_showversions.gif +K 25 +svn:wc:ra_dav:version-url +V 108 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_showversions.gif +END +filebrowser_object-tools_icon_imagegenerator.gif +K 25 +svn:wc:ra_dav:version-url +V 123 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_imagegenerator.gif +END +filebrowser_icon_makethumb_hover.gif +K 25 +svn:wc:ra_dav:version-url +V 111 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_makethumb_hover.gif +END +tableheader_arrows.gif +K 25 +svn:wc:ra_dav:version-url +V 97 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/tableheader_arrows.gif +END +filebrowser_icon_select_hover.gif +K 25 +svn:wc:ra_dav:version-url +V 108 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_select_hover.gif +END +filebrowser_icon_show_hover.gif +K 25 +svn:wc:ra_dav:version-url +V 106 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_show_hover.gif +END +filebrowser_object-tools_icon_multipleupload.gif +K 25 +svn:wc:ra_dav:version-url +V 123 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_multipleupload.gif +END +tableheader_arrow_down.gif +K 25 +svn:wc:ra_dav:version-url +V 101 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/tableheader_arrow_down.gif +END +filebrowser_object-tools_icon_makedirectory_hover.gif +K 25 +svn:wc:ra_dav:version-url +V 128 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_object-tools_icon_makedirectory_hover.gif +END +filebrowser_icon_imagegenerator.gif +K 25 +svn:wc:ra_dav:version-url +V 110 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/img/filebrowser_icon_imagegenerator.gif +END diff --git a/platforma/static/filebrowser/img/.svn/entries b/platforma/static/filebrowser/img/.svn/entries new file mode 100644 index 00000000..69fc4e76 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/entries @@ -0,0 +1,1150 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/media/filebrowser/img +http://django-filebrowser.googlecode.com/svn + + + +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +filebrowser_object-tools_icon_makethumb.gif +file + + + + +2009-11-05T20:58:50.000000Z +ac0b0f779a11e12c6fb9be3fd9dae3a9 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +403 + +filebrowser_icon_delete.gif +file + + + + +2009-11-05T20:58:50.000000Z +157eed9c0a8ce56cc2b75cb12065f1cb +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +151 + +filebrowser_type_code.gif +file + + + + +2009-11-05T20:58:50.000000Z +325e306d3e02c8acda7af6adfa7fe004 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +160 + +filebrowser_icon_select_disabled.gif +file + + + + +2009-11-05T20:58:50.000000Z +a0c268883018edf7fb7a89c8bd0818e3 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +3186 + +filebrowser_type_.gif +file + + + + +2009-11-05T20:58:50.000000Z +b5fac564ecb2166984dd3a2bbeed30f2 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +113 + +filebrowser_icon_rename_hover.gif +file + + + + +2009-11-05T20:58:50.000000Z +497f6c51d823c274a60fe2f0e62e5f0c +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +222 + +filebrowser_type_image.gif +file + + + + +2009-11-05T20:58:50.000000Z +f7ee32d90df4f4a881332f8792bff56c +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +127 + +filebrowser_icon_showversions_hover.gif +file + + + + +2009-11-05T20:58:50.000000Z +738f5047e56dfc42c27a2035264d9a5a +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +174 + +filebrowser_icon_makethumb.gif +file + + + + +2009-11-05T20:58:50.000000Z +ab37558a12a7ac398d70967cea5c2490 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +378 + +filebrowser_icon_select.gif +file + + + + +2009-11-05T20:58:50.000000Z +d5f9eece128537b385fbce97dbe845a1 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +377 + +filebrowser_object-tools_icon_imagegenerator_hover.gif +file + + + + +2009-11-05T20:58:50.000000Z +f7283a0d70fde92d648968b4d717b332 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +433 + +filebrowser_icon_show.gif +file + + + + +2009-11-05T20:58:50.000000Z +796cca444bccb1aa3a1177af34df2b55 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +427 + +filebrowser_type_sound.gif +file + + + + +2009-11-05T20:58:50.000000Z +4151664f192446c247002b107e7ef44b +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +223 + +filebrowser_object-tools_icon_makedirectory.gif +file + + + + +2009-11-05T20:58:50.000000Z +a0a9265b740291191ef495408d8462ee +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +390 + +filebrowser_object-tools_icon_multipleupload_hover.gif +file + + + + +2009-11-05T20:58:50.000000Z +9c8b269a5d21539c833af80f93f98857 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +263 + +filebrowser_icon_imagegenerator_hover.gif +file + + + + +2009-11-05T20:58:50.000000Z +f7283a0d70fde92d648968b4d717b332 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +433 + +filebrowser_type_video.gif +file + + + + +2009-11-05T20:58:50.000000Z +a4182f6abe9db217cfe9285bc4d658d8 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +147 + +tableheader_arrow_up.gif +file + + + + +2009-11-05T20:58:50.000000Z +54e3bf1ab4191c053d1f986da869b891 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +292 + +filebrowser_type_folder.gif +file + + + + +2009-11-05T20:58:50.000000Z +06bb3d324d86924674bd696673cf12b5 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +228 + +filebrowser_object-tools_icon_makethumb_hover.gif +file + + + + +2009-11-05T20:58:50.000000Z +ae1a740563fab6107c761690ba1ea4b0 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +284 + +filebrowser_icon_delete_hover.gif +file + + + + +2009-11-05T20:58:50.000000Z +3bc37e729ede0d78618286dcaaec4ecb +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +151 + +filebrowser_type_document.gif +file + + + + +2009-11-05T20:58:50.000000Z +69c60b7de4e9e07a111275424f8aea38 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +118 + +filebrowser_icon_rename.gif +file + + + + +2009-11-05T20:58:50.000000Z +74d609b1407d2ec6a06797be1fa252b4 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +222 + +filebrowser_icon_showversions.gif +file + + + + +2009-11-05T20:58:50.000000Z +5e1a776e0b8cf3a7f28f7a7fe10c04f3 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +174 + +filebrowser_object-tools_icon_imagegenerator.gif +file + + + + +2009-11-05T20:58:50.000000Z +67c3f4a7d6cecec501fdf0561c07a300 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +433 + +filebrowser_icon_makethumb_hover.gif +file + + + + +2009-11-05T20:58:50.000000Z +b53f0c3ec7e9ba09faaf184ae9b9e08e +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +378 + +tableheader_arrows.gif +file + + + + +2009-11-05T20:58:50.000000Z +9938865535b6e2225419b4c97fe3e5ab +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +296 + +filebrowser_icon_select_hover.gif +file + + + + +2009-11-05T20:58:50.000000Z +3b1c5ee35a836335a146e58ef96f5e6d +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +264 + +filebrowser_icon_show_hover.gif +file + + + + +2009-11-05T20:58:50.000000Z +d86a374f1f8fc4dc541d060151e3a3cc +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +426 + +filebrowser_object-tools_icon_multipleupload.gif +file + + + + +2009-11-05T20:58:50.000000Z +592061db6b21baef0214d5ca0db50318 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +387 + +tableheader_arrow_down.gif +file + + + + +2009-11-05T20:58:50.000000Z +b3e7bfc27c65b00e59b6c732fdeccc16 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +292 + +filebrowser_object-tools_icon_makedirectory_hover.gif +file + + + + +2009-11-05T20:58:50.000000Z +0969316f65cbce421d15ae05ed2b6806 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +378 + +filebrowser_icon_imagegenerator.gif +file + + + + +2009-11-05T20:58:50.000000Z +67c3f4a7d6cecec501fdf0561c07a300 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +433 + diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_delete.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_delete.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_delete.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_delete_hover.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_delete_hover.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_delete_hover.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_imagegenerator.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_imagegenerator.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_imagegenerator.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_imagegenerator_hover.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_imagegenerator_hover.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_imagegenerator_hover.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_makethumb.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_makethumb.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_makethumb.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_makethumb_hover.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_makethumb_hover.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_makethumb_hover.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_rename.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_rename.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_rename.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_rename_hover.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_rename_hover.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_rename_hover.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_select.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_select.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_select.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_select_disabled.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_select_disabled.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_select_disabled.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_select_hover.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_select_hover.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_select_hover.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_show.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_show.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_show.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_show_hover.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_show_hover.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_show_hover.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_showversions.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_showversions.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_showversions.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_showversions_hover.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_showversions_hover.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_icon_showversions_hover.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_imagegenerator.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_imagegenerator.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_imagegenerator.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_imagegenerator_hover.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_imagegenerator_hover.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_imagegenerator_hover.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makedirectory.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makedirectory.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makedirectory.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makedirectory_hover.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makedirectory_hover.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makedirectory_hover.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makethumb.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makethumb.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makethumb.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makethumb_hover.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makethumb_hover.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_makethumb_hover.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_multipleupload.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_multipleupload.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_multipleupload.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_multipleupload_hover.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_multipleupload_hover.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_object-tools_icon_multipleupload_hover.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_type_.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_type_.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_type_.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_type_code.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_type_code.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_type_code.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_type_document.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_type_document.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_type_document.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_type_folder.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_type_folder.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_type_folder.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_type_image.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_type_image.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_type_image.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_type_sound.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_type_sound.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_type_sound.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_type_video.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_type_video.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/filebrowser_type_video.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/tableheader_arrow_down.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/tableheader_arrow_down.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/tableheader_arrow_down.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/tableheader_arrow_up.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/tableheader_arrow_up.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/tableheader_arrow_up.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/prop-base/tableheader_arrows.gif.svn-base b/platforma/static/filebrowser/img/.svn/prop-base/tableheader_arrows.gif.svn-base new file mode 100644 index 00000000..5e9587e6 --- /dev/null +++ b/platforma/static/filebrowser/img/.svn/prop-base/tableheader_arrows.gif.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_delete.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_delete.gif.svn-base new file mode 100644 index 00000000..221a6e1c Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_delete.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_delete_hover.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_delete_hover.gif.svn-base new file mode 100644 index 00000000..2a2142cd Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_delete_hover.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_imagegenerator.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_imagegenerator.gif.svn-base new file mode 100644 index 00000000..9b19a420 Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_imagegenerator.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_imagegenerator_hover.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_imagegenerator_hover.gif.svn-base new file mode 100644 index 00000000..aaa256f4 Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_imagegenerator_hover.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_makethumb.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_makethumb.gif.svn-base new file mode 100644 index 00000000..837f6cc6 Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_makethumb.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_makethumb_hover.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_makethumb_hover.gif.svn-base new file mode 100644 index 00000000..d1d4d4a1 Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_makethumb_hover.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_rename.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_rename.gif.svn-base new file mode 100644 index 00000000..bc45fe4b Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_rename.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_rename_hover.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_rename_hover.gif.svn-base new file mode 100644 index 00000000..be8ea08b Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_rename_hover.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_select.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_select.gif.svn-base new file mode 100644 index 00000000..a8384279 Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_select.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_select_disabled.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_select_disabled.gif.svn-base new file mode 100644 index 00000000..60ad2d53 Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_select_disabled.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_select_hover.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_select_hover.gif.svn-base new file mode 100644 index 00000000..319558e9 Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_select_hover.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_show.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_show.gif.svn-base new file mode 100644 index 00000000..dded9824 Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_show.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_show_hover.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_show_hover.gif.svn-base new file mode 100644 index 00000000..fbd1f33e Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_show_hover.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_showversions.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_showversions.gif.svn-base new file mode 100644 index 00000000..71525d74 Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_showversions.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_showversions_hover.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_showversions_hover.gif.svn-base new file mode 100644 index 00000000..1fbe2e49 Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_icon_showversions_hover.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_imagegenerator.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_imagegenerator.gif.svn-base new file mode 100644 index 00000000..9b19a420 Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_imagegenerator.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_imagegenerator_hover.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_imagegenerator_hover.gif.svn-base new file mode 100644 index 00000000..aaa256f4 Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_imagegenerator_hover.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makedirectory.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makedirectory.gif.svn-base new file mode 100644 index 00000000..bcd98d91 Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makedirectory.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makedirectory_hover.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makedirectory_hover.gif.svn-base new file mode 100644 index 00000000..f9938c77 Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makedirectory_hover.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makethumb.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makethumb.gif.svn-base new file mode 100644 index 00000000..a6863cb8 Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makethumb.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makethumb_hover.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makethumb_hover.gif.svn-base new file mode 100644 index 00000000..b9aba7cc Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_makethumb_hover.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_multipleupload.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_multipleupload.gif.svn-base new file mode 100644 index 00000000..6de016be Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_multipleupload.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_multipleupload_hover.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_multipleupload_hover.gif.svn-base new file mode 100644 index 00000000..eaaf2542 Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_object-tools_icon_multipleupload_hover.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_type_.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_type_.gif.svn-base new file mode 100644 index 00000000..6a908e27 Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_type_.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_type_code.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_type_code.gif.svn-base new file mode 100644 index 00000000..96508394 Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_type_code.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_type_document.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_type_document.gif.svn-base new file mode 100644 index 00000000..65ebd99b Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_type_document.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_type_folder.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_type_folder.gif.svn-base new file mode 100644 index 00000000..115e3fbd Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_type_folder.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_type_image.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_type_image.gif.svn-base new file mode 100644 index 00000000..000b31c1 Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_type_image.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_type_sound.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_type_sound.gif.svn-base new file mode 100644 index 00000000..8a8970ab Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_type_sound.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/filebrowser_type_video.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_type_video.gif.svn-base new file mode 100644 index 00000000..f456d59b Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/filebrowser_type_video.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/tableheader_arrow_down.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/tableheader_arrow_down.gif.svn-base new file mode 100644 index 00000000..5ae95a60 Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/tableheader_arrow_down.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/tableheader_arrow_up.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/tableheader_arrow_up.gif.svn-base new file mode 100644 index 00000000..85f1e126 Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/tableheader_arrow_up.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/.svn/text-base/tableheader_arrows.gif.svn-base b/platforma/static/filebrowser/img/.svn/text-base/tableheader_arrows.gif.svn-base new file mode 100644 index 00000000..39b8780c Binary files /dev/null and b/platforma/static/filebrowser/img/.svn/text-base/tableheader_arrows.gif.svn-base differ diff --git a/platforma/static/filebrowser/img/filebrowser_icon_delete.gif b/platforma/static/filebrowser/img/filebrowser_icon_delete.gif new file mode 100644 index 00000000..221a6e1c Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_icon_delete.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_icon_delete_hover.gif b/platforma/static/filebrowser/img/filebrowser_icon_delete_hover.gif new file mode 100644 index 00000000..2a2142cd Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_icon_delete_hover.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_icon_imagegenerator.gif b/platforma/static/filebrowser/img/filebrowser_icon_imagegenerator.gif new file mode 100644 index 00000000..9b19a420 Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_icon_imagegenerator.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_icon_imagegenerator_hover.gif b/platforma/static/filebrowser/img/filebrowser_icon_imagegenerator_hover.gif new file mode 100644 index 00000000..aaa256f4 Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_icon_imagegenerator_hover.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_icon_makethumb.gif b/platforma/static/filebrowser/img/filebrowser_icon_makethumb.gif new file mode 100644 index 00000000..837f6cc6 Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_icon_makethumb.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_icon_makethumb_hover.gif b/platforma/static/filebrowser/img/filebrowser_icon_makethumb_hover.gif new file mode 100644 index 00000000..d1d4d4a1 Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_icon_makethumb_hover.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_icon_rename.gif b/platforma/static/filebrowser/img/filebrowser_icon_rename.gif new file mode 100644 index 00000000..bc45fe4b Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_icon_rename.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_icon_rename_hover.gif b/platforma/static/filebrowser/img/filebrowser_icon_rename_hover.gif new file mode 100644 index 00000000..be8ea08b Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_icon_rename_hover.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_icon_select.gif b/platforma/static/filebrowser/img/filebrowser_icon_select.gif new file mode 100644 index 00000000..a8384279 Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_icon_select.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_icon_select_disabled.gif b/platforma/static/filebrowser/img/filebrowser_icon_select_disabled.gif new file mode 100644 index 00000000..60ad2d53 Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_icon_select_disabled.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_icon_select_hover.gif b/platforma/static/filebrowser/img/filebrowser_icon_select_hover.gif new file mode 100644 index 00000000..319558e9 Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_icon_select_hover.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_icon_show.gif b/platforma/static/filebrowser/img/filebrowser_icon_show.gif new file mode 100644 index 00000000..dded9824 Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_icon_show.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_icon_show_hover.gif b/platforma/static/filebrowser/img/filebrowser_icon_show_hover.gif new file mode 100644 index 00000000..fbd1f33e Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_icon_show_hover.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_icon_showversions.gif b/platforma/static/filebrowser/img/filebrowser_icon_showversions.gif new file mode 100644 index 00000000..71525d74 Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_icon_showversions.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_icon_showversions_hover.gif b/platforma/static/filebrowser/img/filebrowser_icon_showversions_hover.gif new file mode 100644 index 00000000..1fbe2e49 Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_icon_showversions_hover.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_object-tools_icon_imagegenerator.gif b/platforma/static/filebrowser/img/filebrowser_object-tools_icon_imagegenerator.gif new file mode 100644 index 00000000..9b19a420 Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_object-tools_icon_imagegenerator.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_object-tools_icon_imagegenerator_hover.gif b/platforma/static/filebrowser/img/filebrowser_object-tools_icon_imagegenerator_hover.gif new file mode 100644 index 00000000..aaa256f4 Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_object-tools_icon_imagegenerator_hover.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_object-tools_icon_makedirectory.gif b/platforma/static/filebrowser/img/filebrowser_object-tools_icon_makedirectory.gif new file mode 100644 index 00000000..bcd98d91 Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_object-tools_icon_makedirectory.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_object-tools_icon_makedirectory_hover.gif b/platforma/static/filebrowser/img/filebrowser_object-tools_icon_makedirectory_hover.gif new file mode 100644 index 00000000..f9938c77 Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_object-tools_icon_makedirectory_hover.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_object-tools_icon_makethumb.gif b/platforma/static/filebrowser/img/filebrowser_object-tools_icon_makethumb.gif new file mode 100644 index 00000000..a6863cb8 Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_object-tools_icon_makethumb.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_object-tools_icon_makethumb_hover.gif b/platforma/static/filebrowser/img/filebrowser_object-tools_icon_makethumb_hover.gif new file mode 100644 index 00000000..b9aba7cc Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_object-tools_icon_makethumb_hover.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_object-tools_icon_multipleupload.gif b/platforma/static/filebrowser/img/filebrowser_object-tools_icon_multipleupload.gif new file mode 100644 index 00000000..6de016be Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_object-tools_icon_multipleupload.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_object-tools_icon_multipleupload_hover.gif b/platforma/static/filebrowser/img/filebrowser_object-tools_icon_multipleupload_hover.gif new file mode 100644 index 00000000..eaaf2542 Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_object-tools_icon_multipleupload_hover.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_type_.gif b/platforma/static/filebrowser/img/filebrowser_type_.gif new file mode 100644 index 00000000..6a908e27 Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_type_.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_type_code.gif b/platforma/static/filebrowser/img/filebrowser_type_code.gif new file mode 100644 index 00000000..96508394 Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_type_code.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_type_document.gif b/platforma/static/filebrowser/img/filebrowser_type_document.gif new file mode 100644 index 00000000..65ebd99b Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_type_document.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_type_folder.gif b/platforma/static/filebrowser/img/filebrowser_type_folder.gif new file mode 100644 index 00000000..115e3fbd Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_type_folder.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_type_image.gif b/platforma/static/filebrowser/img/filebrowser_type_image.gif new file mode 100644 index 00000000..000b31c1 Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_type_image.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_type_sound.gif b/platforma/static/filebrowser/img/filebrowser_type_sound.gif new file mode 100644 index 00000000..8a8970ab Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_type_sound.gif differ diff --git a/platforma/static/filebrowser/img/filebrowser_type_video.gif b/platforma/static/filebrowser/img/filebrowser_type_video.gif new file mode 100644 index 00000000..f456d59b Binary files /dev/null and b/platforma/static/filebrowser/img/filebrowser_type_video.gif differ diff --git a/platforma/static/filebrowser/img/tableheader_arrow_down.gif b/platforma/static/filebrowser/img/tableheader_arrow_down.gif new file mode 100644 index 00000000..5ae95a60 Binary files /dev/null and b/platforma/static/filebrowser/img/tableheader_arrow_down.gif differ diff --git a/platforma/static/filebrowser/img/tableheader_arrow_up.gif b/platforma/static/filebrowser/img/tableheader_arrow_up.gif new file mode 100644 index 00000000..85f1e126 Binary files /dev/null and b/platforma/static/filebrowser/img/tableheader_arrow_up.gif differ diff --git a/platforma/static/filebrowser/img/tableheader_arrows.gif b/platforma/static/filebrowser/img/tableheader_arrows.gif new file mode 100644 index 00000000..39b8780c Binary files /dev/null and b/platforma/static/filebrowser/img/tableheader_arrows.gif differ diff --git a/platforma/static/filebrowser/js/.svn/all-wcprops b/platforma/static/filebrowser/js/.svn/all-wcprops new file mode 100644 index 00000000..201d6872 --- /dev/null +++ b/platforma/static/filebrowser/js/.svn/all-wcprops @@ -0,0 +1,41 @@ +K 25 +svn:wc:ra_dav:version-url +V 73 +/svn/!svn/ver/466/branches/filebrowser_3/filebrowser/media/filebrowser/js +END +FB_CKEditor.js +K 25 +svn:wc:ra_dav:version-url +V 88 +/svn/!svn/ver/452/branches/filebrowser_3/filebrowser/media/filebrowser/js/FB_CKEditor.js +END +FB_FileBrowseField.js +K 25 +svn:wc:ra_dav:version-url +V 95 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/js/FB_FileBrowseField.js +END +AddFileBrowser.js +K 25 +svn:wc:ra_dav:version-url +V 91 +/svn/!svn/ver/466/branches/filebrowser_3/filebrowser/media/filebrowser/js/AddFileBrowser.js +END +FB_TinyMCE.js +K 25 +svn:wc:ra_dav:version-url +V 87 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/js/FB_TinyMCE.js +END +jquery-1.3.2.min.js +K 25 +svn:wc:ra_dav:version-url +V 93 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/js/jquery-1.3.2.min.js +END +TinyMCEAdmin.js +K 25 +svn:wc:ra_dav:version-url +V 89 +/svn/!svn/ver/403/branches/filebrowser_3/filebrowser/media/filebrowser/js/TinyMCEAdmin.js +END diff --git a/platforma/static/filebrowser/js/.svn/entries b/platforma/static/filebrowser/js/.svn/entries new file mode 100644 index 00000000..9e9096ed --- /dev/null +++ b/platforma/static/filebrowser/js/.svn/entries @@ -0,0 +1,232 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/media/filebrowser/js +http://django-filebrowser.googlecode.com/svn + + + +2009-10-29T16:15:59.524671Z +466 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +FB_CKEditor.js +file + + + + +2009-11-05T20:58:50.000000Z +fa50cfae580047a009a2b86506210d9f +2009-10-11T14:09:32.302815Z +452 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +652 + +FB_FileBrowseField.js +file + + + + +2009-11-05T20:58:50.000000Z +6b093d924826e1d737086801bda89074 +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +1234 + +AddFileBrowser.js +file + + + + +2009-11-05T20:58:50.000000Z +89c9b75dae80816eafa85a1397583b23 +2009-10-29T16:15:59.524671Z +466 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +1094 + +FB_TinyMCE.js +file + + + + +2009-11-05T20:58:50.000000Z +645e7326e1e8be17ce619cdf61731cea +2009-07-18T08:34:28.114642Z +403 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +942 + +jquery-1.3.2.min.js +file + + + + +2009-11-05T20:58:50.000000Z +bb381e2d19d8eace86b34d20759491a5 +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +57254 + +TinyMCEAdmin.js +file + + + + +2009-11-05T20:58:50.000000Z +fb5327084cd3bde1cdf2421ffd619259 +2009-07-18T08:34:28.114642Z +403 +sehmaschine + + + + + + + + + + + + + + + + + + + + + +2487 + diff --git a/platforma/static/filebrowser/js/.svn/prop-base/FB_FileBrowseField.js.svn-base b/platforma/static/filebrowser/js/.svn/prop-base/FB_FileBrowseField.js.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/platforma/static/filebrowser/js/.svn/prop-base/FB_FileBrowseField.js.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/platforma/static/filebrowser/js/.svn/prop-base/FB_TinyMCE.js.svn-base b/platforma/static/filebrowser/js/.svn/prop-base/FB_TinyMCE.js.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/platforma/static/filebrowser/js/.svn/prop-base/FB_TinyMCE.js.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/platforma/static/filebrowser/js/.svn/text-base/AddFileBrowser.js.svn-base b/platforma/static/filebrowser/js/.svn/text-base/AddFileBrowser.js.svn-base new file mode 100644 index 00000000..3a994423 --- /dev/null +++ b/platforma/static/filebrowser/js/.svn/text-base/AddFileBrowser.js.svn-base @@ -0,0 +1,30 @@ +var FileBrowser = { + // this is set automatically + admin_media_prefix: '', + // change this + thumb_prefix: 'thumb_', + no_thumb: 'filebrowser/img/no_thumb.gif', + + init: function() { + // Deduce admin_media_prefix by looking at the + + + + + + +
+ +

Cancel All Uploads

+ + diff --git a/platforma/static/filebrowser/uploadify/example/_notes/.svn/all-wcprops b/platforma/static/filebrowser/uploadify/example/_notes/.svn/all-wcprops new file mode 100644 index 00000000..c0552a6d --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/_notes/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 95 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/_notes +END +dwsync.xml +K 25 +svn:wc:ra_dav:version-url +V 106 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/_notes/dwsync.xml +END diff --git a/platforma/static/filebrowser/uploadify/example/_notes/.svn/entries b/platforma/static/filebrowser/uploadify/example/_notes/.svn/entries new file mode 100644 index 00000000..dd272fcd --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/_notes/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/_notes +http://django-filebrowser.googlecode.com/svn + + + +2009-10-12T09:29:29.900685Z +459 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +dwsync.xml +file + + + + +2009-11-05T20:58:51.000000Z +1d0d08a0a610122fd7ca380a077cd91c +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +317 + diff --git a/platforma/static/filebrowser/uploadify/example/_notes/.svn/prop-base/dwsync.xml.svn-base b/platforma/static/filebrowser/uploadify/example/_notes/.svn/prop-base/dwsync.xml.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/_notes/.svn/prop-base/dwsync.xml.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/platforma/static/filebrowser/uploadify/example/_notes/.svn/text-base/dwsync.xml.svn-base b/platforma/static/filebrowser/uploadify/example/_notes/.svn/text-base/dwsync.xml.svn-base new file mode 100644 index 00000000..36ecaa56 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/_notes/.svn/text-base/dwsync.xml.svn-base @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/platforma/static/filebrowser/uploadify/example/_notes/dwsync.xml b/platforma/static/filebrowser/uploadify/example/_notes/dwsync.xml new file mode 100755 index 00000000..36ecaa56 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/_notes/dwsync.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/platforma/static/filebrowser/uploadify/example/cancel.png b/platforma/static/filebrowser/uploadify/example/cancel.png new file mode 100755 index 00000000..1c062ae5 Binary files /dev/null and b/platforma/static/filebrowser/uploadify/example/cancel.png differ diff --git a/platforma/static/filebrowser/uploadify/example/css/.svn/all-wcprops b/platforma/static/filebrowser/uploadify/example/css/.svn/all-wcprops new file mode 100644 index 00000000..8e3e0323 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/css/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 92 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/css +END +uploadify.css +K 25 +svn:wc:ra_dav:version-url +V 106 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/css/uploadify.css +END +default.css +K 25 +svn:wc:ra_dav:version-url +V 104 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/css/default.css +END diff --git a/platforma/static/filebrowser/uploadify/example/css/.svn/entries b/platforma/static/filebrowser/uploadify/example/css/.svn/entries new file mode 100644 index 00000000..2bba155a --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/css/.svn/entries @@ -0,0 +1,99 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/css +http://django-filebrowser.googlecode.com/svn + + + +2009-10-12T09:29:29.900685Z +459 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +uploadify.css +file + + + + +2009-11-05T20:58:51.000000Z +edec394bac0dc3cf3a17da3837abd642 +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +1792 + +_notes +dir + +default.css +file + + + + +2009-11-05T20:58:51.000000Z +0ad07a2134f8f26293cd2b5420b2d6f7 +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +177 + diff --git a/platforma/static/filebrowser/uploadify/example/css/.svn/prop-base/default.css.svn-base b/platforma/static/filebrowser/uploadify/example/css/.svn/prop-base/default.css.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/css/.svn/prop-base/default.css.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/platforma/static/filebrowser/uploadify/example/css/.svn/prop-base/uploadify.css.svn-base b/platforma/static/filebrowser/uploadify/example/css/.svn/prop-base/uploadify.css.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/css/.svn/prop-base/uploadify.css.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/platforma/static/filebrowser/uploadify/example/css/.svn/text-base/default.css.svn-base b/platforma/static/filebrowser/uploadify/example/css/.svn/text-base/default.css.svn-base new file mode 100644 index 00000000..ec5902d4 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/css/.svn/text-base/default.css.svn-base @@ -0,0 +1,10 @@ +body { + font: 12px/16px Arial, Helvetica, sans-serif; +} +#fileQueue { + width: 400px; + height: 300px; + overflow: auto; + border: 1px solid #E5E5E5; + margin-bottom: 10px; +} \ No newline at end of file diff --git a/platforma/static/filebrowser/uploadify/example/css/.svn/text-base/uploadify.css.svn-base b/platforma/static/filebrowser/uploadify/example/css/.svn/text-base/uploadify.css.svn-base new file mode 100644 index 00000000..0cf8c0ea --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/css/.svn/text-base/uploadify.css.svn-base @@ -0,0 +1,53 @@ +/* +Uploadify v2.1.0 +Release Date: August 24, 2009 + +Copyright (c) 2009 Ronnie Garcia, Travis Nickels + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ +.uploadifyQueueItem { + font: 11px Verdana, Geneva, sans-serif; + border: 2px solid #E5E5E5; + background-color: #F5F5F5; + margin-top: 5px; + padding: 10px; + width: 350px; +} +.uploadifyError { + border: 2px solid #FBCBBC !important; + background-color: #FDE5DD !important; +} +.uploadifyQueueItem .cancel { + float: right; +} +.uploadifyProgress { + background-color: #FFFFFF; + border-top: 1px solid #808080; + border-left: 1px solid #808080; + border-right: 1px solid #C5C5C5; + border-bottom: 1px solid #C5C5C5; + margin-top: 10px; + width: 100%; +} +.uploadifyProgressBar { + background-color: #0099FF; + width: 1px; + height: 3px; +} \ No newline at end of file diff --git a/platforma/static/filebrowser/uploadify/example/css/_notes/.svn/all-wcprops b/platforma/static/filebrowser/uploadify/example/css/_notes/.svn/all-wcprops new file mode 100644 index 00000000..98471dc6 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/css/_notes/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 99 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/css/_notes +END +dwsync.xml +K 25 +svn:wc:ra_dav:version-url +V 110 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/css/_notes/dwsync.xml +END diff --git a/platforma/static/filebrowser/uploadify/example/css/_notes/.svn/entries b/platforma/static/filebrowser/uploadify/example/css/_notes/.svn/entries new file mode 100644 index 00000000..e3cddb41 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/css/_notes/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/css/_notes +http://django-filebrowser.googlecode.com/svn + + + +2009-10-12T09:29:29.900685Z +459 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +dwsync.xml +file + + + + +2009-11-05T20:58:51.000000Z +5290468e614f6b7a8ec013b682853d43 +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +322 + diff --git a/platforma/static/filebrowser/uploadify/example/css/_notes/.svn/prop-base/dwsync.xml.svn-base b/platforma/static/filebrowser/uploadify/example/css/_notes/.svn/prop-base/dwsync.xml.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/css/_notes/.svn/prop-base/dwsync.xml.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/platforma/static/filebrowser/uploadify/example/css/_notes/.svn/text-base/dwsync.xml.svn-base b/platforma/static/filebrowser/uploadify/example/css/_notes/.svn/text-base/dwsync.xml.svn-base new file mode 100644 index 00000000..049ffa59 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/css/_notes/.svn/text-base/dwsync.xml.svn-base @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/platforma/static/filebrowser/uploadify/example/css/_notes/dwsync.xml b/platforma/static/filebrowser/uploadify/example/css/_notes/dwsync.xml new file mode 100755 index 00000000..049ffa59 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/css/_notes/dwsync.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/platforma/static/filebrowser/uploadify/example/css/default.css b/platforma/static/filebrowser/uploadify/example/css/default.css new file mode 100755 index 00000000..ec5902d4 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/css/default.css @@ -0,0 +1,10 @@ +body { + font: 12px/16px Arial, Helvetica, sans-serif; +} +#fileQueue { + width: 400px; + height: 300px; + overflow: auto; + border: 1px solid #E5E5E5; + margin-bottom: 10px; +} \ No newline at end of file diff --git a/platforma/static/filebrowser/uploadify/example/css/uploadify.css b/platforma/static/filebrowser/uploadify/example/css/uploadify.css new file mode 100755 index 00000000..0cf8c0ea --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/css/uploadify.css @@ -0,0 +1,53 @@ +/* +Uploadify v2.1.0 +Release Date: August 24, 2009 + +Copyright (c) 2009 Ronnie Garcia, Travis Nickels + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ +.uploadifyQueueItem { + font: 11px Verdana, Geneva, sans-serif; + border: 2px solid #E5E5E5; + background-color: #F5F5F5; + margin-top: 5px; + padding: 10px; + width: 350px; +} +.uploadifyError { + border: 2px solid #FBCBBC !important; + background-color: #FDE5DD !important; +} +.uploadifyQueueItem .cancel { + float: right; +} +.uploadifyProgress { + background-color: #FFFFFF; + border-top: 1px solid #808080; + border-left: 1px solid #808080; + border-right: 1px solid #C5C5C5; + border-bottom: 1px solid #C5C5C5; + margin-top: 10px; + width: 100%; +} +.uploadifyProgressBar { + background-color: #0099FF; + width: 1px; + height: 3px; +} \ No newline at end of file diff --git a/platforma/static/filebrowser/uploadify/example/index.php b/platforma/static/filebrowser/uploadify/example/index.php new file mode 100755 index 00000000..769d11c6 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/index.php @@ -0,0 +1,31 @@ + + + + +Uploadify Example Script + + + + + + + + + +
+ +

Cancel All Uploads

+ + diff --git a/platforma/static/filebrowser/uploadify/example/scripts/.svn/all-wcprops b/platforma/static/filebrowser/uploadify/example/scripts/.svn/all-wcprops new file mode 100644 index 00000000..ebb7812f --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/scripts/.svn/all-wcprops @@ -0,0 +1,47 @@ +K 25 +svn:wc:ra_dav:version-url +V 96 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts +END +swfobject.js +K 25 +svn:wc:ra_dav:version-url +V 109 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts/swfobject.js +END +uploadify.php +K 25 +svn:wc:ra_dav:version-url +V 110 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts/uploadify.php +END +check.php +K 25 +svn:wc:ra_dav:version-url +V 106 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts/check.php +END +uploadify.swf +K 25 +svn:wc:ra_dav:version-url +V 110 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts/uploadify.swf +END +jquery.uploadify.v2.1.0.min.js +K 25 +svn:wc:ra_dav:version-url +V 127 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts/jquery.uploadify.v2.1.0.min.js +END +jquery-1.3.2.min.js +K 25 +svn:wc:ra_dav:version-url +V 116 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts/jquery-1.3.2.min.js +END +expressInstall.swf +K 25 +svn:wc:ra_dav:version-url +V 115 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts/expressInstall.swf +END diff --git a/platforma/static/filebrowser/uploadify/example/scripts/.svn/entries b/platforma/static/filebrowser/uploadify/example/scripts/.svn/entries new file mode 100644 index 00000000..df5485f6 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/scripts/.svn/entries @@ -0,0 +1,269 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts +http://django-filebrowser.googlecode.com/svn + + + +2009-10-12T09:29:29.900685Z +459 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +swfobject.js +file + + + + +2009-11-05T20:58:51.000000Z +892a543f3abb54e8ec1ada55be3b0649 +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +10220 + +uploadify.php +file + + + + +2009-11-05T20:58:51.000000Z +18002e871847e9e3ae656a35d5e24cbe +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +1932 + +check.php +file + + + + +2009-11-05T20:58:51.000000Z +c409eb2cfd793515f98f0781fea3ef15 +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +1404 + +_notes +dir + +uploadify.swf +file + + + + +2009-11-05T20:58:51.000000Z +ed069be276d587e0b24cedc3d3a48738 +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +23119 + +jquery.uploadify.v2.1.0.min.js +file + + + + +2009-11-05T20:58:51.000000Z +4f1ceab5d5c04168fbef69362742bc6c +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +7563 + +jquery-1.3.2.min.js +file + + + + +2009-11-05T20:58:51.000000Z +bb381e2d19d8eace86b34d20759491a5 +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +57254 + +expressInstall.swf +file + + + + +2009-11-05T20:58:51.000000Z +7b65fbfaec8b2955090389af60646e8b +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +727 + diff --git a/platforma/static/filebrowser/uploadify/example/scripts/.svn/prop-base/check.php.svn-base b/platforma/static/filebrowser/uploadify/example/scripts/.svn/prop-base/check.php.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/scripts/.svn/prop-base/check.php.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/platforma/static/filebrowser/uploadify/example/scripts/.svn/prop-base/expressInstall.swf.svn-base b/platforma/static/filebrowser/uploadify/example/scripts/.svn/prop-base/expressInstall.swf.svn-base new file mode 100644 index 00000000..dbc918b0 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/scripts/.svn/prop-base/expressInstall.swf.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/uploadify/example/scripts/.svn/prop-base/jquery-1.3.2.min.js.svn-base b/platforma/static/filebrowser/uploadify/example/scripts/.svn/prop-base/jquery-1.3.2.min.js.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/scripts/.svn/prop-base/jquery-1.3.2.min.js.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/platforma/static/filebrowser/uploadify/example/scripts/.svn/prop-base/jquery.uploadify.v2.1.0.min.js.svn-base b/platforma/static/filebrowser/uploadify/example/scripts/.svn/prop-base/jquery.uploadify.v2.1.0.min.js.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/scripts/.svn/prop-base/jquery.uploadify.v2.1.0.min.js.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/platforma/static/filebrowser/uploadify/example/scripts/.svn/prop-base/swfobject.js.svn-base b/platforma/static/filebrowser/uploadify/example/scripts/.svn/prop-base/swfobject.js.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/scripts/.svn/prop-base/swfobject.js.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/platforma/static/filebrowser/uploadify/example/scripts/.svn/prop-base/uploadify.php.svn-base b/platforma/static/filebrowser/uploadify/example/scripts/.svn/prop-base/uploadify.php.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/scripts/.svn/prop-base/uploadify.php.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/platforma/static/filebrowser/uploadify/example/scripts/.svn/prop-base/uploadify.swf.svn-base b/platforma/static/filebrowser/uploadify/example/scripts/.svn/prop-base/uploadify.swf.svn-base new file mode 100644 index 00000000..dbc918b0 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/scripts/.svn/prop-base/uploadify.swf.svn-base @@ -0,0 +1,9 @@ +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/platforma/static/filebrowser/uploadify/example/scripts/.svn/text-base/check.php.svn-base b/platforma/static/filebrowser/uploadify/example/scripts/.svn/text-base/check.php.svn-base new file mode 100644 index 00000000..d7dc5717 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/scripts/.svn/text-base/check.php.svn-base @@ -0,0 +1,35 @@ + $value) { + if ($key != 'folder') { + if (file_exists($_SERVER['DOCUMENT_ROOT'] . $_POST['folder'] . '/' . $value)) { + $fileArray[$key] = $value; + } + } +} +echo json_encode($fileArray); +?> \ No newline at end of file diff --git a/platforma/static/filebrowser/uploadify/example/scripts/.svn/text-base/expressInstall.swf.svn-base b/platforma/static/filebrowser/uploadify/example/scripts/.svn/text-base/expressInstall.swf.svn-base new file mode 100644 index 00000000..0fbf8fca Binary files /dev/null and b/platforma/static/filebrowser/uploadify/example/scripts/.svn/text-base/expressInstall.swf.svn-base differ diff --git a/platforma/static/filebrowser/uploadify/example/scripts/.svn/text-base/jquery-1.3.2.min.js.svn-base b/platforma/static/filebrowser/uploadify/example/scripts/.svn/text-base/jquery-1.3.2.min.js.svn-base new file mode 100644 index 00000000..b1ae21d8 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/scripts/.svn/text-base/jquery-1.3.2.min.js.svn-base @@ -0,0 +1,19 @@ +/* + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file diff --git a/platforma/static/filebrowser/uploadify/example/scripts/.svn/text-base/jquery.uploadify.v2.1.0.min.js.svn-base b/platforma/static/filebrowser/uploadify/example/scripts/.svn/text-base/jquery.uploadify.v2.1.0.min.js.svn-base new file mode 100644 index 00000000..04592ffe --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/scripts/.svn/text-base/jquery.uploadify.v2.1.0.min.js.svn-base @@ -0,0 +1,26 @@ +/* +Uploadify v2.1.0 +Release Date: August 24, 2009 + +Copyright (c) 2009 Ronnie Garcia, Travis Nickels + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +if(jQuery){(function(a){a.extend(a.fn,{uploadify:function(b){a(this).each(function(){settings=a.extend({id:a(this).attr("id"),uploader:"uploadify.swf",script:"uploadify.php",expressInstall:null,folder:"",height:30,width:110,cancelImg:"cancel.png",wmode:"opaque",scriptAccess:"sameDomain",fileDataName:"Filedata",method:"POST",queueSizeLimit:999,simUploadLimit:1,queueID:false,displayData:"percentage",onInit:function(){},onSelect:function(){},onQueueFull:function(){},onCheck:function(){},onCancel:function(){},onError:function(){},onProgress:function(){},onComplete:function(){},onAllComplete:function(){}},b);var e=location.pathname;e=e.split("/");e.pop();e=e.join("/")+"/";var f={};f.uploadifyID=settings.id;f.pagepath=e;if(settings.buttonImg){f.buttonImg=escape(settings.buttonImg)}if(settings.buttonText){f.buttonText=escape(settings.buttonText)}if(settings.rollover){f.rollover=true}f.script=settings.script;f.folder=escape(settings.folder);if(settings.scriptData){var g="";for(var d in settings.scriptData){g+="&"+d+"="+settings.scriptData[d]}f.scriptData=escape(g.substr(1))}f.width=settings.width;f.height=settings.height;f.wmode=settings.wmode;f.method=settings.method;f.queueSizeLimit=settings.queueSizeLimit;f.simUploadLimit=settings.simUploadLimit;if(settings.hideButton){f.hideButton=true}if(settings.fileDesc){f.fileDesc=settings.fileDesc}if(settings.fileExt){f.fileExt=settings.fileExt}if(settings.multi){f.multi=true}if(settings.auto){f.auto=true}if(settings.sizeLimit){f.sizeLimit=settings.sizeLimit}if(settings.checkScript){f.checkScript=settings.checkScript}if(settings.fileDataName){f.fileDataName=settings.fileDataName}if(settings.queueID){f.queueID=settings.queueID}if(settings.onInit()!==false){a(this).css("display","none");a(this).after('
');swfobject.embedSWF(settings.uploader,settings.id+"Uploader",settings.width,settings.height,"9.0.24",settings.expressInstall,f,{quality:"high",wmode:settings.wmode,allowScriptAccess:settings.scriptAccess});if(settings.queueID==false){a("#"+a(this).attr("id")+"Uploader").after('
')}}if(typeof(settings.onOpen)=="function"){a(this).bind("uploadifyOpen",settings.onOpen)}a(this).bind("uploadifySelect",{action:settings.onSelect,queueID:settings.queueID},function(j,h,i){if(j.data.action(j,h,i)!==false){var k=Math.round(i.size/1024*100)*0.01;var l="KB";if(k>1000){k=Math.round(k*0.001*100)*0.01;l="MB"}var m=k.toString().split(".");if(m.length>1){k=m[0]+"."+m[1].substr(0,2)}else{k=m[0]}if(i.name.length>20){fileName=i.name.substr(0,20)+"..."}else{fileName=i.name}queue="#"+a(this).attr("id")+"Queue";if(j.data.queueID){queue="#"+j.data.queueID}a(queue).append('
'+fileName+" ("+k+l+')
')}});if(typeof(settings.onSelectOnce)=="function"){a(this).bind("uploadifySelectOnce",settings.onSelectOnce)}a(this).bind("uploadifyQueueFull",{action:settings.onQueueFull},function(h,i){if(h.data.action(h,i)!==false){alert("The queue is full. The max size is "+i+".")}});a(this).bind("uploadifyCheckExist",{action:settings.onCheck},function(m,l,k,j,o){var i=new Object();i=k;i.folder=e+j;if(o){for(var h in k){var n=h}}a.post(l,i,function(r){for(var p in r){if(m.data.action(m,l,k,j,o)!==false){var q=confirm("Do you want to replace the file "+r[p]+"?");if(!q){document.getElementById(a(m.target).attr("id")+"Uploader").cancelFileUpload(p,true,true)}}}if(o){document.getElementById(a(m.target).attr("id")+"Uploader").startFileUpload(n,true)}else{document.getElementById(a(m.target).attr("id")+"Uploader").startFileUpload(null,true)}},"json")});a(this).bind("uploadifyCancel",{action:settings.onCancel},function(l,h,k,m,j){if(l.data.action(l,h,k,m,j)!==false){var i=(j==true)?0:250;a("#"+a(this).attr("id")+h).fadeOut(i,function(){a(this).remove()})}});if(typeof(settings.onClearQueue)=="function"){a(this).bind("uploadifyClearQueue",settings.onClearQueue)}var c=[];a(this).bind("uploadifyError",{action:settings.onError},function(l,h,k,j){if(l.data.action(l,h,k,j)!==false){var i=new Array(h,k,j);c.push(i);a("#"+a(this).attr("id")+h+" .percentage").text(" - "+j.type+" Error");a("#"+a(this).attr("id")+h).addClass("uploadifyError")}});a(this).bind("uploadifyProgress",{action:settings.onProgress,toDisplay:settings.displayData},function(j,h,i,k){if(j.data.action(j,h,i,k)!==false){a("#"+a(this).attr("id")+h+"ProgressBar").css("width",k.percentage+"%");if(j.data.toDisplay=="percentage"){displayData=" - "+k.percentage+"%"}if(j.data.toDisplay=="speed"){displayData=" - "+k.speed+"KB/s"}if(j.data.toDisplay==null){displayData=" "}a("#"+a(this).attr("id")+h+" .percentage").text(displayData)}});a(this).bind("uploadifyComplete",{action:settings.onComplete},function(k,h,j,i,l){if(k.data.action(k,h,j,unescape(i),l)!==false){a("#"+a(this).attr("id")+h+" .percentage").text(" - Completed");a("#"+a(this).attr("id")+h).fadeOut(250,function(){a(this).remove()})}});if(typeof(settings.onAllComplete)=="function"){a(this).bind("uploadifyAllComplete",{action:settings.onAllComplete},function(h,i){if(h.data.action(h,i)!==false){c=[]}})}})},uploadifySettings:function(f,j,c){var g=false;a(this).each(function(){if(f=="scriptData"&&j!=null){if(c){var i=j}else{var i=a.extend(settings.scriptData,j)}var l="";for(var k in i){l+="&"+k+"="+escape(i[k])}j=l.substr(1)}g=document.getElementById(a(this).attr("id")+"Uploader").updateSettings(f,j)});if(j==null){if(f=="scriptData"){var b=unescape(g).split("&");var e=new Object();for(var d=0;d + is released under the MIT License +*/ +var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y0){for(var af=0;af0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad'}}aa.outerHTML='"+af+"";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab \ No newline at end of file diff --git a/platforma/static/filebrowser/uploadify/example/scripts/.svn/text-base/uploadify.swf.svn-base b/platforma/static/filebrowser/uploadify/example/scripts/.svn/text-base/uploadify.swf.svn-base new file mode 100644 index 00000000..4d27952f Binary files /dev/null and b/platforma/static/filebrowser/uploadify/example/scripts/.svn/text-base/uploadify.swf.svn-base differ diff --git a/platforma/static/filebrowser/uploadify/example/scripts/_notes/.svn/all-wcprops b/platforma/static/filebrowser/uploadify/example/scripts/_notes/.svn/all-wcprops new file mode 100644 index 00000000..d8daf491 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/scripts/_notes/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 103 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts/_notes +END +dwsync.xml +K 25 +svn:wc:ra_dav:version-url +V 114 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts/_notes/dwsync.xml +END diff --git a/platforma/static/filebrowser/uploadify/example/scripts/_notes/.svn/entries b/platforma/static/filebrowser/uploadify/example/scripts/_notes/.svn/entries new file mode 100644 index 00000000..89f38db6 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/scripts/_notes/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/scripts/_notes +http://django-filebrowser.googlecode.com/svn + + + +2009-10-12T09:29:29.900685Z +459 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + +dwsync.xml +file + + + + +2009-11-05T20:58:51.000000Z +a095283fba302c68c7f695198d29f450 +2009-10-12T09:29:29.900685Z +459 +sehmaschine +has-props + + + + + + + + + + + + + + + + + + + + +1007 + diff --git a/platforma/static/filebrowser/uploadify/example/scripts/_notes/.svn/prop-base/dwsync.xml.svn-base b/platforma/static/filebrowser/uploadify/example/scripts/_notes/.svn/prop-base/dwsync.xml.svn-base new file mode 100644 index 00000000..869ac71c --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/scripts/_notes/.svn/prop-base/dwsync.xml.svn-base @@ -0,0 +1,5 @@ +K 14 +svn:executable +V 1 +* +END diff --git a/platforma/static/filebrowser/uploadify/example/scripts/_notes/.svn/text-base/dwsync.xml.svn-base b/platforma/static/filebrowser/uploadify/example/scripts/_notes/.svn/text-base/dwsync.xml.svn-base new file mode 100644 index 00000000..13ca0434 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/scripts/_notes/.svn/text-base/dwsync.xml.svn-base @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/platforma/static/filebrowser/uploadify/example/scripts/_notes/dwsync.xml b/platforma/static/filebrowser/uploadify/example/scripts/_notes/dwsync.xml new file mode 100755 index 00000000..13ca0434 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/scripts/_notes/dwsync.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/platforma/static/filebrowser/uploadify/example/scripts/check.php b/platforma/static/filebrowser/uploadify/example/scripts/check.php new file mode 100755 index 00000000..d7dc5717 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/scripts/check.php @@ -0,0 +1,35 @@ + $value) { + if ($key != 'folder') { + if (file_exists($_SERVER['DOCUMENT_ROOT'] . $_POST['folder'] . '/' . $value)) { + $fileArray[$key] = $value; + } + } +} +echo json_encode($fileArray); +?> \ No newline at end of file diff --git a/platforma/static/filebrowser/uploadify/example/scripts/expressInstall.swf b/platforma/static/filebrowser/uploadify/example/scripts/expressInstall.swf new file mode 100755 index 00000000..0fbf8fca Binary files /dev/null and b/platforma/static/filebrowser/uploadify/example/scripts/expressInstall.swf differ diff --git a/platforma/static/filebrowser/uploadify/example/scripts/jquery-1.3.2.min.js b/platforma/static/filebrowser/uploadify/example/scripts/jquery-1.3.2.min.js new file mode 100755 index 00000000..b1ae21d8 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/scripts/jquery-1.3.2.min.js @@ -0,0 +1,19 @@ +/* + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file diff --git a/platforma/static/filebrowser/uploadify/example/scripts/jquery.uploadify.v2.1.0.min.js b/platforma/static/filebrowser/uploadify/example/scripts/jquery.uploadify.v2.1.0.min.js new file mode 100755 index 00000000..04592ffe --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/scripts/jquery.uploadify.v2.1.0.min.js @@ -0,0 +1,26 @@ +/* +Uploadify v2.1.0 +Release Date: August 24, 2009 + +Copyright (c) 2009 Ronnie Garcia, Travis Nickels + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +if(jQuery){(function(a){a.extend(a.fn,{uploadify:function(b){a(this).each(function(){settings=a.extend({id:a(this).attr("id"),uploader:"uploadify.swf",script:"uploadify.php",expressInstall:null,folder:"",height:30,width:110,cancelImg:"cancel.png",wmode:"opaque",scriptAccess:"sameDomain",fileDataName:"Filedata",method:"POST",queueSizeLimit:999,simUploadLimit:1,queueID:false,displayData:"percentage",onInit:function(){},onSelect:function(){},onQueueFull:function(){},onCheck:function(){},onCancel:function(){},onError:function(){},onProgress:function(){},onComplete:function(){},onAllComplete:function(){}},b);var e=location.pathname;e=e.split("/");e.pop();e=e.join("/")+"/";var f={};f.uploadifyID=settings.id;f.pagepath=e;if(settings.buttonImg){f.buttonImg=escape(settings.buttonImg)}if(settings.buttonText){f.buttonText=escape(settings.buttonText)}if(settings.rollover){f.rollover=true}f.script=settings.script;f.folder=escape(settings.folder);if(settings.scriptData){var g="";for(var d in settings.scriptData){g+="&"+d+"="+settings.scriptData[d]}f.scriptData=escape(g.substr(1))}f.width=settings.width;f.height=settings.height;f.wmode=settings.wmode;f.method=settings.method;f.queueSizeLimit=settings.queueSizeLimit;f.simUploadLimit=settings.simUploadLimit;if(settings.hideButton){f.hideButton=true}if(settings.fileDesc){f.fileDesc=settings.fileDesc}if(settings.fileExt){f.fileExt=settings.fileExt}if(settings.multi){f.multi=true}if(settings.auto){f.auto=true}if(settings.sizeLimit){f.sizeLimit=settings.sizeLimit}if(settings.checkScript){f.checkScript=settings.checkScript}if(settings.fileDataName){f.fileDataName=settings.fileDataName}if(settings.queueID){f.queueID=settings.queueID}if(settings.onInit()!==false){a(this).css("display","none");a(this).after('
');swfobject.embedSWF(settings.uploader,settings.id+"Uploader",settings.width,settings.height,"9.0.24",settings.expressInstall,f,{quality:"high",wmode:settings.wmode,allowScriptAccess:settings.scriptAccess});if(settings.queueID==false){a("#"+a(this).attr("id")+"Uploader").after('
')}}if(typeof(settings.onOpen)=="function"){a(this).bind("uploadifyOpen",settings.onOpen)}a(this).bind("uploadifySelect",{action:settings.onSelect,queueID:settings.queueID},function(j,h,i){if(j.data.action(j,h,i)!==false){var k=Math.round(i.size/1024*100)*0.01;var l="KB";if(k>1000){k=Math.round(k*0.001*100)*0.01;l="MB"}var m=k.toString().split(".");if(m.length>1){k=m[0]+"."+m[1].substr(0,2)}else{k=m[0]}if(i.name.length>20){fileName=i.name.substr(0,20)+"..."}else{fileName=i.name}queue="#"+a(this).attr("id")+"Queue";if(j.data.queueID){queue="#"+j.data.queueID}a(queue).append('
'+fileName+" ("+k+l+')
')}});if(typeof(settings.onSelectOnce)=="function"){a(this).bind("uploadifySelectOnce",settings.onSelectOnce)}a(this).bind("uploadifyQueueFull",{action:settings.onQueueFull},function(h,i){if(h.data.action(h,i)!==false){alert("The queue is full. The max size is "+i+".")}});a(this).bind("uploadifyCheckExist",{action:settings.onCheck},function(m,l,k,j,o){var i=new Object();i=k;i.folder=e+j;if(o){for(var h in k){var n=h}}a.post(l,i,function(r){for(var p in r){if(m.data.action(m,l,k,j,o)!==false){var q=confirm("Do you want to replace the file "+r[p]+"?");if(!q){document.getElementById(a(m.target).attr("id")+"Uploader").cancelFileUpload(p,true,true)}}}if(o){document.getElementById(a(m.target).attr("id")+"Uploader").startFileUpload(n,true)}else{document.getElementById(a(m.target).attr("id")+"Uploader").startFileUpload(null,true)}},"json")});a(this).bind("uploadifyCancel",{action:settings.onCancel},function(l,h,k,m,j){if(l.data.action(l,h,k,m,j)!==false){var i=(j==true)?0:250;a("#"+a(this).attr("id")+h).fadeOut(i,function(){a(this).remove()})}});if(typeof(settings.onClearQueue)=="function"){a(this).bind("uploadifyClearQueue",settings.onClearQueue)}var c=[];a(this).bind("uploadifyError",{action:settings.onError},function(l,h,k,j){if(l.data.action(l,h,k,j)!==false){var i=new Array(h,k,j);c.push(i);a("#"+a(this).attr("id")+h+" .percentage").text(" - "+j.type+" Error");a("#"+a(this).attr("id")+h).addClass("uploadifyError")}});a(this).bind("uploadifyProgress",{action:settings.onProgress,toDisplay:settings.displayData},function(j,h,i,k){if(j.data.action(j,h,i,k)!==false){a("#"+a(this).attr("id")+h+"ProgressBar").css("width",k.percentage+"%");if(j.data.toDisplay=="percentage"){displayData=" - "+k.percentage+"%"}if(j.data.toDisplay=="speed"){displayData=" - "+k.speed+"KB/s"}if(j.data.toDisplay==null){displayData=" "}a("#"+a(this).attr("id")+h+" .percentage").text(displayData)}});a(this).bind("uploadifyComplete",{action:settings.onComplete},function(k,h,j,i,l){if(k.data.action(k,h,j,unescape(i),l)!==false){a("#"+a(this).attr("id")+h+" .percentage").text(" - Completed");a("#"+a(this).attr("id")+h).fadeOut(250,function(){a(this).remove()})}});if(typeof(settings.onAllComplete)=="function"){a(this).bind("uploadifyAllComplete",{action:settings.onAllComplete},function(h,i){if(h.data.action(h,i)!==false){c=[]}})}})},uploadifySettings:function(f,j,c){var g=false;a(this).each(function(){if(f=="scriptData"&&j!=null){if(c){var i=j}else{var i=a.extend(settings.scriptData,j)}var l="";for(var k in i){l+="&"+k+"="+escape(i[k])}j=l.substr(1)}g=document.getElementById(a(this).attr("id")+"Uploader").updateSettings(f,j)});if(j==null){if(f=="scriptData"){var b=unescape(g).split("&");var e=new Object();for(var d=0;d + is released under the MIT License +*/ +var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y0){for(var af=0;af0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad'}}aa.outerHTML='"+af+"";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab \ No newline at end of file diff --git a/platforma/static/filebrowser/uploadify/example/scripts/uploadify.swf b/platforma/static/filebrowser/uploadify/example/scripts/uploadify.swf new file mode 100755 index 00000000..4d27952f Binary files /dev/null and b/platforma/static/filebrowser/uploadify/example/scripts/uploadify.swf differ diff --git a/platforma/static/filebrowser/uploadify/example/uploads/.svn/all-wcprops b/platforma/static/filebrowser/uploadify/example/uploads/.svn/all-wcprops new file mode 100644 index 00000000..95ccd61b --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/uploads/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 96 +/svn/!svn/ver/459/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/uploads +END diff --git a/platforma/static/filebrowser/uploadify/example/uploads/.svn/entries b/platforma/static/filebrowser/uploadify/example/uploads/.svn/entries new file mode 100644 index 00000000..74afe082 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/example/uploads/.svn/entries @@ -0,0 +1,28 @@ +10 + +dir +466 +http://django-filebrowser.googlecode.com/svn/branches/filebrowser_3/filebrowser/media/filebrowser/uploadify/example/uploads +http://django-filebrowser.googlecode.com/svn + + + +2009-10-12T09:29:29.900685Z +459 +sehmaschine + + + + + + + + + + + + + + +b1eb0509-c838-0410-b15c-e5ce2c1b85ca + diff --git a/platforma/static/filebrowser/uploadify/expressInstall.swf b/platforma/static/filebrowser/uploadify/expressInstall.swf new file mode 100755 index 00000000..0fbf8fca Binary files /dev/null and b/platforma/static/filebrowser/uploadify/expressInstall.swf differ diff --git a/platforma/static/filebrowser/uploadify/jquery-1.3.2.min.js b/platforma/static/filebrowser/uploadify/jquery-1.3.2.min.js new file mode 100755 index 00000000..b1ae21d8 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/jquery-1.3.2.min.js @@ -0,0 +1,19 @@ +/* + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file diff --git a/platforma/static/filebrowser/uploadify/jquery.uploadify.v2.1.0.js b/platforma/static/filebrowser/uploadify/jquery.uploadify.v2.1.0.js new file mode 100755 index 00000000..9a78cd32 --- /dev/null +++ b/platforma/static/filebrowser/uploadify/jquery.uploadify.v2.1.0.js @@ -0,0 +1,258 @@ +/* +Uploadify v2.1.0 +Release Date: August 24, 2009 + +Copyright (c) 2009 Ronnie Garcia, Travis Nickels + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +if(jQuery)( + function(jQuery){ + jQuery.extend(jQuery.fn,{ + uploadify:function(options) { + jQuery(this).each(function(){ + settings = jQuery.extend({ + id : jQuery(this).attr('id'), // The ID of the object being Uploadified + uploader : 'uploadify.swf', // The path to the uploadify swf file + script : 'uploadify.php', // The path to the uploadify backend upload script + expressInstall : null, // The path to the express install swf file + folder : '', // The path to the upload folder + height : 30, // The height of the flash button + width : 110, // The width of the flash button + cancelImg : 'cancel.png', // The path to the cancel image for the default file queue item container + wmode : 'opaque', // The wmode of the flash file + scriptAccess : 'sameDomain', // Set to "always" to allow script access across domains + fileDataName : 'Filedata', // The name of the file collection object in the backend upload script + method : 'POST', // The method for sending variables to the backend upload script + queueSizeLimit : 999, // The maximum size of the file queue + simUploadLimit : 1, // The number of simultaneous uploads allowed + queueID : false, // The optional ID of the queue container + displayData : 'percentage', // Set to "speed" to show the upload speed in the default queue item + onInit : function() {}, // Function to run when uploadify is initialized + onSelect : function() {}, // Function to run when a file is selected + onQueueFull : function() {}, // Function to run when the queue reaches capacity + onCheck : function() {}, // Function to run when script checks for duplicate files on the server + onCancel : function() {}, // Function to run when an item is cleared from the queue + onError : function() {}, // Function to run when an upload item returns an error + onProgress : function() {}, // Function to run each time the upload progress is updated + onComplete : function() {}, // Function to run when an upload is completed + onAllComplete : function() {} // Functino to run when all uploads are completed + }, options); + var pagePath = location.pathname; + pagePath = pagePath.split('/'); + pagePath.pop(); + pagePath = pagePath.join('/') + '/'; + var data = {}; + data.uploadifyID = settings.id; + data.pagepath = pagePath; + if (settings.buttonImg) data.buttonImg = escape(settings.buttonImg); + if (settings.buttonText) data.buttonText = escape(settings.buttonText); + if (settings.rollover) data.rollover = true; + data.script = settings.script; + data.folder = escape(settings.folder); + if (settings.scriptData) { + var scriptDataString = ''; + for (var name in settings.scriptData) { + scriptDataString += '&' + name + '=' + settings.scriptData[name]; + } + data.scriptData = escape(scriptDataString.substr(1)); + } + data.width = settings.width; + data.height = settings.height; + data.wmode = settings.wmode; + data.method = settings.method; + data.queueSizeLimit = settings.queueSizeLimit; + data.simUploadLimit = settings.simUploadLimit; + if (settings.hideButton) data.hideButton = true; + if (settings.fileDesc) data.fileDesc = settings.fileDesc; + if (settings.fileExt) data.fileExt = settings.fileExt; + if (settings.multi) data.multi = true; + if (settings.auto) data.auto = true; + if (settings.sizeLimit) data.sizeLimit = settings.sizeLimit; + if (settings.checkScript) data.checkScript = settings.checkScript; + if (settings.fileDataName) data.fileDataName = settings.fileDataName; + if (settings.queueID) data.queueID = settings.queueID; + if (settings.onInit() !== false) { + jQuery(this).css('display','none'); + jQuery(this).after('
'); + swfobject.embedSWF(settings.uploader, settings.id + 'Uploader', settings.width, settings.height, '9.0.24', settings.expressInstall, data, {'quality':'high','wmode':settings.wmode,'allowScriptAccess':settings.scriptAccess}); + if (settings.queueID == false) { + jQuery("#" + jQuery(this).attr('id') + "Uploader").after('
'); + } + } + if (typeof(settings.onOpen) == 'function') { + jQuery(this).bind("uploadifyOpen", settings.onOpen); + } + jQuery(this).bind("uploadifySelect", {'action': settings.onSelect, 'queueID': settings.queueID}, function(event, ID, fileObj) { + if (event.data.action(event, ID, fileObj) !== false) { + var byteSize = Math.round(fileObj.size / 1024 * 100) * .01; + var suffix = 'KB'; + if (byteSize > 1000) { + byteSize = Math.round(byteSize *.001 * 100) * .01; + suffix = 'MB'; + } + var sizeParts = byteSize.toString().split('.'); + if (sizeParts.length > 1) { + byteSize = sizeParts[0] + '.' + sizeParts[1].substr(0,2); + } else { + byteSize = sizeParts[0]; + } + if (fileObj.name.length > 20) { + fileName = fileObj.name.substr(0,20) + '...'; + } else { + fileName = fileObj.name; + } + queue = '#' + jQuery(this).attr('id') + 'Queue'; + if (event.data.queueID) { + queue = '#' + event.data.queueID; + } + jQuery(queue).append('
\ +
\ + \ +
\ + ' + fileName + ' (' + byteSize + suffix + ')\ +
\ +
\ +
\ +
'); + } + }); + if (typeof(settings.onSelectOnce) == 'function') { + jQuery(this).bind("uploadifySelectOnce", settings.onSelectOnce); + } + jQuery(this).bind("uploadifyQueueFull", {'action': settings.onQueueFull}, function(event, queueSizeLimit) { + if (event.data.action(event, queueSizeLimit) !== false) { + alert('The queue is full. The max size is ' + queueSizeLimit + '.'); + } + }); + jQuery(this).bind("uploadifyCheckExist", {'action': settings.onCheck}, function(event, checkScript, fileQueueObj, folder, single) { + var postData = new Object(); + postData = fileQueueObj; + postData.folder = pagePath + folder; + if (single) { + for (var ID in fileQueueObj) { + var singleFileID = ID; + } + } + jQuery.post(checkScript, postData, function(data) { + for(var key in data) { + if (event.data.action(event, checkScript, fileQueueObj, folder, single) !== false) { + var replaceFile = confirm("Do you want to replace the file " + data[key] + "?"); + if (!replaceFile) { + document.getElementById(jQuery(event.target).attr('id') + 'Uploader').cancelFileUpload(key, true,true); + } + } + } + if (single) { + document.getElementById(jQuery(event.target).attr('id') + 'Uploader').startFileUpload(singleFileID, true); + } else { + document.getElementById(jQuery(event.target).attr('id') + 'Uploader').startFileUpload(null, true); + } + }, "json"); + }); + jQuery(this).bind("uploadifyCancel", {'action': settings.onCancel}, function(event, ID, fileObj, data, clearFast) { + if (event.data.action(event, ID, fileObj, data, clearFast) !== false) { + var fadeSpeed = (clearFast == true) ? 0 : 250; + jQuery("#" + jQuery(this).attr('id') + ID).fadeOut(fadeSpeed, function() { jQuery(this).remove() }); + } + }); + if (typeof(settings.onClearQueue) == 'function') { + jQuery(this).bind("uploadifyClearQueue", settings.onClearQueue); + } + var errorArray = []; + jQuery(this).bind("uploadifyError", {'action': settings.onError}, function(event, ID, fileObj, errorObj) { + if (event.data.action(event, ID, fileObj, errorObj) !== false) { + var fileArray = new Array(ID, fileObj, errorObj); + errorArray.push(fileArray); + jQuery("#" + jQuery(this).attr('id') + ID + " .percentage").text(" - " + errorObj.type + " Error"); + jQuery("#" + jQuery(this).attr('id') + ID).addClass('uploadifyError'); + } + }); + jQuery(this).bind("uploadifyProgress", {'action': settings.onProgress, 'toDisplay': settings.displayData}, function(event, ID, fileObj, data) { + if (event.data.action(event, ID, fileObj, data) !== false) { + jQuery("#" + jQuery(this).attr('id') + ID + "ProgressBar").css('width', data.percentage + '%'); + if (event.data.toDisplay == 'percentage') displayData = ' - ' + data.percentage + '%'; + if (event.data.toDisplay == 'speed') displayData = ' - ' + data.speed + 'KB/s'; + if (event.data.toDisplay == null) displayData = ' '; + jQuery("#" + jQuery(this).attr('id') + ID + " .percentage").text(displayData); + } + }); + jQuery(this).bind("uploadifyComplete", {'action': settings.onComplete}, function(event, ID, fileObj, response, data) { + if (event.data.action(event, ID, fileObj, unescape(response), data) !== false) { + jQuery("#" + jQuery(this).attr('id') + ID + " .percentage").text(' - Completed'); + jQuery("#" + jQuery(this).attr('id') + ID).fadeOut(250, function() { jQuery(this).remove()}); + } + }); + if (typeof(settings.onAllComplete) == 'function') { + jQuery(this).bind("uploadifyAllComplete", {'action': settings.onAllComplete}, function(event, uploadObj) { + if (event.data.action(event, uploadObj) !== false) { + errorArray = []; + } + }); + } + }); + }, + uploadifySettings:function(settingName, settingValue, resetObject) { + var returnValue = false; + jQuery(this).each(function() { + if (settingName == 'scriptData' && settingValue != null) { + if (resetObject) { + var scriptData = settingValue; + } else { + var scriptData = jQuery.extend(settings.scriptData, settingValue); + } + var scriptDataString = ''; + for (var name in scriptData) { + scriptDataString += '&' + name + '=' + escape(scriptData[name]); + } + settingValue = scriptDataString.substr(1); + } + returnValue = document.getElementById(jQuery(this).attr('id') + 'Uploader').updateSettings(settingName, settingValue); + }); + if (settingValue == null) { + if (settingName == 'scriptData') { + var returnSplit = unescape(returnValue).split('&'); + var returnObj = new Object(); + for (var i = 0; i < returnSplit.length; i++) { + var iSplit = returnSplit[i].split('='); + returnObj[iSplit[0]] = iSplit[1]; + } + returnValue = returnObj; + } + return returnValue; + } + }, + uploadifyUpload:function(ID) { + jQuery(this).each(function() { + document.getElementById(jQuery(this).attr('id') + 'Uploader').startFileUpload(ID, false); + }); + }, + uploadifyCancel:function(ID) { + jQuery(this).each(function() { + document.getElementById(jQuery(this).attr('id') + 'Uploader').cancelFileUpload(ID, true, false); + }); + }, + uploadifyClearQueue:function() { + jQuery(this).each(function() { + document.getElementById(jQuery(this).attr('id') + 'Uploader').clearFileUploadQueue(false); + }); + } + }) +})(jQuery); \ No newline at end of file diff --git a/platforma/static/filebrowser/uploadify/jquery.uploadify.v2.1.0.min.js b/platforma/static/filebrowser/uploadify/jquery.uploadify.v2.1.0.min.js new file mode 100755 index 00000000..04592ffe --- /dev/null +++ b/platforma/static/filebrowser/uploadify/jquery.uploadify.v2.1.0.min.js @@ -0,0 +1,26 @@ +/* +Uploadify v2.1.0 +Release Date: August 24, 2009 + +Copyright (c) 2009 Ronnie Garcia, Travis Nickels + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +if(jQuery){(function(a){a.extend(a.fn,{uploadify:function(b){a(this).each(function(){settings=a.extend({id:a(this).attr("id"),uploader:"uploadify.swf",script:"uploadify.php",expressInstall:null,folder:"",height:30,width:110,cancelImg:"cancel.png",wmode:"opaque",scriptAccess:"sameDomain",fileDataName:"Filedata",method:"POST",queueSizeLimit:999,simUploadLimit:1,queueID:false,displayData:"percentage",onInit:function(){},onSelect:function(){},onQueueFull:function(){},onCheck:function(){},onCancel:function(){},onError:function(){},onProgress:function(){},onComplete:function(){},onAllComplete:function(){}},b);var e=location.pathname;e=e.split("/");e.pop();e=e.join("/")+"/";var f={};f.uploadifyID=settings.id;f.pagepath=e;if(settings.buttonImg){f.buttonImg=escape(settings.buttonImg)}if(settings.buttonText){f.buttonText=escape(settings.buttonText)}if(settings.rollover){f.rollover=true}f.script=settings.script;f.folder=escape(settings.folder);if(settings.scriptData){var g="";for(var d in settings.scriptData){g+="&"+d+"="+settings.scriptData[d]}f.scriptData=escape(g.substr(1))}f.width=settings.width;f.height=settings.height;f.wmode=settings.wmode;f.method=settings.method;f.queueSizeLimit=settings.queueSizeLimit;f.simUploadLimit=settings.simUploadLimit;if(settings.hideButton){f.hideButton=true}if(settings.fileDesc){f.fileDesc=settings.fileDesc}if(settings.fileExt){f.fileExt=settings.fileExt}if(settings.multi){f.multi=true}if(settings.auto){f.auto=true}if(settings.sizeLimit){f.sizeLimit=settings.sizeLimit}if(settings.checkScript){f.checkScript=settings.checkScript}if(settings.fileDataName){f.fileDataName=settings.fileDataName}if(settings.queueID){f.queueID=settings.queueID}if(settings.onInit()!==false){a(this).css("display","none");a(this).after('
');swfobject.embedSWF(settings.uploader,settings.id+"Uploader",settings.width,settings.height,"9.0.24",settings.expressInstall,f,{quality:"high",wmode:settings.wmode,allowScriptAccess:settings.scriptAccess});if(settings.queueID==false){a("#"+a(this).attr("id")+"Uploader").after('
')}}if(typeof(settings.onOpen)=="function"){a(this).bind("uploadifyOpen",settings.onOpen)}a(this).bind("uploadifySelect",{action:settings.onSelect,queueID:settings.queueID},function(j,h,i){if(j.data.action(j,h,i)!==false){var k=Math.round(i.size/1024*100)*0.01;var l="KB";if(k>1000){k=Math.round(k*0.001*100)*0.01;l="MB"}var m=k.toString().split(".");if(m.length>1){k=m[0]+"."+m[1].substr(0,2)}else{k=m[0]}if(i.name.length>20){fileName=i.name.substr(0,20)+"..."}else{fileName=i.name}queue="#"+a(this).attr("id")+"Queue";if(j.data.queueID){queue="#"+j.data.queueID}a(queue).append('
'+fileName+" ("+k+l+')
')}});if(typeof(settings.onSelectOnce)=="function"){a(this).bind("uploadifySelectOnce",settings.onSelectOnce)}a(this).bind("uploadifyQueueFull",{action:settings.onQueueFull},function(h,i){if(h.data.action(h,i)!==false){alert("The queue is full. The max size is "+i+".")}});a(this).bind("uploadifyCheckExist",{action:settings.onCheck},function(m,l,k,j,o){var i=new Object();i=k;i.folder=e+j;if(o){for(var h in k){var n=h}}a.post(l,i,function(r){for(var p in r){if(m.data.action(m,l,k,j,o)!==false){var q=confirm("Do you want to replace the file "+r[p]+"?");if(!q){document.getElementById(a(m.target).attr("id")+"Uploader").cancelFileUpload(p,true,true)}}}if(o){document.getElementById(a(m.target).attr("id")+"Uploader").startFileUpload(n,true)}else{document.getElementById(a(m.target).attr("id")+"Uploader").startFileUpload(null,true)}},"json")});a(this).bind("uploadifyCancel",{action:settings.onCancel},function(l,h,k,m,j){if(l.data.action(l,h,k,m,j)!==false){var i=(j==true)?0:250;a("#"+a(this).attr("id")+h).fadeOut(i,function(){a(this).remove()})}});if(typeof(settings.onClearQueue)=="function"){a(this).bind("uploadifyClearQueue",settings.onClearQueue)}var c=[];a(this).bind("uploadifyError",{action:settings.onError},function(l,h,k,j){if(l.data.action(l,h,k,j)!==false){var i=new Array(h,k,j);c.push(i);a("#"+a(this).attr("id")+h+" .percentage").text(" - "+j.type+" Error");a("#"+a(this).attr("id")+h).addClass("uploadifyError")}});a(this).bind("uploadifyProgress",{action:settings.onProgress,toDisplay:settings.displayData},function(j,h,i,k){if(j.data.action(j,h,i,k)!==false){a("#"+a(this).attr("id")+h+"ProgressBar").css("width",k.percentage+"%");if(j.data.toDisplay=="percentage"){displayData=" - "+k.percentage+"%"}if(j.data.toDisplay=="speed"){displayData=" - "+k.speed+"KB/s"}if(j.data.toDisplay==null){displayData=" "}a("#"+a(this).attr("id")+h+" .percentage").text(displayData)}});a(this).bind("uploadifyComplete",{action:settings.onComplete},function(k,h,j,i,l){if(k.data.action(k,h,j,unescape(i),l)!==false){a("#"+a(this).attr("id")+h+" .percentage").text(" - Completed");a("#"+a(this).attr("id")+h).fadeOut(250,function(){a(this).remove()})}});if(typeof(settings.onAllComplete)=="function"){a(this).bind("uploadifyAllComplete",{action:settings.onAllComplete},function(h,i){if(h.data.action(h,i)!==false){c=[]}})}})},uploadifySettings:function(f,j,c){var g=false;a(this).each(function(){if(f=="scriptData"&&j!=null){if(c){var i=j}else{var i=a.extend(settings.scriptData,j)}var l="";for(var k in i){l+="&"+k+"="+escape(i[k])}j=l.substr(1)}g=document.getElementById(a(this).attr("id")+"Uploader").updateSettings(f,j)});if(j==null){if(f=="scriptData"){var b=unescape(g).split("&");var e=new Object();for(var d=0;d + is released under the MIT License +*/ +var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y0){for(var af=0;af0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad'}}aa.outerHTML='"+af+"";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab \ No newline at end of file diff --git a/platforma/static/filebrowser/uploadify/uploadify.swf b/platforma/static/filebrowser/uploadify/uploadify.swf new file mode 100755 index 00000000..0385d9e6 Binary files /dev/null and b/platforma/static/filebrowser/uploadify/uploadify.swf differ diff --git a/platforma/templates/admin/index.html b/platforma/templates/admin/index.html new file mode 100644 index 00000000..ab1ece2b --- /dev/null +++ b/platforma/templates/admin/index.html @@ -0,0 +1,83 @@ +{% extends "admin/base_site.html" %} +{% load i18n %} + +{% block extrastyle %}{{ block.super }}{% endblock %} + +{% block coltype %}colMS{% endblock %} + +{% block bodyclass %}dashboard{% endblock %} + +{% block breadcrumbs %}{% endblock %} + +{% block content %} +
+ +{% if app_list %} + + {% include "filebrowser/append.html" %} + + {% for app in app_list %} +
+ + + {% for model in app.models %} + + {% if model.perms.change %} + + {% else %} + + {% endif %} + + {% if model.perms.add %} + + {% else %} + + {% endif %} + + {% if model.perms.change %} + + {% else %} + + {% endif %} + + {% endfor %} +
{% blocktrans with app.name as name %}{{ name }}{% endblocktrans %}
{{ model.name }}{{ model.name }}{% trans 'Add' %} {% trans 'Change' %} 
+
+ {% endfor %} +{% else %} +

{% trans "You don't have permission to edit anything." %}

+{% endif %} +
+{% endblock %} + +{% block sidebar %} + +{% endblock %} diff --git a/platforma/urls.py b/platforma/urls.py index 786a6538..498b5b2e 100644 --- a/platforma/urls.py +++ b/platforma/urls.py @@ -22,6 +22,7 @@ urlpatterns = patterns('', url(r'^file/(?P[^/]+)/print$', 'explorer.views.print_html', name="file_print"), # Admin panel + (r'^admin/filebrowser/', include('filebrowser.urls')), url(r'^admin/doc/', include('django.contrib.admindocs.urls')), url(r'^admin/(.*)', admin.site.root),