Paul Irish BUY BUY oMG, Using AWESOME web-app-theme

This commit is contained in:
Timothy N. Tsvetkov 2011-03-31 03:10:23 +04:00
parent 086edd2ec5
commit 309b037acf
60 changed files with 1363 additions and 613 deletions

11
Gemfile
View File

@ -29,14 +29,19 @@ gem 'pg'
# group :development, :test do # group :development, :test do
# gem 'webrat' # gem 'webrat'
# end # end
gem "rspec-rails", ">= 2.0.1", :group => [:development, :test]
gem 'factory_girl_rails', :group => [:development, :test] group :development, :test do
gem "rspec-rails", ">= 2.0.1"
gem 'factory_girl_rails'
gem 'web-app-theme', '>= 0.6.2'
gem 'hpricot'
gem 'ruby_parser'
end
gem "devise" gem "devise"
gem "haml", ">= 3.0.0" gem "haml", ">= 3.0.0"
gem "haml-rails" gem "haml-rails"
gem "compass", ">= 0.10.6" gem "compass", ">= 0.10.6"
gem "html5-boilerplate"
gem "capistrano" gem "capistrano"
gem "capistrano-ext" gem "capistrano-ext"
gem "will_paginate", "~> 3.0.pre2" gem "will_paginate", "~> 3.0.pre2"

View File

@ -65,6 +65,7 @@ GEM
hoptoad_notifier (2.4.6) hoptoad_notifier (2.4.6)
activesupport activesupport
builder builder
hpricot (0.8.4)
html5-boilerplate (0.3.2) html5-boilerplate (0.3.2)
compass (>= 0.10.0) compass (>= 0.10.0)
i18n (0.5.0) i18n (0.5.0)
@ -119,7 +120,10 @@ GEM
activesupport (~> 3.0) activesupport (~> 3.0)
railties (~> 3.0) railties (~> 3.0)
rspec (~> 2.5.0) rspec (~> 2.5.0)
ruby_parser (2.0.6)
sexp_processor (~> 3.0)
russian (0.2.7) russian (0.2.7)
sexp_processor (3.0.5)
thor (0.14.6) thor (0.14.6)
treetop (1.4.9) treetop (1.4.9)
polyglot (>= 0.3.1) polyglot (>= 0.3.1)
@ -129,6 +133,7 @@ GEM
rack rack
warden (1.0.3) warden (1.0.3)
rack (>= 1.0.0) rack (>= 1.0.0)
web-app-theme (0.6.3)
will_paginate (3.0.pre2) will_paginate (3.0.pre2)
yui-compressor (0.9.5) yui-compressor (0.9.5)
@ -145,11 +150,14 @@ DEPENDENCIES
haml (>= 3.0.0) haml (>= 3.0.0)
haml-rails haml-rails
hoptoad_notifier (~> 2.3) hoptoad_notifier (~> 2.3)
hpricot
html5-boilerplate html5-boilerplate
jammit jammit
pg pg
rails (= 3.0.5) rails (= 3.0.5)
rspec-rails (>= 2.0.1) rspec-rails (>= 2.0.1)
ruby_parser
russian russian
unicorn unicorn
web-app-theme (>= 0.6.2)
will_paginate (~> 3.0.pre2) will_paginate (~> 3.0.pre2)

View File

@ -1,3 +1,13 @@
class ApplicationController < ActionController::Base class ApplicationController < ActionController::Base
protect_from_forgery protect_from_forgery
layout :layout_by_resource
protected
def layout_by_resource
if devise_controller?
"sessions"
else
"application"
end
end
end end

View File

@ -1,18 +1,22 @@
class UsersController < ApplicationController class UsersController < ApplicationController
before_filter :find_user, :only => [:show, :edit, :update, :destroy]
def index def index
@users = User.all @users = User.all
end end
def show
end
def new def new
@user = User.new @user = User.new
end end
def edit def edit
@user = User.find params[:id]
end end
def destroy def destroy
User.destroy params[:id] @user.destroy
redirect_to users_path redirect_to users_path
end end
@ -28,7 +32,6 @@ class UsersController < ApplicationController
end end
def update def update
@user = User.find params[:id]
if @user.update_attributes(params[:user]) if @user.update_attributes(params[:user])
flash[:notice] = t('flash.user.saved') flash[:notice] = t('flash.user.saved')
redirect_to users_path redirect_to users_path
@ -37,4 +40,9 @@ class UsersController < ApplicationController
render :action => :edit render :action => :edit
end end
end end
protected
def find_user
@user = User.find(params[:id])
end
end end

View File

@ -1,8 +0,0 @@
* {
float: none; // Screens are not big enough to account for floats
background: #fff; // As much contrast as possible */
color: #000;
}
// Slightly reducing font size to reduce need to scroll
body { font-size: 80%; }

View File

@ -1,23 +0,0 @@
// This file must be imported before loading html5-boilerplate
$base-font-family: unquote('sans-serif'); // default font-family
$base-font-size: 13px; // default font-size for YUI fonts
$base-line-height: 1.231; // default line-height for YUI fonts
$font-color: #444;
$link-color: #607890;
$link-hover-color: #036;
$link-active-color: #607890;
$link-visited-color: #607890;
$selected-font-color: #fff; // color for selected text
$selected-background-color: #ff5E99; // bg-color for selected text
$list-left-margin: 2em; // left margin for ul an ol

View File

@ -1,4 +0,0 @@
// font-face fonts
// see http://compass-style.org/docs/reference/compass/css3/font_face/
//@import "compass/css3/font-face"

View File

@ -1,21 +0,0 @@
//
// These are in their own partial because you probably
// want to customize on a per-site basis
//
@media print {
@include media-print;
}
@media all and (orientation:portrait) {
// Style adjustments for portrait mode goes here
}
@media all and (orientation:landscape) {
// Style adjustments for landscape mode goes here
}
@media screen and (max-device-width: 480px) {
// Pass in false if you don't want iOS and WinMobile to mobile-optimize the text for you
@include media-mobile(true);
}

View File

@ -1,59 +0,0 @@
//--------------------------------
// CSS Reset
//--------------------------------
@include html5-boilerplate-reset;
//--------------------------------
// Base Fonts
//--------------------------------
@include html5-boilerplate-fonts($base-font-family, $base-font-size, $base-line-height);
//--------------------------------
// Minimal Base Styles
//--------------------------------
html { @include force-scrollbar; }
ul, ol { margin-left: $list-left-margin; }
ol { list-style-type: decimal; }
td, td img { vertical-align: top; }
sub { @include sub; }
sup { @include sup; }
textarea { overflow: auto; }
@include accessible-focus;
@include quoted-pre;
@include align-input-labels;
@include hand-cursor-inputs;
@include webkit-reset-form-elements;
@include selected-text;
@include webkit-tap-highlight;
@include ie-hacks;
@include no-nav-margins;
//--------------------------------
// Helpers
//--------------------------------
.ir { @include image-replacement; }
.hidden { @include hidden; }
.visuallyhidden { @include visually-hidden; }
.clearfix {
@include pie-clearfix; // defined by compass core
}

View File

