dojox/widget/UpgradeBar.js

  • Provides:

    • dojox.widget.UpgradeBar
  • Requires:

    • dojo.window in common in project dojo
    • dojo.fx in common in project dojo
    • dojo.cookie in common in project dojo
    • dijit._Widget in common in project dijit
    • dijit._Templated in common in project dijit
  • dojox.widget.UpgradeBar

    • type
      Function
    • chains:
      • dijit._Widget: (prototype)
      • dijit._Widget: (call)
      • dijit._Templated: (call)
    • mixins:
      • dijit._Templated.prototype: (prototype)
    • summary
      Shows a bar at the top of the screen when the user is to
      be notified that they should upgrade their browser or a
      plugin.
    • description
      You can insert custom validations to trigger the UpgradeBar
      to display. An evaluation of 'true' shows the bar (as this
      version *is* less than it should be). Multiple validations
      may be checked, although only the first in the list will be
      displayed.
      Markup and programmatic are supported. Markup is a little
      cleaner, since a majority of the parameters are the HTML
      snippets to be displayed. In markup, the validate code should
      be an expression that will evaluate to true or false. This
      expression is wrapped in a try/catch, so if it blows up, it
      is assumed to be true and trigger the bar.
      In programmtic, a function should be used that returns true
      or false. You would need to use your own try/catch in that.
    • example
      See tests for examples.
    • parameters:
      • props: (typeof )
      • node: (typeof )
    • source: [view]
        if(!props.notifications && node){
         // From markup. Create the notifications Array from the
         // srcRefNode children.
         dojo.forEach(node.childNodes, function(n){
          if(n.nodeType==1){
           var val = dojo.attr(n, "validate");
           this.notifications.push({
            message:n.innerHTML,
            validate:function(){
             // the function that fires to determine if the
             // bar shows or not.
             var evals = true;
             try{
              evals = dojo.eval(val);
             }catch(e){ /* squelch. it's true.*/ }
             return evals;
            }
           });
          }
         }, this);
        }
  • dojox.widget.UpgradeBar.notifications

    • type
      Array
    • summary
      An array of objects that hold the criteria for upgrades.
      message: String
      The message to display in the bar. Can be HTML.
      validate:Function
      The expression to evaluate to determine if the
      bar should show or not. Should be a simple expression
      if used in HTML:
      
      	<div validate="!google.gears">
      	<div validate="dojo.isIE<8">
  • dojox.widget.UpgradeBar.checkNotifications

    • type
      Function
    • source: [view]
        if(!this.notifications.length){
         // odd. why use the bar but not set any notifications?
         return;
        }


        for(var i=0;i   var evals = this.notifications[i].validate();
         if(evals){
          this.notify(this.notifications[i].message);
          // Validation resulted in true, meaning a feature is missing
          // Don't check any other messages. One at a time.
          break;
         }
        }
    • summary
      Internal. Go through the notifications Array
      and check for any that evaluate to true.
    • tags:
  • dojox.widget.UpgradeBar.postCreate

    • type
      Function
    • source: [view]
        this.inherited(arguments);
        if(this.domNode.parentNode){
         dojo.style(this.domNode, "display", "none");
        }
        dojo.mixin(this.attributeMap, {
         message:{ node:"messageNode", type:"innerHTML" }
        });
        if(!this.noRemindButton){
         dojo.destroy(this.dontRemindButtonNode)
        }
        if(dojo.isIE==6){
         // IE6 is challenged when it comes to 100% width.
         // It thinks the body has more padding and more
         // margin than it really does. It would work to
         // set the body pad and margin to 0, but we can't
         // set that and disturb a potential layout.
         //
         var self = this;
         var setWidth = function(){
          var v = dojo.window.getBox();
          dojo.style(self.domNode, "width", v.w+"px");
         }
         this.connect(window, "resize", function(){
          setWidth();
         });


         setWidth();
        }
        dojo.addOnLoad(this, "checkNotifications");
        //this.checkNotifications();
    • summary
  • dojox.widget.UpgradeBar.notify

    • type
      Function
    • parameters:
      • msg: (typeof )
    • source: [view]
        if(dojo.cookie("disableUpgradeReminders")){
         return;
        }
        if(!this.domNode.parentNode || !this.domNode.parentNode.innerHTML){
         document.body.appendChild(this.domNode);
        }
        dojo.style(this.domNode, "display", "");
        if(msg){
         this.set("message", msg);
        }
    • summary
      Triggers the bar to display. An internal function,
      but could ne called externally for fun.
    • tags:
  • dojox.widget.UpgradeBar.show

    • type
      Function
    • source: [view]
        this._bodyMarginTop = dojo.style(dojo.body(), "marginTop");
        this._size = dojo.contentBox(this.domNode).h;
        dojo.style(this.domNode, { display:"block", height:0, opacity:0 });


        if(!this._showAnim){
         this._showAnim = dojo.fx.combine([
          dojo.animateProperty({ node:dojo.body(), duration:500, properties:{ marginTop:this._bodyMarginTop+this._size } }),
          dojo.animateProperty({ node:this.domNode, duration:500, properties:{ height:this._size, opacity:1 } })
         ]);
        }
        this._showAnim.play();
    • summary
      Internal. Shows the bar. Do not call directly.
      Use notify();
    • tags:
  • dojox.widget.UpgradeBar.hide

    • type
      Function
    • source: [view]
        if(!this._hideAnim){
         this._hideAnim = dojo.fx.combine([
          dojo.animateProperty({ node:dojo.body(), duration:500, properties:{ marginTop:this._bodyMarginTop } }),
          dojo.animateProperty({ node:this.domNode, duration:500, properties:{ height:0, opacity:0 } })
         ]);
         dojo.connect(this._hideAnim, "onEnd", this, function(){
          dojo.style(this.domNode, "display", "none");
         });
        }
        this._hideAnim.play();
    • summary
      Hides the bar. May be called externally.
  • dojox.widget.UpgradeBar._onDontRemindClick

    • type
      Function
    • source: [view]
        dojo.cookie("disableUpgradeReminders", true, { expires:3650 });
        this.hide();
    • summary
      Called when user clicks the "do not remind" link.
    • tags:
  • dojox.widget.UpgradeBar._onCloseEnter

    • type
      Function
    • source: [view]
        dojo.addClass(this.closeButtonNode, "dojoxUpgradeBarCloseIcon-hover");
    • summary
      Called when user hovers over close icon
    • tags:
  • dojox.widget.UpgradeBar._onCloseLeave

    • type
      Function
    • source: [view]
        dojo.removeClass(this.closeButtonNode, "dojoxUpgradeBarCloseIcon-hover");
    • summary
      Called when user stops hovering over close icon
    • tags:
  • dojox.widget.UpgradeBar._bodyMarginTop

    • summary
  • dojox.widget.UpgradeBar._size

    • summary
  • dojox.widget.UpgradeBar._showAnim

    • summary
  • dojox.widget.UpgradeBar._hideAnim

    • summary
  • this.attributeMap.message

    • summary
  • dojox.widget

    • type
      Object
    • summary
  • dojox

    • type
      Object
    • summary