Ticket #5712: trac_5712-interrupt-notification.6.patch

File trac_5712-interrupt-notification.6.patch, 88.9 KB (added by mpatel, 10 years ago)

Rebased against SageNB 0.7 at #8051. Replaces previous.

  • new file sagenb/data/jquery/plugins/achtung/AUTHORS.txt

    # HG changeset patch
    # User Tim Dumol <tim@timdumol.com>
    # Date 1263989333 -28800
    # Node ID 95015cee564adefaaab48a4d8b66758113e31b84
    # Parent  f4b26d496794b294ebeda4cbf38b910e087a2543
    #5712/sagenb: Add jQuery achtung for alerts, use for interrupts
    
    diff --git a/sagenb/data/jquery/plugins/achtung/AUTHORS.txt b/sagenb/data/jquery/plugins/achtung/AUTHORS.txt
    new file mode 100644
    - +  
     1achtung 0.3.0
     2
     3Josh Varner
     4http://achtung-ui.googlecode.com/
     5
     6===============================================================================
     7For portions from jQuery UI:
     8===============================================================================
     9
     10jQuery UI Authors (http://ui.jquery.com/about)
     11
     12This software consists of voluntary contributions made by many
     13individuals. For exact contribution history, see the revision history
     14and logs, available at http://jquery-ui.googlecode.com/svn/
     15
     16Brandon Aaron
     17Paul Bakaus (paulbakaus.com)
     18David Bolter
     19Rich Caloggero
     20Chi Cheng (cloudream@gmail.com)
     21Colin Clark (http://colin.atrc.utoronto.ca/)
     22Michelle D'Souza
     23Aaron Eisenberger (aaronchi@gmail.com)
     24Ariel Flesler
     25Bohdan Ganicky
     26Scott González
     27Marc Grabanski (m@marcgrabanski.com)
     28Klaus Hartl (stilbuero.de)
     29Scott Jehl
     30Cody Lindley
     31Eduardo Lundgren (eduardolundgren@gmail.com)
     32Todd Parker
     33John Resig
     34Patty Toland
     35Ca-Phun Ung (yelotofu.com)
     36Keith Wood (kbwood@virginbroadband.com.au)
     37Maggie Costello Wachs
     38Richard D. Worth (rdworth.org)
     39Jörn Zaefferer (bassistance.de)
  • new file sagenb/data/jquery/plugins/achtung/LICENSE.txt

    diff --git a/sagenb/data/jquery/plugins/achtung/LICENSE.txt b/sagenb/data/jquery/plugins/achtung/LICENSE.txt
    new file mode 100644
    - +  
     1achtung 0.3.0
     2Copyright (c) 2009 Josh Varner, http://achtung-ui.googlecode.com/
     3
     4Permission is hereby granted, free of charge, to any person obtaining
     5a copy of this software and associated documentation files (the
     6"Software"), to deal in the Software without restriction, including
     7without limitation the rights to use, copy, modify, merge, publish,
     8distribute, sublicense, and/or sell copies of the Software, and to
     9permit persons to whom the Software is furnished to do so, subject to
     10the following conditions:
     11
     12The above copyright notice and this permission notice shall be
     13included in all copies or substantial portions of the Software.
     14
     15THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
     16EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
     17MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
     18NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
     19LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
     20OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
     21WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  • new file sagenb/data/jquery/plugins/achtung/ui.achtung-min.css

    diff --git a/sagenb/data/jquery/plugins/achtung/ui.achtung-min.css b/sagenb/data/jquery/plugins/achtung/ui.achtung-min.css
    new file mode 100644
    - +  
     1* html #achtung-overlay{position:absolute;}* html .achtung{width:280px;}#achtung-overlay{overflow:hidden;position:fixed;top:15px;right:15px;width:280px;z-index:50;}.achtung{display:none;margin-bottom:8px;padding:15px 15px;background-color:#000;color:white;width:250px;font-weight:bold;position:relative;overflow:hidden;-moz-box-shadow:#aaa 1px 1px 2px;-webkit-box-shadow:#aaa 1px 1px 2px;box-shadow:#aaa 1px 1px 2px;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;opacity:.85;filter:Alpha(Opacity=85);}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png);}.ui-icon-carat-1-n{background-position:0 0;}.ui-icon-carat-1-ne{background-position:-16px 0;}.ui-icon-carat-1-e{background-position:-32px 0;}.ui-icon-carat-1-se{background-position:-48px 0;}.ui-icon-carat-1-s{background-position:-64px 0;}.ui-icon-carat-1-sw{background-position:-80px 0;}.ui-icon-carat-1-w{background-position:-96px 0;}.ui-icon-carat-1-nw{background-position:-112px 0;}.ui-icon-carat-2-n-s{background-position:-128px 0;}.ui-icon-carat-2-e-w{background-position:-144px 0;}.ui-icon-triangle-1-n{background-position:0 -16px;}.ui-icon-triangle-1-ne{background-position:-16px -16px;}.ui-icon-triangle-1-e{background-position:-32px -16px;}.ui-icon-triangle-1-se{background-position:-48px -16px;}.ui-icon-triangle-1-s{background-position:-64px -16px;}.ui-icon-triangle-1-sw{background-position:-80px -16px;}.ui-icon-triangle-1-w{background-position:-96px -16px;}.ui-icon-triangle-1-nw{background-position:-112px -16px;}.ui-icon-triangle-2-n-s{background-position:-128px -16px;}.ui-icon-triangle-2-e-w{background-position:-144px -16px;}.ui-icon-arrow-1-n{background-position:0 -32px;}.ui-icon-arrow-1-ne{background-position:-16px -32px;}.ui-icon-arrow-1-e{background-position:-32px -32px;}.ui-icon-arrow-1-se{background-position:-48px -32px;}.ui-icon-arrow-1-s{background-position:-64px -32px;}.ui-icon-arrow-1-sw{background-position:-80px -32px;}.ui-icon-arrow-1-w{background-position:-96px -32px;}.ui-icon-arrow-1-nw{background-position:-112px -32px;}.ui-icon-arrow-2-n-s{background-position:-128px -32px;}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px;}.ui-icon-arrow-2-e-w{background-position:-160px -32px;}.ui-icon-arrow-2-se-nw{background-position:-176px -32px;}.ui-icon-arrowstop-1-n{background-position:-192px -32px;}.ui-icon-arrowstop-1-e{background-position:-208px -32px;}.ui-icon-arrowstop-1-s{background-position:-224px -32px;}.ui-icon-arrowstop-1-w{background-position:-240px -32px;}.ui-icon-arrowthick-1-n{background-position:0 -48px;}.ui-icon-arrowthick-1-ne{background-position:-16px -48px;}.ui-icon-arrowthick-1-e{background-position:-32px -48px;}.ui-icon-arrowthick-1-se{background-position:-48px -48px;}.ui-icon-arrowthick-1-s{background-position:-64px -48px;}.ui-icon-arrowthick-1-sw{background-position:-80px -48px;}.ui-icon-arrowthick-1-w{background-position:-96px -48px;}.ui-icon-arrowthick-1-nw{background-position:-112px -48px;}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px;}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px;}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px;}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px;}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px;}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px;}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px;}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px;}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px;}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px;}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px;}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px;}.ui-icon-arrowreturn-1-w{background-position:-64px -64px;}.ui-icon-arrowreturn-1-n{background-position:-80px -64px;}.ui-icon-arrowreturn-1-e{background-position:-96px -64px;}.ui-icon-arrowreturn-1-s{background-position:-112px -64px;}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px;}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px;}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px;}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px;}.ui-icon-arrow-4{background-position:0 -80px;}.ui-icon-arrow-4-diag{background-position:-16px -80px;}.ui-icon-extlink{background-position:-32px -80px;}.ui-icon-newwin{background-position:-48px -80px;}.ui-icon-refresh{background-position:-64px -80px;}.ui-icon-shuffle{background-position:-80px -80px;}.ui-icon-transfer-e-w{background-position:-96px -80px;}.ui-icon-transferthick-e-w{background-position:-112px -80px;}.ui-icon-folder-collapsed{background-position:0 -96px;}.ui-icon-folder-open{background-position:-16px -96px;}.ui-icon-document{background-position:-32px -96px;}.ui-icon-document-b{background-position:-48px -96px;}.ui-icon-note{background-position:-64px -96px;}.ui-icon-mail-closed{background-position:-80px -96px;}.ui-icon-mail-open{background-position:-96px -96px;}.ui-icon-suitcase{background-position:-112px -96px;}.ui-icon-comment{background-position:-128px -96px;}.ui-icon-person{background-position:-144px -96px;}.ui-icon-print{background-position:-160px -96px;}.ui-icon-trash{background-position:-176px -96px;}.ui-icon-locked{background-position:-192px -96px;}.ui-icon-unlocked{background-position:-208px -96px;}.ui-icon-bookmark{background-position:-224px -96px;}.ui-icon-tag{background-position:-240px -96px;}.ui-icon-home{background-position:0 -112px;}.ui-icon-flag{background-position:-16px -112px;}.ui-icon-calendar{background-position:-32px -112px;}.ui-icon-cart{background-position:-48px -112px;}.ui-icon-pencil{background-position:-64px -112px;}.ui-icon-clock{background-position:-80px -112px;}.ui-icon-disk{background-position:-96px -112px;}.ui-icon-calculator{background-position:-112px -112px;}.ui-icon-zoomin{background-position:-128px -112px;}.ui-icon-zoomout{background-position:-144px -112px;}.ui-icon-search{background-position:-160px -112px;}.ui-icon-wrench{background-position:-176px -112px;}.ui-icon-gear{background-position:-192px -112px;}.ui-icon-heart{background-position:-208px -112px;}.ui-icon-star{background-position:-224px -112px;}.ui-icon-link{background-position:-240px -112px;}.ui-icon-cancel{background-position:0 -128px;}.ui-icon-plus{background-position:-16px -128px;}.ui-icon-plusthick{background-position:-32px -128px;}.ui-icon-minus{background-position:-48px -128px;}.ui-icon-minusthick{background-position:-64px -128px;}.ui-icon-close{background-position:-80px -128px;}.ui-icon-closethick{background-position:-96px -128px;}.ui-icon-key{background-position:-112px -128px;}.ui-icon-lightbulb{background-position:-128px -128px;}.ui-icon-scissors{background-position:-144px -128px;}.ui-icon-clipboard{background-position:-160px -128px;}.ui-icon-copy{background-position:-176px -128px;}.ui-icon-contact{background-position:-192px -128px;}.ui-icon-image{background-position:-208px -128px;}.ui-icon-video{background-position:-224px -128px;}.ui-icon-script{background-position:-240px -128px;}.ui-icon-alert{background-position:0 -144px;}.ui-icon-info{background-position:-16px -144px;}.ui-icon-notice{background-position:-32px -144px;}.ui-icon-help{background-position:-48px -144px;}.ui-icon-check{background-position:-64px -144px;}.ui-icon-bullet{background-position:-80px -144px;}.ui-icon-radio-off{background-position:-96px -144px;}.ui-icon-radio-on{background-position:-112px -144px;}.ui-icon-pin-w{background-position:-128px -144px;}.ui-icon-pin-s{background-position:-144px -144px;}.ui-icon-play{background-position:0 -160px;}.ui-icon-pause{background-position:-16px -160px;}.ui-icon-seek-next{background-position:-32px -160px;}.ui-icon-seek-prev{background-position:-48px -160px;}.ui-icon-seek-end{background-position:-64px -160px;}.ui-icon-seek-first{background-position:-80px -160px;}.ui-icon-stop{background-position:-96px -160px;}.ui-icon-eject{background-position:-112px -160px;}.ui-icon-volume-off{background-position:-128px -160px;}.ui-icon-volume-on{background-position:-144px -160px;}.ui-icon-power{background-position:0 -176px;}.ui-icon-signal-diag{background-position:-16px -176px;}.ui-icon-signal{background-position:-32px -176px;}.ui-icon-battery-0{background-position:-48px -176px;}.ui-icon-battery-1{background-position:-64px -176px;}.ui-icon-battery-2{background-position:-80px -176px;}.ui-icon-battery-3{background-position:-96px -176px;}.ui-icon-circle-plus{background-position:0 -192px;}.ui-icon-circle-minus{background-position:-16px -192px;}.ui-icon-circle-close{background-position:-32px -192px;}.ui-icon-circle-triangle-e{background-position:-48px -192px;}.ui-icon-circle-triangle-s{background-position:-64px -192px;}.ui-icon-circle-triangle-w{background-position:-80px -192px;}.ui-icon-circle-triangle-n{background-position:-96px -192px;}.ui-icon-circle-arrow-e{background-position:-112px -192px;}.ui-icon-circle-arrow-s{background-position:-128px -192px;}.ui-icon-circle-arrow-w{background-position:-144px -192px;}.ui-icon-circle-arrow-n{background-position:-160px -192px;}.ui-icon-circle-zoomin{background-position:-176px -192px;}.ui-icon-circle-zoomout{background-position:-192px -192px;}.ui-icon-circle-check{background-position:-208px -192px;}.ui-icon-circlesmall-plus{background-position:0 -208px;}.ui-icon-circlesmall-minus{background-position:-16px -208px;}.ui-icon-circlesmall-close{background-position:-32px -208px;}.ui-icon-squaresmall-plus{background-position:-48px -208px;}.ui-icon-squaresmall-minus{background-position:-64px -208px;}.ui-icon-squaresmall-close{background-position:-80px -208px;}.ui-icon-grip-dotted-vertical{background-position:0 -224px;}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px;}.ui-icon-grip-solid-vertical{background-position:-32px -224px;}.ui-icon-grip-solid-horizontal{background-position:-48px -224px;}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px;}.ui-icon-grip-diagonal-se{background-position:-80px -224px;}.achtung .achtung-message-icon{margin-top:0;margin-left:-.5em;margin-right:.5em;float:left;zoom:1;}.achtung .ui-icon.achtung-close-button{overflow:hidden;float:right;position:relative;top:-8px;right:-8px;cursor:pointer;background-image:url(images/ui-icons_cccccc_256x240.png);}.achtung .ui-icon.achtung-close-button-hover{background-image:url(images/ui-icons_ffffff_256x240.png);}.achtungSuccess,.achtungFail,.achtungWait{opacity:.93;filter:Alpha(Opacity=93);}.achtungSuccess{background-color:#4DB559;}.achtungFail{background-color:#D64450;}.achtungWait{background-color:#658093;}.achtungSuccess .ui-icon.achtung-close-button,.achtungFail .ui-icon.achtung-close-button{background-image:url(images/ui-icons_444444_256x240.png);}.achtungSuccess .ui-icon.achtung-close-button-hover,.achtungFail .ui-icon.achtung-close-button-hover{background-image:url(images/ui-icons_000000_256x240.png);}.achtung .wait-icon{background-image:url('images/wait.gif');}.achtung .achtung-message{display:inline;}
     2 No newline at end of file
  • new file sagenb/data/jquery/plugins/achtung/ui.achtung-min.js

    diff --git a/sagenb/data/jquery/plugins/achtung/ui.achtung-min.js b/sagenb/data/jquery/plugins/achtung/ui.achtung-min.js
    new file mode 100644
    - +  
     1(function(a){a.fn.achtung=function(e){var b=(typeof e==="string"),d=Array.prototype.slice.call(arguments,0),c="achtung";return this.each(function(){var f=a.data(this,c);if(b&&e.substring(0,1)==="_"){return this}(!f&&!b&&a.data(this,c,new a.achtung(this))._init(d));(f&&b&&a.isFunction(f[e])&&f[e].apply(f,d.slice(1)))})};a.achtung=function(d){var b=Array.prototype.slice.call(arguments,0),c;if(!d||!d.nodeType){c=a("<div />");return c.achtung.apply(c,b)}this.$container=a(d)};a.extend(a.achtung,{version:"0.3.0",$overlay:false,defaults:{timeout:10,disableClose:false,icon:false,className:"",animateClassSwitch:false,showEffects:{opacity:"toggle",height:"toggle"},hideEffects:{opacity:"toggle",height:"toggle"},showEffectDuration:500,hideEffectDuration:700}});a.extend(a.achtung.prototype,{$container:false,closeTimer:false,options:{},_init:function(c){var d,b=this;c=a.isArray(c)?c:[];c.unshift(a.achtung.defaults);c.unshift({});d=this.options=a.extend.apply(a,c);if(!a.achtung.$overlay){a.achtung.$overlay=a('<div id="achtung-overlay"></div>').appendTo(document.body)}if(!d.disableClose){a('<span class="achtung-close-button ui-icon ui-icon-close" />').click(function(){b.close()}).hover(function(){a(this).addClass("achtung-close-button-hover")},function(){a(this).removeClass("achtung-close-button-hover")}).prependTo(this.$container)}this.changeIcon(d.icon,true);if(d.message){this.$container.append(a('<span class="achtung-message">'+d.message+"</span>"))}(d.className&&this.$container.addClass(d.className));(d.css&&this.$container.css(d.css));this.$container.addClass("achtung").appendTo(a.achtung.$overlay);if(d.showEffects){this.$container.animate(d.showEffects,d.showEffectDuration)}else{this.$container.show()}if(d.timeout>0){this.timeout(d.timeout)}},timeout:function(c){var b=this;if(this.closeTimer){clearTimeout(this.closeTimer)}this.closeTimer=setTimeout(function(){b.close()},c*1000);this.options.timeout=c},changeClass:function(c){var b=this;if(this.options.className===c){return}this.$container.queue(function(){if(!b.options.animateClassSwitch||/webkit/.test(navigator.userAgent.toLowerCase())||!a.isFunction(a.fn.switchClass)){b.$container.removeClass(b.options.className);b.$container.addClass(c)}else{b.$container.switchClass(b.options.className,c,500)}b.options.className=c;b.$container.dequeue()})},changeIcon:function(c,d){var b=this;if((d!==true||c===false)&&this.options.icon===c){return}if(d||this.options.icon===false){this.$container.prepend(a('<span class="achtung-message-icon ui-icon '+c+'" />'));this.options.icon=c;return}else{if(c===false){this.$container.find(".achtung-message-icon").remove();this.options.icon=false;return}}this.$container.queue(function(){var e=a(".achtung-message-icon",b.$container);if(!b.options.animateClassSwitch||/webkit/.test(navigator.userAgent.toLowerCase())||!a.isFunction(a.fn.switchClass)){e.removeClass(b.options.icon);e.addClass(c)}else{e.switchClass(b.options.icon,c,500)}b.options.icon=c;b.$container.dequeue()})},changeMessage:function(b){this.$container.queue(function(){a(".achtung-message",a(this)).html(b);a(this).dequeue()})},update:function(b){(b.className&&this.changeClass(b.className));(b.css&&this.$container.css(b.css));(typeof(b.icon)!=="undefined"&&this.changeIcon(b.icon));(b.message&&this.changeMessage(b.message));(b.timeout&&this.timeout(b.timeout))},close:function(){var c=this.options,b=this.$container;if(c.hideEffects){this.$container.animate(c.hideEffects,c.hideEffectDuration)}else{this.$container.hide()}b.queue(function(){b.removeData("achtung");b.remove();if(a.achtung.$overlay&&a.achtung.$overlay.is(":empty")){a.achtung.$overlay.remove();a.achtung.$overlay=false}b.dequeue()})}})})(jQuery);
     2 No newline at end of file
  • new file sagenb/data/jquery/plugins/achtung/ui.achtung-mod.js

    diff --git a/sagenb/data/jquery/plugins/achtung/ui.achtung-mod.js b/sagenb/data/jquery/plugins/achtung/ui.achtung-mod.js
    new file mode 100644
    - +  
     1// This modified version adds optional callbacks at the end of a
     2// timeout (in lieu of close) and when a user clicks on the close
     3// button (just before close).
     4
     5/**
     6 * achtung 0.3.0
     7 *
     8 * Growl-like notifications for jQuery
     9 *
     10 * Copyright (c) 2009 Josh Varner <josh@voxwerk.com>
     11 *
     12 * Permission is hereby granted, free of charge, to any person obtaining a copy
     13 * of this software and associated documentation files (the "Software"), to deal
     14 * in the Software without restriction, including without limitation the rights
     15 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
     16 * copies of the Software, and to permit persons to whom the Software is
     17 * furnished to do so, subject to the following conditions:
     18 *
     19 * The above copyright notice and this permission notice shall be included in
     20 * all copies or substantial portions of the Software.
     21 *
     22 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     23 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     24 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
     25 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     26 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     27 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
     28 * THE SOFTWARE.
     29 *
     30 * @license http://www.opensource.org/licenses/mit-license.php
     31 * @author Josh Varner <josh@voxwerk.com>
     32 */
     33
     34/*globals jQuery,clearTimeout,document,navigator,setTimeout
     35*/
     36(function($) {
     37
     38/**
     39 * This is based on the jQuery UI $.widget code. I would have just made this
     40 * a $.widget but I didn't want the jQuery UI dependency.
     41 */
     42$.fn.achtung = function(options)
     43{
     44        var isMethodCall = (typeof options === 'string'),
     45                args = Array.prototype.slice.call(arguments, 0),
     46                name = 'achtung';
     47
     48        // handle initialization and non-getter methods
     49        return this.each(function() {
     50                var instance = $.data(this, name);
     51
     52                // prevent calls to internal methods
     53                if (isMethodCall && options.substring(0, 1) === '_') {
     54                        return this;
     55                }
     56
     57                // constructor
     58                (!instance && !isMethodCall &&
     59                        $.data(this, name, new $.achtung(this))._init(args));
     60
     61                // method call
     62                (instance && isMethodCall && $.isFunction(instance[options]) &&
     63                        instance[options].apply(instance, args.slice(1)));
     64        });
     65};
     66
     67$.achtung = function(element)
     68{
     69    var args = Array.prototype.slice.call(arguments, 0), $el;
     70
     71    if (!element || !element.nodeType) {
     72        $el = $('<div />');
     73        return $el.achtung.apply($el, args);
     74    }
     75   
     76    this.$container = $(element);
     77};
     78
     79
     80/**
     81 * Static members
     82 **/
     83$.extend($.achtung, {
     84    version: '0.3.0',
     85    $overlay: false,
     86    defaults: {
     87        timeout: 10,
     88        // Called at end of a timeout *instead* of close.  Inside the
     89        // callback, close explicitly with this.close().
     90        onTimeout: null,
     91        // Called on clicking the close button but before close.
     92        onCloseButton: null,
     93        disableClose: false,
     94        icon: false,
     95        className: '',
     96        animateClassSwitch: false,
     97        showEffects: {'opacity':'toggle','height':'toggle'},
     98        hideEffects: {'opacity':'toggle','height':'toggle'},
     99        showEffectDuration: 500,
     100        hideEffectDuration: 700
     101    }
     102});
     103
     104/**
     105 * Non-static members
     106 **/
     107$.extend($.achtung.prototype, {
     108    $container: false,
     109    closeTimer: false,
     110    options: {},
     111   
     112    _init: function(args)
     113    {
     114        var o, self = this;
     115
     116        args = $.isArray(args) ? args : [];
     117
     118       
     119        args.unshift($.achtung.defaults);
     120        args.unshift({});
     121
     122        o = this.options = $.extend.apply($, args);
     123
     124        if (!$.achtung.$overlay) {
     125            $.achtung.$overlay = $('<div id="achtung-overlay"></div>').appendTo(document.body);
     126        }
     127
     128        if (!o.disableClose) {
     129            $('<span class="achtung-close-button ui-icon ui-icon-close" />')
     130                .click(function () {
     131                    if ($.isFunction(o.onCloseButton)) {
     132                        o.onCloseButton.call(self);
     133                    }
     134                    self.close();
     135                })
     136                .hover(function () { $(this).addClass('achtung-close-button-hover'); },
     137                       function () { $(this).removeClass('achtung-close-button-hover'); })
     138                .prependTo(this.$container);
     139        }
     140
     141        this.changeIcon(o.icon, true);
     142
     143        if (o.message) {
     144            this.$container.append($('<span class="achtung-message">' + o.message + '</span>'));
     145        }
     146
     147        (o.className && this.$container.addClass(o.className));
     148        (o.css && this.$container.css(o.css));
     149
     150        this.$container
     151            .addClass('achtung')
     152            .appendTo($.achtung.$overlay);
     153
     154        if (o.showEffects) {
     155            this.$container.animate(o.showEffects, o.showEffectDuration);
     156        } else {
     157            this.$container.show();
     158        }
     159
     160        if (o.timeout > 0) {
     161            this.timeout(o.timeout);
     162        }
     163    },
     164   
     165    timeout: function(timeout)
     166    {
     167        var self = this;
     168
     169        if (this.closeTimer) {
     170            clearTimeout(this.closeTimer);
     171        }
     172
     173        this.closeTimer = setTimeout(function() {
     174            if ($.isFunction(self.options.onTimeout)) {
     175                self.options.onTimeout.call(self);
     176            } else {
     177                self.close();
     178            }
     179        }, timeout * 1000);
     180        this.options.timeout = timeout;
     181    },
     182
     183    /**
     184     * Change the CSS class associated with this message, using
     185     * a transition if available (not availble in Safari/Webkit).
     186     * If no transition is available, the switch is immediate.
     187     *
     188     * #LATER Check if this has been corrected in Webkit or jQuery UI
     189     * #TODO Make transition time configurable
     190     * @param newClass string Name of new class to associate
     191     */
     192    changeClass: function(newClass)
     193    {
     194        var self = this;
     195
     196        if (this.options.className === newClass) {
     197            return;
     198        }
     199
     200        this.$container.queue(function() {
     201            if (!self.options.animateClassSwitch ||
     202                /webkit/.test(navigator.userAgent.toLowerCase()) ||
     203                !$.isFunction($.fn.switchClass)) {
     204                self.$container.removeClass(self.options.className);
     205                self.$container.addClass(newClass);
     206            } else {
     207                self.$container.switchClass(self.options.className, newClass, 500);
     208            }
     209
     210            self.options.className = newClass;
     211            self.$container.dequeue();
     212        });
     213    },
     214
     215    changeIcon: function(newIcon, force)
     216    {
     217        var self = this;
     218
     219        if ((force !== true || newIcon === false) && this.options.icon === newIcon) {
     220            return;
     221        }
     222
     223        if (force || this.options.icon === false) {
     224            this.$container.prepend($('<span class="achtung-message-icon ui-icon ' + newIcon + '" />'));
     225            this.options.icon = newIcon;
     226            return;
     227        } else if (newIcon === false) {
     228            this.$container.find('.achtung-message-icon').remove();
     229            this.options.icon = false;
     230            return;
     231        }
     232
     233        this.$container.queue(function() {
     234            var $span = $('.achtung-message-icon', self.$container);
     235
     236            if (!self.options.animateClassSwitch ||
     237                /webkit/.test(navigator.userAgent.toLowerCase()) ||
     238                !$.isFunction($.fn.switchClass)) {
     239                $span.removeClass(self.options.icon);
     240                $span.addClass(newIcon);
     241            } else {
     242                $span.switchClass(self.options.icon, newIcon, 500);
     243            }
     244
     245            self.options.icon = newIcon;
     246            self.$container.dequeue();
     247        });
     248    },
     249
     250
     251    changeMessage: function(newMessage)
     252    {
     253        this.$container.queue(function() {
     254            $('.achtung-message', $(this)).html(newMessage);
     255            $(this).dequeue();
     256        });
     257    },
     258
     259
     260    update: function(options)
     261    {
     262        (options.className && this.changeClass(options.className));
     263        (options.css && this.$container.css(options.css));
     264        (typeof(options.icon) !== 'undefined' && this.changeIcon(options.icon));
     265        (options.message && this.changeMessage(options.message));
     266        (options.timeout && this.timeout(options.timeout));
     267    },
     268
     269    close: function()
     270    {
     271        var o = this.options, $container = this.$container;
     272
     273        if (this.closeTimer) {
     274            clearTimeout(this.closeTimer);
     275        }
     276
     277        if (o.hideEffects) {
     278            this.$container.animate(o.hideEffects, o.hideEffectDuration);
     279        } else {
     280            this.$container.hide();
     281        }
     282
     283        $container.queue(function() {
     284            $container.removeData('achtung');
     285            $container.remove();
     286           
     287            if ($.achtung.$overlay && $.achtung.$overlay.is(':empty')) {
     288                $.achtung.$overlay.remove();
     289                $.achtung.$overlay = false;
     290            }
     291           
     292            $container.dequeue();
     293        });
     294    }
     295});
     296
     297})(jQuery);
  • new file sagenb/data/jquery/plugins/achtung/ui.achtung-mod.min.js

    diff --git a/sagenb/data/jquery/plugins/achtung/ui.achtung-mod.min.js b/sagenb/data/jquery/plugins/achtung/ui.achtung-mod.min.js
    new file mode 100644
    - +  
     1(function(a){a.fn.achtung=function(e){var b=(typeof e==="string"),d=Array.prototype.slice.call(arguments,0),c="achtung";return this.each(function(){var f=a.data(this,c);if(b&&e.substring(0,1)==="_"){return this}(!f&&!b&&a.data(this,c,new a.achtung(this))._init(d));(f&&b&&a.isFunction(f[e])&&f[e].apply(f,d.slice(1)))})};a.achtung=function(d){var b=Array.prototype.slice.call(arguments,0),c;if(!d||!d.nodeType){c=a("<div />");return c.achtung.apply(c,b)}this.$container=a(d)};a.extend(a.achtung,{version:"0.3.0",$overlay:false,defaults:{timeout:10,onTimeout:null,onCloseButton:null,disableClose:false,icon:false,className:"",animateClassSwitch:false,showEffects:{opacity:"toggle",height:"toggle"},hideEffects:{opacity:"toggle",height:"toggle"},showEffectDuration:500,hideEffectDuration:700}});a.extend(a.achtung.prototype,{$container:false,closeTimer:false,options:{},_init:function(c){var d,b=this;c=a.isArray(c)?c:[];c.unshift(a.achtung.defaults);c.unshift({});d=this.options=a.extend.apply(a,c);if(!a.achtung.$overlay){a.achtung.$overlay=a('<div id="achtung-overlay"></div>').appendTo(document.body)}if(!d.disableClose){a('<span class="achtung-close-button ui-icon ui-icon-close" />').click(function(){if(a.isFunction(d.onCloseButton)){d.onCloseButton.call(b)}b.close()}).hover(function(){a(this).addClass("achtung-close-button-hover")},function(){a(this).removeClass("achtung-close-button-hover")}).prependTo(this.$container)}this.changeIcon(d.icon,true);if(d.message){this.$container.append(a('<span class="achtung-message">'+d.message+"</span>"))}(d.className&&this.$container.addClass(d.className));(d.css&&this.$container.css(d.css));this.$container.addClass("achtung").appendTo(a.achtung.$overlay);if(d.showEffects){this.$container.animate(d.showEffects,d.showEffectDuration)}else{this.$container.show()}if(d.timeout>0){this.timeout(d.timeout)}},timeout:function(c){var b=this;if(this.closeTimer){clearTimeout(this.closeTimer)}this.closeTimer=setTimeout(function(){if(a.isFunction(b.options.onTimeout)){b.options.onTimeout.call(b)}else{b.close()}},c*1000);this.options.timeout=c},changeClass:function(c){var b=this;if(this.options.className===c){return}this.$container.queue(function(){if(!b.options.animateClassSwitch||/webkit/.test(navigator.userAgent.toLowerCase())||!a.isFunction(a.fn.switchClass)){b.$container.removeClass(b.options.className);b.$container.addClass(c)}else{b.$container.switchClass(b.options.className,c,500)}b.options.className=c;b.$container.dequeue()})},changeIcon:function(c,d){var b=this;if((d!==true||c===false)&&this.options.icon===c){return}if(d||this.options.icon===false){this.$container.prepend(a('<span class="achtung-message-icon ui-icon '+c+'" />'));this.options.icon=c;return}else{if(c===false){this.$container.find(".achtung-message-icon").remove();this.options.icon=false;return}}this.$container.queue(function(){var e=a(".achtung-message-icon",b.$container);if(!b.options.animateClassSwitch||/webkit/.test(navigator.userAgent.toLowerCase())||!a.isFunction(a.fn.switchClass)){e.removeClass(b.options.icon);e.addClass(c)}else{e.switchClass(b.options.icon,c,500)}b.options.icon=c;b.$container.dequeue()})},changeMessage:function(b){this.$container.queue(function(){a(".achtung-message",a(this)).html(b);a(this).dequeue()})},update:function(b){(b.className&&this.changeClass(b.className));(b.css&&this.$container.css(b.css));(typeof(b.icon)!=="undefined"&&this.changeIcon(b.icon));(b.message&&this.changeMessage(b.message));(b.timeout&&this.timeout(b.timeout))},close:function(){var c=this.options,b=this.$container;if(this.closeTimer){clearTimeout(this.closeTimer)}if(c.hideEffects){this.$container.animate(c.hideEffects,c.hideEffectDuration)}else{this.$container.hide()}b.queue(function(){b.removeData("achtung");b.remove();if(a.achtung.$overlay&&a.achtung.$overlay.is(":empty")){a.achtung.$overlay.remove();a.achtung.$overlay=false}b.dequeue()})}})})(jQuery);
     2 No newline at end of file
  • new file sagenb/data/jquery/plugins/achtung/ui.achtung.css

    diff --git a/sagenb/data/jquery/plugins/achtung/ui.achtung.css b/sagenb/data/jquery/plugins/achtung/ui.achtung.css
    new file mode 100644
    - +  
     1/**
     2 * achtung 0.3.0
     3 *
     4 * Growl-like notifications for jQuery
     5 *
     6 * Copyright (c) 2009 Josh Varner <josh@voxwerk.com>
     7 *
     8 * Permission is hereby granted, free of charge, to any person obtaining a copy
     9 * of this software and associated documentation files (the "Software"), to deal
     10 * in the Software without restriction, including without limitation the rights
     11 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
     12 * copies of the Software, and to permit persons to whom the Software is
     13 * furnished to do so, subject to the following conditions:
     14 *
     15 * The above copyright notice and this permission notice shall be included in
     16 * all copies or substantial portions of the Software.
     17 *
     18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
     21 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     23 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
     24 * THE SOFTWARE.
     25 *
     26 * Portions of this file are from the jQuery UI CSS framework.
     27 *
     28 * @license http://www.opensource.org/licenses/mit-license.php
     29 * @author Josh Varner <josh@voxwerk.com>
     30 */
     31
     32/* IE 6 doesn't support position: fixed */
     33* html #achtung-overlay {
     34        position:absolute;
     35}
     36
     37/* IE6 includes padding in width */
     38* html .achtung {
     39    width: 280px;
     40}
     41
     42#achtung-overlay {
     43    overflow: hidden;
     44    position: fixed;
     45    top: 15px;
     46    right: 15px;
     47    width: 280px;
     48    z-index:50;
     49}
     50
     51.achtung {
     52    display:none;
     53    margin-bottom: 8px;
     54        padding: 15px 15px;
     55        background-color: #000;
     56        color: white;
     57        width: 250px;
     58        font-weight: bold;
     59        position:relative;
     60        overflow: hidden;
     61    -moz-box-shadow: #aaa 1px 1px 2px;
     62    -webkit-box-shadow: #aaa 1px 1px 2px;
     63    box-shadow: #aaa 1px 1px 2px; 
     64    -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px;
     65    /* Note that if using show/hide animations, IE will lose
     66       this setting */
     67    opacity: .85;
     68    filter:Alpha(Opacity=85);
     69}
     70
     71/**
     72 * This section from jQuery UI CSS framework
     73 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
     74 * Can (and should) be removed if you are already loading the jQuery UI CSS
     75 * to reduce payload size.
     76 */
     77.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
     78.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
     79.ui-icon-carat-1-n { background-position: 0 0; }
     80.ui-icon-carat-1-ne { background-position: -16px 0; }
     81.ui-icon-carat-1-e { background-position: -32px 0; }
     82.ui-icon-carat-1-se { background-position: -48px 0; }
     83.ui-icon-carat-1-s { background-position: -64px 0; }
     84.ui-icon-carat-1-sw { background-position: -80px 0; }
     85.ui-icon-carat-1-w { background-position: -96px 0; }
     86.ui-icon-carat-1-nw { background-position: -112px 0; }
     87.ui-icon-carat-2-n-s { background-position: -128px 0; }
     88.ui-icon-carat-2-e-w { background-position: -144px 0; }
     89.ui-icon-triangle-1-n { background-position: 0 -16px; }
     90.ui-icon-triangle-1-ne { background-position: -16px -16px; }
     91.ui-icon-triangle-1-e { background-position: -32px -16px; }
     92.ui-icon-triangle-1-se { background-position: -48px -16px; }
     93.ui-icon-triangle-1-s { background-position: -64px -16px; }
     94.ui-icon-triangle-1-sw { background-position: -80px -16px; }
     95.ui-icon-triangle-1-w { background-position: -96px -16px; }
     96.ui-icon-triangle-1-nw { background-position: -112px -16px; }
     97.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
     98.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
     99.ui-icon-arrow-1-n { background-position: 0 -32px; }
     100.ui-icon-arrow-1-ne { background-position: -16px -32px; }
     101.ui-icon-arrow-1-e { background-position: -32px -32px; }
     102.ui-icon-arrow-1-se { background-position: -48px -32px; }
     103.ui-icon-arrow-1-s { background-position: -64px -32px; }
     104.ui-icon-arrow-1-sw { background-position: -80px -32px; }
     105.ui-icon-arrow-1-w { background-position: -96px -32px; }
     106.ui-icon-arrow-1-nw { background-position: -112px -32px; }
     107.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
     108.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
     109.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
     110.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
     111.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
     112.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
     113.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
     114.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
     115.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
     116.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
     117.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
     118.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
     119.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
     120.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
     121.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
     122.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
     123.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
     124.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
     125.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
     126.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
     127.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
     128.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
     129.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
     130.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
     131.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
     132.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
     133.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
     134.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
     135.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
     136.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
     137.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
     138.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
     139.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
     140.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
     141.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
     142.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
     143.ui-icon-arrow-4 { background-position: 0 -80px; }
     144.ui-icon-arrow-4-diag { background-position: -16px -80px; }
     145.ui-icon-extlink { background-position: -32px -80px; }
     146.ui-icon-newwin { background-position: -48px -80px; }
     147.ui-icon-refresh { background-position: -64px -80px; }
     148.ui-icon-shuffle { background-position: -80px -80px; }
     149.ui-icon-transfer-e-w { background-position: -96px -80px; }
     150.ui-icon-transferthick-e-w { background-position: -112px -80px; }
     151.ui-icon-folder-collapsed { background-position: 0 -96px; }
     152.ui-icon-folder-open { background-position: -16px -96px; }
     153.ui-icon-document { background-position: -32px -96px; }
     154.ui-icon-document-b { background-position: -48px -96px; }
     155.ui-icon-note { background-position: -64px -96px; }
     156.ui-icon-mail-closed { background-position: -80px -96px; }
     157.ui-icon-mail-open { background-position: -96px -96px; }
     158.ui-icon-suitcase { background-position: -112px -96px; }
     159.ui-icon-comment { background-position: -128px -96px; }
     160.ui-icon-person { background-position: -144px -96px; }
     161.ui-icon-print { background-position: -160px -96px; }
     162.ui-icon-trash { background-position: -176px -96px; }
     163.ui-icon-locked { background-position: -192px -96px; }
     164.ui-icon-unlocked { background-position: -208px -96px; }
     165.ui-icon-bookmark { background-position: -224px -96px; }
     166.ui-icon-tag { background-position: -240px -96px; }
     167.ui-icon-home { background-position: 0 -112px; }
     168.ui-icon-flag { background-position: -16px -112px; }
     169.ui-icon-calendar { background-position: -32px -112px; }
     170.ui-icon-cart { background-position: -48px -112px; }
     171.ui-icon-pencil { background-position: -64px -112px; }
     172.ui-icon-clock { background-position: -80px -112px; }
     173.ui-icon-disk { background-position: -96px -112px; }
     174.ui-icon-calculator { background-position: -112px -112px; }
     175.ui-icon-zoomin { background-position: -128px -112px; }
     176.ui-icon-zoomout { background-position: -144px -112px; }
     177.ui-icon-search { background-position: -160px -112px; }
     178.ui-icon-wrench { background-position: -176px -112px; }
     179.ui-icon-gear { background-position: -192px -112px; }
     180.ui-icon-heart { background-position: -208px -112px; }
     181.ui-icon-star { background-position: -224px -112px; }
     182.ui-icon-link { background-position: -240px -112px; }
     183.ui-icon-cancel { background-position: 0 -128px; }
     184.ui-icon-plus { background-position: -16px -128px; }
     185.ui-icon-plusthick { background-position: -32px -128px; }
     186.ui-icon-minus { background-position: -48px -128px; }
     187.ui-icon-minusthick { background-position: -64px -128px; }
     188.ui-icon-close { background-position: -80px -128px; }
     189.ui-icon-closethick { background-position: -96px -128px; }
     190.ui-icon-key { background-position: -112px -128px; }
     191.ui-icon-lightbulb { background-position: -128px -128px; }
     192.ui-icon-scissors { background-position: -144px -128px; }
     193.ui-icon-clipboard { background-position: -160px -128px; }
     194.ui-icon-copy { background-position: -176px -128px; }
     195.ui-icon-contact { background-position: -192px -128px; }
     196.ui-icon-image { background-position: -208px -128px; }
     197.ui-icon-video { background-position: -224px -128px; }
     198.ui-icon-script { background-position: -240px -128px; }
     199.ui-icon-alert { background-position: 0 -144px; }
     200.ui-icon-info { background-position: -16px -144px; }
     201.ui-icon-notice { background-position: -32px -144px; }
     202.ui-icon-help { background-position: -48px -144px; }
     203.ui-icon-check { background-position: -64px -144px; }
     204.ui-icon-bullet { background-position: -80px -144px; }
     205.ui-icon-radio-off { background-position: -96px -144px; }
     206.ui-icon-radio-on { background-position: -112px -144px; }
     207.ui-icon-pin-w { background-position: -128px -144px; }
     208.ui-icon-pin-s { background-position: -144px -144px; }
     209.ui-icon-play { background-position: 0 -160px; }
     210.ui-icon-pause { background-position: -16px -160px; }
     211.ui-icon-seek-next { background-position: -32px -160px; }
     212.ui-icon-seek-prev { background-position: -48px -160px; }
     213.ui-icon-seek-end { background-position: -64px -160px; }
     214.ui-icon-seek-first { background-position: -80px -160px; }
     215.ui-icon-stop { background-position: -96px -160px; }
     216.ui-icon-eject { background-position: -112px -160px; }
     217.ui-icon-volume-off { background-position: -128px -160px; }
     218.ui-icon-volume-on { background-position: -144px -160px; }
     219.ui-icon-power { background-position: 0 -176px; }
     220.ui-icon-signal-diag { background-position: -16px -176px; }
     221.ui-icon-signal { background-position: -32px -176px; }
     222.ui-icon-battery-0 { background-position: -48px -176px; }
     223.ui-icon-battery-1 { background-position: -64px -176px; }
     224.ui-icon-battery-2 { background-position: -80px -176px; }
     225.ui-icon-battery-3 { background-position: -96px -176px; }
     226.ui-icon-circle-plus { background-position: 0 -192px; }
     227.ui-icon-circle-minus { background-position: -16px -192px; }
     228.ui-icon-circle-close { background-position: -32px -192px; }
     229.ui-icon-circle-triangle-e { background-position: -48px -192px; }
     230.ui-icon-circle-triangle-s { background-position: -64px -192px; }
     231.ui-icon-circle-triangle-w { background-position: -80px -192px; }
     232.ui-icon-circle-triangle-n { background-position: -96px -192px; }
     233.ui-icon-circle-arrow-e { background-position: -112px -192px; }
     234.ui-icon-circle-arrow-s { background-position: -128px -192px; }
     235.ui-icon-circle-arrow-w { background-position: -144px -192px; }
     236.ui-icon-circle-arrow-n { background-position: -160px -192px; }
     237.ui-icon-circle-zoomin { background-position: -176px -192px; }
     238.ui-icon-circle-zoomout { background-position: -192px -192px; }
     239.ui-icon-circle-check { background-position: -208px -192px; }
     240.ui-icon-circlesmall-plus { background-position: 0 -208px; }
     241.ui-icon-circlesmall-minus { background-position: -16px -208px; }
     242.ui-icon-circlesmall-close { background-position: -32px -208px; }
     243.ui-icon-squaresmall-plus { background-position: -48px -208px; }
     244.ui-icon-squaresmall-minus { background-position: -64px -208px; }
     245.ui-icon-squaresmall-close { background-position: -80px -208px; }
     246.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
     247.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
     248.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
     249.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
     250.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
     251.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
     252
     253.achtung .achtung-message-icon {
     254        margin-top: 0px;
     255        margin-left: -.5em;
     256        margin-right: .5em;
     257    float: left;
     258        zoom: 1;
     259}
     260
     261.achtung .ui-icon.achtung-close-button {
     262    overflow: hidden;
     263    float: right;
     264    position: relative;
     265    top: -8px;
     266    right: -8px;
     267    cursor: pointer;
     268    background-image: url(images/ui-icons_cccccc_256x240.png);
     269}
     270
     271.achtung .ui-icon.achtung-close-button-hover {
     272    background-image: url(images/ui-icons_ffffff_256x240.png);
     273}
     274
     275/* Slightly darker for these colors (readability) */
     276.achtungSuccess, .achtungFail, .achtungWait {
     277    /* Note that if using show/hide animations, IE will lose
     278       this setting */
     279    opacity: .93; filter:Alpha(Opacity=93);
     280}
     281
     282.achtungSuccess {
     283        background-color: #4DB559;
     284}
     285
     286.achtungFail {
     287        background-color: #D64450;
     288}
     289
     290.achtungWait {
     291        background-color: #658093;
     292}
     293
     294.achtungSuccess .ui-icon.achtung-close-button,
     295.achtungFail .ui-icon.achtung-close-button {
     296    background-image: url(images/ui-icons_444444_256x240.png);
     297}
     298
     299.achtungSuccess .ui-icon.achtung-close-button-hover,
     300.achtungFail .ui-icon.achtung-close-button-hover {
     301    background-image: url(images/ui-icons_000000_256x240.png);
     302}
     303
     304.achtung .wait-icon {
     305    background-image: url('images/wait.gif');
     306}
     307
     308.achtung .achtung-message {
     309    display: inline;
     310}
  • new file sagenb/data/jquery/plugins/achtung/ui.achtung.js

    diff --git a/sagenb/data/jquery/plugins/achtung/ui.achtung.js b/sagenb/data/jquery/plugins/achtung/ui.achtung.js
    new file mode 100644
    - +  
     1/**
     2 * achtung 0.3.0
     3 *
     4 * Growl-like notifications for jQuery
     5 *
     6 * Copyright (c) 2009 Josh Varner <josh@voxwerk.com>
     7 *
     8 * Permission is hereby granted, free of charge, to any person obtaining a copy
     9 * of this software and associated documentation files (the "Software"), to deal
     10 * in the Software without restriction, including without limitation the rights
     11 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
     12 * copies of the Software, and to permit persons to whom the Software is
     13 * furnished to do so, subject to the following conditions:
     14 *
     15 * The above copyright notice and this permission notice shall be included in
     16 * all copies or substantial portions of the Software.
     17 *
     18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
     21 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     23 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
     24 * THE SOFTWARE.
     25 *
     26 * @license http://www.opensource.org/licenses/mit-license.php
     27 * @author Josh Varner <josh@voxwerk.com>
     28 */
     29
     30/*globals jQuery,clearTimeout,document,navigator,setTimeout
     31*/
     32(function($) {
     33
     34/**
     35 * This is based on the jQuery UI $.widget code. I would have just made this
     36 * a $.widget but I didn't want the jQuery UI dependency.
     37 */
     38$.fn.achtung = function(options)
     39{
     40        var isMethodCall = (typeof options === 'string'),
     41                args = Array.prototype.slice.call(arguments, 0),
     42                name = 'achtung';
     43
     44        // handle initialization and non-getter methods
     45        return this.each(function() {
     46                var instance = $.data(this, name);
     47
     48                // prevent calls to internal methods
     49                if (isMethodCall && options.substring(0, 1) === '_') {
     50                        return this;
     51                }
     52
     53                // constructor
     54                (!instance && !isMethodCall &&
     55                        $.data(this, name, new $.achtung(this))._init(args));
     56
     57                // method call
     58                (instance && isMethodCall && $.isFunction(instance[options]) &&
     59                        instance[options].apply(instance, args.slice(1)));
     60        });
     61};
     62
     63$.achtung = function(element)
     64{
     65    var args = Array.prototype.slice.call(arguments, 0), $el;
     66
     67    if (!element || !element.nodeType) {
     68        $el = $('<div />');
     69        return $el.achtung.apply($el, args);
     70    }
     71   
     72    this.$container = $(element);
     73};
     74
     75
     76/**
     77 * Static members
     78 **/
     79$.extend($.achtung, {
     80    version: '0.3.0',
     81    $overlay: false,
     82    defaults: {
     83        timeout: 10,
     84        disableClose: false,
     85        icon: false,
     86        className: '',
     87        animateClassSwitch: false,
     88        showEffects: {'opacity':'toggle','height':'toggle'},
     89        hideEffects: {'opacity':'toggle','height':'toggle'},
     90        showEffectDuration: 500,
     91        hideEffectDuration: 700
     92    }
     93});
     94
     95/**
     96 * Non-static members
     97 **/
     98$.extend($.achtung.prototype, {
     99    $container: false,
     100    closeTimer: false,
     101    options: {},
     102   
     103    _init: function(args)
     104    {
     105        var o, self = this;
     106
     107        args = $.isArray(args) ? args : [];
     108
     109       
     110        args.unshift($.achtung.defaults);
     111        args.unshift({});
     112
     113        o = this.options = $.extend.apply($, args);
     114
     115        if (!$.achtung.$overlay) {
     116            $.achtung.$overlay = $('<div id="achtung-overlay"></div>').appendTo(document.body);
     117        }
     118
     119        if (!o.disableClose) {
     120            $('<span class="achtung-close-button ui-icon ui-icon-close" />')
     121                .click(function () {  self.close();  })
     122                .hover(function () { $(this).addClass('achtung-close-button-hover'); },
     123                       function () { $(this).removeClass('achtung-close-button-hover'); })
     124                .prependTo(this.$container);
     125        }
     126
     127        this.changeIcon(o.icon, true);
     128
     129        if (o.message) {
     130            this.$container.append($('<span class="achtung-message">' + o.message + '</span>'));
     131        }
     132
     133        (o.className && this.$container.addClass(o.className));
     134        (o.css && this.$container.css(o.css));
     135
     136        this.$container
     137            .addClass('achtung')
     138            .appendTo($.achtung.$overlay);
     139
     140        if (o.showEffects) {
     141            this.$container.animate(o.showEffects, o.showEffectDuration);
     142        } else {
     143            this.$container.show();
     144        }
     145
     146        if (o.timeout > 0) {
     147            this.timeout(o.timeout);
     148        }
     149    },
     150   
     151    timeout: function(timeout)
     152    {
     153        var self = this;
     154
     155        if (this.closeTimer) {
     156            clearTimeout(this.closeTimer);
     157        }
     158
     159        this.closeTimer = setTimeout(function() { self.close(); }, timeout * 1000);
     160        this.options.timeout = timeout;
     161    },
     162
     163    /**
     164     * Change the CSS class associated with this message, using
     165     * a transition if available (not availble in Safari/Webkit).
     166     * If no transition is available, the switch is immediate.
     167     *
     168     * #LATER Check if this has been corrected in Webkit or jQuery UI
     169     * #TODO Make transition time configurable
     170     * @param newClass string Name of new class to associate
     171     */
     172    changeClass: function(newClass)
     173    {
     174        var self = this;
     175
     176        if (this.options.className === newClass) {
     177            return;
     178        }
     179
     180        this.$container.queue(function() {
     181            if (!self.options.animateClassSwitch ||
     182                /webkit/.test(navigator.userAgent.toLowerCase()) ||
     183                !$.isFunction($.fn.switchClass)) {
     184                self.$container.removeClass(self.options.className);
     185                self.$container.addClass(newClass);
     186            } else {
     187                self.$container.switchClass(self.options.className, newClass, 500);
     188            }
     189
     190            self.options.className = newClass;
     191            self.$container.dequeue();
     192        });
     193    },
     194
     195    changeIcon: function(newIcon, force)
     196    {
     197        var self = this;
     198
     199        if ((force !== true || newIcon === false) && this.options.icon === newIcon) {
     200            return;
     201        }
     202
     203        if (force || this.options.icon === false) {
     204            this.$container.prepend($('<span class="achtung-message-icon ui-icon ' + newIcon + '" />'));
     205            this.options.icon = newIcon;
     206            return;
     207        } else if (newIcon === false) {
     208            this.$container.find('.achtung-message-icon').remove();
     209            this.options.icon = false;
     210            return;
     211        }
     212
     213        this.$container.queue(function() {
     214            var $span = $('.achtung-message-icon', self.$container);
     215
     216            if (!self.options.animateClassSwitch ||
     217                /webkit/.test(navigator.userAgent.toLowerCase()) ||
     218                !$.isFunction($.fn.switchClass)) {
     219                $span.removeClass(self.options.icon);
     220                $span.addClass(newIcon);
     221            } else {
     222                $span.switchClass(self.options.icon, newIcon, 500);
     223            }
     224
     225            self.options.icon = newIcon;
     226            self.$container.dequeue();
     227        });
     228    },
     229
     230
     231    changeMessage: function(newMessage)
     232    {
     233        this.$container.queue(function() {
     234            $('.achtung-message', $(this)).html(newMessage);
     235            $(this).dequeue();
     236        });
     237    },
     238
     239
     240    update: function(options)
     241    {
     242        (options.className && this.changeClass(options.className));
     243        (options.css && this.$container.css(options.css));
     244        (typeof(options.icon) !== 'undefined' && this.changeIcon(options.icon));
     245        (options.message && this.changeMessage(options.message));
     246        (options.timeout && this.timeout(options.timeout));
     247    },
     248
     249    close: function()
     250    {
     251        var o = this.options, $container = this.$container;
     252
     253        if (o.hideEffects) {
     254            this.$container.animate(o.hideEffects, o.hideEffectDuration);
     255        } else {
     256            this.$container.hide();
     257        }
     258
     259        $container.queue(function() {
     260            $container.removeData('achtung');
     261            $container.remove();
     262           
     263            if ($.achtung.$overlay && $.achtung.$overlay.is(':empty')) {
     264                $.achtung.$overlay.remove();
     265                $.achtung.$overlay = false;
     266            }
     267           
     268            $container.dequeue();
     269        });
     270    }
     271});
     272
     273})(jQuery);
     274 No newline at end of file
  • new file sagenb/data/jquery/plugins/achtung/version.txt

    diff --git a/sagenb/data/jquery/plugins/achtung/version.txt b/sagenb/data/jquery/plugins/achtung/version.txt
    new file mode 100644
    - +  
     10.3.0
     2 No newline at end of file
  • sagenb/data/sage/css/main.css

    diff --git a/sagenb/data/sage/css/main.css b/sagenb/data/sage/css/main.css
    a b div.docstring-introspection-dialog { fon 
    143143.docstring .click-message { font-size: 0.75em; float: right; clear: both; }
    144144.docstring .unprinted-note { float: right; clear: both; font-size: 0.6em; }
    145145
     146.worksheet-online .interrupt-fail-notification { background-color: #B22222; }
     147
    146148span.pane div.worksheets_topbar { color: black; height: 3ex; top: 0ex; background: url('/images/corner.png') no-repeat top left; background-color: #ccc; text-decoration: none; font-size: 15px; padding-left: 10px; padding-top: 10px; width: 174px; }
    147149
    148150a.left_panel_hide { position: relative; top: 0px; right: -1px; text-align: right; color: blue; font-weight: normal; font-size: 12px; }
    span.pingdown { font-family: sans-serif; 
    575577.vc, .vg, .vi { color: #bb60d5; }
    576578
    577579.il { color: #208050; }
     580
     581* html #achtung-overlay { position: absolute; }
     582* html .achtung { width: 280px; }
     583
     584#achtung-overlay { overflow: hidden; position: fixed; top: 15px; right: 15px; width: 280px; z-index: 50; }
     585
     586.achtung { display: none; margin-bottom: 8px; padding: 15px 15px; background-color: #000; color: white; width: 250px; font-weight: bold; position: relative; overflow: hidden; -moz-box-shadow: #aaa 1px 1px 2px; -webkit-box-shadow: #aaa 1px 1px 2px; box-shadow: #aaa 1px 1px 2px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; opacity: .85; filter: Alpha(Opacity=85); }
     587
     588.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; width: 16px; height: 16px; background-image: url(/javascript/jqueryui/css/sage/images/ui-icons_222222_256x240.png); }
     589
     590.ui-icon-carat-1-n { background-position: 0 0; }
     591
     592.ui-icon-carat-1-ne { background-position: -16px 0; }
     593
     594.ui-icon-carat-1-e { background-position: -32px 0; }
     595
     596.ui-icon-carat-1-se { background-position: -48px 0; }
     597
     598.ui-icon-carat-1-s { background-position: -64px 0; }
     599
     600.ui-icon-carat-1-sw { background-position: -80px 0; }
     601
     602.ui-icon-carat-1-w { background-position: -96px 0; }
     603
     604.ui-icon-carat-1-nw { background-position: -112px 0; }
     605
     606.ui-icon-carat-2-n-s { background-position: -128px 0; }
     607
     608.ui-icon-carat-2-e-w { background-position: -144px 0; }
     609
     610.ui-icon-triangle-1-n { background-position: 0 -16px; }
     611
     612.ui-icon-triangle-1-ne { background-position: -16px -16px; }
     613
     614.ui-icon-triangle-1-e { background-position: -32px -16px; }
     615
     616.ui-icon-triangle-1-se { background-position: -48px -16px; }
     617
     618.ui-icon-triangle-1-s { background-position: -64px -16px; }
     619
     620.ui-icon-triangle-1-sw { background-position: -80px -16px; }
     621
     622.ui-icon-triangle-1-w { background-position: -96px -16px; }
     623
     624.ui-icon-triangle-1-nw { background-position: -112px -16px; }
     625
     626.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
     627
     628.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
     629
     630.ui-icon-arrow-1-n { background-position: 0 -32px; }
     631
     632.ui-icon-arrow-1-ne { background-position: -16px -32px; }
     633
     634.ui-icon-arrow-1-e { background-position: -32px -32px; }
     635
     636.ui-icon-arrow-1-se { background-position: -48px -32px; }
     637
     638.ui-icon-arrow-1-s { background-position: -64px -32px; }
     639
     640.ui-icon-arrow-1-sw { background-position: -80px -32px; }
     641
     642.ui-icon-arrow-1-w { background-position: -96px -32px; }
     643
     644.ui-icon-arrow-1-nw { background-position: -112px -32px; }
     645
     646.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
     647
     648.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
     649
     650.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
     651
     652.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
     653
     654.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
     655
     656.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
     657
     658.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
     659
     660.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
     661
     662.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
     663
     664.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
     665
     666.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
     667
     668.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
     669
     670.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
     671
     672.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
     673
     674.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
     675
     676.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
     677
     678.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
     679
     680.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
     681
     682.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
     683
     684.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
     685
     686.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
     687
     688.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
     689
     690.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
     691
     692.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
     693
     694.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
     695
     696.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
     697
     698.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
     699
     700.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
     701
     702.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
     703
     704.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
     705
     706.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
     707
     708.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
     709
     710.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
     711
     712.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
     713
     714.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
     715
     716.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
     717
     718.ui-icon-arrow-4 { background-position: 0 -80px; }
     719
     720.ui-icon-arrow-4-diag { background-position: -16px -80px; }
     721
     722.ui-icon-extlink { background-position: -32px -80px; }
     723
     724.ui-icon-newwin { background-position: -48px -80px; }
     725
     726.ui-icon-refresh { background-position: -64px -80px; }
     727
     728.ui-icon-shuffle { background-position: -80px -80px; }
     729
     730.ui-icon-transfer-e-w { background-position: -96px -80px; }
     731
     732.ui-icon-transferthick-e-w { background-position: -112px -80px; }
     733
     734.ui-icon-folder-collapsed { background-position: 0 -96px; }
     735
     736.ui-icon-folder-open { background-position: -16px -96px; }
     737
     738.ui-icon-document { background-position: -32px -96px; }
     739
     740.ui-icon-document-b { background-position: -48px -96px; }
     741
     742.ui-icon-note { background-position: -64px -96px; }
     743
     744.ui-icon-mail-closed { background-position: -80px -96px; }
     745
     746.ui-icon-mail-open { background-position: -96px -96px; }
     747
     748.ui-icon-suitcase { background-position: -112px -96px; }
     749
     750.ui-icon-comment { background-position: -128px -96px; }
     751
     752.ui-icon-person { background-position: -144px -96px; }
     753
     754.ui-icon-print { background-position: -160px -96px; }
     755
     756.ui-icon-trash { background-position: -176px -96px; }
     757
     758.ui-icon-locked { background-position: -192px -96px; }
     759
     760.ui-icon-unlocked { background-position: -208px -96px; }
     761
     762.ui-icon-bookmark { background-position: -224px -96px; }
     763
     764.ui-icon-tag { background-position: -240px -96px; }
     765
     766.ui-icon-home { background-position: 0 -112px; }
     767
     768.ui-icon-flag { background-position: -16px -112px; }
     769
     770.ui-icon-calendar { background-position: -32px -112px; }
     771
     772.ui-icon-cart { background-position: -48px -112px; }
     773
     774.ui-icon-pencil { background-position: -64px -112px; }
     775
     776.ui-icon-clock { background-position: -80px -112px; }
     777
     778.ui-icon-disk { background-position: -96px -112px; }
     779
     780.ui-icon-calculator { background-position: -112px -112px; }
     781
     782.ui-icon-zoomin { background-position: -128px -112px; }
     783
     784.ui-icon-zoomout { background-position: -144px -112px; }
     785
     786.ui-icon-search { background-position: -160px -112px; }
     787
     788.ui-icon-wrench { background-position: -176px -112px; }
     789
     790.ui-icon-gear { background-position: -192px -112px; }
     791
     792.ui-icon-heart { background-position: -208px -112px; }
     793
     794.ui-icon-star { background-position: -224px -112px; }
     795
     796.ui-icon-link { background-position: -240px -112px; }
     797
     798.ui-icon-cancel { background-position: 0 -128px; }
     799
     800.ui-icon-plus { background-position: -16px -128px; }
     801
     802.ui-icon-plusthick { background-position: -32px -128px; }
     803
     804.ui-icon-minus { background-position: -48px -128px; }
     805
     806.ui-icon-minusthick { background-position: -64px -128px; }
     807
     808.ui-icon-close { background-position: -80px -128px; }
     809
     810.ui-icon-closethick { background-position: -96px -128px; }
     811
     812.ui-icon-key { background-position: -112px -128px; }
     813
     814.ui-icon-lightbulb { background-position: -128px -128px; }
     815
     816.ui-icon-scissors { background-position: -144px -128px; }
     817
     818.ui-icon-clipboard { background-position: -160px -128px; }
     819
     820.ui-icon-copy { background-position: -176px -128px; }
     821
     822.ui-icon-contact { background-position: -192px -128px; }
     823
     824.ui-icon-image { background-position: -208px -128px; }
     825
     826.ui-icon-video { background-position: -224px -128px; }
     827
     828.ui-icon-script { background-position: -240px -128px; }
     829
     830.ui-icon-alert { background-position: 0 -144px; }
     831
     832.ui-icon-info { background-position: -16px -144px; }
     833
     834.ui-icon-notice { background-position: -32px -144px; }
     835
     836.ui-icon-help { background-position: -48px -144px; }
     837
     838.ui-icon-check { background-position: -64px -144px; }
     839
     840.ui-icon-bullet { background-position: -80px -144px; }
     841
     842.ui-icon-radio-off { background-position: -96px -144px; }
     843
     844.ui-icon-radio-on { background-position: -112px -144px; }
     845
     846.ui-icon-pin-w { background-position: -128px -144px; }
     847
     848.ui-icon-pin-s { background-position: -144px -144px; }
     849
     850.ui-icon-play { background-position: 0 -160px; }
     851
     852.ui-icon-pause { background-position: -16px -160px; }
     853
     854.ui-icon-seek-next { background-position: -32px -160px; }
     855
     856.ui-icon-seek-prev { background-position: -48px -160px; }
     857
     858.ui-icon-seek-end { background-position: -64px -160px; }
     859
     860.ui-icon-seek-first { background-position: -80px -160px; }
     861
     862.ui-icon-stop { background-position: -96px -160px; }
     863
     864.ui-icon-eject { background-position: -112px -160px; }
     865
     866.ui-icon-volume-off { background-position: -128px -160px; }
     867
     868.ui-icon-volume-on { background-position: -144px -160px; }
     869
     870.ui-icon-power { background-position: 0 -176px; }
     871
     872.ui-icon-signal-diag { background-position: -16px -176px; }
     873
     874.ui-icon-signal { background-position: -32px -176px; }
     875
     876.ui-icon-battery-0 { background-position: -48px -176px; }
     877
     878.ui-icon-battery-1 { background-position: -64px -176px; }
     879
     880.ui-icon-battery-2 { background-position: -80px -176px; }
     881
     882.ui-icon-battery-3 { background-position: -96px -176px; }
     883
     884.ui-icon-circle-plus { background-position: 0 -192px; }
     885
     886.ui-icon-circle-minus { background-position: -16px -192px; }
     887
     888.ui-icon-circle-close { background-position: -32px -192px; }
     889
     890.ui-icon-circle-triangle-e { background-position: -48px -192px; }
     891
     892.ui-icon-circle-triangle-s { background-position: -64px -192px; }
     893
     894.ui-icon-circle-triangle-w { background-position: -80px -192px; }
     895
     896.ui-icon-circle-triangle-n { background-position: -96px -192px; }
     897
     898.ui-icon-circle-arrow-e { background-position: -112px -192px; }
     899
     900.ui-icon-circle-arrow-s { background-position: -128px -192px; }
     901
     902.ui-icon-circle-arrow-w { background-position: -144px -192px; }
     903
     904.ui-icon-circle-arrow-n { background-position: -160px -192px; }
     905
     906.ui-icon-circle-zoomin { background-position: -176px -192px; }
     907
     908.ui-icon-circle-zoomout { background-position: -192px -192px; }
     909
     910.ui-icon-circle-check { background-position: -208px -192px; }
     911
     912.ui-icon-circlesmall-plus { background-position: 0 -208px; }
     913
     914.ui-icon-circlesmall-minus { background-position: -16px -208px; }
     915
     916.ui-icon-circlesmall-close { background-position: -32px -208px; }
     917
     918.ui-icon-squaresmall-plus { background-position: -48px -208px; }
     919
     920.ui-icon-squaresmall-minus { background-position: -64px -208px; }
     921
     922.ui-icon-squaresmall-close { background-position: -80px -208px; }
     923
     924.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
     925
     926.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
     927
     928.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
     929
     930.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
     931
     932.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
     933
     934.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
     935
     936.achtung .achtung-message-icon { margin-top: 0; margin-left: -.5em; margin-right: .5em; float: left; zoom: 1; }
     937.achtung .ui-icon.achtung-close-button { overflow: hidden; float: right; position: relative; top: -8px; right: -8px; cursor: pointer; background-image: url(/javascript/jqueryui/css/sage/images/ui-icons_888888_256x240.png); }
     938.achtung .ui-icon.achtung-close-button-hover { background-image: url(/javascript/jqueryui/css/sage/images/ui-icons_ffffff_256x240.png); }
     939
     940.achtungSuccess, .achtungFail, .achtungWait { opacity: .93; filter: Alpha(Opacity=93); }
     941
     942.achtungSuccess { background-color: #4DB559; }
     943
     944.achtungFail { background-color: #D64450; }
     945
     946.achtungWait { background-color: #658093; }
     947
     948.achtungSuccess .ui-icon.achtung-close-button, .achtungFail .ui-icon.achtung-close-button { background-image: url(/javascript/jqueryui/css/sage/images/ui-icons_2e83ff_256x240.png); }
     949
     950.achtungSuccess .ui-icon.achtung-close-button-hover, .achtungFail .ui-icon.achtung-close-button-hover { background-image: url(/javascript/jqueryui/css/sage/images/ui-icons_222222_256x240.png); }
     951
     952.achtung .wait-icon { background-image: url(/javascript/jqueryui/css/sage/images/wait.gif); }
     953.achtung .achtung-message { display: inline; }
  • sagenb/data/sage/html/notebook/base.html

    diff --git a/sagenb/data/sage/html/notebook/base.html b/sagenb/data/sage/html/notebook/base.html
    a b INPUT: 
    1818<link rel="stylesheet" href="/javascript/jqueryui/css/sage/jquery-ui-1.7.2.custom.css" />
    1919<script type="text/javascript" src="/javascript/jqueryui/js/jquery-ui-1.7.2.custom.min.js"></script>
    2020
    21 <!-- jQuery plugins - color pickers, shift-click, AJAX forms, IE fixes -->
     21<!-- jQuery plugins - color pickers, shift-click, AJAX forms, IE fixes, notifications -->
    2222<link rel="stylesheet" href="/javascript/jquery/plugins/farbtastic/farbtastic.css" type="text/css" />
    2323<script type="text/javascript" src="/javascript/jquery/plugins/farbtastic/farbtastic.min.js"></script>
    2424<script type="text/javascript" src="/javascript/jquery/plugins/extendedclick/jquery.event.extendedclick.min.js"></script>
    INPUT: 
    2828<script type="text/javascript" src="/javascript/jquery/plugins/jpicker/jpicker-1.0.11.min.js"></script>
    2929<link rel="stylesheet" media="screen" type="text/css" href="/javascript/jquery/plugins/colorpicker/css/colorpicker.css" />
    3030<script type="text/javascript" src="/javascript/jquery/plugins/colorpicker/js/colorpicker.min.js"></script>
     31<script type="text/javascript" src="/javascript/jquery/plugins/achtung/ui.achtung-mod.min.js"></script>
    3132
    3233<script type="text/javascript" src="/javascript/sage/main.js"></script>
    3334
  • sagenb/data/sage/js/notebook_lib.js

    diff --git a/sagenb/data/sage/js/notebook_lib.js b/sagenb/data/sage/js/notebook_lib.js
    a b var debug_keypress; 
    8383var skip_keyup = false;
    8484var in_debug_input = false;
    8585
     86// Interrupts.
     87var interrupt_state = {count: 0};
     88
    8689// Focus / blur.
    8790var current_cell = -1;
    8891var cell_has_changed = false;
    function cancel_update_check() { 
    35623565    updating = false;
    35633566    clearTimeout(update_timeout);
    35643567    document.title = original_title;
     3568    reset_interrupts();
    35653569}
    35663570
    35673571
    function interrupt() { 
    43764380    Send a message to the server that we would like to interrupt all
    43774381    running calculations in the worksheet.
    43784382    */
     4383    if (!updating) {
     4384        return;
     4385    }
    43794386    async_request(worksheet_command('interrupt'), interrupt_callback);
    43804387}
    43814388
    43824389
     4390function reset_interrupts() {
     4391    /*
     4392    Stops sending periodic interrupt commands, closes any running
     4393    alerts, and resets state variables.
     4394    */
     4395    var is = interrupt_state;
     4396
     4397    if (is.alert) {
     4398        is.alert.achtung('close');
     4399    }
     4400    is.alert = null;
     4401    is.count = 0;
     4402}
     4403
     4404
    43834405function interrupt_callback(status, response_text) {
    43844406    /*
    43854407    Callback called after we send the interrupt signal to the server.
    43864408    If the interrupt succeeds, we change the CSS/DOM to indicate that
    4387     no cells are currently computing.  If it fails, we display an
    4388     annoying alert (it might be a good idea to change this, e.g., to
    4389     blink red or something instead of an alert).
     4409    no cells are currently computing.  If it fails, we display/update
     4410    a alert and repeat after a timeout.  If the signal doesn't make
     4411    it, we just reset any alerts.
    43904412    */
    4391     if (response_text === "failed") {
    4392         alert('Unable to immediately interrupt calculation.');
    4393         return;
    4394     } else if (status === "success") {
     4413    var is = interrupt_state, message, timeout = 5;
     4414
     4415    if (response_text === 'failed') {
     4416        if (!is.count) {
     4417            is.count = 1;
     4418            message = 'Unable to interrupt calculation. ' +
     4419                'Trying again in ' + timeout + ' seconds... ' +
     4420                'Close this box to stop trying.';
     4421
     4422            is.alert = $.achtung({
     4423                className: 'interrupt-fail-notification',
     4424                message: message,
     4425                timeout: timeout,
     4426                hideEffects: false,
     4427                showEffects: false,
     4428                onCloseButton: function () {
     4429                    reset_interrupts();
     4430                },
     4431                onTimeout: function () {
     4432                    interrupt();
     4433                }
     4434            });
     4435            return;
     4436        }
     4437
     4438        is.count += 1;
     4439        message = 'Interrupt attempt ' + is.count;
     4440        if (is.count > 5) {
     4441            message += '. <a href="javascript:restart_sage();">Restart</a>, instead?';
     4442        }
     4443        is.alert.achtung('update', {
     4444            message: message,
     4445            timeout: timeout
     4446        });
     4447    } else if (status === 'success') {
     4448        // halt_active_cells calls reset_interrupts.
    43954449        halt_active_cells();
     4450    } else {
     4451        reset_interrupts();
    43964452    }
    43974453}
    43984454
    function halt_active_cells() { 
    45024558        cell_set_not_evaluated(active_cell_list[i]);
    45034559    }
    45044560    active_cell_list = [];
     4561
     4562    reset_interrupts();
    45054563}
    45064564
    45074565
  • sagenb/notebook/run_notebook.py

    diff --git a/sagenb/notebook/run_notebook.py b/sagenb/notebook/run_notebook.py
    a b twist.SAGETEX_PATH = %r 
    288288twist.OPEN_MODE = %s
    289289twist.SID_COOKIE = str(hash(%r))
    290290twist.DIR = %r
     291twist.reactor = reactor
    291292twist.init_updates()
    292293import sagenb.notebook.worksheet as worksheet
    293294
  • sagenb/notebook/twist.py

    diff --git a/sagenb/notebook/twist.py b/sagenb/notebook/twist.py
    a b notebook = None 
    3030DIR        = None
    3131OPEN_MODE  = None
    3232SID_COOKIE = None
     33reactor    = None
    3334
    3435############################################################
    3536
    class Worksheet_quit_sage(WorksheetResou 
    14681469class Worksheet_interrupt(WorksheetResource, resource.Resource):
    14691470    def render(self, ctx):
    14701471        # TODO -- this must not block long (!)
    1471         s = self.worksheet.interrupt()
    1472         return HTMLResponse(stream='ok' if s else 'failed')
     1472        def callback(success):
     1473            """Called when interrupt is successful"""
     1474            return HTMLResponse(stream = 'success' if success else 'failed')
     1475       
     1476        deferred = self.worksheet.interrupt(callback)
     1477        return deferred
    14731478
    14741479class Worksheet_hide_all(WorksheetResource, resource.Resource):
    14751480    def render(self, ctx):
  • sagenb/notebook/worksheet.py

    diff --git a/sagenb/notebook/worksheet.py b/sagenb/notebook/worksheet.py
    a b import string 
    3636import time
    3737import traceback
    3838
     39from twisted.internet.defer import Deferred
     40
    3941# General sage library code
    4042from sagenb.misc.misc import (cython, load, save,
    4143                              alarm, cancel_alarm, verbose, DOT_SAGENB,
    from sagenb.notebook.all import * 
    30723074
    30733075        return 'd', C
    30743076
    3075     def interrupt(self):
     3077    def interrupt(self, callback = None, timeout = 1):
    30763078        r"""
    30773079        Interrupt all currently queued up calculations.
    30783080
     3081        INPUT:
     3082
     3083        - ``timeout`` -- time to wait for interruption to succeed
     3084       
     3085        - ``callback`` -- callback to be called. Called with True if
     3086          interrupt succeeds, else called with False.
     3087       
    30793088        OUTPUT:
    30803089
    3081         -  ``bool`` - return True if no problems interrupting
    3082            calculation return False if the Sage interpreter had to be
    3083            restarted.
     3090        -  ``deferred`` - a Deferred object with the given callbacks and errbacks
    30843091
    30853092        EXAMPLES: We create a worksheet and start a large factorization
    30863093        going::
    from sagenb.notebook.all import * 
    31003107
    31013108        ::
    31023109
    3103             sage: W.interrupt()         # random -- could fail on heavily loaded machine
     3110            sage: W.interrupt()         # not tested -- needs running reactor
    31043111            True
    31053112
    31063113        Now we check and nothing is computing.
    from sagenb.notebook.all import * 
    31233130        # stop the current computation in the running Sage
    31243131        S = self.__sage
    31253132        S.interrupt()
    3126         return True
     3133       
     3134        deferred = Deferred()
     3135        deferred.addCallback(callback)
     3136       
     3137        def interrupt_check():
     3138            if S.is_computing():
     3139                deferred.callback(False)
     3140            else:
     3141                deferred.callback(True)
     3142               
     3143        from twist import reactor
     3144        reactor.callLater(timeout, interrupt_check)
     3145       
     3146        return deferred
    31273147
    31283148    def clear_queue(self):
    31293149        # empty the queue
  • new file sass/src/jquery-plugins/_ui-achtung.sass

    diff --git a/sass/src/jquery-plugins/_ui-achtung.sass b/sass/src/jquery-plugins/_ui-achtung.sass
    new file mode 100644
    - +  
     1* html
     2  #achtung-overlay
     3    position: absolute
     4
     5  .achtung
     6    width: 280px
     7
     8
     9#achtung-overlay
     10  overflow: hidden
     11  position: fixed
     12  top: 15px
     13  right: 15px
     14  width: 280px
     15  z-index: 50
     16
     17
     18.achtung
     19  display: none
     20  margin-bottom: 8px
     21  padding: 15px 15px
     22  background-color: #000
     23  color: white
     24  width: 250px
     25  font-weight: bold
     26  position: relative
     27  overflow: hidden
     28  -moz-box-shadow: #aaa 1px 1px 2px
     29  -webkit-box-shadow: #aaa 1px 1px 2px
     30  box-shadow: #aaa 1px 1px 2px
     31  -moz-border-radius: 4px
     32  -webkit-border-radius: 4px
     33  border-radius: 4px
     34  opacity: .85
     35  filter: Alpha(Opacity=85)
     36
     37
     38.ui-icon
     39  display: block
     40  text-indent: -99999px
     41  overflow: hidden
     42  background-repeat: no-repeat
     43  width: 16px
     44  height: 16px
     45  background-image: url(/javascript/jqueryui/css/sage/images/ui-icons_222222_256x240.png)
     46
     47
     48.ui-icon-carat-1-n
     49  background-position: 0 0
     50
     51
     52.ui-icon-carat-1-ne
     53  background-position: -16px 0
     54
     55
     56.ui-icon-carat-1-e
     57  background-position: -32px 0
     58
     59
     60.ui-icon-carat-1-se
     61  background-position: -48px 0
     62
     63
     64.ui-icon-carat-1-s
     65  background-position: -64px 0
     66
     67
     68.ui-icon-carat-1-sw
     69  background-position: -80px 0
     70
     71
     72.ui-icon-carat-1-w
     73  background-position: -96px 0
     74
     75
     76.ui-icon-carat-1-nw
     77  background-position: -112px 0
     78
     79
     80.ui-icon-carat-2-n-s
     81  background-position: -128px 0
     82
     83
     84.ui-icon-carat-2-e-w
     85  background-position: -144px 0
     86
     87
     88.ui-icon-triangle-1-n
     89  background-position: 0 -16px
     90
     91
     92.ui-icon-triangle-1-ne
     93  background-position: -16px -16px
     94
     95
     96.ui-icon-triangle-1-e
     97  background-position: -32px -16px
     98
     99
     100.ui-icon-triangle-1-se
     101  background-position: -48px -16px
     102
     103
     104.ui-icon-triangle-1-s
     105  background-position: -64px -16px
     106
     107
     108.ui-icon-triangle-1-sw
     109  background-position: -80px -16px
     110
     111
     112.ui-icon-triangle-1-w
     113  background-position: -96px -16px
     114
     115
     116.ui-icon-triangle-1-nw
     117  background-position: -112px -16px
     118
     119
     120.ui-icon-triangle-2-n-s
     121  background-position: -128px -16px
     122
     123
     124.ui-icon-triangle-2-e-w
     125  background-position: -144px -16px
     126
     127
     128.ui-icon-arrow-1-n
     129  background-position: 0 -32px
     130
     131
     132.ui-icon-arrow-1-ne
     133  background-position: -16px -32px
     134
     135
     136.ui-icon-arrow-1-e
     137  background-position: -32px -32px
     138
     139
     140.ui-icon-arrow-1-se
     141  background-position: -48px -32px
     142
     143
     144.ui-icon-arrow-1-s
     145  background-position: -64px -32px
     146
     147
     148.ui-icon-arrow-1-sw
     149  background-position: -80px -32px
     150
     151
     152.ui-icon-arrow-1-w
     153  background-position: -96px -32px
     154
     155
     156.ui-icon-arrow-1-nw
     157  background-position: -112px -32px
     158
     159
     160.ui-icon-arrow-2-n-s
     161  background-position: -128px -32px
     162
     163
     164.ui-icon-arrow-2-ne-sw
     165  background-position: -144px -32px
     166
     167
     168.ui-icon-arrow-2-e-w
     169  background-position: -160px -32px
     170
     171
     172.ui-icon-arrow-2-se-nw
     173  background-position: -176px -32px
     174
     175
     176.ui-icon-arrowstop-1-n
     177  background-position: -192px -32px
     178
     179
     180.ui-icon-arrowstop-1-e
     181  background-position: -208px -32px
     182
     183
     184.ui-icon-arrowstop-1-s
     185  background-position: -224px -32px
     186
     187
     188.ui-icon-arrowstop-1-w
     189  background-position: -240px -32px
     190
     191
     192.ui-icon-arrowthick-1-n
     193  background-position: 0 -48px
     194
     195
     196.ui-icon-arrowthick-1-ne
     197  background-position: -16px -48px
     198
     199
     200.ui-icon-arrowthick-1-e
     201  background-position: -32px -48px
     202
     203
     204.ui-icon-arrowthick-1-se
     205  background-position: -48px -48px
     206
     207
     208.ui-icon-arrowthick-1-s
     209  background-position: -64px -48px
     210
     211
     212.ui-icon-arrowthick-1-sw
     213  background-position: -80px -48px
     214
     215
     216.ui-icon-arrowthick-1-w
     217  background-position: -96px -48px
     218
     219
     220.ui-icon-arrowthick-1-nw
     221  background-position: -112px -48px
     222
     223
     224.ui-icon-arrowthick-2-n-s
     225  background-position: -128px -48px
     226
     227
     228.ui-icon-arrowthick-2-ne-sw
     229  background-position: -144px -48px
     230
     231
     232.ui-icon-arrowthick-2-e-w
     233  background-position: -160px -48px
     234
     235
     236.ui-icon-arrowthick-2-se-nw
     237  background-position: -176px -48px
     238
     239
     240.ui-icon-arrowthickstop-1-n
     241  background-position: -192px -48px
     242
     243
     244.ui-icon-arrowthickstop-1-e
     245  background-position: -208px -48px
     246
     247
     248.ui-icon-arrowthickstop-1-s
     249  background-position: -224px -48px
     250
     251
     252.ui-icon-arrowthickstop-1-w
     253  background-position: -240px -48px
     254
     255
     256.ui-icon-arrowreturnthick-1-w
     257  background-position: 0 -64px
     258
     259
     260.ui-icon-arrowreturnthick-1-n
     261  background-position: -16px -64px
     262
     263
     264.ui-icon-arrowreturnthick-1-e
     265  background-position: -32px -64px
     266
     267
     268.ui-icon-arrowreturnthick-1-s
     269  background-position: -48px -64px
     270
     271
     272.ui-icon-arrowreturn-1-w
     273  background-position: -64px -64px
     274
     275
     276.ui-icon-arrowreturn-1-n
     277  background-position: -80px -64px
     278
     279
     280.ui-icon-arrowreturn-1-e
     281  background-position: -96px -64px
     282
     283
     284.ui-icon-arrowreturn-1-s
     285  background-position: -112px -64px
     286
     287
     288.ui-icon-arrowrefresh-1-w
     289  background-position: -128px -64px
     290
     291
     292.ui-icon-arrowrefresh-1-n
     293  background-position: -144px -64px
     294
     295
     296.ui-icon-arrowrefresh-1-e
     297  background-position: -160px -64px
     298
     299
     300.ui-icon-arrowrefresh-1-s
     301  background-position: -176px -64px
     302
     303
     304.ui-icon-arrow-4
     305  background-position: 0 -80px
     306
     307
     308.ui-icon-arrow-4-diag
     309  background-position: -16px -80px
     310
     311
     312.ui-icon-extlink
     313  background-position: -32px -80px
     314
     315
     316.ui-icon-newwin
     317  background-position: -48px -80px
     318
     319
     320.ui-icon-refresh
     321  background-position: -64px -80px
     322
     323
     324.ui-icon-shuffle
     325  background-position: -80px -80px
     326
     327
     328.ui-icon-transfer-e-w
     329  background-position: -96px -80px
     330
     331
     332.ui-icon-transferthick-e-w
     333  background-position: -112px -80px
     334
     335
     336.ui-icon-folder-collapsed
     337  background-position: 0 -96px
     338
     339
     340.ui-icon-folder-open
     341  background-position: -16px -96px
     342
     343
     344.ui-icon-document
     345  background-position: -32px -96px
     346
     347
     348.ui-icon-document-b
     349  background-position: -48px -96px
     350
     351
     352.ui-icon-note
     353  background-position: -64px -96px
     354
     355
     356.ui-icon-mail-closed
     357  background-position: -80px -96px
     358
     359
     360.ui-icon-mail-open
     361  background-position: -96px -96px
     362
     363
     364.ui-icon-suitcase
     365  background-position: -112px -96px
     366
     367
     368.ui-icon-comment
     369  background-position: -128px -96px
     370
     371
     372.ui-icon-person
     373  background-position: -144px -96px
     374
     375
     376.ui-icon-print
     377  background-position: -160px -96px
     378
     379
     380.ui-icon-trash
     381  background-position: -176px -96px
     382
     383
     384.ui-icon-locked
     385  background-position: -192px -96px
     386
     387
     388.ui-icon-unlocked
     389  background-position: -208px -96px
     390
     391
     392.ui-icon-bookmark
     393  background-position: -224px -96px
     394
     395
     396.ui-icon-tag
     397  background-position: -240px -96px
     398
     399
     400.ui-icon-home
     401  background-position: 0 -112px
     402
     403
     404.ui-icon-flag
     405  background-position: -16px -112px
     406
     407
     408.ui-icon-calendar
     409  background-position: -32px -112px
     410
     411
     412.ui-icon-cart
     413  background-position: -48px -112px
     414
     415
     416.ui-icon-pencil
     417  background-position: -64px -112px
     418
     419
     420.ui-icon-clock
     421  background-position: -80px -112px
     422
     423
     424.ui-icon-disk
     425  background-position: -96px -112px
     426
     427
     428.ui-icon-calculator
     429  background-position: -112px -112px
     430
     431
     432.ui-icon-zoomin
     433  background-position: -128px -112px
     434
     435
     436.ui-icon-zoomout
     437  background-position: -144px -112px
     438
     439
     440.ui-icon-search
     441  background-position: -160px -112px
     442
     443
     444.ui-icon-wrench
     445  background-position: -176px -112px
     446
     447
     448.ui-icon-gear
     449  background-position: -192px -112px
     450
     451
     452.ui-icon-heart
     453  background-position: -208px -112px
     454
     455
     456.ui-icon-star
     457  background-position: -224px -112px
     458
     459
     460.ui-icon-link
     461  background-position: -240px -112px
     462
     463
     464.ui-icon-cancel
     465  background-position: 0 -128px
     466
     467
     468.ui-icon-plus
     469  background-position: -16px -128px
     470
     471
     472.ui-icon-plusthick
     473  background-position: -32px -128px
     474
     475
     476.ui-icon-minus
     477  background-position: -48px -128px
     478
     479
     480.ui-icon-minusthick
     481  background-position: -64px -128px
     482
     483
     484.ui-icon-close
     485  background-position: -80px -128px
     486
     487
     488.ui-icon-closethick
     489  background-position: -96px -128px
     490
     491
     492.ui-icon-key
     493  background-position: -112px -128px
     494
     495
     496.ui-icon-lightbulb
     497  background-position: -128px -128px
     498
     499
     500.ui-icon-scissors
     501  background-position: -144px -128px
     502
     503
     504.ui-icon-clipboard
     505  background-position: -160px -128px
     506
     507
     508.ui-icon-copy
     509  background-position: -176px -128px
     510
     511
     512.ui-icon-contact
     513  background-position: -192px -128px
     514
     515
     516.ui-icon-image
     517  background-position: -208px -128px
     518
     519
     520.ui-icon-video
     521  background-position: -224px -128px
     522
     523
     524.ui-icon-script
     525  background-position: -240px -128px
     526
     527
     528.ui-icon-alert
     529  background-position: 0 -144px
     530
     531
     532.ui-icon-info
     533  background-position: -16px -144px
     534
     535
     536.ui-icon-notice
     537  background-position: -32px -144px
     538
     539
     540.ui-icon-help
     541  background-position: -48px -144px
     542
     543
     544.ui-icon-check
     545  background-position: -64px -144px
     546
     547
     548.ui-icon-bullet
     549  background-position: -80px -144px
     550
     551
     552.ui-icon-radio-off
     553  background-position: -96px -144px
     554
     555
     556.ui-icon-radio-on
     557  background-position: -112px -144px
     558
     559
     560.ui-icon-pin-w
     561  background-position: -128px -144px
     562
     563
     564.ui-icon-pin-s
     565  background-position: -144px -144px
     566
     567
     568.ui-icon-play
     569  background-position: 0 -160px
     570
     571
     572.ui-icon-pause
     573  background-position: -16px -160px
     574
     575
     576.ui-icon-seek-next
     577  background-position: -32px -160px
     578
     579
     580.ui-icon-seek-prev
     581  background-position: -48px -160px
     582
     583
     584.ui-icon-seek-end
     585  background-position: -64px -160px
     586
     587
     588.ui-icon-seek-first
     589  background-position: -80px -160px
     590
     591
     592.ui-icon-stop
     593  background-position: -96px -160px
     594
     595
     596.ui-icon-eject
     597  background-position: -112px -160px
     598
     599
     600.ui-icon-volume-off
     601  background-position: -128px -160px
     602
     603
     604.ui-icon-volume-on
     605  background-position: -144px -160px
     606
     607
     608.ui-icon-power
     609  background-position: 0 -176px
     610
     611
     612.ui-icon-signal-diag
     613  background-position: -16px -176px
     614
     615
     616.ui-icon-signal
     617  background-position: -32px -176px
     618
     619
     620.ui-icon-battery-0
     621  background-position: -48px -176px
     622
     623
     624.ui-icon-battery-1
     625  background-position: -64px -176px
     626
     627
     628.ui-icon-battery-2
     629  background-position: -80px -176px
     630
     631
     632.ui-icon-battery-3
     633  background-position: -96px -176px
     634
     635
     636.ui-icon-circle-plus
     637  background-position: 0 -192px
     638
     639
     640.ui-icon-circle-minus
     641  background-position: -16px -192px
     642
     643
     644.ui-icon-circle-close
     645  background-position: -32px -192px
     646
     647
     648.ui-icon-circle-triangle-e
     649  background-position: -48px -192px
     650
     651
     652.ui-icon-circle-triangle-s
     653  background-position: -64px -192px
     654
     655
     656.ui-icon-circle-triangle-w
     657  background-position: -80px -192px
     658
     659
     660.ui-icon-circle-triangle-n
     661  background-position: -96px -192px
     662
     663
     664.ui-icon-circle-arrow-e
     665  background-position: -112px -192px
     666
     667
     668.ui-icon-circle-arrow-s
     669  background-position: -128px -192px
     670
     671
     672.ui-icon-circle-arrow-w
     673  background-position: -144px -192px
     674
     675
     676.ui-icon-circle-arrow-n
     677  background-position: -160px -192px
     678
     679
     680.ui-icon-circle-zoomin
     681  background-position: -176px -192px
     682
     683
     684.ui-icon-circle-zoomout
     685  background-position: -192px -192px
     686
     687
     688.ui-icon-circle-check
     689  background-position: -208px -192px
     690
     691
     692.ui-icon-circlesmall-plus
     693  background-position: 0 -208px
     694
     695
     696.ui-icon-circlesmall-minus
     697  background-position: -16px -208px
     698
     699
     700.ui-icon-circlesmall-close
     701  background-position: -32px -208px
     702
     703
     704.ui-icon-squaresmall-plus
     705  background-position: -48px -208px
     706
     707
     708.ui-icon-squaresmall-minus
     709  background-position: -64px -208px
     710
     711
     712.ui-icon-squaresmall-close
     713  background-position: -80px -208px
     714
     715
     716.ui-icon-grip-dotted-vertical
     717  background-position: 0 -224px
     718
     719
     720.ui-icon-grip-dotted-horizontal
     721  background-position: -16px -224px
     722
     723
     724.ui-icon-grip-solid-vertical
     725  background-position: -32px -224px
     726
     727
     728.ui-icon-grip-solid-horizontal
     729  background-position: -48px -224px
     730
     731
     732.ui-icon-gripsmall-diagonal-se
     733  background-position: -64px -224px
     734
     735
     736.ui-icon-grip-diagonal-se
     737  background-position: -80px -224px
     738
     739
     740.achtung
     741  .achtung-message-icon
     742    margin-top: 0
     743    margin-left: -.5em
     744    margin-right: .5em
     745    float: left
     746    zoom: 1
     747
     748  .ui-icon
     749    &.achtung-close-button
     750      overflow: hidden
     751      float: right
     752      position: relative
     753      top: -8px
     754      right: -8px
     755      cursor: pointer
     756      background-image: url(/javascript/jqueryui/css/sage/images/ui-icons_888888_256x240.png)
     757
     758    &.achtung-close-button-hover
     759      background-image: url(/javascript/jqueryui/css/sage/images/ui-icons_ffffff_256x240.png)
     760
     761
     762.achtungSuccess, .achtungFail, .achtungWait
     763  opacity: .93
     764  filter: Alpha(Opacity=93)
     765
     766
     767.achtungSuccess
     768  background-color: #4DB559
     769
     770
     771.achtungFail
     772  background-color: #D64450
     773
     774
     775.achtungWait
     776  background-color: #658093
     777
     778
     779.achtungSuccess .ui-icon.achtung-close-button, .achtungFail .ui-icon.achtung-close-button
     780  background-image: url(/javascript/jqueryui/css/sage/images/ui-icons_2e83ff_256x240.png)
     781
     782
     783.achtungSuccess .ui-icon.achtung-close-button-hover, .achtungFail .ui-icon.achtung-close-button-hover
     784  background-image: url(/javascript/jqueryui/css/sage/images/ui-icons_222222_256x240.png)
     785
     786
     787.achtung
     788  .wait-icon
     789    background-image: url(/javascript/jqueryui/css/sage/images/wait.gif)
     790
     791  .achtung-message
     792    display: inline
  • sass/src/main.sass

    diff --git a/sass/src/main.sass b/sass/src/main.sass
    a b div.docstring-introspection-dialog 
    462462    :clear both
    463463    :font-size 0.6em
    464464
     465.worksheet-online .interrupt-fail-notification
     466  :background-color #B22222
     467
    465468span.pane div.worksheets_topbar
    466469  :color black
    467470  :height 3ex
    t 
    11911194@import accounts.sass
    11921195@import login.sass
    11931196@import pygment.sass
     1197@import jquery-plugins/ui-achtung.sass