123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- /*
- Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
- */
- if(!dojo._hasResource["dojox.widget.DynamicTooltip"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
- dojo._hasResource["dojox.widget.DynamicTooltip"] = true;
- dojo.provide("dojox.widget.DynamicTooltip");
- dojo.experimental("dojox.widget.DynamicTooltip");
- dojo.require("dijit.Tooltip");
- dojo.requireLocalization("dijit", "loading", null, "ROOT,ar,az,bg,ca,cs,da,de,el,es,fi,fr,he,hr,hu,it,ja,kk,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw");
- dojo.declare("dojox.widget.DynamicTooltip", dijit.Tooltip,
- {
- // summary:
- // Extention of dijit.Tooltip providing content set via XHR
- // request via href param
- // hasLoaded: Boolean
- // false if the contents are yet to be loaded from the HTTP request
- hasLoaded: false,
-
- // href: String
- // location from where to fetch the contents
- href: "",
-
- // label: String
- // contents to diplay in the tooltip. Initialized to a loading icon.
- label: "",
- // preventCache: Boolean
- // Cache content retreived externally
- preventCache: false,
-
- postMixInProperties: function(){
- this.inherited(arguments);
- this._setLoadingLabel();
- },
-
- _setLoadingLabel: function(){
- // summary:
- // Changes the tooltip label / contents to loading message, only if
- // there's an href param, otherwise acts as normal tooltip
- if(this.href){
- this.label = dojo.i18n.getLocalization("dijit", "loading", this.lang).loadingState;
- }
- },
- // MOW: this is a new widget, do we really need a deprecated stub?
- // setHref: function(/*String|Uri*/ href){
- // // summary:
- // // Deprecated. Use set('href', ...) instead.
- // dojo.deprecated("dojox.widget.DynamicTooltip.setHref() is deprecated. Use set('href', ...) instead.", "", "2.0");
- // return this.set("href", href);
- // },
- _setHrefAttr: function(/*String|Uri*/ href){
- // summary:
- // Hook so attr("href", ...) works.
- // description:
- // resets so next show loads new href
- // href:
- // url to the content you want to show, must be within the same domain as your mainpage
-
- this.href = href;
- this.hasLoaded = false;
- },
-
- loadContent: function(node){
- // summary:
- // Download contents of href via XHR and display
- // description:
- // 1. checks if content already loaded
- // 2. if not, sends XHR to download new data
- if(!this.hasLoaded && this.href){
- this._setLoadingLabel();
- this.hasLoaded = true;
-
- dojo.xhrGet({
- url: this.href,
- handleAs: "text",
- tooltipWidget: this,
- load: function(response, ioArgs){
- this.tooltipWidget.label = response;
- this.tooltipWidget.close();
- this.tooltipWidget.open(node);
- },
- preventCache: this.preventCache
- });
- }
- },
-
- refresh: function(){
- // summary:
- // Allows re-download of contents of href and display
- // Useful with preventCache = true
- this.hasLoaded = false;
- },
-
- open: function(/*DomNode*/ target){
- // summary:
- // Display the tooltip; usually not called directly.
-
- target = target || (this._connectNodes && this._connectNodes[0]);
- if(!target){ return; }
- this.loadContent(target);
- this.inherited(arguments);
- }
- }
- );
- }
|