Showing preview only (799K chars total). Download the full file or copy to clipboard to get everything.
Repository: dcramer/django-debug-toolbar
Branch: master
Commit: bf39bb03a077
Files: 97
Total size: 762.0 KB
Directory structure:
gitextract_prxbugz0/
├── .gitignore
├── AUTHORS
├── LICENSE
├── MANIFEST.in
├── NEWS
├── README.rst
├── debug_toolbar/
│ ├── __init__.py
│ ├── locale/
│ │ ├── de/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── django.mo
│ │ │ └── django.po
│ │ ├── en/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── django.mo
│ │ │ └── django.po
│ │ ├── es/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── django.mo
│ │ │ └── django.po
│ │ ├── fr/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── django.mo
│ │ │ └── django.po
│ │ ├── he/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── django.mo
│ │ │ └── django.po
│ │ └── ru/
│ │ └── LC_MESSAGES/
│ │ ├── django.mo
│ │ └── django.po
│ ├── management/
│ │ ├── __init__.py
│ │ └── commands/
│ │ ├── __init__.py
│ │ └── debugsqlshell.py
│ ├── media/
│ │ └── debug_toolbar/
│ │ ├── Makefile
│ │ ├── css/
│ │ │ └── toolbar.css
│ │ └── js/
│ │ ├── jquery.cookie.js
│ │ ├── jquery.js
│ │ └── toolbar.js
│ ├── middleware.py
│ ├── models.py
│ ├── panels/
│ │ ├── __init__.py
│ │ ├── cache.py
│ │ ├── headers.py
│ │ ├── logger.py
│ │ ├── profiling.py
│ │ ├── request_vars.py
│ │ ├── settings_vars.py
│ │ ├── signals.py
│ │ ├── sql.py
│ │ ├── template.py
│ │ ├── timer.py
│ │ └── version.py
│ ├── runtests.py
│ ├── templates/
│ │ └── debug_toolbar/
│ │ ├── base.html
│ │ ├── panels/
│ │ │ ├── cache.html
│ │ │ ├── headers.html
│ │ │ ├── logger.html
│ │ │ ├── profiling.html
│ │ │ ├── request_vars.html
│ │ │ ├── settings_vars.html
│ │ │ ├── signals.html
│ │ │ ├── sql.html
│ │ │ ├── sql_explain.html
│ │ │ ├── sql_profile.html
│ │ │ ├── sql_select.html
│ │ │ ├── template_source.html
│ │ │ ├── templates.html
│ │ │ ├── timer.html
│ │ │ └── versions.html
│ │ └── redirect.html
│ ├── tests/
│ │ ├── __init__.py
│ │ ├── templates/
│ │ │ └── 404.html
│ │ ├── tests.py
│ │ ├── urls.py
│ │ └── views.py
│ ├── toolbar/
│ │ ├── __init__.py
│ │ └── loader.py
│ ├── urls.py
│ ├── utils/
│ │ ├── __init__.py
│ │ ├── compat/
│ │ │ ├── __init__.py
│ │ │ └── db.py
│ │ ├── sqlparse/
│ │ │ ├── __init__.py
│ │ │ ├── engine/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── filter.py
│ │ │ │ └── grouping.py
│ │ │ ├── filters.py
│ │ │ ├── formatter.py
│ │ │ ├── keywords.py
│ │ │ ├── lexer.py
│ │ │ ├── sql.py
│ │ │ └── tokens.py
│ │ └── tracking/
│ │ ├── __init__.py
│ │ └── db.py
│ └── views.py
├── example/
│ ├── __init__.py
│ ├── manage.py
│ ├── media/
│ │ └── js/
│ │ ├── jquery.js
│ │ ├── mootools.js
│ │ └── prototype.js
│ ├── settings.py
│ ├── templates/
│ │ ├── admin/
│ │ │ └── login.html
│ │ ├── index.html
│ │ ├── jquery/
│ │ │ └── index.html
│ │ ├── mootools/
│ │ │ └── index.html
│ │ └── prototype/
│ │ └── index.html
│ └── urls.py
├── setup.cfg
└── setup.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
*.pyc
*.DS_Store
*~
django_debug_toolbar.egg-info
================================================
FILE: AUTHORS
================================================
The Django Debug Toolbar was original created by Rob Hudson <rob@cogit8.org> in
August 2008.
The following is a list of much appreciated contributors:
Reto Aebersold <aeby@atizo.com>
Andi Albrecht <albrecht.andi@gmail.com>
Chris Beaven <smileychris@gmail.com>
Kenneth Belitzky <kenny@belitzky.com>
Loic Bistuer <loic.bistuer@sixmedia.com>
Etienne Carrier <etienne@px9.ca>
David Cramer <dcramer@gmail.com>
Michael Elsdoerfer <michael@elsdoerfer.com>
Augie Fackler <durin42@gmail.com>
Dan Fairs <dan@fezconsulting.com>
Alex Gaynor <alex.gaynor@gmail.com>
Idan Gazit <idan@pixane.com>
Matt George <matt.george@myemma.com>
Adam Gomaa <adam@adam.gomaa.us>
Daniel Hahler <daniel@thequod.de>
Jacob Kaplan-Moss <jacob@jacobian.org>
Russell Keith-Magee <freakboy3742@gmail.com>
Mikhail Korobov <kmike84@gmail.com>
Arthur Koziel <arthur@arthurkoziel.com>
Jannis Leidel <jannis@leidel.info>
Martin Maney <maney@two14.net>
Percy Perez-Pinedo <percyp3@gmail.com>
Nowell Strite <nowell@strite.org>
Malcolm Tredinnick <malcolm@pointy-stick.com>
Bryan Veloso <bryan@revyver.com>
Simon Willison <simon@simonwillison.net>
Diego Búrigo Zacarão <diegobz@gmail.com>
Philip Zeyliger <philip@cloudera.com>
================================================
FILE: LICENSE
================================================
Copyright (c) Rob Hudson and individual contributors.
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 Django 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 COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
================================================
FILE: MANIFEST.in
================================================
include AUTHORS
include LICENSE
include README.rst
recursive-include debug_toolbar/media *
recursive-include debug_toolbar/templates *
================================================
FILE: NEWS
================================================
News for django-debug-toolbar
=============================
0.8.5 (2011 Apr 25)
-------------------
* Ensure if we're overriding the urlconf that we're resetting handler404/500.
* Updated middleware logic to avoid work if content-type isn't right.
* Change .load() calls to GET to avoid CSRF protection.
* Updated SQL panel to match Django's which now includes logging.
* Added basic multi-db support.
* Some HTML validation fixes.
* Added support for `executemany`. Thanks to postal2600.
* Added support for LogBook. Thanks to Vincent Driessen.
* Added clean_params method to DatabaseStatTracker to scrub non-unicode
data for displaying on the sql panel. Thanks to Matthew J Morrison
0.8.4 (2010 Nov 8)
------------------
* Added print style to hide the toolbar (issue 90)
* Fixed "Badly formatted SQL query plan" (issue 86)
* Fixed "SQL not selectable due to line chart" (issue 85)
* Fixed "Redirect page does not set cookie" (issue 6)
* Fixed template block inheritance bug (issues 77 and 97).
* Fixed flash of unstyled toolbar.
* Updated to work with old TEMPLATE_LOADERS settings from < 1.2.
* Updated to stop template loader iteration when template is found.
(Note: NEWS was started after the 0.8.3 release and is not complete)
================================================
FILE: README.rst
================================================
====================
Django Debug Toolbar
====================
The Django Debug Toolbar is a configurable set of panels that display various
debug information about the current request/response and when clicked, display
more details about the panel's content.
Currently, the following panels have been written and are working:
- Django version
- Request timer
- A list of settings in settings.py
- Common HTTP headers
- GET/POST/cookie/session variable display
- Templates and context used, and their template paths
- SQL queries including time to execute and links to EXPLAIN each query
- List of signals, their args and receivers
- Logging output via Python's built-in logging, or via the `logbook <http://logbook.pocoo.org>`_ module
There is also one Django management command currently:
- `debugsqlshell`: Outputs the SQL that gets executed as you work in the Python
interactive shell. (See example below)
If you have ideas for other panels please let us know.
Installation
============
#. Add the `debug_toolbar` directory to your Python path.
#. Add the following middleware to your project's `settings.py` file:
``'debug_toolbar.middleware.DebugToolbarMiddleware',``
Tying into middleware allows each panel to be instantiated on request and
rendering to happen on response.
The order of MIDDLEWARE_CLASSES is important: the Debug Toolbar middleware
must come after any other middleware that encodes the response's content
(such as GZipMiddleware).
Note: The debug toolbar will only display itself if the mimetype of the
response is either `text/html` or `application/xhtml+xml` and contains a
closing `</body>` tag.
Note: Be aware of middleware ordering and other middleware that may
intercept requests and return responses. Putting the debug toolbar
middleware *after* the Flatpage middleware, for example, means the
toolbar will not show up on flatpages.
#. Make sure your IP is listed in the `INTERNAL_IPS` setting. If you are
working locally this will be:
INTERNAL_IPS = ('127.0.0.1',)
Note: This is required because of the built-in requirements of the
`show_toolbar` method. See below for how to define a method to determine
your own logic for displaying the toolbar.
#. Add `debug_toolbar` to your `INSTALLED_APPS` setting so Django can find the
template files associated with the Debug Toolbar.
Alternatively, add the path to the debug toolbar templates
(``'path/to/debug_toolbar/templates'`` to your ``TEMPLATE_DIRS`` setting.)
Configuration
=============
The debug toolbar has two settings that can be set in `settings.py`:
#. Optional: Add a tuple called `DEBUG_TOOLBAR_PANELS` to your ``settings.py``
file that specifies the full Python path to the panel that you want included
in the Toolbar. This setting looks very much like the `MIDDLEWARE_CLASSES`
setting. For example::
DEBUG_TOOLBAR_PANELS = (
'debug_toolbar.panels.version.VersionDebugPanel',
'debug_toolbar.panels.timer.TimerDebugPanel',
'debug_toolbar.panels.settings_vars.SettingsVarsDebugPanel',
'debug_toolbar.panels.headers.HeaderDebugPanel',
'debug_toolbar.panels.request_vars.RequestVarsDebugPanel',
'debug_toolbar.panels.template.TemplateDebugPanel',
'debug_toolbar.panels.sql.SQLDebugPanel',
'debug_toolbar.panels.signals.SignalDebugPanel',
'debug_toolbar.panels.logger.LoggingPanel',
)
You can change the ordering of this tuple to customize the order of the
panels you want to display, or add/remove panels. If you have custom panels
you can include them in this way -- just provide the full Python path to
your panel.
#. Optional: There are a few configuration options to the debug toolbar that
can be placed in a dictionary:
* `INTERCEPT_REDIRECTS`: If set to True (default), the debug toolbar will
show an intermediate page upon redirect so you can view any debug
information prior to redirecting. This page will provide a link to the
redirect destination you can follow when ready. If set to False, redirects
will proceed as normal.
* `SHOW_TOOLBAR_CALLBACK`: If not set or set to None, the debug_toolbar
middleware will use its built-in show_toolbar method for determining whether
the toolbar should show or not. The default checks are that DEBUG must be
set to True and the IP of the request must be in INTERNAL_IPS. You can
provide your own method for displaying the toolbar which contains your
custom logic. This method should return True or False.
* `EXTRA_SIGNALS`: An array of custom signals that might be in your project,
defined as the python path to the signal.
* `HIDE_DJANGO_SQL`: If set to True (the default) then code in Django itself
won't be shown in SQL stacktraces.
* `SHOW_TEMPLATE_CONTEXT`: If set to True (the default) then a template's
context will be included with it in the Template debug panel. Turning this
off is useful when you have large template contexts, or you have template
contexts with lazy datastructures that you don't want to be evaluated.
* `TAG`: If set, this will be the tag to which debug_toolbar will attach the
debug toolbar. Defaults to 'body'.
Example configuration::
def custom_show_toolbar(request):
return True # Always show toolbar, for example purposes only.
DEBUG_TOOLBAR_CONFIG = {
'INTERCEPT_REDIRECTS': False,
'SHOW_TOOLBAR_CALLBACK': custom_show_toolbar,
'EXTRA_SIGNALS': ['myproject.signals.MySignal'],
'HIDE_DJANGO_SQL': False,
'TAG': 'div',
}
`debugsqlshell`
===============
The following is sample output from running the `debugsqlshell` management
command. Each ORM call that results in a database query will be beautifully
output in the shell::
$ ./manage.py debugsqlshell
Python 2.6.1 (r261:67515, Jul 7 2009, 23:51:51)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from page.models import Page
>>> ### Lookup and use resulting in an extra query...
>>> p = Page.objects.get(pk=1)
SELECT "page_page"."id",
"page_page"."number",
"page_page"."template_id",
"page_page"."description"
FROM "page_page"
WHERE "page_page"."id" = 1
>>> print p.template.name
SELECT "page_template"."id",
"page_template"."name",
"page_template"."description"
FROM "page_template"
WHERE "page_template"."id" = 1
Home
>>> ### Using select_related to avoid 2nd database call...
>>> p = Page.objects.select_related('template').get(pk=1)
SELECT "page_page"."id",
"page_page"."number",
"page_page"."template_id",
"page_page"."description",
"page_template"."id",
"page_template"."name",
"page_template"."description"
FROM "page_page"
INNER JOIN "page_template" ON ("page_page"."template_id" = "page_template"."id")
WHERE "page_page"."id" = 1
>>> print p.template.name
Home
TODOs and BUGS
==============
See: https://github.com/django-debug-toolbar/django-debug-toolbar/issues
================================================
FILE: debug_toolbar/__init__.py
================================================
VERSION = (0, 8, 5)
__version__ = '.'.join(map(str, VERSION))
================================================
FILE: debug_toolbar/locale/de/LC_MESSAGES/django.po
================================================
# Django Debug Toolbar auf Deutsch.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Jannis Leidel, 2009.
#
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-11-18 08:06-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: panels/cache.py:92
#, python-format
msgid "Cache: %.2fms"
msgstr ""
#: panels/cache.py:95
msgid "Cache Usage"
msgstr ""
#: panels/headers.py:36 panels/headers.py:39
msgid "HTTP Headers"
msgstr ""
#: panels/logger.py:56
msgid "Logging"
msgstr "Logging"
#: panels/logger.py:63
#, fuzzy
msgid "Log Messages"
msgstr "Nachricht"
#: panels/request_vars.py:13 panels/request_vars.py:16
msgid "Request Vars"
msgstr ""
#: panels/settings_vars.py:16
msgid "Settings"
msgstr "Einstellungen"
#: panels/settings_vars.py:19
#, python-format
msgid "Settings from <code>%s</code>"
msgstr ""
#: panels/signals.py:39 panels/signals.py:42
msgid "Signals"
msgstr "Signals"
#: panels/sql.py:146
msgid "SQL"
msgstr ""
#: panels/sql.py:160
msgid "SQL Queries"
msgstr ""
#: panels/template.py:47
msgid "Templates"
msgstr "Templates"
#: panels/template.py:52
#, python-format
msgid "Templates (%(num_templates)s rendered)"
msgstr ""
#: panels/timer.py:35 templates/debug_toolbar/panels/cache.html:39
#: templates/debug_toolbar/panels/logger.html:7
#: templates/debug_toolbar/panels/sql.html:5
#: templates/debug_toolbar/panels/sql_explain.html:11
#: templates/debug_toolbar/panels/sql_profile.html:12
#: templates/debug_toolbar/panels/sql_select.html:11
msgid "Time"
msgstr "Zeit"
#: panels/timer.py:47
#, fuzzy
msgid "Resource Usage"
msgstr "Ressource"
#: panels/timer.py:78
msgid "User CPU time"
msgstr ""
#: panels/timer.py:79
msgid "System CPU time"
msgstr ""
#: panels/timer.py:80
#, fuzzy
msgid "Total CPU time"
msgstr "Zeit gesamt"
#: panels/timer.py:81
msgid "Elapsed time"
msgstr ""
#: panels/timer.py:82
msgid "Context switches"
msgstr ""
#: panels/version.py:20 panels/version.py:29
#, fuzzy
msgid "Versions"
msgstr "Django-Version"
#: templates/debug_toolbar/base.html:23
msgid "Hide Toolbar"
msgstr ""
#: templates/debug_toolbar/base.html:23
msgid "Hide"
msgstr "Verbergen"
#: templates/debug_toolbar/base.html:48
msgid "Show Toolbar"
msgstr ""
#: templates/debug_toolbar/base.html:54
msgid "Close"
msgstr "Schließen"
#: templates/debug_toolbar/redirect.html:7
#: templates/debug_toolbar/panels/logger.html:9
msgid "Location"
msgstr "Ort"
#: templates/debug_toolbar/redirect.html:9
msgid ""
"The Django Debug Toolbar has intercepted a redirect to the above URL for "
"debug viewing purposes. You can click the above link to continue with the "
"redirect as normal. If you'd like to disable this feature, set the "
"<code>DEBUG_TOOLBAR_CONFIG</code> dictionary's key "
"<code>INTERCEPT_REDIRECTS</code> to <code>False</code>."
msgstr ""
#: templates/debug_toolbar/panels/cache.html:14
msgid "Total Calls"
msgstr "Aufrufe gesamt"
#: templates/debug_toolbar/panels/cache.html:16
msgid "Total Time"
msgstr "Zeit gesamt"
#: templates/debug_toolbar/panels/cache.html:18
msgid "Hits"
msgstr "Aufrufe"
#: templates/debug_toolbar/panels/cache.html:20
msgid "Misses"
msgstr ""
#: templates/debug_toolbar/panels/cache.html:35
msgid "Breakdown"
msgstr ""
#: templates/debug_toolbar/panels/cache.html:40
msgid "Type"
msgstr "Typ"
#: templates/debug_toolbar/panels/cache.html:41
msgid "Parameters"
msgstr "Parameter"
#: templates/debug_toolbar/panels/cache.html:42
msgid "Function"
msgstr "Funktion"
#: templates/debug_toolbar/panels/headers.html:5
msgid "Key"
msgstr "Schlüssel"
#: templates/debug_toolbar/panels/headers.html:6
#: templates/debug_toolbar/panels/request_vars.html:37
#: templates/debug_toolbar/panels/request_vars.html:63
#: templates/debug_toolbar/panels/request_vars.html:85
#: templates/debug_toolbar/panels/request_vars.html:107
#: templates/debug_toolbar/panels/settings_vars.html:6
#: templates/debug_toolbar/panels/timer.html:10
msgid "Value"
msgstr "Wert"
#: templates/debug_toolbar/panels/logger.html:6
msgid "Level"
msgstr "Niveau"
#: templates/debug_toolbar/panels/logger.html:8
msgid "Message"
msgstr "Nachricht"
#: templates/debug_toolbar/panels/logger.html:24
msgid "No messages logged"
msgstr "Keine Nachricht gespeichert"
#: templates/debug_toolbar/panels/request_vars.html:3
msgid "View information"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:7
#, fuzzy
msgid "View Function"
msgstr "Funktion"
#: templates/debug_toolbar/panels/request_vars.html:8
msgid "args"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:9
msgid "kwargs"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:27
#, fuzzy
msgid "COOKIES Variables"
msgstr "Variable"
#: templates/debug_toolbar/panels/request_vars.html:36
#: templates/debug_toolbar/panels/request_vars.html:62
#: templates/debug_toolbar/panels/request_vars.html:84
#: templates/debug_toolbar/panels/request_vars.html:106
msgid "Variable"
msgstr "Variable"
#: templates/debug_toolbar/panels/request_vars.html:50
msgid "No COOKIE data"
msgstr "Keine COOKIE-Daten"
#: templates/debug_toolbar/panels/request_vars.html:53
#, fuzzy
msgid "SESSION Variables"
msgstr "Variable"
#: templates/debug_toolbar/panels/request_vars.html:76
msgid "No SESSION data"
msgstr "Keine SESSION-Daten"
#: templates/debug_toolbar/panels/request_vars.html:79
#, fuzzy
msgid "GET Variables"
msgstr "Variable"
#: templates/debug_toolbar/panels/request_vars.html:98
msgid "No GET data"
msgstr "Keine GET-Daten"
#: templates/debug_toolbar/panels/request_vars.html:101
#, fuzzy
msgid "POST Variables"
msgstr "Variable"
#: templates/debug_toolbar/panels/request_vars.html:120
msgid "No POST data"
msgstr "Keine POST-Daten"
#: templates/debug_toolbar/panels/settings_vars.html:5
msgid "Setting"
msgstr "Einstellung"
#: templates/debug_toolbar/panels/signals.html:5
msgid "Signal"
msgstr "Signal"
#: templates/debug_toolbar/panels/signals.html:6
msgid "Providing Args"
msgstr ""
#: templates/debug_toolbar/panels/signals.html:7
msgid "Receivers"
msgstr ""
#: templates/debug_toolbar/panels/sql.html:6
msgid "Action"
msgstr "Aktion"
#: templates/debug_toolbar/panels/sql.html:7
msgid "Stacktrace"
msgstr ""
#: templates/debug_toolbar/panels/sql.html:8
msgid "Query"
msgstr ""
#: templates/debug_toolbar/panels/sql.html:38
msgid "Line"
msgstr "Zeile"
#: templates/debug_toolbar/panels/sql.html:39
msgid "Method"
msgstr "Methode"
#: templates/debug_toolbar/panels/sql.html:40
msgid "File"
msgstr "Datei"
#: templates/debug_toolbar/panels/sql_explain.html:3
#: templates/debug_toolbar/panels/sql_profile.html:3
#: templates/debug_toolbar/panels/sql_select.html:3
#: templates/debug_toolbar/panels/template_source.html:3
msgid "Back"
msgstr "Zurück"
#: templates/debug_toolbar/panels/sql_explain.html:4
msgid "SQL Explained"
msgstr ""
#: templates/debug_toolbar/panels/sql_explain.html:9
#: templates/debug_toolbar/panels/sql_profile.html:10
#: templates/debug_toolbar/panels/sql_select.html:9
msgid "Executed SQL"
msgstr "Ausgeführtes SQL"
#: templates/debug_toolbar/panels/sql_profile.html:4
msgid "SQL Profiled"
msgstr ""
#: templates/debug_toolbar/panels/sql_profile.html:35
msgid "Error"
msgstr "Fehler"
#: templates/debug_toolbar/panels/sql_select.html:4
msgid "SQL Selected"
msgstr ""
#: templates/debug_toolbar/panels/sql_select.html:34
msgid "Empty set"
msgstr "Leeres Set"
#: templates/debug_toolbar/panels/template_source.html:4
#, fuzzy
msgid "Template Source"
msgstr "Template"
#: templates/debug_toolbar/panels/templates.html:2
#, fuzzy
msgid "Template path"
msgstr "Template"
#: templates/debug_toolbar/panels/templates.html:13
msgid "Template"
msgstr "Template"
#: templates/debug_toolbar/panels/templates.html:21
#: templates/debug_toolbar/panels/templates.html:37
msgid "Toggle Context"
msgstr ""
#: templates/debug_toolbar/panels/templates.html:28
#: templates/debug_toolbar/panels/templates.html:43
msgid "None"
msgstr "Nichts"
#: templates/debug_toolbar/panels/templates.html:31
msgid "Context processor"
msgstr ""
#: templates/debug_toolbar/panels/timer.html:9
msgid "Resource"
msgstr "Ressource"
#: templates/debug_toolbar/panels/versions.html:6
msgid "Package"
msgstr ""
#: templates/debug_toolbar/panels/versions.html:7
#, fuzzy
msgid "Version"
msgstr "Django-Version"
================================================
FILE: debug_toolbar/locale/en/LC_MESSAGES/django.po
================================================
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Percy Pérez-Pinedo, 2009.
#
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-11-18 08:06-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: panels/cache.py:92
#, python-format
msgid "Cache: %.2fms"
msgstr ""
#: panels/cache.py:95
msgid "Cache Usage"
msgstr ""
#: panels/headers.py:36 panels/headers.py:39
msgid "HTTP Headers"
msgstr ""
#: panels/logger.py:56
msgid "Logging"
msgstr ""
#: panels/logger.py:63
msgid "Log Messages"
msgstr ""
#: panels/request_vars.py:13 panels/request_vars.py:16
msgid "Request Vars"
msgstr ""
#: panels/settings_vars.py:16
msgid "Settings"
msgstr ""
#: panels/settings_vars.py:19
#, python-format
msgid "Settings from <code>%s</code>"
msgstr ""
#: panels/signals.py:39 panels/signals.py:42
msgid "Signals"
msgstr ""
#: panels/sql.py:146
msgid "SQL"
msgstr ""
#: panels/sql.py:160
msgid "SQL Queries"
msgstr ""
#: panels/template.py:47
msgid "Templates"
msgstr ""
#: panels/template.py:52
#, python-format
msgid "Templates (%(num_templates)s rendered)"
msgstr ""
#: panels/timer.py:35 templates/debug_toolbar/panels/cache.html:39
#: templates/debug_toolbar/panels/logger.html:7
#: templates/debug_toolbar/panels/sql.html:5
#: templates/debug_toolbar/panels/sql_explain.html:11
#: templates/debug_toolbar/panels/sql_profile.html:12
#: templates/debug_toolbar/panels/sql_select.html:11
msgid "Time"
msgstr ""
#: panels/timer.py:47
msgid "Resource Usage"
msgstr ""
#: panels/timer.py:78
msgid "User CPU time"
msgstr ""
#: panels/timer.py:79
msgid "System CPU time"
msgstr ""
#: panels/timer.py:80
msgid "Total CPU time"
msgstr ""
#: panels/timer.py:81
msgid "Elapsed time"
msgstr ""
#: panels/timer.py:82
msgid "Context switches"
msgstr ""
#: panels/version.py:20 panels/version.py:29
msgid "Versions"
msgstr ""
#: templates/debug_toolbar/base.html:23
msgid "Hide Toolbar"
msgstr ""
#: templates/debug_toolbar/base.html:23
msgid "Hide"
msgstr ""
#: templates/debug_toolbar/base.html:48
msgid "Show Toolbar"
msgstr ""
#: templates/debug_toolbar/base.html:54
msgid "Close"
msgstr ""
#: templates/debug_toolbar/redirect.html:7
#: templates/debug_toolbar/panels/logger.html:9
msgid "Location"
msgstr ""
#: templates/debug_toolbar/redirect.html:9
msgid ""
"The Django Debug Toolbar has intercepted a redirect to the above URL for "
"debug viewing purposes. You can click the above link to continue with the "
"redirect as normal. If you'd like to disable this feature, set the "
"<code>DEBUG_TOOLBAR_CONFIG</code> dictionary's key "
"<code>INTERCEPT_REDIRECTS</code> to <code>False</code>."
msgstr ""
#: templates/debug_toolbar/panels/cache.html:14
msgid "Total Calls"
msgstr ""
#: templates/debug_toolbar/panels/cache.html:16
msgid "Total Time"
msgstr ""
#: templates/debug_toolbar/panels/cache.html:18
msgid "Hits"
msgstr ""
#: templates/debug_toolbar/panels/cache.html:20
msgid "Misses"
msgstr ""
#: templates/debug_toolbar/panels/cache.html:35
msgid "Breakdown"
msgstr ""
#: templates/debug_toolbar/panels/cache.html:40
msgid "Type"
msgstr ""
#: templates/debug_toolbar/panels/cache.html:41
msgid "Parameters"
msgstr ""
#: templates/debug_toolbar/panels/cache.html:42
msgid "Function"
msgstr ""
#: templates/debug_toolbar/panels/headers.html:5
msgid "Key"
msgstr ""
#: templates/debug_toolbar/panels/headers.html:6
#: templates/debug_toolbar/panels/request_vars.html:37
#: templates/debug_toolbar/panels/request_vars.html:63
#: templates/debug_toolbar/panels/request_vars.html:85
#: templates/debug_toolbar/panels/request_vars.html:107
#: templates/debug_toolbar/panels/settings_vars.html:6
#: templates/debug_toolbar/panels/timer.html:10
msgid "Value"
msgstr ""
#: templates/debug_toolbar/panels/logger.html:6
msgid "Level"
msgstr ""
#: templates/debug_toolbar/panels/logger.html:8
msgid "Message"
msgstr ""
#: templates/debug_toolbar/panels/logger.html:24
msgid "No messages logged"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:3
msgid "View information"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:7
msgid "View Function"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:8
msgid "args"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:9
msgid "kwargs"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:27
msgid "COOKIES Variables"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:36
#: templates/debug_toolbar/panels/request_vars.html:62
#: templates/debug_toolbar/panels/request_vars.html:84
#: templates/debug_toolbar/panels/request_vars.html:106
msgid "Variable"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:50
msgid "No COOKIE data"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:53
msgid "SESSION Variables"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:76
msgid "No SESSION data"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:79
msgid "GET Variables"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:98
msgid "No GET data"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:101
msgid "POST Variables"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:120
msgid "No POST data"
msgstr ""
#: templates/debug_toolbar/panels/settings_vars.html:5
msgid "Setting"
msgstr ""
#: templates/debug_toolbar/panels/signals.html:5
msgid "Signal"
msgstr ""
#: templates/debug_toolbar/panels/signals.html:6
msgid "Providing Args"
msgstr ""
#: templates/debug_toolbar/panels/signals.html:7
msgid "Receivers"
msgstr ""
#: templates/debug_toolbar/panels/sql.html:6
msgid "Action"
msgstr ""
#: templates/debug_toolbar/panels/sql.html:7
msgid "Stacktrace"
msgstr ""
#: templates/debug_toolbar/panels/sql.html:8
msgid "Query"
msgstr ""
#: templates/debug_toolbar/panels/sql.html:38
msgid "Line"
msgstr ""
#: templates/debug_toolbar/panels/sql.html:39
msgid "Method"
msgstr ""
#: templates/debug_toolbar/panels/sql.html:40
msgid "File"
msgstr ""
#: templates/debug_toolbar/panels/sql_explain.html:3
#: templates/debug_toolbar/panels/sql_profile.html:3
#: templates/debug_toolbar/panels/sql_select.html:3
#: templates/debug_toolbar/panels/template_source.html:3
msgid "Back"
msgstr ""
#: templates/debug_toolbar/panels/sql_explain.html:4
msgid "SQL Explained"
msgstr ""
#: templates/debug_toolbar/panels/sql_explain.html:9
#: templates/debug_toolbar/panels/sql_profile.html:10
#: templates/debug_toolbar/panels/sql_select.html:9
msgid "Executed SQL"
msgstr ""
#: templates/debug_toolbar/panels/sql_profile.html:4
msgid "SQL Profiled"
msgstr ""
#: templates/debug_toolbar/panels/sql_profile.html:35
msgid "Error"
msgstr ""
#: templates/debug_toolbar/panels/sql_select.html:4
msgid "SQL Selected"
msgstr ""
#: templates/debug_toolbar/panels/sql_select.html:34
msgid "Empty set"
msgstr ""
#: templates/debug_toolbar/panels/template_source.html:4
msgid "Template Source"
msgstr ""
#: templates/debug_toolbar/panels/templates.html:2
msgid "Template path"
msgstr ""
#: templates/debug_toolbar/panels/templates.html:13
msgid "Template"
msgstr ""
#: templates/debug_toolbar/panels/templates.html:21
#: templates/debug_toolbar/panels/templates.html:37
msgid "Toggle Context"
msgstr ""
#: templates/debug_toolbar/panels/templates.html:28
#: templates/debug_toolbar/panels/templates.html:43
msgid "None"
msgstr ""
#: templates/debug_toolbar/panels/templates.html:31
msgid "Context processor"
msgstr ""
#: templates/debug_toolbar/panels/timer.html:9
msgid "Resource"
msgstr ""
#: templates/debug_toolbar/panels/versions.html:6
msgid "Package"
msgstr ""
#: templates/debug_toolbar/panels/versions.html:7
msgid "Version"
msgstr ""
================================================
FILE: debug_toolbar/locale/es/LC_MESSAGES/django.po
================================================
# Django Debug Toolbar en Español.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Percy Pérez-Pinedo <percyp3@gmail.com>, 2009.
#
# Caracteres especiales: á, é, í, ó, ú, ñ,
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-11-18 08:06-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: panels/cache.py:92
#, python-format
msgid "Cache: %.2fms"
msgstr ""
#: panels/cache.py:95
msgid "Cache Usage"
msgstr ""
#: panels/headers.py:36 panels/headers.py:39
msgid "HTTP Headers"
msgstr ""
#: panels/logger.py:56
msgid "Logging"
msgstr "Registros"
#: panels/logger.py:63
#, fuzzy
msgid "Log Messages"
msgstr "Mensaje"
#: panels/request_vars.py:13 panels/request_vars.py:16
msgid "Request Vars"
msgstr ""
#: panels/settings_vars.py:16
msgid "Settings"
msgstr "Configuraciones"
#: panels/settings_vars.py:19
#, python-format
msgid "Settings from <code>%s</code>"
msgstr ""
#: panels/signals.py:39 panels/signals.py:42
msgid "Signals"
msgstr "Señales"
#: panels/sql.py:146
msgid "SQL"
msgstr ""
#: panels/sql.py:160
msgid "SQL Queries"
msgstr ""
#: panels/template.py:47
msgid "Templates"
msgstr "Plantillas"
#: panels/template.py:52
#, python-format
msgid "Templates (%(num_templates)s rendered)"
msgstr ""
#: panels/timer.py:35 templates/debug_toolbar/panels/cache.html:39
#: templates/debug_toolbar/panels/logger.html:7
#: templates/debug_toolbar/panels/sql.html:5
#: templates/debug_toolbar/panels/sql_explain.html:11
#: templates/debug_toolbar/panels/sql_profile.html:12
#: templates/debug_toolbar/panels/sql_select.html:11
msgid "Time"
msgstr "Tiempo"
#: panels/timer.py:47
#, fuzzy
msgid "Resource Usage"
msgstr "Recurso"
#: panels/timer.py:78
msgid "User CPU time"
msgstr ""
#: panels/timer.py:79
msgid "System CPU time"
msgstr ""
#: panels/timer.py:80
#, fuzzy
msgid "Total CPU time"
msgstr "Tiempo Total"
#: panels/timer.py:81
msgid "Elapsed time"
msgstr ""
#: panels/timer.py:82
msgid "Context switches"
msgstr ""
#: panels/version.py:20 panels/version.py:29
#, fuzzy
msgid "Versions"
msgstr "Versión Django"
#: templates/debug_toolbar/base.html:23
msgid "Hide Toolbar"
msgstr ""
#: templates/debug_toolbar/base.html:23
msgid "Hide"
msgstr "Ocultar"
#: templates/debug_toolbar/base.html:48
msgid "Show Toolbar"
msgstr ""
#: templates/debug_toolbar/base.html:54
msgid "Close"
msgstr "Cerrar"
#: templates/debug_toolbar/redirect.html:7
#: templates/debug_toolbar/panels/logger.html:9
msgid "Location"
msgstr ""
#: templates/debug_toolbar/redirect.html:9
msgid ""
"The Django Debug Toolbar has intercepted a redirect to the above URL for "
"debug viewing purposes. You can click the above link to continue with the "
"redirect as normal. If you'd like to disable this feature, set the "
"<code>DEBUG_TOOLBAR_CONFIG</code> dictionary's key "
"<code>INTERCEPT_REDIRECTS</code> to <code>False</code>."
msgstr ""
#: templates/debug_toolbar/panels/cache.html:14
msgid "Total Calls"
msgstr "Total Llamadas"
#: templates/debug_toolbar/panels/cache.html:16
msgid "Total Time"
msgstr "Tiempo Total"
#: templates/debug_toolbar/panels/cache.html:18
msgid "Hits"
msgstr "Visitas"
#: templates/debug_toolbar/panels/cache.html:20
msgid "Misses"
msgstr ""
#: templates/debug_toolbar/panels/cache.html:35
msgid "Breakdown"
msgstr ""
#: templates/debug_toolbar/panels/cache.html:40
msgid "Type"
msgstr "Tipo"
#: templates/debug_toolbar/panels/cache.html:41
msgid "Parameters"
msgstr "Parámetros"
#: templates/debug_toolbar/panels/cache.html:42
msgid "Function"
msgstr "Función"
#: templates/debug_toolbar/panels/headers.html:5
msgid "Key"
msgstr "Llave"
#: templates/debug_toolbar/panels/headers.html:6
#: templates/debug_toolbar/panels/request_vars.html:37
#: templates/debug_toolbar/panels/request_vars.html:63
#: templates/debug_toolbar/panels/request_vars.html:85
#: templates/debug_toolbar/panels/request_vars.html:107
#: templates/debug_toolbar/panels/settings_vars.html:6
#: templates/debug_toolbar/panels/timer.html:10
msgid "Value"
msgstr "Valor"
#: templates/debug_toolbar/panels/logger.html:6
msgid "Level"
msgstr "Nivel"
#: templates/debug_toolbar/panels/logger.html:8
msgid "Message"
msgstr "Mensaje"
#: templates/debug_toolbar/panels/logger.html:24
msgid "No messages logged"
msgstr "No hay mensajes registrados"
#: templates/debug_toolbar/panels/request_vars.html:3
msgid "View information"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:7
#, fuzzy
msgid "View Function"
msgstr "Función"
#: templates/debug_toolbar/panels/request_vars.html:8
msgid "args"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:9
msgid "kwargs"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:27
#, fuzzy
msgid "COOKIES Variables"
msgstr "Variable"
#: templates/debug_toolbar/panels/request_vars.html:36
#: templates/debug_toolbar/panels/request_vars.html:62
#: templates/debug_toolbar/panels/request_vars.html:84
#: templates/debug_toolbar/panels/request_vars.html:106
#, fuzzy
msgid "Variable"
msgstr "Variable"
#: templates/debug_toolbar/panels/request_vars.html:50
#, fuzzy
msgid "No COOKIE data"
msgstr "No GET datos"
#: templates/debug_toolbar/panels/request_vars.html:53
#, fuzzy
msgid "SESSION Variables"
msgstr "Variable"
#: templates/debug_toolbar/panels/request_vars.html:76
msgid "No SESSION data"
msgstr "No SESSION datos"
#: templates/debug_toolbar/panels/request_vars.html:79
#, fuzzy
msgid "GET Variables"
msgstr "Variable"
#: templates/debug_toolbar/panels/request_vars.html:98
msgid "No GET data"
msgstr "No GET datos"
#: templates/debug_toolbar/panels/request_vars.html:101
#, fuzzy
msgid "POST Variables"
msgstr "Variable"
#: templates/debug_toolbar/panels/request_vars.html:120
msgid "No POST data"
msgstr "No POST datos"
#: templates/debug_toolbar/panels/settings_vars.html:5
msgid "Setting"
msgstr "Configuración"
#: templates/debug_toolbar/panels/signals.html:5
msgid "Signal"
msgstr "Señal"
#: templates/debug_toolbar/panels/signals.html:6
msgid "Providing Args"
msgstr ""
#: templates/debug_toolbar/panels/signals.html:7
msgid "Receivers"
msgstr ""
#: templates/debug_toolbar/panels/sql.html:6
msgid "Action"
msgstr "Acción"
#: templates/debug_toolbar/panels/sql.html:7
msgid "Stacktrace"
msgstr ""
#: templates/debug_toolbar/panels/sql.html:8
msgid "Query"
msgstr ""
#: templates/debug_toolbar/panels/sql.html:38
msgid "Line"
msgstr "Línea"
#: templates/debug_toolbar/panels/sql.html:39
msgid "Method"
msgstr "Método"
#: templates/debug_toolbar/panels/sql.html:40
msgid "File"
msgstr "Archivo"
#: templates/debug_toolbar/panels/sql_explain.html:3
#: templates/debug_toolbar/panels/sql_profile.html:3
#: templates/debug_toolbar/panels/sql_select.html:3
#: templates/debug_toolbar/panels/template_source.html:3
msgid "Back"
msgstr "Regresar"
#: templates/debug_toolbar/panels/sql_explain.html:4
msgid "SQL Explained"
msgstr ""
#: templates/debug_toolbar/panels/sql_explain.html:9
#: templates/debug_toolbar/panels/sql_profile.html:10
#: templates/debug_toolbar/panels/sql_select.html:9
msgid "Executed SQL"
msgstr "SQL Ejecutado"
#: templates/debug_toolbar/panels/sql_profile.html:4
msgid "SQL Profiled"
msgstr ""
#: templates/debug_toolbar/panels/sql_profile.html:35
msgid "Error"
msgstr ""
#: templates/debug_toolbar/panels/sql_select.html:4
msgid "SQL Selected"
msgstr ""
#: templates/debug_toolbar/panels/sql_select.html:34
msgid "Empty set"
msgstr "Set Vacío"
#: templates/debug_toolbar/panels/template_source.html:4
#, fuzzy
msgid "Template Source"
msgstr "Plantilla"
#: templates/debug_toolbar/panels/templates.html:2
#, fuzzy
msgid "Template path"
msgstr "Plantilla"
#: templates/debug_toolbar/panels/templates.html:13
msgid "Template"
msgstr "Plantilla"
#: templates/debug_toolbar/panels/templates.html:21
#: templates/debug_toolbar/panels/templates.html:37
msgid "Toggle Context"
msgstr ""
#: templates/debug_toolbar/panels/templates.html:28
#: templates/debug_toolbar/panels/templates.html:43
msgid "None"
msgstr "Ninguno"
#: templates/debug_toolbar/panels/templates.html:31
msgid "Context processor"
msgstr ""
#: templates/debug_toolbar/panels/timer.html:9
msgid "Resource"
msgstr "Recurso"
#: templates/debug_toolbar/panels/versions.html:6
msgid "Package"
msgstr ""
#: templates/debug_toolbar/panels/versions.html:7
#, fuzzy
msgid "Version"
msgstr "Versión Django"
================================================
FILE: debug_toolbar/locale/fr/LC_MESSAGES/django.po
================================================
# Django Debug Toolbar in French.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# David Paccoud, 2009.
#
#
msgid ""
msgstr ""
"Project-Id-Version: Django Debug Toolbar 0.8.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-11-18 08:06-0800\n"
"PO-Revision-Date: 2009-10-14 22:53+0200\n"
"Last-Translator: David Paccoud <dpaccoud@gmail.com>\n"
"Language-Team: French <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: panels/cache.py:92
#, python-format
msgid "Cache: %.2fms"
msgstr ""
#: panels/cache.py:95
msgid "Cache Usage"
msgstr "Usage du cache"
#: panels/headers.py:36 panels/headers.py:39
msgid "HTTP Headers"
msgstr "En-têtes HTTP"
#: panels/logger.py:56
msgid "Logging"
msgstr "Journaux"
#: panels/logger.py:63
#, fuzzy
msgid "Log Messages"
msgstr "Message"
#: panels/request_vars.py:13 panels/request_vars.py:16
msgid "Request Vars"
msgstr "Variables de requête"
#: panels/settings_vars.py:16
msgid "Settings"
msgstr "Paramètres"
#: panels/settings_vars.py:19
#, python-format
msgid "Settings from <code>%s</code>"
msgstr "Paramètres de <code>%s</code>"
#: panels/signals.py:39 panels/signals.py:42
msgid "Signals"
msgstr "Signaux"
#: panels/sql.py:146
msgid "SQL"
msgstr "SQL"
#: panels/sql.py:160
#, fuzzy
msgid "SQL Queries"
msgstr "Requêtes SQL"
#: panels/template.py:47
msgid "Templates"
msgstr "Gabarits"
#: panels/template.py:52
#, python-format
msgid "Templates (%(num_templates)s rendered)"
msgstr "Gabarits (%(num_templates)s affichés)"
#: panels/timer.py:35 templates/debug_toolbar/panels/cache.html:39
#: templates/debug_toolbar/panels/logger.html:7
#: templates/debug_toolbar/panels/sql.html:5
#: templates/debug_toolbar/panels/sql_explain.html:11
#: templates/debug_toolbar/panels/sql_profile.html:12
#: templates/debug_toolbar/panels/sql_select.html:11
msgid "Time"
msgstr "Temps"
#: panels/timer.py:47
#, fuzzy
msgid "Resource Usage"
msgstr "Usage des ressources"
#: panels/timer.py:78
msgid "User CPU time"
msgstr "Temps CPU utilisateur"
#: panels/timer.py:79
msgid "System CPU time"
msgstr "Temps CPU système"
#: panels/timer.py:80
#, fuzzy
msgid "Total CPU time"
msgstr "Temps CPU Total"
#: panels/timer.py:81
msgid "Elapsed time"
msgstr "Temps écoulé"
#: panels/timer.py:82
#, fuzzy
msgid "Context switches"
msgstr "Changements de contexte"
#: panels/version.py:20 panels/version.py:29
#, fuzzy
msgid "Versions"
msgstr "Versions"
#: templates/debug_toolbar/base.html:23
msgid "Hide Toolbar"
msgstr "Masquer la barre"
#: templates/debug_toolbar/base.html:23
msgid "Hide"
msgstr "Masquer"
#: templates/debug_toolbar/base.html:48
msgid "Show Toolbar"
msgstr "Afficher la barre"
#: templates/debug_toolbar/base.html:54
msgid "Close"
msgstr "Fermer"
#: templates/debug_toolbar/redirect.html:7
#: templates/debug_toolbar/panels/logger.html:9
msgid "Location"
msgstr "Emplacement"
#: templates/debug_toolbar/redirect.html:9
msgid ""
"The Django Debug Toolbar has intercepted a redirect to the above URL for "
"debug viewing purposes. You can click the above link to continue with the "
"redirect as normal. If you'd like to disable this feature, set the "
"<code>DEBUG_TOOLBAR_CONFIG</code> dictionary's key "
"<code>INTERCEPT_REDIRECTS</code> to <code>False</code>."
msgstr ""
"La barre de Debug Django a intercepté une redirection vers l'adresse ci-"
"dessous afin de permettre la consultation des messages de debug. Vous "
"pouvez cliquer sur le lien ci-dessus pour continuer normalement avec la "
"redirection. Si vous voulez désactiver cette fonctionnalité, paramétrez la "
"valeur de la clé <code>INTERCEPT_REDIRECTS</code> du dictionnaire "
"<code>DEBUG_TOOLBAR_CONFIG</code> à <code>False</code>."
#: templates/debug_toolbar/panels/cache.html:14
msgid "Total Calls"
msgstr "Nombre total d'appels"
#: templates/debug_toolbar/panels/cache.html:16
msgid "Total Time"
msgstr "Temps Total"
#: templates/debug_toolbar/panels/cache.html:18
msgid "Hits"
msgstr "Requêtes"
#: templates/debug_toolbar/panels/cache.html:20
msgid "Misses"
msgstr "Ratés"
#: templates/debug_toolbar/panels/cache.html:35
msgid "Breakdown"
msgstr "Cassé"
#: templates/debug_toolbar/panels/cache.html:40
msgid "Type"
msgstr "Type"
#: templates/debug_toolbar/panels/cache.html:41
msgid "Parameters"
msgstr "Paramètres"
#: templates/debug_toolbar/panels/cache.html:42
msgid "Function"
msgstr "Fonction"
#: templates/debug_toolbar/panels/headers.html:5
msgid "Key"
msgstr "Clé"
#: templates/debug_toolbar/panels/headers.html:6
#: templates/debug_toolbar/panels/request_vars.html:37
#: templates/debug_toolbar/panels/request_vars.html:63
#: templates/debug_toolbar/panels/request_vars.html:85
#: templates/debug_toolbar/panels/request_vars.html:107
#: templates/debug_toolbar/panels/settings_vars.html:6
#: templates/debug_toolbar/panels/timer.html:10
msgid "Value"
msgstr "Valeur"
#: templates/debug_toolbar/panels/logger.html:6
msgid "Level"
msgstr "Niveau"
#: templates/debug_toolbar/panels/logger.html:8
msgid "Message"
msgstr "Message"
#: templates/debug_toolbar/panels/logger.html:24
msgid "No messages logged"
msgstr "Aucun message dans le journal"
#: templates/debug_toolbar/panels/request_vars.html:3
msgid "View information"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:7
#, fuzzy
msgid "View Function"
msgstr "Fonction"
#: templates/debug_toolbar/panels/request_vars.html:8
msgid "args"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:9
msgid "kwargs"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:27
msgid "COOKIES Variables"
msgstr "Variables des COOKIES"
#: templates/debug_toolbar/panels/request_vars.html:36
#: templates/debug_toolbar/panels/request_vars.html:62
#: templates/debug_toolbar/panels/request_vars.html:84
#: templates/debug_toolbar/panels/request_vars.html:106
msgid "Variable"
msgstr "Variable"
#: templates/debug_toolbar/panels/request_vars.html:50
msgid "No COOKIE data"
msgstr "Aucune donnée de COOKIE"
#: templates/debug_toolbar/panels/request_vars.html:53
msgid "SESSION Variables"
msgstr "Variables de SESSION"
#: templates/debug_toolbar/panels/request_vars.html:76
msgid "No SESSION data"
msgstr "Aucune donnée de SESSION"
#: templates/debug_toolbar/panels/request_vars.html:79
msgid "GET Variables"
msgstr "Variables GET"
#: templates/debug_toolbar/panels/request_vars.html:98
msgid "No GET data"
msgstr "Aucune donnée GET"
#: templates/debug_toolbar/panels/request_vars.html:101
msgid "POST Variables"
msgstr "Variables POST"
#: templates/debug_toolbar/panels/request_vars.html:120
msgid "No POST data"
msgstr "Aucune donnée POST"
#: templates/debug_toolbar/panels/settings_vars.html:5
msgid "Setting"
msgstr "Paramètre"
#: templates/debug_toolbar/panels/signals.html:5
msgid "Signal"
msgstr "Signal"
#: templates/debug_toolbar/panels/signals.html:6
msgid "Providing Args"
msgstr ""
#: templates/debug_toolbar/panels/signals.html:7
msgid "Receivers"
msgstr "Receveurs"
#: templates/debug_toolbar/panels/sql.html:6
msgid "Action"
msgstr "Action"
#: templates/debug_toolbar/panels/sql.html:7
msgid "Stacktrace"
msgstr "Pile d'appel"
#: templates/debug_toolbar/panels/sql.html:8
msgid "Query"
msgstr "Requête"
#: templates/debug_toolbar/panels/sql.html:38
msgid "Line"
msgstr "Ligne"
#: templates/debug_toolbar/panels/sql.html:39
msgid "Method"
msgstr "Méthode"
#: templates/debug_toolbar/panels/sql.html:40
msgid "File"
msgstr "Fichier"
#: templates/debug_toolbar/panels/sql_explain.html:3
#: templates/debug_toolbar/panels/sql_profile.html:3
#: templates/debug_toolbar/panels/sql_select.html:3
#: templates/debug_toolbar/panels/template_source.html:3
msgid "Back"
msgstr "Retour"
#: templates/debug_toolbar/panels/sql_explain.html:4
msgid "SQL Explained"
msgstr "SQL Expliqué"
#: templates/debug_toolbar/panels/sql_explain.html:9
#: templates/debug_toolbar/panels/sql_profile.html:10
#: templates/debug_toolbar/panels/sql_select.html:9
msgid "Executed SQL"
msgstr "SQL Exécuté"
#: templates/debug_toolbar/panels/sql_profile.html:4
msgid "SQL Profiled"
msgstr "SQL Profilé"
#: templates/debug_toolbar/panels/sql_profile.html:35
msgid "Error"
msgstr "Erreur"
#: templates/debug_toolbar/panels/sql_select.html:4
msgid "SQL Selected"
msgstr "SQL Sélectionné"
#: templates/debug_toolbar/panels/sql_select.html:34
msgid "Empty set"
msgstr "Ensemble vide"
#: templates/debug_toolbar/panels/template_source.html:4
msgid "Template Source"
msgstr "Source du gabarit"
#: templates/debug_toolbar/panels/templates.html:2
msgid "Template path"
msgstr "Chemin du gabarit"
#: templates/debug_toolbar/panels/templates.html:13
msgid "Template"
msgstr "Gabarit"
#: templates/debug_toolbar/panels/templates.html:21
#: templates/debug_toolbar/panels/templates.html:37
msgid "Toggle Context"
msgstr "Afficher/Masquer le contexte"
#: templates/debug_toolbar/panels/templates.html:28
#: templates/debug_toolbar/panels/templates.html:43
msgid "None"
msgstr "Aucun"
#: templates/debug_toolbar/panels/templates.html:31
msgid "Context processor"
msgstr "Processeur de contexte"
#: templates/debug_toolbar/panels/timer.html:9
msgid "Resource"
msgstr "Ressources"
#: templates/debug_toolbar/panels/versions.html:6
msgid "Package"
msgstr "Paquet"
#: templates/debug_toolbar/panels/versions.html:7
msgid "Version"
msgstr "Version"
================================================
FILE: debug_toolbar/locale/he/LC_MESSAGES/django.po
================================================
# 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 <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-11-18 08:06-0800\n"
"PO-Revision-Date: 2009-08-24 23:08-0600\n"
"Last-Translator: Alex <alex.gaynor@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: panels/cache.py:92
#, python-format
msgid "Cache: %.2fms"
msgstr ""
#: panels/cache.py:95
msgid "Cache Usage"
msgstr ""
#: panels/headers.py:36 panels/headers.py:39
msgid "HTTP Headers"
msgstr ""
#: panels/logger.py:56
msgid "Logging"
msgstr "רישום יומן"
#: panels/logger.py:63
#, fuzzy
msgid "Log Messages"
msgstr "הודעה"
#: panels/request_vars.py:13 panels/request_vars.py:16
msgid "Request Vars"
msgstr ""
#: panels/settings_vars.py:16
msgid "Settings"
msgstr ""
#: panels/settings_vars.py:19
#, python-format
msgid "Settings from <code>%s</code>"
msgstr ""
#: panels/signals.py:39 panels/signals.py:42
msgid "Signals"
msgstr "סימנים"
#: panels/sql.py:146
msgid "SQL"
msgstr ""
#: panels/sql.py:160
msgid "SQL Queries"
msgstr ""
#: panels/template.py:47
msgid "Templates"
msgstr "תבניות"
#: panels/template.py:52
#, python-format
msgid "Templates (%(num_templates)s rendered)"
msgstr ""
#: panels/timer.py:35 templates/debug_toolbar/panels/cache.html:39
#: templates/debug_toolbar/panels/logger.html:7
#: templates/debug_toolbar/panels/sql.html:5
#: templates/debug_toolbar/panels/sql_explain.html:11
#: templates/debug_toolbar/panels/sql_profile.html:12
#: templates/debug_toolbar/panels/sql_select.html:11
msgid "Time"
msgstr "זמן"
#: panels/timer.py:47
msgid "Resource Usage"
msgstr ""
#: panels/timer.py:78
msgid "User CPU time"
msgstr ""
#: panels/timer.py:79
msgid "System CPU time"
msgstr ""
#: panels/timer.py:80
#, fuzzy
msgid "Total CPU time"
msgstr "זמן"
#: panels/timer.py:81
msgid "Elapsed time"
msgstr ""
#: panels/timer.py:82
msgid "Context switches"
msgstr ""
#: panels/version.py:20 panels/version.py:29
#, fuzzy
msgid "Versions"
msgstr "ג 'נגו גירסה"
#: templates/debug_toolbar/base.html:23
msgid "Hide Toolbar"
msgstr ""
#: templates/debug_toolbar/base.html:23
msgid "Hide"
msgstr "הסתיר"
#: templates/debug_toolbar/base.html:48
msgid "Show Toolbar"
msgstr ""
#: templates/debug_toolbar/base.html:54
msgid "Close"
msgstr "סגור"
#: templates/debug_toolbar/redirect.html:7
#: templates/debug_toolbar/panels/logger.html:9
msgid "Location"
msgstr "מקום"
#: templates/debug_toolbar/redirect.html:9
msgid ""
"The Django Debug Toolbar has intercepted a redirect to the above URL for "
"debug viewing purposes. You can click the above link to continue with the "
"redirect as normal. If you'd like to disable this feature, set the "
"<code>DEBUG_TOOLBAR_CONFIG</code> dictionary's key "
"<code>INTERCEPT_REDIRECTS</code> to <code>False</code>."
msgstr ""
#: templates/debug_toolbar/panels/cache.html:14
msgid "Total Calls"
msgstr ""
#: templates/debug_toolbar/panels/cache.html:16
msgid "Total Time"
msgstr "זמן"
#: templates/debug_toolbar/panels/cache.html:18
msgid "Hits"
msgstr "הצלחות"
#: templates/debug_toolbar/panels/cache.html:20
msgid "Misses"
msgstr ""
#: templates/debug_toolbar/panels/cache.html:35
msgid "Breakdown"
msgstr ""
#: templates/debug_toolbar/panels/cache.html:40
msgid "Type"
msgstr "סוג"
#: templates/debug_toolbar/panels/cache.html:41
msgid "Parameters"
msgstr ""
#: templates/debug_toolbar/panels/cache.html:42
msgid "Function"
msgstr ""
#: templates/debug_toolbar/panels/headers.html:5
msgid "Key"
msgstr "מפתח"
#: templates/debug_toolbar/panels/headers.html:6
#: templates/debug_toolbar/panels/request_vars.html:37
#: templates/debug_toolbar/panels/request_vars.html:63
#: templates/debug_toolbar/panels/request_vars.html:85
#: templates/debug_toolbar/panels/request_vars.html:107
#: templates/debug_toolbar/panels/settings_vars.html:6
#: templates/debug_toolbar/panels/timer.html:10
msgid "Value"
msgstr "ערך"
#: templates/debug_toolbar/panels/logger.html:6
msgid "Level"
msgstr "רמה"
#: templates/debug_toolbar/panels/logger.html:8
msgid "Message"
msgstr "הודעה"
#: templates/debug_toolbar/panels/logger.html:24
msgid "No messages logged"
msgstr "אין הודעות"
#: templates/debug_toolbar/panels/request_vars.html:3
msgid "View information"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:7
msgid "View Function"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:8
msgid "args"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:9
msgid "kwargs"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:27
#, fuzzy
msgid "COOKIES Variables"
msgstr "מזהה"
#: templates/debug_toolbar/panels/request_vars.html:36
#: templates/debug_toolbar/panels/request_vars.html:62
#: templates/debug_toolbar/panels/request_vars.html:84
#: templates/debug_toolbar/panels/request_vars.html:106
msgid "Variable"
msgstr "מזהה"
#: templates/debug_toolbar/panels/request_vars.html:50
msgid "No COOKIE data"
msgstr "אין נתונים לעוגיות"
#: templates/debug_toolbar/panels/request_vars.html:53
#, fuzzy
msgid "SESSION Variables"
msgstr "מזהה"
#: templates/debug_toolbar/panels/request_vars.html:76
msgid "No SESSION data"
msgstr "אין נתונים להתחברות"
#: templates/debug_toolbar/panels/request_vars.html:79
#, fuzzy
msgid "GET Variables"
msgstr "מזהה"
#: templates/debug_toolbar/panels/request_vars.html:98
msgid "No GET data"
msgstr "שום דבר עבור GET"
#: templates/debug_toolbar/panels/request_vars.html:101
#, fuzzy
msgid "POST Variables"
msgstr "מזהה"
#: templates/debug_toolbar/panels/request_vars.html:120
msgid "No POST data"
msgstr "שום דבר עבור POST"
#: templates/debug_toolbar/panels/settings_vars.html:5
msgid "Setting"
msgstr ""
#: templates/debug_toolbar/panels/signals.html:5
msgid "Signal"
msgstr "סימן"
#: templates/debug_toolbar/panels/signals.html:6
msgid "Providing Args"
msgstr ""
#: templates/debug_toolbar/panels/signals.html:7
msgid "Receivers"
msgstr ""
#: templates/debug_toolbar/panels/sql.html:6
msgid "Action"
msgstr "פעילות"
#: templates/debug_toolbar/panels/sql.html:7
msgid "Stacktrace"
msgstr ""
#: templates/debug_toolbar/panels/sql.html:8
msgid "Query"
msgstr ""
#: templates/debug_toolbar/panels/sql.html:38
msgid "Line"
msgstr "שורה"
#: templates/debug_toolbar/panels/sql.html:39
msgid "Method"
msgstr ""
#: templates/debug_toolbar/panels/sql.html:40
msgid "File"
msgstr "קובץ"
#: templates/debug_toolbar/panels/sql_explain.html:3
#: templates/debug_toolbar/panels/sql_profile.html:3
#: templates/debug_toolbar/panels/sql_select.html:3
#: templates/debug_toolbar/panels/template_source.html:3
msgid "Back"
msgstr "חזרה"
#: templates/debug_toolbar/panels/sql_explain.html:4
msgid "SQL Explained"
msgstr ""
#: templates/debug_toolbar/panels/sql_explain.html:9
#: templates/debug_toolbar/panels/sql_profile.html:10
#: templates/debug_toolbar/panels/sql_select.html:9
msgid "Executed SQL"
msgstr "הסבר עבור SQL"
#: templates/debug_toolbar/panels/sql_profile.html:4
msgid "SQL Profiled"
msgstr ""
#: templates/debug_toolbar/panels/sql_profile.html:35
msgid "Error"
msgstr "שגיאה"
#: templates/debug_toolbar/panels/sql_select.html:4
msgid "SQL Selected"
msgstr ""
#: templates/debug_toolbar/panels/sql_select.html:34
msgid "Empty set"
msgstr "תוצאות ריק"
#: templates/debug_toolbar/panels/template_source.html:4
#, fuzzy
msgid "Template Source"
msgstr "תבנית"
#: templates/debug_toolbar/panels/templates.html:2
#, fuzzy
msgid "Template path"
msgstr "תבנית"
#: templates/debug_toolbar/panels/templates.html:13
msgid "Template"
msgstr "תבנית"
#: templates/debug_toolbar/panels/templates.html:21
#: templates/debug_toolbar/panels/templates.html:37
msgid "Toggle Context"
msgstr ""
#: templates/debug_toolbar/panels/templates.html:28
#: templates/debug_toolbar/panels/templates.html:43
msgid "None"
msgstr ""
#: templates/debug_toolbar/panels/templates.html:31
msgid "Context processor"
msgstr ""
#: templates/debug_toolbar/panels/timer.html:9
msgid "Resource"
msgstr ""
#: templates/debug_toolbar/panels/versions.html:6
msgid "Package"
msgstr ""
#: templates/debug_toolbar/panels/versions.html:7
#, fuzzy
msgid "Version"
msgstr "ג 'נגו גירסה"
================================================
FILE: debug_toolbar/locale/ru/LC_MESSAGES/django.po
================================================
# Django Debug Toolbar in Russian.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Mikhail Korobov, 2009.
#
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-11-18 08:06-0800\n"
"PO-Revision-Date: \n"
"Last-Translator: Mikhail Korobov <kmike84@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: panels/cache.py:92
#, python-format
msgid "Cache: %.2fms"
msgstr ""
#: panels/cache.py:95
msgid "Cache Usage"
msgstr ""
#: panels/headers.py:36 panels/headers.py:39
msgid "HTTP Headers"
msgstr "Заголовки HTTP"
#: panels/logger.py:56
msgid "Logging"
msgstr "Журналирование"
#: panels/logger.py:63
#, fuzzy
msgid "Log Messages"
msgstr "Сообщение"
#: panels/request_vars.py:13 panels/request_vars.py:16
msgid "Request Vars"
msgstr "Запрос"
#: panels/settings_vars.py:16
msgid "Settings"
msgstr "Настройки"
#: panels/settings_vars.py:19
#, python-format
msgid "Settings from <code>%s</code>"
msgstr ""
#: panels/signals.py:39 panels/signals.py:42
msgid "Signals"
msgstr "Сигналы"
#: panels/sql.py:146
msgid "SQL"
msgstr ""
#: panels/sql.py:160
msgid "SQL Queries"
msgstr ""
#: panels/template.py:47
msgid "Templates"
msgstr "Шаблоны"
#: panels/template.py:52
#, python-format
msgid "Templates (%(num_templates)s rendered)"
msgstr ""
#: panels/timer.py:35 templates/debug_toolbar/panels/cache.html:39
#: templates/debug_toolbar/panels/logger.html:7
#: templates/debug_toolbar/panels/sql.html:5
#: templates/debug_toolbar/panels/sql_explain.html:11
#: templates/debug_toolbar/panels/sql_profile.html:12
#: templates/debug_toolbar/panels/sql_select.html:11
msgid "Time"
msgstr "Время"
#: panels/timer.py:47
#, fuzzy
msgid "Resource Usage"
msgstr "Ресурс"
#: panels/timer.py:78
msgid "User CPU time"
msgstr ""
#: panels/timer.py:79
msgid "System CPU time"
msgstr ""
#: panels/timer.py:80
#, fuzzy
msgid "Total CPU time"
msgstr "Общее время"
#: panels/timer.py:81
msgid "Elapsed time"
msgstr ""
#: panels/timer.py:82
msgid "Context switches"
msgstr ""
#: panels/version.py:20 panels/version.py:29
#, fuzzy
msgid "Versions"
msgstr "Версия Django"
#: templates/debug_toolbar/base.html:23
msgid "Hide Toolbar"
msgstr ""
#: templates/debug_toolbar/base.html:23
msgid "Hide"
msgstr "Скрыть"
#: templates/debug_toolbar/base.html:48
msgid "Show Toolbar"
msgstr ""
#: templates/debug_toolbar/base.html:54
msgid "Close"
msgstr "Закрыть"
#: templates/debug_toolbar/redirect.html:7
#: templates/debug_toolbar/panels/logger.html:9
msgid "Location"
msgstr "Место"
#: templates/debug_toolbar/redirect.html:9
msgid ""
"The Django Debug Toolbar has intercepted a redirect to the above URL for "
"debug viewing purposes. You can click the above link to continue with the "
"redirect as normal. If you'd like to disable this feature, set the "
"<code>DEBUG_TOOLBAR_CONFIG</code> dictionary's key "
"<code>INTERCEPT_REDIRECTS</code> to <code>False</code>."
msgstr ""
"Django Debug Toolbar в отладочных целях перехватила редирект на адрес, "
"указанный выше. Вы можете нажать на ссылку, чтобы продолжить обычное "
"выполнение. Если хотите отключить это поведение, установите в словаре "
"<code>DEBUG_TOOLBAR_CONFIG</code> ключ <code>INTERCEPT_REDIRECTS</code> "
"равным <code>False</code>."
#: templates/debug_toolbar/panels/cache.html:14
msgid "Total Calls"
msgstr "Всего вызовов"
#: templates/debug_toolbar/panels/cache.html:16
msgid "Total Time"
msgstr "Общее время"
#: templates/debug_toolbar/panels/cache.html:18
msgid "Hits"
msgstr ""
#: templates/debug_toolbar/panels/cache.html:20
msgid "Misses"
msgstr ""
#: templates/debug_toolbar/panels/cache.html:35
msgid "Breakdown"
msgstr ""
#: templates/debug_toolbar/panels/cache.html:40
msgid "Type"
msgstr ""
#: templates/debug_toolbar/panels/cache.html:41
msgid "Parameters"
msgstr ""
#: templates/debug_toolbar/panels/cache.html:42
msgid "Function"
msgstr ""
#: templates/debug_toolbar/panels/headers.html:5
msgid "Key"
msgstr "Заголовок"
#: templates/debug_toolbar/panels/headers.html:6
#: templates/debug_toolbar/panels/request_vars.html:37
#: templates/debug_toolbar/panels/request_vars.html:63
#: templates/debug_toolbar/panels/request_vars.html:85
#: templates/debug_toolbar/panels/request_vars.html:107
#: templates/debug_toolbar/panels/settings_vars.html:6
#: templates/debug_toolbar/panels/timer.html:10
msgid "Value"
msgstr "Значение"
#: templates/debug_toolbar/panels/logger.html:6
msgid "Level"
msgstr "Уровень"
#: templates/debug_toolbar/panels/logger.html:8
msgid "Message"
msgstr "Сообщение"
#: templates/debug_toolbar/panels/logger.html:24
msgid "No messages logged"
msgstr "Сообщений нет"
#: templates/debug_toolbar/panels/request_vars.html:3
msgid "View information"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:7
msgid "View Function"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:8
msgid "args"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:9
msgid "kwargs"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:27
#, fuzzy
msgid "COOKIES Variables"
msgstr "Переменная"
#: templates/debug_toolbar/panels/request_vars.html:36
#: templates/debug_toolbar/panels/request_vars.html:62
#: templates/debug_toolbar/panels/request_vars.html:84
#: templates/debug_toolbar/panels/request_vars.html:106
msgid "Variable"
msgstr "Переменная"
#: templates/debug_toolbar/panels/request_vars.html:50
msgid "No COOKIE data"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:53
#, fuzzy
msgid "SESSION Variables"
msgstr "Переменная"
#: templates/debug_toolbar/panels/request_vars.html:76
msgid "No SESSION data"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:79
#, fuzzy
msgid "GET Variables"
msgstr "Переменная"
#: templates/debug_toolbar/panels/request_vars.html:98
msgid "No GET data"
msgstr ""
#: templates/debug_toolbar/panels/request_vars.html:101
#, fuzzy
msgid "POST Variables"
msgstr "Переменная"
#: templates/debug_toolbar/panels/request_vars.html:120
msgid "No POST data"
msgstr ""
#: templates/debug_toolbar/panels/settings_vars.html:5
msgid "Setting"
msgstr "Параметр"
#: templates/debug_toolbar/panels/signals.html:5
msgid "Signal"
msgstr "Сигналы"
#: templates/debug_toolbar/panels/signals.html:6
msgid "Providing Args"
msgstr ""
#: templates/debug_toolbar/panels/signals.html:7
msgid "Receivers"
msgstr ""
#: templates/debug_toolbar/panels/sql.html:6
msgid "Action"
msgstr "Действие"
#: templates/debug_toolbar/panels/sql.html:7
msgid "Stacktrace"
msgstr ""
#: templates/debug_toolbar/panels/sql.html:8
msgid "Query"
msgstr "Запрос"
#: templates/debug_toolbar/panels/sql.html:38
msgid "Line"
msgstr "Строка"
#: templates/debug_toolbar/panels/sql.html:39
msgid "Method"
msgstr "Метод"
#: templates/debug_toolbar/panels/sql.html:40
msgid "File"
msgstr "Файл"
#: templates/debug_toolbar/panels/sql_explain.html:3
#: templates/debug_toolbar/panels/sql_profile.html:3
#: templates/debug_toolbar/panels/sql_select.html:3
#: templates/debug_toolbar/panels/template_source.html:3
msgid "Back"
msgstr "Назад"
#: templates/debug_toolbar/panels/sql_explain.html:4
msgid "SQL Explained"
msgstr ""
#: templates/debug_toolbar/panels/sql_explain.html:9
#: templates/debug_toolbar/panels/sql_profile.html:10
#: templates/debug_toolbar/panels/sql_select.html:9
msgid "Executed SQL"
msgstr "Запрос"
#: templates/debug_toolbar/panels/sql_profile.html:4
msgid "SQL Profiled"
msgstr ""
#: templates/debug_toolbar/panels/sql_profile.html:35
msgid "Error"
msgstr "Ошибка"
#: templates/debug_toolbar/panels/sql_select.html:4
msgid "SQL Selected"
msgstr ""
#: templates/debug_toolbar/panels/sql_select.html:34
msgid "Empty set"
msgstr "Ничего"
#: templates/debug_toolbar/panels/template_source.html:4
#, fuzzy
msgid "Template Source"
msgstr "Шаблоны"
#: templates/debug_toolbar/panels/templates.html:2
#, fuzzy
msgid "Template path"
msgstr "Шаблоны"
#: templates/debug_toolbar/panels/templates.html:13
msgid "Template"
msgstr ""
#: templates/debug_toolbar/panels/templates.html:21
#: templates/debug_toolbar/panels/templates.html:37
msgid "Toggle Context"
msgstr ""
#: templates/debug_toolbar/panels/templates.html:28
#: templates/debug_toolbar/panels/templates.html:43
msgid "None"
msgstr ""
#: templates/debug_toolbar/panels/templates.html:31
msgid "Context processor"
msgstr ""
#: templates/debug_toolbar/panels/timer.html:9
msgid "Resource"
msgstr "Ресурс"
#: templates/debug_toolbar/panels/versions.html:6
msgid "Package"
msgstr ""
#: templates/debug_toolbar/panels/versions.html:7
#, fuzzy
msgid "Version"
msgstr "Версия Django"
================================================
FILE: debug_toolbar/management/__init__.py
================================================
================================================
FILE: debug_toolbar/management/commands/__init__.py
================================================
================================================
FILE: debug_toolbar/management/commands/debugsqlshell.py
================================================
import os
from optparse import make_option
from django.core.management.base import NoArgsCommand
from django.db.backends import util
from debug_toolbar.utils import sqlparse
class PrintQueryWrapper(util.CursorDebugWrapper):
def execute(self, sql, params=()):
try:
return self.cursor.execute(sql, params)
finally:
raw_sql = self.db.ops.last_executed_query(self.cursor, sql, params)
print sqlparse.format(raw_sql, reindent=True)
print
util.CursorDebugWrapper = PrintQueryWrapper
# The rest is copy/paste from django/core/management/commands/shell.py
class Command(NoArgsCommand):
option_list = NoArgsCommand.option_list + (
make_option('--plain', action='store_true', dest='plain',
help='Tells Django to use plain Python, not IPython.'),
)
help = "Runs a Python interactive interpreter. Tries to use IPython, if it's available."
requires_model_validation = False
def handle_noargs(self, **options):
# XXX: (Temporary) workaround for ticket #1796: force early loading of all
# models from installed apps.
from django.db.models.loading import get_models
loaded_models = get_models()
use_plain = options.get('plain', False)
try:
if use_plain:
# Don't bother loading IPython, because the user wants plain Python.
raise ImportError
import IPython
# Explicitly pass an empty list as arguments, because otherwise IPython
# would use sys.argv from this script.
shell = IPython.Shell.IPShell(argv=[])
shell.mainloop()
except ImportError:
import code
# Set up a dictionary to serve as the environment for the shell, so
# that tab completion works on objects that are imported at runtime.
# See ticket 5082.
imported_objects = {}
try: # Try activating rlcompleter, because it's handy.
import readline
except ImportError:
pass
else:
# We don't have to wrap the following import in a 'try', because
# we already know 'readline' was imported successfully.
import rlcompleter
readline.set_completer(rlcompleter.Completer(imported_objects).complete)
readline.parse_and_bind("tab:complete")
# We want to honor both $PYTHONSTARTUP and .pythonrc.py, so follow system
# conventions and get $PYTHONSTARTUP first then import user.
if not use_plain:
pythonrc = os.environ.get("PYTHONSTARTUP")
if pythonrc and os.path.isfile(pythonrc):
try:
execfile(pythonrc)
except NameError:
pass
# This will import .pythonrc.py as a side-effect
import user
code.interact(local=imported_objects)
================================================
FILE: debug_toolbar/media/debug_toolbar/Makefile
================================================
# Make file to compress and join all JS files
all: compress_js compress_css
compress_js:
java -jar ~/bin/yuicompressor.jar js/jquery.js > js/toolbar.min.js
java -jar ~/bin/yuicompressor.jar js/toolbar.js >> js/toolbar.min.js
compress_css:
java -jar ~/bin/yuicompressor.jar --type css css/toolbar.css > css/toolbar.min.css
================================================
FILE: debug_toolbar/media/debug_toolbar/css/toolbar.css
================================================
/* http://www.positioniseverything.net/easyclearing.html */
.clearfix:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.clearfix {display: inline-block;}
/* Hides from IE-mac \*/
.clearfix {display: block;}
* html .clearfix {height: 1%;}
/* end hide from IE-mac */
/* Debug Toolbar CSS Reset, adapted from Eric Meyer's CSS Reset */
#djDebug {color:#000;background:#FFF;}
#djDebug, #djDebug div, #djDebug span, #djDebug applet, #djDebug object, #djDebug iframe,
#djDebug h1, #djDebug h2, #djDebug h3, #djDebug h4, #djDebug h5, #djDebug h6, #djDebug p, #djDebug blockquote, #djDebug pre,
#djDebug a, #djDebug abbr, #djDebug acronym, #djDebug address, #djDebug big, #djDebug cite, #djDebug code,
#djDebug del, #djDebug dfn, #djDebug em, #djDebug font, #djDebug img, #djDebug ins, #djDebug kbd, #djDebug q, #djDebug s, #djDebug samp,
#djDebug small, #djDebug strike, #djDebug strong, #djDebug sub, #djDebug sup, #djDebug tt, #djDebug var,
#djDebug b, #djDebug u, #djDebug i, #djDebug center,
#djDebug dl, #djDebug dt, #djDebug dd, #djDebug ol, #djDebug ul, #djDebug li,
#djDebug fieldset, #djDebug form, #djDebug label, #djDebug legend,
#djDebug table, #djDebug caption, #djDebug tbody, #djDebug tfoot, #djDebug thead, #djDebug tr, #djDebug th, #djDebug td {
margin:0;
padding:0;
border:0;
outline:0;
font-size:12px;
line-height:1.5em;
color:#000;
vertical-align:baseline;
background:transparent;
font-family:sans-serif;
text-align:left;
}
#djDebug #djDebugToolbar {
background:#111;
width:200px;
z-index:100000000;
position:fixed;
top:0;
bottom:0;
right:0;
opacity:0.9;
}
#djDebug #djDebugToolbar small {
color:#999;
}
#djDebug #djDebugToolbar ul {
margin:0;
padding:0;
list-style:none;
}
#djDebug #djDebugToolbar li {
border-bottom:1px solid #222;
color:#fff;
display:block;
font-weight:bold;
float:none;
margin:0;
padding:0;
position:relative;
width:auto;
}
#djDebug #djDebugToolbar li>a,
#djDebug #djDebugToolbar li>div.contentless {
font-weight:normal;
font-style:normal;
text-decoration:none;
display:block;
font-size:16px;
padding:10px 10px 5px 25px;
color:#fff;
}
#djDebug #djDebugToolbar li a:hover {
color:#111;
background-color:#ffc;
}
#djDebug #djDebugToolbar li.active {
background-image:url(../img/indicator.png);
background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAgFJREFUeNqUlE1LAmEQx11fesNeDLt08hZ4KcgvIF7EgxcR9CT4IQwErx47WhFBdvPgwUNQeOiogiLRQSQUQaKD6Vpba7ar20izMe4+bjTwY5/Zl//OMzPPcCaTaRUwAxbTjynAdAHq84XGARuADQXN+MGEIJG1QmCaOZVK7WKUdmCdYMf7K/hDKwagwjRLPp9/cLvdzUKh8Ab+GgosExGz5hvFSJAbDAYKmFSpVM4DgUABX57l6wsYAR/AO64/MQUyyauiE1SdTqdTC4fDZ61W6x0FRUAAXvEqElGJCP5qzG3H5XIdFovFdCgUOgB3B3AC28AmyekSKSDH3LL2piRJcjabvU4kEnfg8sAL0Me1GulYE+ViQdWq1ep9NBrN9vv9J3B7KPyKOf3EtNAe1VVwzjwez36pVDoKBoMu3KpNs13dlg0FZ+ZwOJx+v3+PHATO6H2r0UOe54fJZPIil8vVSLtMjE7LQsFGo/EYiUSuut3uM/aimjPJSFQnCE0+hVNzE4/Hb1FoyOjBCasHdYKiKPLpdPo0k8k0GY1NKyvTyjIFe71eLRaLHZfLZYFx9AS8jhgR6gXb7faJ1+u9FATBglWU8cMxRjki0RmOMmu9Xo/4fL4y9pmVzEMZBcakGPJfw3YWzRY2rA19dWLLBMNCaAXXNHNPIVFO/zOtZ/YtwADKQgq0l7HbRAAAAABJRU5ErkJggg==);
background-repeat:no-repeat;
background-position:left center;
background-color:#333;
padding-left:10px;
}
#djDebug #djDebugToolbar li.active a:hover {
color:#b36a60;
background-color:transparent;
}
#djDebug #djDebugToolbar li small {
font-size:12px;
color:#999;
font-style:normal;
text-decoration:none;
font-variant:small-caps;
}
#djDebug #djDebugToolbarHandle {
position:fixed;
background:#fff;
border:1px solid #111;
top:30px;
right:0;
z-index:100000000;
opacity:0.75;
}
#djDebug a#djShowToolBarButton {
display:block;
height:75px;
width:30px;
border-right:none;
border-bottom:4px solid #fff;
border-top:4px solid #fff;
border-left:4px solid #fff;
color:#fff;
font-size:10px;
font-weight:bold;
text-decoration:none;
text-align:center;
text-indent:-999999px;
background:#000 url(../img/djdt_vertical.png) no-repeat left center;
background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABLCAYAAAACnsWZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAATCSURBVGiB7ZlvSBtnHMe/sckZY5aMw06r7aTLjGOwTKOMEWYs7M2EaaUdjG6+GDoQ9mIyupUxGIONwVZfDHwxg2E4igym24s5sFB0oDRq1yi1G0RijTjhjJBI86fR/LvbC+nFs7ncXR7jMsgXDp67e57vffI8v/s9z3NRAeBQxCr7rwGkVAIkVQmQVCVAUpUASVX0gGqxGxaLBTabDVqtFn6/H5OTk4jFYifJxovLdgwNDXGH1dDQkLVeoY+iH+KiBxSNwaOy2+0wmUyKzH0+H7xer2Koo5IVg/loZGSkuGOwtraW2KOggHt7e8QesmMwEomAZVlF5uvr64qBjko2YEtLC9bW1ogfqFRFn2b+v4CpVIovsyyrOP6OSyrksS8uKysDTdNQq9XY3d1FIpEoAFpGshJma2sr53A4OI/Hw7EsK0jIDMNw4+PjXFdXVyEWDLkr6PV6bmJiQvbs4XK5uJqampMBpCiKW1hYUDzF+Xw+zmAwFB5wcHBQMdxjDQ8PHwug6EtC0zS2trag0+kE16enp7G4uAiv14tUKgWz2Qyr1YrOzk6oVCq+XjweR11dHYLBYDZ7RcpK3tvbK+iRcDjMdXR0iP5Sm83GMQwjaNPX11e4IR4dHRU8bGBgQNKsp6dH0MbpdBYO0OVyCR5mNBolzTQaDZdOp/k2c3NzxICiMwlN03x5e3sboVBIrCqvZDIJhmH4c6PRKNlGSqKrGYqi+HJFRQX6+/tlGWq12qxlEmXt2pWVlbxTzGMtLS0VbogjkQjxLw+Hw8QeooA7OzvE5n6/n9hDNAbdbrfibeZRLS8vE7UH8lxunaSKfkUte9MEAAa6EhrqVNZ7HAc8DETBpo935a1oiJ1zH6O5rUH0fmI/iQ2PH1Nji/jpuxlwHHn0KOpBKVFaDRqbz6Gx+RysdjOudn9P7FmwGGy/+DLa3rQQ++QNmEykEA3t8UcsGn+izhvvvEIEBxAM8c2xO/iy74bgWu35KjhmPkLt+SoAwFnTaTI6HPMQMxsBLM1mvgdqdVSO2vKkqAdvXL+FuzOrYFkOd/9YzVqHfsbAlze95NNlnht3FQx0JU6pyxDejSGZyHyFOGs6DWu7GVVnjLh3+wGWZ8m+sMoGfLG1Ht3vvwZruxn1jdWCDVJgO4R7tx9gauwO5iZXiIAUA+r05fhi9D28/pZVluH9+XV8ctmBoJ98qQVIAGooNUZmr+KlV59TZMpsBHCl6Ss8Cu+T8uV+iz/4+qJiOOAg3Xz47eW8oQ5LtAcNdCWmtr55IlX8Oe3BX4sb2PTuIJ1Ko95cjResz6Kt0yKIy0Q8hY66awgFHxEBiqaZC91NArhYZB+fvu3E/M2/s9a32Ey4/ks/qs4c7OSocjUudDfhtx9cRICiQ9zc9rzgfPjzSVE44ODlGLr2q+BaPuFxVKKA9eZqwfnvP85Lmt362Q2WzURMfWN1jtryJApooCv5cmA7hGhI+j+PVDKNAPOQP9cbKwjxcsSghsrcKq/Q4FK/XZYhpdVk2h0q5ytRwFg0k8OeelqHzxzvKjbPtgRTKtEhjkXIzQuaqIM75FNV0C/9wUlKokPscW8SLzhXl/8hag+UNu7kKgGSqgRIqhIgqUqApCp6wH8B9cAOKo9Os8wAAAAASUVORK5CYII=);
opacity:0.5;
}
#djDebug a#djShowToolBarButton:hover {
background-color:#111;
padding-right:6px;
border-top-color:#FFE761;
border-left-color:#FFE761;
border-bottom-color:#FFE761;
opacity:1.0;
}
#djDebug code {
display:block;
font-family:Consolas, Monaco, "Bitstream Vera Sans Mono", "Lucida Console", monospace;
white-space:pre;
overflow:auto;
}
#djDebug tr.djDebugOdd {
background-color:#f5f5f5;
}
#djDebug .panelContent {
display:none;
position:fixed;
margin:0;
top:0;
right:200px;
bottom:0;
left:0px;
background-color:#eee;
color:#666;
z-index:100000000;
}
#djDebug .panelContent > div {
border-bottom:1px solid #ddd;
}
#djDebug .djDebugPanelTitle {
position:absolute;
background-color:#ffc;
color:#666;
padding-left:20px;
top:0;
right:0;
left:0;
height:50px;
}
#djDebug .djDebugPanelTitle code {
display:inline;
font-size:inherit;
}
#djDebug .djDebugPanelContent {
position:absolute;
top:50px;
right:0;
bottom:0;
left:0;
height:auto;
padding:5px 0 0 20px;
}
#djDebug .djDebugPanelContent .scroll {
height:100%;
overflow:auto;
display:block;
padding:0 10px 0 0;
}
#djDebug h3 {
font-size:24px;
font-weight:normal;
line-height:50px;
}
#djDebug h4 {
font-size:20px;
font-weight:bold;
margin-top:0.8em;
}
#djDebug .panelContent table {
border:1px solid #ccc;
border-collapse:collapse;
width:100%;
background-color:#fff;
display:block;
margin-top:0.8em;
overflow: auto;
}
#djDebug .panelContent tbody td,
#djDebug .panelContent tbody th {
vertical-align:top;
padding:2px 3px;
}
#djDebug .panelContent thead th {
padding:1px 6px 1px 3px;
text-align:left;
font-weight:bold;
font-size:14px;
}
#djDebug .panelContent tbody th {
width:12em;
text-align:right;
color:#666;
padding-right:.5em;
}
#djDebug .djTemplateHideContextDiv {
background-color:#fff;
}
/*
#djDebug .panelContent p a:hover, #djDebug .panelContent dd a:hover {
color:#111;
background-color:#ffc;
}
#djDebug .panelContent p {
padding:0 5px;
}
#djDebug .panelContent p, #djDebug .panelContent table, #djDebug .panelContent ol, #djDebug .panelContent ul, #djDebug .panelContent dl {
margin:5px 0 15px;
background-color:#fff;
}
#djDebug .panelContent table {
clear:both;
border:0;
padding:0;
margin:0;
border-collapse:collapse;
border-spacing:0;
}
#djDebug .panelContent table a {
color:#000;
padding:2px 4px;
}
#djDebug .panelContent table a:hover {
background-color:#ffc;
}
#djDebug .panelContent table th {
background-color:#333;
font-weight:bold;
color:#fff;
padding:3px 7px 3px;
text-align:left;
cursor:pointer;
}
#djDebug .panelContent table td {
padding:5px 10px;
font-size:14px;
background:#fff;
color:#000;
vertical-align:top;
border:0;
}
#djDebug .panelContent table tr.djDebugOdd td {
background:#eee;
}
*/
#djDebug .panelContent .djDebugClose {
text-indent:-9999999px;
display:block;
position:absolute;
top:4px;
right:15px;
height:40px;
width:40px;
background:url(../img/close.png) no-repeat center center;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA7dJREFUeNqsWM1PE0EU3+7ShdJKoTRA8UYgIUKM3rmaEI0euXsw0YMHIZEbxBijEiIHLkb/A44SDYlXzkYPGBM+ri1NWz7aUmhp6+9tps10mLfdfrzkl2535r39zc77mvUdHh4abUoUCAD3xP/fQAFItWJkYmLC+e1p8eGPgQcC08ycf8BPgW2vhr0SeQa8AWIe5k4LvATiwCrwtZmS2WT8IfAL+OKRhCoxoftH2GqLyBLwHbhvdC53ha2lVrfmE/DKzbLP5yubplnt7e310f+rq6tqpVLxVatVy0VtHbgNLHohsupGIhQKFQG7v79f+8CLiwsjl8sVAZsxQbYTwFrDwpTwpaj4ptPu6+vLDw4OBkHA014QobOzs3yhUAgyUx4BP2rhq/rIe53GwMBAeXx83DMJEpobi8WCpMtMWeOc9TkwoyMRjUattrMedBkyM+KZN4isqDMDgUCuExIyGbKlGVpRiSzo8kQ4HA4ZXRLGVuzo6GhBJjKviw6dT5TLZSOTyRinp6cGQrV+n67hnEY6nTaur6+1PkM2NWTm5fCd0xDRhh89CKHpXCMijLGxMef6+PjYiRSSUqlUv6/arOlKMlcjQlV0qsGDTZPehpYIxurXRCSRSFByq5NQ56hvhWwj8cm2p7A9UdKYVBX8fn+F2+tIJGIgmzaQkUnYtm0MDw+zvsLYniQiEc2q/WxxwmqRHxrISA9xxiyLDzTGdsRsJwJoK3QPo3vctnhpAzLqTexhiVOg6JAdU5bLy0vHZ+Ro8mg7Q0QO1LvwenZZJycnN3yCIPsMRRYnjO0DU/SY+wprW7fiWmjKJMgnUIcafEaeoxZCJWJI9lH4UjV2u6pSPp/XJR9jaGiIKrERDAbrjllzYOQJZ4zm6ISxuSsntB3gqTyazWZtMowa0aBFb4HegC6aRkZG2C2hLSObmqEdOcVvUdJUZyBlZ7tVa1ASdEUvjW3ZUqvvO82e3kqlUuVOSZANvBFd0fugawM2VKclOT8/tzohQ7pkgzn/rHNdvLbLJkPxeDzHRRIXIaTDkCB57XacoJPZW8bZQpSskslk0Y0QjdEcmstsB8myegrsYbqmENfJU3dOpZyOEwjdCqLIWUyxWKygVzHFccJ2eVkbar/qdq5ZFC3/R5dUb6EBsqQmyEtLuawj0eykRwpPgL0uRO+esLXW7tmX9nEWeAEk2yCQFLqzzb4MeK3Zn4FRsapNEXqGy2eJTTF3VOh27bOE/Ia2pQ81YeCO+P+XknGrH2pq8l+AAQDv/n2Gmq99BgAAAABJRU5ErkJggg==);
}
#djDebug .panelContent .djDebugClose:hover {
background-image:url(../img/close_hover.png);
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABCVJREFUeNqsWG1IU1EYfjfd0i1bTc2WFTW3tG2aFWlEf4KkMIrCvhH6U9DnjxTyV0ZEXxIVGBH1JyKIPiBK8kf1syCKwu8M3VQsK7OV6ba2udZ7bmd6d+85827zhYftnnPe5z73nvc95z1X5XQ6IUHLQqQjiul1E8KHGIqHxGw2C7+pcd58E6KMooAzphPxnKJBKbFSIfsRpxAmBWMLKI4iviBOIm5O5qSepL8c8R5xQ6EIqZmobzPlSkhINeIpYhkkb0WUqzreqbmEOBaTOjQGf/0+CHz7Klxqc+aAehrGbkrM2b6IyEVUKRFyMpYI38dW8HS0gc/5kdmfnpcPepsD0vMLeRSEm6ivEzeqJOlLsuIJyzs40Au/Xr+CP64uRXORZraCoXQ1aHMX8YZsRDRG0lcqpA1hl3p4mt+C+/nThILDWLYR9EtXsrraEY6IEHGwHmCJGG16k7AIYsTX0/KO1WWn95QJqZWODHxyws8XjUmnjPtZg8DFsFqpkB2sdWL4zWuYKuNwmVwu1w6xkA2s7GAFpnaGAcxbd8H8snJQa7QTUZ+aCrlr10NexR5Iy8yW+REuwsmwDeL0XSOLjfYW5pNZtldC9orS/4FoK4LWa5cgHP4L9n1HILNoudCuM82F1qsXgcXJSOs1ESFkF7WKe8JBfxifQMVMY8/o+P+Z+TYoPFwNoYAfMh3FE2udz8d8CPJWCLdKM03MbcXpySJTY5EtmsNuFW+uex4/gJFe14SYxUuiRHi/fIaue7f5CzKb20KEGKWtYx4Pl2jM54WW+joY6euR9Xm/DkDT5bMQHB3h+7O5jepEMiAUDDBvRtpCfn9CWUWEuGUbkF7PdSDZQQLTaC+S9Rks+VB4qCoqmxRyu4mQbmlrisEY5hEtLN8ynh2RmBjt74sK4LyK3VwhHO5uNa0xoxYMEtVk02KZbk7uxB400C/ERPOVc1EBrMsxcTdCScYQ68L9ZiiyjryUprC+wM5c0PoaH4EmIwMCv4eh6+6t8VghAWzdtVdYzHoaHjKFEE6GvRTvvmSZvScd8f3hHfjT2z0lS3zaQgtkb6tkde3EN3I/kjX3ET9kwVdSOmV7jaF0Fav5BxEh3X3PyPaVBVaYta48aRGkJtHOt7C6zrPKgMvSoCU2vbhEIEpGBKcw6qQ1LLNmrWaVioRIk2kUtvK4SsWSVaCdl8cbcjxW8UxOZqcRJ2TThITZCO+HZvB2dsQsnnUFNtAtWRpLZ430FKjinH0VHSdCXg8EhwaFS03WbEjR6Sc7TkRCoErp2beKlvwX+EtkKqRkGATEYTXSY4SSkx5x2Eyr7WStnXLVJXr2JfPoQBxEDCYgYJD6Oib7MqC0DLiOyKFPVU9TD2J8lqinY3Oo75R9lhC/oQbRhxoSIDZ63UGK9Xg/1ETsnwADAJrrTk7nZiozAAAAAElFTkSuQmCC);
}
#djDebug .panelContent .djDebugClose.djDebugBack {
background-image:url(../img/back.png);
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA7FJREFUeNrMWM1PE0EU3+7S7bZdKSFNSIFgJJAgINE7VxOi0SP/gYkePAiJ3CDGGJUQOXAx+h9wlGhIvHI2fgQ08mEkkjZNIZR2+7Httr63zMoyOzPdthx8yS+bnZn3m9/OvDcfG9jd3ZVatDggDLhO3j8DioBMMySDg4P2s6PJzu8AbhKMcNr8AHwkWPNL7FfIPcATQMJH2xGCh4AkYAHwtpGT3KD+FuAT4I1PEbQliO8XwtWSkFnAe8ANqX2bIFyzzU7NK8AjEXMgELBkWa6HQqEAvpfL5XqtVgvU63VF4LYE6APM+BGyIBKh67oJUCORCLPDQqEg5fN5E6ByKJA7BVg892FU+mJWvGN5a5pmdHV1RUGAr7lAQdls1igWi1FOk9uAD0760jHynOXR2dlp9fb2+haBhm0TiUQUfTlNFnnBeh8wxhIRj8eVllc98OWIGSN9eoTM0y3D4XC+HRFuMcjFqJqnhUyz1olYLKa730uVCrMjXrmIy1ln9vb2pt1CpljZQcdE1ihIW/sHHrayWbHLq1ZNGDPIyaiacguZZAhhph+K+fpr39Ppqcg/wtHhcE46QnAXHT4XwbJssjJECwbtp1EqS99AjNNpSD0r//77wH7yRgW5qeJhmJ44ChmiHYLBIHOMY9GINDrQ9y8uHDEoEMs7FNl+x5HhieFwD6GQbs8GJMtBbtCBmIkrA3anOD0YH2ci+21RWJ4vldibG5u7W5b+E8O95oguhM0LP1PhBauTOfj1Tnxg+c+DpD0aOFq6pjE75HAfoZAdunGlUpH9iLh6uc9+nsaFt5xlHO4dmZwxtynVKm5avIUrqoWkaxAnTmdOnGC5SARyIjdVvA0bX8ZRt0E7GYZhNgpWb0b1c0UIODfcC9o6XZvL5VTYwrnp6zaMEyd9eYZcyMmoWncLWQUcemIim82xFjTeQiey4+Nj1qZ3CNOySu++zxhzeimTyVjtpiZywIiwNr0XrGPAMh20aCcnJ0o7YtAXOTj3nyXeKZ55ykaiZDKZZ2WS6KiIPhwRaI9F1wm8mT3lBJueSqWkdDptigRhHbbBtpzpQJujb4EdnFOTzjvJ4+kcYF8nFEWpqapqf4xpmjXLsmRynVAFg7VMn1dF95oZcuR/yWPDDqvVKsIp8nOknGOJaHTTQ4e7gM0L2NM2Cddiq3dfnMdxwANAugUBaeI73ujPgN9jwGtAD/mqFZJ6kuC3xApp20N8L+y3hHuE1lw/amKAUfK+hYtxsz9qHPsrwACHs5P9Qys/0AAAAABJRU5ErkJggg==);
}
#djDebug .panelContent .djDebugClose.djDebugBack:hover {
background-image:url(../img/back_hover.png);
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA6hJREFUeNrMWF1Ik1EYPtt0pkuGa/aDJTY3nNvSfkglvEwQpa7CbrosKAghBedNikKgEgVe1m03SVeJXmSXBmIozpxpuiUS/eicSc75m73vx/nGt7Nzvm8/BR14+Pjec85znp297znv++kCgQBJs1kBuYDz9H0KEAWEUiGx2WzSMyvFxa8B6iicgjFzgBGKwWSJdUnuyB1AF+BUisK/AToBz7V2RK9B1ACYBDxLQwShc3Cuj3IJm5qQVsAQ4ALJvFVQrlbRAJGPPAE8UKU+2Ce/d6Jk98d36dV44iTR54DvGlTd7jGgCNCSjJBONRHR+Q8kMjtDooF5bn9uaRkxuTwkt+yciAK5UX2fmrNiVLzmzd77ukR+jr0j28GFpP6LIzYHMVdfIcais6IhjYBh2VlZITMANzsj4ntPwiNDaTmHpa6RmCov87r8AA8vau7yRGxOjactAhvOjUxP8LrcdM0EIR3syN0vAbL+djjjkAm/GZS4OK2DFdLEOyc2xsfi/3frcb4/COxqXPI5EwwGm5RC6nnRwTpmgdNNKpq9iZFiLZTsWXkmoRDkQk5Oq1cKqU3wDf80lxDFXGzvTlhUFqm2OwLOWlkI3qIOZc/h3s4hL0y3QyvSM7+4hFxq74otGg2txuyVzW3SU7QryM2YHfD3WFGIPeHQ3AjreETrc34y3d8b8wtZDApE+/5WRHrHnRGJEXDbUYiFte5HIsLtRTGTPR3Sovj3oH8oRaIotB8t5h9kAm6LnvwnDe+acILRJPZ+ZeTgr5f9A+2u2/el3cDd2lz+zF+Qzx1GIYus1WC2oEPptET4+vukp+wXrJ3XBNyLeppjxoWILjtHh5eW6OD6tbxEJno6Y4vJfoJ2NRHIidyMeQHum5DsI6PsJJPTremsvIgSiVDhHFXevnjMvmRHrL56QbaXFuN2hLeQyB43psROCm/c4nXdhB0ZkHdkALDGjjBXVXMPNNFBp9bM1TU88xqKYG/fR+woY7GDFFxtyDg0MScxnrHzunpEGdon9rj/h4kR1j/logKrlZcqIlH2MYt0laeUKlbVEOPpUtGQNq0CqxvwUDR766OPbM3NqibPeU4XySuvVNPplZNnUc6aUjlxACG8Rx01GyLHgKmBQbOKfaosJ7Rq3xaa8vcK6WBBQ75ZQgrNy5YRyVR6OOE6zbYzbX7K1ZdOyUloNe8B3AOspCFghc71aH0Z0KX4feSvf5bQctZkP9Sgg7jo+ywm6+l+qPkjwADNS26fFM/O1QAAAABJRU5ErkJggg==);
}
#djDebug .panelContent dt, #djDebug .panelContent dd {
display:block;
}
#djDebug .panelContent dt {
margin-top:0.75em;
}
#djDebug .panelContent dd {
margin-left:10px;
}
#djDebug a.toggleTemplate {
padding:4px;
background-color:#bbb;
-moz-border-radius:3px;
-webkit-border-radius:3px;
}
#djDebug a.toggleTemplate:hover {
padding:4px;
background-color:#444;
color:#ffe761;
-moz-border-radius:3px;
-webkit-border-radius:3px;
}
#djDebug a.djTemplateShowContext, #djDebug a.djTemplateShowContext span.toggleArrow {
color:#999;
}
#djDebug a.djTemplateShowContext:hover, #djDebug a.djTemplateShowContext:hover span.toggleArrow {
color:#000;
cursor:pointer;
}
#djDebug .djDebugSqlWrap {
position:relative;
}
#djDebug .djDebugCollapse {
display: inline-block;
background: #ddd;
background: url(data:image/gif;base64,R0lGODlhBgAKAJEDAJGRkdra2qysrP///yH5BAEAAAMALAAAAAAGAAoAAAIPnI+JIRImABBQ0sGc2qoAADs=) 0 3px repeat-x;
width: 18px;
text-indent: -10000em;
}
#djDebug .djSelected .djDebugCollapse {
background: inherit;
text-indent: 0;
width: auto;
display: inline;
}
#djDebug .djUnselected {
display: none;
}
#djDebug tr.djHiddenByDefault {
display: none;
}
#djDebug tr.djSelected {
display: table-row;
}
#djDebug .djDebugSql {
z-index:100000002;
}
#djDebug .djSQLDetailsDiv tbody th {
text-align: left;
}
#djDebug .djSqlExplain td {
white-space: pre;
}
#djDebug span.djDebugLineChart {
background-color:#777;
height:3px;
position:absolute;
bottom:0;
top:0;
left:0;
display:block;
z-index:1000000001;
}
#djDebug span.djDebugLineChartWarning {
background-color:#900;
}
#djDebug .highlight { color:#000; }
#djDebug .highlight .err { color:#000; } /* Error */
#djDebug .highlight .g { color:#000; } /* Generic */
#djDebug .highlight .k { color:#000; font-weight:bold } /* Keyword */
#djDebug .highlight .o { color:#000; } /* Operator */
#djDebug .highlight .n { color:#000; } /* Name */
#djDebug .highlight .mi { color:#000; font-weight:bold } /* Literal.Number.Integer */
#djDebug .highlight .l { color:#000; } /* Literal */
#djDebug .highlight .x { color:#000; } /* Other */
#djDebug .highlight .p { color:#000; } /* Punctuation */
#djDebug .highlight .m { color:#000; font-weight:bold } /* Literal.Number */
#djDebug .highlight .s { color:#333 } /* Literal.String */
#djDebug .highlight .w { color:#888888 } /* Text.Whitespace */
#djDebug .highlight .il { color:#000; font-weight:bold } /* Literal.Number.Integer.Long */
#djDebug .highlight .na { color:#333 } /* Name.Attribute */
#djDebug .highlight .nt { color:#000; font-weight:bold } /* Name.Tag */
#djDebug .highlight .nv { color:#333 } /* Name.Variable */
#djDebug .highlight .s2 { color:#333 } /* Literal.String.Double */
#djDebug .highlight .cp { color:#333 } /* Comment.Preproc */
#djDebug .timeline {
width: 30%;
}
#djDebug .djDebugTimeline {
position: relative;
height: 100%;
min-height: 100%;
}
#djDebug div.djDebugLineChart {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
vertical-align: middle;
}
#djDebug div.djDebugLineChart strong {
text-indent: -10000em;
display: block;
font-weight: normal;
vertical-align: middle;
background-color:#ccc;
}
#djDebug div.djDebugLineChartWarning strong {
background-color:#900;
}
#djDebug .djDebugInTransaction div.djDebugLineChart strong {
background-color: #d3ff82;
}
#djDebug .djDebugStartTransaction div.djDebugLineChart strong {
border-left: 1px solid #94b24d;
}
#djDebug .djDebugEndTransaction div.djDebugLineChart strong {
border-right: 1px solid #94b24d;
}
#djDebug .djDebugHover div.djDebugLineChart strong {
background-color: #000;
}
#djDebug .djDebugInTransaction.djDebugHover div.djDebugLineChart strong {
background-color: #94b24d;
}
#djDebug .panelContent ul.stats {
position: relative;
}
#djDebug .panelContent ul.stats li {
width: 30%;
float: left;
}
#djDebug .panelContent ul.stats li strong.label {
display: block;
}
#djDebug .panelContent ul.stats li span.color {
height: 12px;
width: 3px;
display: inline-block;
}
#djDebug .panelContent ul.stats li span.info {
display: block;
padding-left: 5px;
}
#djDebug .panelcontent thead th {
white-space: nowrap;
}
#djDebug .djDebugRowWarning .time {
color: red;
}
#djdebug .panelcontent table .toggle {
width: 14px;
padding-top: 3px;
}
#djdebug .panelcontent table .actions {
min-width: 70px;
}
#djdebug .panelcontent table .color {
width: 3px;
}
#djdebug .panelcontent table .color span {
width: 3px;
height: 12px;
overflow: hidden;
padding: 0;
}
#djDebug .djToggleSwitch {
text-decoration: none;
border: 1px solid #999;
height: 12px;
width: 12px;
line-height: 12px;
text-align: center;
color: #777;
display: inline-block;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF', endColorstr='#DCDCDC'); /* for IE */
background: -webkit-gradient(linear, left top, left bottom, from(#FFF), to(#DCDCDC)); /* for webkit browsers */
background:-moz-linear-gradient(center top , #FFFFFF 0pt, #DCDCDC 100%) repeat scroll 0 0 transparent;
}
#djDebug .djNoToggleSwitch {
height: 14px;
width: 14px;
display: inline-block;
}
#djDebug .djSQLDetailsDiv {
margin-top:0.8em;
}
#djDebug .djSQLDetailsDiv pre {
color: #777;
border:1px solid #ccc;
border-collapse:collapse;
background-color:#fff;
display:block;
overflow: auto;
padding:2px 3px;
margin-bottom: 3px;
font-family:Consolas, Monaco, "Bitstream Vera Sans Mono", "Lucida Console", monospace;
}
#djDebug .stack span {
color: #000;
font-weight: bold;
}
#djDebug .stack span.path {
color: #777;
font-weight: normal;
}
#djDebug .stack span.code {
font-weight: normal;
}
@media print {
#djDebug {
display: none;
}
}
================================================
FILE: debug_toolbar/media/debug_toolbar/js/jquery.cookie.js
================================================
/**
* Cookie plugin
*
* Copyright (c) 2006 Klaus Hartl (stilbuero.de)
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
*/
/**
* Create a cookie with the given name and value and other optional parameters.
*
* @example $.cookie('the_cookie', 'the_value');
* @desc Set the value of a cookie.
* @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
* @desc Create a cookie with all available options.
* @example $.cookie('the_cookie', 'the_value');
* @desc Create a session cookie.
* @example $.cookie('the_cookie', null);
* @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
* used when the cookie was set.
*
* @param String name The name of the cookie.
* @param String value The value of the cookie.
* @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
* @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
* If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
* If set to null or omitted, the cookie will be a session cookie and will not be retained
* when the the browser exits.
* @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
* @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
* @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
* require a secure protocol (like HTTPS).
* @type undefined
*
* @name $.cookie
* @cat Plugins/Cookie
* @author Klaus Hartl/klaus.hartl@stilbuero.de
*/
/**
* Get the value of a cookie with the given name.
*
* @example $.cookie('the_cookie');
* @desc Get the value of a cookie.
*
* @param String name The name of the cookie.
* @return The value of the cookie.
* @type String
*
* @name $.cookie
* @cat Plugins/Cookie
* @author Klaus Hartl/klaus.hartl@stilbuero.de
*/
jQuery.cookie = function(name, value, options) {
if (typeof value != 'undefined') { // name and value given, set cookie
options = options || {};
if (value === null) {
value = '';
options.expires = -1;
}
var expires = '';
if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
var date;
if (typeof options.expires == 'number') {
date = new Date();
date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
} else {
date = options.expires;
}
expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
}
// CAUTION: Needed to parenthesize options.path and options.domain
// in the following expressions, otherwise they evaluate to undefined
// in the packed version for some reason...
var path = options.path ? '; path=' + (options.path) : '';
var domain = options.domain ? '; domain=' + (options.domain) : '';
var secure = options.secure ? '; secure' : '';
document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
} else { // only name given, get cookie
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
};
================================================
FILE: debug_toolbar/media/debug_toolbar/js/jquery.js
================================================
/*!
* jQuery JavaScript Library v1.4.1
* http://jquery.com/
*
* Copyright 2010, John Resig
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* Includes Sizzle.js
* http://sizzlejs.com/
* Copyright 2010, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
*
* Date: Mon Jan 25 19:43:33 2010 -0500
*/
(function( window, undefined ) {
// Define a local copy of jQuery
var jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context );
},
// Map over jQuery in case of overwrite
_jQuery = window.jQuery,
// Map over the $ in case of overwrite
_$ = window.$,
// Use the correct document accordingly with window argument (sandbox)
document = window.document,
// A central reference to the root jQuery(document)
rootjQuery,
// A simple way to check for HTML strings or ID strings
// (both of which we optimize for)
quickExpr = /^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,
// Is it a simple selector
isSimple = /^.[^:#\[\.,]*$/,
// Check if a string has a non-whitespace character in it
rnotwhite = /\S/,
// Used for trimming whitespace
rtrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g,
// Match a standalone tag
rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
// Keep a UserAgent string for use with jQuery.browser
userAgent = navigator.userAgent,
// For matching the engine and version of the browser
browserMatch,
// Has the ready events already been bound?
readyBound = false,
// The functions to execute on DOM ready
readyList = [],
// The ready event handler
DOMContentLoaded,
// Save a reference to some core methods
toString = Object.prototype.toString,
hasOwnProperty = Object.prototype.hasOwnProperty,
push = Array.prototype.push,
slice = Array.prototype.slice,
indexOf = Array.prototype.indexOf;
jQuery.fn = jQuery.prototype = {
init: function( selector, context ) {
var match, elem, ret, doc;
// Handle $(""), $(null), or $(undefined)
if ( !selector ) {
return this;
}
// Handle $(DOMElement)
if ( selector.nodeType ) {
this.context = this[0] = selector;
this.length = 1;
return this;
}
// Handle HTML strings
if ( typeof selector === "string" ) {
// Are we dealing with HTML string or an ID?
match = quickExpr.exec( selector );
// Verify a match, and that no context was specified for #id
if ( match && (match[1] || !context) ) {
// HANDLE: $(html) -> $(array)
if ( match[1] ) {
doc = (context ? context.ownerDocument || context : document);
// If a single string is passed in and it's a single tag
// just do a createElement and skip the rest
ret = rsingleTag.exec( selector );
if ( ret ) {
if ( jQuery.isPlainObject( context ) ) {
selector = [ document.createElement( ret[1] ) ];
jQuery.fn.attr.call( selector, context, true );
} else {
selector = [ doc.createElement( ret[1] ) ];
}
} else {
ret = buildFragment( [ match[1] ], [ doc ] );
selector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes;
}
// HANDLE: $("#id")
} else {
elem = document.getElementById( match[2] );
if ( elem ) {
// Handle the case where IE and Opera return items
// by name instead of ID
if ( elem.id !== match[2] ) {
return rootjQuery.find( selector );
}
// Otherwise, we inject the element directly into the jQuery object
this.length = 1;
this[0] = elem;
}
this.context = document;
this.selector = selector;
return this;
}
// HANDLE: $("TAG")
} else if ( !context && /^\w+$/.test( selector ) ) {
this.selector = selector;
this.context = document;
selector = document.getElementsByTagName( selector );
// HANDLE: $(expr, $(...))
} else if ( !context || context.jquery ) {
return (context || rootjQuery).find( selector );
// HANDLE: $(expr, context)
// (which is just equivalent to: $(context).find(expr)
} else {
return jQuery( context ).find( selector );
}
// HANDLE: $(function)
// Shortcut for document ready
} else if ( jQuery.isFunction( selector ) ) {
return rootjQuery.ready( selector );
}
if (selector.selector !== undefined) {
this.selector = selector.selector;
this.context = selector.context;
}
return jQuery.isArray( selector ) ?
this.setArray( selector ) :
jQuery.makeArray( selector, this );
},
// Start with an empty selector
selector: "",
// The current version of jQuery being used
jquery: "1.4.1",
// The default length of a jQuery object is 0
length: 0,
// The number of elements contained in the matched element set
size: function() {
return this.length;
},
toArray: function() {
return slice.call( this, 0 );
},
// Get the Nth element in the matched element set OR
// Get the whole matched element set as a clean array
get: function( num ) {
return num == null ?
// Return a 'clean' array
this.toArray() :
// Return just the object
( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
},
// Take an array of elements and push it onto the stack
// (returning the new matched element set)
pushStack: function( elems, name, selector ) {
// Build a new jQuery matched element set
var ret = jQuery( elems || null );
// Add the old object onto the stack (as a reference)
ret.prevObject = this;
ret.context = this.context;
if ( name === "find" ) {
ret.selector = this.selector + (this.selector ? " " : "") + selector;
} else if ( name ) {
ret.selector = this.selector + "." + name + "(" + selector + ")";
}
// Return the newly-formed element set
return ret;
},
// Force the current matched set of elements to become
// the specified array of elements (destroying the stack in the process)
// You should use pushStack() in order to do this, but maintain the stack
setArray: function( elems ) {
// Resetting the length to 0, then using the native Array push
// is a super-fast way to populate an object with array-like properties
this.length = 0;
push.apply( this, elems );
return this;
},
// Execute a callback for every element in the matched set.
// (You can seed the arguments with an array of args, but this is
// only used internally.)
each: function( callback, args ) {
return jQuery.each( this, callback, args );
},
ready: function( fn ) {
// Attach the listeners
jQuery.bindReady();
// If the DOM is already ready
if ( jQuery.isReady ) {
// Execute the function immediately
fn.call( document, jQuery );
// Otherwise, remember the function for later
} else if ( readyList ) {
// Add the function to the wait list
readyList.push( fn );
}
return this;
},
eq: function( i ) {
return i === -1 ?
this.slice( i ) :
this.slice( i, +i + 1 );
},
first: function() {
return this.eq( 0 );
},
last: function() {
return this.eq( -1 );
},
slice: function() {
return this.pushStack( slice.apply( this, arguments ),
"slice", slice.call(arguments).join(",") );
},
map: function( callback ) {
return this.pushStack( jQuery.map(this, function( elem, i ) {
return callback.call( elem, i, elem );
}));
},
end: function() {
return this.prevObject || jQuery(null);
},
// For internal use only.
// Behaves like an Array's method, not like a jQuery method.
push: push,
sort: [].sort,
splice: [].splice
};
// Give the init function the jQuery prototype for later instantiation
jQuery.fn.init.prototype = jQuery.fn;
jQuery.extend = jQuery.fn.extend = function() {
// copy reference to target object
var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options, name, src, copy;
// Handle a deep copy situation
if ( typeof target === "boolean" ) {
deep = target;
target = arguments[1] || {};
// skip the boolean and the target
i = 2;
}
// Handle case when target is a string or something (possible in deep copy)
if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
target = {};
}
// extend jQuery itself if only one argument is passed
if ( length === i ) {
target = this;
--i;
}
for ( ; i < length; i++ ) {
// Only deal with non-null/undefined values
if ( (options = arguments[ i ]) != null ) {
// Extend the base object
for ( name in options ) {
src = target[ name ];
copy = options[ name ];
// Prevent never-ending loop
if ( target === copy ) {
continue;
}
// Recurse if we're merging object literal values or arrays
if ( deep && copy && ( jQuery.isPlainObject(copy) || jQuery.isArray(copy) ) ) {
var clone = src && ( jQuery.isPlainObject(src) || jQuery.isArray(src) ) ? src
: jQuery.isArray(copy) ? [] : {};
// Never move original objects, clone them
target[ name ] = jQuery.extend( deep, clone, copy );
// Don't bring in undefined values
} else if ( copy !== undefined ) {
target[ name ] = copy;
}
}
}
}
// Return the modified object
return target;
};
jQuery.extend({
noConflict: function( deep ) {
window.$ = _$;
if ( deep ) {
window.jQuery = _jQuery;
}
return jQuery;
},
// Is the DOM ready to be used? Set to true once it occurs.
isReady: false,
// Handle when the DOM is ready
ready: function() {
// Make sure that the DOM is not already loaded
if ( !jQuery.isReady ) {
// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
if ( !document.body ) {
return setTimeout( jQuery.ready, 13 );
}
// Remember that the DOM is ready
jQuery.isReady = true;
// If there are functions bound, to execute
if ( readyList ) {
// Execute all of them
var fn, i = 0;
while ( (fn = readyList[ i++ ]) ) {
fn.call( document, jQuery );
}
// Reset the list of functions
readyList = null;
}
// Trigger any bound ready events
if ( jQuery.fn.triggerHandler ) {
jQuery( document ).triggerHandler( "ready" );
}
}
},
bindReady: function() {
if ( readyBound ) {
return;
}
readyBound = true;
// Catch cases where $(document).ready() is called after the
// browser event has already occurred.
if ( document.readyState === "complete" ) {
return jQuery.ready();
}
// Mozilla, Opera and webkit nightlies currently support this event
if ( document.addEventListener ) {
// Use the handy event callback
document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
// A fallback to window.onload, that will always work
window.addEventListener( "load", jQuery.ready, false );
// If IE event model is used
} else if ( document.attachEvent ) {
// ensure firing before onload,
// maybe late but safe also for iframes
document.attachEvent("onreadystatechange", DOMContentLoaded);
// A fallback to window.onload, that will always work
window.attachEvent( "onload", jQuery.ready );
// If IE and not a frame
// continually check to see if the document is ready
var toplevel = false;
try {
toplevel = window.frameElement == null;
} catch(e) {}
if ( document.documentElement.doScroll && toplevel ) {
doScrollCheck();
}
}
},
// See test/unit/core.js for details concerning isFunction.
// Since version 1.3, DOM methods and functions like alert
// aren't supported. They return false on IE (#2968).
isFunction: function( obj ) {
return toString.call(obj) === "[object Function]";
},
isArray: function( obj ) {
return toString.call(obj) === "[object Array]";
},
isPlainObject: function( obj ) {
// Must be an Object.
// Because of IE, we also have to check the presence of the constructor property.
// Make sure that DOM nodes and window objects don't pass through, as well
if ( !obj || toString.call(obj) !== "[object Object]" || obj.nodeType || obj.setInterval ) {
return false;
}
// Not own constructor property must be Object
if ( obj.constructor
&& !hasOwnProperty.call(obj, "constructor")
&& !hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf") ) {
return false;
}
// Own properties are enumerated firstly, so to speed up,
// if last one is own, then all properties are own.
var key;
for ( key in obj ) {}
return key === undefined || hasOwnProperty.call( obj, key );
},
isEmptyObject: function( obj ) {
for ( var name in obj ) {
return false;
}
return true;
},
error: function( msg ) {
throw msg;
},
parseJSON: function( data ) {
if ( typeof data !== "string" || !data ) {
return null;
}
// Make sure the incoming data is actual JSON
// Logic borrowed from http://json.org/json2.js
if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
.replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) {
// Try to use the native JSON parser first
return window.JSON && window.JSON.parse ?
window.JSON.parse( data ) :
(new Function("return " + data))();
} else {
jQuery.error( "Invalid JSON: " + data );
}
},
noop: function() {},
// Evalulates a script in a global context
globalEval: function( data ) {
if ( data && rnotwhite.test(data) ) {
// Inspired by code by Andrea Giammarchi
// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
var head = document.getElementsByTagName("head")[0] || document.documentElement,
script = document.createElement("script");
script.type = "text/javascript";
if ( jQuery.support.scriptEval ) {
script.appendChild( document.createTextNode( data ) );
} else {
script.text = data;
}
// Use insertBefore instead of appendChild to circumvent an IE6 bug.
// This arises when a base node is used (#2709).
head.insertBefore( script, head.firstChild );
head.removeChild( script );
}
},
nodeName: function( elem, name ) {
return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
},
// args is for internal usage only
each: function( object, callback, args ) {
var name, i = 0,
length = object.length,
isObj = length === undefined || jQuery.isFunction(object);
if ( args ) {
if ( isObj ) {
for ( name in object ) {
if ( callback.apply( object[ name ], args ) === false ) {
break;
}
}
} else {
for ( ; i < length; ) {
if ( callback.apply( object[ i++ ], args ) === false ) {
break;
}
}
}
// A special, fast, case for the most common use of each
} else {
if ( isObj ) {
for ( name in object ) {
if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
break;
}
}
} else {
for ( var value = object[0];
i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}
}
}
return object;
},
trim: function( text ) {
return (text || "").replace( rtrim, "" );
},
// results is for internal usage only
makeArray: function( array, results ) {
var ret = results || [];
if ( array != null ) {
// The window, strings (and functions) also have 'length'
// The extra typeof function check is to prevent crashes
// in Safari 2 (See: #3039)
if ( array.length == null || typeof array === "string" || jQuery.isFunction(array) || (typeof array !== "function" && array.setInterval) ) {
push.call( ret, array );
} else {
jQuery.merge( ret, array );
}
}
return ret;
},
inArray: function( elem, array ) {
if ( array.indexOf ) {
return array.indexOf( elem );
}
for ( var i = 0, length = array.length; i < length; i++ ) {
if ( array[ i ] === elem ) {
return i;
}
}
return -1;
},
merge: function( first, second ) {
var i = first.length, j = 0;
if ( typeof second.length === "number" ) {
for ( var l = second.length; j < l; j++ ) {
first[ i++ ] = second[ j ];
}
} else {
while ( second[j] !== undefined ) {
first[ i++ ] = second[ j++ ];
}
}
first.length = i;
return first;
},
grep: function( elems, callback, inv ) {
var ret = [];
// Go through the array, only saving the items
// that pass the validator function
for ( var i = 0, length = elems.length; i < length; i++ ) {
if ( !inv !== !callback( elems[ i ], i ) ) {
ret.push( elems[ i ] );
}
}
return ret;
},
// arg is for internal usage only
map: function( elems, callback, arg ) {
var ret = [], value;
// Go through the array, translating each of the items to their
// new value (or values).
for ( var i = 0, length = elems.length; i < length; i++ ) {
value = callback( elems[ i ], i, arg );
if ( value != null ) {
ret[ ret.length ] = value;
}
}
return ret.concat.apply( [], ret );
},
// A global GUID counter for objects
guid: 1,
proxy: function( fn, proxy, thisObject ) {
if ( arguments.length === 2 ) {
if ( typeof proxy === "string" ) {
thisObject = fn;
fn = thisObject[ proxy ];
proxy = undefined;
} else if ( proxy && !jQuery.isFunction( proxy ) ) {
thisObject = proxy;
proxy = undefined;
}
}
if ( !proxy && fn ) {
proxy = function() {
return fn.apply( thisObject || this, arguments );
};
}
// Set the guid of unique handler to the same of original handler, so it can be removed
if ( fn ) {
proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
}
// So proxy can be declared as an argument
return proxy;
},
// Use of jQuery.browser is frowned upon.
// More details: http://docs.jquery.com/Utilities/jQuery.browser
uaMatch: function( ua ) {
ua = ua.toLowerCase();
var match = /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
/(opera)(?:.*version)?[ \/]([\w.]+)/.exec( ua ) ||
/(msie) ([\w.]+)/.exec( ua ) ||
!/compatible/.test( ua ) && /(mozilla)(?:.*? rv:([\w.]+))?/.exec( ua ) ||
[];
return { browser: match[1] || "", version: match[2] || "0" };
},
browser: {}
});
browserMatch = jQuery.uaMatch( userAgent );
if ( browserMatch.browser ) {
jQuery.browser[ browserMatch.browser ] = true;
jQuery.browser.version = browserMatch.version;
}
// Deprecated, use jQuery.browser.webkit instead
if ( jQuery.browser.webkit ) {
jQuery.browser.safari = true;
}
if ( indexOf ) {
jQuery.inArray = function( elem, array ) {
return indexOf.call( array, elem );
};
}
// All jQuery objects should point back to these
rootjQuery = jQuery(document);
// Cleanup functions for the document ready method
if ( document.addEventListener ) {
DOMContentLoaded = function() {
document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
jQuery.ready();
};
} else if ( document.attachEvent ) {
DOMContentLoaded = function() {
// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
if ( document.readyState === "complete" ) {
document.detachEvent( "onreadystatechange", DOMContentLoaded );
jQuery.ready();
}
};
}
// The DOM ready check for Internet Explorer
function doScrollCheck() {
if ( jQuery.isReady ) {
return;
}
try {
// If IE is used, use the trick by Diego Perini
// http://javascript.nwbox.com/IEContentLoaded/
document.documentElement.doScroll("left");
} catch( error ) {
setTimeout( doScrollCheck, 1 );
return;
}
// and execute any waiting functions
jQuery.ready();
}
function evalScript( i, elem ) {
if ( elem.src ) {
jQuery.ajax({
url: elem.src,
async: false,
dataType: "script"
});
} else {
jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
}
if ( elem.parentNode ) {
elem.parentNode.removeChild( elem );
}
}
// Mutifunctional method to get and set values to a collection
// The value/s can be optionally by executed if its a function
function access( elems, key, value, exec, fn, pass ) {
var length = elems.length;
// Setting many attributes
if ( typeof key === "object" ) {
for ( var k in key ) {
access( elems, k, key[k], exec, fn, value );
}
return elems;
}
// Setting one attribute
if ( value !== undefined ) {
// Optionally, function values get executed if exec is true
exec = !pass && exec && jQuery.isFunction(value);
for ( var i = 0; i < length; i++ ) {
fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
}
return elems;
}
// Getting an attribute
return length ? fn( elems[0], key ) : null;
}
function now() {
return (new Date).getTime();
}
(function() {
jQuery.support = {};
var root = document.documentElement,
script = document.createElement("script"),
div = document.createElement("div"),
id = "script" + now();
div.style.display = "none";
div.innerHTML = " <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
var all = div.getElementsByTagName("*"),
a = div.getElementsByTagName("a")[0];
// Can't get basic test support
if ( !all || !all.length || !a ) {
return;
}
jQuery.support = {
// IE strips leading whitespace when .innerHTML is used
leadingWhitespace: div.firstChild.nodeType === 3,
// Make sure that tbody elements aren't automatically inserted
// IE will insert them into empty tables
tbody: !div.getElementsByTagName("tbody").length,
// Make sure that link elements get serialized correctly by innerHTML
// This requires a wrapper element in IE
htmlSerialize: !!div.getElementsByTagName("link").length,
// Get the style information from getAttribute
// (IE uses .cssText insted)
style: /red/.test( a.getAttribute("style") ),
// Make sure that URLs aren't manipulated
// (IE normalizes it by default)
hrefNormalized: a.getAttribute("href") === "/a",
// Make sure that element opacity exists
// (IE uses filter instead)
// Use a regex to work around a WebKit issue. See #5145
opacity: /^0.55$/.test( a.style.opacity ),
// Verify style float existence
// (IE uses styleFloat instead of cssFloat)
cssFloat: !!a.style.cssFloat,
// Make sure that if no value is specified for a checkbox
// that it defaults to "on".
// (WebKit defaults to "" instead)
checkOn: div.getElementsByTagName("input")[0].value === "on",
// Make sure that a selected-by-default option has a working selected property.
// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
optSelected: document.createElement("select").appendChild( document.createElement("option") ).selected,
// Will be defined later
checkClone: false,
scriptEval: false,
noCloneEvent: true,
boxModel: null
};
script.type = "text/javascript";
try {
script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
} catch(e) {}
root.insertBefore( script, root.firstChild );
// Make sure that the execution of code works by injecting a script
// tag with appendChild/createTextNode
// (IE doesn't support this, fails, and uses .text instead)
if ( window[ id ] ) {
jQuery.support.scriptEval = true;
delete window[ id ];
}
root.removeChild( script );
if ( div.attachEvent && div.fireEvent ) {
div.attachEvent("onclick", function click() {
// Cloning a node shouldn't copy over any
// bound event handlers (IE does this)
jQuery.support.noCloneEvent = false;
div.detachEvent("onclick", click);
});
div.cloneNode(true).fireEvent("onclick");
}
div = document.createElement("div");
div.innerHTML = "<input type='radio' name='radiotest' checked='checked'/>";
var fragment = document.createDocumentFragment();
fragment.appendChild( div.firstChild );
// WebKit doesn't clone checked state correctly in fragments
jQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;
// Figure out if the W3C box model works as expected
// document.body must exist before we can do this
jQuery(function() {
var div = document.createElement("div");
div.style.width = div.style.paddingLeft = "1px";
document.body.appendChild( div );
jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
document.body.removeChild( div ).style.display = 'none';
div = null;
});
// Technique from Juriy Zaytsev
// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
var eventSupported = function( eventName ) {
var el = document.createElement("div");
eventName = "on" + eventName;
var isSupported = (eventName in el);
if ( !isSupported ) {
el.setAttribute(eventName, "return;");
isSupported = typeof el[eventName] === "function";
}
el = null;
return isSupported;
};
jQuery.support.submitBubbles = eventSupported("submit");
jQuery.support.changeBubbles = eventSupported("change");
// release memory in IE
root = script = div = all = a = null;
})();
jQuery.props = {
"for": "htmlFor",
"class": "className",
readonly: "readOnly",
maxlength: "maxLength",
cellspacing: "cellSpacing",
rowspan: "rowSpan",
colspan: "colSpan",
tabindex: "tabIndex",
usemap: "useMap",
frameborder: "frameBorder"
};
var expando = "jQuery" + now(), uuid = 0, windowData = {};
var emptyObject = {};
jQuery.extend({
cache: {},
expando:expando,
// The following elements throw uncatchable exceptions if you
// attempt to add expando properties to them.
noData: {
"embed": true,
"object": true,
"applet": true
},
data: function( elem, name, data ) {
if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
return;
}
elem = elem == window ?
windowData :
elem;
var id = elem[ expando ], cache = jQuery.cache, thisCache;
// Handle the case where there's no name immediately
if ( !name && !id ) {
return null;
}
// Compute a unique ID for the element
if ( !id ) {
id = ++uuid;
}
// Avoid generating a new cache unless none exists and we
// want to manipulate it.
if ( typeof name === "object" ) {
elem[ expando ] = id;
thisCache = cache[ id ] = jQuery.extend(true, {}, name);
} else if ( cache[ id ] ) {
thisCache = cache[ id ];
} else if ( typeof data === "undefined" ) {
thisCache = emptyObject;
} else {
thisCache = cache[ id ] = {};
}
// Prevent overriding the named cache with undefined values
if ( data !== undefined ) {
elem[ expando ] = id;
thisCache[ name ] = data;
}
return typeof name === "string" ? thisCache[ name ] : thisCache;
},
removeData: function( elem, name ) {
if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
return;
}
elem = elem == window ?
windowData :
elem;
var id = elem[ expando ], cache = jQuery.cache, thisCache = cache[ id ];
// If we want to remove a specific section of the element's data
if ( name ) {
if ( thisCache ) {
// Remove the section of cache data
delete thisCache[ name ];
// If we've removed all the data, remove the element's cache
if ( jQuery.isEmptyObject(thisCache) ) {
jQuery.removeData( elem );
}
}
// Otherwise, we want to remove all of the element's data
} else {
// Clean up the element expando
try {
delete elem[ expando ];
} catch( e ) {
// IE has trouble directly removing the expando
// but it's ok with using removeAttribute
if ( elem.removeAttribute ) {
elem.removeAttribute( expando );
}
}
// Completely remove the data cache
delete cache[ id ];
}
}
});
jQuery.fn.extend({
data: function( key, value ) {
if ( typeof key === "undefined" && this.length ) {
return jQuery.data( this[0] );
} else if ( typeof key === "object" ) {
return this.each(function() {
jQuery.data( this, key );
});
}
var parts = key.split(".");
parts[1] = parts[1] ? "." + parts[1] : "";
if ( value === undefined ) {
var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
if ( data === undefined && this.length ) {
data = jQuery.data( this[0], key );
}
return data === undefined && parts[1] ?
this.data( parts[0] ) :
data;
} else {
return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function() {
jQuery.data( this, key, value );
});
}
},
removeData: function( key ) {
return this.each(function() {
jQuery.removeData( this, key );
});
}
});
jQuery.extend({
queue: function( elem, type, data ) {
if ( !elem ) {
return;
}
type = (type || "fx") + "queue";
var q = jQuery.data( elem, type );
// Speed up dequeue by getting out quickly if this is just a lookup
if ( !data ) {
return q || [];
}
if ( !q || jQuery.isArray(data) ) {
q = jQuery.data( elem, type, jQuery.makeArray(data) );
} else {
q.push( data );
}
return q;
},
dequeue: function( elem, type ) {
type = type || "fx";
var queue = jQuery.queue( elem, type ), fn = queue.shift();
// If the fx queue is dequeued, always remove the progress sentinel
if ( fn === "inprogress" ) {
fn = queue.shift();
}
if ( fn ) {
// Add a progress sentinel to prevent the fx queue from being
// automatically dequeued
if ( type === "fx" ) {
queue.unshift("inprogress");
}
fn.call(elem, function() {
jQuery.dequeue(elem, type);
});
}
}
});
jQuery.fn.extend({
queue: function( type, data ) {
if ( typeof type !== "string" ) {
data = type;
type = "fx";
}
if ( data === undefined ) {
return jQuery.queue( this[0], type );
}
return this.each(function( i, elem ) {
var queue = jQuery.queue( this, type, data );
if ( type === "fx" && queue[0] !== "inprogress" ) {
jQuery.dequeue( this, type );
}
});
},
dequeue: function( type ) {
return this.each(function() {
jQuery.dequeue( this, type );
});
},
// Based off of the plugin by Clint Helfers, with permission.
// http://blindsignals.com/index.php/2009/07/jquery-delay/
delay: function( time, type ) {
time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
type = type || "fx";
return this.queue( type, function() {
var elem = this;
setTimeout(function() {
jQuery.dequeue( elem, type );
}, time );
});
},
clearQueue: function( type ) {
return this.queue( type || "fx", [] );
}
});
var rclass = /[\n\t]/g,
rspace = /\s+/,
rreturn = /\r/g,
rspecialurl = /href|src|style/,
rtype = /(button|input)/i,
rfocusable = /(button|input|object|select|textarea)/i,
rclickable = /^(a|area)$/i,
rradiocheck = /radio|checkbox/;
jQuery.fn.extend({
attr: function( name, value ) {
return access( this, name, value, true, jQuery.attr );
},
removeAttr: function( name, fn ) {
return this.each(function(){
jQuery.attr( this, name, "" );
if ( this.nodeType === 1 ) {
this.removeAttribute( name );
}
});
},
addClass: function( value ) {
if ( jQuery.isFunction(value) ) {
return this.each(function(i) {
var self = jQuery(this);
self.addClass( value.call(this, i, self.attr("class")) );
});
}
if ( value && typeof value === "string" ) {
var classNames = (value || "").split( rspace );
for ( var i = 0, l = this.length; i < l; i++ ) {
var elem = this[i];
if ( elem.nodeType === 1 ) {
if ( !elem.className ) {
elem.className = value;
} else {
var className = " " + elem.className + " ";
for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) {
elem.className += " " + classNames[c];
}
}
}
}
}
}
return this;
},
removeClass: function( value ) {
if ( jQuery.isFunction(value) ) {
return this.each(function(i) {
var self = jQuery(this);
self.removeClass( value.call(this, i, self.attr("class")) );
});
}
if ( (value && typeof value === "string") || value === undefined ) {
var classNames = (value || "").split(rspace);
for ( var i = 0, l = this.length; i < l; i++ ) {
var elem = this[i];
if ( elem.nodeType === 1 && elem.className ) {
if ( value ) {
var className = (" " + elem.className + " ").replace(rclass, " ");
for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
className = className.replace(" " + classNames[c] + " ", " ");
}
elem.className = className.substring(1, className.length - 1);
} else {
elem.className = "";
}
}
}
}
return this;
},
toggleClass: function( value, stateVal ) {
var type = typeof value, isBool = typeof stateVal === "boolean";
if ( jQuery.isFunction( value ) ) {
return this.each(function(i) {
var self = jQuery(this);
self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );
});
}
return this.each(function() {
if ( type === "string" ) {
// toggle individual class names
var className, i = 0, self = jQuery(this),
state = stateVal,
classNames = value.split( rspace );
while ( (className = classNames[ i++ ]) ) {
// check each className given, space seperated list
state = isBool ? state : !self.hasClass( className );
self[ state ? "addClass" : "removeClass" ]( className );
}
} else if ( type === "undefined" || type === "boolean" ) {
if ( this.className ) {
// store className if set
jQuery.data( this, "__className__", this.className );
}
// toggle whole className
this.className = this.className || value === false ? "" : jQuery.data( this, "__className__" ) || "";
}
});
},
hasClass: function( selector ) {
var className = " " + selector + " ";
for ( var i = 0, l = this.length; i < l; i++ ) {
if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
return true;
}
}
return false;
},
val: function( value ) {
if ( value === undefined ) {
var elem = this[0];
if ( elem ) {
if ( jQuery.nodeName( elem, "option" ) ) {
return (elem.attributes.value || {}).specified ? elem.value : elem.text;
}
// We need to handle select boxes special
if ( jQuery.nodeName( elem, "select" ) ) {
var index = elem.selectedIndex,
values = [],
options = elem.options,
one = elem.type === "select-one";
// Nothing was selected
if ( index < 0 ) {
return null;
}
// Loop through all the selected options
for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
var option = options[ i ];
if ( option.selected ) {
// Get the specifc value for the option
value = jQuery(option).val();
// We don't need an array for one selects
if ( one ) {
return value;
}
// Multi-Selects return an array
values.push( value );
}
}
return values;
}
// Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {
return elem.getAttribute("value") === null ? "on" : elem.value;
}
// Everything else, we just grab the value
return (elem.value || "").replace(rreturn, "");
}
return undefined;
}
var isFunction = jQuery.isFunction(value);
return this.each(function(i) {
var self = jQuery(this), val = value;
if ( this.nodeType !== 1 ) {
return;
}
if ( isFunction ) {
val = value.call(this, i, self.val());
}
// Typecast each time if the value is a Function and the appended
// value is therefore different each time.
if ( typeof val === "number" ) {
val += "";
}
if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
this.checked = jQuery.inArray( self.val(), val ) >= 0;
} else if ( jQuery.nodeName( this, "select" ) ) {
var values = jQuery.makeArray(val);
jQuery( "option", this ).each(function() {
this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
});
if ( !values.length ) {
this.selectedIndex = -1;
}
} else {
this.value = val;
}
});
}
});
jQuery.extend({
attrFn: {
val: true,
css: true,
html: true,
text: true,
data: true,
width: true,
height: true,
offset: true
},
attr: function( elem, name, value, pass ) {
// don't set attributes on text and comment nodes
if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
return undefined;
}
if ( pass && name in jQuery.attrFn ) {
return jQuery(elem)[name](value);
}
var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),
// Whether we are setting (or getting)
set = value !== undefined;
// Try to normalize/fix the name
name = notxml && jQuery.props[ name ] || name;
// Only do all the following if this is a node (faster for style)
if ( elem.nodeType === 1 ) {
// These attributes require special treatment
var special = rspecialurl.test( name );
// Safari mis-reports the default selected property of an option
// Accessing the parent's selectedIndex property fixes it
if ( name === "selected" && !jQuery.support.optSelected ) {
var parent = elem.parentNode;
if ( parent ) {
parent.selectedIndex;
// Make sure that it also works with optgroups, see #5701
if ( parent.parentNode ) {
parent.parentNode.selectedIndex;
}
}
}
// If applicable, access the attribute via the DOM 0 way
if ( name in elem && notxml && !special ) {
if ( set ) {
// We can't allow the type property to be changed (since it causes problems in IE)
if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {
jQuery.error( "type property can't be changed" );
}
elem[ name ] = value;
}
// browsers index elements by id/name on forms, give priority to attributes.
if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) {
return elem.getAttributeNode( name ).nodeValue;
}
// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
if ( name === "tabIndex" ) {
var attributeNode = elem.getAttributeNode( "tabIndex" );
return attributeNode && attributeNode.specified ?
attributeNode.value :
rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
0 :
undefined;
}
return elem[ name ];
}
if ( !jQuery.support.style && notxml && name === "style" ) {
if ( set ) {
elem.style.cssText = "" + value;
}
return elem.style.cssText;
}
if ( set ) {
// convert the value to a string (all browsers do this but IE) see #1070
elem.setAttribute( name, "" + value );
}
var attr = !jQuery.support.hrefNormalized && notxml && special ?
// Some attributes require a special call on IE
elem.getAttribute( name, 2 ) :
elem.getAttribute( name );
// Non-existent attributes return null, we normalize to undefined
return attr === null ? undefined : attr;
}
// elem is actually elem.style ... set the style
// Using attr for specific style information is now deprecated. Use style insead.
return jQuery.style( elem, name, value );
}
});
var fcleanup = function( nm ) {
return nm.replace(/[^\w\s\.\|`]/g, function( ch ) {
return "\\" + ch;
});
};
/*
* A number of helper functions used for managing events.
* Many of the ideas behind this code originated from
* Dean Edwards' addEvent library.
*/
jQuery.event = {
// Bind an event to an element
// Original by Dean Edwards
add: function( elem, types, handler, data ) {
if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
return;
}
// For whatever reason, IE has trouble passing the window object
// around, causing it to be cloned in the process
if ( elem.setInterval && ( elem !== window && !elem.frameElement ) ) {
elem = window;
}
// Make sure that the function being executed has a unique ID
if ( !handler.guid ) {
handler.guid = jQuery.guid++;
}
// if data is passed, bind to handler
if ( data !== undefined ) {
// Create temporary function pointer to original handler
var fn = handler;
// Create unique handler function, wrapped around original handler
handler = jQuery.proxy( fn );
// Store data in unique handler
handler.data = data;
}
// Init the element's event structure
var events = jQuery.data( elem, "events" ) || jQuery.data( elem, "events", {} ),
handle = jQuery.data( elem, "handle" ), eventHandle;
if ( !handle ) {
eventHandle = function() {
// Handle the second event of a trigger and when
// an event is called after a page has unloaded
return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
jQuery.event.handle.apply( eventHandle.elem, arguments ) :
undefined;
};
handle = jQuery.data( elem, "handle", eventHandle );
}
// If no handle is found then we must be trying to bind to one of the
// banned noData elements
if ( !handle ) {
return;
}
// Add elem as a property of the handle function
// This is to prevent a memory leak with non-native
// event in IE.
handle.elem = elem;
// Handle multiple events separated by a space
// jQuery(...).bind("mouseover mouseout", fn);
types = types.split( /\s+/ );
var type, i = 0;
while ( (type = types[ i++ ]) ) {
// Namespaced event handlers
var namespaces = type.split(".");
type = namespaces.shift();
if ( i > 1 ) {
handler = jQuery.proxy( handler );
if ( data !== undefined ) {
handler.data = data;
}
}
handler.type = namespaces.slice(0).sort().join(".");
// Get the current list of functions bound to this event
var handlers = events[ type ],
special = this.special[ type ] || {};
// Init the event handler queue
if ( !handlers ) {
handlers = events[ type ] = {};
// Check for a special event handler
// Only use addEventListener/attachEvent if the special
// events handler returns false
if ( !special.setup || special.setup.call( elem, data, namespaces, handler) === false ) {
// Bind the global event handler to the element
if ( elem.addEventListener ) {
elem.addEventListener( type, handle, false );
} else if ( elem.attachEvent ) {
elem.attachEvent( "on" + type, handle );
}
}
}
if ( special.add ) {
var modifiedHandler = special.add.call( elem, handler, data, namespaces, handlers );
if ( modifiedHandler && jQuery.isFunction( modifiedHandler ) ) {
modifiedHandler.guid = modifiedHandler.guid || handler.guid;
modifiedHandler.data = modifiedHandler.data || handler.data;
modifiedHandler.type = modifiedHandler.type || handler.type;
handler = modifiedHandler;
}
}
// Add the function to the element's handler list
handlers[ handler.guid ] = handler;
// Keep track of which events have been used, for global triggering
this.global[ type ] = true;
}
// Nullify elem to prevent memory leaks in IE
elem = null;
},
global: {},
// Detach an event or set of events from an element
remove: function( elem, types, handler ) {
// don't do events on text and comment nodes
if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
return;
}
var events = jQuery.data( elem, "events" ), ret, type, fn;
if ( events ) {
// Unbind all events for the element
if ( types === undefined || (typeof types === "string" && types.charAt(0) === ".") ) {
for ( type in events ) {
this.remove( elem, type + (types || "") );
}
} else {
// types is actually an event object here
if ( types.type ) {
handler = types.handler;
types = types.type;
}
// Handle multiple events separated by a space
// jQuery(...).unbind("mouseover mouseout", fn);
types = types.split(/\s+/);
var i = 0;
while ( (type = types[ i++ ]) ) {
// Namespaced event handlers
var namespaces = type.split(".");
type = namespaces.shift();
var all = !namespaces.length,
cleaned = jQuery.map( namespaces.slice(0).sort(), fcleanup ),
namespace = new RegExp("(^|\\.)" + cleaned.join("\\.(?:.*\\.)?") + "(\\.|$)"),
special = this.special[ type ] || {};
if ( events[ type ] ) {
// remove the given handler for the given type
if ( handler ) {
fn = events[ type ][ handler.guid ];
delete events[ type ][ handler.guid ];
// remove all handlers for the given type
} else {
for ( var handle in events[ type ] ) {
// Handle the removal of namespaced events
if ( all || namespace.test( events[ type ][ handle ].type ) ) {
delete events[ type ][ handle ];
}
}
}
if ( special.remove ) {
special.remove.call( elem, namespaces, fn);
}
// remove generic event handler if no more handlers exist
for ( ret in events[ type ] ) {
break;
}
if ( !ret ) {
if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
if ( elem.removeEventListener ) {
elem.removeEventListener( type, jQuery.data( elem, "handle" ), false );
} else if ( elem.detachEvent ) {
elem.detachEvent( "on" + type, jQuery.data( elem, "handle" ) );
}
}
ret = null;
delete events[ type ];
}
}
}
}
// Remove the expando if it's no longer used
for ( ret in events ) {
break;
}
if ( !ret ) {
var handle = jQuery.data( elem, "handle" );
if ( handle ) {
handle.elem = null;
}
jQuery.removeData( elem, "events" );
jQuery.removeData( elem, "handle" );
}
}
},
// bubbling is internal
trigger: function( event, data, elem /*, bubbling */ ) {
// Event object or event type
var type = event.type || event,
bubbling = arguments[3];
if ( !bubbling ) {
event = typeof event === "object" ?
// jQuery.Event object
event[expando] ? event :
// Object literal
jQuery.extend( jQuery.Event(type), event ) :
// Just the event type (string)
jQuery.Event(type);
if ( type.indexOf("!") >= 0 ) {
event.type = type = type.slice(0, -1);
event.exclusive = true;
}
// Handle a global trigger
if ( !elem ) {
// Don't bubble custom events when global (to avoid too much overhead)
event.stopPropagation();
// Only trigger if we've ever bound an event for it
if ( this.global[ type ] ) {
jQuery.each( jQuery.cache, function() {
if ( this.events && this.events[type] ) {
jQuery.event.trigger( event, data, this.handle.elem );
}
});
}
}
// Handle triggering a single element
// don't do events on text and comment nodes
if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
return undefined;
}
// Clean up in case it is reused
event.result = undefined;
event.target = elem;
// Clone the incoming data, if any
data = jQuery.makeArray( data );
data.unshift( event );
}
event.currentTarget = elem;
// Trigger the event, it is assumed that "handle" is a function
var handle = jQuery.data( elem, "handle" );
if ( handle ) {
handle.apply( elem, data );
}
var parent = elem.parentNode || elem.ownerDocument;
// Trigger an inline bound script
try {
if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {
if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) {
event.result = false;
}
}
// prevent IE from throwing an error for some elements with some event types, see #3533
} catch (e) {}
if ( !event.isPropagationStopped() && parent ) {
jQuery.event.trigger( event, data, parent, true );
} else if ( !event.isDefaultPrevented() ) {
var target = event.target, old,
isClick = jQuery.nodeName(target, "a") && type === "click";
if ( !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {
try {
if ( target[ type ] ) {
// Make sure that we don't accidentally re-trigger the onFOO events
old = target[ "on" + type ];
if ( old ) {
target[ "on" + type ] = null;
}
this.triggered = true;
target[ type ]();
}
// prevent IE from throwing an error for some elements with some event types, see #3533
} catch (e) {}
if ( old ) {
target[ "on" + type ] = old;
}
this.triggered = false;
}
}
},
handle: function( event ) {
// returned undefined or false
var all, handlers;
event = arguments[0] = jQuery.event.fix( event || window.event );
event.currentTarget = this;
// Namespaced event handlers
var namespaces = event.type.split(".");
event.type = namespaces.shift();
// Cache this now, all = true means, any handler
all = !namespaces.length && !event.exclusive;
var namespace = new RegExp("(^|\\.)" + namespaces.slice(0).sort().join("\\.(?:.*\\.)?") + "(\\.|$)");
handlers = ( jQuery.data(this, "events") || {} )[ event.type ];
for ( var j in handlers ) {
var handler = handlers[ j ];
// Filter the functions by class
if ( all || namespace.test(handler.type) ) {
// Pass in a reference to the handler function itself
// So that we can later remove it
event.handler = handler;
event.data = handler.data;
var ret = handler.apply( this, arguments );
if ( ret !== undefined ) {
event.result = ret;
if ( ret === false ) {
event.preventDefault();
event.stopPropagation();
}
}
if ( event.isImmediatePropagationStopped() ) {
break;
}
}
}
return event.result;
},
props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
fix: function( event ) {
if ( event[ expando ] ) {
return event;
}
// store a copy of the original event object
// and "clone" to set read-only properties
var originalEvent = event;
event = jQuery.Event( originalEvent );
for ( var i = this.props.length, prop; i; ) {
prop = this.props[ --i ];
event[ prop ] = originalEvent[ prop ];
}
// Fix target property, if necessary
if ( !event.target ) {
event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
}
// check if target is a textnode (safari)
if ( event.target.nodeType === 3 ) {
event.target = event.target.parentNode;
}
// Add relatedTarget, if necessary
if ( !event.relatedTarget && event.fromElement ) {
event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;
}
// Calculate pageX/Y if missing and clientX/Y available
if ( event.pageX == null && event.clientX != null ) {
var doc = document.documentElement, body = document.body;
event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
}
// Add which for key events
if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) {
event.which = event.charCode || event.keyCode;
}
// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
if ( !event.metaKey && event.ctrlKey ) {
event.metaKey = event.ctrlKey;
}
// Add which for click: 1 === left; 2 === middle; 3 === right
// Note: button is not normalized, so don't use it
if ( !event.which && event.button !== undefined ) {
event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
}
return event;
},
// Deprecated, use jQuery.guid instead
guid: 1E8,
// Deprecated, use jQuery.proxy instead
proxy: jQuery.proxy,
special: {
ready: {
// Make sure the ready event is setup
setup: jQuery.bindReady,
teardown: jQuery.noop
},
live: {
add: function( proxy, data, namespaces, live ) {
jQuery.extend( proxy, data || {} );
proxy.guid += data.selector + data.live;
data.liveProxy = proxy;
jQuery.event.add( this, data.live, liveHandler, data );
},
remove: function( namespaces ) {
if ( namespaces.length ) {
var remove = 0, name = new RegExp("(^|\\.)" + namespaces[0] + "(\\.|$)");
jQuery.each( (jQuery.data(this, "events").live || {}), function() {
if ( name.test(this.type) ) {
remove++;
}
});
if ( remove < 1 ) {
jQuery.event.remove( this, namespaces[0], liveHandler );
}
}
},
special: {}
},
beforeunload: {
setup: function( data, namespaces, fn ) {
// We only want to do this special case on windows
if ( this.setInterval ) {
this.onbeforeunload = fn;
}
return false;
},
teardown: function( namespaces, fn ) {
if ( this.onbeforeunload === fn ) {
this.onbeforeunload = null;
}
}
}
}
};
jQuery.Event = function( src ) {
// Allow instantiation without the 'new' keyword
if ( !this.preventDefault ) {
return new jQuery.Event( src );
}
// Event object
if ( src && src.type ) {
this.originalEvent = src;
this.type = src.type;
// Event type
} else {
this.type = src;
}
// timeStamp is buggy for some events on Firefox(#3843)
// So we won't rely on the native value
this.timeStamp = now();
// Mark it as fixed
this[ expando ] = true;
};
function returnFalse() {
return false;
}
function returnTrue() {
return true;
}
// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
jQuery.Event.prototype = {
preventDefault: function() {
this.isDefaultPrevented = returnTrue;
var e = this.originalEvent;
if ( !e ) {
return;
}
// if preventDefault exists run it on the original event
if ( e.preventDefault ) {
e.preventDefault();
}
// otherwise set the returnValue property of the original event to false (IE)
e.returnValue = false;
},
stopPropagation: function() {
this.isPropagationStopped = returnTrue;
var e = this.originalEvent;
if ( !e ) {
return;
}
// if stopPropagation exists run it on the original event
if ( e.stopPropagation ) {
e.stopPropagation();
}
// otherwise set the cancelBubble property of the original event to true (IE)
e.cancelBubble = true;
},
stopImmediatePropagation: function() {
this.isImmediatePropagationStopped = returnTrue;
this.stopPropagation();
},
isDefaultPrevented: returnFalse,
isPropagationStopped: returnFalse,
isImmediatePropagationStopped: returnFalse
};
// Checks if an event happened on an element within another element
// Used in jQuery.event.special.mouseenter and mouseleave handlers
var withinElement = function( event ) {
// Check if mouse(over|out) are still within the same parent element
var parent = event.relatedTarget;
// Traverse up the tree
while ( parent && parent !== this ) {
// Firefox sometimes assigns relatedTarget a XUL element
// which we cannot access the parentNode property of
try {
parent = parent.parentNode;
// assuming we've left the element since we most likely mousedover a xul element
} catch(e) {
break;
}
}
if ( parent !== this ) {
// set the correct event type
event.type = event.data;
// handle event if we actually just moused on to a non sub-element
jQuery.event.handle.apply( this, arguments );
}
},
// In case of event delegation, we only need to rename the event.type,
// liveHandler will take care of the rest.
delegate = function( event ) {
event.type = event.data;
jQuery.event.handle.apply( this, arguments );
};
// Create mouseenter and mouseleave events
jQuery.each({
mouseenter: "mouseover",
mouseleave: "mouseout"
}, function( orig, fix ) {
jQuery.event.special[ orig ] = {
setup: function( data ) {
jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );
},
teardown: function( data ) {
jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );
}
};
});
// submit delegation
if ( !jQuery.support.submitBubbles ) {
jQuery.event.special.submit = {
setup: function( data, namespaces, fn ) {
if ( this.nodeName.toLowerCase() !== "form" ) {
jQuery.event.add(this, "click.specialSubmit." + fn.guid, function( e ) {
var elem = e.target, type = elem.type;
if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
return trigger( "submit", this, arguments );
}
});
jQuery.event.add(this, "keypress.specialSubmit." + fn.guid, function( e ) {
var elem = e.target, type = elem.type;
if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
return trigger( "submit", this, arguments );
}
});
} else {
return false;
}
},
remove: function( namespaces, fn ) {
jQuery.event.remove( this, "click.specialSubmit" + (fn ? "."+fn.guid : "") );
jQuery.event.remove( this, "keypress.specialSubmit" + (fn ? "."+fn.guid : "") );
}
};
}
// change delegation, happens here so we have bind.
if ( !jQuery.support.changeBubbles ) {
var formElems = /textarea|input|select/i;
function getVal( elem ) {
var type = elem.type, val = elem.value;
if ( type === "radio" || type === "checkbox" ) {
val = elem.checked;
} else if ( type === "select-multiple" ) {
val = elem.selectedIndex > -1 ?
jQuery.map( elem.options, function( elem ) {
return elem.selected;
}).join("-") :
"";
} else if ( elem.nodeName.toLowerCase() === "select" ) {
val = elem.selectedIndex;
}
return val;
}
function testChange( e ) {
var elem = e.target, data, val;
if ( !formElems.test( elem.nodeName ) || elem.readOnly ) {
return;
}
data = jQuery.data( elem, "_change_data" );
val = getVal(elem);
// the current data will be also retrieved by beforeactivate
if ( e.type !== "focusout" || elem.type !== "radio" ) {
jQuery.data( elem, "_change_data", val );
}
if ( data === undefined || val === data ) {
return;
}
if ( data != null || val ) {
e.type = "change";
return jQuery.event.trigger( e, arguments[1], elem );
}
}
jQuery.event.special.change = {
filters: {
focusout: testChange,
click: function( e ) {
var elem = e.target, type = elem.type;
if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) {
return testChange.call( this, e );
}
},
// Change has to be called before submit
// Keydown will be called before keypress, which is used in submit-event delegation
keydown: function( e ) {
var elem = e.target, type = elem.type;
if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") ||
(e.keyCode === 32 && (type === "checkbox" || type === "radio")) ||
type === "select-multiple" ) {
return testChange.call( this, e );
}
},
// Beforeactivate happens also before the previous element is blurred
// with this event you can't trigger a change event, but you can store
// information/focus[in] is not needed anymore
beforeactivate: function( e ) {
var elem = e.target;
if ( elem.nodeName.toLowerCase() === "input" && elem.type === "radio" ) {
jQuery.data( elem, "_change_data", getVal(elem) );
}
}
},
setup: function( data, namespaces, fn ) {
for ( var type in changeFilters ) {
jQuery.event.add( this, type + ".specialChange." + fn.guid, changeFilters[type] );
}
return formElems.test( this.nodeName );
},
remove: function( namespaces, fn ) {
for ( var type in changeFilters ) {
jQuery.event.remove( this, type + ".specialChange" + (fn ? "."+fn.guid : ""), changeFilters[type] );
}
return formElems.test( this.nodeName );
}
};
var changeFilters = jQuery.event.special.change.filters;
}
function trigger( type, elem, args ) {
args[0].type = type;
return jQuery.event.handle.apply( elem, args );
}
// Create "bubbling" focus and blur events
if ( document.addEventListener ) {
jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
jQuery.event.special[ fix ] = {
setup: function() {
this.addEventListener( orig, handler, true );
},
teardown: function() {
this.removeEventListener( orig, handler, true );
}
};
function handler( e ) {
e = jQuery.event.fix( e );
e.type = fix;
return jQuery.event.handle.call( this, e );
}
});
}
jQuery.each(["bind", "one"], function( i, name ) {
jQuery.fn[ name ] = function( type, data, fn ) {
// Handle object literals
if ( typeof type === "object" ) {
for ( var key in type ) {
this[ name ](key, data, type[key], fn);
}
return this;
}
if ( jQuery.isFunction( data ) ) {
fn = data;
data = undefined;
}
var handler = name === "one" ? jQuery.proxy( fn, function( event ) {
jQuery( this ).unbind( event, handler );
return fn.apply( this, arguments );
}) : fn;
return type === "unload" && name !== "one" ?
this.one( type, data, fn ) :
this.each(function() {
jQuery.event.add( this, type, handler, data );
});
};
});
jQuery.fn.extend({
unbind: function( type, fn ) {
// Handle object literals
if ( typeof type === "object" && !type.preventDefault ) {
for ( var key in type ) {
this.unbind(key, type[key]);
}
return this;
}
return this.each(function() {
jQuery.event.remove( this, type, fn );
});
},
trigger: function( type, data ) {
return this.each(function() {
jQuery.event.trigger( type, data, this );
});
},
triggerHandler: function( type, data ) {
if ( this[0] ) {
var event = jQuery.Event( type );
event.preventDefault();
event.stopPropagation();
jQuery.event.trigger( event, data, this[0] );
return event.result;
}
},
toggle: function( fn ) {
// Save reference to arguments for access in closure
var args = arguments, i = 1;
// link all the functions, so any of them can unbind this click handler
while ( i < args.length ) {
jQuery.proxy( fn, args[ i++ ] );
}
return this.click( jQuery.proxy( fn, function( event ) {
// Figure out which function to execute
var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i;
jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 );
// Make sure that clicks stop
event.preventDefault();
// and execute the function
return args[ lastToggle ].apply( this, arguments ) || false;
}));
},
hover: function( fnOver, fnOut ) {
return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
}
});
jQuery.each(["live", "die"], function( i, name ) {
jQuery.fn[ name ] = function( types, data, fn ) {
var type, i = 0;
if ( jQuery.isFunction( data ) ) {
fn = data;
data = undefined;
}
types = (types || "").split( /\s+/ );
while ( (type = types[ i++ ]) != null ) {
type = type === "focus" ? "focusin" : // focus --> focusin
type === "blur" ? "focusout" : // blur --> focusout
type === "hover" ? types.push("mouseleave") && "mouseenter" : // hover support
type;
if ( name === "live" ) {
// bind live handler
jQuery( this.context ).bind( liveConvert( type, this.selector ), {
data: data, selector: this.selector, live: type
}, fn );
} else {
// unbind live handler
jQuery( this.context ).unbind( liveConvert( type, this.selector ), fn ? { guid: fn.guid + this.selector + type } : null );
}
}
return this;
}
});
function liveHandler( event ) {
var stop, elems = [], selectors = [], args = arguments,
related, match, fn, elem, j, i, l, data,
live = jQuery.extend({}, jQuery.data( this, "events" ).live);
// Make sure we avoid non-left-click bubbling in Firefox (#3861)
if ( event.button && event.type === "click" ) {
return;
}
for ( j in live ) {
fn = live[j];
if ( fn.live === event.type ||
fn.altLive && jQuery.inArray(event.type, fn.altLive) > -1 ) {
data = fn.data;
if ( !(data.beforeFilter && data.beforeFilter[event.type] &&
!data.beforeFilter[event.type](event)) ) {
selectors.push( fn.selector );
}
} else {
delete live[j];
}
}
match = jQuery( event.target ).closest( selectors, event.currentTarget );
for ( i = 0, l = match.length; i < l; i++ ) {
for ( j in live ) {
fn = live[j];
elem = match[i].elem;
related = null;
if ( match[i].selector === fn.selector ) {
// Those two events require additional checking
if ( fn.live === "mouseenter" || fn.live === "mouseleave" ) {
related = jQuery( event.relatedTarget ).closest( fn.selector )[0];
}
if ( !related || related !== elem ) {
elems.push({ elem: elem, fn: fn });
}
}
}
}
for ( i = 0, l = elems.length; i < l; i++ ) {
match = elems[i];
event.currentTarget = match.elem;
event.data = match.fn.data;
if ( match.fn.apply( match.elem, args ) === false ) {
stop = false;
break;
}
}
return stop;
}
function liveConvert( type, selector ) {
return "live." + (type ? type + "." : "") + selector.replace(/\./g, "`").replace(/ /g, "&");
}
jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
"change select submit keydown keypress keyup error").split(" "), function( i, name ) {
// Handle event binding
jQuery.fn[ name ] = function( fn ) {
return fn ? this.bind( name, fn ) : this.trigger( name );
};
if ( jQuery.attrFn ) {
jQuery.attrFn[ name ] = true;
}
});
// Prevent memory leaks in IE
// Window isn't included so as not to unbind existing unload events
// More info:
// - http://isaacschlueter.com/2006/10/msie-memory-leaks/
if ( window.attachEvent && !window.addEventListener ) {
window.attachEvent("onunload", function() {
for ( var id in jQuery.cache ) {
if ( jQuery.cache[ id ].handle ) {
// Try/Catch is to handle iframes being unloaded, see #4280
try {
jQuery.event.remove( jQuery.cache[ id ].handle.elem );
} catch(e) {}
}
}
});
}
/*!
* Sizzle CSS Selector Engine - v1.0
* Copyright 2009, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
* More information: http://sizzlejs.com/
*/
(function(){
var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
done = 0,
toString = Object.prototype.toString,
hasDuplicate = false,
baseHasDuplicate = true;
// Here we check if the JavaScript engine is using some sort of
// optimization where it does not always call our comparision
// function. If that is the case, discard the hasDuplicate value.
// Thus far that includes Google Chrome.
[0, 0].sort(function(){
baseHasDuplicate = false;
return 0;
});
var Sizzle = function(selector, context, results, seed) {
results = results || [];
var origContext = context = context || document;
if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
return [];
}
if ( !selector || typeof selector !== "string" ) {
return results;
}
var parts = [], m, set, checkSet, extra, prune = true, contextXML = isXML(context),
soFar = selector;
// Reset the position of the chunker regexp (start from head)
while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) {
soFar = m[3];
parts.push( m[1] );
if ( m[2] ) {
extra = m[3];
break;
}
}
if ( parts.length > 1 && origPOS.exec( selector ) ) {
if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
set = posProcess( parts[0] + parts[1], context );
} else {
set = Expr.relative[ parts[0] ] ?
[ context ] :
Sizzle( parts.shift(), context );
while ( parts.length ) {
selector = parts.shift();
if ( Expr.relative[ selector ] ) {
selector += parts.shift();
}
set = posProcess( selector, set );
}
}
} else {
// Take a shortcut and set the context if the root selector is an ID
// (but not if it'll be faster if the inner selector is an ID)
if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
var ret = Sizzle.find( parts.shift(), context, contextXML );
context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
}
if ( context ) {
var ret = seed ?
{ expr: parts.pop(), set: makeArray(seed) } :
Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
if ( parts.length > 0 ) {
checkSet = makeArray(set);
} else {
prune = false;
}
while ( parts.length ) {
var cur = parts.pop(), pop = cur;
if ( !Expr.relative[ cur ] ) {
cur = "";
} else {
pop = parts.pop();
}
if ( pop == null ) {
pop = context;
}
Expr.relative[ cur ]( checkSet, pop, contextXML );
}
} else {
checkSet = parts = [];
}
}
if ( !checkSet ) {
checkSet = set;
}
if ( !checkSet ) {
Sizzle.error( cur || selector );
}
if ( toString.call(checkSet) === "[object Array]" ) {
if ( !prune ) {
results.push.apply( results, checkSet );
} else if ( context && context.nodeType === 1 ) {
for ( var i = 0; checkSet[i] != null; i++ ) {
if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
results.push( set[i] );
}
}
} else {
for ( var i = 0; checkSet[i] != null; i++ ) {
if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
results.push( set[i] );
}
}
}
} else {
makeArray( checkSet, results );
}
if ( extra ) {
Sizzle( extra, origContext, results, seed );
Sizzle.uniqueSort( results );
}
return results;
};
Sizzle.uniqueSort = function(results){
if ( sortOrder ) {
hasDuplicate = baseHasDuplicate;
results.sort(sortOrder);
if ( hasDuplicate ) {
for ( var i = 1; i < results.length; i++ ) {
if ( results[i] === results[i-1] ) {
results.splice(i--, 1);
}
}
}
}
return results;
};
Sizzle.matches = function(expr, set){
return Sizzle(expr, null, null, set);
};
Sizzle.find = function(expr, context, isXML){
var set, match;
if ( !expr ) {
return [];
}
for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
var type = Expr.order[i], match;
if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
var left = match[1];
match.splice(1,1);
if ( left.substr( left.length - 1 ) !== "\\" ) {
match[1] = (match[1] || "").replace(/\\/g, "");
set = Expr.find[ type ]( match, context, isXML );
if ( set != null ) {
expr = expr.replace( Expr.match[ type ], "" );
break;
}
}
}
}
if ( !set ) {
set = context.getElementsByTagName("*");
}
return {set: set, expr: expr};
};
Sizzle.filter = function(expr, set, inplace, not){
var old = expr, result = [], curLoop = set, match, anyFound,
isXMLFilter = set && set[0] && isXML(set[0]);
while ( expr && set.length ) {
for ( var type in Expr.filter ) {
if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
var filter = Expr.filter[ type ], found, item, left = match[1];
anyFound = false;
match.splice(1,1);
if ( left.substr( left.length - 1 ) === "\\" ) {
continue;
}
if ( curLoop === result ) {
result = [];
}
if ( Expr.preFilter[ type ] ) {
match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
if ( !match ) {
anyFound = found = true;
} else if ( match === true ) {
continue;
}
}
if ( match ) {
for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
if ( item ) {
found = filter( item, match, i, curLoop );
var pass = not ^ !!found;
if ( inplace && found != null ) {
if ( pass ) {
anyFound = true;
} else {
curLoop[i] = false;
}
} else if ( pass ) {
result.push( item );
anyFound = true;
}
}
}
}
if ( found !== undefined ) {
if ( !inplace ) {
curLoop = result;
}
expr = expr.replace( Expr.match[ type ], "" );
if ( !anyFound ) {
return [];
}
break;
}
}
}
// Improper expression
if ( expr === old ) {
if ( anyFound == null ) {
Sizzle.error( expr );
} else {
break;
}
}
old = expr;
}
return curLoop;
};
Sizzle.error = function( msg ) {
throw "Syntax error, unrecognized expression: " + msg;
};
var Expr = Sizzle.selectors = {
order: [ "ID", "NAME", "TAG" ],
match: {
ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
},
leftMatch: {},
attrMap: {
"class": "className",
"for": "htmlFor"
},
attrHandle: {
href: function(elem){
return elem.getAttribute("href");
}
},
relative: {
"+": function(checkSet, part){
var isPartStr = typeof part === "string",
isTag = isPartStr && !/\W/.test(part),
isPartStrNotTag = isPartStr && !isTag;
if ( isTag ) {
part = part.toLowerCase();
}
for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
if ( (elem = checkSet[i]) ) {
while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
elem || false :
elem === part;
}
}
if ( isPartStrNotTag ) {
Sizzle.filter( part, checkSet, true );
}
},
">": function(checkSet, part){
var isPartStr = typeof part === "string";
if ( isPartStr && !/\W/.test(part) ) {
part = part.toLowerCase();
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
var elem = checkSet[i];
if ( elem ) {
var parent = elem.parentNode;
checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
}
}
} else {
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
var elem = checkSet[i];
if ( elem ) {
checkSet[i] = isPartStr ?
elem.parentNode :
elem.parentNode === part;
}
}
if ( isPartStr ) {
Sizzle.filter( part, checkSet, true );
}
}
},
"": function(checkSet, part, isXML){
var doneName = done++, checkFn = dirCheck;
if ( typeof part === "string" && !/\W/.test(part) ) {
var nodeCheck = part = part.toLowerCase();
checkFn = dirNodeCheck;
}
checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
},
"~": function(checkSet, part, isXML){
var doneName = done++, checkFn = dirCheck;
if ( typeof part === "string" && !/\W/.test(part) ) {
var nodeCheck = part = part.toLowerCase();
checkFn = dirNodeCheck;
}
checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
}
},
find: {
ID: function(match, context, isXML){
if ( typeof context.getElementById !== "undefined" && !isXML ) {
var m = context.getElementById(match[1]);
return m ? [m] : [];
}
},
NAME: function(match, context){
if ( typeof context.getElementsByName !== "undefined" ) {
var ret = [], results = context.getElementsByName(match[1]);
for ( var i = 0, l = results.length; i < l; i++ ) {
if ( results[i].getAttribute("name") === match[1] ) {
ret.push( results[i] );
}
}
return ret.length === 0 ? null : ret;
}
},
TAG: function(match, context){
return context.getElementsByTagName(match[1]);
}
},
preFilter: {
CLASS: function(match, curLoop, inplace, result, not, isXML){
match = " " + match[1].replace(/\\/g, "") + " ";
if ( isXML ) {
return match;
}
for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
if ( elem ) {
if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0) ) {
if ( !inplace ) {
result.push( elem );
}
} else if ( inplace ) {
curLoop[i] = false;
}
}
}
return false;
},
ID: function(match){
return match[1].replace(/\\/g, "");
},
TAG: function(match, curLoop){
return match[1].toLowerCase();
},
CHILD: function(match){
if ( match[1] === "nth" ) {
// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
!/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
// calculate the numbers (first)n+(last) including if they are negative
match[2] = (test[1] + (test[2] || 1)) - 0;
match[3] = test[3] - 0;
}
// TODO: Move to normal caching system
match[0] = done++;
return match;
},
ATTR: function(match, curLoop, inplace, result, not, isXML){
var name = match[1].replace(/\\/g, "");
if ( !isXML && Expr.attrMap[name] ) {
match[1] = Expr.attrMap[name];
}
if ( match[2] === "~=" ) {
match[4] = " " + match[4] + " ";
}
return match;
},
PSEUDO: function(match, curLoop, inplace, result, not){
if ( match[1] === "not" ) {
// If we're dealing with a complex expression, or a simple one
if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
match[3] = Sizzle(match[3], null, null, curLoop);
} else {
var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
if ( !inplace ) {
result.push.apply( result, ret );
}
return false;
}
} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
return true;
}
return match;
},
POS: function(match){
match.unshift( true );
return match;
}
},
filters: {
enabled: function(elem){
return elem.disabled === false && elem.type !== "hidden";
},
disabled: function(elem){
return elem.disabled === true;
},
checked: function(elem){
return elem.checked === true;
},
selected: function(elem){
// Accessing this property makes selected-by-default
// options in Safari work properly
elem.parentNode.selectedIndex;
return elem.selected === true;
},
parent: function(elem){
return !!elem.firstChild;
},
empty: function(elem){
return !elem.firstChild;
},
has: function(elem, i, match){
return !!Sizzle( match[3], elem ).length;
},
header: function(elem){
return /h\d/i.test( elem.nodeName );
},
text: function(elem){
return "text" === elem.type;
},
radio: function(elem){
return "radio" === elem.type;
},
checkbox: function(elem){
return "checkbox" === elem.type;
},
file: function(elem){
return "file" === elem.type;
},
password: function(elem){
return "password" === elem.type;
},
submit: function(elem){
return "submit" === elem.type;
},
image: function(elem){
return "image" === elem.type;
},
reset: function(elem){
return "reset" === elem.type;
},
button: function(elem){
return "button" === elem.type || elem.nodeName.toLowerCase() === "button";
},
input: function(elem){
return /input|select|textarea|button/i.test(elem.nodeName);
}
},
setFilters: {
first: function(elem, i){
return i === 0;
},
last: function(elem, i, match, array){
return i === array.length - 1;
},
even: function(elem, i){
return i % 2 === 0;
},
odd: function(elem, i){
return i % 2 === 1;
},
lt: function(elem, i, match){
return i < match[3] - 0;
},
gt: function(elem, i, match){
return i > match[3] - 0;
},
nth: function(elem, i, match){
return match[3] - 0 === i;
},
eq: function(elem, i, match){
return match[3] - 0 === i;
}
},
filter: {
PSEUDO: function(elem, match, i, array){
var name = match[1], filter = Expr.filters[ name ];
if ( filter ) {
return filter( elem, i, match, array );
} else if ( name === "contains" ) {
return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
} else if ( name === "not" ) {
var not = match[3];
for ( var i = 0, l = not.length; i < l; i++ ) {
if ( not[i] === elem ) {
return false;
}
}
return true;
} else {
Sizzle.error( "Syntax error, unrecognized expression: " + name );
}
},
CHILD: function(elem, match){
var type = match[1], node = elem;
switch (type) {
case 'only':
case 'first':
while ( (node = node.previousSibling) ) {
if ( node.nodeType === 1 ) {
return false;
}
}
if ( type === "first" ) {
return true;
}
node = elem;
case 'last':
while ( (node = node.nextSibling) ) {
if ( node.nodeType === 1 ) {
return false;
}
}
return true;
case 'nth':
var first = match[2], last = match[3];
if ( first === 1 && last === 0 ) {
return true;
}
var doneName = match[0],
parent = elem.parentNode;
if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
var count = 0;
for ( node = parent.firstChild; node; node = node.nextSibling ) {
if ( node.nodeType === 1 ) {
node.nodeIndex = ++count;
}
}
parent.sizcache = doneName;
}
var diff = elem.nodeIndex - last;
if ( first === 0 ) {
return diff === 0;
} else {
return ( diff % first === 0 && diff / first >= 0 );
}
}
},
ID: function(elem, match){
return elem.nodeType === 1 && elem.getAttribute("id") === match;
},
TAG: function(elem, match){
return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
},
CLASS: function(elem, match){
return (" " + (elem.className || elem.getAttribute("class")) + " ")
.indexOf( match ) > -1;
},
ATTR: function(elem, match){
var name = match[1],
result = Expr.attrHandle[ name ] ?
Expr.attrHandle[ name ]( elem ) :
elem[ name ] != null ?
elem[ name ] :
elem.getAttribute( name ),
value = result + "",
type = match[2],
check = match[4];
return result == null ?
type === "!=" :
type === "=" ?
value === check :
type === "*=" ?
value.indexOf(check) >= 0 :
type === "~=" ?
(" " + value + " ").indexOf(check) >= 0 :
!check ?
value && result !== false :
type === "!=" ?
value !== check :
type === "^=" ?
value.indexOf(check) === 0 :
type === "$=" ?
value.substr(value.length - check.length) === check :
type === "|=" ?
value === check || value.substr(0, check.length + 1) === check + "-" :
false;
},
POS: function(elem, match, i, array){
var name = match[2], filter = Expr.setFilters[ name ];
if ( filter ) {
return filter( elem, i, match, array );
}
}
}
};
var origPOS = Expr.match.POS;
for ( var type in Expr.match ) {
Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, function(all, num){
return "\\" + (num - 0 + 1);
}));
}
var makeArray = function(array, results) {
array = Array.prototype.slice.call( array, 0 );
if ( results ) {
results.push.apply( results, array );
return results;
}
return array;
};
// Perform a simple check to determine if the browser is capable of
// converting a NodeList to an array using builtin methods.
try {
Array.prototype.slice.call( document.documentElement.childNodes, 0 );
// Provide a fallback method if it does not work
} catch(e){
makeArray = function(array, results) {
var ret = results || [];
if ( toString.call(array) === "[object Array]" ) {
Array.prototype.push.apply( ret, array );
} else {
if ( typeof array.length === "number" ) {
for ( var i = 0, l = array.length; i < l; i++ ) {
ret.push( array[i] );
}
} else {
for ( var i = 0; array[i]; i++ ) {
ret.push( array[i] );
}
}
}
return ret;
};
}
var sortOrder;
if ( document.documentElement.compareDocumentPosition ) {
sortOrder = function( a, b ) {
if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
if ( a == b ) {
hasDuplicate = true;
}
return a.compareDocumentPosition ? -1 : 1;
}
var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
if ( ret === 0 ) {
hasDuplicate = true;
}
return ret;
};
} else if ( "sourceIndex" in document.documentElement ) {
sortOrder = function( a, b ) {
if ( !a.sourceIndex || !b.sourceIndex ) {
if ( a == b ) {
hasDuplicate = true;
}
return a.sourceIndex ? -1 : 1;
}
var ret = a.sourceIndex - b.sourceIndex;
if ( ret === 0 ) {
hasDuplicate = true;
}
return ret;
};
} else if ( document.createRange ) {
sortOrder = function( a, b ) {
if ( !a.ownerDocument || !b.ownerDocument ) {
if ( a == b ) {
hasDuplicate = true;
}
return a.ownerDocument ? -1 : 1;
}
var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
aRange.setStart(a, 0);
aRange.setEnd(a, 0);
bRange.setStart(b, 0);
bRange.setEnd(b, 0);
var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
if ( ret === 0 ) {
hasDuplicate = true;
}
return ret;
};
}
// Utility function for retreiving the text value of an array of DOM nodes
function getText( elems ) {
var ret = "", elem;
for ( var i = 0; elems[i]; i++ ) {
elem = elems[i];
// Get the text from text nodes and CDATA nodes
if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
ret += elem.nodeValue;
// Traverse everything else, except comment nodes
} else if ( elem.nodeType !== 8 ) {
ret += getText( elem.childNodes );
}
}
return ret;
}
// Check to see if the browser returns elements by name when
// querying by getElementById (and provide a workaround)
(function(){
// We're going to inject a fake input element with a specified name
var form = document.createElement("div"),
id = "script" + (new Date).getTime();
form.innerHTML = "<a name='" + id + "'/>";
// Inject it into the root element, check its status, and remove it quickly
var root = document.documentElement;
root.insertBefore( form, root.firstChild );
// The workaround has to do additional checks after a getElementById
// Which slows things down for other browsers (hence the branching)
if ( document.getElementById( id ) ) {
Expr.find.ID = function(match, context, isXML){
if ( typeof context.getElementById !== "undefined" && !isXML ) {
var m = context.getElementById(match[1]);
return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
}
};
Expr.filter.ID = function(elem, match){
var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
return elem.nodeType === 1 && node && node.nodeValue === match;
};
}
root.removeChild( form );
root = form = null; // release memory in IE
})();
(function(){
// Check to see if the browser returns only elements
// when doing getElementsByTagName("*")
// Create a fake element
var div = document.createElement("div");
div.appendChild( document.createComment("") );
// Make sure no comments are found
if ( div.getElementsByTagName("*").length > 0 ) {
Expr.find.TAG = function(match, context){
var results = context.getElementsByTagName(match[1]);
// Filter out possible comments
if ( match[1] === "*" ) {
var tmp = [];
for ( var i = 0; results[i]; i++ ) {
if ( results[i].nodeType === 1 ) {
tmp.push( results[i] );
}
}
results = tmp;
}
return results;
};
}
// Check to see if an attribute returns normalized href attributes
div.innerHTML = "<a href='#'></a>";
if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
div.firstChild.getAttribute("href") !== "#" ) {
Expr.attrHandle.href = function(elem){
return elem.getAttribute("href", 2);
};
}
div = null; // release memory in IE
})();
if ( document.querySelectorAll ) {
(function(){
var oldSizzle = Sizzle, div = document.createElement("div");
div.innerHTML = "<p class='TEST'></p>";
// Safari can't handle uppercase or unicode characters when
// in quirks mode.
if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
return;
}
Sizzle = function(query, context, extra, seed){
context = context || document;
// Only use querySelectorAll on non-XML documents
// (ID selectors don't work in non-HTML documents)
if ( !seed && context.nodeType === 9 && !isXML(context) ) {
try {
return makeArray( context.querySelectorAll(query), extra );
} catch(e){}
}
return oldSizzle(query, context, extra, seed);
};
for ( var prop in oldSizzle ) {
Sizzle[ prop ] = oldSizzle[ prop ];
}
div = null; // release memory in IE
})();
}
(function(){
var div = document.createElement("div");
div.innerHTML = "<div class='test e'></div><div class='test'></div>";
// Opera can't find a second classname (in 9.6)
// Also, make sure that getElementsByClassName actually exists
if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
return;
}
// Safari caches class attributes, doesn't catch changes (in 3.2)
div.lastChild.className = "e";
if ( div.getElementsByClassName("e").length === 1 ) {
return;
}
Expr.order.splice(1, 0, "CLASS");
Expr.find.CLASS = function(match, context, isXML) {
if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
return context.getElementsByClassName(match[1]);
}
};
div = null; // release memory in IE
})();
function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
var elem = checkSet[i];
if ( elem ) {
elem = elem[dir];
var match = false;
while ( elem ) {
if ( elem.sizcache === doneName ) {
match = checkSet[elem.sizset];
break;
}
if ( elem.nodeType === 1 && !isXML ){
elem.sizcache = doneName;
elem.sizset = i;
}
if ( elem.nodeName.toLowerCase() === cur ) {
match = elem;
break;
}
elem = elem[dir];
}
checkSet[i] = match;
}
}
}
function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
var elem = checkSet[i];
if ( elem ) {
elem = elem[dir];
var match = false;
while ( elem ) {
if ( elem.sizcache === doneName ) {
match = checkSet[elem.sizset];
break;
}
if ( elem.nodeType === 1 ) {
if ( !isXML ) {
elem.sizcache = doneName;
elem.sizset = i;
}
if ( typeof cur !== "string" ) {
if ( elem === cur ) {
match = true;
break;
}
} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
match = elem;
break;
}
}
elem = elem[dir];
}
checkSet[i] = match;
}
}
}
var contains = document.compareDocumentPosition ? function(a, b){
return a.compareDocumentPosition(b) & 16;
} : function(a, b){
return a !== b && (a.contains ? a.contains(b) : true);
};
var isXML = function(elem){
// documentElement is verified for cases where it doesn't yet exist
// (such as loading iframes in IE - #4833)
var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
return documentElement ? documentElement.nodeName !== "HTML" : false;
};
var posProcess = function(selector, context){
var tmpSet = [], later = "", match,
root = context.nodeType ? [context] : context;
// Position selectors must be done after the filter
// And so must :not(positional) so we move all PSEUDOs to the end
while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
later += match[0];
selector = selector.replace( Expr.match.PSEUDO, "" );
}
selector = Expr.relative[selector] ? selector + "*" : selector;
for ( var i = 0, l = root.length; i < l; i++ ) {
Sizzle( selector, root[i], tmpSet );
}
return Sizzle.filter( later, tmpSet );
};
// EXPOSE
jQuery.find = Sizzle;
jQuery.expr = Sizzle.selectors;
jQuery.expr[":"] = jQuery.expr.filters;
jQuery.unique = Sizzle.uniqueSort;
jQuery.getText = getText;
jQuery.isXMLDoc = isXML;
jQuery.contains = contains;
return;
window.Sizzle = Sizzle;
})();
var runtil = /Until$/,
rparentsprev = /^(?:parents|prevUntil|prevAll)/,
// Note: This RegExp should be improved, or likely pulled from Sizzle
rmultiselector = /,/,
slice = Array.prototype.slice;
// Implement the identical functionality for filter and not
var winnow = function( elements, qualifier, keep ) {
if ( jQuery.isFunction( qualifier ) ) {
return jQuery.grep(elements, function( elem, i ) {
return !!qualifier.call( elem, i, elem ) === keep;
});
} else if ( qualifier.nodeType ) {
return jQuery.grep(elements, function( elem, i ) {
return (elem === qualifier) === keep;
});
} else if ( typeof qualifier === "string" ) {
var filtered = jQuery.grep(elements, function( elem ) {
return elem.nodeType === 1;
});
if ( isSimple.test( qualifier ) ) {
return jQuery.filter(qualifier, filtered, !keep);
} else {
qualifier = jQuery.filter( qualifier, filtered );
}
}
return jQuery.grep(elements, function( elem, i ) {
return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
});
};
jQuery.fn.extend({
find: function( selector ) {
var ret = this.pushStack( "", "find", selector ), length = 0;
for ( var i = 0, l = this.length; i < l; i++ ) {
length = ret.length;
jQuery.find( selector, this[i], ret );
if ( i > 0 ) {
// Make sure that the results are unique
for ( var n = length; n < ret.length; n++ ) {
for ( var r = 0; r < length; r++ ) {
if ( ret[r] === ret[n] ) {
ret.splice(n--, 1);
break;
}
}
}
}
}
return ret;
},
has: function( target ) {
var targets = jQuery( target );
return this.filter(function() {
for ( var i = 0, l = targets.length; i < l; i++ ) {
if ( jQuery.contains( this, targets[i] ) ) {
return true;
}
}
});
},
not: function( selector ) {
return this.pushStack( winnow(this, selector, false), "not", selector);
},
filter: function( selector ) {
return this.pushStack( winnow(this, selector, true), "filter", selector );
},
is: function( selector ) {
return !!selector && jQuery.filter( selector, this ).length > 0;
},
closest: function( selectors, context ) {
if ( jQuery.isArray( selectors ) ) {
var ret = [], cur = this[0], match, matches = {}, selector;
if ( cur && selectors.length ) {
for ( var i = 0, l = selectors.length; i < l; i++ ) {
selector = selectors[i];
if ( !matches[selector] ) {
matches[selector] = jQuery.expr.match.POS.test( selector ) ?
jQuery( selector, context || this.context ) :
selector;
}
}
while ( cur && cur.ownerDocument && cur !== context ) {
for ( selector in matches ) {
match = matches[selector];
if ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {
ret.push({ selector: selector, elem: cur });
delete matches[selector];
}
}
cur = cur.parentNode;
}
}
return ret;
}
var pos = jQuery.expr.match.POS.test( selectors ) ?
jQuery( selectors, context || this.context ) : null;
return this.map(function( i, cur ) {
while ( cur && cur.ownerDocument && cur !== context ) {
if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selectors) ) {
return cur;
}
cur = cur.parentNode;
}
return null;
});
},
// Determine the position of an element within
// the matched set of elements
index: function( elem ) {
if ( !elem || typeof elem === "string" ) {
return jQuery.inArray( this[0],
// If it receives a string, the selector is used
// If it receives nothing, the siblings are used
elem ? jQuery( elem ) : this.parent().children() );
}
// Locate the position of the desired element
return jQuery.inArray(
// If it receives a jQuery object, the first element is used
elem.jquery ? elem[0] : elem, this );
},
add: function( selector, context ) {
var set = typeof selector === "string" ?
jQuery( selector, context || this.context ) :
jQuery.makeArray( selector ),
all = jQuery.merge( this.get(), set );
return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
all :
jQuery.unique( all ) );
},
andSelf: function() {
return this.add( this.prevObject );
}
});
// A painfully simple check to see if an element is disconnected
// from a document (should be improved, where feasible).
function isDisconnected( node ) {
return !node || !node.parentNode || node.parentNode.nodeType === 11;
}
jQuery.each({
parent: function( elem ) {
var parent = elem.parentNode;
return parent && parent.nodeType !== 11 ? parent : null;
},
parents: function( elem ) {
return jQuery.dir( elem, "parentNode" );
},
parentsUntil: function( elem, i, until ) {
return jQuery.dir( elem, "parentNode", until );
},
next: function( elem ) {
return jQuery.nth( elem, 2, "nextSibling" );
},
prev: function( elem ) {
return jQuery.nth( elem, 2, "previousSibling" );
},
nextAll: function( elem ) {
return jQuery.dir( elem, "nextSibling" );
},
prevAll: function( elem ) {
return jQuery.dir( elem, "previousSibling" );
},
nextUntil: function( elem, i, until ) {
return jQuery.dir( elem, "nextSibling", until );
},
prevUntil: function( elem, i, until ) {
return jQuery.dir( elem, "previousSibling", until );
},
siblings: function( elem ) {
return jQuery.sibling( elem.parentNode.firstChild, elem );
},
children: function( elem ) {
return jQuery.sibling( elem.firstChild );
},
contents: function( elem ) {
return jQuery.nodeName( elem, "iframe" ) ?
elem.contentDocument || elem.contentWindow.document :
jQuery.makeArray( elem.childNodes );
}
}, function( name, fn ) {
jQuery.fn[ name ] = function( until, selector ) {
var ret = jQuery.map( this, fn, until );
if ( !runtil.test( name ) ) {
selector = until;
}
if ( selector && typeof selector === "string" ) {
ret = jQuery.filter( selector, ret );
}
ret = this.length > 1 ? jQuery.unique( ret ) : ret;
if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
ret = ret.reverse();
}
return this.pushStack( ret, name, slice.call(arguments).join(",") );
};
});
jQuery.extend({
filter: function( expr, elems, not ) {
if ( not ) {
expr = ":not(" + expr + ")";
}
return jQuery.find.matches(expr, elems);
},
dir: function( elem, dir, until ) {
var matched = [], cur = elem[dir];
while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
if ( cur.nodeType === 1 ) {
matched.push( cur );
}
cur = cur[dir];
}
return matched;
},
nth: function( cur, result, dir, elem ) {
result = result || 1;
var num = 0;
for ( ; cur; cur = cur[dir] ) {
if ( cur.nodeType === 1 && ++num === result ) {
break;
}
}
return cur;
},
sibling: function( n, elem ) {
var r = [];
for ( ; n; n = n.nextSibling ) {
if ( n.nodeType === 1 && n !== elem ) {
r.push( n );
}
}
return r;
}
});
var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
rleadingWhitespace = /^\s+/,
rxhtmlTag = /(<([\w:]+)[^>]*?)\/>/g,
rselfClosing = /^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,
rtagName = /<([\w:]+)/,
rtbody = /<tbody/i,
rhtml = /<|&\w+;/,
rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, // checked="checked" or checked (html5)
fcloseTag = function( all, front, tag ) {
return rselfClosing.test( tag ) ?
all :
front + "></" + tag + ">";
},
wrapMap = {
option: [ 1, "<select multiple='multiple'>", "</select>" ],
legend: [ 1, "<fieldset>", "</fieldset>" ],
thead: [ 1, "<table>", "</table>" ],
tr: [ 2, "<table><tbody>", "</tbody></table>" ],
td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
area: [ 1, "<map>", "</map>" ],
_default: [ 0, "", "" ]
};
wrapMap.optgroup = wrapMap.option;
wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
wrapMap.th = wrapMap.td;
// IE can't serialize <link> and <script> tags normally
if ( !jQuery.support.htmlSerialize ) {
wrapMap._default = [ 1, "div<div>", "</div>" ];
}
jQuery.fn.extend({
text: function( text ) {
if ( jQuery.isFunction(text) ) {
return this.each(function(i) {
var self = jQuery(this);
self.text( text.call(this, i, self.text()) );
});
}
if ( typeof text !== "object" && text !== undefined ) {
return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
}
return jQuery.getText( this );
},
wrapAll: function( html ) {
if ( jQuery.isFunction( html ) ) {
return this.each(function(i) {
jQuery(this).wrapAll( html.call(this, i) );
});
}
if ( this[0] ) {
// The elements to wrap the target around
var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
if ( this[0].parentNode ) {
wrap.insertBefore( this[0] );
}
wrap.map(function() {
var elem = this;
while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
elem = elem.firstChild;
}
return elem;
}).append(this);
}
return this;
},
wrapInner: function( html ) {
if ( jQuery.isFunction( html ) ) {
return this.each(function(i) {
jQuery(this).wrapInner( html.call(this, i) );
});
}
return this.each(function() {
var self = jQuery( this ), contents = self.contents();
if ( contents.length ) {
contents.wrapAll( html );
} else {
self.append( html );
}
});
},
wrap: function( html ) {
return this.each(function() {
jQuery( this ).wrapAll( html );
});
},
unwrap: function() {
return this.parent().each(function() {
if ( !jQuery.nodeName( this, "body" ) ) {
jQuery( this ).replaceWith( this.childNodes );
}
}).end();
},
append: function() {
return this.domManip(arguments, true, function( elem ) {
if ( this.nodeType === 1 ) {
this.appendChild( elem );
}
});
},
prepend: function() {
return this.domManip(arguments, true, function( elem ) {
if ( this.nodeType === 1 ) {
this.insertBefore( elem, this.firstChild );
}
});
},
before: function() {
if ( this[0] && this[0].parentNode ) {
return this.domManip(arguments, false, function( elem ) {
this.parentNode.insertBefore( elem, this );
});
} else if ( arguments.length ) {
var set = jQuery(arguments[0]);
set.push.apply( set, this.toArray() );
return this.pushStack( set, "before", arguments );
}
},
after: function() {
if ( this[0] && this[0].parentNode ) {
return this.domManip(arguments, false, function( elem ) {
this.parentNode.insertBefore( elem, this.nextSibling );
});
} else if ( arguments.length ) {
var set = this.pushStack( this, "after", arguments );
set.push.apply( set, jQuery(arguments[0]).toArray() );
return set;
}
},
clone: function( events ) {
// Do the clone
var ret = this.map(function() {
if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
// IE copies events bound via attachEvent when
// using cloneNode. Calling detachEvent on the
// clone will also remove the events from the orignal
// In order to get around this, we use innerHTML.
// Unfortunately, this means some modifications to
// attributes in IE that are actually only stored
// as properties will not be copied (such as the
// the name attribute on an input).
var html = this.outerHTML, ownerDocument = this.ownerDocument;
if ( !html ) {
var div = ownerDocument.createElement("div");
div.appendChild( this.cloneNode(true) );
html = div.innerHTML;
}
return jQuery.clean([html.replace(rinlinejQuery, "")
.replace(rleadingWhitespace, "")], ownerDocument)[0];
} else {
return this.cloneNode(true);
}
});
// Copy the events from the original to the clone
if ( events === true ) {
cloneCopyEvent( this, ret );
cloneCopyEvent( this.find("*"), ret.find("*") );
}
// Return the cloned set
return ret;
},
html: function( value ) {
if ( value === undefined ) {
return this[0] && this[0].nodeType === 1 ?
this[0].innerHTML.replace(rinlinejQuery, "") :
null;
// See if we can take a shortcut and just use
gitextract_prxbugz0/ ├── .gitignore ├── AUTHORS ├── LICENSE ├── MANIFEST.in ├── NEWS ├── README.rst ├── debug_toolbar/ │ ├── __init__.py │ ├── locale/ │ │ ├── de/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── django.mo │ │ │ └── django.po │ │ ├── en/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── django.mo │ │ │ └── django.po │ │ ├── es/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── django.mo │ │ │ └── django.po │ │ ├── fr/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── django.mo │ │ │ └── django.po │ │ ├── he/ │ │ │ └── LC_MESSAGES/ │ │ │ ├── django.mo │ │ │ └── django.po │ │ └── ru/ │ │ └── LC_MESSAGES/ │ │ ├── django.mo │ │ └── django.po │ ├── management/ │ │ ├── __init__.py │ │ └── commands/ │ │ ├── __init__.py │ │ └── debugsqlshell.py │ ├── media/ │ │ └── debug_toolbar/ │ │ ├── Makefile │ │ ├── css/ │ │ │ └── toolbar.css │ │ └── js/ │ │ ├── jquery.cookie.js │ │ ├── jquery.js │ │ └── toolbar.js │ ├── middleware.py │ ├── models.py │ ├── panels/ │ │ ├── __init__.py │ │ ├── cache.py │ │ ├── headers.py │ │ ├── logger.py │ │ ├── profiling.py │ │ ├── request_vars.py │ │ ├── settings_vars.py │ │ ├── signals.py │ │ ├── sql.py │ │ ├── template.py │ │ ├── timer.py │ │ └── version.py │ ├── runtests.py │ ├── templates/ │ │ └── debug_toolbar/ │ │ ├── base.html │ │ ├── panels/ │ │ │ ├── cache.html │ │ │ ├── headers.html │ │ │ ├── logger.html │ │ │ ├── profiling.html │ │ │ ├── request_vars.html │ │ │ ├── settings_vars.html │ │ │ ├── signals.html │ │ │ ├── sql.html │ │ │ ├── sql_explain.html │ │ │ ├── sql_profile.html │ │ │ ├── sql_select.html │ │ │ ├── template_source.html │ │ │ ├── templates.html │ │ │ ├── timer.html │ │ │ └── versions.html │ │ └── redirect.html │ ├── tests/ │ │ ├── __init__.py │ │ ├── templates/ │ │ │ └── 404.html │ │ ├── tests.py │ │ ├── urls.py │ │ └── views.py │ ├── toolbar/ │ │ ├── __init__.py │ │ └── loader.py │ ├── urls.py │ ├── utils/ │ │ ├── __init__.py │ │ ├── compat/ │ │ │ ├── __init__.py │ │ │ └── db.py │ │ ├── sqlparse/ │ │ │ ├── __init__.py │ │ │ ├── engine/ │ │ │ │ ├── __init__.py │ │ │ │ ├── filter.py │ │ │ │ └── grouping.py │ │ │ ├── filters.py │ │ │ ├── formatter.py │ │ │ ├── keywords.py │ │ │ ├── lexer.py │ │ │ ├── sql.py │ │ │ └── tokens.py │ │ └── tracking/ │ │ ├── __init__.py │ │ └── db.py │ └── views.py ├── example/ │ ├── __init__.py │ ├── manage.py │ ├── media/ │ │ └── js/ │ │ ├── jquery.js │ │ ├── mootools.js │ │ └── prototype.js │ ├── settings.py │ ├── templates/ │ │ ├── admin/ │ │ │ └── login.html │ │ ├── index.html │ │ ├── jquery/ │ │ │ └── index.html │ │ ├── mootools/ │ │ │ └── index.html │ │ └── prototype/ │ │ └── index.html │ └── urls.py ├── setup.cfg └── setup.py
SYMBOL INDEX (573 symbols across 36 files)
FILE: debug_toolbar/management/commands/debugsqlshell.py
class PrintQueryWrapper (line 9) | class PrintQueryWrapper(util.CursorDebugWrapper):
method execute (line 10) | def execute(self, sql, params=()):
class Command (line 22) | class Command(NoArgsCommand):
method handle_noargs (line 31) | def handle_noargs(self, **options):
FILE: debug_toolbar/media/debug_toolbar/js/jquery.js
function doScrollCheck (line 750) | function doScrollCheck() {
function evalScript (line 768) | function evalScript( i, elem ) {
function access (line 786) | function access( elems, key, value, exec, fn, pass ) {
function now (line 813) | function now() {
function returnFalse (line 2044) | function returnFalse() {
function returnTrue (line 2047) | function returnTrue() {
function getVal (line 2183) | function getVal( elem ) {
function testChange (line 2203) | function testChange( e ) {
function trigger (line 2283) | function trigger( type, elem, args ) {
function handler (line 2300) | function handler( e ) {
function liveHandler (line 2426) | function liveHandler( event ) {
function liveConvert (line 2485) | function liveConvert( type, selector ) {
function getText (line 3312) | function getText( elems ) {
function dirNodeCheck (line 3466) | function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
function dirCheck (line 3497) | function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
function isDisconnected (line 3742) | function isDisconnected( node ) {
function root (line 4166) | function root( elem, cur ) {
function cloneCopyEvent (line 4175) | function cloneCopyEvent(orig, ret) {
function buildFragment (line 4198) | function buildFragment( args, nodes, scripts ) {
function getWH (line 4466) | function getWH() {
function success (line 5102) | function success() {
function complete (line 5114) | function complete() {
function trigger (line 5131) | function trigger(type, args) {
function buildParams (line 5242) | function buildParams( prefix, obj ) {
function add (line 5273) | function add( key, value ) {
function t (line 5600) | function t( gotoEnd ) {
function genFx (line 5753) | function genFx( type, num ) {
function getWindow (line 6011) | function getWindow( elem ) {
FILE: debug_toolbar/media/debug_toolbar/js/toolbar.js
function getSubcalls (line 79) | function getSubcalls(row) {
function getDirectSubcalls (line 83) | function getDirectSubcalls(row) {
FILE: debug_toolbar/middleware.py
function replace_insensitive (line 17) | def replace_insensitive(string, target, replacement):
class DebugToolbarMiddleware (line 29) | class DebugToolbarMiddleware(object):
method get_current (line 37) | def get_current(cls):
method __init__ (line 40) | def __init__(self):
method _show_toolbar (line 59) | def _show_toolbar(self, request):
method process_request (line 72) | def process_request(self, request):
method process_view (line 91) | def process_view(self, request, view_func, view_args, view_kwargs):
method process_response (line 98) | def process_response(self, request, response):
FILE: debug_toolbar/panels/__init__.py
class DebugPanel (line 3) | class DebugPanel(object):
method __init__ (line 15) | def __init__(self, context={}):
method dom_id (line 18) | def dom_id(self):
method nav_title (line 21) | def nav_title(self):
method nav_subtitle (line 25) | def nav_subtitle(self):
method title (line 29) | def title(self):
method url (line 33) | def url(self):
method content (line 36) | def content(self):
method process_request (line 40) | def process_request(self, request):
method process_view (line 43) | def process_view(self, request, view_func, view_args, view_kwargs):
method process_response (line 46) | def process_response(self, request, response):
FILE: debug_toolbar/panels/cache.py
class CacheStatTracker (line 10) | class CacheStatTracker(BaseCache):
method __init__ (line 12) | def __init__(self, cache):
method reset (line 16) | def reset(self):
method _get_func_info (line 26) | def _get_func_info(self):
method get (line 30) | def get(self, key, default=None):
method set (line 43) | def set(self, key, value, timeout=None):
method delete (line 51) | def delete(self, key):
method get_many (line 59) | def get_many(self, keys):
class CacheDebugPanel (line 72) | class CacheDebugPanel(DebugPanel):
method __init__ (line 79) | def __init__(self, *args, **kwargs):
method nav_title (line 89) | def nav_title(self):
method title (line 92) | def title(self):
method url (line 95) | def url(self):
method content (line 98) | def content(self):
FILE: debug_toolbar/panels/headers.py
class HeaderDebugPanel (line 5) | class HeaderDebugPanel(DebugPanel):
method nav_title (line 35) | def nav_title(self):
method title (line 38) | def title(self):
method url (line 41) | def url(self):
method process_request (line 44) | def process_request(self, request):
method content (line 49) | def content(self):
FILE: debug_toolbar/panels/logger.py
class LogCollector (line 12) | class LogCollector(object):
method __init__ (line 13) | def __init__(self):
method add_record (line 19) | def add_record(self, record, thread=None):
method get_records (line 27) | def get_records(self, thread=None):
method clear_records (line 38) | def clear_records(self, thread=None):
class ThreadTrackingHandler (line 45) | class ThreadTrackingHandler(logging.Handler):
method __init__ (line 46) | def __init__(self, collector):
method emit (line 50) | def emit(self, record):
class LogbookThreadTrackingHandler (line 75) | class LogbookThreadTrackingHandler(logbook.handlers.Handler):
method __init__ (line 76) | def __init__(self, collector):
method emit (line 80) | def emit(self, record):
class LoggingPanel (line 95) | class LoggingPanel(DebugPanel):
method process_request (line 99) | def process_request(self, request):
method get_and_delete (line 102) | def get_and_delete(self):
method nav_title (line 107) | def nav_title(self):
method nav_subtitle (line 110) | def nav_subtitle(self):
method title (line 114) | def title(self):
method url (line 117) | def url(self):
method content (line 120) | def content(self):
FILE: debug_toolbar/panels/profiling.py
class DjangoDebugToolbarStats (line 12) | class DjangoDebugToolbarStats(Stats):
method get_root_func (line 15) | def get_root_func(self):
method print_call_tree_node (line 23) | def print_call_tree_node(self, function, depth, max_depth, cum_filter=...
class FunctionCall (line 30) | class FunctionCall(object):
method __init__ (line 31) | def __init__(self, statobj, func, depth=0, stats=None, id=0, parent_id...
method parent_classes (line 43) | def parent_classes(self):
method background (line 46) | def background(self):
method func_std_string (line 50) | def func_std_string(self): # match what old profile produced
method subfuncs (line 74) | def subfuncs(self):
method count (line 93) | def count(self):
method tottime (line 96) | def tottime(self):
method cumtime (line 99) | def cumtime(self):
method tottime_per_call (line 103) | def tottime_per_call(self):
method cumtime_per_call (line 111) | def cumtime_per_call(self):
method indent (line 119) | def indent(self):
class ProfilingDebugPanel (line 122) | class ProfilingDebugPanel(DebugPanel):
method nav_title (line 129) | def nav_title(self):
method url (line 132) | def url(self):
method title (line 135) | def title(self):
method process_view (line 138) | def process_view(self, request, view_func, view_args, view_kwargs):
method process_response (line 143) | def process_response(self, request, response):
method add_node (line 148) | def add_node(self, func_list, func, max_depth, cum_time=0.1):
method content (line 157) | def content(self):
FILE: debug_toolbar/panels/request_vars.py
class RequestVarsDebugPanel (line 5) | class RequestVarsDebugPanel(DebugPanel):
method nav_title (line 12) | def nav_title(self):
method title (line 15) | def title(self):
method url (line 18) | def url(self):
method process_request (line 21) | def process_request(self, request):
method process_view (line 24) | def process_view(self, request, view_func, view_args, view_kwargs):
method content (line 29) | def content(self):
FILE: debug_toolbar/panels/settings_vars.py
class SettingsVarsDebugPanel (line 8) | class SettingsVarsDebugPanel(DebugPanel):
method nav_title (line 15) | def nav_title(self):
method title (line 18) | def title(self):
method url (line 21) | def url(self):
method content (line 24) | def content(self):
FILE: debug_toolbar/panels/signals.py
class SignalDebugPanel (line 19) | class SignalDebugPanel(DebugPanel):
method nav_title (line 38) | def nav_title(self):
method title (line 41) | def title(self):
method url (line 44) | def url(self):
method signals (line 47) | def signals(self):
method content (line 61) | def content(self):
FILE: debug_toolbar/panels/sql.py
function cursor (line 19) | def cursor(func, self):
function get_isolation_level_display (line 29) | def get_isolation_level_display(engine, level):
function get_transaction_status_display (line 44) | def get_transaction_status_display(engine, level):
class SQLDebugPanel (line 59) | class SQLDebugPanel(DebugPanel):
method __init__ (line 67) | def __init__(self, *args, **kwargs):
method get_transaction_id (line 77) | def get_transaction_id(self, alias):
method record (line 103) | def record(self, alias, **kwargs):
method nav_title (line 116) | def nav_title(self):
method nav_subtitle (line 119) | def nav_subtitle(self):
method title (line 127) | def title(self):
method url (line 134) | def url(self):
method content (line 137) | def content(self):
class BoldKeywordFilter (line 211) | class BoldKeywordFilter(sqlparse.filters.Filter):
method process (line 213) | def process(self, stack, stream):
function swap_fields (line 223) | def swap_fields(sql):
function reformat_sql (line 226) | def reformat_sql(sql):
FILE: debug_toolbar/panels/template.py
function new_template_init (line 32) | def new_template_init(self, template_string, origin=None, name='<Unknown...
class TemplateDebugPanel (line 37) | class TemplateDebugPanel(DebugPanel):
method __init__ (line 44) | def __init__(self, *args, **kwargs):
method _store_template_info (line 49) | def _store_template_info(self, sender, **kwargs):
method nav_title (line 52) | def nav_title(self):
method title (line 55) | def title(self):
method url (line 60) | def url(self):
method process_request (line 63) | def process_request(self, request):
method content (line 66) | def content(self):
FILE: debug_toolbar/panels/timer.py
class TimerDebugPanel (line 10) | class TimerDebugPanel(DebugPanel):
method process_request (line 24) | def process_request(self, request):
method process_response (line 29) | def process_response(self, request, response):
method nav_title (line 34) | def nav_title(self):
method nav_subtitle (line 37) | def nav_subtitle(self):
method title (line 46) | def title(self):
method url (line 49) | def url(self):
method _elapsed_ru (line 52) | def _elapsed_ru(self, name):
method content (line 55) | def content(self):
FILE: debug_toolbar/panels/version.py
class VersionDebugPanel (line 12) | class VersionDebugPanel(DebugPanel):
method nav_title (line 19) | def nav_title(self):
method nav_subtitle (line 22) | def nav_subtitle(self):
method url (line 25) | def url(self):
method title (line 28) | def title(self):
method content (line 31) | def content(self):
FILE: debug_toolbar/runtests.py
function runtests (line 33) | def runtests(*test_args):
FILE: debug_toolbar/tests/tests.py
class BaseTestCase (line 12) | class BaseTestCase(TestCase):
method setUp (line 13) | def setUp(self):
class DebugToolbarTestCase (line 19) | class DebugToolbarTestCase(BaseTestCase):
method test_middleware (line 22) | def test_middleware(self):
class SQLPanelTestCase (line 26) | class SQLPanelTestCase(BaseTestCase):
method test_recording (line 27) | def test_recording(self):
function module_func (line 41) | def module_func(*args, **kwargs):
class TrackingTestCase (line 45) | class TrackingTestCase(BaseTestCase):
method class_method (line 47) | def class_method(cls, *args, **kwargs):
method class_func (line 50) | def class_func(self, *args, **kwargs):
method test_pre_hook (line 54) | def test_pre_hook(self):
method test_post_hook (line 123) | def test_post_hook(self):
FILE: debug_toolbar/tests/views.py
function execute_sql (line 4) | def execute_sql(request):
FILE: debug_toolbar/toolbar/loader.py
class DebugToolbar (line 11) | class DebugToolbar(object):
method __init__ (line 13) | def __init__(self, request):
method _get_panels (line 42) | def _get_panels(self):
method get_panel (line 46) | def get_panel(self, cls):
method load_panels (line 49) | def load_panels(self):
method render_toolbar (line 82) | def render_toolbar(self):
FILE: debug_toolbar/utils/__init__.py
function ms_from_timedelta (line 12) | def ms_from_timedelta(td):
function tidy_stacktrace (line 18) | def tidy_stacktrace(strace):
function get_template_info (line 36) | def get_template_info(source, context_lines=3):
FILE: debug_toolbar/utils/sqlparse/__init__.py
class SQLParseError (line 15) | class SQLParseError(Exception):
function parse (line 25) | def parse(sql):
function format (line 37) | def format(sql, **options):
function split (line 51) | def split(sql):
FILE: debug_toolbar/utils/sqlparse/engine/__init__.py
class FilterStack (line 18) | class FilterStack(object):
method __init__ (line 20) | def __init__(self):
method _flatten (line 27) | def _flatten(self, stream):
method enable_grouping (line 35) | def enable_grouping(self):
method full_analyze (line 38) | def full_analyze(self):
method run (line 41) | def run(self, sql):
FILE: debug_toolbar/utils/sqlparse/engine/filter.py
class TokenFilter (line 7) | class TokenFilter(object):
method __init__ (line 9) | def __init__(self, **options):
method process (line 12) | def process(self, stack, stream):
class StatementFilter (line 17) | class StatementFilter(TokenFilter):
method __init__ (line 19) | def __init__(self):
method _reset (line 25) | def _reset(self):
method _change_splitlevel (line 30) | def _change_splitlevel(self, ttype, value):
method process (line 72) | def process(self, stack, stream):
FILE: debug_toolbar/utils/sqlparse/engine/grouping.py
function _group_left_right (line 12) | def _group_left_right(tlist, ttype, value, cls,
function _group_matching (line 44) | def _group_matching(tlist, start_ttype, start_value, end_ttype, end_value,
function group_if (line 81) | def group_if(tlist):
function group_for (line 84) | def group_for(tlist):
function group_as (line 87) | def group_as(tlist):
function group_assignment (line 90) | def group_assignment(tlist):
function group_comparsion (line 94) | def group_comparsion(tlist):
function group_case (line 98) | def group_case(tlist):
function group_identifier (line 103) | def group_identifier(tlist):
function group_identifier_list (line 131) | def group_identifier_list(tlist):
function group_parenthesis (line 176) | def group_parenthesis(tlist):
function group_comments (line 179) | def group_comments(tlist):
function group_where (line 199) | def group_where(tlist):
function group_aliased (line 216) | def group_aliased(tlist):
function group_typecasts (line 232) | def group_typecasts(tlist):
function group (line 236) | def group(tlist):
FILE: debug_toolbar/utils/sqlparse/filters.py
class Filter (line 10) | class Filter(object):
method process (line 12) | def process(self, *args):
class TokenFilter (line 16) | class TokenFilter(Filter):
method process (line 18) | def process(self, stack, stream):
function rstrip (line 23) | def rstrip(stream):
class _CaseFilter (line 53) | class _CaseFilter(TokenFilter):
method __init__ (line 57) | def __init__(self, case=None):
method process (line 63) | def process(self, stack, stream):
class KeywordCaseFilter (line 70) | class KeywordCaseFilter(_CaseFilter):
class IdentifierCaseFilter (line 74) | class IdentifierCaseFilter(_CaseFilter):
class StripCommentsFilter (line 81) | class StripCommentsFilter(Filter):
method _process (line 83) | def _process(self, tlist):
method process (line 102) | def process(self, stack, stmt):
class StripWhitespaceFilter (line 107) | class StripWhitespaceFilter(Filter):
method _stripws (line 109) | def _stripws(self, tlist):
method _stripws_default (line 114) | def _stripws_default(self, tlist):
method _stripws_parenthesis (line 124) | def _stripws_parenthesis(self, tlist):
method process (line 131) | def process(self, stack, stmt):
class ReindentFilter (line 138) | class ReindentFilter(Filter):
method __init__ (line 140) | def __init__(self, width=2, char=' ', line_width=None):
method _get_offset (line 149) | def _get_offset(self, token):
method nl (line 158) | def nl(self):
method _split_kwds (line 163) | def _split_kwds(self, tlist):
method _split_statements (line 187) | def _split_statements(self, tlist):
method _process (line 201) | def _process(self, tlist):
method _process_where (line 206) | def _process_where(self, tlist):
method _process_parenthesis (line 213) | def _process_parenthesis(self, tlist):
method _process_identifierlist (line 228) | def _process_identifierlist(self, tlist):
method _process_case (line 239) | def _process_case(self, tlist):
method _process_default (line 268) | def _process_default(self, tlist, stmts=True, kwds=True):
method process (line 275) | def process(self, stack, stmt):
class RightMarginFilter (line 292) | class RightMarginFilter(Filter):
method __init__ (line 298) | def __init__(self, width=79):
method _process (line 302) | def _process(self, stack, group, stream):
method process (line 325) | def process(self, stack, group):
class SerializerUnicode (line 333) | class SerializerUnicode(Filter):
method process (line 335) | def process(self, stack, stmt):
class OutputPythonFilter (line 344) | class OutputPythonFilter(Filter):
method __init__ (line 346) | def __init__(self, varname='sql'):
method _process (line 350) | def _process(self, stream, varname, count, has_nl):
method process (line 382) | def process(self, stack, stmt):
class OutputPHPFilter (line 393) | class OutputPHPFilter(Filter):
method __init__ (line 395) | def __init__(self, varname='sql'):
method _process (line 399) | def _process(self, stream, varname):
method process (line 432) | def process(self, stack, stmt):
FILE: debug_toolbar/utils/sqlparse/formatter.py
function validate_options (line 12) | def validate_options(options):
function build_filter_stack (line 71) | def build_filter_stack(stack, options):
FILE: debug_toolbar/utils/sqlparse/lexer.py
class include (line 22) | class include(str):
class combined (line 25) | class combined(tuple):
method __new__ (line 28) | def __new__(cls, *args):
method __init__ (line 31) | def __init__(self, *args):
function is_keyword (line 35) | def is_keyword(value):
function apply_filters (line 40) | def apply_filters(stream, filters, lexer=None):
class LexerMeta (line 54) | class LexerMeta(type):
method _process_state (line 60) | def _process_state(cls, unprocessed, processed, state):
method process_tokendef (line 124) | def process_tokendef(cls):
method __call__ (line 133) | def __call__(cls, *args, **kwds):
class Lexer (line 148) | class Lexer:
method __init__ (line 190) | def __init__(self):
method add_filter (line 193) | def add_filter(self, filter_, **options):
method get_tokens (line 199) | def get_tokens(self, text, unfiltered=False):
method get_tokens_unprocessed (line 245) | def get_tokens_unprocessed(self, text, stack=('root',)):
function tokenize (line 308) | def tokenize(sql):
FILE: debug_toolbar/utils/sqlparse/sql.py
class Token (line 11) | class Token(object):
method __init__ (line 21) | def __init__(self, ttype, value):
method __str__ (line 25) | def __str__(self):
method __repr__ (line 28) | def __repr__(self):
method __unicode__ (line 33) | def __unicode__(self):
method to_unicode (line 36) | def to_unicode(self):
method _get_repr_name (line 40) | def _get_repr_name(self):
method _get_repr_value (line 43) | def _get_repr_value(self):
method flatten (line 51) | def flatten(self):
method match (line 55) | def match(self, ttype, values, regex=False):
method is_group (line 88) | def is_group(self):
method is_whitespace (line 92) | def is_whitespace(self):
class TokenList (line 97) | class TokenList(Token):
method __init__ (line 106) | def __init__(self, tokens=None):
method __unicode__ (line 112) | def __unicode__(self):
method __str__ (line 115) | def __str__(self):
method _get_repr_name (line 118) | def _get_repr_name(self):
method flatten (line 135) | def flatten(self):
method is_group (line 147) | def is_group(self):
method get_sublists (line 150) | def get_sublists(self):
method token_first (line 153) | def token_first(self, ignore_whitespace=True):
method token_next_by_instance (line 165) | def token_next_by_instance(self, idx, clss):
method token_next_by_type (line 182) | def token_next_by_type(self, idx, ttypes):
method token_next_match (line 191) | def token_next_match(self, idx, ttype, value, regex=False):
method token_not_matching (line 200) | def token_not_matching(self, idx, funcs):
method token_matching (line 211) | def token_matching(self, idx, funcs):
method token_prev (line 218) | def token_prev(self, idx, skip_ws=True):
method token_next (line 234) | def token_next(self, idx, skip_ws=True):
method token_index (line 250) | def token_index(self, token):
method tokens_between (line 254) | def tokens_between(self, start, end, exclude_end=False):
method group_tokens (line 266) | def group_tokens(self, grp_cls, tokens):
method insert_before (line 275) | def insert_before(self, where, token):
class Statement (line 280) | class Statement(TokenList):
method get_type (line 285) | def get_type(self):
class Identifier (line 299) | class Identifier(TokenList):
method has_alias (line 307) | def has_alias(self):
method get_alias (line 311) | def get_alias(self):
method get_name (line 328) | def get_name(self):
method get_real_name (line 340) | def get_real_name(self):
method get_parent_name (line 353) | def get_parent_name(self):
method is_wildcard (line 366) | def is_wildcard(self):
method get_typecast (line 371) | def get_typecast(self):
class IdentifierList (line 382) | class IdentifierList(TokenList):
method get_identifiers (line 387) | def get_identifiers(self):
class Parenthesis (line 396) | class Parenthesis(TokenList):
class Assignment (line 401) | class Assignment(TokenList):
class If (line 405) | class If(TokenList):
class For (line 409) | class For(TokenList):
class Comparsion (line 413) | class Comparsion(TokenList):
class Comment (line 417) | class Comment(TokenList):
class Where (line 421) | class Where(TokenList):
class Case (line 426) | class Case(TokenList):
method get_cases (line 431) | def get_cases(self):
FILE: debug_toolbar/utils/sqlparse/tokens.py
class _TokenType (line 18) | class _TokenType(tuple):
method split (line 21) | def split(self):
method __init__ (line 30) | def __init__(self, *args):
method __contains__ (line 34) | def __contains__(self, val):
method __getattr__ (line 40) | def __getattr__(self, val):
method __hash__ (line 49) | def __hash__(self):
method __repr__ (line 52) | def __repr__(self):
function is_token_subtype (line 98) | def is_token_subtype(ttype, other):
function string_to_tokentype (line 107) | def string_to_tokentype(s):
FILE: debug_toolbar/utils/tracking/__init__.py
function post_dispatch (line 5) | def post_dispatch(func):
function pre_dispatch (line 11) | def pre_dispatch(func):
function replace_call (line 17) | def replace_call(func):
function fire_hook (line 31) | def fire_hook(hook, sender, **kwargs):
function _replace_function (line 39) | def _replace_function(func, wrapped):
function register_hook (line 61) | def register_hook(func, hook, callback):
FILE: debug_toolbar/utils/tracking/db.py
class CursorWrapper (line 19) | class CursorWrapper(object):
method __init__ (line 24) | def __init__(self, cursor, db, logger):
method execute (line 31) | def execute(self, sql, params=()):
method executemany (line 95) | def executemany(self, sql, param_list):
method __getattr__ (line 98) | def __getattr__(self, attr):
method __iter__ (line 104) | def __iter__(self):
FILE: debug_toolbar/views.py
class InvalidSQLError (line 16) | class InvalidSQLError(Exception):
method __init__ (line 17) | def __init__(self, value):
method __str__ (line 19) | def __str__(self):
function debug_media (line 22) | def debug_media(request, path):
function sql_select (line 29) | def sql_select(request):
function sql_explain (line 61) | def sql_explain(request):
function sql_profile (line 101) | def sql_profile(request):
function template_source (line 144) | def template_source(request):
FILE: example/media/js/jquery.js
function evalScript (line 531) | function evalScript( i, elem ) {
function now (line 546) | function now(){
function getWH (line 807) | function getWH() {
function color (line 832) | function color( elem ) {
function num (line 1369) | function num(elem, prop) {
function bindReady (line 2329) | function bindReady(){
function success (line 2815) | function success(){
function complete (line 2825) | function complete(){
function t (line 3222) | function t(gotoEnd){
function border (line 3446) | function border(elem) {
function add (line 3450) | function add(l, t) {
FILE: example/media/js/mootools.js
function $A (line 161) | function $A(iterable){
function $arguments (line 170) | function $arguments(i){
function $chk (line 176) | function $chk(obj){
function $clear (line 180) | function $clear(timer){
function $defined (line 186) | function $defined(obj){
function $each (line 190) | function $each(iterable, fn, bind){
function $empty (line 195) | function $empty(){}
function $extend (line 197) | function $extend(original, extended){
function $H (line 202) | function $H(object){
function $lambda (line 206) | function $lambda(value){
function $merge (line 212) | function $merge(){
function $mixin (line 218) | function $mixin(mix){
function $pick (line 230) | function $pick(){
function $random (line 237) | function $random(min, max){
function $splat (line 241) | function $splat(obj){
function $try (line 250) | function $try(){
function $type (line 259) | function $type(obj){
function $unlink (line 274) | function $unlink(object){
function $exec (line 384) | function $exec(text){
function Class (line 1139) | function Class(params){
function styleNumber (line 2611) | function styleNumber(element, style){
function borderBox (line 2615) | function borderBox(element){
function topBorder (line 2619) | function topBorder(element){
function leftBorder (line 2623) | function leftBorder(element){
function isBody (line 2627) | function isBody(element){
function getCompatElement (line 2631) | function getCompatElement(element){
FILE: example/media/js/prototype.js
function subclass (line 82) | function subclass() {}
function create (line 83) | function create() {
function addMethods (line 112) | function addMethods(source) {
function extend (line 152) | function extend(destination, source) {
function inspect (line 158) | function inspect(object) {
function toJSON (line 169) | function toJSON(object) {
function toQueryString (line 192) | function toQueryString(object) {
function toHTML (line 196) | function toHTML(object) {
function keys (line 200) | function keys(object) {
function values (line 207) | function values(object) {
function clone (line 214) | function clone(object) {
function isElement (line 218) | function isElement(object) {
function isArray (line 222) | function isArray(object) {
function isHash (line 227) | function isHash(object) {
function isFunction (line 231) | function isFunction(object) {
function isString (line 235) | function isString(object) {
function isNumber (line 239) | function isNumber(object) {
function isUndefined (line 243) | function isUndefined(object) {
function update (line 268) | function update(array, args) {
function merge (line 274) | function merge(array, args) {
function argumentNames (line 279) | function argumentNames() {
function bind (line 286) | function bind(context) {
function bindAsEventListener (line 295) | function bindAsEventListener(context) {
function curry (line 303) | function curry() {
function delay (line 312) | function delay(timeout) {
function defer (line 320) | function defer() {
function wrap (line 325) | function wrap(wrapper) {
function methodize (line 333) | function methodize() {
function prepareReplacement (line 422) | function prepareReplacement(replacement) {
function gsub (line 428) | function gsub(pattern, replacement) {
function sub (line 452) | function sub(pattern, replacement, count) {
function scan (line 462) | function scan(pattern, iterator) {
function truncate (line 467) | function truncate(length, truncation) {
function strip (line 474) | function strip() {
function stripTags (line 478) | function stripTags() {
function stripScripts (line 482) | function stripScripts() {
function extractScripts (line 486) | function extractScripts() {
function evalScripts (line 494) | function evalScripts() {
function escapeHTML (line 498) | function escapeHTML() {
function unescapeHTML (line 502) | function unescapeHTML() {
function toQueryParams (line 507) | function toQueryParams(separator) {
function toArray (line 527) | function toArray() {
function succ (line 531) | function succ() {
function times (line 536) | function times(count) {
function camelize (line 540) | function camelize() {
function capitalize (line 554) | function capitalize() {
function underscore (line 558) | function underscore() {
function dasherize (line 566) | function dasherize() {
function inspect (line 570) | function inspect(useDoubleQuotes) {
function toJSON (line 581) | function toJSON() {
function unfilterJSON (line 585) | function unfilterJSON(filter) {
function isJSON (line 589) | function isJSON() {
function evalJSON (line 596) | function evalJSON(sanitize) {
function include (line 604) | function include(pattern) {
function startsWith (line 608) | function startsWith(pattern) {
function endsWith (line 612) | function endsWith(pattern) {
function empty (line 617) | function empty() {
function blank (line 621) | function blank() {
function interpolate (line 625) | function interpolate(object, pattern) {
function each (line 702) | function each(iterator, context) {
function eachSlice (line 714) | function eachSlice(number, iterator, context) {
function all (line 722) | function all(iterator, context) {
function any (line 732) | function any(iterator, context) {
function collect (line 742) | function collect(iterator, context) {
function detect (line 751) | function detect(iterator, context) {
function findAll (line 762) | function findAll(iterator, context) {
function grep (line 771) | function grep(filter, iterator, context) {
function include (line 785) | function include(object) {
function inGroupsOf (line 799) | function inGroupsOf(number, fillWith) {
function inject (line 807) | function inject(memo, iterator, context) {
function invoke (line 814) | function invoke(method) {
function max (line 821) | function max(iterator, context) {
function min (line 832) | function min(iterator, context) {
function partition (line 843) | function partition(iterator, context) {
function pluck (line 853) | function pluck(property) {
function reject (line 861) | function reject(iterator, context) {
function sortBy (line 870) | function sortBy(iterator, context) {
function toArray (line 882) | function toArray() {
function zip (line 886) | function zip() {
function size (line 897) | function size() {
function inspect (line 901) | function inspect() {
function $A (line 946) | function $A(iterable) {
function $w (line 954) | function $w(string) {
function each (line 968) | function each(iterator) {
function clear (line 974) | function clear() {
function first (line 979) | function first() {
function last (line 983) | function last() {
function compact (line 987) | function compact() {
function flatten (line 993) | function flatten() {
function without (line 1002) | function without() {
function reverse (line 1009) | function reverse(inline) {
function uniq (line 1013) | function uniq(sorted) {
function intersect (line 1021) | function intersect(array) {
function clone (line 1028) | function clone() {
function size (line 1032) | function size() {
function inspect (line 1036) | function inspect() {
function toJSON (line 1040) | function toJSON() {
function indexOf (line 1049) | function indexOf(item, i) {
function lastIndexOf (line 1058) | function lastIndexOf(item, i) {
function concat (line 1064) | function concat() {
function $H (line 1110) | function $H(object) {
function initialize (line 1115) | function initialize(object) {
function _each (line 1119) | function _each(iterator) {
function set (line 1128) | function set(key, value) {
function get (line 1132) | function get(key) {
function unset (line 1137) | function unset(key) {
function toObject (line 1143) | function toObject() {
function keys (line 1147) | function keys() {
function values (line 1151) | function values() {
function index (line 1155) | function index(value) {
function merge (line 1162) | function merge(object) {
function update (line 1166) | function update(object) {
function toQueryPair (line 1173) | function toQueryPair(key, value) {
function toQueryString (line 1178) | function toQueryString() {
function inspect (line 1190) | function inspect() {
function toJSON (line 1196) | function toJSON() {
function clone (line 1200) | function clone() {
function toColorPart (line 1226) | function toColorPart() {
function succ (line 1230) | function succ() {
function times (line 1234) | function times(iterator, context) {
function toPaddedString (line 1239) | function toPaddedString(length, radix) {
function toJSON (line 1244) | function toJSON() {
function abs (line 1248) | function abs() {
function round (line 1252) | function round() {
function ceil (line 1256) | function ceil() {
function floor (line 1260) | function floor() {
function $R (line 1277) | function $R(start, end, exclusive) {
function initialize (line 1282) | function initialize(start, end, exclusive) {
function _each (line 1288) | function _each(iterator) {
function include (line 1296) | function include(value) {
function $ (line 1709) | function $(element) {
function update (line 1861) | function update(element, content) {
function stripAlpha (line 2557) | function stripAlpha(filter){
function _descendants (line 2721) | function _descendants(element) {
function checkDeficiency (line 2884) | function checkDeficiency(tagName) {
function extendElementWith (line 2900) | function extendElementWith(element, methods) {
function extend (line 2986) | function extend(tagName) {
function copy (line 2993) | function copy(methods, destination, onlyIfAbsent) {
function findDOMClass (line 3003) | function findDOMClass(tagName) {
function getRootElement (line 3069) | function getRootElement() {
function define (line 3079) | function define(D) {
function $$ (line 3913) | function $$() {
function isLeftClick (line 4309) | function isLeftClick(event) { return _isButton(event, 0) }
function isMiddleClick (line 4311) | function isMiddleClick(event) { return _isButton(event, 1) }
function isRightClick (line 4313) | function isRightClick(event) { return _isButton(event, 2) }
function element (line 4315) | function element(event) {
function findElement (line 4334) | function findElement(event, expression) {
function pointer (line 4341) | function pointer(event) {
function pointerX (line 4345) | function pointerX(event) {
function pointerY (line 4354) | function pointerY(event) {
function stop (line 4364) | function stop(event) {
function _relatedTarget (line 4394) | function _relatedTarget(event) {
function _createResponder (line 4432) | function _createResponder(element, eventName, handler) {
function _destroyCache (line 4491) | function _destroyCache() {
function observe (line 4516) | function observe(element, eventName, handler) {
function stopObserving (line 4542) | function stopObserving(element, eventName, handler) {
function fire (line 4597) | function fire(element, eventName, memo, bubble) {
function fireContentLoadedEvent (line 4663) | function fireContentLoadedEvent() {
function checkReadyState (line 4670) | function checkReadyState() {
function pollDoScroll (line 4677) | function pollDoScroll() {
function iter (line 4807) | function iter(name) {
Condensed preview — 97 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (852K chars).
[
{
"path": ".gitignore",
"chars": 49,
"preview": "*.pyc\n*.DS_Store\n*~\ndjango_debug_toolbar.egg-info"
},
{
"path": "AUTHORS",
"chars": 1185,
"preview": "The Django Debug Toolbar was original created by Rob Hudson <rob@cogit8.org> in\nAugust 2008.\n\nThe following is a list of"
},
{
"path": "LICENSE",
"chars": 1542,
"preview": "Copyright (c) Rob Hudson and individual contributors.\nAll rights reserved.\n\nRedistribution and use in source and binary "
},
{
"path": "MANIFEST.in",
"chars": 135,
"preview": "include AUTHORS\ninclude LICENSE\ninclude README.rst\nrecursive-include debug_toolbar/media *\nrecursive-include debug_toolb"
},
{
"path": "NEWS",
"chars": 1258,
"preview": "News for django-debug-toolbar\n=============================\n\n0.8.5 (2011 Apr 25)\n-------------------\n\n* Ensure if we're "
},
{
"path": "README.rst",
"chars": 7240,
"preview": "====================\nDjango Debug Toolbar\n====================\n\nThe Django Debug Toolbar is a configurable set of panels"
},
{
"path": "debug_toolbar/__init__.py",
"chars": 62,
"preview": "VERSION = (0, 8, 5)\n__version__ = '.'.join(map(str, VERSION))\n"
},
{
"path": "debug_toolbar/locale/de/LC_MESSAGES/django.po",
"chars": 8577,
"preview": "# Django Debug Toolbar auf Deutsch.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under"
},
{
"path": "debug_toolbar/locale/en/LC_MESSAGES/django.po",
"chars": 7980,
"preview": "# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the PACKAGE pac"
},
{
"path": "debug_toolbar/locale/es/LC_MESSAGES/django.po",
"chars": 8634,
"preview": "# Django Debug Toolbar en Español.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under "
},
{
"path": "debug_toolbar/locale/fr/LC_MESSAGES/django.po",
"chars": 9416,
"preview": "# Django Debug Toolbar in French.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under t"
},
{
"path": "debug_toolbar/locale/he/LC_MESSAGES/django.po",
"chars": 8371,
"preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
},
{
"path": "debug_toolbar/locale/ru/LC_MESSAGES/django.po",
"chars": 8727,
"preview": "# Django Debug Toolbar in Russian.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under "
},
{
"path": "debug_toolbar/management/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "debug_toolbar/management/commands/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "debug_toolbar/management/commands/debugsqlshell.py",
"chars": 3043,
"preview": "import os\nfrom optparse import make_option\n\nfrom django.core.management.base import NoArgsCommand\nfrom django.db.backend"
},
{
"path": "debug_toolbar/media/debug_toolbar/Makefile",
"chars": 327,
"preview": "# Make file to compress and join all JS files\nall: compress_js compress_css\n\ncompress_js:\n\tjava -jar ~/bin/yuicompressor"
},
{
"path": "debug_toolbar/media/debug_toolbar/css/toolbar.css",
"chars": 21021,
"preview": "/* http://www.positioniseverything.net/easyclearing.html */\n.clearfix:after {\n content: \".\"; \n display: block; \n "
},
{
"path": "debug_toolbar/media/debug_toolbar/js/jquery.cookie.js",
"chars": 4246,
"preview": "/**\n * Cookie plugin\n *\n * Copyright (c) 2006 Klaus Hartl (stilbuero.de)\n * Dual licensed under the MIT and GPL licenses"
},
{
"path": "debug_toolbar/media/debug_toolbar/js/jquery.js",
"chars": 160711,
"preview": "/*!\n * jQuery JavaScript Library v1.4.1\n * http://jquery.com/\n *\n * Copyright 2010, John Resig\n * Dual licensed under th"
},
{
"path": "debug_toolbar/media/debug_toolbar/js/toolbar.js",
"chars": 6717,
"preview": "window.djdt = (function(window, document, jQuery) {\n\tjQuery.cookie = function(name, value, options) { if (typeof value !"
},
{
"path": "debug_toolbar/middleware.py",
"chars": 4965,
"preview": "\"\"\"\nDebug Toolbar middleware\n\"\"\"\nimport thread\n\nfrom django.conf import settings\nfrom django.http import HttpResponseRed"
},
{
"path": "debug_toolbar/models.py",
"chars": 0,
"preview": ""
},
{
"path": "debug_toolbar/panels/__init__.py",
"chars": 1172,
"preview": "\"\"\"Base DebugPanel class\"\"\"\n\nclass DebugPanel(object):\n \"\"\"\n Base class for debug panels.\n \"\"\"\n # name = Bas"
},
{
"path": "debug_toolbar/panels/cache.py",
"chars": 3230,
"preview": "import time\nimport inspect\n\nfrom django.core import cache\nfrom django.core.cache.backends.base import BaseCache\nfrom dja"
},
{
"path": "debug_toolbar/panels/headers.py",
"chars": 1399,
"preview": "from django.template.loader import render_to_string\nfrom django.utils.translation import ugettext_lazy as _\nfrom debug_t"
},
{
"path": "debug_toolbar/panels/logger.py",
"chars": 3851,
"preview": "import datetime\nimport logging\ntry:\n import threading\nexcept ImportError:\n threading = None\nfrom django.template.l"
},
{
"path": "debug_toolbar/panels/profiling.py",
"chars": 5318,
"preview": "from __future__ import division\n\nfrom django.template.loader import render_to_string\nfrom django.utils.translation impor"
},
{
"path": "debug_toolbar/panels/request_vars.py",
"chars": 1537,
"preview": "from django.template.loader import render_to_string\nfrom django.utils.translation import ugettext_lazy as _\nfrom debug_t"
},
{
"path": "debug_toolbar/panels/settings_vars.py",
"chars": 823,
"preview": "from django.conf import settings\nfrom django.template.loader import render_to_string\nfrom django.views.debug import get_"
},
{
"path": "debug_toolbar/panels/signals.py",
"chars": 2999,
"preview": "import sys\n\nfrom django.conf import settings\nfrom django.core.signals import request_started, request_finished, \\\n go"
},
{
"path": "debug_toolbar/panels/sql.py",
"chars": 8669,
"preview": "import re\nimport uuid\n\nfrom django.db.backends import BaseDatabaseWrapper\nfrom django.template.loader import render_to_s"
},
{
"path": "debug_toolbar/panels/template.py",
"chars": 5122,
"preview": "from os.path import normpath\nfrom pprint import pformat\n\nfrom django import http\nfrom django.conf import settings\nfrom d"
},
{
"path": "debug_toolbar/panels/timer.py",
"chars": 3364,
"preview": "try:\n import resource\nexcept ImportError:\n pass # Will fail on Win32 systems\nimport time\nfrom django.template.load"
},
{
"path": "debug_toolbar/panels/version.py",
"chars": 1657,
"preview": "import sys\n\nimport django\nfrom django.conf import settings\nfrom django.template.loader import render_to_string\nfrom djan"
},
{
"path": "debug_toolbar/runtests.py",
"chars": 1254,
"preview": "#!/usr/bin/env python\nimport sys\nfrom os.path import dirname, abspath\n\nfrom django.conf import settings\n\nif not settings"
},
{
"path": "debug_toolbar/templates/debug_toolbar/base.html",
"chars": 1660,
"preview": "{% load i18n %}\n<style type=\"text/css\">\n@media print { #djDebug {display:none;}}\n{{ css }}\n</style>\n<script type=\"text/j"
},
{
"path": "debug_toolbar/templates/debug_toolbar/panels/cache.html",
"chars": 1305,
"preview": "{% load i18n %}\n<table>\n\t<colgroup>\n\t\t<col width=\"12%\"/>\n\t\t<col width=\"12%\"/>\n\t\t<col width=\"12%\"/>\n\t\t<col width=\"12%\"/>\n"
},
{
"path": "debug_toolbar/templates/debug_toolbar/panels/headers.html",
"chars": 333,
"preview": "{% load i18n %}\n<table>\n\t<thead>\n\t\t<tr>\n\t\t\t<th>{% trans \"Key\" %}</th>\n\t\t\t<th>{% trans \"Value\" %}</th>\n\t\t</tr>\n\t</thead>\n"
},
{
"path": "debug_toolbar/templates/debug_toolbar/panels/logger.html",
"chars": 677,
"preview": "{% load i18n %}\n{% if records %}\n\t<table>\n\t\t<thead>\n\t\t\t<tr>\n\t\t\t\t<th>{% trans \"Level\" %}</th>\n\t\t\t\t<th>{% trans \"Time\" %}<"
},
{
"path": "debug_toolbar/templates/debug_toolbar/panels/profiling.html",
"chars": 1212,
"preview": "{% load i18n %}\n\n<table width=\"100%\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th>{% trans \"Call\" %}</th>\n\t\t\t<th>{% trans \"TotTime\" %}</th>\n\t"
},
{
"path": "debug_toolbar/templates/debug_toolbar/panels/request_vars.html",
"chars": 2418,
"preview": "{% load i18n %}\n\n<h4>{% trans 'View information' %}</h4>\n<table>\n\t<thead>\n\t\t<tr>\n\t\t\t<th>{% trans 'View Function' %}</th>"
},
{
"path": "debug_toolbar/templates/debug_toolbar/panels/settings_vars.html",
"chars": 348,
"preview": "{% load i18n %}\n<table>\n\t<thead>\n\t\t<tr>\n\t\t\t<th>{% trans \"Setting\" %}</th>\n\t\t\t<th>{% trans \"Value\" %}</th>\n\t\t</tr>\n\t</the"
},
{
"path": "debug_toolbar/templates/debug_toolbar/panels/signals.html",
"chars": 443,
"preview": "{% load i18n %}\n<table>\n\t<thead>\n\t\t<tr>\n\t\t\t<th>{% trans \"Signal\" %}</th>\n\t\t\t<th>{% trans 'Providing Args' %}</th>\n\t\t\t<th"
},
{
"path": "debug_toolbar/templates/debug_toolbar/panels/sql.html",
"chars": 4178,
"preview": "{% load i18n %}\n<div class=\"clearfix\">\n\t<ul class=\"stats\">\n\t\t{% for alias, info in databases %}\n\t\t\t<li>\n\t\t\t\t<strong clas"
},
{
"path": "debug_toolbar/templates/debug_toolbar/panels/sql_explain.html",
"chars": 754,
"preview": "{% load i18n %}\n<div class=\"djDebugPanelTitle\">\n\t<a class=\"djDebugClose djDebugBack\" href=\"\">{% trans \"Back\" %}</a>\n\t<h3"
},
{
"path": "debug_toolbar/templates/debug_toolbar/panels/sql_profile.html",
"chars": 904,
"preview": "{% load i18n %}\n<div class=\"djDebugPanelTitle\">\n\t<a class=\"djDebugClose djDebugBack\" href=\"\">{% trans \"Back\" %}</a>\n\t<h3"
},
{
"path": "debug_toolbar/templates/debug_toolbar/panels/sql_select.html",
"chars": 831,
"preview": "{% load i18n %}\n<div class=\"djDebugPanelTitle\">\n\t<a class=\"djDebugClose djDebugBack\" href=\"\">{% trans \"Back\" %}</a>\n\t<h3"
},
{
"path": "debug_toolbar/templates/debug_toolbar/panels/template_source.html",
"chars": 374,
"preview": "{% load i18n %}\n<div class=\"djDebugPanelTitle\">\n\t<a class=\"djDebugClose djDebugBack\" href=\"\">{% trans \"Back\" %}</a>\n\t<h3"
},
{
"path": "debug_toolbar/templates/debug_toolbar/panels/templates.html",
"chars": 1539,
"preview": "{% load i18n %}\n<h4>{% trans 'Template path' %}{{ template_dirs|length|pluralize }}</h4>\n{% if template_dirs %}\n\t<ol>\n\t{"
},
{
"path": "debug_toolbar/templates/debug_toolbar/panels/timer.html",
"chars": 386,
"preview": "{% load i18n %}\n<table>\n\t<colgroup>\n\t\t<col style=\"width:20%\"/>\n\t\t<col/>\n\t</colgroup>\n\t<thead>\n\t\t<tr>\n\t\t\t<th>{% trans \"Re"
},
{
"path": "debug_toolbar/templates/debug_toolbar/panels/versions.html",
"chars": 339,
"preview": "{% load i18n %}\n\n<table>\n\t<thead>\n\t\t<tr>\n\t\t\t<th>{% trans \"Package\" %}</th>\n\t\t\t<th>{% trans \"Version\" %}</th>\n\t\t</tr>\n\t</"
},
{
"path": "debug_toolbar/templates/debug_toolbar/redirect.html",
"chars": 534,
"preview": "{% load i18n %}\n<html>\n<head>\n</head>\n<body>\n<h1>HttpResponseRedirect</h1>\n<p>{% trans 'Location' %}: <a href=\"{{ redire"
},
{
"path": "debug_toolbar/tests/__init__.py",
"chars": 19,
"preview": "from tests import *"
},
{
"path": "debug_toolbar/tests/templates/404.html",
"chars": 0,
"preview": ""
},
{
"path": "debug_toolbar/tests/tests.py",
"chars": 6281,
"preview": "from debug_toolbar.middleware import DebugToolbarMiddleware\nfrom debug_toolbar.panels.sql import SQLDebugPanel\nfrom debu"
},
{
"path": "debug_toolbar/tests/urls.py",
"chars": 357,
"preview": "\"\"\"\nURLpatterns for the debug toolbar. \n\nThese should not be loaded explicitly; the debug toolbar middleware will patch\n"
},
{
"path": "debug_toolbar/tests/views.py",
"chars": 167,
"preview": "from django.contrib.auth.models import User\nfrom django.http import HttpResponse\n\ndef execute_sql(request):\n list(Use"
},
{
"path": "debug_toolbar/toolbar/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "debug_toolbar/toolbar/loader.py",
"chars": 3856,
"preview": "\"\"\"\nThe main DebugToolbar class that loads and renders the Toolbar.\n\"\"\"\nimport os.path, os\n\nfrom django.conf import sett"
},
{
"path": "debug_toolbar/urls.py",
"chars": 752,
"preview": "\"\"\"\nURLpatterns for the debug toolbar. \n\nThese should not be loaded explicitly; the debug toolbar middleware will patch\n"
},
{
"path": "debug_toolbar/utils/__init__.py",
"chars": 2075,
"preview": "import os.path\nimport django\nimport SocketServer\n\nfrom django.conf import settings\nfrom django.views.debug import linebr"
},
{
"path": "debug_toolbar/utils/compat/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "debug_toolbar/utils/compat/db.py",
"chars": 337,
"preview": "from django.conf import settings\ntry:\n from django.db import connections\n dbconf = settings.DATABASES\nexcept Impor"
},
{
"path": "debug_toolbar/utils/sqlparse/__init__.py",
"chars": 1470,
"preview": "# Copyright (C) 2008 Andi Albrecht, albrecht.andi@gmail.com\n#\n# This module is part of python-sqlparse and is released u"
},
{
"path": "debug_toolbar/utils/sqlparse/engine/__init__.py",
"chars": 2339,
"preview": "# Copyright (C) 2008 Andi Albrecht, albrecht.andi@gmail.com\n#\n# This module is part of python-sqlparse and is released u"
},
{
"path": "debug_toolbar/utils/sqlparse/engine/filter.py",
"chars": 2811,
"preview": "# -*- coding: utf-8 -*-\n\nfrom debug_toolbar.utils.sqlparse import tokens as T\nfrom debug_toolbar.utils.sqlparse.engine.g"
},
{
"path": "debug_toolbar/utils/sqlparse/engine/grouping.py",
"chars": 9589,
"preview": "# -*- coding: utf-8 -*-\n\nimport itertools\nimport re\nimport types\n\nfrom debug_toolbar.utils.sqlparse import tokens as T\nf"
},
{
"path": "debug_toolbar/utils/sqlparse/filters.py",
"chars": 15354,
"preview": "# -*- coding: utf-8 -*-\n\nimport re\n\nfrom debug_toolbar.utils.sqlparse.engine import grouping\nfrom debug_toolbar.utils.sq"
},
{
"path": "debug_toolbar/utils/sqlparse/formatter.py",
"chars": 4311,
"preview": "# Copyright (C) 2008 Andi Albrecht, albrecht.andi@gmail.com\n#\n# This module is part of python-sqlparse and is released u"
},
{
"path": "debug_toolbar/utils/sqlparse/keywords.py",
"chars": 13725,
"preview": "from debug_toolbar.utils.sqlparse.tokens import *\n\nKEYWORDS = {\n 'ABORT': Keyword,\n 'ABS': Keyword,\n 'ABSOLUTE'"
},
{
"path": "debug_toolbar/utils/sqlparse/lexer.py",
"chars": 11465,
"preview": "# -*- coding: utf-8 -*-\n\n# Copyright (C) 2008 Andi Albrecht, albrecht.andi@gmail.com\n#\n# This module is part of python-s"
},
{
"path": "debug_toolbar/utils/sqlparse/sql.py",
"chars": 14598,
"preview": "# -*- coding: utf-8 -*-\n\n\"\"\"This module contains classes representing syntactical elements of SQL.\"\"\"\n\nimport re\nimport "
},
{
"path": "debug_toolbar/utils/sqlparse/tokens.py",
"chars": 3117,
"preview": "# Copyright (C) 2008 Andi Albrecht, albrecht.andi@gmail.com\n#\n# This module is part of python-sqlparse and is released u"
},
{
"path": "debug_toolbar/utils/tracking/__init__.py",
"chars": 2707,
"preview": "import logging\nimport time\nimport types\n\ndef post_dispatch(func):\n def wrapped(callback):\n register_hook(func,"
},
{
"path": "debug_toolbar/utils/tracking/db.py",
"chars": 3821,
"preview": "import sys\nimport traceback\n\nfrom datetime import datetime\n\nfrom django.conf import settings\nfrom django.template import"
},
{
"path": "debug_toolbar/views.py",
"chars": 7918,
"preview": "\"\"\"\nHelper views for the debug toolbar. These are dynamically installed when the\ndebug toolbar is displayed, and typical"
},
{
"path": "example/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "example/manage.py",
"chars": 546,
"preview": "#!/usr/bin/env python\nfrom django.core.management import execute_manager\ntry:\n import settings # Assumed to be in the"
},
{
"path": "example/media/js/jquery.js",
"chars": 100162,
"preview": "(function(){\n/*\n * jQuery 1.2.6 - New Wave Javascript\n *\n * Copyright (c) 2008 John Resig (jquery.com)\n * Dual licensed "
},
{
"path": "example/media/js/mootools.js",
"chars": 102991,
"preview": "/*\n---\n\nscript: Core.js\n\ndescription: The core of MooTools, contains all the base functions and the Native and Hash impl"
},
{
"path": "example/media/js/prototype.js",
"chars": 139854,
"preview": "/* Prototype JavaScript framework, version 1.6.1\n * (c) 2005-2009 Sam Stephenson\n *\n * Prototype is freely distributa"
},
{
"path": "example/settings.py",
"chars": 1689,
"preview": "import os\nPROJECT_PATH = os.path.realpath(os.path.dirname(__file__))\n\nADMIN_MEDIA_PREFIX = '/admin_media/'\nDATABASE_ENGI"
},
{
"path": "example/templates/admin/login.html",
"chars": 1161,
"preview": "{% extends \"admin/base_site.html\" %}\n{% load i18n %}\n\n{% block extrastyle %}{% load adminmedia %}{{ block.super }}<link "
},
{
"path": "example/templates/index.html",
"chars": 354,
"preview": "<html>\n<head>\n\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t<title>Index of Tests</title>\n</head"
},
{
"path": "example/templates/jquery/index.html",
"chars": 543,
"preview": "<html>\n<head>\n\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t<title>Old jQuery Test</title>\n\t<sty"
},
{
"path": "example/templates/mootools/index.html",
"chars": 503,
"preview": "<html>\n<head>\n\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t<title>MooTools Test</title>\n\t<style"
},
{
"path": "example/templates/prototype/index.html",
"chars": 517,
"preview": "<html>\n<head>\n\t<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\t<title>Prototype Test</title>\n\t<styl"
},
{
"path": "example/urls.py",
"chars": 729,
"preview": "from django.conf import settings\nfrom django.conf.urls.defaults import *\nfrom django.contrib import admin\nfrom django.vi"
},
{
"path": "setup.cfg",
"chars": 36,
"preview": "[egg_info]\ntag_svn_revision = false\n"
},
{
"path": "setup.py",
"chars": 1290,
"preview": "from setuptools import setup, find_packages\n\nsetup(\n name='django-debug-toolbar',\n version=__import__('debug_toolb"
}
]
// ... and 6 more files (download for full content)
About this extraction
This page contains the full source code of the dcramer/django-debug-toolbar GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 97 files (762.0 KB), approximately 211.8k tokens, and a symbol index with 573 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.