src/cm/media/js/lib/yui/yui3.0.0/examples/get/assets/getNews.js
author raph
Fri, 15 Jan 2010 09:21:47 +0100
changeset 82 2d964b42de45
parent 0 40c8f766c9b8
permissions -rw-r--r--
fix howto generate message files
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
//create a namespace for this example:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
YAHOO.namespace("example.GetNews");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
//This example uses the "Module Pattern"; a full explanation of 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
//this pattern can be found on yuiblog:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
// http://yuiblog.com/blog/2007/06/12/module-pattern
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
YAHOO.example.GetNews = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
	//set up some shortcuts in case our typing fingers
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
	//get lazy:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
	var Event = YAHOO.util.Event,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
		Dom = YAHOO.util.Dom,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
		JSON = YAHOO.lang.JSON,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
		Button = YAHOO.widget.Button,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
		Get = YAHOO.util.Get,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
		elResults = Dom.get("results");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
	//we won't use the Get Utility's success handler in this example
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
	//because the web service we're using has a built-in callback
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
	//mechanism.  But we'll stub it out here and use it to simply
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
	//log a message to the logger:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
	var onGetNewsSuccess = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
		YAHOO.log("The Get Utility has fired the success handler indicating that the requested script has loaded and is ready for use.", "info", "example");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
	//function to retrieve data from Yahoo! News Search web service --
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
	//http://developer.yahoo.com/search/news/V1/newsSearch.html
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
	var getNewsData = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
		YAHOO.log("Button clicked; getGetNewsData firing.", "info", "example");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
		//Load the transitional state of the results section:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
		elResults.innerHTML = "<h3>Retrieving news search results for for " +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
			Dom.get("searchString").value + ":</h3>" +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
			"<img src='http://l.yimg.com/a/i/nt/ic/ut/bsc/busybar_1.gif' " +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
			"alt='Please wait...'>";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
		//prepare the URL for the Yahoo Site Explorer API:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
		var sURL = "http://search.yahooapis.com/NewsSearchService/V1/newsSearch?" +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
			"appid=3wEDxLHV34HvAU2lMnI51S4Qra5m.baugqoSv4gcRllqqVZm3UrMDZWToMivf5BJ3Mom" +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
			"&results=10&output=json&" +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
			"&callback=YAHOO.example.GetNews.callback" +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
			"&query=" + encodeURIComponent(Dom.get("searchString").value);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
		//This simple line is the call to the Get Utility; we pass
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
		//in the URL and the configuration object, which in this case
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
		//consists merely of our success and failure callbacks:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
		var transactionObj = Get.script(sURL, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
			onSuccess: onGetNewsSuccess,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
			scope    : this
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
		});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
		//The script method returns a single-field object containing the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
		//tranaction id:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
		YAHOO.log("Get Utility transaction started; transaction object: " + YAHOO.lang.dump(transactionObj), "info", "example");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    57
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    58
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    59
	return {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    60
		init: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    61
			//suppress default form behavior
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    62
			Event.on("newsSearch", "submit", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    63
				Event.preventDefault(e);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    64
				getNewsData();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    65
			}, this, true);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    66
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    67
			//instantiate Button:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    68
			var oButton = new Button("getNewsData");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    69
			YAHOO.log("GetNews Button instantiated.", "info", "example");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    70
			getNewsData();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    71
		},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    72
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    73
		callback: function(results) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    74
			YAHOO.log("Web service returned data to YAHOO.example.GetNews.callback; beginning to process.", "info", "example");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    75
			//work with the returned data to extract meaningful fields:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    76
			var aResults = results.ResultSet.Result;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    77
			var totalLinks = results.ResultSet.totalResultsAvailable;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    78
			var returnedLinkCount = results.ResultSet.totalResultsReturned;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    79
			
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    80
			if(returnedLinkCount) {//there are inbound links; process and display them:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    81
			
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    82
				//write header and open list of inbound links:			
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    83
				var html = "<h3>There are " +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    84
					totalLinks + 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    85
					" news items on this topic; here are the first " + 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    86
					returnedLinkCount +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    87
					":</h3><ol>";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    88
				
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    89
				//process list of inbound links:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    90
				for (var i=0; i < aResults.length; i++) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    91
					html += "<li><strong><a href='" +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    92
						aResults[i].Url +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    93
						"'>" + aResults[i].Title +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    94
						"</a>:</strong> " + aResults[i].Summary +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    95
						"</li>";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    96
				}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    97
				
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    98
				//close list of inbound links
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    99
				html += "</ol>";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   100
				
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   101
			} else {//no inbound links exist for this page:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   102
			
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   103
				var html = "<h3>There are no news items available for the topic specified.</h3";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   104
				
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   105
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   106
			
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   107
			//insert string into DOM:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   108
			elResults.innerHTML = html;			
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   109
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   110
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   111
}();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   112
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   113
//Initialize the example when the DOM is completely loaded:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   114
YAHOO.util.Event.onDOMReady(
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   115
	YAHOO.example.GetNews.init, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   116
	YAHOO.example.GetNews, 		//pass this object to init and...
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   117
	true);								//...run init in the passed object's
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   118
										//scope