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
# gem 'webrat'
# 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 "haml", ">= 3.0.0"
gem "haml-rails"
gem "compass", ">= 0.10.6"
gem "html5-boilerplate"
gem "capistrano"
gem "capistrano-ext"
gem "will_paginate", "~> 3.0.pre2"

View File

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

View File

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

View File

@ -1,18 +1,22 @@
class UsersController < ApplicationController
before_filter :find_user, :only => [:show, :edit, :update, :destroy]
def index
@users = User.all
end
def show
end
def new
@user = User.new
end
def edit
@user = User.find params[:id]
end
def destroy
User.destroy params[:id]
@user.destroy
redirect_to users_path
end
@ -28,7 +32,6 @@ class UsersController < ApplicationController
end
def update
@user = User.find params[:id]
if @user.update_attributes(params[:user])
flash[:notice] = t('flash.user.saved')
redirect_to users_path
@ -37,4 +40,9 @@ class UsersController < ApplicationController
render :action => :edit
end
end
protected
def find_user
@user = User.find(params[:id])
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
= form_for(resource, :as => resource_name, :url => confirmation_path(resource_name), :html => { :method => :post }) do |f|
= devise_error_messages!
%p
= f.label :email
%br/
= f.text_field :email
%p= f.submit "Resend confirmation instructions"
= render :partial => "devise/shared/links"
.block
%h2= t("devise.confirmations.resend_header")
.content
- 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 => 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"

View File

@ -1,13 +1,26 @@
%h2= t('devise.passwords.edit')
= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :put }) do |f|
= devise_error_messages!
= f.hidden_field :reset_password_token
%p
= f.label :password
%br/
= f.password_field :password
%p
= f.label :password_confirmation
%br/
= f.password_field :password_confirmation
%p= f.submit t('devise.password.edit_button')
.block
%h2= t('devise.passwords.edit')
.content
- 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
.group.wat-cf
.left
= f.label :password, :class => "label"
.right
= f.text_field :password, :class => "text_field"
.group.wat-cf
.left
= f.label :password_confirmation, :class => "label"
.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 @@
%h2= t('devise.passwords.link')
= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post }) do |f|
= devise_error_messages!
%p
= f.label :email
%br/
= f.text_field :email
%p= f.submit t('devise.passwords.button')
.block
%h2= t('devise.passwords.link')
.content
- 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 => :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
Edit #{resource_name.to_s.humanize}
= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put }) do |f|
= devise_error_messages!
%p
= f.label :email
%br/
= f.text_field :email
%p
= f.label :password
%i (leave blank if you don't want to change it)
%br/
= f.password_field :password
%p
= f.label :password_confirmation
%br/
= f.password_field :password_confirmation
%p
= f.label :current_password
%i (we need your current password to confirm your changes)
%br/
= f.password_field :current_password
%p= f.submit "Update"
%h3 Cancel my account
%p
Unhappy? #{link_to "Cancel my account", registration_path(resource_name), :confirm => "Are you sure?", :method => :delete}.
= link_to "Back", :back
#block-signup.block
%h2 #{t("devise.registrations.edit")} #{resource_name.to_s.humanize}
.content
= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put, :class => "form" }) do |f|
- if resource.errors.present?
.flash
.message.error
- messages = resource.errors.full_messages.map { |msg| content_tag(:p, msg) }.join.html_safe
= messages
.group.wat-cf
.left
= f.label :email, :class => "label"
.right
= f.text_field :email, :class => "text_field"
.group.wat-cf
.left
= f.label :current_password, :class => "label"
.right
= f.password_field :current_password, :class => "text_field"
%span.description= t("devise.registrations.current_password_description")
.group.wat-cf
.left
= f.label :password, :class => "label"
.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
= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f|
= devise_error_messages!
%p
= f.label :email
%br/
= f.text_field :email
%p
= f.label :password
%br/
= f.password_field :password
%p
= f.label :password_confirmation
%br/
= f.password_field :password_confirmation
%p= f.submit "Sign up"
= render :partial => "devise/shared/links"
#block-signup.block
%h2= t("devise.registrations.sign_up_header")
.content
= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :class => "form" }) do |f|
- if resource.errors.present?
.flash
.message.error
- messages = resource.errors.full_messages.map { |msg| content_tag(:p, msg) }.join.html_safe
= messages
.group.wat-cf
.left
= f.label :email, :class => "label"
.right
= f.text_field :email, :class => "text_field"
.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"

View File

@ -1,18 +1,25 @@
#login_form
%h2 Вход в систему
= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f|
%p
= f.label :email
%br/
= f.text_field :email
%p
= f.label :password
%br/
= f.password_field :password
- if devise_mapping.rememberable?
%p
= f.check_box :remember_me
= f.label :remember_me
%p
= f.submit "Войти"
= link_to t('devise.passwords.link'), new_password_path(resource_name)
#block-login.block
%h2= t("layout.sessions.sign_in_header")
.content.login
- if flash.present?
.flash
- flash.each do |key, value|
.message{ :title => key.to_s.humanize, :class => (key == :alert ? "error" : key) }
%p= value
- form_for(resource, :as => resource_name, :url => session_path(resource_name), :html => { :class => "form login" }) do |f|
.group.wat-cf
.left
= f.label :email, :class => "label right"
.right
= f.text_field :email, :class => "text_field"
.group.wat-cf
.left
= f.label :password, :class => "label right"
.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'
= 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.each do |key, value|
%div{ :title => key.to_s.humanize, :class => key }
%p= value
.flash
- flash.each do |type, message|
%div{:class => "message #{type}"}
%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
:javascript
!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
= 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
-# Append your own using content_for :stylesheets
= yield :stylesheets

View File

@ -1,15 +1,32 @@
!!! 5
-# http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither
-ie_html :class => 'no-js' do
= render :partial => 'layouts/head'
%body{ :lang => 'ru', :class => "#{controller.controller_name}" }
!!!
%html
%head
%title= t("layout.global_header")
= render :partial => "layouts/stylesheets"
= render :partial => "layouts/javascripts"
= csrf_meta_tag
%body
#container
%header#header
= render :partial => 'layouts/header'
#main{ :role => 'main' }
= render :partial => 'layouts/flashes'
= yield
%footer#footer
= render :partial => 'layouts/footer'
-# Javascript at the bottom for fast page loading
= render :partial => 'layouts/javascripts'
#header
%h1
%a{:href => "/"}= t("layout.global_header")
#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
#footer
.block
#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')
- @platforms.each do |platform|
= div_for platform do
= link_to platform.name, platform
= link_to t('layout.platforms.new'), new_platform_path
.div
= link_to t('layout.user_list'), users_path
.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|
%tr{:class => cycle("odd", "even")}
%td
= link_to platform.name, platform_path(platform)
%td
= 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')
= form_for @platform do |f|
%p
= f.label :name
= f.text_field :name
%p
= f.label :unixname
= f.text_field :unixname
%p
= f.label :parent_platform_id
= f.select :parent_platform_id, @platforms.map { |p| [p.name, p.id] }, :include_blank => true
%p
= f.submit t('layout.create')
= link_to t('layout.cancel'), platforms_path
.block
.secondary-navigation
%ul.wat-cf
%li.first= link_to "#{t("layout.platforms.list")}", platforms_path
%li.active= link_to "#{t("layout.platforms.new")}", new_platform_path
.content
%h2.title
= t("layout.platforms.new_header")
.inner
= form_for :platform, :url => platforms_path, :html => { :class => :form } do |f|
= render :partial => "form", :locals => {:f => f}

View File

