r65443 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r65442‎ | r65443 | r65444 >
Date:21:10, 22 April 2010
Author:jeroendedauw
Status:deferred
Tags:
Comment:
Added tabs to Special:StoryReview using jQuery UI tabs
Modified paths:
  • /trunk/extensions/Storyboard/api/ApiQueryStories.php (modified) (history)
  • /trunk/extensions/Storyboard/jquery/css (added) (history)
  • /trunk/extensions/Storyboard/jquery/css/images (added) (history)
  • /trunk/extensions/Storyboard/jquery/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png (added) (history)
  • /trunk/extensions/Storyboard/jquery/css/images/ui-bg_diagonals-thick_20_666666_40x40.png (added) (history)
  • /trunk/extensions/Storyboard/jquery/css/images/ui-bg_flat_10_000000_40x100.png (added) (history)
  • /trunk/extensions/Storyboard/jquery/css/images/ui-bg_glass_100_f6f6f6_1x400.png (added) (history)
  • /trunk/extensions/Storyboard/jquery/css/images/ui-bg_glass_100_fdf5ce_1x400.png (added) (history)
  • /trunk/extensions/Storyboard/jquery/css/images/ui-bg_glass_65_ffffff_1x400.png (added) (history)
  • /trunk/extensions/Storyboard/jquery/css/images/ui-bg_gloss-wave_35_f6a828_500x100.png (added) (history)
  • /trunk/extensions/Storyboard/jquery/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png (added) (history)
  • /trunk/extensions/Storyboard/jquery/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.png (added) (history)
  • /trunk/extensions/Storyboard/jquery/css/images/ui-icons_222222_256x240.png (added) (history)
  • /trunk/extensions/Storyboard/jquery/css/images/ui-icons_228ef1_256x240.png (added) (history)
  • /trunk/extensions/Storyboard/jquery/css/images/ui-icons_ef8c08_256x240.png (added) (history)
  • /trunk/extensions/Storyboard/jquery/css/images/ui-icons_ffd27a_256x240.png (added) (history)
  • /trunk/extensions/Storyboard/jquery/css/images/ui-icons_ffffff_256x240.png (added) (history)
  • /trunk/extensions/Storyboard/jquery/css/jquery-ui-1.7.2.custom.css (added) (history)
  • /trunk/extensions/Storyboard/jquery/jquery-ui-1.7.2.custom.min.js (added) (history)
  • /trunk/extensions/Storyboard/specials/StoryReview/StoryReview_body.php (modified) (history)

Diff [purge]

