Skip to content

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
...
Checking mergeability… Don’t worry, you can still create the pull request.
  • 19 commits
  • 38 files changed
  • 0 commit comments
  • 1 contributor
Showing with 3,727 additions and 187 deletions.
  1. +5 −7 .gitignore
  2. +21 −16 Gemfile
  3. +162 −0 Gemfile.lock
  4. +2 −2 app/helpers/application_helper.rb
  5. +43 −4 app/helpers/theme_helper.rb
  6. +14 −4 app/views/articles/_article.html.erb
  7. +19 −46 app/views/articles/_comment_form.html.erb
  8. +4 −4 app/views/articles/_comment_list.html.erb
  9. +9 −6 app/views/articles/_trackback.html.erb
  10. +4 −8 app/views/articles/index.html.erb
  11. +35 −56 app/views/articles/read.html.erb
  12. +2 −3 app/views/articles/view_page.html.erb
  13. +13 −0 app/views/categories/_article.html.erb
  14. +13 −0 app/views/categories/index.html.erb
  15. +5 −0 app/views/categories/show.html.erb
  16. +10 −10 app/views/comments/_comment.html.erb
  17. +46 −0 app/views/layouts/default.html.erb
  18. +15 −0 app/views/tags/_article.html.erb
  19. +4 −0 app/views/tags/show.html.erb
  20. +9 −0 config/application.rb
  21. +14 −0 config/database.yml
  22. +9 −9 config/database.yml.sqlite
  23. 0 public/files/__fake_file__
  24. BIN public/images/theme/bg1.jpg
  25. BIN public/images/theme/bg2.jpg
  26. BIN public/images/theme/glyphicons-halflings-white.png
  27. BIN public/images/theme/glyphicons-halflings.png
  28. +27 −0 public/javascripts/ckeditor/config.bak
  29. +27 −0 public/javascripts/ckeditor/config.js
  30. +2,623 −0 public/stylesheets/theme/bootstrap.css
  31. +520 −0 public/stylesheets/theme/bootstrap.min.css
  32. +56 −0 public/stylesheets/theme/style.css
  33. +2 −2 spec/controllers/accounts_controller_spec.rb
  34. +3 −3 spec/controllers/admin/content_controller_spec.rb
  35. +3 −1 spec/controllers/backend_controller_spec.rb
  36. +1 −0 spec/controllers/categories_controller_spec.rb
  37. +6 −6 spec/models/article_spec.rb
  38. +1 −0 vendor/plugins/easy-ckeditor/lib/ckeditor_file_utils.rb
