--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cm/media/js/lib/yui/yui3.0.0/examples/get/get-script-basic_clean.html Mon Nov 23 15:14:29 2009 +0100
@@ -0,0 +1,242 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=utf-8">
+<title>Getting a Script Node with JSON Data</title>
+
+<style type="text/css">
+/*margin and padding on body element
+ can introduce errors in determining
+ element position and are not recommended;
+ we turn them off as a foundation for YUI
+ CSS treatments. */
+body {
+ margin:0;
+ padding:0;
+}
+</style>
+
+<link type="text/css" rel="stylesheet" href="../../build/cssfonts/fonts-min.css" />
+<script type="text/javascript" src="../../build/yui/yui-debug.js"></script>
+
+
+<!--begin custom header content for this example-->
+<style type="text/css">
+#container ol {
+ /*bringing lists on to the page with breathing room */
+ margin-left:2em !important;
+}
+
+#container ol li {
+ /*giving OL's LIs generated numbers*/
+ list-style: decimal outside !important;
+}
+
+#container h3 {
+ margin-top: 1em;
+}
+</style>
+<!--end custom header content for this example-->
+
+</head>
+
+<body class=" yui-skin-sam">
+
+<h1>Getting a Script Node with JSON Data</h1>
+
+<div class="exampleIntro">
+ <p>This example employs the <a href="http://developer.yahoo.com/yui/3/get/">YUI
+Get Utility</a> in a simple use case: retrieving JSON data from a cross-domain
+web service. While this is a relatively common usage, it's important to
+understand the security ramifications of this technique. Scripts loaded via the
+Get Utility (or any other "script node" solution) execute immediately
+once they are loaded. If you do not fully control (or fully trust) the script's
+source, this is not a safe technique and it can put the security of your users'
+data at risk. (For more information on the dangers of cross-site scripting
+[XSS] exploits, <a
+href="http://en.wikipedia.org/wiki/Cross-site_scripting">check out the
+Wikipedia entry on this subject</a>.)</p> <p>Here, we will use a trusted Yahoo!
+Search web service called <a
+href="http://developer.yahoo.com/search/siteexplorer/V1/inlinkData.html">Site
+Explorer</a> to return a list of inbound links for a given URL. The principal
+difference between this example and similar examples using <a
+href="http://developer.yahoo.com/yui/3/io/">YUI IO Utility</a> is
+that this technique does not require a server-side proxy. The browser connects
+directly to the third-party web service without bouncing through a proxy page
+as is required when using the XMLHttpRequest object (on which IO Utility
+relies).</p>
+
+</div>
+
+<!--BEGIN SOURCE CODE FOR EXAMPLE =============================== -->
+
+<div id="container">
+
+ <!--Use a real form that works without JavaScript:-->
+ <form method="GET" action="http://siteexplorer.search.yahoo.com/advsearch" id="siteExplorer">
+
+ <label for="searchString">Site URL:</label> <input type="text" name="p" id="searchString" value="http://developer.yahoo.com/yui" size="40">
+
+ <input type="hidden" name="bwm" value="i">
+ <input type="hidden" name="bwms" value="p">
+
+ <input type="submit" id="siteExplorerData" value="Click here to get JSON data.">
+
+ </form>
+
+ <div id="results">
+ <!--JSON output will be written to the DOM here-->
+
+ </div>
+</div>
+
+<script type="text/javascript">
+
+YUI({base:"../../build/", timeout: 10000, filter:"debug", logInclude: {get:true, event:true, example:true}}).use("node", "dump",
+
+function(Y) {
+
+ // We are going to create a global variable to get the
+ // data back from the web service
+ MyNamespace = YUI.namespace('example.SiteExplorer');
+
+ var elResults = Y.one("#results"),
+ tIds = {},
+ loading = false,
+ current = null;
+
+ // We use the Get Utility's success handler in conjunction with
+ // the web service callback in order to detect bad responses
+ // from the web service.
+ var onSiteExplorerSuccess = function(o) {
+
+ // stop blocking requests
+ loading = false;
+
+ // A success response means the script node is inserted. However, the
+ // utility is unable to detect whether or not the content of the script
+ // node is correct, or even if there was a bad response (like a 404
+ // error). To get around this, we use the web service callback to
+ // verify that the script contents was correct.
+ if (o.tId in tIds) {
+Y.log("The Get Utility has fired the success handler indicating that the " +
+ "requested script has loaded and is ready for use.", "info", "example");
+ } else {
+Y.log("The Get utility has fired onSuccess but the webservice callback did not " +
+ "fire. We could retry the transaction here, or notify the user of the " +
+ "failure.", "info", "example");
+ }
+
+ };
+
+ var onSiteExplorerFailure = function(o) {
+Y.log("The Get Utility failed.", "info", "example");
+ };
+
+ var onSiteExplorerTimeout = function(o) {
+Y.log("The Get Utility timed out.", "info", "example");
+ };
+
+ //function to retrieve data from Yahoo! Site Explorer web service --
+ // http://developer.yahoo.com/search/siteexplorer/V1/inlinkData.html
+ var getSiteExplorerData = function() {
+ Y.log("Button clicked; getSiteExplorerData firing.", "info", "example");
+
+ // block multiple requests
+ if (loading) {
+ return;
+ }
+ loading = true;
+
+ //Load the transitional state of the results section:
+ elResults.set("innerHTML", "<h3>Retrieving incoming links for " +
+ Y.one("#searchString").get('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/SiteExplorerService/V1/inlinkData?" +
+ "appid=3wEDxLHV34HvAU2lMnI51S4Qra5m.baugqoSv4gcRllqqVZm3UrMDZWToMivf5BJ3Mom" +
+ "&results=20&output=json&omit_inlinks=domain" +
+ "&callback=MyNamespace.callback" +
+ "&query=" + encodeURIComponent(Y.one("#searchString").get('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 = Y.Get.script(sURL, {
+ onSuccess: onSiteExplorerSuccess,
+ onFailure: onSiteExplorerFailure,
+ onTimeout: onSiteExplorerTimeout,
+ timeout: 20000,
+ context: Y
+ });
+
+ //The script method returns a single-field object containing the
+ //tranaction id:
+ Y.log("Get Utility transaction started; transaction object: " + Y.dump(transactionObj), "info", "example");
+
+ // keep track of the current transaction id. The transaction will be
+ // considered complete only if the web service callback is executed.
+ current = transactionObj.tId;
+ };
+
+ MyNamespace.callback = function(results) {
+ Y.log("Web service returned data to Y.example.SiteExplorer.callback; beginning to process.", "info", "example");
+
+ // Mark the transaction as complete. This will be checked by the onSuccess
+ // handler to determine if the transaction really succeeded.
+ tIds[current] = true;
+
+ //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(aResults) {//there are inbound links; process and display them:
+
+ //write header and open list of inbound links:
+ var html = "<h3>There are " +
+ totalLinks +
+ " inbound links for this page; here are the first " +
+ returnedLinkCount +
+ ":</h3><ol>";
+
+ //process list of inbound links:
+ for (var i=0; i < aResults.length; i++) {
+ html += "<li><strong>" +
+ aResults[i].Title +
+ ":</strong> <a href='" +
+ aResults[i].Url +
+ "'>" + aResults[i].Url +
+ "</a></li>";
+ }
+
+ //close list of inbound links
+ html += "</ol>";
+
+ } else {//no inbound links exist for this page:
+
+ var html = "<h3>There are no inbound links for the page specified.</h3>";
+
+ }
+
+ //insert string into DOM:
+ elResults.set('innerHTML', html);
+ };
+
+ //suppress default form behavior
+ Y.on("submit", function(e) {
+ e.preventDefault();
+ getSiteExplorerData();
+ }, "#siteExplorer");
+
+});
+
+</script>
+
+<!--END SOURCE CODE FOR EXAMPLE =============================== -->
+
+</body>
+</html>