View the DQSD CVS repository here:
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/dqsd/

Update of /cvsroot/dqsd/dqsd/addons/bookmarks
In directory usw-pr-cvs1:/tmp/cvs-serv30818/addons/bookmarks

Modified Files:
        bmmz.xml bmns4.xml bmya.xml bookmarks_lib.js 
Log Message:
updated netscape parser to use IE html dom instead of homegrown parser
updated netscape parser to take page url instead of page source

Index: bmmz.xml
===================================================================
RCS file: /cvsroot/dqsd/dqsd/addons/bookmarks/bmmz.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** bmmz.xml    27 Sep 2002 06:27:44 -0000      1.1
--- bmmz.xml    28 Sep 2002 06:14:31 -0000      1.2
***************
*** 58,63 ****
                  bookmarks_full_path = bookmarks_mozilla_location + "\\" + user_file;
                }
!               var bookmarks_page = bookmarks_get_file(bookmarks_full_path);
!               mozilla_bookmarks_array = 
bookmarks_get_bookmarks_array_from_netscape(bookmarks_page);
        }
        bookmarks_show_menu(mozilla_bookmarks_array);
--- 58,62 ----
                  bookmarks_full_path = bookmarks_mozilla_location + "\\" + user_file;
                }
!               mozilla_bookmarks_array = 
bookmarks_get_bookmarks_array_from_netscape(bookmarks_full_path);
        }
        bookmarks_show_menu(mozilla_bookmarks_array);

Index: bmns4.xml
===================================================================
RCS file: /cvsroot/dqsd/dqsd/addons/bookmarks/bmns4.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** bmns4.xml   27 Sep 2002 06:27:44 -0000      1.1
--- bmns4.xml   28 Sep 2002 06:14:31 -0000      1.2
***************
*** 54,59 ****
  
                var bookmarks_full_path = bmk_location+"\\"+bmk_profile+"\\"+bmk_file;
!               var bookmarks_page = bookmarks_get_file(bookmarks_full_path);
!               netscape4_bookmarks_array = 
bookmarks_get_bookmarks_array_from_netscape(bookmarks_page);
        }
        bookmarks_show_menu(netscape4_bookmarks_array);
--- 54,58 ----
  
                var bookmarks_full_path = bmk_location+"\\"+bmk_profile+"\\"+bmk_file;
!               netscape4_bookmarks_array = 
bookmarks_get_bookmarks_array_from_netscape(bookmarks_full_path);
        }
        bookmarks_show_menu(netscape4_bookmarks_array);

Index: bmya.xml
===================================================================
RCS file: /cvsroot/dqsd/dqsd/addons/bookmarks/bmya.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** bmya.xml    27 Sep 2002 06:27:44 -0000      1.1
--- bmya.xml    28 Sep 2002 06:14:31 -0000      1.2
***************
*** 40,50 ****
        if (yahoo_bookmarks_array == null) {
                var bmk_location = (typeof bookmarks_yahoo_location != "undefined" && 
bookmarks_yahoo_location != "") ? bookmarks_yahoo_location : 
"http://e.my.yahoo.com/config/export_bookmark?.commit=1";;
!               var bookmarks_page = "";
!               if (bmk_location.match(/\:\/\//)) {
!                       bookmarks_page = bookmarks_get_webpage(bmk_location);
!               } else {
!                       bookmarks_page = bookmarks_get_file(bmk_location);
!               }
!               yahoo_bookmarks_array = 
bookmarks_get_bookmarks_array_from_netscape(bookmarks_page);
        }
        bookmarks_show_menu(yahoo_bookmarks_array);
--- 40,44 ----
        if (yahoo_bookmarks_array == null) {
                var bmk_location = (typeof bookmarks_yahoo_location != "undefined" && 
bookmarks_yahoo_location != "") ? bookmarks_yahoo_location : 
"http://e.my.yahoo.com/config/export_bookmark?.commit=1";;
!               yahoo_bookmarks_array = 
bookmarks_get_bookmarks_array_from_netscape(bmk_location);
        }
        bookmarks_show_menu(yahoo_bookmarks_array);

Index: bookmarks_lib.js
===================================================================
RCS file: /cvsroot/dqsd/dqsd/addons/bookmarks/bookmarks_lib.js,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** bookmarks_lib.js    27 Sep 2002 06:27:44 -0000      1.1
--- bookmarks_lib.js    28 Sep 2002 06:14:31 -0000      1.2
***************
*** 1,2 ****
--- 1,3 ----
+ 
  function bookmarks_get_webpage(webpage_url, cache_file_name, refresh_time)
  {
***************
*** 32,48 ****
        var fc, ff;
  
        fc = new Enumerator(folder.SubFolders);
        for (; !fc.atEnd(); fc.moveNext()) {
!               var arr_item = "";
!               for (var j=0; j < level; j++) {
!                 arr_item += "\t";
!               }
!               arr_item += "Folder";
!               arr_item += "\t";
!               arr_item += fso.GetBaseName(fc.item());
!               bookmarks_array.push(arr_item);
                bookmarks_process_ie_favorites_folder(fso, fc.item(), bookmarks_array, 
level+1);
        }
  
        ff = new Enumerator(folder.Files);
        for (; !ff.atEnd(); ff.moveNext()) {
--- 33,47 ----
        var fc, ff;
  
+       // add folders
        fc = new Enumerator(folder.SubFolders);
        for (; !fc.atEnd(); fc.moveNext()) {
!               var folderName = fso.GetBaseName(fc.item());
! 
!               bookmarks_array.push(bookmarks_build_arr_item(folderName, 'Folder', 
level));
! 
                bookmarks_process_ie_favorites_folder(fso, fc.item(), bookmarks_array, 
level+1);
        }
  
+       // add bookmarks
        ff = new Enumerator(folder.Files);
        for (; !ff.atEnd(); ff.moveNext()) {
***************
*** 50,78 ****
                        continue;
                }
!               var objTextStream = fso.OpenTextFile (ff.item(), fsoForReading);
!               var cur_url = ff.item();
                while (!objTextStream.AtEndOfStream) {
                        var line = objTextStream.ReadLine();
                        var url_results = url_regexp.exec(line);
                        if (url_results != null) {
!                               cur_url = url_results[1];
                                break;
                        }
                }
! 
!               var arr_item = "";
!               for (var j=0; j < level; j++) {
!                 arr_item += "\t";
!               }
!               arr_item += cur_url;
!               arr_item += "\t";
!               arr_item += fso.GetBaseName(ff.item());
!               bookmarks_array.push(arr_item);
        }
  }
  
! 
! function bookmarks_get_bookmarks_array_from_netscape(webpage_source)
  {
        // tokenize the page
      var parsed_items = new Array();
--- 49,76 ----
                        continue;
                }
!               var bookmarkName = fso.GetBaseName(ff.item());
!               var objTextStream = fso.OpenTextFile(ff.item(), fsoForReading);
!               var bookmarkUrl = ff.item();
                while (!objTextStream.AtEndOfStream) {
                        var line = objTextStream.ReadLine();
                        var url_results = url_regexp.exec(line);
                        if (url_results != null) {
!                               bookmarkUrl = url_results[1];
                                break;
                        }
                }
!               bookmarks_array.push(bookmarks_build_arr_item(bookmarkName, 
bookmarkUrl, level));
        }
  }
  
! function bookmarks_get_bookmarks_array_from_netscape_old(webpage_url)
  {
+       var webpage_source = '';
+       if (webpage_url.match(/\:\/\//)) {
+               webpage_source = bookmarks_get_webpage(webpage_url);
+       } else {
+               webpage_source = bookmarks_get_file(webpage_url);
+       }
+ 
        // tokenize the page
      var parsed_items = new Array();
***************
*** 180,192 ****
                        // text
                        if (state == 1 || state == 2) {
!                         var arr_item = "";
!                         for (var j=0; j < level; j++) {
!                                 arr_item += "\t";
!                         }
!                         arr_item += cur_href;
!                         arr_item += "\t";
!                         arr_item += cur_item.replace("&amp;", "and");
!                         //alert(""+level+", "+cur_item);
!                         arr[arr_count++] = arr_item;
                        }
                }
--- 178,182 ----
                        // text
                        if (state == 1 || state == 2) {
!                         arr.push(bookmarks_build_arr_item(cur_item, cur_href, 
level));
                        }
                }
***************
*** 199,202 ****
--- 189,287 ----
  }
  
+ function bookmark_netscape_parse_folder(folder_element, bookmarks_array, level)
+ {
+       if (typeof folder_element == "undefined" || folder_element.tagName != "DL") {
+               return;
+       }
+       var i=0;
+ /*
+       // load all folders and bookmarks in the order they're in the file
+       // faster but not as nice as having folders first and then bookmarks
+       for (i=0; i < folder_element.children.length; i++) {
+               var folderChild = folder_element.children[i];
+               if (folderChild.tagName != "DT")
+                       continue;
+ 
+               var folderType = folderChild.children[0];
+               if (folderType.tagName == 'H3') {
+                       var folderName = folderType.innerText;
+ 
+                       bookmarks_array.push(bookmarks_build_arr_item(folderName, 
+'Folder', level));
+ 
+                       var folderDLNode = folderChild.children[1];
+                       bookmark_netscape_parse_folder(folderDLNode, bookmarks_array, 
+level+1);
+               } else if (folderType.tagName == 'A') {
+                       var bookmarkName = folderType.innerText;
+                       var bookmarkHref = folderType.getAttribute("HREF");
+ 
+                       bookmarks_array.push(bookmarks_build_arr_item(bookmarkName, 
+bookmarkHref, level));
+               }
+       }
+ */
+       // add folders first and then bookmarks
+       for (i=0; i < folder_element.children.length; i++) {
+               var folderChild = folder_element.children[i];
+               if (folderChild.tagName != "DT")
+                       continue;
+               var folderNode = folderChild.children[0];
+               if (folderNode.tagName != "H3")
+                       continue;
+ 
+               var folderName = folderNode.innerText;
+ 
+               bookmarks_array.push(bookmarks_build_arr_item(folderName, 'Folder', 
+level));
+ 
+               var folderDLNode = folderChild.children[1];
+               bookmark_netscape_parse_folder(folderDLNode, bookmarks_array, level+1);
+       }
+       for (i=0; i < folder_element.children.length; i++) {
+               var folderChild = folder_element.children[i];
+               if (folderChild.tagName != "DT")
+                       continue;
+               var bookmarkNode = folderChild.children[0];
+               if (bookmarkNode.tagName != "A")
+                       continue;
+ 
+               var bookmarkName = bookmarkNode.innerText;
+               var bookmarkHref = bookmarkNode.getAttribute("HREF");
+ 
+               bookmarks_array.push(bookmarks_build_arr_item(bookmarkName, 
+bookmarkHref, level));
+       }
+ }
+ 
+ function bookmarks_build_arr_item(name, href, level)
+ {
+       var arr_item = "";
+       for (var j=0; j < level; j++) {
+         arr_item += "\t";
+       }
+       arr_item += href;
+       arr_item += "\t";
+       arr_item += name.replace("&amp;", "and");
+       return arr_item;
+ }
+ 
+ 
+ function bookmarks_get_bookmarks_array_from_netscape(webpage_url)
+ {
+       if (typeof bookmarks_netscape_use_old_method != "undefined" && 
+bookmarks_netscape_use_old_method == true) {
+               return bookmarks_get_bookmarks_array_from_netscape_old(webpage_url);
+       }
+       var ie_obj =  new ActiveXObject("InternetExplorer.Application");
+       ie_obj.visible = false;
+       ie_obj.silent = true;
+       ie_obj.navigate(webpage_url);
+       while(ie_obj.busy);
+       var bmkStartFolder = ie_obj.document.documentElement.children[1].children[1]; 
+// BODY/DL
+       var bookmarks_array = new Array();
+       var level = 0;
+ 
+       bookmark_netscape_parse_folder(bmkStartFolder, bookmarks_array, level);
+       ie_obj.quit();
+       ie_obj = null;
+       return bookmarks_array;
+ }
+ 
+ 
  function bookmarks_get_menu(bookmarks_array)
  {
***************
*** 245,247 ****
        }
  
! }
\ No newline at end of file
--- 330,332 ----
        }
  
! }




-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
DQSD-CVS mailing list
https://lists.sourceforge.net/lists/listinfo/dqsd-cvs
DQSD CVS repository:
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/dqsd/

Reply via email to