refinerycms-blog 1.5.2 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. data/app/controllers/admin/blog/posts_controller.rb +7 -0
  2. data/app/controllers/blog/categories_controller.rb +4 -0
  3. data/app/models/blog_category.rb +4 -1
  4. data/app/models/blog_post.rb +10 -1
  5. data/app/views/admin/blog/_submenu.html.erb +2 -9
  6. data/app/views/admin/blog/comments/show.html.erb +2 -5
  7. data/app/views/admin/blog/posts/_form.html.erb +39 -11
  8. data/app/views/admin/blog/posts/_form.js.erb +3 -11
  9. data/app/views/admin/blog/posts/_form_part.html.erb +3 -0
  10. data/app/views/blog/categories/show.html.erb +5 -4
  11. data/app/views/blog/posts/_post.html.erb +4 -4
  12. data/app/views/blog/posts/show.html.erb +8 -21
  13. data/app/views/blog/posts/tagged.html.erb +1 -1
  14. data/app/views/blog/shared/_post.html.erb +4 -4
  15. data/app/views/blog/shared/_tags.html.erb +1 -1
  16. data/app/views/shared/admin/_autocomplete.html.erb +55 -0
  17. data/changelog.md +9 -0
  18. data/config/locales/de.yml +2 -0
  19. data/config/locales/en.yml +23 -1
  20. data/config/locales/fr.yml +31 -2
  21. data/config/locales/nl.yml +3 -3
  22. data/config/locales/pt-BR.yml +10 -0
  23. data/config/locales/ru.yml +3 -0
  24. data/config/routes.rb +4 -1
  25. data/db/migrate/5_add_cached_slugs.rb +11 -0
  26. data/db/migrate/6_add_custom_url_field_to_blog_posts.rb +9 -0
  27. data/features/authors.feature +1 -1
  28. data/features/category.feature +23 -0
  29. data/features/support/step_definitions/category_steps.rb +11 -0
  30. data/features/tags.feature +1 -1
  31. data/lib/refinery/blog/tabs.rb +28 -0
  32. data/lib/refinery/blog/version.rb +2 -2
  33. data/lib/refinerycms-blog.rb +6 -1
  34. data/public/stylesheets/refinerycms-blog.css +3 -2
  35. data/public/stylesheets/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  36. data/public/stylesheets/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  37. data/public/stylesheets/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
  38. data/public/stylesheets/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  39. data/public/stylesheets/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  40. data/public/stylesheets/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  41. data/public/stylesheets/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  42. data/public/stylesheets/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  43. data/public/stylesheets/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  44. data/public/stylesheets/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
  45. data/public/stylesheets/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
  46. data/public/stylesheets/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -0
  47. data/public/stylesheets/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
  48. data/public/stylesheets/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
  49. data/public/stylesheets/ui-lightness/jquery-ui-1.8.13.custom.css +337 -0
  50. metadata +77 -62
@@ -9,7 +9,7 @@ nl:
9
9
  edit: Bewerk deze categorie
10
10
  delete: Verwijder deze categorie definitief
11
11
  index:
12
- no_items_yet: 'Er zijn momenteel geen categori�n. Klik op "%{create}" om uw eerste categorie toe te voegen.'
12
+ no_items_yet: 'Er zijn momenteel geen categorien. Klik op "%{create}" om uw eerste categorie toe te voegen.'
13
13
  comments:
14
14
  approved: 'De reactie van "%{author}" is goedgekeurd.'
15
15
  comment:
@@ -55,7 +55,7 @@ nl:
55
55
  updated: 'De ontvanger(s) van notificaties is/zijn gewijzigd naar "%{recipients}"'
56
56
  submenu:
57
57
  categories:
58
- title: Categori�n
58
+ title: Categorien
59
59
  manage: Beheren
60
60
  new: Voeg een nieuwe categorie toe
61
61
  comments:
@@ -89,7 +89,7 @@ nl:
89
89
  ps: 'P.S. Alle reacties worden opgeslagen in de "Blog" sectie van Refinery onder het submenu "Comments", voor als u deze reacties later wilt bekijken.'
90
90
  shared:
91
91
  categories:
92
- title: Categori�n
92
+ title: Categorien
93
93
  rss_feed:
94
94
  title: RSS Feed
95
95
  subscribe: Aanmelden
@@ -2,6 +2,14 @@ pt-BR:
2
2
  plugins:
3
3
  refinerycms_blog:
