Explorar el Código

Improved jtalk.js
- only one method loadJtalk()
- parameters:
- files: an array of files to be loaded
- prefix: the prefix (default is 'js') for the files to be loaded
- reday: callback function evaluated when Jtalk is ready
- deploy: set jtalk to deployment mode
- added a nocache to avoid browser cache in development mode

Nicolas Petton hace 12 años
padre
commit
5b6f07722c
Se han modificado 3 ficheros con 59 adiciones y 36 borrados
  1. 0 1
      js/deploy.js
  2. 6 0
      js/init.js
  3. 53 35
      js/jtalk.js

+ 0 - 1
js/deploy.js

@@ -1 +0,0 @@
-smalltalk.setDeploymentMode()

+ 6 - 0
js/init.js

@@ -1,2 +1,8 @@
 smalltalk.init(smalltalk.Object);
 smalltalk.classes()._do_(function(each) {each._initialize()});
+
+/* Similar to jQuery(document).ready() */
+
+if(this.smalltalkReady) {
+    this.smalltalkReady();
+}

+ 53 - 35
js/jtalk.js

@@ -4,14 +4,24 @@
     var scripts = document.getElementsByTagName("script");
     var src = scripts[ scripts.length - 1 ].src;
     var home = src.split("/").slice(0, -2).join("/") + "/";
-    
+    var nocache = '?' + (new Date()).getTime();
+    var deploy = false;
+
     function loadJS(name, prefix) {
 	var prefix = prefix || 'js';
+	var name = name;
+	if(!deploy) {
+	    name = name + nocache;
+	}
 	document.write('<script src="' + home + prefix + '/' + name + '" type="text/javascript"></script>');
     }
     
     function loadCSS(name, prefix) {
 	var prefix = prefix || 'css';
+	var name = name;
+	if(!deploy) {
+	    name = name + nocache;
+	}
 	var link = document.createElement("link")
   	link.setAttribute("rel", "stylesheet")
   	link.setAttribute("type", "text/css")
@@ -32,47 +42,55 @@
 	loadCSS('lib/CodeMirror/theme/jtalk.css', 'js');
     }
 
-    window.loadJtalk = function(files, prefix) {
+    window.loadJtalk = function(spec) {
+	/* 
+	 example: 
+	 loadJtalk({
+	   files: ['MyCategory1.js', 'MyCategory2.js'], 
+	   ready: function() {smalltalk.Browser._open()}
+	 })
+	*/
+
+	deploy = spec.deploy;
 	loadDependencies();
-	loadIDEDependencies();
-	loadCSS('jtalk.css');
-	loadCSS('sunit.css');
-	loadJS("boot.js");
-	loadJS("Kernel.js");
-	loadJS("Canvas.js");
-	loadJS("JQuery.js");
-	loadJS("Compiler.js");
-	loadJS("parser.js");
-	loadJS("IDE.js");
-	loadJS("SUnit.js");
-	loadJS("Examples.js");
-	loadJS("Benchfib.js");
-	loadJS("Kernel-Tests.js");
-	loadJS("JQuery-Tests.js");
-	loadJS("TrySmalltalk.js");
-	if(files) {
-	    for(var i=0; i < files.length; i++) {
-		loadJS(files[i], prefix);
-	    }
-	}
+	if(deploy) {
+	    loadJS("boot.js");
+	    loadJS("Kernel.deploy.js");
+	    loadJS("Canvas.deploy.js");
+	    loadJS("JQuery.deploy.js");
+	} else {
 
-	loadJS("init.js");
-    }
+	    loadIDEDependencies();
+	    loadCSS('jtalk.css');
+	    loadCSS('sunit.css');
+	    loadJS("boot.js");
+	    loadJS("Kernel.js");
+	    loadJS("Canvas.js");
+	    loadJS("JQuery.js");
+	    loadJS("Compiler.js");
+	    loadJS("parser.js");
+	    loadJS("IDE.js");
+	    loadJS("SUnit.js");
+	    loadJS("Examples.js");
+	    loadJS("Benchfib.js");
+	    loadJS("Kernel-Tests.js");
+	    loadJS("JQuery-Tests.js");
+	}
 
-    window.loadJtalkDeploy = function(files, prefix) {
-	loadDependencies();
-	loadJS("boot.js");
-	loadJS("Kernel.deploy.js");
-	loadJS("Canvas.deploy.js");
-	loadJS("JQuery.deploy.js");
+	if(spec.files) {
+	    for(var i=0; i < spec.files.length; i++) {
+		loadJS(spec.files[i], spec.prefix);
+	    }
+	}
 
-	if(files){
-	    for(var i=0; i < files.length; i++) {
-		loadJS(files[i], prefix);
+	smalltalkReady = function() {
+	    if(spec.ready) {
+		spec.ready();
 	    }
+	    if(deploy) {smalltalk.setDeploymentMode()}
 	}
 
 	loadJS("init.js");
-	loadJS("deploy.js");
     }
+
 })();