Jump to content

Debughelper Firefox Add-on: Difference between revisions

From NusaATK
No edit summary
No edit summary
Line 1: Line 1:
= Local ATK changes =
= Introduction =
Change the following functions in <code>atk/class.atkconfig.inc</code> (it's not yet committed in ATK, so make this local change in your own project)
In my latest ATK project, I needed to switch quite often between debuglevel 1 and 2: in some cases I wanted to see the intermediate-screens after updating a record, but not everytime.
 
To do this, we have 2 options:
# change $config_debug value in your config.inc.php, or
# add debug-key and -level to your URL if smart-debugging is enabled.
If you use the second option in ATK applications, you'll end up at the indexpage after confirming the URL..
 
But now there's option 3 :) I created a firefox plugin to switch between debuglevels by just clicking the atkdebughelper-icon.
 
= Using the ATK debughelper =
== Howto ==
First of all, you need the '''latest ATK version''', which contains some additional checking for debug-keys and levels. If you don't have the latest version, or do not want to update (existing/old projects), you can make a local change yourself (see "Local ATK changes" below).
 
Then:<br />
1. Make sure you enabled smart debugging in your project's config.inc.php (replace 'yourdebugkey' by your specific project-key):
$config_smart_debug[] = array("type"=>"request", "key"=>"yourdebugkey");
 
2. Add the domain name and key for your sites in the 'Site debug keys' (ATK debughelper preferences) to automatically enable debugging for that site
e.g. URL 1: http://www.achievo.org  KEY 1: yourdebugkey
 
3. Press the ATK debughelper icon to change the debuglevel.
 
== Troubleshooting ==
Clicking icon doesn't change application's debuglevel:
* Is smart debugging enabled in your <code>config.inc.php</code>?
* Did you set the domain-name and debug-key correctly in the 'Site debug keys' above?
* Do NOT use atkdebug[key] and atkdebug[level] in your URL, they overrule the ATK debughelper.
* Is your <code>atk/class.atkconfig.inc</code> up to date?
* Check if <code>ATKDEBUG_LEVEL</code> and <code>ATKDEBUG_KEY</code> cookies are present.
== Tricks ==
If you don't want to add the debug url/keys to the ATK debughelper-settings, you can also enable debugging the old way by adding <code>&atkdebug[key]=yourdebugkey</code> to the URL. After this, you can switch the debuglevel by pressing the icon.
 
== Local ATK changes ==
Changes in <code>atk/class.atkconfig.inc</code> needed for this plugin to work (already present in latest ATK version in SVN).


     function requestDebugEnabled($params)
     function requestDebugEnabled($params)
Line 50: Line 84:
     }
     }


