muck-users 0.2.23 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. data/README.rdoc +3 -1
  2. data/VERSION +1 -1
  3. data/app/controllers/admin/muck/access_codes_controller.rb +78 -0
  4. data/app/controllers/admin/muck/roles_controller.rb +34 -24
  5. data/app/controllers/admin/muck/users_controller.rb +56 -21
  6. data/app/controllers/muck/access_code_requests_controller.rb +27 -0
  7. data/app/controllers/muck/activations_controller.rb +0 -1
  8. data/app/controllers/muck/users_controller.rb +122 -110
  9. data/app/models/role.rb +5 -2
  10. data/app/models/user_mailer.rb +7 -0
  11. data/app/views/access_code_requests/new.html.erb +7 -0
  12. data/app/views/access_code_requests/show.html.erb +1 -0
  13. data/app/views/admin/access_codes/_access_code.html.erb +8 -0
  14. data/app/views/admin/access_codes/_form.html.erb +15 -0
  15. data/app/views/admin/access_codes/_user.html.erb +6 -0
  16. data/app/views/admin/access_codes/bulk.html.erb +12 -0
  17. data/app/views/admin/access_codes/edit.html.erb +6 -0
  18. data/app/views/admin/access_codes/index.html.erb +18 -0
  19. data/app/views/admin/access_codes/new.html.erb +6 -0
  20. data/app/views/admin/access_codes/show.html.erb +30 -0
  21. data/app/views/admin/permissions/_permission.html.erb +3 -0
  22. data/app/views/admin/roles/_role.html.erb +5 -9
  23. data/app/views/admin/roles/edit.html.erb +4 -17
  24. data/app/views/admin/roles/index.html.erb +16 -8
  25. data/app/views/admin/roles/new.html.erb +4 -16
  26. data/app/views/admin/roles/show.html.erb +3 -7
  27. data/app/views/admin/users/_activate.html.erb +2 -2
  28. data/app/views/admin/users/_row.html.erb +8 -2
  29. data/app/views/admin/users/_table.html.erb +10 -15
  30. data/app/views/admin/users/permissions.html.erb +8 -0
  31. data/app/views/user_mailer/access_code.text.html.erb +3 -0
  32. data/app/views/user_mailer/access_code.text.plain.erb +5 -0
  33. data/app/views/users/_signup_form.html.erb +7 -0
  34. data/app/views/users/welcome.html.erb +1 -1
  35. data/config/muck_users_routes.rb +5 -2
  36. data/db/migrate/20100123035450_create_access_codes.rb +19 -0
  37. data/db/migrate/20100123233654_create_access_code_requests.rb +14 -0
  38. data/lib/action_controller/authentic_application.rb +1 -1
  39. data/lib/active_record/acts/muck_access_code.rb +75 -0
  40. data/lib/active_record/acts/muck_access_code_request.rb +33 -0
  41. data/lib/active_record/acts/muck_user.rb +13 -1
  42. data/lib/muck_users.rb +8 -1
  43. data/lib/muck_users/muck_custom_form_builder.rb +10 -0
  44. data/locales/en.yml +163 -102
  45. data/muck-users.gemspec +41 -2
  46. data/test/rails_root/app/models/access_code.rb +3 -0
  47. data/test/rails_root/app/models/access_code_request.rb +3 -0
  48. data/test/rails_root/app/models/user.rb +12 -9
  49. data/test/rails_root/config/environment.rb +1 -0
  50. data/test/rails_root/config/global_config.yml +1 -1
  51. data/test/rails_root/db/migrate/20100123035450_create_access_codes.rb +19 -0
  52. data/test/rails_root/db/migrate/20100123233654_create_access_code_requests.rb +14 -0
  53. data/test/rails_root/public/javascripts/jquery/jquery.jgrowl.js +9 -2
  54. data/test/rails_root/public/javascripts/muck.js +39 -13
  55. data/test/rails_root/public/stylesheets/admin.css +20 -3
  56. data/test/rails_root/public/stylesheets/jquery/cupertino/jquery-ui-1.7.2.custom.css +160 -0
  57. data/test/rails_root/public/stylesheets/jquery/redmond/jquery-ui-1.7.2.custom.css +160 -0
  58. data/test/rails_root/public/stylesheets/jquery/smoothness/jquery-ui-1.7.2.custom.css +160 -0
  59. data/test/rails_root/public/stylesheets/jquery/ui-lightness/jquery-ui-1.7.2.custom.css +160 -0
  60. data/test/rails_root/public/stylesheets/styles.css +9 -8
  61. data/test/rails_root/test/functional/access_code_requests_controller_test.rb +33 -0
  62. data/test/rails_root/test/functional/admin/access_codes_controller_test.rb +166 -0
  63. data/test/rails_root/test/unit/access_code_test.rb +100 -0
  64. data/test/rails_root/test/unit/role_test.rb +1 -0
  65. data/test/rails_root/test/unit/user_mailer_test.rb +13 -1
  66. data/test/rails_root/test/unit/user_test.rb +13 -9
  67. metadata +41 -2