Index: trunk/extensions/Storyboard/jquery/jquery-ui-1.7.2.custom.min.js
@@ -0,0 +1,22 @@
 2+/*
 3+ * jQuery UI 1.7.2
 4+ *
 5+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
 6+ * Dual licensed under the MIT (MIT-LICENSE.txt)
 7+ * and GPL (GPL-LICENSE.txt) licenses.
 8+ *
 9+ * http://docs.jquery.com/UI
 10+ */
 11+jQuery.ui||(function(c){var i=c.fn.remove,d=c.browser.mozilla&&(parseFloat(c.browser.version)<1.9);c.ui={version:"1.7.2",plugin:{add:function(k,l,n){var m=c.ui[k].prototype;for(var j in n){m.plugins[j]=m.plugins[j]||[];m.plugins[j].push([l,n[j]])}},call:function(j,l,k){var n=j.plugins[l];if(!n||!j.element[0].parentNode){return}for(var m=0;m<n.length;m++){if(j.options[n[m][0]]){n[m][1].apply(j.element,k)}}}},contains:function(k,j){return document.compareDocumentPosition?k.compareDocumentPosition(j)&16:k!==j&&k.contains(j)},hasScroll:function(m,k){if(c(m).css("overflow")=="hidden"){return false}var j=(k&&k=="left")?"scrollLeft":"scrollTop",l=false;if(m[j]>0){return true}m[j]=1;l=(m[j]>0);m[j]=0;return l},isOverAxis:function(k,j,l){return(k>j)&&(k<(j+l))},isOver:function(o,k,n,m,j,l){return c.ui.isOverAxis(o,n,j)&&c.ui.isOverAxis(k,m,l)},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38}};if(d){var f=c.attr,e=c.fn.removeAttr,h="http://www.w3.org/2005/07/aaa",a=/^aria-/,b=/^wairole:/;c.attr=function(k,j,l){var m=l!==undefined;return(j=="role"?(m?f.call(this,k,j,"wairole:"+l):(f.apply(this,arguments)||"").replace(b,"")):(a.test(j)?(m?k.setAttributeNS(h,j.replace(a,"aaa:"),l):f.call(this,k,j.replace(a,"aaa:"))):f.apply(this,arguments)))};c.fn.removeAttr=function(j){return(a.test(j)?this.each(function(){this.removeAttributeNS(h,j.replace(a,""))}):e.call(this,j))}}c.fn.extend({remove:function(){c("*",this).add(this).each(function(){c(this).triggerHandler("remove")});return i.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})},scrollParent:function(){var j;if((c.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){j=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(c.curCSS(this,"position",1))&&(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}else{j=this.parents().filter(function(){return(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!j.length?c(document):j}});c.extend(c.expr[":"],{data:function(l,k,j){return !!c.data(l,j[3])},focusable:function(k){var l=k.nodeName.toLowerCase(),j=c.attr(k,"tabindex");return(/input|select|textarea|button|object/.test(l)?!k.disabled:"a"==l||"area"==l?k.href||!isNaN(j):!isNaN(j))&&!c(k)["area"==l?"parents":"closest"](":hidden").length},tabbable:function(k){var j=c.attr(k,"tabindex");return(isNaN(j)||j>=0)&&c(k).is(":focusable")}});function g(m,n,o,l){function k(q){var p=c[m][n][q]||[];return(typeof p=="string"?p.split(/,?\s+/):p)}var j=k("getter");if(l.length==1&&typeof l[0]=="string"){j=j.concat(k("getterSetter"))}return(c.inArray(o,j)!=-1)}c.widget=function(k,j){var l=k.split(".")[0];k=k.split(".")[1];c.fn[k]=function(p){var n=(typeof p=="string"),o=Array.prototype.slice.call(arguments,1);if(n&&p.substring(0,1)=="_"){return this}if(n&&g(l,k,p,o)){var m=c.data(this[0],k);return(m?m[p].apply(m,o):undefined)}return this.each(function(){var q=c.data(this,k);(!q&&!n&&c.data(this,k,new c[l][k](this,p))._init());(q&&n&&c.isFunction(q[p])&&q[p].apply(q,o))})};c[l]=c[l]||{};c[l][k]=function(o,n){var m=this;this.namespace=l;this.widgetName=k;this.widgetEventPrefix=c[l][k].eventPrefix||k;this.widgetBaseClass=l+"-"+k;this.options=c.extend({},c.widget.defaults,c[l][k].defaults,c.metadata&&c.metadata.get(o)[k],n);this.element=c(o).bind("setData."+k,function(q,p,r){if(q.target==o){return m._setData(p,r)}}).bind("getData."+k,function(q,p){if(q.target==o){return m._getData(p)}}).bind("remove",function(){return m.destroy()})};c[l][k].prototype=c.extend({},c.widget.prototype,j);c[l][k].getterSetter="option"};c.widget.prototype={_init:function(){},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").removeAttr("aria-disabled")},option:function(l,m){var k=l,j=this;if(typeof l=="string"){if(m===undefined){return this._getData(l)}k={};k[l]=m}c.each(k,function(n,o){j._setData(n,o)})},_getData:function(j){return this.options[j]},_setData:function(j,k){this.options[j]=k;if(j=="disabled"){this.element[k?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",k)}},enable:function(){this._setData("disabled",false)},disable:function(){this._setData("disabled",true)},_trigger:function(l,m,n){var p=this.options[l],j=(l==this.widgetEventPrefix?l:this.widgetEventPrefix+l);m=c.Event(m);m.type=j;if(m.originalEvent){for(var k=c.event.props.length,o;k;){o=c.event.props[--k];m[o]=m.originalEvent[o]}}this.element.trigger(m,n);return !(c.isFunction(p)&&p.call(this.element[0],m,n)===false||m.isDefaultPrevented())}};c.widget.defaults={disabled:false};c.ui.mouse={_mouseInit:function(){var j=this;this.element.bind("mousedown."+this.widgetName,function(k){return j._mouseDown(k)}).bind("click."+this.widgetName,function(k){if(j._preventClickEvent){j._preventClickEvent=false;k.stopImmediatePropagation();return false}});if(c.browser.msie){this._mouseUnselectable=this.element.attr("unselectable");this.element.attr("unselectable","on")}this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName);(c.browser.msie&&this.element.attr("unselectable",this._mouseUnselectable))},_mouseDown:function(l){l.originalEvent=l.originalEvent||{};if(l.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(l));this._mouseDownEvent=l;var k=this,m=(l.which==1),j=(typeof this.options.cancel=="string"?c(l.target).parents().add(l.target).filter(this.options.cancel).length:false);if(!m||j||!this._mouseCapture(l)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){k.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(l)&&this._mouseDelayMet(l)){this._mouseStarted=(this._mouseStart(l)!==false);if(!this._mouseStarted){l.preventDefault();return true}}this._mouseMoveDelegate=function(n){return k._mouseMove(n)};this._mouseUpDelegate=function(n){return k._mouseUp(n)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(c.browser.safari||l.preventDefault());l.originalEvent.mouseHandled=true;return true},_mouseMove:function(j){if(c.browser.msie&&!j.button){return this._mouseUp(j)}if(this._mouseStarted){this._mouseDrag(j);return j.preventDefault()}if(this._mouseDistanceMet(j)&&this._mouseDelayMet(j)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,j)!==false);(this._mouseStarted?this._mouseDrag(j):this._mouseUp(j))}return !this._mouseStarted},_mouseUp:function(j){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(j.target==this._mouseDownEvent.target);this._mouseStop(j)}return false},_mouseDistanceMet:function(j){return(Math.max(Math.abs(this._mouseDownEvent.pageX-j.pageX),Math.abs(this._mouseDownEvent.pageY-j.pageY))>=this.options.distance)},_mouseDelayMet:function(j){return this.mouseDelayMet},_mouseStart:function(j){},_mouseDrag:function(j){},_mouseStop:function(j){},_mouseCapture:function(j){return true}};c.ui.mouse.defaults={cancel:null,distance:1,delay:0}})(jQuery);;/*
 12+ * jQuery UI Tabs 1.7.2
 13+ *
 14+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
 15+ * Dual licensed under the MIT (MIT-LICENSE.txt)
 16+ * and GPL (GPL-LICENSE.txt) licenses.
 17+ *
 18+ * http://docs.jquery.com/UI/Tabs
 19+ *
 20+ * Depends:
 21+ * ui.core.js
 22+ */
 23+(function(a){a.widget("ui.tabs",{_init:function(){if(this.options.deselectable!==undefined){this.options.collapsible=this.options.deselectable}this._tabify(true)},_setData:function(b,c){if(b=="selected"){if(this.options.collapsible&&c==this.options.selected){return}this.select(c)}else{this.options[b]=c;if(b=="deselectable"){this.options.collapsible=c}this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+a.data(b)},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+a.data(this.list[0]));return a.cookie.apply(null,[b].concat(a.makeArray(arguments)))},_ui:function(c,b){return{tab:c,panel:b,index:this.anchors.index(c)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=a(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(n){this.list=this.element.children("ul:first");this.lis=a("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return a("a",this)[0]});this.panels=a([]);var p=this,d=this.options;var c=/^#.+/;this.anchors.each(function(r,o){var q=a(o).attr("href");var s=q.split("#")[0],u;if(s&&(s===location.toString().split("#")[0]||(u=a("base")[0])&&s===u.href)){q=o.hash;o.href=q}if(c.test(q)){p.panels=p.panels.add(p._sanitizeSelector(q))}else{if(q!="#"){a.data(o,"href.tabs",q);a.data(o,"load.tabs",q.replace(/#.*$/,""));var w=p._tabId(o);o.href="#"+w;var v=a("#"+w);if(!v.length){v=a(d.panelTemplate).attr("id",w).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(p.panels[r-1]||p.list);v.data("destroy.tabs",true)}p.panels=p.panels.add(v)}else{d.disabled.push(r)}}});if(n){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(d.selected===undefined){if(location.hash){this.anchors.each(function(q,o){if(o.hash==location.hash){d.selected=q;return false}})}if(typeof d.selected!="number"&&d.cookie){d.selected=parseInt(p._cookie(),10)}if(typeof d.selected!="number"&&this.lis.filter(".ui-tabs-selected").length){d.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))}d.selected=d.selected||0}else{if(d.selected===null){d.selected=-1}}d.selected=((d.selected>=0&&this.anchors[d.selected])||d.selected<0)?d.selected:0;d.disabled=a.unique(d.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(q,o){return p.lis.index(q)}))).sort();if(a.inArray(d.selected,d.disabled)!=-1){d.disabled.splice(a.inArray(d.selected,d.disabled),1)}this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");if(d.selected>=0&&this.anchors.length){this.panels.eq(d.selected).removeClass("ui-tabs-hide");this.lis.eq(d.selected).addClass("ui-tabs-selected ui-state-active");p.element.queue("tabs",function(){p._trigger("show",null,p._ui(p.anchors[d.selected],p.panels[d.selected]))});this.load(d.selected)}a(window).bind("unload",function(){p.lis.add(p.anchors).unbind(".tabs");p.lis=p.anchors=p.panels=null})}else{d.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))}this.element[d.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");if(d.cookie){this._cookie(d.selected,d.cookie)}for(var g=0,m;(m=this.lis[g]);g++){a(m)[a.inArray(g,d.disabled)!=-1&&!a(m).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled")}if(d.cache===false){this.anchors.removeData("cache.tabs")}this.lis.add(this.anchors).unbind(".tabs");if(d.event!="mouseover"){var f=function(o,i){if(i.is(":not(.ui-state-disabled)")){i.addClass("ui-state-"+o)}};var j=function(o,i){i.removeClass("ui-state-"+o)};this.lis.bind("mouseover.tabs",function(){f("hover",a(this))});this.lis.bind("mouseout.tabs",function(){j("hover",a(this))});this.anchors.bind("focus.tabs",function(){f("focus",a(this).closest("li"))});this.anchors.bind("blur.tabs",function(){j("focus",a(this).closest("li"))})}var b,h;if(d.fx){if(a.isArray(d.fx)){b=d.fx[0];h=d.fx[1]}else{b=h=d.fx}}function e(i,o){i.css({display:""});if(a.browser.msie&&o.opacity){i[0].style.removeAttribute("filter")}}var k=h?function(i,o){a(i).closest("li").removeClass("ui-state-default").addClass("ui-tabs-selected ui-state-active");o.hide().removeClass("ui-tabs-hide").animate(h,h.duration||"normal",function(){e(o,h);p._trigger("show",null,p._ui(i,o[0]))})}:function(i,o){a(i).closest("li").removeClass("ui-state-default").addClass("ui-tabs-selected ui-state-active");o.removeClass("ui-tabs-hide");p._trigger("show",null,p._ui(i,o[0]))};var l=b?function(o,i){i.animate(b,b.duration||"normal",function(){p.lis.removeClass("ui-tabs-selected ui-state-active").addClass("ui-state-default");i.addClass("ui-tabs-hide");e(i,b);p.element.dequeue("tabs")})}:function(o,i,q){p.lis.removeClass("ui-tabs-selected ui-state-active").addClass("ui-state-default");i.addClass("ui-tabs-hide");p.element.dequeue("tabs")};this.anchors.bind(d.event+".tabs",function(){var o=this,r=a(this).closest("li"),i=p.panels.filter(":not(.ui-tabs-hide)"),q=a(p._sanitizeSelector(this.hash));if((r.hasClass("ui-tabs-selected")&&!d.collapsible)||r.hasClass("ui-state-disabled")||r.hasClass("ui-state-processing")||p._trigger("select",null,p._ui(this,q[0]))===false){this.blur();return false}d.selected=p.anchors.index(this);p.abort();if(d.collapsible){if(r.hasClass("ui-tabs-selected")){d.selected=-1;if(d.cookie){p._cookie(d.selected,d.cookie)}p.element.queue("tabs",function(){l(o,i)}).dequeue("tabs");this.blur();return false}else{if(!i.length){if(d.cookie){p._cookie(d.selected,d.cookie)}p.element.queue("tabs",function(){k(o,q)});p.load(p.anchors.index(this));this.blur();return false}}}if(d.cookie){p._cookie(d.selected,d.cookie)}if(q.length){if(i.length){p.element.queue("tabs",function(){l(o,i)})}p.element.queue("tabs",function(){k(o,q)});p.load(p.anchors.index(this))}else{throw"jQuery UI Tabs: Mismatching fragment identifier."}if(a.browser.msie){this.blur()}});this.anchors.bind("click.tabs",function(){return false})},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var c=a.data(this,"href.tabs");if(c){this.href=c}var d=a(this).unbind(".tabs");a.each(["href","load","cache"],function(e,f){d.removeData(f+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){if(a.data(this,"destroy.tabs")){a(this).remove()}else{a(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}});if(b.cookie){this._cookie(null,b.cookie)}},add:function(e,d,c){if(c===undefined){c=this.anchors.length}var b=this,g=this.options,i=a(g.tabTemplate.replace(/#\{href\}/g,e).replace(/#\{label\}/g,d)),h=!e.indexOf("#")?e.replace("#",""):this._tabId(a("a",i)[0]);i.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var f=a("#"+h);if(!f.length){f=a(g.panelTemplate).attr("id",h).data("destroy.tabs",true)}f.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(c>=this.lis.length){i.appendTo(this.list);f.appendTo(this.list[0].parentNode)}else{i.insertBefore(this.lis[c]);f.insertBefore(this.panels[c])}g.disabled=a.map(g.disabled,function(k,j){return k>=c?++k:k});this._tabify();if(this.anchors.length==1){i.addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[0],b.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[c],this.panels[c]))},remove:function(b){var d=this.options,e=this.lis.eq(b).remove(),c=this.panels.eq(b).remove();if(e.hasClass("ui-tabs-selected")&&this.anchors.length>1){this.select(b+(b+1<this.anchors.length?1:-1))}d.disabled=a.map(a.grep(d.disabled,function(g,f){return g!=b}),function(g,f){return g>=b?--g:g});this._tabify();this._trigger("remove",null,this._ui(e.find("a")[0],c[0]))},enable:function(b){var c=this.options;if(a.inArray(b,c.disabled)==-1){return}this.lis.eq(b).removeClass("ui-state-disabled");c.disabled=a.grep(c.disabled,function(e,d){return e!=b});this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b]))},disable:function(c){var b=this,d=this.options;if(c!=d.selected){this.lis.eq(c).addClass("ui-state-disabled");d.disabled.push(c);d.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[c],this.panels[c]))}},select:function(b){if(typeof b=="string"){b=this.anchors.index(this.anchors.filter("[href$="+b+"]"))}else{if(b===null){b=-1}}if(b==-1&&this.options.collapsible){b=this.options.selected}this.anchors.eq(b).trigger(this.options.event+".tabs")},load:function(e){var c=this,g=this.options,b=this.anchors.eq(e)[0],d=a.data(b,"load.tabs");this.abort();if(!d||this.element.queue("tabs").length!==0&&a.data(b,"cache.tabs")){this.element.dequeue("tabs");return}this.lis.eq(e).addClass("ui-state-processing");if(g.spinner){var f=a("span",b);f.data("label.tabs",f.html()).html(g.spinner)}this.xhr=a.ajax(a.extend({},g.ajaxOptions,{url:d,success:function(i,h){a(c._sanitizeSelector(b.hash)).html(i);c._cleanup();if(g.cache){a.data(b,"cache.tabs",true)}c._trigger("load",null,c._ui(c.anchors[e],c.panels[e]));try{g.ajaxOptions.success(i,h)}catch(j){}c.element.dequeue("tabs")}}))},abort:function(){this.element.queue([]);this.panels.stop(false,true);if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup()},url:function(c,b){this.anchors.eq(c).removeData("cache.tabs").data("load.tabs",b)},length:function(){return this.anchors.length}});a.extend(a.ui.tabs,{version:"1.7.2",getter:"length",defaults:{ajaxOptions:null,cache:false,cookie:null,collapsible:false,disabled:[],event:"click",fx:null,idPrefix:"ui-tabs-",panelTemplate:"<div></div>",spinner:"<em>Loading&#8230;</em>",tabTemplate:'<li><a href="#{href}"><span>#{label}</span></a></li>'}});a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(d,f){var b=this,g=this.options;var c=b._rotate||(b._rotate=function(h){clearTimeout(b.rotation);b.rotation=setTimeout(function(){var i=g.selected;b.select(++i<b.anchors.length?i:0)},d);if(h){h.stopPropagation()}});var e=b._unrotate||(b._unrotate=!f?function(h){if(h.clientX){b.rotate(null)}}:function(h){t=g.selected;c()});if(d){this.element.bind("tabsshow",c);this.anchors.bind(g.event+".tabs",e);c()}else{clearTimeout(b.rotation);this.element.unbind("tabsshow",c);this.anchors.unbind(g.event+".tabs",e);delete this._rotate;delete this._unrotate}}})})(jQuery);;
\ No newline at end of file
Index: trunk/extensions/Storyboard/jquery/css/images/ui-bg_gloss-wave_35_f6a828_500x100.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: trunk/extensions/Storyboard/jquery/css/images/ui-bg_gloss-wave_35_f6a828_500x100.png
___________________________________________________________________
Name: svn:mime-type
124 + image/png
Index: trunk/extensions/Storyboard/jquery/css/images/ui-icons_ef8c08_256x240.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: trunk/extensions/Storyboard/jquery/css/images/ui-icons_ef8c08_256x240.png
___________________________________________________________________
Name: svn:mime-type
225 + image/png
Index: trunk/extensions/Storyboard/jquery/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: trunk/extensions/Storyboard/jquery/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png
___________________________________________________________________
Name: svn:mime-type
326 + image/png
Index: trunk/extensions/Storyboard/jquery/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: trunk/extensions/Storyboard/jquery/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
___________________________________________________________________
Name: svn:mime-type
427 + image/png
Index: trunk/extensions/Storyboard/jquery/css/images/ui-icons_ffffff_256x240.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: trunk/extensions/Storyboard/jquery/css/images/ui-icons_ffffff_256x240.png
___________________________________________________________________
Name: svn:mime-type
528 + image/png
Index: trunk/extensions/Storyboard/jquery/css/images/ui-bg_flat_10_000000_40x100.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: trunk/extensions/Storyboard/jquery/css/images/ui-bg_flat_10_000000_40x100.png
___________________________________________________________________
Name: svn:mime-type
629 + image/png
Index: trunk/extensions/Storyboard/jquery/css/images/ui-bg_glass_100_fdf5ce_1x400.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: trunk/extensions/Storyboard/jquery/css/images/ui-bg_glass_100_fdf5ce_1x400.png
___________________________________________________________________
Name: svn:mime-type
730 + image/png
Index: trunk/extensions/Storyboard/jquery/css/images/ui-bg_glass_65_ffffff_1x400.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: trunk/extensions/Storyboard/jquery/css/images/ui-bg_glass_65_ffffff_1x400.png
___________________________________________________________________
Name: svn:mime-type
831 + image/png
Index: trunk/extensions/Storyboard/jquery/css/images/ui-bg_diagonals-thick_20_666666_40x40.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: trunk/extensions/Storyboard/jquery/css/images/ui-bg_diagonals-thick_20_666666_40x40.png
___________________________________________________________________
Name: svn:mime-type
932 + image/png
Index: trunk/extensions/Storyboard/jquery/css/images/ui-icons_228ef1_256x240.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: trunk/extensions/Storyboard/jquery/css/images/ui-icons_228ef1_256x240.png
___________________________________________________________________
Name: svn:mime-type
1033 + image/png
Index: trunk/extensions/Storyboard/jquery/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: trunk/extensions/Storyboard/jquery/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
___________________________________________________________________
Name: svn:mime-type
1134 + image/png
Index: trunk/extensions/Storyboard/jquery/css/images/ui-icons_ffd27a_256x240.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: trunk/extensions/Storyboard/jquery/css/images/ui-icons_ffd27a_256x240.png
___________________________________________________________________
Name: svn:mime-type
1235 + image/png
Index: trunk/extensions/Storyboard/jquery/css/images/ui-bg_glass_100_f6f6f6_1x400.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: trunk/extensions/Storyboard/jquery/css/images/ui-bg_glass_100_f6f6f6_1x400.png
___________________________________________________________________
Name: svn:mime-type
1336 + image/png
Index: trunk/extensions/Storyboard/jquery/css/images/ui-icons_222222_256x240.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: trunk/extensions/Storyboard/jquery/css/images/ui-icons_222222_256x240.png
___________________________________________________________________
Name: svn:mime-type
1437 + image/png
Index: trunk/extensions/Storyboard/jquery/css/jquery-ui-1.7.2.custom.css
@@ -0,0 +1,293 @@
 2+/*
 3+* jQuery UI CSS Framework
 4+* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
 5+* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
 6+*/
 7+
 8+/* Layout helpers
 9+----------------------------------*/
 10+.ui-helper-hidden { display: none; }
 11+.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
 12+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
 13+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
 14+.ui-helper-clearfix { display: inline-block; }
 15+/* required comment for clearfix to work in Opera \*/
 16+* html .ui-helper-clearfix { height:1%; }
 17+.ui-helper-clearfix { display:block; }
 18+/* end clearfix */
 19+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
 20+
 21+
 22+/* Interaction Cues
 23+----------------------------------*/
 24+.ui-state-disabled { cursor: default !important; }
 25+
 26+
 27+/* Icons
 28+----------------------------------*/
 29+
 30+/* states and images */
 31+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
 32+
 33+
 34+/* Misc visuals
 35+----------------------------------*/
 36+
 37+/* Overlays */
 38+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
 39+
 40+
 41+
 42+/*
 43+* jQuery UI CSS Framework
 44+* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
 45+* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
 46+* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
 47+*/
 48+
 49+
 50+/* Component containers
 51+----------------------------------*/
 52+.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; }
 53+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; }
 54+.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }
 55+.ui-widget-content a { color: #333333; }
 56+.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
 57+.ui-widget-header a { color: #ffffff; }
 58+
 59+/* Interaction states
 60+----------------------------------*/
 61+.ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; outline: none; }
 62+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; outline: none; }
 63+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; outline: none; }
 64+.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; outline: none; }
 65+.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; outline: none; }
 66+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; outline: none; text-decoration: none; }
 67+
 68+/* Interaction Cues
 69+----------------------------------*/
 70+.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }
 71+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636; }
 72+.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }
 73+.ui-state-error a, .ui-widget-content .ui-state-error a { color: #ffffff; }
 74+.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #ffffff; }
 75+.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
 76+.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; }
 77+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
 78+
 79+/* Icons
 80+----------------------------------*/
 81+
 82+/* states and images */
 83+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
 84+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
 85+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
 86+.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }
 87+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
 88+.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
 89+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }
 90+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }
 91+
 92+/* positioning */
 93+.ui-icon-carat-1-n { background-position: 0 0; }
 94+.ui-icon-carat-1-ne { background-position: -16px 0; }
 95+.ui-icon-carat-1-e { background-position: -32px 0; }
 96+.ui-icon-carat-1-se { background-position: -48px 0; }
 97+.ui-icon-carat-1-s { background-position: -64px 0; }
 98+.ui-icon-carat-1-sw { background-position: -80px 0; }
 99+.ui-icon-carat-1-w { background-position: -96px 0; }
 100+.ui-icon-carat-1-nw { background-position: -112px 0; }
 101+.ui-icon-carat-2-n-s { background-position: -128px 0; }
 102+.ui-icon-carat-2-e-w { background-position: -144px 0; }
 103+.ui-icon-triangle-1-n { background-position: 0 -16px; }
 104+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
 105+.ui-icon-triangle-1-e { background-position: -32px -16px; }
 106+.ui-icon-triangle-1-se { background-position: -48px -16px; }
 107+.ui-icon-triangle-1-s { background-position: -64px -16px; }
 108+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
 109+.ui-icon-triangle-1-w { background-position: -96px -16px; }
 110+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
 111+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
 112+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
 113+.ui-icon-arrow-1-n { background-position: 0 -32px; }
 114+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
 115+.ui-icon-arrow-1-e { background-position: -32px -32px; }
 116+.ui-icon-arrow-1-se { background-position: -48px -32px; }
 117+.ui-icon-arrow-1-s { background-position: -64px -32px; }
 118+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
 119+.ui-icon-arrow-1-w { background-position: -96px -32px; }
 120+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
 121+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
 122+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
 123+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
 124+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
 125+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
 126+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
 127+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
 128+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
 129+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
 130+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
 131+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
 132+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
 133+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
 134+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
 135+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
 136+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
 137+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
 138+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
 139+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
 140+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
 141+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
 142+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
 143+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
 144+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
 145+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
 146+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
 147+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
 148+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
 149+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
 150+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
 151+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
 152+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
 153+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
 154+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
 155+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
 156+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
 157+.ui-icon-arrow-4 { background-position: 0 -80px; }
 158+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
 159+.ui-icon-extlink { background-position: -32px -80px; }
 160+.ui-icon-newwin { background-position: -48px -80px; }
 161+.ui-icon-refresh { background-position: -64px -80px; }
 162+.ui-icon-shuffle { background-position: -80px -80px; }
 163+.ui-icon-transfer-e-w { background-position: -96px -80px; }
 164+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
 165+.ui-icon-folder-collapsed { background-position: 0 -96px; }
 166+.ui-icon-folder-open { background-position: -16px -96px; }
 167+.ui-icon-document { background-position: -32px -96px; }
 168+.ui-icon-document-b { background-position: -48px -96px; }
 169+.ui-icon-note { background-position: -64px -96px; }
 170+.ui-icon-mail-closed { background-position: -80px -96px; }
 171+.ui-icon-mail-open { background-position: -96px -96px; }
 172+.ui-icon-suitcase { background-position: -112px -96px; }
 173+.ui-icon-comment { background-position: -128px -96px; }
 174+.ui-icon-person { background-position: -144px -96px; }
 175+.ui-icon-print { background-position: -160px -96px; }
 176+.ui-icon-trash { background-position: -176px -96px; }
 177+.ui-icon-locked { background-position: -192px -96px; }
 178+.ui-icon-unlocked { background-position: -208px -96px; }
 179+.ui-icon-bookmark { background-position: -224px -96px; }
 180+.ui-icon-tag { background-position: -240px -96px; }
 181+.ui-icon-home { background-position: 0 -112px; }
 182+.ui-icon-flag { background-position: -16px -112px; }
 183+.ui-icon-calendar { background-position: -32px -112px; }
 184+.ui-icon-cart { background-position: -48px -112px; }
 185+.ui-icon-pencil { background-position: -64px -112px; }
 186+.ui-icon-clock { background-position: -80px -112px; }
 187+.ui-icon-disk { background-position: -96px -112px; }
 188+.ui-icon-calculator { background-position: -112px -112px; }
 189+.ui-icon-zoomin { background-position: -128px -112px; }
 190+.ui-icon-zoomout { background-position: -144px -112px; }
 191+.ui-icon-search { background-position: -160px -112px; }
 192+.ui-icon-wrench { background-position: -176px -112px; }
 193+.ui-icon-gear { background-position: -192px -112px; }
 194+.ui-icon-heart { background-position: -208px -112px; }
 195+.ui-icon-star { background-position: -224px -112px; }
 196+.ui-icon-link { background-position: -240px -112px; }
 197+.ui-icon-cancel { background-position: 0 -128px; }
 198+.ui-icon-plus { background-position: -16px -128px; }
 199+.ui-icon-plusthick { background-position: -32px -128px; }
 200+.ui-icon-minus { background-position: -48px -128px; }
 201+.ui-icon-minusthick { background-position: -64px -128px; }
 202+.ui-icon-close { background-position: -80px -128px; }
 203+.ui-icon-closethick { background-position: -96px -128px; }
 204+.ui-icon-key { background-position: -112px -128px; }
 205+.ui-icon-lightbulb { background-position: -128px -128px; }
 206+.ui-icon-scissors { background-position: -144px -128px; }
 207+.ui-icon-clipboard { background-position: -160px -128px; }
 208+.ui-icon-copy { background-position: -176px -128px; }
 209+.ui-icon-contact { background-position: -192px -128px; }
 210+.ui-icon-image { background-position: -208px -128px; }
 211+.ui-icon-video { background-position: -224px -128px; }
 212+.ui-icon-script { background-position: -240px -128px; }
 213+.ui-icon-alert { background-position: 0 -144px; }
 214+.ui-icon-info { background-position: -16px -144px; }
 215+.ui-icon-notice { background-position: -32px -144px; }
 216+.ui-icon-help { background-position: -48px -144px; }
 217+.ui-icon-check { background-position: -64px -144px; }
 218+.ui-icon-bullet { background-position: -80px -144px; }
 219+.ui-icon-radio-off { background-position: -96px -144px; }
 220+.ui-icon-radio-on { background-position: -112px -144px; }
 221+.ui-icon-pin-w { background-position: -128px -144px; }
 222+.ui-icon-pin-s { background-position: -144px -144px; }
 223+.ui-icon-play { background-position: 0 -160px; }
 224+.ui-icon-pause { background-position: -16px -160px; }
 225+.ui-icon-seek-next { background-position: -32px -160px; }
 226+.ui-icon-seek-prev { background-position: -48px -160px; }
 227+.ui-icon-seek-end { background-position: -64px -160px; }
 228+.ui-icon-seek-first { background-position: -80px -160px; }
 229+.ui-icon-stop { background-position: -96px -160px; }
 230+.ui-icon-eject { background-position: -112px -160px; }
 231+.ui-icon-volume-off { background-position: -128px -160px; }
 232+.ui-icon-volume-on { background-position: -144px -160px; }
 233+.ui-icon-power { background-position: 0 -176px; }
 234+.ui-icon-signal-diag { background-position: -16px -176px; }
 235+.ui-icon-signal { background-position: -32px -176px; }
 236+.ui-icon-battery-0 { background-position: -48px -176px; }
 237+.ui-icon-battery-1 { background-position: -64px -176px; }
 238+.ui-icon-battery-2 { background-position: -80px -176px; }
 239+.ui-icon-battery-3 { background-position: -96px -176px; }
 240+.ui-icon-circle-plus { background-position: 0 -192px; }
 241+.ui-icon-circle-minus { background-position: -16px -192px; }
 242+.ui-icon-circle-close { background-position: -32px -192px; }
 243+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
 244+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
 245+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
 246+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
 247+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
 248+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
 249+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
 250+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
 251+.ui-icon-circle-zoomin { background-position: -176px -192px; }
 252+.ui-icon-circle-zoomout { background-position: -192px -192px; }
 253+.ui-icon-circle-check { background-position: -208px -192px; }
 254+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
 255+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
 256+.ui-icon-circlesmall-close { background-position: -32px -208px; }
 257+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
 258+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
 259+.ui-icon-squaresmall-close { background-position: -80px -208px; }
 260+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
 261+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
 262+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
 263+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
 264+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
 265+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
 266+
 267+
 268+/* Misc visuals
 269+----------------------------------*/
 270+
 271+/* Corner radius */
 272+.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; }
 273+.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
 274+.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
 275+.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
 276+.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; }
 277+.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
 278+.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; }
 279+.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; }
 280+.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; }
 281+
 282+/* Overlays */
 283+.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); }
 284+.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -webkit-border-radius: 5px; }/* Tabs
 285+----------------------------------*/
 286+.ui-tabs { padding: .2em; zoom: 1; }
 287+.ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; }
 288+.ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; }
 289+.ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; }
 290+.ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; }
 291+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
 292+.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
 293+.ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; }
 294+.ui-tabs .ui-tabs-hide { display: none !important; }