View
12 .gitignore
@@ -1,4 +1,3 @@
-config/database.yml
config/mail.yml
*.log
*~
@@ -9,17 +8,16 @@ db/schema.rb
.DS_Store
.rspec
installer/rails_installer.yml
-/public/files
-/public/images/theme
-/public/javascripts/ckeditor/config.js
-/public/javascripts/ckeditor/config.bak
+#/public/files
+#/public/images/theme
+#/public/javascripts/ckeditor/config.js
+#/public/javascripts/ckeditor/config.bak
/public/javascripts/all.js
/public/robots.txt
-/public/stylesheets/theme
+#/public/stylesheets/theme
/public/stylesheets/all.css
tmp/*
/coverage/
nbproject
public/cache/*
-Gemfile.lock
.rbenv-version
View
37 Gemfile
@@ -1,22 +1,26 @@
env = ENV["RAILS_ENV"] || 'development'
dbfile = File.expand_path("../config/database.yml", __FILE__)
-unless File.exists?(dbfile)
- raise "You need to configure config/database.yml first"
-else
- conf = YAML.load(File.read(dbfile))
- adapter = conf[env]['adapter']
- raise "You need define an adapter in your database.yml" if adapter == '' || adapter.nil?
- case adapter
- when 'sqlite3'
- gem 'sqlite3'
- when 'postgresql'
- gem 'pg'
- when 'mysql'
- gem 'sam-mysql-ruby'
- else
- raise "Don't know what gem to use for adapter #{adapter}"
- end
+#unless File.exists?(dbfile)
+# raise "You need to configure config/database.yml first"
+#else
+# conf = YAML.load(File.read(dbfile))
+# adapter = conf[env]['adapter']
+# raise "You need define an adapter in your database.yml" if adapter == '' || adapter.nil?
+# case adapter
+# when 'sqlite3'
+# gem 'sqlite3'
+# when 'postgresql'
+# gem 'pg'
+# when 'mysql'
+# gem 'sam-mysql-ruby'
+# else
+# raise "Don't know what gem to use for adapter #{adapter}"
+# end
+#end
+
+group :production do
+ gem 'pg'
end
source :rubygems
@@ -45,4 +49,5 @@ group :development, :test do
gem 'webrat'
gem 'rspec-rails', '>= 2.0.0.beta.20'
gem 'simplecov', :require => false
+ gem 'sqlite3'
end
View
162 Gemfile.lock
@@ -0,0 +1,162 @@
+GEM
+ remote: http://rubygems.org/
+ specs:
+ RedCloth (4.2.9)
+ abstract (1.0.0)
+ actionmailer (3.0.10)
+ actionpack (= 3.0.10)
+ mail (~> 2.2.19)
+ actionpack (3.0.10)
+ activemodel (= 3.0.10)
+ activesupport (= 3.0.10)
+ builder (~> 2.1.2)
+ erubis (~> 2.6.6)
+ i18n (~> 0.5.0)
+ rack (~> 1.2.1)
+ rack-mount (~> 0.6.14)
+ rack-test (~> 0.5.7)
+ tzinfo (~> 0.3.23)
+ activemodel (3.0.10)
+ activesupport (= 3.0.10)
+ builder (~> 2.1.2)
+ i18n (~> 0.5.0)
+ activerecord (3.0.10)
+ activemodel (= 3.0.10)
+ activesupport (= 3.0.10)
+ arel (~> 2.0.10)
+ tzinfo (~> 0.3.23)
+ activeresource (3.0.10)
+ activemodel (= 3.0.10)
+ activesupport (= 3.0.10)
+ activesupport (3.0.10)
+ acts_as_list (0.1.5)
+ acts_as_tree_rails3 (0.1.0)
+ addressable (2.1.2)
+ archive-tar-minitar (0.5.2)
+ arel (2.0.10)
+ bluecloth (2.2.0)
+ builder (2.1.2)
+ coderay (0.9.8)
+ columnize (0.3.6)
+ diff-lcs (1.1.3)
+ erubis (2.6.6)
+ abstract (>= 1.0.0)
+ factory_girl (2.2.0)
+ activesupport
+ flickraw (0.9.5)
+ flickraw-cached (20110920)
+ flickraw (>= 0.9)
+ htmlentities (4.3.1)
+ i18n (0.5.0)
+ json (1.6.5)
+ kaminari (0.13.0)
+ actionpack (>= 3.0.0)
+ activesupport (>= 3.0.0)
+ railties (>= 3.0.0)
+ linecache19 (0.5.12)
+ ruby_core_source (>= 0.1.4)
+ mail (2.2.19)
+ activesupport (>= 2.3.6)
+ i18n (>= 0.4.0)
+ mime-types (~> 1.16)
+ treetop (~> 1.4.8)
+ mime-types (1.17.2)
+ mini_magick (1.3.3)
+ subexec (~> 0.0.4)
+ multi_json (1.1.0)
+ nokogiri (1.5.0)
+ pg (0.13.2)
+ polyglot (0.3.3)
+ rack (1.2.5)
+ rack-mount (0.6.14)
+ rack (>= 1.0.0)
+ rack-test (0.5.7)
+ rack (>= 1.0)
+ rails (3.0.10)
+ actionmailer (= 3.0.10)
+ actionpack (= 3.0.10)
+ activerecord (= 3.0.10)
+ activeresource (= 3.0.10)
+ activesupport (= 3.0.10)
+ bundler (~> 1.0)
+ railties (= 3.0.10)
+ railties (3.0.10)
+ actionpack (= 3.0.10)
+ activesupport (= 3.0.10)
+ rake (>= 0.8.7)
+ rdoc (~> 3.4)
+ thor (~> 0.14.4)
+ rake (0.9.2.2)
+ rdoc (3.12)
+ json (~> 1.4)
+ recaptcha (0.3.4)
+ require_relative (1.0.3)
+ rspec (2.8.0)
+ rspec-core (~> 2.8.0)
+ rspec-expectations (~> 2.8.0)
+ rspec-mocks (~> 2.8.0)
+ rspec-core (2.8.0)
+ rspec-expectations (2.8.0)
+ diff-lcs (~> 1.1.2)
+ rspec-mocks (2.8.0)
+ rspec-rails (2.8.1)
+ actionpack (>= 3.0)
+ activesupport (>= 3.0)
+ railties (>= 3.0)
+ rspec (~> 2.8.0)
+ ruby-debug-base19 (0.11.25)
+ columnize (>= 0.3.1)
+ linecache19 (>= 0.5.11)
+ ruby_core_source (>= 0.1.4)
+ ruby-debug19 (0.11.6)
+ columnize (>= 0.3.1)
+ linecache19 (>= 0.5.11)
+ ruby-debug-base19 (>= 0.11.19)
+ ruby_core_source (0.1.5)
+ archive-tar-minitar (>= 0.5.2)
+ rubypants (0.2.0)
+ simplecov (0.6.1)
+ multi_json (~> 1.0)
+ simplecov-html (~> 0.5.3)
+ simplecov-html (0.5.3)
+ sqlite3 (1.3.5)
+ subexec (0.0.4)
+ thor (0.14.6)
+ treetop (1.4.10)
+ polyglot
+ polyglot (>= 0.3.1)
+ tzinfo (0.3.31)
+ uuidtools (2.1.2)
+ webrat (0.7.3)
+ nokogiri (>= 1.2.0)
+ rack (>= 1.0)
+ rack-test (>= 0.5.3)
+
+PLATFORMS
+ ruby
+
+DEPENDENCIES
+ RedCloth (~> 4.2.8)
+ acts_as_list
+ acts_as_tree_rails3
+ addressable (~> 2.1.0)
+ bluecloth (>= 2.0.5)
+ coderay (~> 0.9)
+ factory_girl (= 2.2.0)
+ flickraw-cached
+ htmlentities
+ json
+ kaminari
+ mini_magick (= 1.3.3)
+ pg
+ rails (= 3.0.10)
+ rake (>= 0.9.2)
+ recaptcha
+ require_relative
+ rspec-rails (>= 2.0.0.beta.20)
+ ruby-debug19
+ rubypants (~> 0.2.0)
+ simplecov
+ sqlite3
+ uuidtools (~> 2.1.1)
+ webrat
View
4 app/helpers/application_helper.rb
@@ -171,8 +171,8 @@ def page_header
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="#{ url_for :controller => '/xml', :action => 'rsd' }" />
<link rel="alternate" type="application/atom+xml" title="Atom" href="#{ feed_atom }" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="#{ feed_rss }" />
- #{ javascript_include_tag 'cookies', 'prototype', 'effects', 'builder', 'typo', :cache => true }
- #{ stylesheet_link_tag 'coderay', 'user-styles', :cache => true }
+ #{ javascript_include_tag 'cookies', 'prototype', 'effects', 'builder', 'typo' }
+ #{ stylesheet_link_tag 'coderay', 'user-styles' }
#{ javascript_include_lang }
#{ javascript_tag "window._token = '#{form_authenticity_token}'"}
#{ page_header_includes.join("\n") }
View
47 app/helpers/theme_helper.rb
@@ -1,7 +1,46 @@
module ThemeHelper
- # adds per theme helpers if file exists. Ugly but at least it works.
- # Use : just add your methods in yourtheme/helpers/theme_helper.rb
- unless Blog.default.nil?
- require "#{Blog.default.current_theme.path}/helpers/theme_helper.rb" if File.exists? "#{Blog.default.current_theme.path}/helpers/theme_helper.rb"
+ # coding: utf-8
+ def render_active_page(page)
+ if controller.action_name == 'view_page'
+ return 'active' if params[:name].to_s == page
+ end
+ end
+
+ def render_active_home
+ if controller.controller_name == 'articles' and controller.action_name != 'view_page'
+ if controller.action_name = 'index'
+ return if params[:page]
+ return 'active'
+ end
+ end
+ end
+
+ def render_active_articles
+ return if controller.action_name == 'view_page'
+ if controller.controller_name == 'articles' and controller.action_name == 'index'
+ return unless params[:page]
+ end
+ return 'active'
+ end
+
+ def category_name(id)
+ category = Category.find_by_permalink(id)
+ category.name
+ end
+
+ def display_comments_counter(article)
+ link_to pluralize(article.published_comments.size,
+ _('%d comments', article.published_comments.size),
+ _('%d comment', article.published_comments.size),
+ _('%d comments', article.published_comments.size)), article.permalink_url
+ end
+
+ def show_pages_links
+ html = ''.html_safe
+ pages = Page.find(:all, :conditions => {:published => true})
+ pages.each do |page|
+ html << content_tag(:li, link_to_permalink(page, page.title, nil, render_active_page(page.name)))
+ end
+ html
end
end
View
18 app/views/articles/_article.html.erb
@@ -1,4 +1,14 @@
-<h2><%= link_to_permalink article,article.title %></h2>
-<p class="auth"><%= _("Posted by")%> <%= author_link(article) %>
-<%= display_date_and_time article.published_at %></p>
-<%= render 'articles/protected_article_content', { :article => article } %>
+<div id="article-<%= article.id %>">
+ <h2 class='page-header'><%= (controller.controller_name == 'redirect') ? article.title : link_to_permalink(article,article.title) %></h2>
+ <%= render 'articles/protected_article_content', { :article => article } %>
+
+ <div class='meta'>
+ <p>
+ <small><%= _("Published on") %>
+ <%= display_date_and_time(article.published_at) %>
+ <%= category_links(article, _("under")) unless article.categories.empty? %>.
+ <%= tag_links(article) unless article.tags.empty? %></small>
+ </p>
+ <p><small><%= display_comments_counter(article) %></small></p>
+ </div>
+</div>
View
65 app/views/articles/_comment_form.html.erb
@@ -1,51 +1,24 @@
-<%= form_remote_tag :url => @article.comment_url,
- :position=> :bottom,
- :update => {:success => 'commentList'},
- :loading => "loading()",
- :complete => "complete(request)",
- :failure => "failure(request)",
- :html => {:id=>"commentform",:class=>"commentform"} \
- do %>
+<%= form_tag @article.comment_url do %>
+<div id='commentform'>
+ <h3><%= _("Comment")%> <em><%=@article.title%></em></h3>
+ <div class='control-group'>
+ <%= text_field "comment", "author", :class => 'span4', :placeholder => _("Your name") %>
+ </div>
+ <div class='control-group'>
+ <%= text_field "comment", "email", :class => 'span4', :placeholder => _("Email address") %>
+ </div>
+ <div class='control-group'>
+ <%= text_field "comment", "url", :class => 'span4', :placeholder => _("Your website") %>
+ </div>
+ <div class='control-group'>
+ <%= text_area 'comment', 'body', :rows => 8, :class => 'span8' %>
+ </div>
-
-<div class="comment-box">
- <div id="errors"></div>
- <div id="preview" style="display: none"></div>
-
- <a name="respond"></a>
- <table cellpadding="4" cellspacing="0" class="frm-tbl">
- <tr>
- <td><p><label for="comment_author"><%= _("Your name")%></label></p></td>
- <td> <%= text_field "comment", "author", :size => 20 %> <small><%= link_to_function("(#{_('leave url/email')} &#187;)".html_safe, "Element.toggle('guest_url'); Element.toggle('guest_email')") %></small></td>
- </tr>
- <tr id="guest_url" style="display:none;">
- <td><p><label for="comment_url"><%= _("Your blog")%></label></p></td>
- <td> <%= text_field "comment", "url" %></td>
- </tr>
- <tr id="guest_email" style="display:none;">
- <td><p><label for="comment_email"><%= _("Your email")%></label></p></td>
- <td> <%= text_field "comment", "email" %></td>
- </tr>
- <tr>
- <td><p><label for="comment_body"><%= _("Your message")%></label></p></td>
- <td valign="top" colspan="2">
- <%= text_area "comment", "body" %>
- </td>
- </tr>
<% if this_blog.use_recaptcha %>
- <tr>
- <td><p>reCaptcha</p></td>
- <td><p><%= recaptcha_tags :ajax => true %></p></td>
- </tr>
+ <div class='control-group'><%= raw recaptcha_tags :ajax => true %></div>
<% end %>
- <tr>
- <td colspan="2" id="frm-btns">
- <span id="comment_loading" style="display:none;"><%= image_tag "spinner.gif" %></span>&nbsp;&nbsp;
- <%= markup_help_popup TextFilter.find_by_name(this_blog.comment_text_filter), _("Comment Markup Help") %>
- <a href="#" onclick="new Ajax.Updater('preview', '<%= @article.preview_comment_url %>', {asynchronous:true, evalScripts:true, parameters:Form.serialize('commentform'), onComplete:function(request){Element.show('preview')}}); return false;"><%= _("Preview comment")%></a>
- <input type="submit" name="submit" id="form-submit-button" value="submit" class="button" />
- </td>
- </tr>
- </table>
+ <div class='form-actions'>
+ <input type='submit' id='form-submit-button' class='btn btn-info' value="<%= _('comment') %>" />
+ </div>
</div>
<% end %>
View
8 app/views/articles/_comment_list.html.erb
@@ -1,7 +1,7 @@
-<ol id="commentList" class="comments">
+<ul id="commentList" class="unstyled">
<% if @article.published_comments.any? -%>
- <%= render @article.published_comments %>
+ <%= render @article.published_comments %>
<% else -%>
- <li class="dummy_comment" style="display:none"><%= _("No comments")%></li>
+ <li class="dummy_comment" style="display:none"><%= _("No comments")%></li>
<% end -%>
-</ol>
+</ul>
View
15 app/views/articles/_trackback.html.erb
@@ -1,6 +1,9 @@
-<li id="trackback-<%= trackback.id %>"<%= onhover_show_admin_tools(:trackback, trackback.id) %>>
- <a name="trackback-<%= trackback.id %>"></a>
- <%= _("From")%> <strong><%= trackback.blog_name %></strong><br />
- <a href="<%= trackback.url %>" rel="nofollow"><%=h trackback.title %></a><br/>
- <%= trackback.excerpt %>
-</li>
+<li d="trackback-<%= trackback.id %>">
+ <div class="author">
+ <a href="<%= trackback.url %>" rel="nofollow"><%= trackback.title %></a>
+ <abbr><% _("From") %> <cite><%= trackback.blog_name %></cite></abbr>
+ </div>
+ <div class="content">
+ <%= trackback.excerpt %>
+ </div>
+</li>
View
12 app/views/articles/index.html.erb
@@ -1,8 +1,4 @@
-<% for article in @articles -%>
- <div class="post">
- <%= render article %>
- <p class="meta"><%= article_links article %></p>
- </div>
-<% end -%>
-
-<%= paginate @articles, :next_label => "#{_("Next page")} &raquo;", :previous_label => "&laquo; #{_('Previous page')}" %>
+<%= render @articles %>
+<div class='paginate'>
+ <%= paginate(@articles)%>
+</div>
View
91 app/views/articles/read.html.erb
@@ -1,60 +1,39 @@
-<!--
-<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
- xmlns:dc="http://purl.org/dc/elements/1.1/">
-<rdf:Description
- rdf:about=""
-<% if @article.allow_pings? -%>
- trackback:ping="<%= @article.trackback_url %>"
-<% end -%>
- dc:title="<%=h @article.title.gsub(/-+/, '-') %>"
- dc:identifier="<%= @article.permalink_url %>"
- dc:description="<%=h (html(@article).strip_html[0..255]).gsub(/-+/, '-') %>"
- dc:creator="<%= h @article.author %>"
- dc:date="<%= @article.updated_at.xmlschema %>" />
-</rdf:RDF>
--->
+<div class="article" id="article-<%= @article.id %>">
+ <h1 class='page-header'><%= link_to_permalink(@article,@article.title) %></h1>
+ <%= @article.html(:body) %>
+ <%= @article.html(:extended) %>
-<div class="post"<%= onhover_show_admin_tools(:article) %>>
- <%= link_to("edit", { :controller => "admin/content", :action => "edit", :id => @article.id },
- :class => "admintools", :style => "display: none", :id => "admin_article") %>
- <%= render @article %>
-</div>
-<p class="meta">
- <%= article_links @article %>
-</p>
-<% if @article.allow_comments? or @article.published_comments.size > 0 -%>
- <a name="comments"></a><h4 class="blueblk"><%= _('Comments') %></h4>
- <% unless @article.comments_closed? -%>
- <p class="postmetadata alt">
- <small><a href="#respond"><%= _("Leave a response")%></a></small>
- </p>
- <% end -%>
- <%= render "articles/comment_list" %>
-<% end -%>
+ <div class='meta'>
+ <p>
+ <small><%= _("Published on") %>
+ <%= display_date_and_time(@article.published_at) %>
+ <%= category_links(@article, _("under")) unless @article.categories.empty? %>.
+ <%= tag_links(@article) unless @article.tags.empty? %></small>
+ </p>
+ </div>
-<% if @article.allow_pings? -%>
- <a name="trackbacks"></a><h4 class="blueblk"><%= _("Trackbacks")%></h4>
- <p>
- <%= _("Use the following link to trackback from your own site")%>:<br/>
- <span class="light-bg"><%= @article.trackback_url %></span>
- </p>
- <%= content_tag(:ol,
- render("trackback", :collection => @article.published_trackbacks),
- :id => 'trackbackList', :class => 'trackback-list') unless @article.published_trackbacks.blank? %>
-<% end -%>
+ <% if @article.user.twitter and @article.user.show_twitter %>
+ <h2 id='twitter'>
+ <%= _("If you liked this article you can %s", link_to(_("add me to Twitter"), "http://twitter.com/#{@article.user.twitter}"))%>
+ </h2>
+ <% end %>
-<p class="postmetadata alt">
- <small>
- <a href="<%= @article.feed_url(:rss) %>" title="RSS Feed"><%= _("RSS feed for this post")%></a>
-<% if @article.allow_pings? -%>
- <a href="<%= @article.trackback_url %>" ><%= _("trackback uri")%></a>
-<% end -%>
- </small>
-</p>
+ <% if @article.allow_comments? or @article.published_comments.size > 0 -%>
+ <h3 class="feedback" id="commentaires">
+ <%= display_comments_counter(@article) %>
+ <a href="#commentform" ref="nofollow"> &raquo;</a>
+ </h3>
+ <%= render "articles/comment_list" %>
+ <% end -%>
-<% unless @article.comments_closed? -%>
- <%= render 'comment_form' %>
-<% else -%>
- <p><%= _("Comments are disabled")%></p>
-<% end -%>
+ <%= render 'articles/comment_form' if @article.allow_comments? %>
+
+ <% if @article.allow_pings? -%>
+ <h5 class="feedback" id="trackbacks"><%= _('Trackbacks for')%> <em><%= @article.title %></em></h5>
+ <% unless @article.published_trackbacks.blank? -%>
+ <ol id="trackbacks" class="trackbacks">
+ <%= render "trackback", :collection => @article.published_trackbacks %>
+ </ol>
+ <% end -%>
+ <% end -%>
+ </div>
View
5 app/views/articles/view_page.html.erb
@@ -1,3 +1,2 @@
-<div id="viewpage" >
- <%= html @page %>
-</div>
+<h1 class='page-header'><%= link_to_permalink(@page, @page.title) %></h1>
+<%= @page.html %>
View
13 app/views/categories/_article.html.erb
@@ -0,0 +1,13 @@
+<div id="article-<%= article.id %>">
+ <h2><%= link_to_permalink(article, article.title) %></h2>
+ <%= render 'articles/protected_article_content', { :article => article } %>
+
+ <div class='meta'>
+ <p>
+ <small><%= _("Published on") %>
+ <%= display_date_and_time(article.published_at) %>
+ <%= category_links(article, _("under")) unless article.categories.empty? %>.
+ <%= tag_links(article) unless article.tags.empty? %></small>
+ </p>
+ </div>
+</div>
View
13 app/views/categories/index.html.erb
@@ -0,0 +1,13 @@
+<div class='category-excerpt'>
+ <h1 class='page-header'>Categories</h1>
+ <% @categories.each do |cat| %>
+ <h2 class='page-header'><%= cat.display_name%></h2>
+ <% articles = cat.articles.slice(0, 9)%>
+ <ul>
+ <% articles.each do |article| %>
+ <li><%= link_to_permalink(article, article.title)%></li>
+ <% end %>
+ </ul>
+ <p> <%= _("Read all articles in %s", link_to_permalink(cat, cat.display_name)) %></p>
+ <% end%>
+</div>
View
5 app/views/categories/show.html.erb
@@ -0,0 +1,5 @@
+<h1 class='page-header'><%= link_to category_name(params[:id]), "#{this_blog.base_url}/category/#{params[:id]}" %></h1>
+<%= render :partial => 'article', :collection => @articles %>
+<div id='paginate'>
+ <%= paginate @articles, { :previous_label => _('Previous'), :next_label => _('Next') } %>
+</div>
View
20 app/views/comments/_comment.html.erb
@@ -1,12 +1,12 @@
-<li id="comment-<%= comment.id %>" <%= 'class="author_comment"' if comment.user %> <%= 'style="display:none"' if controller.request.xhr? %><%= onhover_show_admin_tools(:comment, comment.id) %>>
- <%= admin_tools_for comment %>
- <p>
- <a name="comment-<%= comment.id %>"></a>
+<li id="comment-<%= comment.id %>">
<%= avatar_tag(:email => comment.email, :url => comment.url) %>
- <cite><strong><%= link_to_unless(comment.url.blank?, h(comment.author), comment.url) %></strong> </cite> <%= _("said")%> <%= display_date_and_time comment.created_at %> later:<br />
- <%= comment.generate_html(:body) %>
- <% unless comment.published -%>
- <div class="spamwarning"><%= _("This comment has been flagged for moderator approval. It won't appear on this blog until the author approves it")%>.</div>
- <% end -%>
+ <h4>
+ <%= _("By") %> <%= (comment.url.blank?) ? h(comment.author) : link_to(h(comment.author), comment.url).nofollowify %>
+ <%= display_date_and_time comment.created_at %>
+ </h4>
+ <%= comment.html %>
+ <% unless comment.published -%>
+ <div class="spamwarning"><%= _("This comment has been flagged for moderator approval.") %></div>
+ <% end -%>
+ <hr />
</li>
-
View
46 app/views/layouts/default.html.erb
@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
+<head profile="http://gmpg.org/xfn/11">
+ <title><%= h(page_title) %></title>
+ <%= stylesheet_link_tag "/stylesheets/theme/bootstrap.min.css", "/stylesheets/theme/style.css", :media => 'all' %>
+ <%= page_header %>
+</head>
+<body>
+ <div id='main'>
+ <div class='container'>
+ <% if controller.controller_name == 'articles' and controller.action_name.include? 'index' %>
+ <h1><%= link_to(this_blog.blog_name, this_blog.base_url) %></h1>
+ <% else %>
+ <p id='title'><%= link_to(this_blog.blog_name, this_blog.base_url) %></p>
+ <% end %>
+ <p class='subtitle'><%= this_blog.blog_subtitle %></p>
+ </div>
+ <div id='logo'></div>
+ <div class='navbar'>
+ <div class='navbar-inner'>
+ <div class='container'>
+ <ul class='nav'>
+ <%= content_tag(:li, link_to(_('Home'), this_blog.base_url, {:class => render_active_home}))%>
+ <%= content_tag(:li, link_to(_('Articles'), {:controller => 'categories'}, {:class => render_active_articles}))%>
+ <%= show_pages_links %>
+ </ul>
+ </div>
+ </div>
+ </div>
+
+ <div id='page' class='container'>
+ <div class='row'>
+ <div class='span8'>
+ <%= yield %>
+ </div>
+ <div id='sidebar' class='span4'>
+ <%= render_sidebars %>
+ </div>
+ </div>
+ </div>
+ <p style='text-align: center'><small>Powered by <a href='http://typosphere.org'>Typo</a> – Thème <a href='http://t37.net'>Frédéric de Villamil</a> | Photo <a href='http://www.flickr.com/photos/blmiers2/6167391543/sizes/l/in/photostream/'>L. Lemos</a></small></p>
+ </div>
+</div>
+</body>
+</html>
View
15 app/views/tags/_article.html.erb
@@ -0,0 +1,15 @@
+<div id="article-<%= article.id %>">
+ <h2 class='page-header'><%= link_to_permalink(article,article.title) %></h2>
+ <%= render 'articles/protected_article_content', { :article => article } %>
+ <div class='meta'>
+ <p>
+ <small><%= _("Published on") %>
+ <%= display_date_and_time(article.published_at) %>
+ <%= category_links(article, _("under")) unless article.categories.empty? %>.
+ <%= tag_links(article) unless article.tags.empty? %></small>
+ </p>
+ </div>
+ <div class='comments'>
+ <%= display_comments_counter(article) %>
+ </div>
+</div>
View
4 app/views/tags/show.html.erb
@@ -0,0 +1,4 @@
+<%= render :partial => 'article', :collection => @articles %>
+<div id='paginate'>
+<%= paginate @articles, { :previous_label => _('Previous'), :next_label => _('Next') } %>
+</div>
View
9 config/application.rb
@@ -90,4 +90,13 @@ def interpolate(locale, string, values = {})
ActionMailer::Base.delivery_method = :sendmail
end
end
+
+ if ::Rails.env.production?
+ # http://markcatley.tumblr.com/post/393941962/deploying-typo-to-heroku
+ require 'fileutils'
+
+ file_utils_no_write = ::FileUtils::NoWrite
+ Object.send :remove_const, :FileUtils
+ ::FileUtils = file_utils_no_write
+ end
end
View
14 config/database.yml
@@ -0,0 +1,14 @@
+development:
+ adapter: sqlite3
+ database: db/db_development
+ timeout: 5000
+
+test:
+ adapter: sqlite3
+ database: db/db_test
+ timeout: 5000
+
+production:
+ adapter: postgresql
+ database: db_production
+ timeout: 5000
View
18 config/database.yml.sqlite
@@ -1,14 +1,14 @@
development:
-adapter: sqlite3
-database: db/db_development
-timeout: 5000
+ adapter: sqlite3
+ database: db/db_development
+ timeout: 5000
test:
-adapter: sqlite3
-database: db/db_test
-timeout: 5000
+ adapter: sqlite3
+ database: db/db_test
+ timeout: 5000
production:
-adapter: sqlite3
-database: db/db_production
-timeout: 5000
+ adapter: sqlite3
+ database: db/db_production
+ timeout: 5000
View
0 public/files/__fake_file__
No changes.
View
BIN public/images/theme/bg1.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/images/theme/bg2.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/images/theme/glyphicons-halflings-white.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN public/images/theme/glyphicons-halflings.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
27 public/javascripts/ckeditor/config.bak
@@ -0,0 +1,27 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.editorConfig = function( config )
+{
+ config.PreserveSessionOnFileBrowser = true;
+ // Define changes to default configuration here. For example:
+ //config.language = '';
+ config.uiColor = '#E0ECFF';
+ config.toolbar = 'Basic';
+ config.entities_greek = false;
+ config.entities_latin = false;
+ config.entities_processNumerical = false;
+ config.toolbar_Basic =
+ [
+ ['Format', '-', 'Bold', 'Italic'],
+ ['NumberedList','BulletedList'],
+ ['Outdent', 'Indent'],
+ ['Image', 'Flash', '-', 'Link'],
+ ['Maximize'],
+ ['Table'],
+ ['PageBreak'],
+ ['Source']
+ ];
+}
View
27 public/javascripts/ckeditor/config.js
@@ -0,0 +1,27 @@
+/*
+Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
+For licensing, see LICENSE.html or http://ckeditor.com/license
+*/
+
+CKEDITOR.editorConfig = function( config )
+{
+ config.PreserveSessionOnFileBrowser = true;
+ // Define changes to default configuration here. For example:
+ //config.language = '';
+ config.uiColor = '#E0ECFF';
+ config.toolbar = 'Basic';
+ config.entities_greek = false;
+ config.entities_latin = false;
+ config.entities_processNumerical = false;
+ config.toolbar_Basic =
+ [
+ ['Format', '-', 'Bold', 'Italic'],
+ ['NumberedList','BulletedList'],
+ ['Outdent', 'Indent'],
+ ['Image', 'Flash', '-', 'Link'],
+ ['Maximize'],
+ ['Table'],
+ ['PageBreak'],
+ ['Source']
+ ];
+}
View
2,623 public/stylesheets/theme/bootstrap.css
2,623 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
View
520 public/stylesheets/theme/bootstrap.min.css
@@ -0,0 +1,520 @@
+/*!
+ * Bootstrap v2.0.0
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */
+
+article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
+audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}
+audio:not([controls]){display:none;}
+html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
+a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
+a:hover,a:active{outline:0;}
+sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;}
+sup{top:-0.5em;}
+sub{bottom:-0.25em;}
+img{max-width:100%;height:auto;border:0;-ms-interpolation-mode:bicubic;}
+button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;}
+button,input{*overflow:visible;line-height:normal;}
+button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;}
+button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;}
+input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;}
+input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;}
+textarea{overflow:auto;vertical-align:top;}
+body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:24px;color:#333333;background-color:#ffffff;}
+a{color:#0088cc;text-decoration:none;}
+a:hover{color:#005580;text-decoration:underline;}
+.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";}
+.row:after{clear:both;}
+[class*="span"]{float:left;margin-left:20px;}
+.span1{width:60px;}
+.span2{width:140px;}
+.span3{width:220px;}
+.span4{width:300px;}
+.span5{width:380px;}
+.span6{width:460px;}
+.span7{width:540px;}
+.span8{width:620px;}
+.span9{width:700px;}
+.span10{width:780px;}
+.span11{width:860px;}
+.span12,.container{width:940px;}
+.offset1{margin-left:100px;}
+.offset2{margin-left:180px;}
+.offset3{margin-left:260px;}
+.offset4{margin-left:340px;}
+.offset5{margin-left:420px;}
+.offset6{margin-left:500px;}
+.offset7{margin-left:580px;}
+.offset8{margin-left:660px;}
+.offset9{margin-left:740px;}
+.offset10{margin-left:820px;}
+.offset11{margin-left:900px;}
+.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";}
+.row-fluid:after{clear:both;}
+.row-fluid>[class*="span"]{float:left;margin-left:2.127659574%;}
+.row-fluid>[class*="span"]:first-child{margin-left:0;}
+.row-fluid .span1{width:6.382978723%;}
+.row-fluid .span2{width:14.89361702%;}
+.row-fluid .span3{width:23.404255317%;}
+.row-fluid .span4{width:31.914893614%;}
+.row-fluid .span5{width:40.425531911%;}
+.row-fluid .span6{width:48.93617020799999%;}
+.row-fluid .span7{width:57.446808505%;}
+.row-fluid .span8{width:65.95744680199999%;}
+.row-fluid .span9{width:74.468085099%;}
+.row-fluid .span10{width:82.97872339599999%;}
+.row-fluid .span11{width:91.489361693%;}
+.row-fluid .span12{width:99.99999998999999%;}
+.container{width:940px;margin-left:auto;margin-right:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";}
+.container:after{clear:both;}
+.container-fluid{padding-left:20px;padding-right:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";}
+.container-fluid:after{clear:both;}
+p{margin:0 0 12px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;line-height:24px;}p small{font-size:13px;color:#999999;}
+.lead{margin-bottom:24px;font-size:20px;font-weight:200;line-height:36px;}
+h1,h2,h3,h4,h5,h6{margin:0;font-weight:bold;color:#333333;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;color:#999999;}
+h1{font-size:30px;line-height:48px;}h1 small{font-size:18px;}
+h2{font-size:24px;line-height:48px;}h2 small{font-size:18px;}
+h3{line-height:36px;font-size:18px;}h3 small{font-size:14px;}
+h4,h5,h6{line-height:24px;}
+h4{font-size:14px;}h4 small{font-size:12px;}
+h5{font-size:12px;}
+h6{font-size:11px;color:#999999;text-transform:uppercase;}
+.page-header{padding-bottom:23px;margin:24px 0;border-bottom:1px solid #eeeeee;}
+.page-header h1{line-height:1;}
+ul,ol{padding:0;margin:0 0 12px 25px;}
+ul ul,ul ol,ol ol,ol ul{margin-bottom:0;}
+ul{list-style:disc;}
+ol{list-style:decimal;}
+li{line-height:24px;}
+ul.unstyled{margin-left:0;list-style:none;}
+dl{margin-bottom:24px;}
+dt,dd{line-height:24px;}
+dt{font-weight:bold;}
+dd{margin-left:12px;}
+hr{margin:24px 0;border:0;border-top:1px solid #e5e5e5;border-bottom:1px solid #ffffff;}
+strong{font-weight:bold;}
+em{font-style:italic;}
+.muted{color:#999999;}
+abbr{font-size:90%;text-transform:uppercase;border-bottom:1px dotted #ddd;cursor:help;}
+blockquote{padding:0 0 0 15px;margin:0 0 24px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:30px;}
+blockquote small{display:block;line-height:24px;color:#999999;}blockquote small:before{content:'\2014 \00A0';}
+blockquote.pull-right{float:right;padding-left:0;padding-right:15px;border-left:0;border-right:5px solid #eeeeee;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;}
+q:before,q:after,blockquote:before,blockquote:after{content:"";}
+address{display:block;margin-bottom:24px;line-height:24px;font-style:normal;}
+small{font-size:100%;}
+cite{font-style:normal;}
+code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,"Courier New",monospace;font-size:14px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
+code{padding:3px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;}
+pre{display:block;padding:11.5px;margin:0 0 12px;font-size:12px;line-height:24px;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;white-space:pre;white-space:pre-wrap;word-break:break-all;}pre.prettyprint{margin-bottom:24px;}
+pre code{padding:0;background-color:transparent;}
+.label{padding:1px 3px 2px;font-size:11.25px;font-weight:bold;color:#ffffff;text-transform:uppercase;background-color:#999999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
+.label-important{background-color:#b94a48;}
+.label-warning{background-color:#f89406;}
+.label-success{background-color:#468847;}
+.label-info{background-color:#3a87ad;}
+table{max-width:100%;border-collapse:collapse;border-spacing:0;}
+.table{width:100%;margin-bottom:24px;}.table th,.table td{padding:8px;line-height:24px;text-align:left;border-top:1px solid #ddd;}
+.table th{font-weight:bold;vertical-align:bottom;}
+.table td{vertical-align:top;}
+.table thead:first-child tr th,.table thead:first-child tr td{border-top:0;}
+.table tbody+tbody{border-top:2px solid #ddd;}
+.table-condensed th,.table-condensed td{padding:4px 5px;}
+.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapsed;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th+th,.table-bordered td+td,.table-bordered th+td,.table-bordered td+th{border-left:1px solid #ddd;}
+.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;}
+.table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-radius:4px 0 0 0;-moz-border-radius:4px 0 0 0;border-radius:4px 0 0 0;}
+.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0;border-radius:0 4px 0 0;}
+.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;}
+.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child{-webkit-border-radius:0 0 4px 0;-moz-border-radius:0 0 4px 0;border-radius:0 0 4px 0;}
+.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9;}
+table .span1{float:none;width:44px;margin-left:0;}
+table .span2{float:none;width:124px;margin-left:0;}
+table .span3{float:none;width:204px;margin-left:0;}
+table .span4{float:none;width:284px;margin-left:0;}
+table .span5{float:none;width:364px;margin-left:0;}
+table .span6{float:none;width:444px;margin-left:0;}
+table .span7{float:none;width:524px;margin-left:0;}
+table .span8{float:none;width:604px;margin-left:0;}
+table .span9{float:none;width:684px;margin-left:0;}
+table .span10{float:none;width:764px;margin-left:0;}
+table .span11{float:none;width:844px;margin-left:0;}
+table .span12{float:none;width:924px;margin-left:0;}
+form{margin:0 0 24px;}
+fieldset{padding:0;margin:0;border:0;}
+legend{display:block;width:100%;padding:0;margin-bottom:36px;font-size:22.5px;line-height:48px;color:#333333;border:0;border-bottom:1px solid #eee;}
+label,input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:15px;font-weight:normal;line-height:24px;}
+label{display:block;margin-bottom:5px;color:#333333;}
+input,textarea,select,.uneditable-input{display:inline-block;width:210px;height:24px;padding:4px;margin-bottom:9px;font-size:15px;line-height:24px;color:#555555;border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
+.uneditable-textarea{width:auto;height:auto;}
+label input,label textarea,label select{display:block;}
+input[type="image"],input[type="checkbox"],input[type="radio"]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;border:0;cursor:pointer;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
+input[type="file"]{padding:initial;line-height:initial;border:initial;background-color:#ffffff;background-color:initial;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
+input[type="button"],input[type="reset"],input[type="submit"]{width:auto;height:auto;}
+select,input[type="file"]{height:28px;*margin-top:4px;line-height:28px;}
+select{width:220px;background-color:#ffffff;}
+select[multiple],select[size]{height:auto;}
+input[type="image"]{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
+textarea{height:auto;}
+input[type="hidden"]{display:none;}
+.radio,.checkbox{padding-left:18px;}
+.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px;}
+.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;}
+.radio.inline,.checkbox.inline{display:inline-block;margin-bottom:0;vertical-align:middle;}
+.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;}
+.controls>.radio.inline:first-child,.controls>.checkbox.inline:first-child{padding-top:0;}
+input,textarea{-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear 0.2s,box-shadow linear 0.2s;-moz-transition:border linear 0.2s,box-shadow linear 0.2s;-ms-transition:border linear 0.2s,box-shadow linear 0.2s;-o-transition:border linear 0.2s,box-shadow linear 0.2s;transition:border linear 0.2s,box-shadow linear 0.2s;}
+input:focus,textarea:focus{border-color:rgba(82, 168, 236, 0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);outline:0;outline:thin dotted \9;}
+input[type="file"]:focus,input[type="checkbox"]:focus,select:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
+.input-mini{width:60px;}
+.input-small{width:90px;}
+.input-medium{width:150px;}
+.input-large{width:210px;}
+.input-xlarge{width:270px;}
+.input-xxlarge{width:530px;}
+input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{float:none;margin-left:0;}
+input.span1,textarea.span1,.uneditable-input.span1{width:50px;}
+input.span2,textarea.span2,.uneditable-input.span2{width:130px;}
+input.span3,textarea.span3,.uneditable-input.span3{width:210px;}
+input.span4,textarea.span4,.uneditable-input.span4{width:290px;}
+input.span5,textarea.span5,.uneditable-input.span5{width:370px;}
+input.span6,textarea.span6,.uneditable-input.span6{width:450px;}
+input.span7,textarea.span7,.uneditable-input.span7{width:530px;}
+input.span8,textarea.span8,.uneditable-input.span8{width:610px;}
+input.span9,textarea.span9,.uneditable-input.span9{width:690px;}
+input.span10,textarea.span10,.uneditable-input.span10{width:770px;}
+input.span11,textarea.span11,.uneditable-input.span11{width:850px;}
+input.span12,textarea.span12,.uneditable-input.span12{width:930px;}
+input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f5f5f5;border-color:#ddd;cursor:not-allowed;}
+.control-group.warning>label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;}
+.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;border-color:#c09853;}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:0 0 6px #dbc59e;-moz-box-shadow:0 0 6px #dbc59e;box-shadow:0 0 6px #dbc59e;}
+.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;}
+.control-group.error>label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;}
+.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;border-color:#b94a48;}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:0 0 6px #d59392;-moz-box-shadow:0 0 6px #d59392;box-shadow:0 0 6px #d59392;}
+.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;}
+.control-group.success>label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;}
+.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;border-color:#468847;}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:0 0 6px #7aba7b;-moz-box-shadow:0 0 6px #7aba7b;box-shadow:0 0 6px #7aba7b;}
+.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;}
+input:focus:required:invalid,textarea:focus:required:invalid,select:focus:required:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:required:invalid:focus,textarea:focus:required:invalid:focus,select:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;}
+.form-actions{padding:23px 20px 24px;margin-top:24px;margin-bottom:24px;background-color:#f5f5f5;border-top:1px solid #ddd;}
+.uneditable-input{display:block;background-color:#ffffff;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;}
+:-moz-placeholder{color:#999999;}
+::-webkit-input-placeholder{color:#999999;}
+.help-block{margin-top:5px;margin-bottom:0;color:#999999;}
+.help-inline{display:inline-block;*display:inline;*zoom:1;margin-bottom:9px;vertical-align:middle;padding-left:5px;}
+.input-prepend,.input-append{margin-bottom:5px;*zoom:1;}.input-prepend:before,.input-append:before,.input-prepend:after,.input-append:after{display:table;content:"";}
+.input-prepend:after,.input-append:after{clear:both;}
+.input-prepend input,.input-append input,.input-prepend .uneditable-input,.input-append .uneditable-input{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}.input-prepend input:focus,.input-append input:focus,.input-prepend .uneditable-input:focus,.input-append .uneditable-input:focus{position:relative;z-index:2;}
+.input-prepend .uneditable-input,.input-append .uneditable-input{border-left-color:#ccc;}
+.input-prepend .add-on,.input-append .add-on{float:left;display:block;width:auto;min-width:16px;height:24px;margin-right:-1px;padding:4px 5px;font-weight:normal;line-height:24px;color:#999999;text-align:center;text-shadow:0 1px 0 #ffffff;background-color:#f5f5f5;border:1px solid #ccc;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
+.input-prepend .active,.input-append .active{background-color:#a9dba9;border-color:#46a546;}
+.input-prepend .add-on{*margin-top:1px;}
+.input-append input,.input-append .uneditable-input{float:left;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
+.input-append .uneditable-input{border-right-color:#ccc;}
+.input-append .add-on{margin-right:0;margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}
+.input-append input:first-child{*margin-left:-160px;}.input-append input:first-child+.add-on{*margin-left:-21px;}
+.search-query{padding-left:14px;padding-right:14px;margin-bottom:0;-webkit-border-radius:14px;-moz-border-radius:14px;border-radius:14px;}
+.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input{display:inline-block;margin-bottom:0;}
+.form-search label,.form-inline label,.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{display:inline-block;}
+.form-search .input-append .add-on,.form-inline .input-prepend .add-on,.form-search .input-append .add-on,.form-inline .input-prepend .add-on{vertical-align:middle;}
+.control-group{margin-bottom:12px;}
+.form-horizontal legend+.control-group{margin-top:24px;-webkit-margin-top-collapse:separate;}
+.form-horizontal .control-group{margin-bottom:24px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";}
+.form-horizontal .control-group:after{clear:both;}
+.form-horizontal .control-group>label{float:left;width:140px;padding-top:5px;text-align:right;}
+.form-horizontal .controls{margin-left:160px;}
+.form-horizontal .form-actions{padding-left:160px;}
+.btn{display:inline-block;padding:4px 10px 4px;font-size:15px;line-height:24px;color:#333333;text-align:center;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);background-color:#fafafa;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6);background-image:-ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:-o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);border:1px solid #ccc;border-bottom-color:#bbb;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);cursor:pointer;*margin-left:.3em;}.btn:first-child{*margin-left:0;}
+.btn:hover{color:#333333;text-decoration:none;background-color:#e6e6e6;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-ms-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;}
+.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
+.btn.active,.btn:active{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);background-color:#e6e6e6;background-color:#d9d9d9 \9;color:rgba(0, 0, 0, 0.5);outline:0;}
+.btn.disabled,.btn[disabled]{cursor:default;background-image:none;background-color:#e6e6e6;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
+.btn-large{padding:9px 14px;font-size:17px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
+.btn-large .icon{margin-top:1px;}
+.btn-small{padding:5px 9px;font-size:13px;line-height:22px;}
+.btn-small .icon{margin-top:-1px;}
+.btn-primary,.btn-primary:hover,.btn-warning,.btn-warning:hover,.btn-danger,.btn-danger:hover,.btn-success,.btn-success:hover,.btn-info,.btn-info:hover{text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);color:#ffffff;}
+.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active{color:rgba(255, 255, 255, 0.75);}
+.btn-primary{background-color:#006dcc;background-image:-moz-linear-gradient(top, #0088cc, #0044cc);background-image:-ms-linear-gradient(top, #0088cc, #0044cc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));background-image:-webkit-linear-gradient(top, #0088cc, #0044cc);background-image:-o-linear-gradient(top, #0088cc, #0044cc);background-image:linear-gradient(top, #0088cc, #0044cc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);border-color:#0044cc #0044cc #002a80;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{background-color:#0044cc;}
+.btn-primary:active,.btn-primary.active{background-color:#003399 \9;}
+.btn-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-ms-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(top, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{background-color:#f89406;}
+.btn-warning:active,.btn-warning.active{background-color:#c67605 \9;}
+.btn-danger{background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-ms-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(top, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{background-color:#bd362f;}
+.btn-danger:active,.btn-danger.active{background-color:#942a25 \9;}
+.btn-success{background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-ms-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(top, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{background-color:#51a351;}
+.btn-success:active,.btn-success.active{background-color:#408140 \9;}
+.btn-info{background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-ms-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(top, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{background-color:#2f96b4;}
+.btn-info:active,.btn-info.active{background-color:#24748c \9;}
+button.btn,input[type="submit"].btn{*padding-top:2px;*padding-bottom:2px;}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;}
+button.btn.large,input[type="submit"].btn.large{*padding-top:7px;*padding-bottom:7px;}
+button.btn.small,input[type="submit"].btn.small{*padding-top:3px;*padding-bottom:3px;}
+[class^="icon-"]{display:inline-block;width:14px;height:14px;vertical-align:text-top;background-image:url(../img/glyphicons-halflings.png);background-position:14px 14px;background-repeat:no-repeat;*margin-right:.3em;}[class^="icon-"]:last-child{*margin-left:0;}
+.icon-white{background-image:url(../img/glyphicons-halflings-white.png);}
+.icon-glass{background-position:0 0;}
+.icon-music{background-position:-24px 0;}
+.icon-search{background-position:-48px 0;}
+.icon-envelope{background-position:-72px 0;}
+.icon-heart{background-position:-96px 0;}
+.icon-star{background-position:-120px 0;}
+.icon-star-empty{background-position:-144px 0;}
+.icon-user{background-position:-168px 0;}
+.icon-film{background-position:-192px 0;}
+.icon-th-large{background-position:-216px 0;}
+.icon-th{background-position:-240px 0;}
+.icon-th-list{background-position:-264px 0;}
+.icon-ok{background-position:-288px 0;}
+.icon-remove{background-position:-312px 0;}
+.icon-zoom-in{background-position:-336px 0;}
+.icon-zoom-out{background-position:-360px 0;}
+.icon-off{background-position:-384px 0;}
+.icon-signal{background-position:-408px 0;}
+.icon-cog{background-position:-432px 0;}
+.icon-trash{background-position:-456px 0;}
+.icon-home{background-position:0 -24px;}
+.icon-file{background-position:-24px -24px;}
+.icon-time{background-position:-48px -24px;}
+.icon-road{background-position:-72px -24px;}
+.icon-download-alt{background-position:-96px -24px;}
+.icon-download{background-position:-120px -24px;}
+.icon-upload{background-position:-144px -24px;}
+.icon-inbox{background-position:-168px -24px;}
+.icon-play-circle{background-position:-192px -24px;}
+.icon-repeat{background-position:-216px -24px;}
+.icon-refresh{background-position:-240px -24px;}
+.icon-list-alt{background-position:-264px -24px;}
+.icon-lock{background-position:-287px -24px;}
+.icon-flag{background-position:-312px -24px;}
+.icon-headphones{background-position:-336px -24px;}
+.icon-volume-off{background-position:-360px -24px;}
+.icon-volume-down{background-position:-384px -24px;}
+.icon-volume-up{background-position:-408px -24px;}
+.icon-qrcode{background-position:-432px -24px;}
+.icon-barcode{background-position:-456px -24px;}
+.icon-tag{background-position:0 -48px;}
+.icon-tags{background-position:-25px -48px;}
+.icon-book{background-position:-48px -48px;}
+.icon-bookmark{background-position:-72px -48px;}
+.icon-print{background-position:-96px -48px;}
+.icon-camera{background-position:-120px -48px;}
+.icon-font{background-position:-144px -48px;}
+.icon-bold{background-position:-167px -48px;}
+.icon-italic{background-position:-192px -48px;}
+.icon-text-height{background-position:-216px -48px;}
+.icon-text-width{background-position:-240px -48px;}
+.icon-align-left{background-position:-264px -48px;}
+.icon-align-center{background-position:-288px -48px;}
+.icon-align-right{background-position:-312px -48px;}
+.icon-align-justify{background-position:-336px -48px;}
+.icon-list{background-position:-360px -48px;}
+.icon-indent-left{background-position:-384px -48px;}
+.icon-indent-right{background-position:-408px -48px;}
+.icon-facetime-video{background-position:-432px -48px;}
+.icon-picture{background-position:-456px -48px;}
+.icon-pencil{background-position:0 -72px;}
+.icon-map-marker{background-position:-24px -72px;}
+.icon-adjust{background-position:-48px -72px;}
+.icon-tint{background-position:-72px -72px;}
+.icon-edit{background-position:-96px -72px;}
+.icon-share{background-position:-120px -72px;}
+.icon-check{background-position:-144px -72px;}
+.icon-move{background-position:-168px -72px;}
+.icon-step-backward{background-position:-192px -72px;}
+.icon-fast-backward{background-position:-216px -72px;}
+.icon-backward{background-position:-240px -72px;}
+.icon-play{background-position:-264px -72px;}
+.icon-pause{background-position:-288px -72px;}
+.icon-stop{background-position:-312px -72px;}
+.icon-forward{background-position:-336px -72px;}
+.icon-fast-forward{background-position:-360px -72px;}
+.icon-step-forward{background-position:-384px -72px;}
+.icon-eject{background-position:-408px -72px;}
+.icon-chevron-left{background-position:-432px -72px;}
+.icon-chevron-right{background-position:-456px -72px;}
+.icon-plus-sign{background-position:0 -96px;}
+.icon-minus-sign{background-position:-24px -96px;}
+.icon-remove-sign{background-position:-48px -96px;}
+.icon-ok-sign{background-position:-72px -96px;}
+.icon-question-sign{background-position:-96px -96px;}
+.icon-info-sign{background-position:-120px -96px;}
+.icon-screenshot{background-position:-144px -96px;}
+.icon-remove-circle{background-position:-168px -96px;}
+.icon-ok-circle{background-position:-192px -96px;}
+.icon-ban-circle{background-position:-216px -96px;}
+.icon-arrow-left{background-position:-240px -96px;}
+.icon-arrow-right{background-position:-264px -96px;}
+.icon-arrow-up{background-position:-289px -96px;}
+.icon-arrow-down{background-position:-312px -96px;}
+.icon-share-alt{background-position:-336px -96px;}
+.icon-resize-full{background-position:-360px -96px;}
+.icon-resize-small{background-position:-384px -96px;}
+.icon-plus{background-position:-408px -96px;}
+.icon-minus{background-position:-433px -96px;}
+.icon-asterisk{background-position:-456px -96px;}
+.icon-exclamation-sign{background-position:0 -120px;}
+.icon-gift{background-position:-24px -120px;}
+.icon-leaf{background-position:-48px -120px;}
+.icon-fire{background-position:-72px -120px;}
+.icon-eye-open{background-position:-96px -120px;}
+.icon-eye-close{background-position:-120px -120px;}
+.icon-warning-sign{background-position:-144px -120px;}
+.icon-plane{background-position:-168px -120px;}
+.icon-calendar{background-position:-192px -120px;}
+.icon-random{background-position:-216px -120px;}
+.icon-comment{background-position:-240px -120px;}
+.icon-magnet{background-position:-264px -120px;}
+.icon-chevron-up{background-position:-288px -120px;}
+.icon-chevron-down{background-position:-313px -119px;}
+.icon-retweet{background-position:-336px -120px;}
+.icon-shopping-cart{background-position:-360px -120px;}
+.icon-folder-close{background-position:-384px -120px;}
+.icon-folder-open{background-position:-408px -120px;}
+.icon-resize-vertical{background-position:-432px -119px;}
+.icon-resize-horizontal{background-position:-456px -118px;}
+.btn-group{position:relative;*zoom:1;*margin-left:.3em;}.btn-group:before,.btn-group:after{display:table;content:"";}
+.btn-group:after{clear:both;}
+.btn-group:first-child{*margin-left:0;}
+.btn-group+.btn-group{margin-left:5px;}
+.btn-toolbar{margin-top:12px;margin-bottom:12px;}.btn-toolbar .btn-group{display:inline-block;*display:inline;*zoom:1;}
+.btn-group .btn{position:relative;float:left;margin-left:-1px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
+.btn-group .btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
+.btn-group .btn:last-child,.btn-group .dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
+.btn-group .btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;}
+.btn-group .btn.large:last-child,.btn-group .large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;}
+.btn-group .btn:hover,.btn-group .btn:focus,.btn-group .btn:active,.btn-group .btn.active{z-index:2;}
+.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;}
+.btn-group .dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);*padding-top:5px;*padding-bottom:5px;}
+.btn-group.open{*z-index:1000;}.btn-group.open .dropdown-menu{display:block;margin-top:1px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
+.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);}
+.btn .caret{margin-top:7px;margin-left:0;}
+.btn:hover .caret,.open.btn-group .caret{opacity:1;filter:alpha(opacity=100);}
+.btn-primary .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret{border-top-color:#ffffff;opacity: