From 309b037acffbf6d8366d9c09bf7047d82b8f7b97 Mon Sep 17 00:00:00 2001 From: "Timothy N. Tsvetkov" Date: Thu, 31 Mar 2011 03:10:23 +0400 Subject: [PATCH] Paul Irish BUY BUY oMG, Using AWESOME web-app-theme --- Gemfile | 11 +- Gemfile.lock | 8 + app/controllers/application_controller.rb | 10 + app/controllers/users_controller.rb | 14 +- app/stylesheets/handheld.scss | 8 - app/stylesheets/partials/_base.scss | 23 - app/stylesheets/partials/_fonts.scss | 4 - app/stylesheets/partials/_media.scss | 21 - app/stylesheets/partials/_overrides.scss | 59 --- app/stylesheets/partials/_page.scss | 185 ------- app/stylesheets/style.scss | 28 -- app/views/devise/confirmations/new.html.haml | 31 +- app/views/devise/passwords/edit.html.haml | 39 +- app/views/devise/passwords/new.html.haml | 27 +- app/views/devise/registrations/edit.html.haml | 72 ++- app/views/devise/registrations/new.html.haml | 50 +- app/views/devise/sessions/new.html.haml | 43 +- app/views/devise/shared/_links.haml | 2 +- app/views/layouts/_flashes.html.haml | 8 +- app/views/layouts/_footer.html.haml | 1 - app/views/layouts/_head.html.haml | 28 -- app/views/layouts/_header.html.haml | 1 - app/views/layouts/_javascripts.html.haml | 31 +- app/views/layouts/_stylesheets.html.haml | 3 - app/views/layouts/application.html.haml | 45 +- app/views/layouts/sessions.html.haml | 10 + app/views/platforms/_form.html.haml | 22 + app/views/platforms/_sidebar.html.haml | 0 app/views/platforms/edit.html.haml | 13 + app/views/platforms/index.html.haml | 31 +- app/views/platforms/new.html.haml | 25 +- app/views/platforms/show.html.haml | 60 ++- .../{new.html.haml => new.old.html.haml} | 0 .../{show.html.haml => show.old.html.haml} | 0 app/views/users/_form.html.haml | 13 + app/views/users/_sidebar.html.haml | 0 app/views/users/edit.html.haml | 23 +- app/views/users/index.html.haml | 43 +- app/views/users/new.html.haml | 22 +- app/views/users/show.html.haml | 33 ++ config/assets.yml | 10 +- config/locales/devise.ru.yml | 10 +- config/locales/ru.yml | 10 +- public/apple-touch-icon.png | Bin 1893 -> 0 bytes public/images/web-app-theme/avatar.png | Bin 0 -> 3214 bytes .../web-app-theme/icons/application_edit.png | Bin 0 -> 703 bytes public/images/web-app-theme/icons/cross.png | Bin 0 -> 655 bytes public/images/web-app-theme/icons/key.png | Bin 0 -> 612 bytes public/images/web-app-theme/icons/tick.png | Bin 0 -> 537 bytes public/javascripts/dd_belatedpng.js | 13 - public/javascripts/modernizr.min.js | 2 - public/javascripts/plugins.js | 11 - public/stylesheets/web-app-theme/base.css | 410 ++++++++++++++++ public/stylesheets/web-app-theme/override.css | 1 + .../themes/default/images/arrow.png | Bin 0 -> 2846 bytes .../default/images/boxbar-background.png | Bin 0 -> 2745 bytes .../images/button-background-active.png | Bin 0 -> 2766 bytes .../default/images/button-background.png | Bin 0 -> 2765 bytes .../default/images/menubar-background.png | Bin 0 -> 2750 bytes .../web-app-theme/themes/default/style.css | 462 ++++++++++++++++++ 60 files changed, 1363 insertions(+), 613 deletions(-) delete mode 100644 app/stylesheets/handheld.scss delete mode 100644 app/stylesheets/partials/_base.scss delete mode 100644 app/stylesheets/partials/_fonts.scss delete mode 100644 app/stylesheets/partials/_media.scss delete mode 100644 app/stylesheets/partials/_overrides.scss delete mode 100644 app/stylesheets/partials/_page.scss delete mode 100644 app/stylesheets/style.scss delete mode 100644 app/views/layouts/_footer.html.haml delete mode 100644 app/views/layouts/_head.html.haml delete mode 100644 app/views/layouts/_header.html.haml create mode 100644 app/views/layouts/sessions.html.haml create mode 100644 app/views/platforms/_form.html.haml create mode 100644 app/views/platforms/_sidebar.html.haml create mode 100644 app/views/platforms/edit.html.haml rename app/views/projects/{new.html.haml => new.old.html.haml} (100%) rename app/views/projects/{show.html.haml => show.old.html.haml} (100%) create mode 100644 app/views/users/_form.html.haml create mode 100644 app/views/users/_sidebar.html.haml create mode 100644 app/views/users/show.html.haml delete mode 100644 public/apple-touch-icon.png create mode 100644 public/images/web-app-theme/avatar.png create mode 100644 public/images/web-app-theme/icons/application_edit.png create mode 100644 public/images/web-app-theme/icons/cross.png create mode 100644 public/images/web-app-theme/icons/key.png create mode 100644 public/images/web-app-theme/icons/tick.png delete mode 100644 public/javascripts/dd_belatedpng.js delete mode 100644 public/javascripts/modernizr.min.js delete mode 100644 public/javascripts/plugins.js create mode 100644 public/stylesheets/web-app-theme/base.css create mode 100644 public/stylesheets/web-app-theme/override.css create mode 100644 public/stylesheets/web-app-theme/themes/default/images/arrow.png create mode 100644 public/stylesheets/web-app-theme/themes/default/images/boxbar-background.png create mode 100644 public/stylesheets/web-app-theme/themes/default/images/button-background-active.png create mode 100644 public/stylesheets/web-app-theme/themes/default/images/button-background.png create mode 100644 public/stylesheets/web-app-theme/themes/default/images/menubar-background.png create mode 100644 public/stylesheets/web-app-theme/themes/default/style.css diff --git a/Gemfile b/Gemfile index 9a6fa1190..68de76b3d 100644 --- a/Gemfile +++ b/Gemfile @@ -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" diff --git a/Gemfile.lock b/Gemfile.lock index 1434abf45..b80e4cb30 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -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) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index e8065d950..067db12ee 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -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 diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index dab61bb92..4fb233af5 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -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 diff --git a/app/stylesheets/handheld.scss b/app/stylesheets/handheld.scss deleted file mode 100644 index b5782a455..000000000 --- a/app/stylesheets/handheld.scss +++ /dev/null @@ -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%; } diff --git a/app/stylesheets/partials/_base.scss b/app/stylesheets/partials/_base.scss deleted file mode 100644 index a77a5daf9..000000000 --- a/app/stylesheets/partials/_base.scss +++ /dev/null @@ -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 \ No newline at end of file diff --git a/app/stylesheets/partials/_fonts.scss b/app/stylesheets/partials/_fonts.scss deleted file mode 100644 index 37a6e1891..000000000 --- a/app/stylesheets/partials/_fonts.scss +++ /dev/null @@ -1,4 +0,0 @@ -// font-face fonts -// see http://compass-style.org/docs/reference/compass/css3/font_face/ - -//@import "compass/css3/font-face" diff --git a/app/stylesheets/partials/_media.scss b/app/stylesheets/partials/_media.scss deleted file mode 100644 index a3b2d4a94..000000000 --- a/app/stylesheets/partials/_media.scss +++ /dev/null @@ -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); -} \ No newline at end of file diff --git a/app/stylesheets/partials/_overrides.scss b/app/stylesheets/partials/_overrides.scss deleted file mode 100644 index 224759ebc..000000000 --- a/app/stylesheets/partials/_overrides.scss +++ /dev/null @@ -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 -} diff --git a/app/stylesheets/partials/_page.scss b/app/stylesheets/partials/_page.scss deleted file mode 100644 index 5bb7b5ac7..000000000 --- a/app/stylesheets/partials/_page.scss +++ /dev/null @@ -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; } \ No newline at end of file diff --git a/app/stylesheets/style.scss b/app/stylesheets/style.scss deleted file mode 100644 index 396092e5e..000000000 --- a/app/stylesheets/style.scss +++ /dev/null @@ -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"; diff --git a/app/views/devise/confirmations/new.html.haml b/app/views/devise/confirmations/new.html.haml index 810b8caff..feaf26526 100644 --- a/app/views/devise/confirmations/new.html.haml +++ b/app/views/devise/confirmations/new.html.haml @@ -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" \ No newline at end of file diff --git a/app/views/devise/passwords/edit.html.haml b/app/views/devise/passwords/edit.html.haml index 145739993..8857fe42a 100644 --- a/app/views/devise/passwords/edit.html.haml +++ b/app/views/devise/passwords/edit.html.haml @@ -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")} + diff --git a/app/views/devise/passwords/new.html.haml b/app/views/devise/passwords/new.html.haml index 64f01bf59..b440c0144 100644 --- a/app/views/devise/passwords/new.html.haml +++ b/app/views/devise/passwords/new.html.haml @@ -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")} \ No newline at end of file diff --git a/app/views/devise/registrations/edit.html.haml b/app/views/devise/registrations/edit.html.haml index d252d9af4..ce7201d56 100644 --- a/app/views/devise/registrations/edit.html.haml +++ b/app/views/devise/registrations/edit.html.haml @@ -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" + diff --git a/app/views/devise/registrations/new.html.haml b/app/views/devise/registrations/new.html.haml index b03da3518..d68795e70 100644 --- a/app/views/devise/registrations/new.html.haml +++ b/app/views/devise/registrations/new.html.haml @@ -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" diff --git a/app/views/devise/sessions/new.html.haml b/app/views/devise/sessions/new.html.haml index 0222968a7..d3caed1c2 100644 --- a/app/views/devise/sessions/new.html.haml +++ b/app/views/devise/sessions/new.html.haml @@ -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" \ No newline at end of file diff --git a/app/views/devise/shared/_links.haml b/app/views/devise/shared/_links.haml index ec5d37ee8..f34d98813 100644 --- a/app/views/devise/shared/_links.haml +++ b/app/views/devise/shared/_links.haml @@ -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" diff --git a/app/views/layouts/_flashes.html.haml b/app/views/layouts/_flashes.html.haml index 873d9670d..2f4c719ac 100644 --- a/app/views/layouts/_flashes.html.haml +++ b/app/views/layouts/_flashes.html.haml @@ -1,4 +1,4 @@ -#flash - - flash.each do |key, value| - %div{ :title => key.to_s.humanize, :class => key } - %p= value \ No newline at end of file +.flash + - flash.each do |type, message| + %div{:class => "message #{type}"} + %p= message \ No newline at end of file diff --git a/app/views/layouts/_footer.html.haml b/app/views/layouts/_footer.html.haml deleted file mode 100644 index 57a59e929..000000000 --- a/app/views/layouts/_footer.html.haml +++ /dev/null @@ -1 +0,0 @@ -%small.copyright \ No newline at end of file diff --git a/app/views/layouts/_head.html.haml b/app/views/layouts/_head.html.haml deleted file mode 100644 index 7eaf0b328..000000000 --- a/app/views/layouts/_head.html.haml +++ /dev/null @@ -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 \ No newline at end of file diff --git a/app/views/layouts/_header.html.haml b/app/views/layouts/_header.html.haml deleted file mode 100644 index 190fcfc50..000000000 --- a/app/views/layouts/_header.html.haml +++ /dev/null @@ -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 \ No newline at end of file diff --git a/app/views/layouts/_javascripts.html.haml b/app/views/layouts/_javascripts.html.haml index bf0d5433e..8527df5a7 100644 --- a/app/views/layouts/_javascripts.html.haml +++ b/app/views/layouts/_javascripts.html.haml @@ -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 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'); \ No newline at end of file diff --git a/app/views/layouts/_stylesheets.html.haml b/app/views/layouts/_stylesheets.html.haml index 5450f3762..96ea106a2 100644 --- a/app/views/layouts/_stylesheets.html.haml +++ b/app/views/layouts/_stylesheets.html.haml @@ -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 \ No newline at end of file diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 98de908a9..8e6bee528 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -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 + diff --git a/app/views/layouts/sessions.html.haml b/app/views/layouts/sessions.html.haml new file mode 100644 index 000000000..0ddff96d8 --- /dev/null +++ b/app/views/layouts/sessions.html.haml @@ -0,0 +1,10 @@ +!!! +%html + %head + %title= t("layout.global_header") + = include_stylesheets :sessions + = csrf_meta_tag + %body + #container + #box + = yield diff --git a/app/views/platforms/_form.html.haml b/app/views/platforms/_form.html.haml new file mode 100644 index 000000000..da1d49310 --- /dev/null +++ b/app/views/platforms/_form.html.haml @@ -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" diff --git a/app/views/platforms/_sidebar.html.haml b/app/views/platforms/_sidebar.html.haml new file mode 100644 index 000000000..e69de29bb diff --git a/app/views/platforms/edit.html.haml b/app/views/platforms/edit.html.haml new file mode 100644 index 000000000..efbea247f --- /dev/null +++ b/app/views/platforms/edit.html.haml @@ -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') diff --git a/app/views/platforms/index.html.haml b/app/views/platforms/index.html.haml index 84dce1cee..920e1a0a2 100644 --- a/app/views/platforms/index.html.haml +++ b/app/views/platforms/index.html.haml @@ -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   + - @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 \ No newline at end of file diff --git a/app/views/platforms/new.html.haml b/app/views/platforms/new.html.haml index 36a7d0283..5f44e786a 100644 --- a/app/views/platforms/new.html.haml +++ b/app/views/platforms/new.html.haml @@ -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} \ No newline at end of file diff --git a/app/views/platforms/show.html.haml b/app/views/platforms/show.html.haml index ea0b1523e..9b0b57667 100644 --- a/app/views/platforms/show.html.haml +++ b/app/views/platforms/show.html.haml @@ -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') \ No newline at end of file diff --git a/app/views/projects/new.html.haml b/app/views/projects/new.old.html.haml similarity index 100% rename from app/views/projects/new.html.haml rename to app/views/projects/new.old.html.haml diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.old.html.haml similarity index 100% rename from app/views/projects/show.html.haml rename to app/views/projects/show.old.html.haml diff --git a/app/views/users/_form.html.haml b/app/views/users/_form.html.haml new file mode 100644 index 000000000..3ff7ed8c5 --- /dev/null +++ b/app/views/users/_form.html.haml @@ -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" diff --git a/app/views/users/_sidebar.html.haml b/app/views/users/_sidebar.html.haml new file mode 100644 index 000000000..e69de29bb diff --git a/app/views/users/edit.html.haml b/app/views/users/edit.html.haml index 6a592b9d8..43e11265e 100644 --- a/app/views/users/edit.html.haml +++ b/app/views/users/edit.html.haml @@ -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') diff --git a/app/views/users/index.html.haml b/app/views/users/index.html.haml index 3a615f034..8ce9f7ae9 100644 --- a/app/views/users/index.html.haml +++ b/app/views/users/index.html.haml @@ -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   + - @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') diff --git a/app/views/users/new.html.haml b/app/views/users/new.html.haml index 7e26da0fa..66abe5e24 100644 --- a/app/views/users/new.html.haml +++ b/app/views/users/new.html.haml @@ -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') diff --git a/app/views/users/show.html.haml b/app/views/users/show.html.haml new file mode 100644 index 000000000..ab8c9d039 --- /dev/null +++ b/app/views/users/show.html.haml @@ -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') diff --git a/config/assets.yml b/config/assets.yml index 311acd453..4a33810c5 100644 --- a/config/assets.yml +++ b/config/assets.yml @@ -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 diff --git a/config/locales/devise.ru.yml b/config/locales/devise.ru.yml index 0c389de48..3c8afa0bd 100644 --- a/config/locales/devise.ru.yml +++ b/config/locales/devise.ru.yml @@ -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: 'Вы получите письмо с инструкциями о том, как разблокировать вашу учетную запись, через несколько минут.' diff --git a/config/locales/ru.yml b/config/locales/ru.yml index c2614fd5e..65bb2a8f0 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -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: Пустой репозиторий diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png deleted file mode 100644 index 1f1972bd8c2bd077e4b4cd4ea0697475c19df731..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1893 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 lXs&IrKfQB(uEoyT++I zn$b9r%cFfhHe2K68PkBu*@^<$y+7xQ$wJ~;c5aBx$R=xq*41Wo zhwQus_VOgm0hughj}MhOvs#{>Vg09Y8WxjWUJY5YW zJ?&8eG!59Cz=|E%Ns@013KLWOLV)CObIIj_5{>{#k%TEAMs_GbdDV`x-iYsGH z#=Z{USAQA>NY(}X7=3{K8#nmX^MrbE*gmZ6|p*GkKoxa?X?hD9M+@sRvFH{EqYA??u6x z2pu{uGnrwz*>rh zfvUA@7b#acN?M*mBG3rQV?e^+0R5m3YXWyRZL5Bt@3vAw{9JaEW$}=f4bXO52yBH{ z;G~ZN|GLn>k~{On3Swd-Sy(gFkOdyw-RP%&exwl01RJRp))TI*SsngruhZksQ*NT%!X?K0000Hs{AQG2a)rMyf zFQK~pm1x3+7!nu%-M`k}``c>^00{o_1pjWJUTfl8mg=3qGEl8H@}^@w`VUx0_$uy4 z2FhRqKX}xI*?Tv1DJd8z#F#0c%*~rM30HE1@2o5m~}ZyoWhqv>ql{V z1ZGE0lgcoK^lx+eqc*rAX1Ky;Xx3U%u#zG!m-;eD1Qsn@kf3|F9qz~|95=&g3(7!X zB}JAT>RU;a%vaNOGnJ%e1=K6eAh43c(QN8RQ6~GP%O}Jju$~Ld*%`mO1p. -* Author: Drew Diller -* Email: drew.diller@gmail.com -* URL: http://www.dillerdesign.com/experiment/DD_belatedPNG/ -* Version: 0.0.8a -* Licensed under the MIT License: http://dillerdesign.com/experiment/DD_belatedPNG/#license -* -* Example usage: -* DD_belatedPNG.fix('.png_bg'); // argument is a CSS selector -* DD_belatedPNG.fixPng( someNode ); // argument is an HTMLDomElement -**/ -var DD_belatedPNG={ns:"DD_belatedPNG",imgSize:{},delay:10,nodesFixed:0,createVmlNameSpace:function(){if(document.namespaces&&!document.namespaces[this.ns]){document.namespaces.add(this.ns,"urn:schemas-microsoft-com:vml")}},createVmlStyleSheet:function(){var b,a;b=document.createElement("style");b.setAttribute("media","screen");document.documentElement.firstChild.insertBefore(b,document.documentElement.firstChild.firstChild);if(b.styleSheet){b=b.styleSheet;b.addRule(this.ns+"\\:*","{behavior:url(#default#VML)}");b.addRule(this.ns+"\\:shape","position:absolute;");b.addRule("img."+this.ns+"_sizeFinder","behavior:none; border:none; position:absolute; z-index:-1; top:-10000px; visibility:hidden;");this.screenStyleSheet=b;a=document.createElement("style");a.setAttribute("media","print");document.documentElement.firstChild.insertBefore(a,document.documentElement.firstChild.firstChild);a=a.styleSheet;a.addRule(this.ns+"\\:*","{display: none !important;}");a.addRule("img."+this.ns+"_sizeFinder","{display: none !important;}")}},readPropertyChange:function(){var b,c,a;b=event.srcElement;if(!b.vmlInitiated){return}if(event.propertyName.search("background")!=-1||event.propertyName.search("border")!=-1){DD_belatedPNG.applyVML(b)}if(event.propertyName=="style.display"){c=(b.currentStyle.display=="none")?"none":"block";for(a in b.vml){if(b.vml.hasOwnProperty(a)){b.vml[a].shape.style.display=c}}}if(event.propertyName.search("filter")!=-1){DD_belatedPNG.vmlOpacity(b)}},vmlOpacity:function(b){if(b.currentStyle.filter.search("lpha")!=-1){var a=b.currentStyle.filter;a=parseInt(a.substring(a.lastIndexOf("=")+1,a.lastIndexOf(")")),10)/100;b.vml.color.shape.style.filter=b.currentStyle.filter;b.vml.image.fill.opacity=a}},handlePseudoHover:function(a){setTimeout(function(){DD_belatedPNG.applyVML(a)},1)},fix:function(a){if(this.screenStyleSheet){var c,b;c=a.split(",");for(b=0;bn.H){i.B=n.H}d.vml.image.shape.style.clip="rect("+i.T+"px "+(i.R+a)+"px "+i.B+"px "+(i.L+a)+"px)"}else{d.vml.image.shape.style.clip="rect("+f.T+"px "+f.R+"px "+f.B+"px "+f.L+"px)"}},figurePercentage:function(d,c,f,a){var b,e;e=true;b=(f=="X");switch(a){case"left":case"top":d[f]=0;break;case"center":d[f]=0.5;break;case"right":case"bottom":d[f]=1;break;default:if(a.search("%")!=-1){d[f]=parseInt(a,10)/100}else{e=false}}d[f]=Math.ceil(e?((c[b?"W":"H"]*d[f])-(c[b?"w":"h"]*d[f])):parseInt(a,10));if(d[f]%2===0){d[f]++}return d[f]},fixPng:function(c){c.style.behavior="none";var g,b,f,a,d;if(c.nodeName=="BODY"||c.nodeName=="TD"||c.nodeName=="TR"){return}c.isImg=false;if(c.nodeName=="IMG"){if(c.src.toLowerCase().search(/\.png$/)!=-1){c.isImg=true;c.style.visibility="hidden"}else{return}}else{if(c.currentStyle.backgroundImage.toLowerCase().search(".png")==-1){return}}g=DD_belatedPNG;c.vml={color:{},image:{}};b={shape:{},fill:{}};for(a in c.vml){if(c.vml.hasOwnProperty(a)){for(d in b){if(b.hasOwnProperty(d)){f=g.ns+":"+d;c.vml[a][d]=document.createElement(f)}}c.vml[a].shape.stroked=false;c.vml[a].shape.appendChild(c.vml[a].fill);c.parentNode.insertBefore(c.vml[a].shape,c)}}c.vml.image.shape.fillcolor="none";c.vml.image.fill.type="tile";c.vml.color.fill.on=false;g.attachHandlers(c);g.giveLayout(c);g.giveLayout(c.offsetParent);c.vmlInitiated=true;g.applyVML(c)}};try{document.execCommand("BackgroundImageCache",false,true)}catch(r){}DD_belatedPNG.createVmlNameSpace();DD_belatedPNG.createVmlStyleSheet(); \ No newline at end of file diff --git a/public/javascripts/modernizr.min.js b/public/javascripts/modernizr.min.js deleted file mode 100644 index 6f54850c0..000000000 --- a/public/javascripts/modernizr.min.js +++ /dev/null @@ -1,2 +0,0 @@ -// Modernizr v1.7 www.modernizr.com -window.Modernizr=function(a,b,c){function G(){e.input=function(a){for(var b=0,c=a.length;b7)},r.history=function(){return !!(a.history&&history.pushState)},r.draganddrop=function(){return x("dragstart")&&x("drop")},r.websockets=function(){return"WebSocket"in a},r.rgba=function(){A("background-color:rgba(150,255,150,.5)");return D(k.backgroundColor,"rgba")},r.hsla=function(){A("background-color:hsla(120,40%,100%,.5)");return D(k.backgroundColor,"rgba")||D(k.backgroundColor,"hsla")},r.multiplebgs=function(){A("background:url(//:),url(//:),red url(//:)");return(new RegExp("(url\\s*\\(.*?){3}")).test(k.background)},r.backgroundsize=function(){return F("backgroundSize")},r.borderimage=function(){return F("borderImage")},r.borderradius=function(){return F("borderRadius","",function(a){return D(a,"orderRadius")})},r.boxshadow=function(){return F("boxShadow")},r.textshadow=function(){return b.createElement("div").style.textShadow===""},r.opacity=function(){B("opacity:.55");return/^0.55$/.test(k.opacity)},r.cssanimations=function(){return F("animationName")},r.csscolumns=function(){return F("columnCount")},r.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";A((a+o.join(b+a)+o.join(c+a)).slice(0,-a.length));return D(k.backgroundImage,"gradient")},r.cssreflections=function(){return F("boxReflect")},r.csstransforms=function(){return!!E(["transformProperty","WebkitTransform","MozTransform","OTransform","msTransform"])},r.csstransforms3d=function(){var a=!!E(["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"]);a&&"webkitPerspective"in g.style&&(a=w("@media ("+o.join("transform-3d),(")+"modernizr)"));return a},r.csstransitions=function(){return F("transitionProperty")},r.fontface=function(){var a,c,d=h||g,e=b.createElement("style"),f=b.implementation||{hasFeature:function(){return!1}};e.type="text/css",d.insertBefore(e,d.firstChild),a=e.sheet||e.styleSheet;var i=f.hasFeature("CSS2","")?function(b){if(!a||!b)return!1;var c=!1;try{a.insertRule(b,0),c=/src/i.test(a.cssRules[0].cssText),a.deleteRule(a.cssRules.length-1)}catch(d){}return c}:function(b){if(!a||!b)return!1;a.cssText=b;return a.cssText.length!==0&&/src/i.test(a.cssText)&&a.cssText.replace(/\r+|\n+/g,"").indexOf(b.split(" ")[0])===0};c=i('@font-face { font-family: "font"; src: url(data:,); }'),d.removeChild(e);return c},r.video=function(){var a=b.createElement("video"),c=!!a.canPlayType;if(c){c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"');var d='video/mp4; codecs="avc1.42E01E';c.h264=a.canPlayType(d+'"')||a.canPlayType(d+', mp4a.40.2"'),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"')}return c},r.audio=function(){var a=b.createElement("audio"),c=!!a.canPlayType;c&&(c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"'),c.mp3=a.canPlayType("audio/mpeg;"),c.wav=a.canPlayType('audio/wav; codecs="1"'),c.m4a=a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;"));return c},r.localstorage=function(){try{return!!localStorage.getItem}catch(a){return!1}},r.sessionstorage=function(){try{return!!sessionStorage.getItem}catch(a){return!1}},r.webWorkers=function(){return!!a.Worker},r.applicationcache=function(){return!!a.applicationCache},r.svg=function(){return!!b.createElementNS&&!!b.createElementNS(q.svg,"svg").createSVGRect},r.inlinesvg=function(){var a=b.createElement("div");a.innerHTML="";return(a.firstChild&&a.firstChild.namespaceURI)==q.svg},r.smil=function(){return!!b.createElementNS&&/SVG/.test(n.call(b.createElementNS(q.svg,"animate")))},r.svgclippaths=function(){return!!b.createElementNS&&/SVG/.test(n.call(b.createElementNS(q.svg,"clipPath")))};for(var H in r)z(r,H)&&(v=H.toLowerCase(),e[v]=r[H](),u.push((e[v]?"":"no-")+v));e.input||G(),e.crosswindowmessaging=e.postmessage,e.historymanagement=e.history,e.addTest=function(a,b){a=a.toLowerCase();if(!e[a]){b=!!b(),g.className+=" "+(b?"":"no-")+a,e[a]=b;return e}},A(""),j=l=null,f&&a.attachEvent&&function(){var a=b.createElement("div");a.innerHTML="";return a.childNodes.length!==1}()&&function(a,b){function p(a,b){var c=-1,d=a.length,e,f=[];while(++cX+uL$Nkc;* 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 literal 0 HcmV?d00001 diff --git a/public/stylesheets/web-app-theme/themes/default/images/boxbar-background.png b/public/stylesheets/web-app-theme/themes/default/images/boxbar-background.png new file mode 100644 index 0000000000000000000000000000000000000000..1c3c81977c0c991060eee70eb2e4b14a5599d233 GIT binary patch literal 2745 zcmV;q3P$ybP)X+uL$Nkc;* zP;zf(X>4Tx0C)kNmUmQB*%pV-y*Itk5+Wca^cs2zAksTX6$DXM^`x7XQc?|s+0 z08spb1j2M!0f022SQPH-!CVp(%f$Br7!UytSOLJ{W@ZFO_(THK{JlMynW#v{v-a*T zfMmPdEWc1DbJqWVks>!kBnAKqMb$PuekK>?0+ds;#ThdH1j_W4DKdsJG8Ul;qO2n0 z#IJ1jr{*iW$(WZWsE0n`c;fQ!l&-AnmjxZO1uWyz`0VP>&nP`#itsL#`S=Q!g`M=rU9)45( zJ;-|dRq-b5&z?byo>|{)?5r=n76A4nTALlSzLiw~v~31J<>9PP?;rs31pu_(obw)r zY+jPY;tVGXi|p)da{-@gE-UCa`=5eu%D;v=_nFJ?`&K)q7e9d`Nfk3?MdhZarb|T3 z%nS~f&t(1g5dY)AIcd$w!z`Siz!&j_=v7hZlnI21XuE|xfmo0(WD10T)!}~_HYW!e zew}L+XmwuzeT6wtxJd`dZ#@7*BLgIEKY9Xv>st^p3dp{^Xswa2bB{85{^$B13tWnB z;Y>jyQ|9&zk7RNsqAVGs--K+z0uqo1bf5|}fi5rtEMN^BfHQCd-XH*kfJhJnmIE$G z0%<@5vOzxB0181d*a3EfYH$G5fqKvcPJ%XY23!PJzzuK<41h;K3WmW;Fah3yX$XSw z5EY_9s*o0>51B&N5F1(uc|$=^I1~fLLy3?Ol0f;;Ca4%HgQ}rJP(Ab`bQ-z{U4#0d z2hboi2K@njgb|nm(_szR0JebHusa+GN5aeCM0gdP2N%HG;Yzp`J`T6S7vUT504#-H z!jlL<$Or?`Mpy_N@kBz9SR?@vA#0H$qyni$nvf2p8@Y{0k#Xb$28W?xm>3qu8RLgp zjNxKdVb)?wFx8l2m{v>|<~C*!GlBVnrDD~wrdTJeKXwT=5u1%I#8zOBU|X=4u>;s) z>^mF|$G{ol9B_WP7+f-LHLe7=57&&lfa}8z;U@8Tyei%l?}87(bMRt(A-)QK9Dg3) zj~~XrCy)tR1Z#p1A(kK{Y$Q|=8VKhI{e%(1G*N-5Pjn)N5P8I0VkxnX*g?EW941ba z6iJ387g8iCnY4jaNopcpCOsy-A(P2EWJhusSwLP-t|XrzUnLKcKTwn?CKOLf97RIe zPB}`sKzTrUL#0v;sBY9)s+hW+T2H-1eM)^VN0T#`^Oxhvt&^*fYnAJldnHel*Ozyf zUoM{~Um<@={-*r60#U(0!Bc^wuvVc);k3d%g-J!4qLpHZVwz%!VuRu}#Ze`^l7W)9 z5>Kf>>9Eozr6C$Z)1`URxU@~QI@)F0FdauXr2Es8>BaOP=)Lp_WhG@>R;lZ?BJkMlIuMhw8ApiF&yDYW2hFJ?fJhni{?u z85&g@mo&yT8JcdI$(rSw=QPK(Xj%)k1X|@<=e1rim6`6$RAwc!i#egKuI;BS(LSWz zt39n_sIypSqfWEV6J3%nTQ@-4i zi$R;gsG*9XzhRzXqv2yCs*$VFDx+GXJH|L;wsDH_KI2;^u!)^Xl1YupO;gy^-c(?^ z&$Q1BYvyPsG^;hc$D**@Sy`+`)}T4VJji^bd7Jqw3q6Zii=7tT7GEswEK@D(EFW1Z zSp`^awCb?>!`j4}Yh7b~$A)U-W3$et-R8BesV(1jzwLcHnq9En7Q0Tn&-M=XBKs!$ zF$X<|c!#|X_tWYh)GZit z(Q)Cp9CDE^WG;+fcyOWARoj*0TI>4EP1lX*cEoMO-Pk?Z{kZ!p4@(b`M~lalr<3Oz z&kJ6Nm#vN_+kA5{dW4@^Vjg_`q%qU1ULk& z3Fr!>1V#i_2R;ij2@(Z$1jE4r!MlPVFVbHmT+|iPIq0wy5aS{>yK?9ZAjVh%SOwMWgFjair&;wpi!{CU}&@N=Eg#~ zLQ&zpEzVmGY{hI9Z0+4-0xS$$Xe-OToc?Y*V;rTcf_ zb_jRe-RZjXSeas3UfIyD;9afd%<`i0x4T#DzE)vdabOQ=k7SRuGN`h>O0Q~1)u-yD z>VX=Mn&!Rgd$;YK+Q-}1zu#?t(*cbG#Ronf6db&N$oEidtwC+YVcg-Y!_VuY>bk#Y ze_ww@?MU&F&qswvrN_dLb=5o6*Egs)ls3YRlE$&)amR1{;Ppd$6RYV^Go!iq1UMl% z@#4q$AMc(FJlT1QeX8jv{h#)>&{~RGq1N2iiMFIRX?sk2-|2wUogK~{EkB$8eDsX= znVPf8XG_nK&J~=SIiGia@9y}|z3FhX{g&gcj=lwb=lWgyFW&aLedUh- zof`v-2Kw$UzI*>(+&$@i-u=-BsSjR1%z8NeX#HdC`Hh-Z(6xI-`hmHDqv!v)W&&nrf>M(RhcN6(D;jNN*%^u_SYjF;2ng}*8Ow)d6M ztDk;%`@Lsk$;9w$(d(H%O5UixIr`T2ZRcd@X+uL$Nkc;* zP;zf(X>4Tx0C)kNmUmQB*%pV-y*Itk5+Wca^cs2zAksTX6$DXM^`x7XQc?|s+0 z08spb1j2M!0f022SQPH-!CVp(%f$Br7!UytSOLJ{W@ZFO_(THK{JlMynW#v{v-a*T zfMmPdEWc1DbJqWVks>!kBnAKqMb$PuekK>?0+ds;#ThdH1j_W4DKdsJG8Ul;qO2n0 z#IJ1jr{*iW$(WZWsE0n`c;fQ!l&-AnmjxZO1uWyz`0VP>&nP`#itsL#`S=Q!g`M=rU9)45( zJ;-|dRq-b5&z?byo>|{)?5r=n76A4nTALlSzLiw~v~31J<>9PP?;rs31pu_(obw)r zY+jPY;tVGXi|p)da{-@gE-UCa`=5eu%D;v=_nFJ?`&K)q7e9d`Nfk3?MdhZarb|T3 z%nS~f&t(1g5dY)AIcd$w!z`Siz!&j_=v7hZlnI21XuE|xfmo0(WD10T)!}~_HYW!e zew}L+XmwuzeT6wtxJd`dZ#@7*BLgIEKY9Xv>st^p3dp{^Xswa2bB{85{^$B13tWnB z;Y>jyQ|9&zk7RNsqAVGs--K+z0uqo1bf5|}fi5rtEMN^BfHQCd-XH*kfJhJnmIE$G z0%<@5vOzxB0181d*a3EfYH$G5fqKvcPJ%XY23!PJzzuK<41h;K3WmW;Fah3yX$XSw z5EY_9s*o0>51B&N5F1(uc|$=^I1~fLLy3?Ol0f;;Ca4%HgQ}rJP(Ab`bQ-z{U4#0d z2hboi2K@njgb|nm(_szR0JebHusa+GN5aeCM0gdP2N%HG;Yzp`J`T6S7vUT504#-H z!jlL<$Or?`Mpy_N@kBz9SR?@vA#0H$qyni$nvf2p8@Y{0k#Xb$28W?xm>3qu8RLgp zjNxKdVb)?wFx8l2m{v>|<~C*!GlBVnrDD~wrdTJeKXwT=5u1%I#8zOBU|X=4u>;s) z>^mF|$G{ol9B_WP7+f-LHLe7=57&&lfa}8z;U@8Tyei%l?}87(bMRt(A-)QK9Dg3) zj~~XrCy)tR1Z#p1A(kK{Y$Q|=8VKhI{e%(1G*N-5Pjn)N5P8I0VkxnX*g?EW941ba z6iJ387g8iCnY4jaNopcpCOsy-A(P2EWJhusSwLP-t|XrzUnLKcKTwn?CKOLf97RIe zPB}`sKzTrUL#0v;sBY9)s+hW+T2H-1eM)^VN0T#`^Oxhvt&^*fYnAJldnHel*Ozyf zUoM{~Um<@={-*r60#U(0!Bc^wuvVc);k3d%g-J!4qLpHZVwz%!VuRu}#Ze`^l7W)9 z5>Kf>>9Eozr6C$Z)1`URxU@~QI@)F0FdauXr2Es8>BaOP=)Lp_WhG@>R;lZ?BJkMlIuMhw8ApiF&yDYW2hFJ?fJhni{?u z85&g@mo&yT8JcdI$(rSw=QPK(Xj%)k1X|@<=e1rim6`6$RAwc!i#egKuI;BS(LSWz zt39n_sIypSqfWEV6J3%nTQ@-4i zi$R;gsG*9XzhRzXqv2yCs*$VFDx+GXJH|L;wsDH_KI2;^u!)^Xl1YupO;gy^-c(?^ z&$Q1BYvyPsG^;hc$D**@Sy`+`)}T4VJji^bd7Jqw3q6Zii=7tT7GEswEK@D(EFW1Z zSp`^awCb?>!`j4}Yh7b~$A)U-W3$et-R8BesV(1jzwLcHnq9En7Q0Tn&-M=XBKs!$ zF$X<|c!#|X_tWYh)GZit z(Q)Cp9CDE^WG;+fcyOWARoj*0TI>4EP1lX*cEoMO-Pk?Z{kZ!p4@(b`M~lalr<3Oz z&kJ6Nm#vN_+kA5{dW4@^Vjg_`q%qU1ULk& z3Fr!>1V#i_2R;ij2@(Z$1jE4r!MlPVFVbHmT+|iPIq0wy5aS{>yK?9ZAjVh%SOwMWgFjair&;wpi!{CU}&@N=Eg#~ zLQ&zpEzVmGY{hI9Z0+4-0xS$$Xe-OToc?Y*V;rTcf_ zb_jRe-RZjXSeas3UfIyD;9afd%<`i0x4T#DzE)vdabOQ=k7SRuGN`h>O0Q~1)u-yD z>VX=Mn&!Rgd$;YK+Q-}1zu#?t(*cbG#Ronf6db&N$oEidtwC+YVcg-Y!_VuY>bk#Y ze_ww@?MU&F&qswvrN_dLb=5o6*Egs)ls3YRlE$&)amR1{;Ppd$6RYV^Go!iq1UMl% z@#4q$AMc(FJlT1QeX8jv{h#)>&{~RGq1N2iiMFIRX?sk2-|2wUogK~{EkB$8eDsX= znVPf8XG_nK&J~=SIiGia@9y}|z3FhX{g&gcj=lwb=lWgyFW&aLedUh- zof`v-2Kw$UzI*>(+&$@i-u=-BsSjR1%z8NeX#HdC`Hh-Z(6xI-`hmHDqv!v)W&&nrf>M(RhcN6(D;jNN*%^u_SYjF;2ng}*8Ow)d6M ztDk;%`@Lsk$;9w$(d(H%O5UixIr`T2ZRcd@%bH2*AXcnVG?Sm>8S`Wgx2uvKjvW|Bvhz0QQRp ULE5jxDgXcg07*qoM6N<$f?@?ywEzGB literal 0 HcmV?d00001 diff --git a/public/stylesheets/web-app-theme/themes/default/images/button-background.png b/public/stylesheets/web-app-theme/themes/default/images/button-background.png new file mode 100644 index 0000000000000000000000000000000000000000..cb030cf76f31ac659a24aaca29302f59ba3649b3 GIT binary patch literal 2765 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 literal 0 HcmV?d00001 diff --git a/public/stylesheets/web-app-theme/themes/default/style.css b/public/stylesheets/web-app-theme/themes/default/style.css new file mode 100644 index 000000000..cc048dfd6 --- /dev/null +++ b/public/stylesheets/web-app-theme/themes/default/style.css @@ -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; +}