public function listHooks($dir, $root = NULL, $hash = null, $returnNodes = false)
 {
     $jsonContent = json_decode(file_get_contents(AJXP_Utils::getHooksFile()), true);
     $config = '<columns switchDisplayMode="full" template_name="hooks.list">
             <column messageId="ajxp_conf.17" attributeName="ajxp_label" sortType="String" defaultWidth="20%"/>
             <column messageId="ajxp_conf.18" attributeName="description" sortType="String" defaultWidth="20%"/>
             <column messageId="ajxp_conf.19" attributeName="triggers" sortType="String" defaultWidth="25%"/>
             <column messageId="ajxp_conf.20" attributeName="listeners" sortType="String" defaultWidth="25%"/>
             <column messageId="ajxp_conf.21" attributeName="sample" sortType="String" defaultWidth="10%"/>
         </columns>';
     if (!$returnNodes) {
         AJXP_XMLWriter::sendFilesListComponentConfig($config);
     }
     $allNodes = array();
     foreach ($jsonContent as $hookName => $hookData) {
         $metadata = array("icon" => "preferences_plugin.png", "description" => $hookData["DESCRIPTION"], "sample" => $hookData["PARAMETER_SAMPLE"]);
         $trigs = array();
         foreach ($hookData["TRIGGERS"] as $trigger) {
             $trigs[] = "<span>" . $trigger["FILE"] . " (" . $trigger["LINE"] . ")</span>";
         }
         $metadata["triggers"] = implode("<br/>", $trigs);
         $listeners = array();
         foreach ($hookData["LISTENERS"] as $listener) {
             $listeners[] = "<span>Plugin " . $listener["PLUGIN_ID"] . ", in method " . $listener["METHOD"] . "</span>";
         }
         $metadata["listeners"] = implode("<br/>", $listeners);
         $nodeKey = "/{$root}/hooks/{$hookName}/{$hookName}";
         if (in_array($nodeKey, $this->currentBookmarks)) {
             $metadata = array_merge($metadata, array("ajxp_bookmarked" => "true", "overlay_icon" => "bookmark.png"));
         }
         $xml = AJXP_XMLWriter::renderNode($nodeKey, $hookName, true, $metadata, true, false);
         if ($returnNodes) {
             $allNodes[$nodeKey] = $xml;
         } else {
             print $xml;
         }
     }
     return $allNodes;
 }