home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2005 August / PCpro_2005_08.ISO / files / firefox / ScrapBook.xpi / chrome / scrapbook.jar / content / output.js < prev    next >
Encoding:
JavaScript  |  2005-06-04  |  6.9 KB  |  233 lines

  1. /**************************************************
  2. // output.js
  3. // Implementation file for output.xul
  4. // 
  5. // Description: 
  6. // Author: Gomita
  7. // Contributors: 
  8. // 
  9. // Version: 
  10. // License: see LICENSE.txt
  11. **************************************************/
  12.  
  13.  
  14.  
  15. var SBstring;
  16. var gSelectAll;
  17. var gFrameOption;
  18.  
  19.  
  20.  
  21. function SB_initOutput()
  22. {
  23.     SBstring = document.getElementById("ScrapBookString");
  24.     document.documentElement.getButton("accept").label = SBstring.getString("OUTPUT_OK_BUTTON");
  25.     SBRDF.init();
  26.     SBtreeUtil.init("ScrapBookTree", true);
  27.     SB_selectAllFolders();
  28. }
  29.  
  30.  
  31. function SB_selectAllFolders()
  32. {
  33.     if ( document.getElementById('ScrapBookOutputOptionA').checked )
  34.     {
  35.         SBtreeUtil.toggleAllFolders(true);
  36.         SBtree.view.selection.selectAll();
  37.         SBtree.treeBoxObject.focused = true;
  38.     }
  39.     gSelectAll = true;
  40. }
  41.  
  42.  
  43. function SB_toggleAllSelection()
  44. {
  45.     document.getElementById("ScrapBookOutputOptionA").checked = false;
  46.     gSelectAll = false;
  47. }
  48.  
  49.  
  50. function SB_execOutput()
  51. {
  52.     gFrameOption = document.getElementById("ScrapBookOutputOptionF").checked;
  53.  
  54.     SBexport.init();
  55.     if ( gSelectAll )
  56.     {
  57.         SBexport.processRDFRescursively(SBservice.RDF.GetResource("urn:scrapbook:root"));
  58.     }
  59.     else
  60.     {
  61.         var selResList = SBtreeUtil.getSelection(true, 1);
  62.         SBexport.src += "<ul>\n";
  63.         for ( var i = 0; i < selResList.length; i++ )
  64.         {
  65.             SBexport.exec(selResList[i]);
  66.         }
  67.         SBexport.src += "</ul>\n";
  68.     }
  69.     SBexport.finalize();
  70.     SBtreeUtil.toggleAllFolders(true);
  71. }
  72.  
  73.  
  74.  
  75.  
  76. var SBexport = {
  77.  
  78.     depth : 0,
  79.     src   : "",
  80.  
  81.     init : function()
  82.     {
  83.         this.src = this.getHTMLHead();
  84.     },
  85.  
  86.  
  87.     finalize : function()
  88.     {
  89.         var myDir = SBcommon.getScrapBookDir().clone();
  90.         myDir.append("tree");
  91.         if ( !myDir.exists() ) myDir.create(myDir.DIRECTORY_TYPE, 0700);
  92.  
  93.         var myArray = {
  94.             "chrome://scrapbook/skin/treestyle.css"  : "treestyle.css",
  95.             "chrome://scrapbook/skin/treeitem.png"   : "treeitem.png",
  96.             "chrome://scrapbook/skin/treenote.png"   : "treenote.png",
  97.             "chrome://scrapbook/skin/treefolder.png" : "treefolder.png",
  98.             "chrome://scrapbook/skin/tool_togglefolder.png" : "togglefolder.png",
  99.         };
  100.         for ( var target in myArray )
  101.         {
  102.             var targetFile = myDir.clone();
  103.             targetFile.append(myArray[target]);
  104.             SBcommon.saveTemplateFile(target, targetFile);
  105.         }
  106.  
  107.         var myFrameFile = myDir.clone();
  108.         myFrameFile.append("frame.html");
  109.         if ( !myFrameFile.exists() ) myFrameFile.create(myFrameFile.NORMAL_FILE_TYPE, 0666);
  110.         SBcommon.writeFile(myFrameFile, this.getHTMLFrame(), "UTF-8");
  111.  
  112.         var myFile = myDir.clone();
  113.         myFile.append("index.html");
  114.         if ( !myFile.exists() ) myFile.create(myFile.NORMAL_FILE_TYPE, 0666);
  115.         this.src += this.getHTMLFoot();
  116.         SBcommon.writeFile(myFile, this.src, "UTF-8");
  117.  
  118.         var fileName = gFrameOption ? "frame.html" : "index.html";
  119.         if ( document.getElementById("ScrapBookOutputOptionO").checked )
  120.         {
  121.             SBcommon.loadURL(SBcommon.convertFilePathToURL(myDir.path) + fileName, SBcommon.getBoolPref("scrapbook.usetab.export", false));
  122.         }
  123.     },
  124.  
  125.  
  126.     exec : function(aContRes)
  127.     {
  128.         this.src += '<li class="depth' + String(this.depth) + '">';
  129.         this.src += this.getHTMLBody(aContRes);
  130.         this.processRDFRescursively(aContRes);
  131.         this.src += "</li>\n";
  132.     },
  133.  
  134.  
  135.     processRDFRescursively : function(aContRes)
  136.     {
  137.         this.depth++;
  138.         var myID = SBRDF.getProperty("id", aContRes);
  139.         if ( !myID ) myID = "root";
  140.         this.src += '<ul id="folder-' + myID + '">\n';
  141.         SBservice.RDFC.Init(SBRDF.data, aContRes);
  142.         var ResList = SBservice.RDFC.GetElements();
  143.         while ( ResList.hasMoreElements() )
  144.         {
  145.             var aRes = ResList.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
  146.             this.src += '<li class="depth' + String(this.depth) + '">';
  147.             this.src += this.getHTMLBody(aRes);
  148.             if ( SBservice.RDFCU.IsContainer(SBRDF.data, aRes) ) this.processRDFRescursively(aRes);
  149.             this.src += "</li>\n";
  150.         }
  151.         this.src += "</ul>\n";
  152.         this.depth--;
  153.     },
  154.  
  155.  
  156.     getHTMLHead : function()
  157.     {
  158.         var HTML = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\n\n'
  159.                  + '<html>\n\n'
  160.                  + '<head>\n'
  161.                  + '    <meta http-equiv="Content-Type" content="text/html;Charset=UTF-8">\n'
  162.                  + '    <meta http-equiv="Content-Style-Type" content="text/css">\n'
  163.                  + '    <meta http-equiv="Content-Script-Type" content="text/javascript">\n'
  164.                  + '    <title>ScrapBook</title>\n'
  165.                  + '    <link rel="stylesheet" type="text/css" href="./treestyle.css" media="all">\n'
  166.                  + '    <script type="text/javascript" language="JavaScript"><!--\n'
  167.                  + '    function toggle(aID) {\n'
  168.                  + '        var listElt = document.getElementById(aID);\n'
  169.                  + '        listElt.style.display = ( listElt.style.display == "none" ) ? "block" : "none";\n'
  170.                  + '    }\n'
  171.                  + '    function toggleAll(willOpen) {\n'
  172.                  + '        var ulElems = document.getElementsByTagName("UL");\n'
  173.                  + '        for ( var i = 1; i < ulElems.length; i++ ) {\n'
  174.                  + '            ulElems[i].style.display = willOpen ? "block" : "none";\n'
  175.                  + '        }\n'
  176.                  + '    }\n'
  177.                  + '    //--></script>\n'
  178.                  + '</head>\n\n'
  179.                  + '<body onload="toggleAll(false);">\n\n'
  180.                  + '<div id="header">\n'
  181.                  + '    <a href="#" onclick="toggleAll(true);">Open</a>\n'
  182.                  + '    <a href="#" onclick="toggleAll(false);">Close</a>\n'
  183.                  + '</div>\n\n';
  184.         return HTML;
  185.     },
  186.  
  187.  
  188.     getHTMLBody : function(aRes)
  189.     {
  190.         var myID    = SBRDF.getProperty("id", aRes);
  191.         var myTitle = SBRDF.getProperty("title", aRes);
  192.         var myIcon  = SBRDF.getProperty("icon", aRes);
  193.         if ( myIcon.match(/(\/data\/\d{14}\/.*$)/) ) myIcon = ".." + RegExp.$1;
  194.         if ( !myIcon ) myIcon = SBcommon.getFileName( SBcommon.getDefaultIcon(SBRDF.getProperty("type", aRes)) );
  195.         myTitle = myTitle.replace(/</g, "<");
  196.         myTitle = myTitle.replace(/>/g, ">");
  197.         var target = gFrameOption ? ' target="main"' : "";
  198.         if ( SBRDF.getProperty("type", aRes) == "folder" ) {
  199.             HTML = '<a class="folder" href="javascript:toggle(\'folder-' + myID + '\');"><img src="./treefolder.png" width="16" height="16" alt="">' + myTitle + '</a>\n';
  200.         } else {
  201.             HTML = '<a href="../data/' + myID + '/index.html"' + target + '><img src="' + myIcon + '" width="16" height="16" alt="">' + myTitle + '</a>';
  202.         }
  203.         return HTML;
  204.     },
  205.  
  206.  
  207.     getHTMLFoot : function()
  208.     {
  209.         var HTML = "\n</body>\n</html>\n";
  210.         return HTML;
  211.     },
  212.  
  213.  
  214.     getHTMLFrame : function()
  215.     {
  216.         var HTML = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">\n\n'
  217.                  + '<html>\n\n'
  218.                  + '<head>\n'
  219.                  + '    <meta http-equiv="Content-Type" Content="text/html;Charset=UTF-8">\n'
  220.                  + '    <title>ScrapBook</title>\n'
  221.                  + '</head>\n\n'
  222.                  + '<frameset cols="200,*">\n'
  223.                  + '    <frame name="side" src="./index.html">\n'
  224.                  + '    <frame name="main">\n'
  225.                  + '</frameset>\n\n'
  226.                  + '</html>\n';
  227.         return HTML;
  228.     }
  229.  
  230. };
  231.  
  232.  
  233.