Subversion Repositories eFlore/Archives.eflore-xul

Compare Revisions

Ignore whitespace Rev 11 → Rev 12

/trunk/eflore/eflore_v0_test/content/eflore/eflore.js
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";
}