From bc8691de49618a41fc57f54420a921b1c8a7c4ff Mon Sep 17 00:00:00 2001 From: Rob Hudson Date: Sun, 22 Mar 2009 23:37:38 -0700 Subject: Close the panel if the toolbar is hiding. --- debug_toolbar/media/toolbar.js | 1 + 1 file changed, 1 insertion(+) (limited to 'debug_toolbar') diff --git a/debug_toolbar/media/toolbar.js b/debug_toolbar/media/toolbar.js index c69a917..3ada44a 100644 --- a/debug_toolbar/media/toolbar.js +++ b/debug_toolbar/media/toolbar.js @@ -78,6 +78,7 @@ jQuery(function() { }, hide_toolbar: function(setCookie) { $j('#djDebugToolbar').hide("fast"); + $j(document).trigger('close.djDebug'); $j('#djDebugToolbarHandle').show(); if (setCookie) { $j.cookie(COOKIE_NAME, 'hide', { -- cgit v1.2.3 From ea1f9430ddb58f28b50cc702f9eb2612f19e308d Mon Sep 17 00:00:00 2001 From: Rob Hudson Date: Sun, 22 Mar 2009 23:41:15 -0700 Subject: Add fix so jQuery doesn't conflict with other Javascript libraries. I think I finally got this one working. The saving of the temporary variable has to happen *before* jQuery loads, or else jQuery has already stomped on the '$' variable that another library might have used. This patch moves the temporary saving of this variable the HTML template so it tucks it aside before jQuery loads and puts it back after we're done. Tested and works with jQuery, mootools, and prototype.--- debug_toolbar/media/toolbar.js | 7 ++----- debug_toolbar/media/toolbar.min.js | 2 +- debug_toolbar/templates/debug_toolbar/base.html | 7 +++++++ 3 files changed, 10 insertions(+), 6 deletions(-) (limited to 'debug_toolbar') diff --git a/debug_toolbar/media/toolbar.js b/debug_toolbar/media/toolbar.js index 3ada44a..40e1a58 100644 --- a/debug_toolbar/media/toolbar.js +++ b/debug_toolbar/media/toolbar.js @@ -1,6 +1,5 @@ -var _$ = window.$; -$j = jQuery.noConflict(); -jQuery(function() { +jQuery.noConflict(); +jQuery(function($j) { var COOKIE_NAME = 'dj_debug_panel'; $j.djDebug = function(data, klass) { $j.djDebug.init(); @@ -104,5 +103,3 @@ jQuery(function() { jQuery(function() { jQuery.djDebug(); }); -$ = _$; - diff --git a/debug_toolbar/media/toolbar.min.js b/debug_toolbar/media/toolbar.min.js index 4c967f8..7f8658f 100644 --- a/debug_toolbar/media/toolbar.min.js +++ b/debug_toolbar/media/toolbar.min.js @@ -1 +1 @@ -var _$=window.$;$j=jQuery.noConflict();jQuery(function(){var a="dj_debug_panel";$j.djDebug=function(c,b){$j.djDebug.init()};$j.extend($j.djDebug,{init:function(){var b=null;$j("#djDebugPanelList li a").click(function(){if(!this.className){return false}b=$j("#djDebug #"+this.className);if(b.is(":visible")){$j(document).trigger("close.djDebug")}else{$j(".panelContent").hide();b.show();$j.djDebug.open()}return false});$j("#djDebug a.close").click(function(){$j(document).trigger("close.djDebug");return false});$j("#djDebug a.remoteCall").click(function(){$j("#djDebugWindow").load(this.href,{},function(){$j("#djDebugWindow a.back").click(function(){$j(this).parent().hide();return false})});$j("#djDebugWindow").show();return false});$j("#djDebugTemplatePanel a.djTemplateShowContext").click(function(){$j.djDebug.toggle_content($j(this).parent().next());return false});$j("#djDebugSQLPanel a.djSQLShowStacktrace").click(function(){$j.djDebug.toggle_content($j(this).parent().next());return false});$j("#djHideToolBarButton").click(function(){$j.djDebug.hide_toolbar(true);return false});$j("#djShowToolBarButton").click(function(){$j.djDebug.show_toolbar();return false});if($j.cookie(a)){$j.djDebug.hide_toolbar(false)}else{$j("#djDebugToolbar").show()}},open:function(){$j(document).bind("keydown.djDebug",function(b){if(b.keyCode==27){$j.djDebug.close()}})},toggle_content:function(b){if(b.is(":visible")){b.hide()}else{b.show()}},close:function(){$j(document).trigger("close.djDebug");return false},hide_toolbar:function(b){$j("#djDebugToolbar").hide("fast");$j("#djDebugToolbarHandle").show();if(b){$j.cookie(a,"hide",{path:"/",expires:10})}},show_toolbar:function(){$j("#djDebugToolbarHandle").hide();$j("#djDebugToolbar").show("fast");$j.cookie(a,null,{path:"/",expires:-1})}});$j(document).bind("close.djDebug",function(){$j(document).unbind("keydown.djDebug");$j(".panelContent").hide()})});jQuery(function(){jQuery.djDebug()});$=_$;jQuery.cookie=function(b,j,m){if(typeof j!="undefined"){m=m||{};if(j===null){j="";m.expires=-1}var e="";if(m.expires&&(typeof m.expires=="number"||m.expires.toUTCString)){var f;if(typeof m.expires=="number"){f=new Date();f.setTime(f.getTime()+(m.expires*24*60*60*1000))}else{f=m.expires}e="; expires="+f.toUTCString()}var l=m.path?"; path="+(m.path):"";var g=m.domain?"; domain="+(m.domain):"";var a=m.secure?"; secure":"";document.cookie=[b,"=",encodeURIComponent(j),e,l,g,a].join("")}else{var d=null;if(document.cookie&&document.cookie!=""){var k=document.cookie.split(";");for(var h=0;h + // When jQuery is sourced, it's going to overwrite whatever might be in the + // '$' variable, so store a reference of it in a temporary variable... + var _$ = window.$; if (typeof jQuery == 'undefined') { var jquery_url = '{{ BASE_URL }}/__debug__/m/jquery.js'; document.write(unescape('%3Cscript src="' + jquery_url + '" type="text/javascript"%3E%3C/script%3E')); } + -- cgit v1.2.3 From dedf8a9633abdb4f0e9a39ff80d32df62b0da4d8 Mon Sep 17 00:00:00 2001 From: Rob Hudson Date: Thu, 26 Mar 2009 07:27:17 -0700 Subject: Minor cleanup of imports and long lines. --- debug_toolbar/middleware.py | 11 +++++++---- debug_toolbar/urls.py | 12 ++++++------ 2 files changed, 13 insertions(+), 10 deletions(-) (limited to 'debug_toolbar') diff --git a/debug_toolbar/middleware.py b/debug_toolbar/middleware.py index 9c46079..b10ced2 100644 --- a/debug_toolbar/middleware.py +++ b/debug_toolbar/middleware.py @@ -1,15 +1,16 @@ """ Debug Toolbar middleware """ +import os + from django.conf import settings from django.http import HttpResponseRedirect from django.shortcuts import render_to_response from django.utils.encoding import smart_unicode from django.conf.urls.defaults import include, patterns + import debug_toolbar.urls from debug_toolbar.toolbar.loader import DebugToolbar -from debug_toolbar.urls import DEBUG_TB_URL_PREFIX -import os _HTML_TYPES = ('text/html', 'application/xhtml+xml') @@ -39,8 +40,10 @@ class DebugToolbarMiddleware(object): def show_toolbar(self, request): if not settings.DEBUG: return False - if request.is_ajax() and not request.path.startswith(os.path.join('/', DEBUG_TB_URL_PREFIX)): #Allow ajax requests from the debug toolbar - return False + if request.is_ajax() and not \ + request.path.startswith(os.path.join('/', debug_toolbar.urls._PREFIX)): + # Allow ajax requests from the debug toolbar + return False if not request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS: return False return True diff --git a/debug_toolbar/urls.py b/debug_toolbar/urls.py index 05233e2..77491e3 100644 --- a/debug_toolbar/urls.py +++ b/debug_toolbar/urls.py @@ -7,12 +7,12 @@ this into the urlconf for the request. from django.conf.urls.defaults import * from django.conf import settings -DEBUG_TB_URL_PREFIX = '__debug__' +_PREFIX = '__debug__' urlpatterns = patterns('', - url(r'^%s/m/(.*)$' % DEBUG_TB_URL_PREFIX, 'debug_toolbar.views.debug_media'), - url(r'^%s/sql_select/$' % DEBUG_TB_URL_PREFIX, 'debug_toolbar.views.sql_select', name='sql_select'), - url(r'^%s/sql_explain/$' % DEBUG_TB_URL_PREFIX, 'debug_toolbar.views.sql_explain', name='sql_explain'), - url(r'^%s/sql_profile/$' % DEBUG_TB_URL_PREFIX, 'debug_toolbar.views.sql_profile', name='sql_profile'), - url(r'^%s/template_source/$' % DEBUG_TB_URL_PREFIX, 'debug_toolbar.views.template_source', name='template_source'), + url(r'^%s/m/(.*)$' % _PREFIX, 'debug_toolbar.views.debug_media'), + url(r'^%s/sql_select/$' % _PREFIX, 'debug_toolbar.views.sql_select', name='sql_select'), + url(r'^%s/sql_explain/$' % _PREFIX, 'debug_toolbar.views.sql_explain', name='sql_explain'), + url(r'^%s/sql_profile/$' % _PREFIX, 'debug_toolbar.views.sql_profile', name='sql_profile'), + url(r'^%s/template_source/$' % _PREFIX, 'debug_toolbar.views.template_source', name='template_source'), ) -- cgit v1.2.3 From b9b0cbe718c6a1736af1fa86452ffc4af28b64f4 Mon Sep 17 00:00:00 2001 From: Rob Hudson Date: Thu, 26 Mar 2009 07:29:26 -0700 Subject: New configuration option to provide your own 'show_toolbar' method. This change allows a custom method to be used in place of the default 'show_toolbar' method on whether the toolbar should be displayed.--- debug_toolbar/middleware.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'debug_toolbar') diff --git a/debug_toolbar/middleware.py b/debug_toolbar/middleware.py index b10ced2..e4d7494 100644 --- a/debug_toolbar/middleware.py +++ b/debug_toolbar/middleware.py @@ -37,7 +37,15 @@ class DebugToolbarMiddleware(object): self.original_pattern = patterns('', ('', include(self.original_urlconf)),) self.override_url = True - def show_toolbar(self, request): + # Set method to use to decide to show toolbar + self.show_toolbar = self._show_toolbar # default + if hasattr(settings, 'DEBUG_TOOLBAR_CONFIG'): + show_toolbar_callback = settings.DEBUG_TOOLBAR_CONFIG.get( + 'SHOW_TOOLBAR_CALLBACK', None) + if show_toolbar_callback: + self.show_toolbar = show_toolbar_callback + + def _show_toolbar(self, request): if not settings.DEBUG: return False if request.is_ajax() and not \ -- cgit v1.2.3