4
4
  title: Blog
5
+ activerecord:
6
+ attributes:
7
+ blog_post:
8
+ title: Título
9
+ body: Corpo
10
+ blog_comment:
11
+ name: Nome
12
+ message: Mensagem
5
13
  admin:
6
14
  blog:
7
15
  categories:
@@ -101,6 +109,8 @@ pt-BR:
101
109
  singular: comentário
102
110
  none: não há comentários
103
111
  archives: Arquivos
112
+ tags:
113
+ title: Tags
104
114
  categories:
105
115
  show:
106
116
  no_posts: Não há posts aqui ainda.
@@ -40,6 +40,8 @@ ru:
40
40
  published_at: Дата публикации
41
41
  index:
42
42
  no_items_yet: 'Записи в блоге отстутствуют. Нажмите "%{create}", чтобы добавить первую запись.'
43
+ uncategorized:
44
+ no_items_yet: 'Записи без категорий отсутствуют.'
43
45
  post:
44
46
  view_live_html: Посмотреть запись на сайте <br/><em>(откроется в новом окне)</em>
45
47
  edit: Редактировать запись
@@ -67,6 +69,7 @@ ru:
67
69
  title: Записи
68
70
  manage: Редактировать записи
69
71
  new: Создать новую запись
72
+ uncategorized: Записи без категорий
70
73
  settings:
71
74
  title: Настройки
72
75
  moderation: Модерирование
data/config/routes.rb CHANGED
@@ -13,7 +13,10 @@
13
13
  scope(:path => 'blog', :as => 'blog', :module => 'blog') do
14
14
  root :to => 'posts#index'
15
15
  resources :posts do
16
- get 'uncategorized', :on => :collection
16
+ collection do
17
+ get :uncategorized
18
+ get :tags
19
+ end
17
20
  end
18
21
 
19
22
  resources :categories
@@ -0,0 +1,11 @@
1
+ class AddCachedSlugs < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :blog_categories, :cached_slug, :string
4
+ add_column :blog_posts, :cached_slug, :string
5
+ end
6
+
7
+ def self.down
8
+ remove_column :blog_categories, :cached_slug
9
+ remove_column :blog_posts, :cached_slug
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ class AddCustomUrlFieldToBlogPosts < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :blog_posts, :custom_url, :string
4
+ end
5
+
6
+ def self.down
7
+ remove_column :blog_posts, :custom_url
8
+ end
9
+ end
@@ -8,7 +8,7 @@ Feature: Blog Post Authors
8
8
 
9
9
  When I am on the new blog post form
10
10
  And I fill in "Title" with "This is my blog post"
11
- And I fill in "Body" with "And I love it"
11
+ And I fill in "blog_post_body" with "And I love it"
12
12
  And I press "Save"
13
13
 
14
14
  Then there should be 1 blog post
@@ -0,0 +1,23 @@
1
+ @blog @blog_categories
2
+ Feature: Blog Post Categories
3
+ Blog posts can be assigned categories
4
+
5
+ Background:
6
+ Given I am a logged in refinery user
7
+ Given there is a category titled "Videos"
8
+
9
+ Scenario: The blog post new/edit form has category_list
10
+ When I am on the new blog post form
11
+ Then I should see "Tags"
12
+ Then I should see "Videos"
13
+
14
+ Scenario: The blog post new/edit form saves categories
15
+ When I am on the new blog post form
16
+ And I fill in "Title" with "This is my blog post"
17
+ And I fill in "blog_post_body" with "And I love it"
18
+ And I check "Videos"
19
+ And I press "Save"
20
+
21
+ Then there should be 1 blog post
22
+ And the blog post should have "1" category
23
+ And the blog post should have the category "Videos"
@@ -0,0 +1,11 @@
1
+ Given /^there is a category titled "([^"]*)"$/ do |title|
2
+ @category = Factory(:blog_category, :title => title)
3
+ end
4
+
5
+ Then /^the blog post should have "([^"]*)" category$/ do |num_category|
6
+ BlogPost.last.categories.count.should == num_category
7
+ end
8
+
9
+ Then /^the blog post should have the category "([^"]*)"$/ do |category|
10
+ BlogPost.last.categories.first.title.should == category
11
+ end
@@ -12,7 +12,7 @@ Feature: Blog Post Tags
12
12
  Scenario: The blog post new/edit form saves tag_list
13
13
  When I am on the new blog post form
14
14
  And I fill in "Title" with "This is my blog post"
