src/cm/media/js/lib/yui/yui3.0.0/examples/get/assets/getNews.js
changeset 0 40c8f766c9b8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cm/media/js/lib/yui/yui3.0.0/examples/get/assets/getNews.js	Mon Nov 23 15:14:29 2009 +0100
@@ -0,0 +1,118 @@
+//create a namespace for this example:
+YAHOO.namespace("example.GetNews");
+
+
+//This example uses the "Module Pattern"; a full explanation of 
+//this pattern can be found on yuiblog:
+// http://yuiblog.com/blog/2007/06/12/module-pattern
+YAHOO.example.GetNews = function() {
+
+	//set up some shortcuts in case our typing fingers
+	//get lazy:
+	var Event = YAHOO.util.Event,
+		Dom = YAHOO.util.Dom,
+		JSON = YAHOO.lang.JSON,
+		Button = YAHOO.widget.Button,
+		Get = YAHOO.util.Get,
+		elResults = Dom.get("results");
+		
+	//we won't use the Get Utility's success handler in this example
+	//because the web service we're using has a built-in callback
+	//mechanism.  But we'll stub it out here and use it to simply
+	//log a message to the logger:
+	var onGetNewsSuccess = function() {
+		YAHOO.log("The Get Utility has fired the success handler indicating that the requested script has loaded and is ready for use.", "info", "example");
+	}
+	
+	//function to retrieve data from Yahoo! News Search web service --
+	//http://developer.yahoo.com/search/news/V1/newsSearch.html
+	var getNewsData = function() {
+		YAHOO.log("Button clicked; getGetNewsData firing.", "info", "example");
+		
+		//Load the transitional state of the results section:
+		elResults.innerHTML = "<h3>Retrieving news search results for for " +
+			Dom.get("searchString").value + ":</h3>" +
+			"<img src='http://l.yimg.com/a/i/nt/ic/ut/bsc/busybar_1.gif' " +
+			"alt='Please wait...'>";
+		
+		//prepare the URL for the Yahoo Site Explorer API:
+		var sURL = "http://search.yahooapis.com/NewsSearchService/V1/newsSearch?" +
+			"appid=3wEDxLHV34HvAU2lMnI51S4Qra5m.baugqoSv4gcRllqqVZm3UrMDZWToMivf5BJ3Mom" +
+			"&results=10&output=json&" +
+			"&callback=YAHOO.example.GetNews.callback" +
+			"&query=" + encodeURIComponent(Dom.get("searchString").value);
+		
+		//This simple line is the call to the Get Utility; we pass
+		//in the URL and the configuration object, which in this case
+		//consists merely of our success and failure callbacks:
+		var transactionObj = Get.script(sURL, {
+			onSuccess: onGetNewsSuccess,
+			scope    : this
+		});
+		
+		//The script method returns a single-field object containing the
+		//tranaction id:
+		YAHOO.log("Get Utility transaction started; transaction object: " + YAHOO.lang.dump(transactionObj), "info", "example");
+		
+	}
+
+	return {
+		init: function() {
+			//suppress default form behavior
+			Event.on("newsSearch", "submit", function(e) {
+				Event.preventDefault(e);
+				getNewsData();
+			}, this, true);
+		
+			//instantiate Button:
+			var oButton = new Button("getNewsData");
+			YAHOO.log("GetNews Button instantiated.", "info", "example");
+			getNewsData();
+		},
+
+		callback: function(results) {
+			YAHOO.log("Web service returned data to YAHOO.example.GetNews.callback; beginning to process.", "info", "example");
+			//work with the returned data to extract meaningful fields:
+			var aResults = results.ResultSet.Result;
+			var totalLinks = results.ResultSet.totalResultsAvailable;
+			var returnedLinkCount = results.ResultSet.totalResultsReturned;
+			
+			if(returnedLinkCount) {//there are inbound links; process and display them:
+			
+				//write header and open list of inbound links:			
+				var html = "<h3>There are " +
+					totalLinks + 
+					" news items on this topic; here are the first " + 
+					returnedLinkCount +
+					":</h3><ol>";
+				
+				//process list of inbound links:
+				for (var i=0; i < aResults.length; i++) {
+					html += "<li><strong><a href='" +
+						aResults[i].Url +
+						"'>" + aResults[i].Title +
+						"</a>:</strong> " + aResults[i].Summary +
+						"</li>";
+				}
+				
+				//close list of inbound links
+				html += "</ol>";
+				
+			} else {//no inbound links exist for this page:
+			
+				var html = "<h3>There are no news items available for the topic specified.</h3";
+				
+			}
+			
+			//insert string into DOM:
+			elResults.innerHTML = html;			
+		}
+	}
+}();
+
+//Initialize the example when the DOM is completely loaded:
+YAHOO.util.Event.onDOMReady(
+	YAHOO.example.GetNews.init, 
+	YAHOO.example.GetNews, 		//pass this object to init and...
+	true);								//...run init in the passed object's
+										//scope
\ No newline at end of file