[Zope-CVS] CVS: Packages/Moztop/moztop/content/explorer - explorer.js:1.2

Stephan Richter srichter@cbu.edu
Thu, 20 Mar 2003 11:04:50 -0500


Update of /cvs-repository/Packages/Moztop/moztop/content/explorer
In directory cvs.zope.org:/tmp/cvs-serv2856/explorer

Modified Files:
	explorer.js 
Log Message:
Moved SitesManager to lib/sitesmanager.js


=== Packages/Moztop/moztop/content/explorer/explorer.js 1.1 => 1.2 ===
--- Packages/Moztop/moztop/content/explorer/explorer.js:1.1	Thu Mar 20 09:07:05 2003
+++ Packages/Moztop/moztop/content/explorer/explorer.js	Thu Mar 20 11:04:20 2003
@@ -13,409 +13,9 @@
 ******************************************************************************
 Explorer library; here to manage Content Object Tree.
 
-
-SitesManager API Methods:
-
-  * connectSelectedSite - Connect to the selected site.
-
-  * addSite - Add a site to the tree.  
-
-  * getSelectedResource - Get the in the tree selected resource. 
-
-  * openSelectedResource - Open resource views.
-
-  * addResource - Add a resource to the selected container object.
-
-  * deleteResource - Delete the selected resource.
-
 $Id$
 
 ******************************************************************************/
-
-/* Some regular expressions to fix the case-sensitivity of Moz RDF */
-var fixer1 = /rdf:rdf/g;
-var fixer2 = /rdf:description/g;
-var fixer3 = /rdf:seq/g;
-
-function SitesManager () {
-    /* A prototype to manage the sites database and datasources */
-
-    // Initialization
-    if( !(this instanceof SitesManager) ) 
-	return new SitesManager( );
-    DataSourceManager.call(this);
-    
-    // Grab appropriate Content Tree RDF datasource
-    this.ds = new RDFDataSource(this.profileurl + "/moztop.rdf",null);
-    
-    // Define Content Type RDF datasource
-    this.commontypesds = new RDFDataSource();
-    this.commontypesds.parseFromString(commontypes_data,
-				       "http://www.zope.org/rdf");
-
-    dump(this.commontypesds.serializeToString());
-
-    // DOM element id of the Explorer tree
-    this.elementid = 'explorertree';
-    
-    // An array of all datasources that describe the content of a site.
-    this.sitedatasources = new Array();
-    
-    /* Attach these (potentially empty) datasources */
-    var tree = document.getElementById(this.elementid);
-    tree.database.AddDataSource(this.ds.getRawDataSource());
-    tree.database.AddDataSource(this.commontypesds.getRawDataSource());
-    tree.builder.rebuild();		
-}
-
-/* Now subclass, then add methods */
-SitesManager.prototype = new DataSourceManager();
-
-/* Detect if this is an initial install.  If so, initialize. */
-SitesManager.prototype.initializeProfileDatabases = function() {
-
-    /* Are there databases in profile dir?  If so, log a message and return */
-    var allres = this.ds.getAllResources();
-    if (allres.hasMoreElements()) {
-	logmanager.addMessage('Found existing moztop databases', 
-			      'explorer.js, initExplorer', 
-			      this.ds.serializeToString());
-	return;
-    }
-
-    /* If we make it here, it means we need to create moztop databases */
-    var rootnode = this.ds.getNode("urn:moztop:sites");
-    var subitems = this.ds.getNode("urn:moztop:sites:subitems");
-    subitems.makeSeq();
-    rootnode.addTarget(this.subitemsprop,subitems);
-
-    this.ds.save();
-    logmanager.addMessage("Initialized moztop.rdf","explorer.js, initExplorer",
-			  this.ds.serializeToString());
-
-    return;
-}
-
-SitesManager.prototype.toggleNoSites = function() {
-    return;
-}
-
-SitesManager.prototype.connectSelectedSite = function() {
-    var selectedsite = this.getSelectedResource();
-
-    if (! selectedsite) {
-    	alert("Please select a site to connect to.");
-	return;
-    }
-
-    var siteurl = selectedsite.getTarget(this.urlprop).getValue();
-
-    /* If the site isn't already in the array, create a ds */
-    id = this.sitedatasources.length
-    var ds = this.sitedatasources[id];
-    if (! ds) {
-	var ds = new RDFDataSource();
-	this.sitedatasources[id] = ds;
-    }
-
-    this.retrieveSiteContents(siteurl, ds);
-
-    return;
-}
-
-
-SitesManager.prototype.retrieveSiteContents = function(siteurl, ds) {
-    /* Given a URL, retrieve the RDF and add it to the passed-in datasource */
-
-    function handleError() {
-	dump("\n in handleError");
-	if (p.readyState == 2) {
-	    if (p.status) {
-		if (p.status== "401") {
-		    alert("Invalid URL");
-		    return;
-		}
-	    }
-	}
-    }
-
-    function serializeResponse(e) {
-	/* Local anonymous function for handling the async data */
-	if (p.statusText) {
-	    dump("\nhere\n");
-	    
-	    /* If p.ds is empty, we'll have to attach and rebuild */
-	    var needsReload = false;
-	    if (! p.ds.getAllResources()) {
-		var needsReload = false;
-	    }
-	    
-	    p.ds.refresh(true);
-	    
-	    var newrdf = p.responseText;
-	    var newrdf = newrdf.replace(fixer1,"rdf:RDF");
-	    var newrdf = newrdf.replace(fixer2,"rdf:Description");
-	    var newrdf = newrdf.replace(fixer3,"rdf:Seq");
-	    dump("\ngoober is " + newrdf);
-	    
-	    p.ds.parseFromString(newrdf,siteurl);
-	    logmanager.addMessage("Retrieved remote contents.rdf",
-				  "explorer.js, retrieveSiteContents",
-				  p.ds.serializeToString());
-	    
-	    /* XXX: don't rebuild tree if you don't have to */
-	    var tree=document.getElementById("explorertree");
-	    tree.database.AddDataSource(p.ds.getRawDataSource());
-	    tree.builder.rebuild();
-	}
-    }
-	
-    var p = new XMLHttpRequest();
-    p.ds = ds;
-    // p.onreadystatechange = handleError;
-    p.onload = serializeResponse;
-    p.open("GET", siteurl + "contents.rdf", false);
-    p.send(null);
-}
-
-
-SitesManager.prototype.addSite = function(site_name, site_realm, site_url, 
-					  site_username, site_password) {
-
-    /* The realm is used in URNs while the name is for the display */
-    var sc=this.ds.getNode("urn:moztop:sites")
-               .getTarget(this.subitemsprop);
-    var newsite=this.ds.getNode("urn:moztop:sites:" + site_realm);
-    var siteres = this.ds.getNode("urn:moztop:resourcetypes:site");
-    sc.addChild(newsite);
-
-
-    // Now fill in the data for the new site
-    newsite.addTarget(this.titleprop, site_name);
-    newsite.addTarget(this.urlprop, site_url);
-    newsite.addTarget(this.usernameprop, site_username);
-    newsite.addTarget(this.passwordprop, site_password);
-    newsite.addTarget(this.resourcetypeprop, siteres);
-
-    // Prepare the area for pseudo-folders (Configurations, Content, etc.)
-    var subitemsurn = "urn:moztop:sites:" + site_realm + ":subitems";
-    var subitems = this.ds.getNode(subitemsurn);
-    subitems.makeSeq();
-    newsite.addTarget(this.subitemsprop,subitems);
-
-    /* Now add the virtual folders which arc to this.commontypesds */
-    var vfs = new Array ('Views', 'Configurations', 'Content', 'Bundles',
-                         'Packages');
-    for (var i = 0; i < vfs.length; i++) {
-
-	/* vf is the current virtual folder */
-	var vf = vfs[i];
-	var vfurn = "urn:moztop:sites:" + site_realm + ":" + vf.toLowerCase();
-
-	/* Create a new node for this virtual folder and append to subitems */
-	var newvf = this.ds.getNode(vfurn);
-	subitems.addChild(newvf);
-
-	// XXX: get rid of the following line
-	newvf.addTarget(this.titleprop,vf);
-
-	/* Fill in the rest of the info for the virtual folder */
-	newvf.addTarget(this.resourcetypeprop,
-		"urn:moztop:resourcetypes:" + vf.toLowerCase());
-    }
-
-    /* Finally, create a site datasource and load the contents for this site */
-    id = this.sitedatasources.length
-    var ds = this.sitedatasources[id];
-    if (! ds) {
-	var ds = new RDFDataSource();
-	this.sitedatasources[id] = ds;
-    }
-    this.retrieveSiteContents(site_url, ds);
-
-    this.ds.save();
-    return;
-}
-
-
-SitesManager.prototype.getSelectedResource = function() {
-    /* Overwriting default implementation, since we need to look into the
-       sitedatasources as well. */
-
-    // get index of tree
-    var tree = document.getElementById(this.elementid);
-    var index = tree.view.selection.currentIndex;
-    
-    // get the selected resource
-    if (index == -1) return false;
-    var res = tree.view.getItemAtIndex(index).resource;
-    
-    // Try to find the node in the standard ds
-    var rdf = this.ds.getNode(res.Value);
-    
-    // See whether the node could be possibly in sitedatasources.
-    for (var i = 0; i < this.sitedatasources.length; i++) {
- 	node = this.sitedatasources[i].getNode(res.Value);
- 	if (node.propertyExists(this.titleprop)) 
- 	    rdf = node;
-    }    
-    return rdf;
-}
-
-
-SitesManager.prototype.openSelectedResource = function() {
-    /* Opens the tab views for the selected resource */
-
-    var rdf = this.getSelectedResource();
-
-    // Grab the selected resource and its title
-    var resourcetitle = rdf.getTarget(this.titleprop).getValue();
-    
-    // Find viewer container
-    var outter = document.getElementById("active-contents-tabpanels");
-
-    // Do not open resource if already opened.
-    for (var i = 0; i < outter.childNodes.length; i++) {
-	if (outter.childNodes[i].getAttribute('urn') == rdf.getValue())
-	    return;
-    }
-
-    // Make an appropriate log entry
-    logmanager.addMessage("Opening " + resourcetitle);
-
-    // Retrieving resource type
-    typeURN = rdf.getTarget(this.resourcetypeprop).getValue();
-    type = this.commontypesds.getNode(typeURN);
-    // XXX: The type registry should really have an attribute for this.
-    typeViewerName = type.getTarget(
-	"http://www.zope.org/rdf#styleid").getValue() + "viewer";
-
-    // Creating resource viewer
-    var viewer = document.createElement(typeViewerName);
-    // Setting initialization attributes
-    viewer.id = typeViewerName + "-" + new Date().getTime();
-    viewer.setAttribute("urn", rdf.getValue());
-    viewer.setAttribute("resourcetitle", resourcetitle);
-    
-    // Add new viewer to opened resources tabs
-    outter.appendChild(viewer);
-}
-
-
-SitesManager.prototype.addResource = function(type, name) {
-    /* Add a resource to the selected container object. */
-    return;
-}
-
-SitesManager.prototype.deleteResource = function() {
-    /* Delete a resource from the server and the RDF graph. */
-    
-    var urn = this.getSelectedResource();
-    
-    if (! urn) {
-    	alert("Please select a resource to delete.");
-	return;
-    }
-    
-    var urn = urn.getValue();
-    var selectedsite = this.ds.getNode(urn);
-    var resourcetype = selectedsite.getTarget(
-	this.resourcetypeprop).getValue();
-
-    if (resourcetype != "urn:moztop:resourcetypes:site") {
-	alert("You cannot delete a " + resourcetype);
-	return;
-    }
-
-    /* XXX: Delete object from server */
-    
-
-
-    /* Only delete if you get a valid response back from the server */
-    /* XXX: remove from array */
-    this.ds.deleteRecursive(urn);
-    this.ds.save();
-
-    return;
-}
-
-
-SitesManager.prototype.DELETE = function(puturl, putcontent) {
-    /* Deleting a resource on the server */
-    var req = new XMLHttpRequest();
-
-    function myfunc(e) {
-	if (req.responseXML) {
-
-	    var serializer = new XMLSerializer();
-	    var resp = req.responseXML;
-	    var str = serializer.serializeToString(d);
-
-	    dump("\nmade it in PUT\n" + str + "\n");
-	}
-    }
-
-    req.onload = myfunc;
-    req.open("DELETE", puturl);
-    req.setRequestHeader("Content-type", "text/plain");
-    req.setRequestHeader("Host", "localhost");
-    req.send(putcontent);
-
-    return;
-}    
-
-
-SitesManager.prototype.PUT = function () {
-    var puturl = "http://localhost:9700/fooboy3";
-    var putcontent = "";
-
-    var p = new XMLHttpRequest();
-    var typeheader = "X-Zope-Type-Name"
-
-    function myfunc (e) {
-	if (p.responseXML) {
-
-	    var s = new XMLSerializer();
-	    var d = p.responseXML;
-	    var str = s.serializeToString(d);
-
-	    dump("\nmade it in PUT\n" + str + "\n");
-	}
-    }
-
-    var x = document.implementation.createDocument("", "test", null);
-    x.documentElement.appendChild(document.createElement("Foo"));
-    x.documentElement.appendChild(document.createElement("Bar"));
-    x.documentElement.firstChild.appendChild(
-	document.createTextNode("My Stuff\nYeah"));
-
-    var s = new XMLSerializer();
-    str = s.serializeToString(x);
-
-    p.onload = myfunc;
-    p.open("PUT",puturl);
-    p.setRequestHeader("Content-type", "text/xml");
-    p.setRequestHeader("Host","localhost");
-    p.setRequestHeader(typeheader, "PageTemplate");
-    p.send(x);
-
-    return;
-}    
-
-/* Initialize the Explorer datasource */
-function initExplorer() {
-    sitesmanager = SitesManager();
-    sitesmanager.initializeProfileDatabases();
-    return;
-}
-
-/*    Everything after this will be replaced by everything above this */
-
-/* XML-RPC client setup. */
-function getClient() {
-    return Components.classes['@mozilla.org/xml-rpc/client;1']
-        .createInstance(Components.interfaces.nsIXmlRpcClient);
-}
 
 var xmlRpcClient;
 function getXmlRpc() {