@ -1,24 +1,42 @@
%h1
= t('layout.platforms.show')
= @platform.name
= link_to t('layout.platforms.back_to_the_list'), platforms_path
.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.show"), platform_path
.content
.inner
%p
%b
= t("activerecord.attributes.platform.name")
\:
= @platform.name
%p
%b
= t("activerecord.attributes.platform.unixname")
\:
= @platform.unixname
%p
%b
= t("activerecord.attributes.platform.parent")
\:
- if @platform.parent
= link_to @platform.parent.name, platform_path(@platform.parent)
%p
%b
= t('layout.platforms.location')
\:
= @platform.path
.freeze
- if @platform.released?
= link_to I18n.t("layout.platforms.unfreeze"), unfreeze_platform_path(@platform), :confirm => I18n.t("layout.platforms.confirm_unfreeze")
- else
= link_to I18n.t("layout.platforms.freeze"), freeze_platform_path(@platform), :confirm => I18n.t("layout.platforms.confirm_freeze")
.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"
.location
= t('layout.platforms.location')
= @platform.path
-# Show repositories
-# Show projects
%h2= t('layout.platforms.repositories')
- @repositories.each do |repository|
= 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')
TBD
-#- content_for :sidebar, render(:partial => 'sidebar')

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
= form_for @user do |f|
%p
= f.label :name
= f.text_field :name
%p
= f.label :email
= f.text_field :email
%p
= f.submit
= link_to t('layout.users.back_to_the_list'), users_path
.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.edit"), edit_user_path
.content
%h2.title= t("layout.users.edit_header")
.inner
= form_for @user, :url => user_path(@user), :html => { :class => :form } do |f|
= render :partial => "form", :locals => {:f => f}
- content_for :sidebar, render(:partial => 'sidebar')

View File

@ -1,12 +1,31 @@
%h1= t('layout.user_list')
%ul
- @users.each do |user|
%li
= link_to user.name, edit_user_path(user)
(
%span>= user.email
)
= link_to t('layout.delete'), user_path(user), :method => :delete, :confirm => t('layout.are_you_sure')
%p
= link_to t('layout.users.new'), new_user_path
= link_to t('layout.platforms.back_to_the_list'), platforms_path
.block
.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|
%tr{:class => cycle("odd", "even")}
%td
= user.id
%td
= link_to user.name, user_path(user)
%td
= user.email
%td
= 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')
= form_for @user do |f|
%p
= f.label :name
= f.text_field :name
%p
= f.label :email
= f.text_field :email
%p
= f.submit
= link_to t('layout.users.back_to_the_list'), users_path
.block
.secondary-navigation
%ul.wat-cf
%li.first= link_to t("layout.users.list"), users_path
%li.active= link_to t("layout.users.new"), new_user_path
.content
%h2.title= t("layout.users.new_header")
.inner
= form_for :user, :url => users_path, :html => { :class => :form } do |f|
= render :partial => "form", :locals => {:f => f}
- 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:
application:
- public/stylesheets/compiled/style.css
- public/stylesheets/compiled/handheld.css
- public/stylesheets/web-app-theme/base.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: 'Вы вышли.'
passwords:
link: 'Забыли пароль?'
button: 'Отправить инструкции по восстановлению пароля на почту'
button: 'Восстановить'
send_instructions: 'Вы получите письмо с инструкциями о том, как сбросить ваш пароль, через несколько минут.'
updated: 'Ваш пароль изменен. Теперь вы можете войти.'
edit: 'Изменение пароля'
@ -23,11 +23,19 @@ ru:
link: "Не получили инструкции для подтверждения учетной записи?"
send_instructions: 'Вы получите письмо с инструкциями о том, как подтвердить вашу учетную запись.'
confirmed: 'Ваша учетная запись успешно подтверждена. Добро пожаловать.'
resend_header: 'Повторная отправка инструкций для подтверждения учетной записи'
send: "Отправить"
registrations:
link: 'Регистрация'
signed_up: 'Вы успешно зарегистрировались.'
updated: 'Ваша учетная запись изменена.'
destroyed: 'До свидания! Ваша учетная запись удалена. Надеемся вскоре снова вас увидеть.'
sign_up_header: 'Регистрация'
edit: 'Редактировать'
edit_password_description: 'Оставьте пароль пустым, если не хотите его менять'
current_password_description: 'Нам нужен ваш текущий пароль для подтверждения изменения'
cancel: 'Удалить'
cancel_confirmation: 'Вы уверены, что хотите удалить учетную запись?'
unlocks:
link: "Не получили инструкции для разблокировки учетной записи?"
send_instructions: 'Вы получите письмо с инструкциями о том, как разблокировать вашу учетную запись, через несколько минут.'

View File

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