= more info coming soon =
= Developers =
== Howto implement your feature ==
I'm sure there will be some feature requests. You can send them to me: jeroenvs@ibuildings.nl, or you can implement them yourself.
* Location in SVN: http://svn.ibuildings.nl/ibuildings/jeroenvs/atkdebughelper
* Make your changes
* Raise the 'em:version' in /install.rdf
* Add some info in /changelog.txt
* Create a new .xpi file:
** Select all extension files (EXCEPT the .xpi-file) and dirs in the root: changelog.txt, chrome/, chrome.manifest, defaults/ and install.rdf
** Zip them
** Change the extension to .xpi (make sure it's not a .zip-file anymore)
** Overwrite the one in the root
* And commit it!
 
== Useful info ==
Some useful sites for developers:
* http://developer.mozilla.org/En/Developing_add-ons
* http://developer.mozilla.org/en/Extensions

Revision as of 15:54, 17 June 2009

Introduction

In my latest ATK project, I needed to switch quite often between debuglevel 1 and 2: in some cases I wanted to see the intermediate-screens after updating a record, but not everytime.

To do this, we have 2 options:

  1. change $config_debug value in your config.inc.php, or
  2. add debug-key and -level to your URL if smart-debugging is enabled.

If you use the second option in ATK applications, you'll end up at the indexpage after confirming the URL..

But now there's option 3 :) I created a firefox plugin to switch between debuglevels by just clicking the atkdebughelper-icon.

Using the ATK debughelper

Howto

First of all, you need the latest ATK version, which contains some additional checking for debug-keys and levels. If you don't have the latest version, or do not want to update (existing/old projects), you can make a local change yourself (see "Local ATK changes" below).

Then:
1. Make sure you enabled smart debugging in your project's config.inc.php (replace 'yourdebugkey' by your specific project-key):

$config_smart_debug[] = array("type"=>"request", "key"=>"yourdebugkey");

2. Add the domain name and key for your sites in the 'Site debug keys' (ATK debughelper preferences) to automatically enable debugging for that site

e.g. URL 1: http://www.achievo.org  KEY 1: yourdebugkey

3. Press the ATK debughelper icon to change the debuglevel.

Troubleshooting

Clicking icon doesn't change application's debuglevel:

  • Is smart debugging enabled in your config.inc.php?
  • Did you set the domain-name and debug-key correctly in the 'Site debug keys' above?
  • Do NOT use atkdebug[key] and atkdebug[level] in your URL, they overrule the ATK debughelper.
  • Is your atk/class.atkconfig.inc up to date?
  • Check if ATKDEBUG_LEVEL and ATKDEBUG_KEY cookies are present.

Tricks

If you don't want to add the debug url/keys to the ATK debughelper-settings, you can also enable debugging the old way by adding &atkdebug[key]=yourdebugkey to the URL. After this, you can switch the debuglevel by pressing the icon.

Local ATK changes

Changes in atk/class.atkconfig.inc needed for this plugin to work (already present in latest ATK version in SVN).

   function requestDebugEnabled($params)
   {
     $session = &atkSessionManager::getSession();

     if (isset($_REQUEST["atkdebug"]["key"]))
     {
       $session["debug"]["key"] = $_REQUEST["atkdebug"]["key"];
     }
     else if (isset($_COOKIE['ATKDEBUG_KEY']) && !empty($_COOKIE['ATKDEBUG_KEY']))
     {
       $session["debug"]["key"] = $_COOKIE['ATKDEBUG_KEY'];
     }
     
     return (isset($session["debug"]["key"]) && $session["debug"]["key"] == $params["key"]);
   }
   function smartDebugLevel($default, $options=array())
   {
     $session = &atkSessionManager::getSession();

     $enabled = $default > 0;

     foreach ($options as $option)
     {
       $method = $option["type"]."DebugEnabled";
       if (is_callable(array("atkconfig", $method)))
         $enabled = $enabled || atkconfig::$method($option);
     }

     if ($enabled)
     {
       if (isset($_REQUEST["atkdebug"]["level"]))
       {
         $session["debug"]["level"] = $_REQUEST["atkdebug"]["level"];
       }
       else if (isset($_COOKIE['ATKDEBUG_LEVEL']))
       {
         $session["debug"]["level"] = $_COOKIE['ATKDEBUG_LEVEL'];
       }
       
       if (isset($session["debug"]["level"]))
         return $session["debug"]["level"];
       else return max($default, 1);
     }

     return $default;
   }

Developers

Howto implement your feature

I'm sure there will be some feature requests. You can send them to me: jeroenvs@ibuildings.nl, or you can implement them yourself.

  • Location in SVN: http://svn.ibuildings.nl/ibuildings/jeroenvs/atkdebughelper
  • Make your changes
  • Raise the 'em:version' in /install.rdf
  • Add some info in /changelog.txt
  • Create a new .xpi file:
    • Select all extension files (EXCEPT the .xpi-file) and dirs in the root: changelog.txt, chrome/, chrome.manifest, defaults/ and install.rdf
    • Zip them
    • Change the extension to .xpi (make sure it's not a .zip-file anymore)
    • Overwrite the one in the root
  • And commit it!

Useful info

Some useful sites for developers: