New file |
0,0 → 1,197 |
var projects = new Array( ); |
var projectID = ""; |
var selectID = ""; |
|
function project_view( ) { |
return openTopWin( "http://freshmeat.net/projects/" + selectID + "/" ); |
} |
|
function project_home( ) { |
if( projects[selectID]["url_homepage"] ) { |
return openTopWin( projects[selectID]["url_homepage"] ); |
} |
} |
|
function project_info( ) { |
alert( projects[selectID]["name_full"] + "\n" + projects[selectID]["desc_full"] + "\n Added : " + projects[selectID]["date_added"] + "\n" + "Update : " + projects[selectID]["date_updated" ] ); |
} |
|
function search( ) { |
projects = new Array( ); |
projectID = ""; |
selectID = ""; |
document.getElementById( "loadprogress" ).setAttribute("mode","undetermined"); |
|
var rootNode = document.getElementById( "root" ); |
removeNode( rootNode, rootNode, 0 ); |
|
var search = document.getElementById( "prjfind" ).value; |
var url = "http://freshmeat.net/search-xml/?q=" + search; |
|
connectionType = "direct"; |
timeOut = 120; |
connection( url ); |
} |
|
function parseCallback( xml ) { |
var DOM = new DOMParser().parseFromString( xml, 'text/xml' ); |
try { |
var rootNodes = DOM.getElementsByTagName( 'search-results' ); |
var rootNode = rootNodes.item( 0 ); |
|
parseNode( rootNode ); |
} catch(e) { |
alert( "Parse error : " + e ); |
} |
|
} |
|
function parseNode( node ) { |
var nodes = node.childNodes; |
var i; |
|
for( i=0; i<nodes.length; i++ ) { |
child = nodes.item(i); |
if( child.nodeName == "match" ) { |
var childs = child.childNodes; |
var project = new Array( ); |
|
var j; |
for( j = 0; j < childs.length; j++ ) { |
childchild = childs.item(j); |
if( childchild.firstChild ) { |
switch( childchild.nodeName ) { |
case "projectname_short": |
project["name_short"] = childchild.firstChild.nodeValue; |
break; |
case "projectname_full": |
project["name_full"] = childchild.firstChild.nodeValue; |
break; |
case "desc_short": |
project["desc_short"] = childchild.firstChild.nodeValue; |
break; |
case "desc_full": |
project["desc_full"] = childchild.firstChild.nodeValue; |
break; |
case "url_homepage": |
project["url_homepage"] = childchild.firstChild.nodeValue; |
break; |
case "date_added": |
project["date_added"] = childchild.firstChild.nodeValue; |
break; |
case "date_updated": |
project["date_updated"] = childchild.firstChild.nodeValue; |
break; |
case "project_id": |
project["project_id"] = childchild.firstChild.nodeValue; |
break; |
default: |
break; |
} |
} |
} |
|
projects[project["name_short"]] = new Array( ); |
projects[project["name_short"]] = project; |
|
var children = document.getElementById( "root" ); |
|
var item = document.createElement ("treeitem"); |
item.setAttribute ("id", project["name_short"]); |
|
var row = document.createElement ("treerow"); |
|
var cellname = document.createElement ("treecell"); |
cellname.setAttribute ("label", project["name_full"]); |
var celldesc = document.createElement ("treecell"); |
celldesc.setAttribute ("label", project["desc_short"]); |
|
row.appendChild (cellname); |
row.appendChild (celldesc); |
item.appendChild (row); |
children.appendChild( item ); |
|
} |
} |
document.getElementById( "loadprogress" ).setAttribute("mode","determined"); |
} |
|
function removeNode( node, parent, bdel ) { |
var nodes = node.childNodes; |
|
var i; |
for( i=0; i<nodes.length; i++ ) { |
child = nodes.item(i); |
removeNode( child, node, 1 ); |
node.removeChild( child ); |
} |
|
if( bdel == 1 ) { |
parent.removeChild( node ); |
} |
} |
|
function treeSelect( mbut ) { |
var tree = document.getElementById( "projectTree" ); |
var numRanges = tree.view.selection.getRangeCount(); |
var start = new Object(); |
var end = new Object(); |
tree.view.selection.getRangeAt(0,start,end); |
|
var dom = tree.view.getItemAtIndex( start.value ); |
selectID = dom.getAttributeNode( "id" ).value; |
|
if( mbut == 0 ) { |
if( projectID != selectID ) { |
projectID = selectID; |
var url = "http://freshmeat.net/projects/" + projectID + "/"; |
openTopWin( url ); |
} |
} |
} |
|
// ---------------------------------------------------------------------------- |
|
function openTopWin( url ) |
{ |
if ((url == null) || (url == "")) return null; |
|
if (url == "") { |
url = "about:blank"; |
} |
|
var topWindowOfType = getTopWin(); |
if ( topWindowOfType ) |
{ |
topWindowOfType.focus(); |
topWindowOfType.loadURI(url); |
return topWindowOfType; |
} |
return window.openDialog( getBrowserURL(), "_blank", "chrome,all,dialog=no", url ); |
} |
|
function getTopWin() |
{ |
var windowManager = Components.classes['@mozilla.org/appshell/window-mediator;1'].getService(); |
var windowManagerInterface = windowManager.QueryInterface( Components.interfaces.nsIWindowMediator); |
var topWindowOfType = windowManagerInterface.getMostRecentWindow( "navigator:browser" ); |
|
if (topWindowOfType) { |
return topWindowOfType; |
} |
return null; |
} |
|
function getBrowserURL() { |
|
try { |
var prefs = Components.classes["@mozilla.org/preferences-service;1"] |
.getService(Components.interfaces.nsIPrefBranch); |
var url = prefs.getCharPref("browser.chromeURL"); |
if (url) |
return url; |
} catch(e) { |
} |
return "chrome://navigator/content/navigator.xul"; |
} |
|