From 9a2a8612769d472503b367fa35e99f6fb2876704 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Tue, 20 Dec 2011 22:47:09 +0200 Subject: [PATCH] Design tab for profile. Colorscheme as db value --- app/assets/images/dark.png | Bin 0 -> 16935 bytes app/assets/images/white.png | Bin 0 -> 17161 bytes app/assets/stylesheets/projects.css.scss | 12 ++++ app/controllers/profile_controller.rb | 8 ++- app/helpers/application_helper.rb | 4 +- app/models/tree.rb | 2 + app/models/user.rb | 2 +- app/views/layouts/profile.html.haml | 1 + app/views/layouts/user.html.haml | 31 ---------- app/views/profile/design.html.haml | 22 +++++++ app/views/profile/show.html.haml | 57 ++++++++++-------- app/views/refs/_tree_file.html.haml | 4 +- config/routes.rb | 3 +- ...220190817_add_coloscheme_option_to_user.rb | 5 ++ db/schema.rb | 15 ++++- 15 files changed, 100 insertions(+), 66 deletions(-) create mode 100644 app/assets/images/dark.png create mode 100644 app/assets/images/white.png delete mode 100644 app/views/layouts/user.html.haml create mode 100644 app/views/profile/design.html.haml create mode 100644 db/migrate/20111220190817_add_coloscheme_option_to_user.rb diff --git a/app/assets/images/dark.png b/app/assets/images/dark.png new file mode 100644 index 0000000000000000000000000000000000000000..055a9069b63ed88b84acceb366d3eeddd892bb9c GIT binary patch literal 16935 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 E07#+5QUCw| literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/projects.css.scss b/app/assets/stylesheets/projects.css.scss index 828b227a..33d70e30 100644 --- a/app/assets/stylesheets/projects.css.scss +++ b/app/assets/stylesheets/projects.css.scss @@ -654,3 +654,15 @@ body.project-page h2.icon.loading { background: url("ajax-loader-tree.gif") no-repeat; } } + +.dark_scheme_box { + padding:20px 0; + + label { + float:left; + box-shadow: 0 0px 5px rgba(0,0,0,.3); + + img { + } + } +} diff --git a/app/controllers/profile_controller.rb b/app/controllers/profile_controller.rb index 232bddb7..07d0a53f 100644 --- a/app/controllers/profile_controller.rb +++ b/app/controllers/profile_controller.rb @@ -4,10 +4,14 @@ class ProfileController < ApplicationController @user = current_user end - def social_update + def design + @user = current_user + end + + def update @user = current_user @user.update_attributes(params[:user]) - redirect_to [:profile] + redirect_to :back end def password diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 76323b27..4b00c9ab 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -2,9 +2,9 @@ require 'digest/md5' module ApplicationHelper include Utils::CharEncode - def gravatar_icon(user_email) + def gravatar_icon(user_email, size = 40) gravatar_host = request.ssl? ? "https://secure.gravatar.com" : "http://www.gravatar.com" - "#{gravatar_host}/avatar/#{Digest::MD5.hexdigest(user_email)}?s=40&d=identicon" + "#{gravatar_host}/avatar/#{Digest::MD5.hexdigest(user_email)}?s=#{size}&d=identicon" end def fixed_mode? diff --git a/app/models/tree.rb b/app/models/tree.rb index 6b6b2d40..6040680b 100644 --- a/app/models/tree.rb +++ b/app/models/tree.rb @@ -7,6 +7,8 @@ class Tree :name, :data, :mime_type, + :mode, + :size, :text?, :colorize, :to => :tree diff --git a/app/models/user.rb b/app/models/user.rb index 4f4c45a8..8b136de9 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -6,7 +6,7 @@ class User < ActiveRecord::Base # Setup accessible (or protected) attributes for your model attr_accessible :email, :password, :password_confirmation, :remember_me, - :name, :projects_limit, :skype, :linkedin, :twitter + :name, :projects_limit, :skype, :linkedin, :twitter, :dark_scheme has_many :users_projects, :dependent => :destroy has_many :projects, :through => :users_projects diff --git a/app/views/layouts/profile.html.haml b/app/views/layouts/profile.html.haml index c8c48138..5c4f59dd 100644 --- a/app/views/layouts/profile.html.haml +++ b/app/views/layouts/profile.html.haml @@ -19,6 +19,7 @@ %aside = link_to "Profile", profile_path, :class => current_page?(:controller => "profile", :action => :show) ? "current" : nil = link_to "Password & token", profile_password_path, :class => current_page?(:controller => "profile", :action => :password) ? "current" : nil + = link_to "Design", profile_design_path, :class => current_page?(:controller => "profile", :action => :design) ? "current" : nil = link_to keys_path, :class => controller.controller_name == "keys" ? "current" : nil do Keys - unless current_user.keys.empty? diff --git a/app/views/layouts/user.html.haml b/app/views/layouts/user.html.haml deleted file mode 100644 index 5a936450..00000000 --- a/app/views/layouts/user.html.haml +++ /dev/null @@ -1,31 +0,0 @@ -!!! -%html - %head - %title - GitLab #{" - #{current_user.name}"} - = stylesheet_link_tag "application" - = javascript_include_tag "application" - = csrf_meta_tags - = javascript_tag do - REQ_URI = "#{request.env["REQUEST_URI"]}"; - REQ_REFFER = "#{request.env["HTTP_REFERER"]}"; - %body{ :class => body_class('project-page'), :id => yield(:boyd_id)} - = render :partial => "layouts/flash" - #container - = render :partial => "layouts/head_panel" - .project-container - .project-sidebar - .fixed - %aside - = link_to issues_path, :class => current_page?(issues_path) ? "current" : nil do - Issues - - unless current_user.assigned_issues.empty? - %span{ :class => "number" }= current_user.assigned_issues.count - = link_to merge_requests_path, :class => current_page?(merge_requests_path) ? "current" : nil do - Merge Requests - - unless current_user.assigned_merge_requests.empty? - %span{ :class => "number" }= current_user.assigned_merge_requests.count - - .project-content - = yield - diff --git a/app/views/profile/design.html.haml b/app/views/profile/design.html.haml new file mode 100644 index 00000000..4a0f758d --- /dev/null +++ b/app/views/profile/design.html.haml @@ -0,0 +1,22 @@ +.ui-box.width-100p + %h3 Design + = form_for @user, :url => profile_update_path, :method => :put do |f| + .data + .left.dark_scheme_box + %label{:for => "user_dark_scheme_false"} + = image_tag "white.png", :width => 310, :height => 212 + %center + %h4 + = f.radio_button :dark_scheme, false + White code preview + .right.dark_scheme_box + %label{:for => "user_dark_scheme_true"} + = image_tag "dark.png", :width => 310, :height => 212 + %center + %h4 + = f.radio_button :dark_scheme, true + Dark code preview + .clear + .buttons + = f.submit 'Save', :class => "grey-button" + diff --git a/app/views/profile/show.html.haml b/app/views/profile/show.html.haml index 15233f70..8ebb4dcb 100644 --- a/app/views/profile/show.html.haml +++ b/app/views/profile/show.html.haml @@ -1,33 +1,38 @@ .ui-box.width-100p %h3= @user.name - = form_for @user, :url => profile_edit_path, :method => :put do |f| + = form_for @user, :url => profile_update_path, :method => :put do |f| .data - -if @user.errors.any? - #error_explanation - %ul - - @user.errors.full_messages.each do |msg| - %li= msg + .left + -if @user.errors.any? + #error_explanation + %ul + - @user.errors.full_messages.each do |msg| + %li= msg - .form-row - = f.label :name - %br - = f.text_field :name - .form-row - = f.label :email - %br - = f.text_field :email - .form-row - = f.label :skype - %br - = f.text_field :skype - .form-row - = f.label :linkedin - %br - = f.text_field :linkedin - .form-row - = f.label :twitter - %br - = f.text_field :twitter + .form-row + = f.label :name + %br + = f.text_field :name + .form-row + = f.label :email + %br + = f.text_field :email + .form-row + = f.label :skype + %br + = f.text_field :skype + .form-row + = f.label :linkedin + %br + = f.text_field :linkedin + .form-row + = f.label :twitter + %br + = f.text_field :twitter + + .right + = image_tag gravatar_icon(current_user.email,64), :width => 64, :style => "margin:5px; border:5px solid #eee;" + .clear .buttons = f.submit 'Save', :class => "grey-button" diff --git a/app/views/refs/_tree_file.html.haml b/app/views/refs/_tree_file.html.haml index fdc2469d..b32134b0 100644 --- a/app/views/refs/_tree_file.html.haml +++ b/app/views/refs/_tree_file.html.haml @@ -5,12 +5,12 @@ = name = link_to "raw", blob_project_ref_path(@project, @ref, :path => params[:path] ), :class => "right", :target => "_blank" = link_to "history", project_commits_path(@project, :path => params[:path], :ref => @ref ), :class => "right", :style => "margin-right:10px;" - = switch_colorscheme_link(:class => "right", :style => "margin-right:10px;color:orange") + -#= switch_colorscheme_link(:class => "right", :style => "margin-right:10px;color:orange") %br/ - if file.text? .view_file_content - unless file.empty? - %div{:class => cookies[:colorschema]} + %div{:class => current_user.dark_scheme ? "black" : ""} :erb <%= raw file.colorize %> - else diff --git a/config/routes.rb b/config/routes.rb index 1fbbbfd5..882ba00a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -19,8 +19,9 @@ Gitlab::Application.routes.draw do get "profile/password", :to => "profile#password" put "profile/password", :to => "profile#password_update" put "profile/reset_private_token", :to => "profile#reset_private_token" - put "profile/edit", :to => "profile#social_update" get "profile", :to => "profile#show" + get "profile/design", :to => "profile#design" + put "profile/update", :to => "profile#update" get "dashboard", :to => "dashboard#index" get "dashboard/issues", :to => "dashboard#issues" diff --git a/db/migrate/20111220190817_add_coloscheme_option_to_user.rb b/db/migrate/20111220190817_add_coloscheme_option_to_user.rb new file mode 100644 index 00000000..fe06c3aa --- /dev/null +++ b/db/migrate/20111220190817_add_coloscheme_option_to_user.rb @@ -0,0 +1,5 @@ +class AddColoschemeOptionToUser < ActiveRecord::Migration + def change + add_column :users, :dark_scheme, :boolean, :default => false, :null => false + end +end diff --git a/db/schema.rb b/db/schema.rb index 613b65cb..18a3486e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,19 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20111207211728) do +ActiveRecord::Schema.define(:version => 20111220190817) do + + create_table "features", :force => true do |t| + t.string "name" + t.string "branch_name" + t.integer "assignee_id" + t.integer "author_id" + t.integer "project_id" + t.datetime "created_at" + t.datetime "updated_at" + t.string "version" + t.integer "status", :default => 0, :null => false + end create_table "issues", :force => true do |t| t.string "title" @@ -118,6 +130,7 @@ ActiveRecord::Schema.define(:version => 20111207211728) do t.string "linkedin", :default => "", :null => false t.string "twitter", :default => "", :null => false t.string "authentication_token" + t.boolean "dark_scheme", :default => false, :null => false end add_index "users", ["email"], :name => "index_users_on_email", :unique => true