15
- And I fill in "Body" with "And I love it"
15
+ And I fill in "blog_post_body" with "And I love it"
16
16
  And I fill in "Tags" with "chicago, bikes, beers, babes"
17
17
  And I press "Save"
18
18
 
@@ -0,0 +1,28 @@
1
+ module Refinery
2
+ module Blog
3
+ attr_accessor :tabs
4
+
5
+ def self.tabs
6
+ @tabs ||= []
7
+ end
8
+
9
+ class Tab
10
+ attr_accessor :name, :partial
11
+
12
+ def self.register(&block)
13
+ tab = self.new
14
+
15
+ yield tab
16
+
17
+ raise "A tab MUST have a name!: #{tab.inspect}" if tab.name.blank?
18
+ raise "A tab MUST have a partial!: #{tab.inspect}" if tab.partial.blank?
19
+ end
20
+
21
+ protected
22
+
23
+ def initialize
24
+ ::Refinery::Blog.tabs << self # add me to the collection of registered page tabs
25
+ end
26
+ end
27
+ end
28
+ end
@@ -2,8 +2,8 @@ module Refinery
2
2
  module Blog
3
3
  class Version
4
4
  @major = 1
5
- @minor = 5
6
- @tiny = 2
5
+ @minor = 6
6
+ @tiny = 0
7
7
 
8
8
  class << self
9
9
  attr_reader :major, :minor, :tiny
@@ -2,8 +2,9 @@ require 'filters_spam'
2
2
 
3
3
  module Refinery
4
4
  module Blog
5
-
6
5
  autoload :Version, File.expand_path('../refinery/blog/version', __FILE__)
6
+ autoload :Tab, File.expand_path("../refinery/blog/tabs", __FILE__)
7
+
7
8
  class << self
8
9
  def version
9
10
  ::Refinery::Blog::Version.to_s
@@ -15,6 +16,10 @@ module Refinery
15
16
  app.middleware.insert_after ::ActionDispatch::Static, ::ActionDispatch::Static, "#{root}/public"
16
17
  end
17
18
 
19
+ config.to_prepare do
20
+ require File.expand_path('../refinery/blog/tabs', __FILE__)
21
+ end
22
+
18
23
  config.after_initialize do
19
24
  Refinery::Plugin.register do |plugin|
20
25
  plugin.name = "refinerycms_blog"
@@ -1,6 +1,7 @@
1
+ .blog_post header, .blog_post footer {
2
+ width: auto;
3
+ }
1
4
  .blog_post .posted_at{
2
- display:block;
3
- margin:0 0 10px;
4
5
  }
5
6
  .post_categories .filed_in {
6
7
  display: inline;
@@ -0,0 +1,337 @@
1
+ /*
2
+ * jQuery UI CSS Framework 1.8.13
3
+ *
4
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5
+ * Dual licensed under the MIT or GPL Version 2 licenses.
6
+ * http://jquery.org/license
7
+ *
8
+ * http://docs.jquery.com/UI/Theming/API
9
+ */
10
+
11
+ /* Layout helpers
12
+ ----------------------------------*/
13
+ .ui-helper-hidden { display: none; }
14
+ .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
15
+ .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
16
+ .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
17
+ .ui-helper-clearfix { display: inline-block; }
18
+ /* required comment for clearfix to work in Opera \*/
19
+ * html .ui-helper-clearfix { height:1%; }
20
+ .ui-helper-clearfix { display:block; }
21
+ /* end clearfix */
22
+ .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
23
+
24
+
25
+ /* Interaction Cues
26
+ ----------------------------------*/
27
+ .ui-state-disabled { cursor: default !important; }
28
+
29
+
30
+ /* Icons
31
+ ----------------------------------*/
32
+
33
+ /* states and images */
34
+ .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
35
+
36
+
37
+ /* Misc visuals
38
+ ----------------------------------*/
39
+
40
+ /* Overlays */
41
+ .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
42
+ .ui-autocomplete{ background:#fff; border:solid #ccc; border-width:0 1px 1px; }
43
+
44
+ /*
45
+ * jQuery UI CSS Framework 1.8.13
46
+ *
47
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
48
+ * Dual licensed under the MIT or GPL Version 2 licenses.
49
+ * http://jquery.org/license
50
+ *
51
+ * http://docs.jquery.com/UI/Theming/API
52
+ *
53
+ * 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
54
+ */
55
+
56
+
57
+ /* Interaction states
58
+ ----------------------------------*/
59
+ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .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; }
60
+ .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; }
61
+ .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .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; }
62
+ .ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; }
63
+ .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .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; }
64
+ .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; }
65
+ .ui-widget :active { outline: none; }
66
+
67
+ /* Interaction Cues
68
+ ----------------------------------*/
69
+ .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .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; }
70
+ .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
71
+ .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }
72
+ .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }
73
+ .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }
74
+ .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
75
+ .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
76
+ .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
77
+
78
+ /* Icons
79
+ ----------------------------------*/
80
+
81
+ /* states and images */
82
+ .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
83
+ .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
84
+ .ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
85
+ .ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }
86
+ .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
87
+ .ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
88
+ .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }
89
+ .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }
90
+
91
+ /* positioning */
92
+ .ui-icon-carat-1-n { background-position: 0 0; }
93
+ .ui-icon-carat-1-ne { background-position: -16px 0; }
94
+ .ui-icon-carat-1-e { background-position: -32px 0; }
95
+ .ui-icon-carat-1-se { background-position: -48px 0; }
96
+ .ui-icon-carat-1-s { background-position: -64px 0; }
97
+ .ui-icon-carat-1-sw { background-position: -80px 0; }
98
+ .ui-icon-carat-1-w { background-position: -96px 0; }
99
+ .ui-icon-carat-1-nw { background-position: -112px 0; }
100
+ .ui-icon-carat-2-n-s { background-position: -128px 0; }
101
+ .ui-icon-carat-2-e-w { background-position: -144px 0; }
102
+ .ui-icon-triangle-1-n { background-position: 0 -16px; }
103
+ .ui-icon-triangle-1-ne { background-position: -16px -16px; }
104
+ .ui-icon-triangle-1-e { background-position: -32px -16px; }
105
+ .ui-icon-triangle-1-se { background-position: -48px -16px; }
106
+ .ui-icon-triangle-1-s { background-position: -64px -16px; }
107
+ .ui-icon-triangle-1-sw { background-position: -80px -16px; }
108
+ .ui-icon-triangle-1-w { background-position: -96px -16px; }
109
+ .ui-icon-triangle-1-nw { background-position: -112px -16px; }
110
+ .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
111
+ .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
112
+ .ui-icon-arrow-1-n { background-position: 0 -32px; }
113
+ .ui-icon-arrow-1-ne { background-position: -16px -32px; }
114
+ .ui-icon-arrow-1-e { background-position: -32px -32px; }
115
+ .ui-icon-arrow-1-se { background-position: -48px -32px; }
116
+ .ui-icon-arrow-1-s { background-position: -64px -32px; }
117
+ .ui-icon-arrow-1-sw { background-position: -80px -32px; }
118
+ .ui-icon-arrow-1-w { background-position: -96px -32px; }
119
+ .ui-icon-arrow-1-nw { background-position: -112px -32px; }
120
+ .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
121
+ .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
122
+ .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
123
+ .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
124
+ .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
125
+ .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
126
+ .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
127
+ .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
128
+ .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
129
+ .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
130
+ .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
131
+ .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
132
+ .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
133
+ .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
134
+ .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
135
+ .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
136
+ .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
137
+ .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
138
+ .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
139
+ .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
140
+ .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
141
+ .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
142
+ .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
143
+ .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
144
+ .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
145
+ .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
146
+ .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
147
+ .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
148
+ .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
149
+ .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
150
+ .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
151
+ .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
152
+ .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
153
+ .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
154
+ .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
155
+ .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
156
+ .ui-icon-arrow-4 { background-position: 0 -80px; }
157
+ .ui-icon-arrow-4-diag { background-position: -16px -80px; }
158
+ .ui-icon-extlink { background-position: -32px -80px; }
159
+ .ui-icon-newwin { background-position: -48px -80px; }
160
+ .ui-icon-refresh { background-position: -64px -80px; }
161
+ .ui-icon-shuffle { background-position: -80px -80px; }
162
+ .ui-icon-transfer-e-w { background-position: -96px -80px; }
163
+ .ui-icon-transferthick-e-w { background-position: -112px -80px; }
164
+ .ui-icon-folder-collapsed { background-position: 0 -96px; }
165
+ .ui-icon-folder-open { background-position: -16px -96px; }
166
+ .ui-icon-document { background-position: -32px -96px; }
167
+ .ui-icon-document-b { background-position: -48px -96px; }
168
+ .ui-icon-note { background-position: -64px -96px; }
169
+ .ui-icon-mail-closed { background-position: -80px -96px; }
170
+ .ui-icon-mail-open { background-position: -96px -96px; }
171
+ .ui-icon-suitcase { background-position: -112px -96px; }
172
+ .ui-icon-comment { background-position: -128px -96px; }
173
+ .ui-icon-person { background-position: -144px -96px; }
174
+ .ui-icon-print { background-position: -160px -96px; }
175
+ .ui-icon-trash { background-position: -176px -96px; }
176
+ .ui-icon-locked { background-position: -192px -96px; }
177
+ .ui-icon-unlocked { background-position: -208px -96px; }
178
+ .ui-icon-bookmark { background-position: -224px -96px; }
179
+ .ui-icon-tag { background-position: -240px -96px; }
180
+ .ui-icon-home { background-position: 0 -112px; }
181
+ .ui-icon-flag { background-position: -16px -112px; }
182
+ .ui-icon-calendar { background-position: -32px -112px; }
183
+ .ui-icon-cart { background-position: -48px -112px; }
184
+ .ui-icon-pencil { background-position: -64px -112px; }
185
+ .ui-icon-clock { background-position: -80px -112px; }
186
+ .ui-icon-disk { background-position: -96px -112px; }
187
+ .ui-icon-calculator { background-position: -112px -112px; }
188
+ .ui-icon-zoomin { background-position: -128px -112px; }
189
+ .ui-icon-zoomout { background-position: -144px -112px; }
190
+ .ui-icon-search { background-position: -160px -112px; }
191
+ .ui-icon-wrench { background-position: -176px -112px; }
192
+ .ui-icon-gear { background-position: -192px -112px; }
193
+ .ui-icon-heart { background-position: -208px -112px; }
194
+ .ui-icon-star { background-position: -224px -112px; }
195
+ .ui-icon-link { background-position: -240px -112px; }
196
+ .ui-icon-cancel { background-position: 0 -128px; }
197
+ .ui-icon-plus { background-position: -16px -128px; }
198
+ .ui-icon-plusthick { background-position: -32px -128px; }
199
+ .ui-icon-minus { background-position: -48px -128px; }
200
+ .ui-icon-minusthick { background-position: -64px -128px; }
201
+ .ui-icon-close { background-position: -80px -128px; }
202
+ .ui-icon-closethick { background-position: -96px -128px; }
203
+ .ui-icon-key { background-position: -112px -128px; }
204
+ .ui-icon-lightbulb { background-position: -128px -128px; }
205
+ .ui-icon-scissors { background-position: -144px -128px; }
206
+ .ui-icon-clipboard { background-position: -160px -128px; }
207
+ .ui-icon-copy { background-position: -176px -128px; }
208
+ .ui-icon-contact { background-position: -192px -128px; }
209
+ .ui-icon-image { background-position: -208px -128px; }
210
+ .ui-icon-video { background-position: -224px -128px; }
211
+ .ui-icon-script { background-position: -240px -128px; }
212
+ .ui-icon-alert { background-position: 0 -144px; }
213
+ .ui-icon-info { background-position: -16px -144px; }
214
+ .ui-icon-notice { background-position: -32px -144px; }
215
+ .ui-icon-help { background-position: -48px -144px; }
216
+ .ui-icon-check { background-position: -64px -144px; }
217
+ .ui-icon-bullet { background-position: -80px -144px; }
218
+ .ui-icon-radio-off { background-position: -96px -144px; }
219
+ .ui-icon-radio-on { background-position: -112px -144px; }
220
+ .ui-icon-pin-w { background-position: -128px -144px; }
221
+ .ui-icon-pin-s { background-position: -144px -144px; }
222
+ .ui-icon-play { background-position: 0 -160px; }
223
+ .ui-icon-pause { background-position: -16px -160px; }
224
+ .ui-icon-seek-next { background-position: -32px -160px; }
225
+ .ui-icon-seek-prev { background-position: -48px -160px; }
226
+ .ui-icon-seek-end { background-position: -64px -160px; }
227
+ .ui-icon-seek-start { background-position: -80px -160px; }
228
+ /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
229
+ .ui-icon-seek-first { background-position: -80px -160px; }
230
+ .ui-icon-stop { background-position: -96px -160px; }
231
+ .ui-icon-eject { background-position: -112px -160px; }
232
+ .ui-icon-volume-off { background-position: -128px -160px; }
233
+ .ui-icon-volume-on { background-position: -144px -160px; }
234
+ .ui-icon-power { background-position: 0 -176px; }
235
+ .ui-icon-signal-diag { background-position: -16px -176px; }
236
+ .ui-icon-signal { background-position: -32px -176px; }
237
+ .ui-icon-battery-0 { background-position: -48px -176px; }
238
+ .ui-icon-battery-1 { background-position: -64px -176px; }
239
+ .ui-icon-battery-2 { background-position: -80px -176px; }
240
+ .ui-icon-battery-3 { background-position: -96px -176px; }
241
+ .ui-icon-circle-plus { background-position: 0 -192px; }
242
+ .ui-icon-circle-minus { background-position: -16px -192px; }
243
+ .ui-icon-circle-close { background-position: -32px -192px; }
244
+ .ui-icon-circle-triangle-e { background-position: -48px -192px; }
245
+ .ui-icon-circle-triangle-s { background-position: -64px -192px; }
246
+ .ui-icon-circle-triangle-w { background-position: -80px -192px; }
247
+ .ui-icon-circle-triangle-n { background-position: -96px -192px; }
248
+ .ui-icon-circle-arrow-e { background-position: -112px -192px; }
249
+ .ui-icon-circle-arrow-s { background-position: -128px -192px; }
250
+ .ui-icon-circle-arrow-w { background-position: -144px -192px; }
251
+ .ui-icon-circle-arrow-n { background-position: -160px -192px; }
252
+ .ui-icon-circle-zoomin { background-position: -176px -192px; }
253
+ .ui-icon-circle-zoomout { background-position: -192px -192px; }
254
+ .ui-icon-circle-check { background-position: -208px -192px; }
255
+ .ui-icon-circlesmall-plus { background-position: 0 -208px; }
256
+ .ui-icon-circlesmall-minus { background-position: -16px -208px; }
257
+ .ui-icon-circlesmall-close { background-position: -32px -208px; }
258
+ .ui-icon-squaresmall-plus { background-position: -48px -208px; }
259
+ .ui-icon-squaresmall-minus { background-position: -64px -208px; }
260
+ .ui-icon-squaresmall-close { background-position: -80px -208px; }
261
+ .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
262
+ .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
263
+ .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
264
+ .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
265
+ .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
266
+ .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
267
+
268
+
269
+ /* Misc visuals
270
+ ----------------------------------*/
271
+
272
+ /* Corner radius */
273
+ .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; }
274
+ .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
275
+ .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
276
+ .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
277
+ .ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
278
+ .ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
279
+ .ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
280
+ .ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
281
+ .ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; }
282
+
283
+ /* Overlays */
284
+ .ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); }
285
+ .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; border-radius: 5px; }/*
286
+ * jQuery UI Autocomplete 1.8.13
287
+ *
288
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
289
+ * Dual licensed under the MIT or GPL Version 2 licenses.
290
+ * http://jquery.org/license
291
+ *
292
+ * http://docs.jquery.com/UI/Autocomplete#theming
293
+ */
294
+ .ui-autocomplete { position: absolute; cursor: default; }
295
+
296
+ /* workarounds */
297
+ * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
298
+
299
+ /*
300
+ * jQuery UI Menu 1.8.13
301
+ *
302
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
303
+ * Dual licensed under the MIT or GPL Version 2 licenses.
304
+ * http://jquery.org/license
305
+ *
306
+ * http://docs.jquery.com/UI/Menu#theming
307
+ */
308
+ .ui-menu {
309
+ list-style:none;
310
+ padding: 2px;
311
+ margin: 0;
312
+ display:block;
313
+ float: left;
314
+ }
315
+ .ui-menu .ui-menu {
316
+ margin-top: -3px;
317
+ }
318
+ .ui-menu .ui-menu-item {
319
+ margin:0;
320
+ padding: 0;
321
+ zoom: 1;
322
+ float: left;
323
+ clear: left;
324
+ width: 100%;
325
+ }
326
+ .ui-menu .ui-menu-item a {
327
+ text-decoration:none;
328
+ display:block;
329
+ padding:.2em .4em;
330
+ line-height:1.5;
331
+ zoom:1;
332
+ }
333
+ .ui-menu .ui-menu-item a.ui-state-hover,
334
+ .ui-menu .ui-menu-item a.ui-state-active {
335
+ font-weight: normal;
336
+ margin: -1px;
337
+ }