Subversion Repositories eFlore/Archives.eflore-xul

Rev

Rev 12 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
12 jpm 1
var projects = new Array( );
2
var projectID = "";
3
var selectID = "";
4
 
5
function project_view( ) {
6
  return openTopWin( "http://freshmeat.net/projects/" + selectID + "/" );
7
}
8
 
9
function project_home( ) {
10
  if( projects[selectID]["url_homepage"] ) {
11
    return openTopWin( projects[selectID]["url_homepage"] );
12
  }
13
}
14
 
15
function project_info( ) {
16
  alert( projects[selectID]["name_full"] + "\n" +  projects[selectID]["desc_full"] + "\n Added : " +  projects[selectID]["date_added"] + "\n" + "Update : " +  projects[selectID]["date_updated" ] );
17
}
18
 
19
function search( ) {
20
  projects = new Array( );
21
  projectID = "";
22
  selectID = "";
23
  document.getElementById( "loadprogress" ).setAttribute("mode","undetermined");
24
 
25
  var rootNode = document.getElementById( "root" );
26
  removeNode( rootNode, rootNode, 0 );
27
 
28
  var search = document.getElementById( "prjfind" ).value;
29
  var url = "http://freshmeat.net/search-xml/?q=" + search;
30
 
31
  connectionType = "direct";
32
  timeOut = 120;
33
  connection( url );
34
}
35
 
36
function parseCallback( xml ) {
37
  var DOM = new DOMParser().parseFromString( xml, 'text/xml' );
38
  try {
39
    var rootNodes = DOM.getElementsByTagName( 'search-results' );
40
    var rootNode = rootNodes.item( 0 );
41
 
42
    parseNode( rootNode );
43
  } catch(e) {
44
    alert( "Parse error : " + e );
45
  }
46
 
47
}
48
 
49
function parseNode( node ) {
50
  var nodes = node.childNodes;
51
  var i;
52
 
53
  for( i=0; i<nodes.length; i++ ) {
54
    child = nodes.item(i);
55
    if( child.nodeName == "match" ) {
56
      var childs = child.childNodes;
57
      var project = new Array( );
58
 
59
      var j;
60
      for( j = 0; j < childs.length; j++ ) {
61
        childchild = childs.item(j);
62
        if( childchild.firstChild ) {
63
          switch( childchild.nodeName ) {
64
            case "projectname_short":
65
                project["name_short"] = childchild.firstChild.nodeValue;
66
              break;
67
            case "projectname_full":
68
                project["name_full"] = childchild.firstChild.nodeValue;
69
              break;
70
            case "desc_short":
71
                project["desc_short"] = childchild.firstChild.nodeValue;
72
              break;
73
            case "desc_full":
74
                project["desc_full"] = childchild.firstChild.nodeValue;
75
              break;
76
            case "url_homepage":
77
                project["url_homepage"] = childchild.firstChild.nodeValue;
78
              break;
79
            case "date_added":
80
                project["date_added"] = childchild.firstChild.nodeValue;
81
              break;
82
            case "date_updated":
83
                project["date_updated"] = childchild.firstChild.nodeValue;
84
              break;
85
            case "project_id":
86
                project["project_id"] = childchild.firstChild.nodeValue;
87
              break;
88
            default:
89
              break;
90
          }
91
        }
92
      }
93
 
94
      projects[project["name_short"]] = new Array( );
95
      projects[project["name_short"]] = project;
96
 
97
      var children = document.getElementById( "root" );
98
 
99
      var item = document.createElement ("treeitem");
100
      item.setAttribute ("id", project["name_short"]);
101
 
102
      var row  = document.createElement ("treerow");
103
 
104
      var cellname = document.createElement ("treecell");
105
      cellname.setAttribute ("label", project["name_full"]);
106
      var celldesc = document.createElement ("treecell");
107
      celldesc.setAttribute ("label", project["desc_short"]);
108
 
109
      row.appendChild (cellname);
110
      row.appendChild (celldesc);
111
      item.appendChild (row);
23 jpm 112
      children.appendChild( item );
12 jpm 113
 
114
    }
115
  }
116
  document.getElementById( "loadprogress" ).setAttribute("mode","determined");
117
}
118
 
119
function removeNode( node, parent, bdel ) {
120
  var nodes = node.childNodes;
121
 
122
  var i;
123
  for( i=0; i<nodes.length; i++ ) {
124
    child = nodes.item(i);
125
    removeNode( child, node, 1 );
126
    node.removeChild( child );
127
  }
128
 
129
  if( bdel == 1 ) {
130
    parent.removeChild( node );
131
  }
132
}
133
 
134
function treeSelect( mbut ) {
135
  var tree = document.getElementById( "projectTree" );
136
  var numRanges = tree.view.selection.getRangeCount();
137
  var start = new Object();
138
  var end = new Object();
139
  tree.view.selection.getRangeAt(0,start,end);
140
 
141
  var dom = tree.view.getItemAtIndex( start.value );
142
  selectID = dom.getAttributeNode( "id" ).value;
143
 
144
  if( mbut == 0 ) {
145
    if( projectID != selectID ) {
146
      projectID = selectID;
147
      var url = "http://freshmeat.net/projects/" + projectID + "/";
148
      openTopWin( url );
149
    }
150
  }
151
}
152
 
153
// ----------------------------------------------------------------------------
154
 
155
function openTopWin( url )
156
{
157
    if ((url == null) || (url == "")) return null;
158
 
159
    if (url == "") {
160
        url = "about:blank";
161
    }
162
 
163
    var topWindowOfType = getTopWin();
164
    if ( topWindowOfType )
165
    {
166
        topWindowOfType.focus();
167
        topWindowOfType.loadURI(url);
168
        return topWindowOfType;
169
    }
170
    return window.openDialog( getBrowserURL(), "_blank", "chrome,all,dialog=no", url );
171
}
172
 
173
function getTopWin()
174
{
175
    var windowManager = Components.classes['@mozilla.org/appshell/window-mediator;1'].getService();
176
    var windowManagerInterface = windowManager.QueryInterface( Components.interfaces.nsIWindowMediator);
177
    var topWindowOfType = windowManagerInterface.getMostRecentWindow( "navigator:browser" );
178
 
179
    if (topWindowOfType) {
180
        return topWindowOfType;
181
    }
182
    return null;
183
}
184
 
185
function getBrowserURL() {
186
 
187
  try {
188
    var prefs = Components.classes["@mozilla.org/preferences-service;1"]
189
                         .getService(Components.interfaces.nsIPrefBranch);
190
    var url = prefs.getCharPref("browser.chromeURL");
191
    if (url)
192
      return url;
193
  } catch(e) {
194
  }
195
  return "chrome://navigator/content/navigator.xul";
196
}
197