Index: trunk/extensions/Storyboard/specials/StoryReview/StoryReview_body.php
@@ -7,6 +7,11 @@
88 * @ingroup SpecialPage
99 *
1010 * @author Jeroen De Dauw
 11+ *
 12+ * TODO: implement eternal load stuff for each list
 13+ * TODO: fix layout
 14+ * TODO: fix story blocks to work with new story state handling
 15+ * TODO: ajax load tab contents?
1116 */
1217
1318 if ( !defined( 'MEDIAWIKI' ) ) {
@@ -36,21 +41,48 @@
3742
3843 wfProfileOut( __METHOD__ );
3944 }
40 -
 45+
4146 private function addOutput() {
42 - // TODO: add language filters
43 - // TODO: display tabs for unpublished, published and hidden stories
44 - // TODO: paging
45 -
4647 global $wgOut, $egStoryboardScriptPath;
4748
4849 $wgOut->addStyle( $egStoryboardScriptPath . '/storyboard.css' );
4950 $wgOut->includeJQuery();
5051 $wgOut->addScriptFile( $egStoryboardScriptPath . '/storyboard.js' );
 52+ // jQuery UI core and Tabs.
 53+ $wgOut->addScriptFile( $egStoryboardScriptPath . '/jquery/jquery-ui-1.7.2.custom.min.js' );
 54+ $wgOut->addStyle( $egStoryboardScriptPath . '/jquery/css/jquery-ui-1.7.2.custom.css' );
5155
5256 // Get a slave db object to do read operations against.
5357 $dbr = wfGetDB( DB_SLAVE );
5458
 59+ $html = $this->getTabHtml( $dbr, Storyboard_STORY_UNPUBLISHED );
 60+ $html .= $this->getTabHtml( $dbr, Storyboard_STORY_PUBLISHED );
 61+ $html .= $this->getTabHtml( $dbr, Storyboard_STORY_HIDDEN );
 62+
 63+ $unpublished = htmlspecialchars( wfMsg( 'storyboard-unpublished' ) );
 64+ $published = htmlspecialchars( wfMsg( 'storyboard-published' ) );
 65+ $hidden = htmlspecialchars( wfMsg( 'storyboard-hidden' ) );
 66+
 67+ $html = <<<EOT
 68+<div id="storyreview-tabs">
 69+ <ul>
 70+ <li><a href="#storyreview-tabs-0">$unpublished</a></li>
 71+ <li><a href="#storyreview-tabs-1">$published</a></li>
 72+ <li><a href="#storyreview-tabs-2">$hidden</a></li>
 73+ </ul>
 74+$html
 75+</div>
 76+<script type="text/javascript">
 77+ jQuery(function() {
 78+ jQuery("#storyreview-tabs").tabs();
 79+ });
 80+</script>
 81+EOT;
 82+
 83+ $wgOut->addHTML( $html );
 84+ }
 85+
 86+ private function getTabHtml( DatabaseBase $dbr, $storyState ) {
5587 // Create a query to retrieve information about all non hidden stories.
5688 $stories = $dbr->select(
5789 Storyboard_TABLE,
@@ -59,38 +91,20 @@
6092 'story_author_name',
6193 'story_title',
6294 'story_text',
63 - 'story_state',
6495 'story_author_image',
6596 'story_image_hidden'
6697 ),
67 - array( 'story_state' => $dbr->makeList( array ( 'Storyboard_STORY_UNPUBLISHED', 'Storyboard_STORY_PUBLISHED' ), LIST_OR ) )
 98+ array( 'story_state' => $storyState )
6899 );
69100
70 - // String to hold the html for both the unreviewed and reviewed stories.
71 - $unreviewed = '';
72 - $reviewed = '';
 101+ $html = '';
