Issue #4297: Updated color themes and testing

This commit is contained in:
dimana 2015-05-26 15:10:20 +03:00 committed by efstrian
parent 57d766346c
commit 31d760867c
11 changed files with 346 additions and 11 deletions

View file

@ -21,6 +21,9 @@ $default-border-radius: 3px;
@include linear-gradient(lighten($color,20%), darken($color,15%)); @include linear-gradient(lighten($color,20%), darken($color,15%));
} }
@mixin header-gradient($color) {
@include linear-gradient(lighten($color, 8%), darken($color, 0%), 0%, 80%);
}
@mixin linear-gradient($from, $to, $start:0%, $end:100%){ @mixin linear-gradient($from, $to, $start:0%, $end:100%){
background: mix($from,$to); background: mix($from,$to);

View file

@ -1,6 +1,91 @@
body > header { @import "mixins";
background: rgb(0,35,0);
box-shadow: 0 1px 3px rgba(0,0,0,0.9), $main-color: #00CC00;
0 25px 35px -30px rgba(255,255,255,0.4) inset; $main-color-light-dark: darken($main-color, 10%);
border-color: rgb(0,35,0); $main-color-dark: darken($main-color, 36%);
$link-color: darken($main-color, 8%);
body {
header {
@include header-gradient($main-color-dark);
border-color: $main-color-dark;
#nav_badges > #notification_dropdown {
a {
color: $link-color;
}
.view_all {
background-color: $main-color-light-dark;
}
}
#global_search > form > input {
background-color: lighten($main-color-dark, 10%);
border-color: $main-color-dark;
&:hover {
background-color: lighten($main-color-dark, 12%);
}
&:focus {
background-color: white;
}
}
ul#user_menu.active {
box-shadow: 0 1px 3px $main-color-dark;
background-color: $main-color-dark;
li {
border-color: darken($main-color-dark, 5%);
&.user-menu-item a:hover {
background-color: lighten($main-color-dark, 15%);
}
}
}
}
a,
a.tag,
.btn-link,
#main_stream .stream_element > .media a.author-name,
#hovercard h4 a,
.stream_element .from a.self {
color: $link-color;
&:hover, &:focus {
color: darken($link-color, 10%);
}
}
#publisher_textarea_wrapper > #button_container > .help-block > a {
color: lighten($link-color, 42%);
}
.btn.creation {
@include button-gradient(lighten($main-color-dark, 5%));
&:hover {
background-color: lighten($main-color-dark, 12%);
}
}
#main_stream .stream_element {
&.post_preview {
background-color: lighten($main-color, 45%);
border-color: lighten($main-color, 40%);
}
}
#leftNavBar .hoverable:hover { background-color: lighten($main-color, 45%) }
.poll_form .progress .bar { background-color: darken($main-color, 15%) }
#profile_container .profile_header #profile_horizontal_bar ul#profile_nav > li.active {
border-bottom-color: $main-color-light-dark;
}
.badge { background-color: $main-color-light-dark }
} }

View file

@ -0,0 +1,91 @@
@import "mixins";
$main-color: #1034A6;
$main-color-light-dark: darken($main-color, 5%);
$main-color-dark: darken($main-color, 18%);
$link-color: darken($main-color, 5%);
body {
header {
@include header-gradient($main-color-dark);
border-color: $main-color-dark;
#nav_badges > #notification_dropdown {
a {
color: $link-color;
}
.view_all {
background-color: $main-color-light-dark;
}
}
#global_search > form > input {
background-color: lighten($main-color-dark, 10%);
border-color: $main-color-dark;
&:hover {
background-color: lighten($main-color-dark, 12%);
}
&:focus {
background-color: white;
}
}
ul#user_menu.active {
box-shadow: 0 1px 3px $main-color-dark;
background-color: $main-color-dark;
li {
border-color: darken($main-color-dark, 5%);
&.user-menu-item a:hover {
background-color: lighten($main-color-dark, 15%);
}
}
}
}
a,
a.tag,
.btn-link,
#main_stream .stream_element > .media a.author-name,
#hovercard h4 a,
.stream_element .from a.self {
color: $link-color;
&:hover, &:focus {
color: darken($link-color, 10%);
}
}
#publisher_textarea_wrapper > #button_container > .help-block > a {
color: lighten($link-color, 38%);
}
.btn.creation {
@include button-gradient(lighten($main-color-dark, 5%));
&:hover {
background-color: lighten($main-color-dark, 12%);
}
}
#main_stream .stream_element {
&.post_preview {
background-color: lighten($main-color, 45%);
border-color: lighten($main-color, 40%);
}
}
#leftNavBar .hoverable:hover { background-color: lighten($main-color, 45%) }
.poll_form .progress .bar { background-color: darken($main-color, 15%) }
#profile_container .profile_header #profile_horizontal_bar ul#profile_nav > li.active {
border-bottom-color: $main-color-light-dark;
}
.badge { background-color: $main-color-light-dark }
}

View file