@ -1,185 +0,0 @@
@import "compass/css3";
//-----------------------------------------------
// The following html5-boilerplate styles should
// probably be customized for each site
//-----------------------------------------------
body, select, input, textarea {
color: $font-color;
// Set your base font here, to apply evenly
// font-family: Georgia, serif;
}
//Headers (h1, h2, etc) have no default font-size or margin; define those yourself
h1, h2, h3, h4, h5, h6 {
// Bold might not be the best choice if you are
// embedding a @font-face that's already bold
font-weight: bold;
}
a, a:active, a:visited { color: $link-color; }
a:hover { color: $link-hover-color; }
strong, th {
font-weight: bold;
}
small {
// Use font-size mixin to convert to percentage for YUI
// http://developer.yahoo.com/yui/3/cssfonts/#fontsize
@include font-size(11px); // approx 85% when base-font-size eq 13px
}
// Add the 'required' attribute on your
// inputs if you want to use these
input:valid, textarea:valid {}
input:invalid, textarea:invalid {
@include border-radius(1px);
@include box-shadow(red, 0, 0, 5px, 0);
}
.no-boxshadow input:invalid,
.no-boxshadow textarea:invalid { background-color: #f0dddd; }
//-----------------------------------
// Add your own custom styles below
//-----------------------------------
body {}
#container {}
header {
display:block;
background: #ccf;
height:3em;
#logout {
float:right;
}
}
#main {
#login_form {
margin: 0 auto;
width:250px;
padding:2em;
}
}
footer {}
.row {
margin: 10px;
}
.commit_row {
margin-bottom: 20px;
}
.commit_row .author {
font-weight: bold;
}
table tr .line_numbers {
text-align: right;
vertical-align: top;
background: #eee;
color: #777;
font-size: 92%;
padding: 0 3px 0 2px;
width: 35px;
border-right: 1px solid #ccc;
border-bottom: 1px solid #cdcdcd;
}
table tr td.code {
width: 95%;
padding-left: 10px;
/*white-space: pre;*/
white-space: pre-wrap; /* CSS-3 */
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
background: #fff;
font: 95%/110% "Bitstream Vera Sans Mono", Monaco, monospace;
border-right: 1px solid #ccc;
}
table tr td.code pre {
margin: 0;
padding: 0;
font-size: inherit;
line-height: inherit;
}
table tr td.unwrapped {
white-space: pre;
}
table tr td.softwrapped {
white-space: pre-wrap; /* CSS-3 */
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
}
table.sidebyside tr td.code {
padding: 2px;
}
table.diff {
border: 1px solid #ccc;
width: 100%;
border-collapse: collapse;
font: 95%/105% "Bitstream Vera Sans Mono", Monaco, monospace;
}
table.diff tr td {
padding: 0;
}
table.diff .line_num_cut {
background: #ccc;
border-top: 1px dashed #ccc;
border-bottom: 1px dashed #ccc;
}
table.diff thead .line_numbers, table.diff thead { background: #ddd; }
table.diff td.code { padding-left: 2px; }
table.diff .cut-line {
background: #eee;
border-top: 1px dashed #aaa;
border-bottom: 1px dashed #aaa;
}
table.diff td.hidden del { display:none; }
table.diff td.del { background: #ffdddd; }
table.diff td.del span.idiff { background: #F2ACAD; }
table.diff td.ins { background: #ddffdd; }
table.diff td.ins span.idiff { background: #BAFBAD; }
/*table.sidebyside tbody.mod td ins span.idiff,
table.sidebyside tbody.mod td del span.idiff { background: #fd4; }*/
table.diff td.del del { text-decoration: none; }
table.diff td.ins ins { text-decoration: none; }
table.diff col.lines {
width: 3em;
}
ul.diff_stats {
list-style: none;
}
table.blame {
border: 1px solid #ccc;
width: 100%;
border-collapse: collapse;
font: 95%/105% "Bitstream Vera Sans Mono", Monaco, monospace;
}
table.blame tr td {
padding: 0;
vertical-align: top;
}
table.blame thead .line_numbers, table.blame thead { background: #ddd; }
table.balme td.code { padding-left: 2px; }

View File

@ -1,28 +0,0 @@
// Here's where we define some default constants
@import "partials/base";
// Then we'll import the compass extension
@import "html5-boilerplate";
// Now, you can simply include everything
// (except media) by uncommeting this line
//@include html5-boilerplate;
// Or, you can pick and choose only the sections
// you want by using the these includes
@include html5-boilerplate-reset;
@include html5-boilerplate-fonts;
@include html5-boilerplate-styles;
@include html5-boilerplate-helpers;
// Or, you can import the "overrides" partial if
// you want more control over individual mixins
//@import "partials/overrides";
// Finally, put your own styles in these partials
// and add more as needed (i.e. forms, tables, nav)
@import "partials/fonts";
@import "partials/page";
// Media should come last
@import "partials/media";

View File

@ -1,9 +1,22 @@
%h2 Resend confirmation instructions .block
= form_for(resource, :as => resource_name, :url => confirmation_path(resource_name), :html => { :method => :post }) do |f| %h2= t("devise.confirmations.resend_header")
= devise_error_messages! .content
%p - if resource.errors.present?
= f.label :email .flash
%br/ .message.error
= f.text_field :email - messages = resource.errors.full_messages.map { |msg| content_tag(:p, msg) }.join.html_safe
%p= f.submit "Resend confirmation instructions" = messages
= form_for(resource, :as => resource_name, :url => confirmation_path(resource_name), :html => { :method => :post, :class => "form" }) do |f|
= f.hidden_field :reset_password_token
.group.wat-cf
.left
= f.label :email, :class => "label"
.right
= f.text_field :email, :class => "text_field"
.group.navform.wat-cf
%button.button{ :tyle => "submit" }
#{image_tag("web-app-theme/icons/tick.png", :alt => t("devise.confirmations.send"))} #{t("devise.confirmations.send")}
%span.text_button_padding
= render :partial => "devise/shared/links" = render :partial => "devise/shared/links"

View File

@ -1,13 +1,26 @@
.block
%h2= t('devise.passwords.edit') %h2= t('devise.passwords.edit')
= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :put }) do |f| .content
= devise_error_messages! - if resource.errors.present?
.flash
.message.error
- messages = resource.errors.full_messages.map { |msg| content_tag(:p, msg) }.join.html_safe
= messages
= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :put, :class => "form" }) do |f|
= f.hidden_field :reset_password_token = f.hidden_field :reset_password_token
%p .group.wat-cf
= f.label :password .left
%br/ = f.label :password, :class => "label"
= f.password_field :password .right
%p = f.text_field :password, :class => "text_field"
= f.label :password_confirmation .group.wat-cf
%br/ .left
= f.password_field :password_confirmation = f.label :password_confirmation, :class => "label"
%p= f.submit t('devise.password.edit_button') .right
= f.text_field :password_confirmation, :class => "text_field"
.group.navform.wat-cf
%button.button{ :tyle => "submit" }
#{image_tag("web-app-theme/icons/application_edit.png", :alt => t("devise.passwords.edit_button"))} #{t("devise.passwords.edit_button")}

View File

@ -1,8 +1,19 @@
.block
%h2= t('devise.passwords.link') %h2= t('devise.passwords.link')
= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post }) do |f| .content
= devise_error_messages! - if resource.errors.present?
%p .flash
= f.label :email .message.error
%br/ - messages = resource.errors.full_messages.map { |msg| content_tag(:p, msg) }.join.html_safe
= f.text_field :email = messages
%p= f.submit t('devise.passwords.button')
= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post, :class => "form" }) do |f|
.group.wat-cf
.left
= f.label :email, :class => "label"
.right
= f.text_field :email, :class => "text_field"
.group.navform.wat-cf
%button.button{ :tyle => "submit" }
#{image_tag("web-app-theme/icons/tick.png", :alt => t("devise.passwords.button"))} #{t("devise.passwords.button")}