@@ -0,0 +1,3 @@
1
+ class AccessCode < ActiveRecord::Base
2
+ acts_as_muck_access_code
3
+ end
@@ -0,0 +1,3 @@
1
+ class AccessCodeRequest < ActiveRecord::Base
2
+ acts_as_muck_access_code_request
3
+ end
@@ -2,29 +2,32 @@
2
2
  #
3
3
  # Table name: users
4
4
  #
5
- # id :integer not null, primary key
5
+ # id :integer(4) not null, primary key
6
6
  # login :string(255)
7
7
  # email :string(255)
8
8
  # first_name :string(255)
9
9
  # last_name :string(255)
10
10
  # crypted_password :string(255)
11
11
  # password_salt :string(255)
12
- # persistence_token :string(255)
13
- # single_access_token :string(255)
14
- # perishable_token :string(255)
15
- # login_count :integer default(0), not null
16
- # failed_login_count :integer default(0), not null
12
+ # persistence_token :string(255) not null
13
+ # single_access_token :string(255) not null
14
+ # perishable_token :string(255) not null
15
+ # login_count :integer(4) default(0), not null
16
+ # failed_login_count :integer(4) default(0), not null
17
17
  # last_request_at :datetime
18
- # last_login_at :datetime
19
18
  # current_login_at :datetime
19
+ # last_login_at :datetime
20
20
  # current_login_ip :string(255)
21
21
  # last_login_ip :string(255)
22
- # terms_of_service :boolean not null
22
+ # terms_of_service :boolean(1) not null
23
23
  # time_zone :string(255) default("UTC")
24
24
  # disabled_at :datetime
25
- # activated_at :datetime
26
25
  # created_at :datetime
26
+ # activated_at :datetime
27
27
  # updated_at :datetime
28
+ # identity_url :string(255)
29
+ # url_key :string(255)
30
+ # beta_code_id :integer(4)
28
31
  #
29
32
 
30
33
  class User < ActiveRecord::Base
@@ -19,6 +19,7 @@ Rails::Initializer.run do |config|
19
19
  config.gem "authlogic"
20
20
  config.gem "searchlogic"
21
21
  config.gem "bcrypt-ruby", :lib => "bcrypt"
22
+ config.gem 'jrails'
22
23
  config.gem "overlord"
23
24
  config.gem 'muck-engine', :lib => 'muck_engine'
24
25
  config.plugin_locators << TestGemLocator
@@ -24,7 +24,7 @@ default: &DEFAULT
24
24
  automatically_activate: true
25
25
  automatically_login_after_account_create: true
26
26
  send_welcome: true
27
-
27
+ require_access_code: false
28
28
  application_url: localhost:3000
29
29
 
30
30
  # if you use recaptcha you will need to also provide a public and private