@ -0,0 +1,91 @@
@import "mixins";
$main-color: #FF00FF;
$main-color-light-dark: darken($main-color, 10%);
$main-color-dark: darken($main-color, 36%);
$link-color: darken($main-color, 8%);
body {
header {
@include header-gradient($main-color-dark);
border-color: $main-color-dark;
#nav_badges > #notification_dropdown {
a {
color: $link-color;
}
.view_all {
background-color: $main-color-light-dark;
}
}
#global_search > form > input {
background-color: lighten($main-color-dark, 10%);
border-color: $main-color-dark;
&:hover {
background-color: lighten($main-color-dark, 12%);
}
&:focus {
background-color: white;
}
}
ul#user_menu.active {
box-shadow: 0 1px 3px $main-color-dark;
background-color: $main-color-dark;
li {
border-color: darken($main-color-dark, 5%);
&.user-menu-item a:hover {
background-color: lighten($main-color-dark, 15%);
}
}
}
}
a,
a.tag,
.btn-link,
#main_stream .stream_element > .media a.author-name,
#hovercard h4 a,
.stream_element .from a.self {
color: $link-color;
&:hover, &:focus {
color: darken($link-color, 10%);
}
}
#publisher_textarea_wrapper > #button_container > .help-block > a {
color: lighten($link-color, 30%);
}
.btn.creation {
@include button-gradient(lighten($main-color-dark, 5%));
&:hover {
background-color: lighten($main-color-dark, 12%);
}
}
#main_stream .stream_element {
&.post_preview {
background-color: lighten($main-color, 45%);
border-color: lighten($main-color, 40%);
}
}
#leftNavBar .hoverable:hover { background-color: lighten($main-color, 45%) }
.poll_form .progress .bar { background-color: darken($main-color, 15%) }
#profile_container .profile_header #profile_horizontal_bar ul#profile_nav > li.active {
border-bottom-color: $main-color-light-dark;
}
.badge { background-color: $main-color-light-dark }
}

View file

@ -1,5 +1,7 @@
@import "mixins";
$main-color: #282828;
body > header { body > header {
background: rgb(30,30,30); @include header-gradient($main-color);
box-shadow: 0 1px 3px rgba(0,0,0,0.9),
0 25px 30px -25px rgba(255,255,255,0.4) inset;
} }

View file

@ -917,7 +917,7 @@ form#update_profile_form {
.submit_block { margin-bottom: 20px; } .submit_block { margin-bottom: 20px; }
} }
select#user_language, #user_auto_follow_back_aspect_id, #aspect_ids_ { select#user_language, select#user_color_theme, #user_auto_follow_back_aspect_id, #aspect_ids_ {
padding: 3px; padding: 3px;
} }

View file

@ -46,6 +46,8 @@
- if rtl? - if rtl?
= stylesheet_link_tag :rtl, :media => 'all' = stylesheet_link_tag :rtl, :media => 'all'
= stylesheet_link_tag current_color_theme, :media => "all"
= yield(:head) = yield(:head)
= include_gon(:camel_case => true) = include_gon(:camel_case => true)

View file

@ -1,3 +1,5 @@
available: available:
original: "Original dark" original: "Original Dark"
dark_green: "Dark green" dark_green: "Dark Green"
magenta: "Magenta"
egyptian_blue: "Egyptian Blue"

View file

@ -152,6 +152,17 @@ describe UsersController, :type => :controller do
end end
end end
describe "color_theme" do
it "allow the user to change his color theme" do
old_color_theme = "original"
@user.color_theme = old_color_theme
@user.save
put(:update, :id => @user.id, :user => { :color_theme => "dark_green"})
@user.reload
expect(@user.color_theme).not_to eq(old_color_theme)
end
end
describe 'email' do describe 'email' do
it 'disallow the user to change his new (unconfirmed) mail when it is the same as the old' do it 'disallow the user to change his new (unconfirmed) mail when it is the same as the old' do
@user.email = "my@newemail.com" @user.email = "my@newemail.com"

View file

@ -0,0 +1,41 @@
require 'spec_helper'
describe UsersHelper, :type => :helper do
include Devise::TestHelpers
describe "#current_color_theme" do
describe "if user is not signed in" do
before do
def user_signed_in?
false
end
end
it "returns the default color theme" do
expect(current_color_theme).to eq("color_themes/" + DEFAULT_COLOR_THEME)
end
end
describe "if user is signed in" do
before do
@user = User.new
def user_signed_in?
true
end
def current_user
@user
end
end
it "returns the default color theme if user has not selected any theme" do
expect(current_color_theme).to eq("color_themes/" + DEFAULT_COLOR_THEME)
end
it "returns the color theme selected by the user if there is a selected one" do
selected_theme = "test_theme"
@user.color_theme = selected_theme
expect(current_color_theme).to eq("color_themes/" + selected_theme)
end
end
end
end

View file

@ -364,6 +364,13 @@ describe User, :type => :model do
expect(user.language).to eq('de') expect(user.language).to eq('de')
end end
end end
describe "of color_theme" do
it "requires availability" do
alice.color_theme = "some invalid theme"
expect(alice).not_to be_valid
end
end
end end