View File

@ -1,27 +1,45 @@
%h2 #block-signup.block
Edit #{resource_name.to_s.humanize} %h2 #{t("devise.registrations.edit")} #{resource_name.to_s.humanize}
= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put }) do |f| .content
= devise_error_messages! = form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put, :class => "form" }) do |f|
%p - if resource.errors.present?
= f.label :email .flash
%br/ .message.error
= f.text_field :email - messages = resource.errors.full_messages.map { |msg| content_tag(:p, msg) }.join.html_safe
%p = messages
= f.label :password
%i (leave blank if you don't want to change it) .group.wat-cf
%br/ .left
= f.password_field :password = f.label :email, :class => "label"
%p .right
= f.label :password_confirmation = f.text_field :email, :class => "text_field"
%br/
= f.password_field :password_confirmation .group.wat-cf
%p .left
= f.label :current_password = f.label :current_password, :class => "label"
%i (we need your current password to confirm your changes) .right
%br/ = f.password_field :current_password, :class => "text_field"
= f.password_field :current_password %span.description= t("devise.registrations.current_password_description")
%p= f.submit "Update"
%h3 Cancel my account .group.wat-cf
%p .left
Unhappy? #{link_to "Cancel my account", registration_path(resource_name), :confirm => "Are you sure?", :method => :delete}. = f.label :password, :class => "label"
= link_to "Back", :back .right
= f.password_field :password, :class => "text_field"
%span.description= t("devise.registrations.edit_password_description")
.group.wat-cf
.left
= f.label :password_confirmation, :class => "label"
.right
= f.password_field :password_confirmation, :class => "text_field"
.group.navform.wat-cf
%button.button{ :type => "submit" }
#{image_tag("web-app-theme/icons/tick.png", :alt => t("devise.registrations.signed_up"))} #{t("devise.registrations.signed_up")}
= link_to image_tag("web-app-theme/icons/cross.png", :alt => t("devise.registrations.cancel")) + " " + t("devise.registrations.cancel"), registration_path(resource_name), :method => "delete", :class => "button", :confirm => t("devise.registrations.cancel_confirmation")
%span.text_button_padding
= link_to t('layout.back'), :back, :class => "text_button_padding link_button"

View File

@ -1,17 +1,33 @@
%h2 Sign up #block-signup.block
= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %h2= t("devise.registrations.sign_up_header")
= devise_error_messages! .content
%p = form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :class => "form" }) do |f|
= f.label :email - if resource.errors.present?
%br/ .flash
= f.text_field :email .message.error
%p - messages = resource.errors.full_messages.map { |msg| content_tag(:p, msg) }.join.html_safe
= f.label :password = messages
%br/
= f.password_field :password .group.wat-cf
%p .left
= f.label :password_confirmation = f.label :email, :class => "label"
%br/ .right
= f.password_field :password_confirmation = f.text_field :email, :class => "text_field"
%p= f.submit "Sign up"
.group.wat-cf
.left
= f.label :password, :class => "label"
.right
= f.password_field :password, :class => "text_field"
.group.wat-cf
.left
= f.label :password_confirmation, :class => "label"
.right
= f.password_field :password_confirmation, :class => "text_field"
.group.navform.wat-cf
%button.button{ :type => "submit" }
#{image_tag("web-app-theme/icons/tick.png", :alt => t("devise.registrations.signed_up"))} #{t("devise.registrations.signed_up")}
%span.text_button_padding
= render :partial => "devise/shared/links" = render :partial => "devise/shared/links"

View File

@ -1,18 +1,25 @@
#login_form #block-login.block
%h2 Вход в систему %h2= t("layout.sessions.sign_in_header")
= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| .content.login
%p - if flash.present?
= f.label :email .flash
%br/ - flash.each do |key, value|
= f.text_field :email .message{ :title => key.to_s.humanize, :class => (key == :alert ? "error" : key) }
%p %p= value
= f.label :password - form_for(resource, :as => resource_name, :url => session_path(resource_name), :html => { :class => "form login" }) do |f|
%br/ .group.wat-cf
= f.password_field :password .left
- if devise_mapping.rememberable? = f.label :email, :class => "label right"
%p .right
= f.check_box :remember_me = f.text_field :email, :class => "text_field"
= f.label :remember_me .group.wat-cf
%p .left
= f.submit "Войти" = f.label :password, :class => "label right"
= link_to t('devise.passwords.link'), new_password_path(resource_name) .right
= f.password_field :password, :class => "text_field"
.group.navform.wat-cf
.right
%button.button{ :type => "submit" }
%img{ :src => "/images/web-app-theme/icons/key.png", :alt => "Save" }= t("layout.login")
%span.text_button_padding
= link_to t('devise.passwords.link'), new_password_path(resource_name), :class => "text_button_padding link_button"

View File

@ -1,2 +1,2 @@
- if devise_mapping.recoverable? && controller_name != 'passwords' - if devise_mapping.recoverable? && controller_name != 'passwords'
= link_to t('devise.passwords.link'), new_password_path(resource_name) = link_to t('devise.passwords.link'), new_password_path(resource_name), :class => "text_button_padding link_button"

View File

@ -1,4 +1,4 @@
#flash .flash
- flash.each do |key, value| - flash.each do |type, message|
%div{ :title => key.to_s.humanize, :class => key } %div{:class => "message #{type}"}
%p= value %p= message

View File

@ -1 +0,0 @@
%small.copyright

View File

@ -1,28 +0,0 @@
%head
%meta{ :charset => "utf-8" }/
-#
Always force latest IE rendering engine (even in intranet) & Chrome Frame
Remove this if you use the .htaccess
%meta{ :content => "IE=edge,chrome=1", "http-equiv" => "X-UA-Compatible" }/
%title
== #{ controller.controller_name.titleize } - #{ controller.action_name.titleize }
%meta{ :content => "", :name => "description" }/
%meta{ :content => "", :name => "author" }/
-# Mobile viewport optimized: j.mp/bplateviewport
%meta{ :content => "width=device-width, initial-scale=1.0", :name => "viewport" }/
-# Place favicon.ico and apple-touch-icon.png in the root of your domain and delete these references
-# %link{ :href => "/favicon.ico", :rel => "shortcut icon" }/
-# %link{ :href => "/apple-touch-icon.png", :rel => "apple-touch-icon" }/
= render :partial => 'layouts/stylesheets'
-# All JavaScript at the bottom, except for Modernizr which enables HTML5 elements & feature detects
= include_javascripts :application
= javascript_include_tag 'modernizr.min'
= csrf_meta_tag

View File

@ -1 +0,0 @@
%h1= t('layout.global_header') - if user_signed_in? #logout = t('layout.logged_in_as') = current_user.name = link_to t('layout.logout'), destroy_user_session_path

View File

@ -1,37 +1,10 @@
-# Grab Google CDN's jQuery, with a protocol relative URL
-# Looks for google_api_key first in ENV['GOOGLE_API_KEY'] then in config/google.yml
-# remote_jquery and local_jquery helpers use minified jquery unless Rails.env is development
- if !google_api_key.blank?
= javascript_include_tag "//www.google.com/jsapi?key=#{google_api_key}"
:javascript
google.load(#{ remote_jquery("1.5.1") });
- else
= javascript_include_tag "//ajax.googleapis.com/ajax/libs/jquery/#{ local_jquery("1.5.1") }" = javascript_include_tag "//ajax.googleapis.com/ajax/libs/jquery/#{ local_jquery("1.5.1") }"
-# fall back to local jQuery if necessary -# fall back to local jQuery if necessary
:javascript :javascript
!window.jQuery && document.write(unescape('%3Cscript src="/javascripts/jquery.min.js"%3E%3C/script%3E')) !window.jQuery && document.write(unescape('%3Cscript src="/javascripts/jquery.min.js"%3E%3C/script%3E'))
= javascript_include_tag 'rails', 'plugins', 'application' = include_javascripts :application
-# Fix any <img> or .png_bg bg-images. Also, please read goo.gl/mZiyb
/[if lt IE 7 ]
= javascript_include_tag 'dd_belatedpng.js'
:javascript
//DD_belatedPNG.fix('img, .png_bg');
-# Append your own using content_for :javascripts -# Append your own using content_for :javascripts
= yield :javascripts = yield :javascripts
-# asynchronous google analytics: mathiasbynens.be/notes/async-analytics-snippet
-# Looks for google_account_id first in ENV['GOOGLE_ACCOUNT_ID'] then in config/google.yml
- if !google_account_id.blank?
:javascript
var _gaq = [['_setAccount', '#{google_account_id}'], ['_trackPageview']];
(function(d, t) {
var g = d.createElement(t),
s = d.getElementsByTagName(t)[0];
g.async = true;
g.src = ('https:' == location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
s.parentNode.insertBefore(g, s);
})(document, 'script');

View File

@ -1,6 +1,3 @@
-# CSS: implied media="all"
-# stylesheet_link_tag 'style', :media => 'all'
= include_stylesheets :application = include_stylesheets :application
-# Append your own using content_for :stylesheets
= yield :stylesheets = yield :stylesheets

View File

@ -1,15 +1,32 @@
!!! 5 !!!
-# http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither %html
-ie_html :class => 'no-js' do %head
= render :partial => 'layouts/head' %title= t("layout.global_header")
%body{ :lang => 'ru', :class => "#{controller.controller_name}" } = render :partial => "layouts/stylesheets"
= render :partial => "layouts/javascripts"
= csrf_meta_tag
%body
#container #container
%header#header #header
= render :partial => 'layouts/header' %h1
#main{ :role => 'main' } %a{:href => "/"}= t("layout.global_header")
= render :partial => 'layouts/flashes' #user-navigation
%ul.wat-cf
%li
= link_to t('layout.logout'), destroy_user_session_path, :class => "logout"
#main-navigation
%ul.wat-cf
%li{:class => controller.controller_path == 'users' ? 'active' : '' }
%a{:href => users_path} Users
%li{:class => controller.controller_path == 'platforms' ? 'active' : '' }
%a{:href => platforms_path} Platforms
#wrapper.wat-cf
= render :partial => "layouts/flashes"
#main
= yield = yield
%footer#footer #footer
= render :partial => 'layouts/footer' .block
-# Javascript at the bottom for fast page loading
= render :partial => 'layouts/javascripts' #sidebar
= yield :sidebar

View File

@ -0,0 +1,10 @@
!!!
%html
%head
%title= t("layout.global_header")
= include_stylesheets :sessions
= csrf_meta_tag
%body
#container
#box
= yield

View File

@ -0,0 +1,22 @@
.group
= f.label :name, :class => :label
= f.text_field :name, :class => 'text_field'
.group
= f.label :unixname, :class => :label
= f.text_field :unixname, :class => 'text_field'
.group
= f.label :parent_platform_id, :class => :label
= f.text_field :parent_platform_id, :class => 'text_field'
.group
= f.label :released, :class => :label
= f.check_box :released, :class => 'check_box'
.group.navform.wat-cf
%button.button{:type => "submit"}
= image_tag("web-app-theme/icons/tick.png", :alt => t("layout.save"))
= t("layout.save")
%span.text_button_padding= t("layout.or")
= link_to t("layout.cancel"), platforms_path, :class => "text_button_padding link_button"

View File

View File

@ -0,0 +1,13 @@
.block
.secondary-navigation
%ul.wat-cf
%li.first= link_to t("layout.platforms.list"), platforms_path
%li= link_to t("layout.platforms.new"), new_platform_path
%li.active= link_to t("layout.platforms.edit"), edit_platform_path
.content
%h2.title
= t("layout.platforms.edit_header")
.inner
= form_for @platform, :url => platform_path(@platform), :html => { :class => :form } do |f|
= render :partial => "form", :locals => {:f => f}
- content_for :sidebar, render(:partial => 'sidebar')

View File

@ -1,7 +1,24 @@
%h1= t('layout.platforms.list') .block
.secondary-navigation
%ul.wat-cf
%li.first.active= link_to t("layout.platforms.list"), platforms_path
%li= link_to t("layout.platforms.new"), new_platform_path
.content
%h2.title
= t("layout.platforms.list_header")
.inner
%table.table
%tr
%th.first= t("activerecord.attributes.platform.name")
%th= t("activerecord.attributes.platform.created_at")
%th.last &nbsp;
- @platforms.each do |platform| - @platforms.each do |platform|
= div_for platform do %tr{:class => cycle("odd", "even")}
= link_to platform.name, platform %td
= link_to t('layout.platforms.new'), new_platform_path = link_to platform.name, platform_path(platform)
.div %td
= link_to t('layout.user_list'), users_path = platform.created_at
%td.last
#{link_to t("layout.show"), platform_path(platform)} | #{link_to t("layout.delete"), platform_path(platform), :method => :delete, :confirm => t("layout.platforms.confirm_delete")}
.actions-bar.wat-cf
.actions

View File

@ -1,14 +1,11 @@
%h1= t('layout.platforms.new_header') .block
= form_for @platform do |f| .secondary-navigation
%p %ul.wat-cf
= f.label :name %li.first= link_to "#{t("layout.platforms.list")}", platforms_path
= f.text_field :name %li.active= link_to "#{t("layout.platforms.new")}", new_platform_path
%p .content
= f.label :unixname %h2.title
= f.text_field :unixname = t("layout.platforms.new_header")
%p .inner
= f.label :parent_platform_id = form_for :platform, :url => platforms_path, :html => { :class => :form } do |f|
= f.select :parent_platform_id, @platforms.map { |p| [p.name, p.id] }, :include_blank => true = render :partial => "form", :locals => {:f => f}
%p
= f.submit t('layout.create')
= link_to t('layout.cancel'), platforms_path

View File

@ -1,24 +1,42 @@
%h1 .block
= t('layout.platforms.show') .secondary-navigation
%ul.wat-cf
%li.first= link_to t("layout.platforms.list"), platforms_path
%li= link_to t("layout.platforms.new"), new_platform_path
%li.active= link_to t("layout.platforms.show"), platform_path
.content
.inner
%p
%b
= t("activerecord.attributes.platform.name")
\:
= @platform.name = @platform.name
= link_to t('layout.platforms.back_to_the_list'), platforms_path %p
%b
.freeze = t("activerecord.attributes.platform.unixname")
- if @platform.released? \:
= link_to I18n.t("layout.platforms.unfreeze"), unfreeze_platform_path(@platform), :confirm => I18n.t("layout.platforms.confirm_unfreeze") = @platform.unixname
- else %p
= link_to I18n.t("layout.platforms.freeze"), freeze_platform_path(@platform), :confirm => I18n.t("layout.platforms.confirm_freeze") %b
= t("activerecord.attributes.platform.parent")
.location \:
- if @platform.parent
= link_to @platform.parent.name, platform_path(@platform.parent)
%p
%b
= t('layout.platforms.location') = t('layout.platforms.location')
\:
= @platform.path = @platform.path
.wat-cf
-#= link_to image_tag("web-app-theme/icons/application_edit.png", :alt => t("layout.edit")) + " " + t("layout.edit"), edit_platform_path(@platform), :class => "button"
= link_to image_tag("web-app-theme/icons/cross.png", :alt => t("layout.delete")) + " " + t("layout.delete"), platform_path(@platform), :method => "delete", :class => "button", :confirm => t("layout.platforms.confirm_delete")
- if @platform.released?
= link_to t("layout.platforms.unfreeze"), unfreeze_platform_path(@platform), :confirm => I18n.t("layout.platforms.confirm_unfreeze"), :class => "button"
- else
= link_to t("layout.platforms.freeze"), freeze_platform_path(@platform), :confirm => I18n.t("layout.platforms.confirm_freeze"), :class => "button"
%h2= t('layout.platforms.repositories') -# Show repositories
- @repositories.each do |repository| -# Show projects
= div_for repository do
= link_to repository.name, [@platform, repository]
= link_to t('layout.repositories.new'), new_platform_repository_path(@platform)
%h2= t('layout.platforms.products') -#- content_for :sidebar, render(:partial => 'sidebar')
TBD

View File

@ -0,0 +1,13 @@
.group
= f.label :name, t("activerecord.attributes.user.name"), :class => :label
= f.text_field :name, :class => 'text_field'
.group
= f.label :email, t("activerecord.attributes.user.email"), :class => :label
= f.text_field :email, :class => 'text_field'
.group.navform.wat-cf
%button.button{:type => "submit"}
= image_tag("web-app-theme/icons/tick.png", :alt => t("layout.save"))
= t("layout.save")
%span.text_button_padding= t("layout.or")
= link_to t("layout.cancel"), users_path, :class => "text_button_padding link_button"

View File

View File

@ -1,11 +1,12 @@
%h1= @user.name .block
= form_for @user do |f| .secondary-navigation
%p %ul.wat-cf
= f.label :name %li.first= link_to t("layout.users.list"), users_path
= f.text_field :name %li= link_to t("layout.users.new"), new_user_path
%p %li.active= link_to t("layout.users.edit"), edit_user_path
= f.label :email .content
= f.text_field :email %h2.title= t("layout.users.edit_header")
%p .inner
= f.submit = form_for @user, :url => user_path(@user), :html => { :class => :form } do |f|
= link_to t('layout.users.back_to_the_list'), users_path = render :partial => "form", :locals => {:f => f}
- content_for :sidebar, render(:partial => 'sidebar')

View File

@ -1,12 +1,31 @@
%h1= t('layout.user_list') .block
%ul .secondary-navigation
%ul.wat-cf
%li.first.active= link_to t("layout.users.list"), users_path
%li= link_to t("layout.users.new"), new_user_path
.content
%h2.title
= t("layout.users.list_header")
.inner
%table.table
%tr
%th.first ID
%th= t("activerecord.attributes.user.name")
%th= t("activerecord.attributes.user.email")
%th= t("activerecord.attributes.user.created_at")
%th.last &nbsp;
- @users.each do |user| - @users.each do |user|
%li %tr{:class => cycle("odd", "even")}
= link_to user.name, edit_user_path(user) %td
( = user.id
%span>= user.email %td
) = link_to user.name, user_path(user)
= link_to t('layout.delete'), user_path(user), :method => :delete, :confirm => t('layout.are_you_sure') %td
%p = user.email
= link_to t('layout.users.new'), new_user_path %td
= link_to t('layout.platforms.back_to_the_list'), platforms_path = user.created_at
%td.last
#{link_to t("layout.show"), user_path(user)} | #{link_to t("layout.edit"), edit_user_path(user)} | #{link_to t("layout.delete"), user_path(user), :method => :delete, :confirm => t("layout.users.confirm_delete")}
.actions-bar.wat-cf
.actions
- content_for :sidebar, render(:partial => 'sidebar')

View File

@ -1,11 +1,11 @@
%h1= t('layout.users.new') .block
= form_for @user do |f| .secondary-navigation
%p %ul.wat-cf
= f.label :name %li.first= link_to t("layout.users.list"), users_path
= f.text_field :name %li.active= link_to t("layout.users.new"), new_user_path
%p .content
= f.label :email %h2.title= t("layout.users.new_header")
= f.text_field :email .inner
%p = form_for :user, :url => users_path, :html => { :class => :form } do |f|
= f.submit = render :partial => "form", :locals => {:f => f}
= link_to t('layout.users.back_to_the_list'), users_path - content_for :sidebar, render(:partial => 'sidebar')

View File

@ -0,0 +1,33 @@
.block
.secondary-navigation
%ul.wat-cf
%li.first= link_to t("layout.users.list"), users_path
%li= link_to t("layout.users.new"), new_user_path
%li.active= link_to t("layout.users.show"), user_path
.content
.inner
%p
%b
Id
\:
= @user.id
%p
%b
= t("activerecord.attributes.user.name")
\:
= @user.name
%p
%b
= t("activerecord.attributes.user.email")
\:
= @user.email
%p
%b
= t("activerecord.attributes.user.created_at")
\:
= @user.created_at
.wat-cf
= link_to image_tag("web-app-theme/icons/application_edit.png", :alt => t("layout.edit")) + " " + t("layout.edit"), edit_user_path(@user), :class => "button"
= link_to image_tag("web-app-theme/icons/cross.png", :alt => t("layout.delete")) + " " + t("layout.delete"), user_path(@user), :method => "delete", :class => "button", :confirm => t("layout.users.confirm_delete")
- content_for :sidebar, render(:partial => 'sidebar')

View File

@ -5,5 +5,11 @@ javascripts:
stylesheets: stylesheets:
application: application:
- public/stylesheets/compiled/style.css - public/stylesheets/web-app-theme/base.css
- public/stylesheets/compiled/handheld.css - public/stylesheets/web-app-theme/themes/default/style.css
- public/stylesheets/web-app-theme/override.css
sessions:
- public/stylesheets/web-app-theme/base.css
- public/stylesheets/web-app-theme/themes/default/style.css
- public/stylesheets/web-app-theme/override.css

View File

@ -14,7 +14,7 @@ ru:
signed_out: 'Вы вышли.' signed_out: 'Вы вышли.'
passwords: passwords:
link: 'Забыли пароль?' link: 'Забыли пароль?'
button: 'Отправить инструкции по восстановлению пароля на почту' button: 'Восстановить'
send_instructions: 'Вы получите письмо с инструкциями о том, как сбросить ваш пароль, через несколько минут.' send_instructions: 'Вы получите письмо с инструкциями о том, как сбросить ваш пароль, через несколько минут.'
updated: 'Ваш пароль изменен. Теперь вы можете войти.' updated: 'Ваш пароль изменен. Теперь вы можете войти.'
edit: 'Изменение пароля' edit: 'Изменение пароля'
@ -23,11 +23,19 @@ ru:
link: "Не получили инструкции для подтверждения учетной записи?" link: "Не получили инструкции для подтверждения учетной записи?"
send_instructions: 'Вы получите письмо с инструкциями о том, как подтвердить вашу учетную запись.' send_instructions: 'Вы получите письмо с инструкциями о том, как подтвердить вашу учетную запись.'
confirmed: 'Ваша учетная запись успешно подтверждена. Добро пожаловать.' confirmed: 'Ваша учетная запись успешно подтверждена. Добро пожаловать.'
resend_header: 'Повторная отправка инструкций для подтверждения учетной записи'
send: "Отправить"
registrations: registrations:
link: 'Регистрация' link: 'Регистрация'
signed_up: 'Вы успешно зарегистрировались.' signed_up: 'Вы успешно зарегистрировались.'
updated: 'Ваша учетная запись изменена.' updated: 'Ваша учетная запись изменена.'
destroyed: 'До свидания! Ваша учетная запись удалена. Надеемся вскоре снова вас увидеть.' destroyed: 'До свидания! Ваша учетная запись удалена. Надеемся вскоре снова вас увидеть.'
sign_up_header: 'Регистрация'
edit: 'Редактировать'
edit_password_description: 'Оставьте пароль пустым, если не хотите его менять'
current_password_description: 'Нам нужен ваш текущий пароль для подтверждения изменения'
cancel: 'Удалить'
cancel_confirmation: 'Вы уверены, что хотите удалить учетную запись?'
unlocks: unlocks:
link: "Не получили инструкции для разблокировки учетной записи?" link: "Не получили инструкции для разблокировки учетной записи?"
send_instructions: 'Вы получите письмо с инструкциями о том, как разблокировать вашу учетную запись, через несколько минут.' send_instructions: 'Вы получите письмо с инструкциями о том, как разблокировать вашу учетную запись, через несколько минут.'

View File

@ -19,6 +19,7 @@ ru:
list: Список list: Список
new: Создать new: Создать
new_header: Новая платформа new_header: Новая платформа
edit_header: Редактировать
list_header: Платформы list_header: Платформы
show: Платформа show: Платформа
projects: Проекты projects: Проекты
@ -45,8 +46,15 @@ ru:
git_repo_location: Путь к git-репозиторию git_repo_location: Путь к git-репозиторию
back_to_the_list: К списку проектов репозитория back_to_the_list: К списку проектов репозитория
users: users:
new: Новый пользователь list: Список
new: Создать
edit: Редактировать
new_header: Новый пользователь
edit_header: Редактировать
list_header: Пользователи
show: Пользователь
back_to_the_list: К списку пользователей back_to_the_list: К списку пользователей
confirm_delete: Вы уверены, что хотите удалить этого пользователя?
git: git:
repositories: repositories:
empty: Пустой репозиторий empty: Пустой репозиторий

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 703 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 655 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 612 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 B

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,11 +0,0 @@
// usage: log('inside coolFunc', this, arguments);
// paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/
window.log = function(){
log.history = log.history || []; // store logs to an array for reference
log.history.push(arguments);
if(this.console) console.log( Array.prototype.slice.call(arguments) );
};
// place any jQuery/helper plugins in here, instead of separate, slower script files.

View File

@ -0,0 +1,410 @@
* {margin:0;padding:0}
.clear { clear: both; height: 0; }
.wat-cf:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.wat-cf {display: inline-block;}
/* Hides from IE-mac \*/
* html .wat-cf {height: 1%;}
.wat-cf {display: block;}
/* End hide from IE-mac */
h1 { margin: 15px 0; font-size: 22px; font-weight: normal; }
h2 { font-size: 22px; margin: 15px 0; font-weight: normal;}
h3 { font-size: 18px; margin: 10px 0; font-weight: normal;}
h4 { font-size: 16px; margin: 10px 0; font-weight: normal;}
hr {height: 1px; border: 0; }
p { margin: 15px 0;}
a img { border: none; }
body {
font-size: 12px;
font-family: sans-serif;
}
#container {
min-width: 960px;
}
#header, #wrapper {
padding: 0 20px;
}
#header {
position: relative;
padding-top: 1px;
}
#header h1 {
margin: 0;
padding: 10px 0;
font-size: 26px;
}
#header h1 a:link, #header h1 a:active, #header h1 a:hover, #header h1 a:visited {
text-decoration: none;
}
#main {
width: 70%;
float: left;
}
.actions-bar {
padding: 10px 1px;
}
.actions-bar .actions {
float: left;
}
.actions-bar .pagination {
float: right;
padding: 1px 0;
}
#sidebar {
width: 25%;
float: right;
}
#sidebar h3 {
padding: 10px 15px;
margin: 0;
font-size: 13px;
}
#sidebar .block {
margin-bottom: 20px;
padding-bottom: 10px;
}
#sidebar .block .content {
padding: 0 15px;
}
#sidebar ul.navigation li a:link, #sidebar ul.navigation li a:visited {
display: block;
padding: 10px 15px;
}
#sidebar .block .sidebar-block, #sidebar .notice {
padding:10px;
}
#wrapper {
padding-top: 20px;
}
#main .block {
margin-bottom: 20px;
padding-top: 1px;
}
#main .block .content .inner {
padding: 0 15px 15px;
}
#main .main p.first {
margin-top: 0;
}
#user-navigation {
position: absolute;
top: 0px;
right: 20px;
}
#main-navigation {
width: 100%;
}
#user-navigation ul, #main-navigation ul, .secondary-navigation ul, #sidebar ul.navigation {
margin: 0;
padding: 0;
list-style-type: none;
}
#user-navigation ul li, #main-navigation ul li, .secondary-navigation ul li {
float: left;
}
#main-navigation ul li {
margin-right: 5px;
}
#user-navigation ul li {
padding: 5px 10px;
}
#main-navigation ul li a:link, #main-navigation ul li a:visited, #main-navigation ul li a:hover, #main-navigation ul li a:active,
.secondary-navigation ul li a:link, .secondary-navigation ul li a:visited, .secondary-navigation ul li a:hover, .secondary-navigation ul li a:active,
#user-navigation ul li a:link, #user-navigation ul li a:visited, #user-navigation ul li a:hover, #user-navigation ul li a:active {
text-decoration: none;
}
#main-navigation ul li a {
font-size: 14px;
line-height: 14px;
display: block;
padding: 8px 15px;
}
.secondary-navigation {
font-size: 13px;
border-bottom-width: 10px;
border-bottom-style: solid;
}
.secondary-navigation ul li a {
display: block;
padding: 10px 15px;
}
#footer {
padding-bottom: 20px;
}
/* pagination */
.pagination a, .pagination span, .pagination em {
padding: 2px 5px;
margin-right: 5px;
display: block;
float: left;
border-style: solid;
border-width: 1px;
}
.pagination em {
font-weight: bold;
}
.pagination a {
text-decoration: none;
}
/* tables */
.table {
width: 100%;
border-collapse: collapse;
margin-bottom: 15px;
}
.table th {
padding: 10px;
font-weight: bold;
text-align: left;
}
.table th.first {
width: 30px;
}
.table th.last {
width: 210px;
}
.table .checkbox {
margin-left: 10px;
}
.table td {
padding: 10px;
}
.table td.last {
text-align: right;
}
/* forms */
input.checkbox {
margin: 0;
padding: 0;
}
.form .group {
margin-bottom: 15px;
}
.form div.left {
width: 20%;
float: left;
}
.form div.right {
width: 75%;
float: right;
}
.form .columns .column {
width: 48%;
}
.form .columns .left {
float: left;
}
.form .columns .right {
float: right;
}
.form label.label, .form input.text_field, .form textarea.text_area {
font-size: 1.2em;
padding: 1px 0;
margin: 0;
}
.form label.right {
text-align: right;
}
.form input.checkbox, .form input.radio {
margin-right: 5px;
}
.form label.checkbox, .form label.radio {
line-height: 1.5em;
}
.form label.label {
display: block;
padding-bottom: 2px;
font-weight: bold;
}
.form div.fieldWithErrors label.label {
display: inline;
}
.form .fieldWithErrors .error {
color: red;
}
.form input.text_field, .form textarea.text_area {
width: 100%;
border-width: 1px;
border-style: solid;
}
/* lists */
ul.list {
margin: 0;
padding: 0;
list-style-type: none;
}
ul.list li {
clear: left;
padding-bottom: 5px;
}
ul.list li .left {
float: left;
}
ul.list li .left .avatar {
width: 50px;
height: 50px;
}
ul.list li .item {
margin-left: 80px;
}
ul.list li .item .avatar {
float: left;
margin: 0 5px 5px 0;
width: 30px;
height: 30px;
}
/* box */
#box {
width: 500px;
margin: 50px auto;
}
#box .block {
margin-bottom: 20px;
}
#box .block h2 {
padding: 10px 15px;
margin: 0;
}
#box .block .content {
padding: 10px 20px;
}
/* Inspired by http://particletree.com/features/rediscovering-the-button-element */
a.button:link, a.button:visited, a.button:hover, a.button:active, button.button {
color: #222;
display:block;
float:left;
margin:0 7px 0 0;
background-color: #eee;
border:1px solid #bfbfbf;
font-size: 1em;
line-height: 1.3em;
font-weight:bold;
cursor:pointer;
padding:5px 10px 6px 7px;
text-decoration: none;
}
button.button {
width:auto;
overflow:visible;
padding:4px 10px 3px 7px; /* IE6 */
}
button.button[type] {
padding:5px 10px 5px 7px; /* Firefox */
line-height:17px; /* Safari */
}
*:first-child+html button.button[type] {
padding:4px 10px 3px 7px; /* IE7 */
}
button.button img, a.button img {
margin:0 3px -3px 0 !important;
padding:0;
border:none;
width:16px;
height:16px;
}
button.button:hover, a.button:hover {
background-color:#dedede;
}
button.button:active, a.button:active {
background-color:#e5e5e5;
}
.text_button_padding{
color: #222222;
display: block;
float: left;
font-size: 1em;
line-height: 2em;
margin: 0 7px 0 0;
padding: 5px 0 6px 7px;
text-decoration: none;
}
.link_button{
cursor: pointer;
}

View File

@ -0,0 +1 @@
/* Override here any style defined by web-app-theme */

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -0,0 +1,462 @@
/*
activo
by David Francisco (dmfrancisc[at]gmail.com)
based on "Drastic Dark" by Juan Maria Martinez Arce (juan[at]insignia4u.com)
*/
.small {
font-size: 11px;
font-style: normal;
font-weight: normal;
text-transform: none;
letter-spacing: normal;
line-height: 1.4em;
}
.gray {
color:#999999;
font-family: Georgia, serif;
font-size: 13px;
font-style: italic;
font-weight: normal;
text-transform: none;
letter-spacing: normal;
line-height: 1.6em;
}
.hightlight {
background-color: #ffff88;
font-weight: bold;
color: #36393d;
}
a:link, a:visited, a:hover, a:active, h1, h2, h3 { color: #111; }
a { -moz-outline: none; }
body {
color: #111;
background: #E5E5E5;
font-family: helvetica, arial, sans-serif;
}
hr {
background: #e2e2e2;
color: #e2e2e2;
}
#header {
background: #002134;
}
#header h1 {
padding: 15px 0;
font-size: 32px;
font-style: normal;
font-weight: bold;
text-transform: none;
letter-spacing: -1px;
line-height: 1.2em;
color: #fff;
text-shadow: #000 1px 1px 2px;
}
#header h1 a:link, #header h1 a:active, #header h1 a:hover, #header h1 a:visited {
color: #fff;
}
#user-navigation {
top: auto;
bottom: 5px;
right: 25px;
}
#user-navigation a.logout {
background: #ccc;
padding: 1px 4px;
}
#main {
width: 71%;
}
#main .block {
padding-top: 0px;
background: #fff;
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
}
#main .block .content {
padding-top: 1px;
}
#main .block .content h2 {
margin-left: 15px;
font-size: 22px;
font-style: normal;
font-weight: bold;
text-transform: none;
letter-spacing: -1px;
line-height: 1.2em;
}
#main .block .content p {
font-size: 13px;
font-style: normal;
font-weight: normal;
text-transform: none;
letter-spacing: normal;
line-height: 1.45em;
}
#sidebar .block h4 {
font-weight: bold;
}
#sidebar .notice {
background: #fff;
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
}
#sidebar h3 {
color: #111;
border-bottom: 1px solid #c0c0c0;
}
#main-navigation ul li {
padding-left: 15px;
}
#main-navigation ul li a {
padding: 8px 0;
}
#main-navigation ul li.active {
padding: 0;
margin-left: 15px;
}
#main-navigation ul li.active {
background: #E5E5E5;
margin-left: 15px;
}
#main-navigation ul li.active a {
padding: 8px 15px;
}
#sidebar ul li {
background-position: 15px 11px;
background-repeat: no-repeat;
background-image: url("images/arrow.png");
border-bottom: 1px solid #e2e2e2;
}
#sidebar ul li a {
text-decoration: none;
margin-left: 20px;
}
#sidebar ul li a:link, #sidebar ul li a:visited {
text-decoration: none;
}
#main-navigation {
background-color: #f4f4f4;
background-image: url("images/menubar-background.png");
background-repeat: repeat-x;
}
#main-navigation ul li {
margin-right: 0;
padding-left: 15px;
padding-right: 5px;
}
#main-navigation ul li a:link, #main-navigation ul li a:visited, #main-navigation ul li a:hover, #main-navigation ul li a:active {
text-decoration: none;
color: #111;
}
.secondary-navigation ul li a:link, .secondary-navigation ul li a:visited, .secondary-navigation ul li a:hover, .secondary-navigation ul li a:active,
#user-navigation ul li a:link, #user-navigation ul li a:visited, #user-navigation ul li a:hover, #user-navigation ul li a:active {
text-decoration: none;
color: #111;
}
.secondary-navigation {
background-color: #f2f1ee;
border-bottom: none;
border-bottom-width: 5px;
background-image: url("images/boxbar-background.png");
}
.secondary-navigation ul li.active, .secondary-navigation ul li.active a:hover {
background-color: #fff;
}
#footer .block {
text-align: center;
color: #111;
background: #fff;
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
}
#footer .block p {
margin: 0;
padding: 4px;
}
/* pagination */
.pagination a, .pagination span {
background-color: #f4f4f4;
background-image: url("images/button-background.png");
color: #111;
text-align: center;
min-width: 15px;
margin-right: 5px;
padding: 6px;
border: 1px solid #c3c4ba;
}
.pagination em {
background: #002134;
color: #fff;
border: 1px solid #002134;
}
.pagination a {
color: #1a1a1a;
}
.pagination a:hover {
border: 1px solid #818171;
-webkit-box-shadow: 0 0 4px rgba(0, 0, 0, 0.3);
-moz-box-shadow: 0 0 4px rgba(0, 0, 0, 0.3);
box-shadow: 0 0 4px rgba(0, 0, 0, 0.3);
}
.pagination a:active {
background-image: url("images/button-background-active.png");
outline: none;
}
/* tables */
.table th {
background: #eaeaea;
color: #222;
font-weight: normal;
}
.table td {
border-bottom: 1px solid #eaeaea;
}
.table tr.even {
background: #f8f8f8;
}
/* forms */
.form label.label {
color: #666666;
}
.form input.text_field, .form textarea.text_area {
width: 100%;
border: 1px solid #e2e2e2;
}
.form input:hover, .form textarea:hover {
-webkit-box-shadow: rgba(0,0,0,0.3) 0 0 3px;
-moz-box-shadow: rgba(0,0,0,0.3) 0 0 3px;
box-shadow: 0 0 3px rgba(0, 0, 0, 0.3);
border: 1px solid #a2a294;
}
.form input:focus, .form textarea:focus {
border: 1px solid #a2a294;
}
.form input.button {
background: #e2e2e2;
border: 1px solid #c1c1c1;
padding: 2px 5px;
cursor: pointer;
color: #111;
font-weight: bold;
font-size: 11px;
}
.form input.button:hover {
border: 1px solid #666;
}
.form .description {
font-style: italic;
color: #8C8C8C;
font-size: .9em;
}
.form .navform a {
color: #cc0000;
}
/* buttons */
a.button, button.button {
background-color: #f4f4f4;
background-image: url("images/button-background.png");
border: 1px solid #c3c4ba;
font-family: helvetica, arial, sans-serif;
font-weight: normal;
}
a.button:link, a.button:visited, a.button:hover, a.button:active, button.button:link, button.button:visited, button.button:hover, button.button:active {
font-weight: normal;
background-color: #f4f4f4;
}
a.button:hover, button.button:hover {
background-color: #eee;
border: 1px solid #818171;
-webkit-box-shadow: 0 0 4px rgba(0, 0, 0, 0.3);
-moz-box-shadow: 0 0 4px rgba(0, 0, 0, 0.3);
box-shadow: 0 0 4px rgba(0, 0, 0, 0.3);
}
a.button:active, button.button:active {
outline: none;
background-color: #ddd;
background-image: url("images/button-background-active.png");
}
/* flash-messages */
.flash .message {
text-align:center;
margin: 0 auto 15px;
}
.flash .message p {
margin:8px;
}
.flash .error {
border: 1px solid #ffbbbb;
background-color: #ffdddd;
}
.flash .warning {
border: 1px solid #ffff88;
background-color: #ffffcc;
}
.flash .notice {
border: 1px solid #1fdf00;
background-color: #bbffb6;
}
/* lists */
ul.list li {
border-bottom-color: #e2e2e2;
border-bottom-width: 1px;
border-bottom-style: solid;
}
ul.list li .item .avatar {
border-color: #e2e2e2;
border-width: 1px;
border-style: solid;
padding: 2px;
}
/* box */
#box .block {
background: #fff;
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
}
#box .block h2 {
background: #002134;
color: #fff;
}
/* rounded borders */
#main, #main-navigation, #main-navigation li, .secondary-navigation, #main .block, #sidebar .block, #sidebar h3, ul.list li,
#footer .block, .form input.button, #box .block, #box .block h2 {
-moz-border-radius-topleft: 9px;
-webkit-border-top-left-radius: 9px;
-moz-border-radius-topright: 9px;
-webkit-border-top-right-radius: 9px;
}
.secondary-navigation li.first a, .secondary-navigation ul li.first {
-moz-border-radius-topleft: 9px;
-webkit-border-top-left-radius: 9px;
}
.secondary-navigation ul li.first {
-moz-border-radius-topleft: 9px;
-webkit-border-top-left-radius: 9px;
}
#sidebar, #sidebar .block, #main .block, #sidebar ul.navigation, ul.list li, #footer .block, .form input.button, #box .block {
-moz-border-radius-bottomleft: 9px;
-webkit-border-bottom-left-radius: 9px;
-moz-border-radius-bottomright: 9px;
-webkit-border-bottom-right-radius: 9px;
}
#main .block {
-moz-border-radius: 9px;
-webkit-border-radius: 9px;
border-radius: 9px;
}
#main-navigation, .secondary-navigation {
-moz-border-radius-topleft: 9px;
-webkit-border-top-left-radius: 9px;
border-top-left-radius: 9px;
-moz-border-radius-topright: 9px;
-webkit-border-top-right-radius: 9px;
border-top-right-radius: 9px;
}
a.button, button.button, .pagination a, .pagination span {
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
border-radius: 2px;
}
.flash .message {
-moz-border-radius: 6px;
-webkit-border-radius: 6px;
border-radius: 6px;
}
.form input.button {
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
}
#user-navigation a.logout {
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
}