@@ -0,0 +1,19 @@
1
+ class CreateAccessCodes < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :access_codes do |t|
4
+ t.string :code
5
+ t.integer :uses, :default => 0, :null => false
6
+ t.boolean :unlimited, :default => false, :null => false
7
+ t.datetime :expires_at
8
+ t.integer :use_limit, :default => 1, :null => false
9
+ t.timestamps
10
+ end
11
+ add_index :access_codes, :code
12
+ add_column :users, :access_code_id, :integer
13
+ end
14
+
15
+ def self.down
16
+ drop_table :access_codes
17
+ remove_column :users, :access_code_id
18
+ end
19
+ end
@@ -0,0 +1,14 @@
1
+ class CreateAccessCodeRequests < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :access_code_requests do |t|
4
+ t.string :email
5
+ t.datetime :code_sent_at
6
+ t.timestamps
7
+ end
8
+ add_index :access_code_requests, :email
9
+ end
10
+
11
+ def self.down
12
+ drop_table :access_code_requests
13
+ end
14
+ end
@@ -1,2 +1,9 @@
1
- (function($){$.jGrowl=function(m,o){if($('#jGrowl').size()==0)$('<div id="jGrowl"></div>').addClass($.jGrowl.defaults.position).appendTo('body');$('#jGrowl').jGrowl(m,o);};$.fn.jGrowl=function(m,o){if($.isFunction(this.each)){var args=arguments;return this.each(function(){var self=this;if($(this).data('jGrowl.instance')==undefined){$(this).data('jGrowl.instance',new $.fn.jGrowl());$(this).data('jGrowl.instance').startup(this);}
2
- if($.isFunction($(this).data('jGrowl.instance')[m])){$(this).data('jGrowl.instance')[m].apply($(this).data('jGrowl.instance'),$.makeArray(args).slice(1));}else{$(this).data('jGrowl.instance').notification(m,o);}});};};$.extend($.fn.jGrowl.prototype,{defaults:{header:'',sticky:false,position:'top-right',glue:'after',theme:'default',corners:'10px',check:500,life:3000,speed:'normal',easing:'swing',closer:true,log:function(e,m,o){},beforeOpen:function(e,m,o){},open:function(e,m,o){},beforeClose:function(e,m,o){},close:function(e,m,o){},animateOpen:{opacity:'show'},animateClose:{opacity:'hide'}},element:null,interval:null,notification:function(message,o){var self=this;var o=$.extend({},this.defaults,o);o.log.apply(this.element,[this.element,message,o]);var notification=$('<div class="jGrowl-notification"><div class="close">&times;</div><div class="header">'+o.header+'</div><div class="message">'+message+'</div></div>').data("jGrowl",o).addClass(o.theme).children('div.close').bind("click.jGrowl",function(){$(this).unbind('click.jGrowl').parent().trigger('jGrowl.beforeClose').animate(o.animateClose,o.speed,o.easing,function(){$(this).trigger('jGrowl.close').remove();});}).parent();(o.glue=='after')?$('div.jGrowl-notification:last',this.element).after(notification):$('div.jGrowl-notification:first',this.element).before(notification);$(notification).bind("mouseover.jGrowl",function(){$(this).data("jGrowl").pause=true;}).bind("mouseout.jGrowl",function(){$(this).data("jGrowl").pause=false;}).bind('jGrowl.beforeOpen',function(){o.beforeOpen.apply(self.element,[self.element,message,o]);}).bind('jGrowl.open',function(){o.open.apply(self.element,[self.element,message,o]);}).bind('jGrowl.beforeClose',function(){o.beforeClose.apply(self.element,[self.element,message,o]);}).bind('jGrowl.close',function(){o.close.apply(self.element,[self.element,message,o]);}).trigger('jGrowl.beforeOpen').animate(o.animateOpen,o.speed,o.easing,function(){$(this).data("jGrowl").created=new Date();}).trigger('jGrowl.open');if($.fn.corner!=undefined)$(notification).corner(o.corners);if($('div.jGrowl-notification:parent',this.element).size()>1&&$('div.jGrowl-closer',this.element).size()==0&&this.defaults.closer!=false){$('<div class="jGrowl-closer">[ close all ]</div>').addClass(this.defaults.theme).appendTo(this.element).animate(this.defaults.animateOpen,this.defaults.speed,this.defaults.easing).bind("click.jGrowl",function(){$(this).siblings().children('div.close').trigger("click.jGrowl");if($.isFunction(self.defaults.closer))self.defaults.closer.apply($(this).parent()[0],[$(this).parent()[0]]);});};},update:function(){$(this.element).find('div.jGrowl-notification:parent').each(function(){if($(this).data("jGrowl")!=undefined&&$(this).data("jGrowl").created!=undefined&&($(this).data("jGrowl").created.getTime()+$(this).data("jGrowl").life)<(new Date()).getTime()&&$(this).data("jGrowl").sticky!=true&&($(this).data("jGrowl").pause==undefined||$(this).data("jGrowl").pause!=true)){$(this).children('div.close').trigger('click.jGrowl');}});if($(this.element).find('div.jGrowl-notification:parent').size()<2){$(this.element).find('div.jGrowl-closer').animate(this.defaults.animateClose,this.defaults.speed,this.defaults.easing,function(){$(this).remove();});};},startup:function(e){this.element=$(e).addClass('jGrowl').append('<div class="jGrowl-notification"></div>');this.interval=setInterval(function(){jQuery(e).data('jGrowl.instance').update();},this.defaults.check);if($.browser.msie&&parseInt($.browser.version)<7)$(this.element).addClass('ie6');},shutdown:function(){$(this.element).removeClass('jGrowl').find('div.jGrowl-notification').remove();clearInterval(this.interval);}});$.jGrowl.defaults=$.fn.jGrowl.prototype.defaults;})(jQuery);
1
+ (function($){$.jGrowl=function(m,o){if($('#jGrowl').size()==0)
2
+ $('<div id="jGrowl"></div>').addClass($.jGrowl.defaults.position).appendTo('body');$('#jGrowl').jGrowl(m,o);};$.fn.jGrowl=function(m,o){if($.isFunction(this.each)){var args=arguments;return this.each(function(){var self=this;if($(this).data('jGrowl.instance')==undefined){$(this).data('jGrowl.instance',$.extend(new $.fn.jGrowl(),{notifications:[],element:null,interval:null}));$(this).data('jGrowl.instance').startup(this);}
3
+ if($.isFunction($(this).data('jGrowl.instance')[m])){$(this).data('jGrowl.instance')[m].apply($(this).data('jGrowl.instance'),$.makeArray(args).slice(1));}else{$(this).data('jGrowl.instance').create(m,o);}});};};$.extend($.fn.jGrowl.prototype,{defaults:{pool:0,header:'',group:'',sticky:false,position:'top-right',glue:'after',theme:'default',corners:'10px',check:250,life:3000,speed:'normal',easing:'swing',closer:true,closeTemplate:'&times;',closerTemplate:'<div>[ close all ]</div>',log:function(e,m,o){},beforeOpen:function(e,m,o){},open:function(e,m,o){},beforeClose:function(e,m,o){},close:function(e,m,o){},animateOpen:{opacity:'show'},animateClose:{opacity:'hide'}},notifications:[],element:null,interval:null,create:function(message,o){var o=$.extend({},this.defaults,o);this.notifications.push({message:message,options:o});o.log.apply(this.element,[this.element,message,o]);},render:function(notification){var self=this;var message=notification.message;var o=notification.options;var notification=$('<div class="jGrowl-notification ui-state-highlight ui-corner-all'+
4
+ ((o.group!=undefined&&o.group!='')?' '+o.group:'')+'">'+'<div class="close">'+o.closeTemplate+'</div>'+'<div class="header">'+o.header+'</div>'+'<div class="message">'+message+'</div></div>').data("jGrowl",o).addClass(o.theme).children('div.close').bind("click.jGrowl",function(){$(this).parent().trigger('jGrowl.close');}).parent();$(notification).bind("mouseover.jGrowl",function(){$('div.jGrowl-notification',self.element).data("jGrowl.pause",true);}).bind("mouseout.jGrowl",function(){$('div.jGrowl-notification',self.element).data("jGrowl.pause",false);}).bind('jGrowl.beforeOpen',function(){if(o.beforeOpen.apply(notification,[notification,message,o,self.element])!=false){$(this).trigger('jGrowl.open');}}).bind('jGrowl.open',function(){if(o.open.apply(notification,[notification,message,o,self.element])!=false){if(o.glue=='after'){$('div.jGrowl-notification:last',self.element).after(notification);}else{$('div.jGrowl-notification:first',self.element).before(notification);}
5
+ $(this).animate(o.animateOpen,o.speed,o.easing,function(){if($.browser.msie&&(parseInt($(this).css('opacity'),10)===1||parseInt($(this).css('opacity'),10)===0))
6
+ this.style.removeAttribute('filter');$(this).data("jGrowl").created=new Date();});}}).bind('jGrowl.beforeClose',function(){if(o.beforeClose.apply(notification,[notification,message,o,self.element])!=false)
7
+ $(this).trigger('jGrowl.close');}).bind('jGrowl.close',function(){$(this).data('jGrowl.pause',true);$(this).animate(o.animateClose,o.speed,o.easing,function(){$(this).remove();var close=o.close.apply(notification,[notification,message,o,self.element]);if($.isFunction(close))
8
+ close.apply(notification,[notification,message,o,self.element]);});}).trigger('jGrowl.beforeOpen');if($.fn.corner!=undefined)$(notification).corner(o.corners);if($('div.jGrowl-notification:parent',self.element).size()>1&&$('div.jGrowl-closer',self.element).size()==0&&this.defaults.closer!=false){$(this.defaults.closerTemplate).addClass('jGrowl-closer ui-state-highlight ui-corner-all').addClass(this.defaults.theme).appendTo(self.element).animate(this.defaults.animateOpen,this.defaults.speed,this.defaults.easing).bind("click.jGrowl",function(){$(this).siblings().children('div.close').trigger("click.jGrowl");if($.isFunction(self.defaults.closer)){self.defaults.closer.apply($(this).parent()[0],[$(this).parent()[0]]);}});};},update:function(){$(this.element).find('div.jGrowl-notification:parent').each(function(){if($(this).data("jGrowl")!=undefined&&$(this).data("jGrowl").created!=undefined&&($(this).data("jGrowl").created.getTime()+$(this).data("jGrowl").life)<(new Date()).getTime()&&$(this).data("jGrowl").sticky!=true&&($(this).data("jGrowl.pause")==undefined||$(this).data("jGrowl.pause")!=true)){$(this).trigger('jGrowl.beforeClose');}});if(this.notifications.length>0&&(this.defaults.pool==0||$(this.element).find('div.jGrowl-notification:parent').size()<this.defaults.pool))
9
+ this.render(this.notifications.shift());if($(this.element).find('div.jGrowl-notification:parent').size()<2){$(this.element).find('div.jGrowl-closer').animate(this.defaults.animateClose,this.defaults.speed,this.defaults.easing,function(){$(this).remove();});}},startup:function(e){this.element=$(e).addClass('jGrowl').append('<div class="jGrowl-notification"></div>');this.interval=setInterval(function(){$(e).data('jGrowl.instance').update();},this.defaults.check);if($.browser.msie&&parseInt($.browser.version)<7&&!window["XMLHttpRequest"]){$(this.element).addClass('ie6');}},shutdown:function(){$(this.element).removeClass('jGrowl').find('div.jGrowl-notification').remove();clearInterval(this.interval);},close:function(){$(this.element).find('div.jGrowl-notification').each(function(){$(this).trigger('jGrowl.beforeClose');});}});$.jGrowl.defaults=$.fn.jGrowl.prototype.defaults;})(jQuery);
@@ -1,8 +1,6 @@
1
1
  //jQuery.noConflict();