73102
74103 // Loop through all stories, get their html, and add it to the appropriate string.
75104 while ( $story = $dbr->fetchObject( $stories ) ) {
76 - if ( $story->story_state == Storyboard_STORY_UNPUBLISHED ) {
77 - $reviewed .= $this->getStorySegments( $story );
78 - }
79 - else {
80 - $unreviewed .= $this->getStorySegments( $story );
81 - }
 105+ $html .= $this->getStorySegments( $story, $storyState );
82106 }
83 -
84 - $unrevMsg = wfMsg( 'storyboard-unreviewed' );
85 - $revMsg = wfMsg( 'storyboard-reviewed' );
86107
87 - // Output the html for the stories.
88 - $wgOut->addHTML( <<<EOT
89 - <h2>$unrevMsg</h2>
90 - $unreviewed
91 - <h2>$revMsg</h2>
92 - $reviewed
93 -EOT
94 - );
 108+ return "<div id='storyreview-tabs-$storyState'>$html</div>";
95109 }
96110
97111 /**
@@ -100,7 +114,7 @@
101115 *
102116 * @return string
103117 */
104 - private function getStorySegments( $story ) {
 118+ private function getStorySegments( $story, $storyState ) {
105119 global $wgTitle;
106120
107121 $editUrl = SpecialPage::getTitleFor( 'story', $story->story_title )->getFullURL( 'action=edit&returnto=' . $wgTitle->getPrefixedText() );
@@ -109,7 +123,7 @@
110124 $title = htmlspecialchars( $story->story_title );
111125 $text = htmlspecialchars( $story->story_text );
112126
113 - $publishAction = $story->story_state == Storyboard_STORY_PUBLISHED ? 'unpublish' : 'publish';
 127+ $publishAction = $storyState == Storyboard_STORY_PUBLISHED ? 'unpublish' : 'publish';
114128 // Uses storyboard-unpublish or storyboard-publish.
115129 $publishMsg = htmlspecialchars( wfMsg( "storyboard-$publishAction" ) );
116130
Index: trunk/extensions/Storyboard/api/ApiQueryStories.php
@@ -65,17 +65,20 @@
6666 if ( !is_null( $params['continue'] ) ) {
6767 $continueParams = explode( '-', $params['continue'] );
6868 if ( count( $continueParams ) != 2 ) {
69 - $this->dieUsage( 'Invalid continue param. You should pass the ' .
70 - 'original value returned by the previous query', '_badcontinue' );
 69+ $this->dieUsage(
 70+ 'Invalid continue param. You should pass the ' .
 71+ 'original value returned by the previous query', '_badcontinue'
 72+ );
7173 }
7274
7375 $storyModified = $continueParams[0];
7476 $storyId = intval( $continueParams[1] );
75 -
 77+ var_dump($storyModified);exit;
7678 $this->addWhere(
77 - "story_modified < $storyModified OR " .
 79+ "story_modified > $storyModified OR " .
7880 "(story_modified = $storyId AND story_id <= $storyModified)"
7981 );
 82+
8083 }
8184
8285 $stories = $this->select( __METHOD__ );

Status & tagging log