2
2
  jQuery(document).ajaxSend(function(event, request, settings) {
3
- request.setRequestHeader("Accept", "text/javascript");
4
- request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
5
-
3
+ add_headers(request);
6
4
  if (settings.type.toUpperCase() == 'GET' || typeof(AUTH_TOKEN) == "undefined") return; // for details see: http://www.justinball.com/2009/07/08/jquery-ajax-get-in-firefox-post-in-internet-explorer/
7
5
  // settings.data is a serialized string like "foo=bar&baz=boink" (or null)
8
6
  settings.data = settings.data || "";
@@ -92,21 +90,49 @@ function setup_country(force_load){
92
90
  }
93
91
  }
94
92
 
95
- jQuery.jGrowl.defaults.position = 'center';
96
-
97
- jQuery.jGrowl.info = function(msg){
98
- jQuery.jGrowl(msg);
99
- }
100
-
101
- jQuery.jGrowl.warn = function(msg){
102
- jQuery.jGrowl(msg);
93
+ function apply_ajax_forms() {
94
+ jQuery('form.ajax').ajaxForm({
95
+ dataType: 'script',
96
+ beforeSend: add_headers
97
+ });
98
+ jQuery('form.ajax').append('<input type="hidden" name="format" value="js" />');
103
99
  }
104
100
 
105
- jQuery.jGrowl.error = function(msg){
106
- jQuery.jGrowl(msg, {sticky:true,header:"Please correct the following errors:"});
101
+ function add_headers(xhr){
102
+ xhr.setRequestHeader("Accept", "text/javascript");
103
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
107
104
  }
108
105
 
109
106
  jQuery(document).ready(function() {
107
+
108
+ jQuery('a.ajax-delete').live('click', function() {
109
+ jQuery.post(this.href, { _method: 'delete', format: 'js' }, null, "script");
110
+ return false;
111
+ });
112
+
113
+ jQuery('a.ajax-update').live('click', function() {
114
+ jQuery.post(this.href, { _method: 'put', format: 'js' }, null, "script");
115
+ return false;
116
+ });
117
+
118
+ jQuery(".submit-form").click(function() {
119
+ jQuery(this).parent('form').submit();
120
+ });
121
+
122
+ apply_ajax_forms();
123
+
124
+ jQuery('a.fancy-pop').fancybox({'hideOnContentClick':false, 'overlayShow':true, 'frameWidth':600, 'frameHeight':500 });
125
+
126
+ jQuery('a.dialog-pop').live('click', function() {
127
+ var d = jQuery('<div class="dialog"></div>').appendTo("body");
128
+ d.dialog({ modal: true, autoOpen: false, width: 'auto', title: jQuery(this).attr('title') });
129
+ d.load(jQuery(this).attr('href'), '', function(){
130
+ d.dialog("open");
131
+ apply_ajax_forms();
132
+ });
133
+ return false;
134
+ });
135
+
110
136
  jQuery("#global-login").focus(function() {
111
137
  jQuery("#global-login").val("");
112
138
  });
@@ -1,19 +1,36 @@
1
1
  /* header */
2
+ a {color:#000;}
2
3
  #main-navigation{}
3
4
  #account-navigation {}
4
5
  .navigation ul{padding:2px;margin:0;}
5
6
  .navigation ul li{list-style:none;font-weight:bold;display:inline-block;}
6
7
  .navigation ul li a{float:left;text-decoration:none;font-weight:bold;}
7
8
  .navigation ul li a:hover{text-decoration:underline;}
8
- #header{height:90px;border-bottom:solid 2px #333;}
9
+ ul.inline{padding:0;margin:0;}
10
+ ul.inline li{list-style:none;}
11
+ ul.admin-list li {list-style:none;}
12
+ ul.admin-list li a{font-size:1.2em;}
13
+ #header{border-bottom:solid 2px #333;}
9
14
  #admin-account{width:100%;float:right;}
10
15
  #admin-account ul{float:right;}
11
16
  #admin-account ul li{margin:1px;padding:0 4px;float:left;}
12
- #admin-nav li a{background-repeat:no-repeat;height:20px;margin:0 4px;padding-top:35px;text-align:center;width:40px;}
17
+ /*#admin-nav li a{background-repeat:no-repeat;height:20px;margin:0 4px;padding-top:35px;text-align:center;width:40px;}*/
18
+ #admin-nav li a{margin:0 12px 0 0;}
13
19
  #sub-header{width:100%;float:left;}
14
20
  /* dashboard widgets */
15
21
  .dashboard-widget{padding:5px;}
16
22
  .dashboard-widget h2{font-size:12px;border-bottom:solid 1px #555;}
17
23
  /* themes */
18
24
  #current-theme{clear:both;float:left;width:100%;}
19
- .theme-block{width:250px;height:300px;float:left;clear:none;margin:10px;}
25
+ .theme-block{width:250px;height:300px;float:left;clear:none;margin:10px;}
26
+ /* errors, message */
27
+ .notify-box{font-size:1.2em;color:#555;width:100%}
28
+ .error,.notice,.success {margin:0;}
29
+ #errorExplanation{margin:0;padding:0;}
30
+ /* tables */
31
+ .adminTable{margin:5px 0 0 0;padding:0 0 40px 0px;width:980px;}
32
+ .adminTable a{color:#000;text-decoration:none;font-weight:bold;}
33
+ .adminTable a:hover{;text-decoration:underline;}
34
+ .adminTable tr{background-color:#fff;}
35
+ .adminTable table{border:2px solid #c4ad63;}
36
+ .adminTable tr td{font-size:1.1em;font-weight:bold;padding:5px;border-bottom:1px solid #eee;}
@@ -0,0 +1,160 @@
1
+ /*
2
+ * jQuery UI CSS Framework
3
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
4
+ * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
5
+ */
6
+
7
+ /* Layout helpers
8
+ ----------------------------------*/
9
+ .ui-helper-hidden { display: none; }
10
+ .ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
11
+ .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
12
+ .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
13
+ .ui-helper-clearfix { display: inline-block; }
14
+ /* required comment for clearfix to work in Opera \*/
15
+ * html .ui-helper-clearfix { height:1%; }
16
+ .ui-helper-clearfix { display:block; }
17
+ /* end clearfix */
18
+ .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
19
+
20
+
21
+ /* Interaction Cues
22
+ ----------------------------------*/
23
+ .ui-state-disabled { cursor: default !important; }
24
+
25
+
26
+ /* Icons
27
+ ----------------------------------*/
28
+
29
+ /* states and images */
30
+ .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
31
+
32
+
33
+ /* Misc visuals
34
+ ----------------------------------*/
35
+
36
+ /* Overlays */
37
+ .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }/* Accordion
38
+ ----------------------------------*/
39
+ .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
40
+ .ui-accordion .ui-accordion-li-fix { display: inline; }
41
+ .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
42
+ .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; }
43
+ .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
44
+ .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; }
45
+ .ui-accordion .ui-accordion-content-active { display: block; }/* Datepicker
46
+ ----------------------------------*/
47
+ .ui-datepicker { width: 17em; padding: .2em .2em 0; }
48
+ .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
49
+ .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
50
+ .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
51
+ .ui-datepicker .ui-datepicker-prev { left:2px; }
52
+ .ui-datepicker .ui-datepicker-next { right:2px; }
53
+ .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
54
+ .ui-datepicker .ui-datepicker-next-hover { right:1px; }
55
+ .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
56
+ .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
57
+ .ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; }
58
+ .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
59
+ .ui-datepicker select.ui-datepicker-month,
60
+ .ui-datepicker select.ui-datepicker-year { width: 49%;}
61
+ .ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; }
62
+ .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
63
+ .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
64
+ .ui-datepicker td { border: 0; padding: 1px; }
65
+ .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
66
+ .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
67
+ .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
68
+ .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
69
+
70
+ /* with multiple calendars */
71
+ .ui-datepicker.ui-datepicker-multi { width:auto; }
72
+ .ui-datepicker-multi .ui-datepicker-group { float:left; }
73
+ .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
74
+ .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
75
+ .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
76
+ .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
77
+ .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
78
+ .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
79
+ .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
80
+ .ui-datepicker-row-break { clear:both; width:100%; }
81
+
82
+ /* RTL support */
83
+ .ui-datepicker-rtl { direction: rtl; }
84
+ .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
85
+ .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
86
+ .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
87
+ .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
88
+ .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
89
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
90
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
91
+ .ui-datepicker-rtl .ui-datepicker-group { float:right; }
92
+ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
93
+ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
94
+
95
+ /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
96
+ .ui-datepicker-cover {
97
+ display: none; /*sorry for IE5*/
98
+ display/**/: block; /*sorry for IE5*/
99
+ position: absolute; /*must have*/
100
+ z-index: -1; /*must have*/
101
+ filter: mask(); /*must have*/
102
+ top: -4px; /*must have*/
103
+ left: -4px; /*must have*/
104
+ width: 200px; /*must have*/
105
+ height: 200px; /*must have*/
106
+ }/* Dialog
107
+ ----------------------------------*/
108
+ .ui-dialog { position: relative; padding: .2em; width: 300px; }
109
+ .ui-dialog .ui-dialog-titlebar { padding: .5em .3em .3em 1em; position: relative; }
110
+ .ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; }
111
+ .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
112
+ .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
113
+ .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
114
+ .ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
115
+ .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
116
+ .ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; }
117
+ .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
118
+ .ui-draggable .ui-dialog-titlebar { cursor: move; }
119
+ /* Progressbar
120
+ ----------------------------------*/
121
+ .ui-progressbar { height:2em; text-align: left; }
122
+ .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* Resizable
123
+ ----------------------------------*/
124
+ .ui-resizable { position: relative;}
125
+ .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
126
+ .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
127
+ .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0px; }
128
+ .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; }
129
+ .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; }
130
+ .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; }
131
+ .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
132
+ .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
133
+ .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
134
+ .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Slider
135
+ ----------------------------------*/
136
+ .ui-slider { position: relative; text-align: left; }
137
+ .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
138
+ .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; }
139
+
140
+ .ui-slider-horizontal { height: .8em; }
141
+ .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
142
+ .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
143
+ .ui-slider-horizontal .ui-slider-range-min { left: 0; }
144
+ .ui-slider-horizontal .ui-slider-range-max { right: 0; }
145
+
146
+ .ui-slider-vertical { width: .8em; height: 100px; }
147
+ .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
148
+ .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
149
+ .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
150
+ .ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs
151
+ ----------------------------------*/
152
+ .ui-tabs { padding: .2em; zoom: 1; }
153
+ .ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; }
154
+ .ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; }
155
+ .ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; }
156
+ .ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; }
157
+ .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; }
158
+ .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... */
159
+ .ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; }
160
+ .ui-tabs .ui-tabs-hide { display: none !important; }
@@ -0,0 +1,160 @@
1
+ /*
2
+ * jQuery UI CSS Framework
3
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
4
+ * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
5
+ */
6
+
7
+ /* Layout helpers
8
+ ----------------------------------*/
9
+ .ui-helper-hidden { display: none; }
10
+ .ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
11
+ .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
12
+ .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
13
+ .ui-helper-clearfix { display: inline-block; }
14
+ /* required comment for clearfix to work in Opera \*/
15
+ * html .ui-helper-clearfix { height:1%; }
16
+ .ui-helper-clearfix { display:block; }
17
+ /* end clearfix */
18
+ .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
19
+
20
+
21
+ /* Interaction Cues
22
+ ----------------------------------*/
23
+ .ui-state-disabled { cursor: default !important; }
24
+
25
+
26
+ /* Icons
27
+ ----------------------------------*/
28
+
29
+ /* states and images */
30
+ .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
31
+
32
+
33
+ /* Misc visuals
34
+ ----------------------------------*/
35
+
36
+ /* Overlays */
37
+ .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }/* Accordion
38
+ ----------------------------------*/
39
+ .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
40
+ .ui-accordion .ui-accordion-li-fix { display: inline; }
41
+ .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
42
+ .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; }
43
+ .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
44
+ .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; }
45
+ .ui-accordion .ui-accordion-content-active { display: block; }/* Datepicker
46
+ ----------------------------------*/
47
+ .ui-datepicker { width: 17em; padding: .2em .2em 0; }
48
+ .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
49
+ .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
50
+ .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
51
+ .ui-datepicker .ui-datepicker-prev { left:2px; }
52
+ .ui-datepicker .ui-datepicker-next { right:2px; }
53
+ .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
54
+ .ui-datepicker .ui-datepicker-next-hover { right:1px; }
55
+ .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
56
+ .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
57
+ .ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; }
58
+ .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
59
+ .ui-datepicker select.ui-datepicker-month,
60
+ .ui-datepicker select.ui-datepicker-year { width: 49%;}
61
+ .ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; }
62
+ .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
63
+ .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
64
+ .ui-datepicker td { border: 0; padding: 1px; }
65
+ .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
66
+ .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
67
+ .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
68
+ .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
69
+
70
+ /* with multiple calendars */
71
+ .ui-datepicker.ui-datepicker-multi { width:auto; }
72
+ .ui-datepicker-multi .ui-datepicker-group { float:left; }
73
+ .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
74
+ .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
75
+ .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
76
+ .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
77
+ .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
78
+ .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
79
+ .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
80
+ .ui-datepicker-row-break { clear:both; width:100%; }
81
+
82
+ /* RTL support */
83
+ .ui-datepicker-rtl { direction: rtl; }
84
+ .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
85
+ .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
86
+ .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
87
+ .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
88
+ .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
89
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
90
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
91
+ .ui-datepicker-rtl .ui-datepicker-group { float:right; }
92
+ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
93
+ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
94
+
95
+ /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
96
+ .ui-datepicker-cover {
97
+ display: none; /*sorry for IE5*/
98
+ display/**/: block; /*sorry for IE5*/
99
+ position: absolute; /*must have*/
100
+ z-index: -1; /*must have*/
101
+ filter: mask(); /*must have*/
102
+ top: -4px; /*must have*/
103
+ left: -4px; /*must have*/
104
+ width: 200px; /*must have*/
105
+ height: 200px; /*must have*/
106
+ }/* Dialog
107
+ ----------------------------------*/
108
+ .ui-dialog { position: relative; padding: .2em; width: 300px; }
109
+ .ui-dialog .ui-dialog-titlebar { padding: .5em .3em .3em 1em; position: relative; }
110
+ .ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; }
111
+ .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
112
+ .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
113
+ .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
114
+ .ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
115
+ .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
116
+ .ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; }
117
+ .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
118
+ .ui-draggable .ui-dialog-titlebar { cursor: move; }
119
+ /* Progressbar
120
+ ----------------------------------*/
121
+ .ui-progressbar { height:2em; text-align: left; }
122
+ .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* Resizable
123
+ ----------------------------------*/
124
+ .ui-resizable { position: relative;}
125
+ .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
126
+ .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
127
+ .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0px; }
128
+ .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; }
129
+ .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; }
130
+ .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; }
131
+ .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
132
+ .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
133
+ .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
134
+ .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Slider
135
+ ----------------------------------*/
136
+ .ui-slider { position: relative; text-align: left; }
137
+ .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
138
+ .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; }
139
+
140
+ .ui-slider-horizontal { height: .8em; }
141
+ .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
142
+ .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
143
+ .ui-slider-horizontal .ui-slider-range-min { left: 0; }
144
+ .ui-slider-horizontal .ui-slider-range-max { right: 0; }
145
+
146
+ .ui-slider-vertical { width: .8em; height: 100px; }
147
+ .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
148
+ .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
149
+ .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
150
+ .ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs
151
+ ----------------------------------*/
152
+ .ui-tabs { padding: .2em; zoom: 1; }
153
+ .ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; }
154
+ .ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; }
155
+ .ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; }
156
+ .ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; }
157
+ .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; }
158
+ .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... */
159
+ .ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; }
160
+ .ui-tabs .ui-tabs-hide { display: none !important; }