From 627efddf6343735ed95e49ac9b71d7929c879ea3 Mon Sep 17 00:00:00 2001 From: randx Date: Tue, 10 Apr 2012 08:51:08 +0300 Subject: [PATCH] migrated to bootstrap 2 --- Gemfile | 2 +- Gemfile.lock | 5 +- app/assets/javascripts/merge_requests.js | 8 +- app/assets/stylesheets/common.scss | 355 +------------- app/assets/stylesheets/gitlab_bootstrap.scss | 440 ++++++++++++++++++ app/assets/stylesheets/main.scss | 9 + app/assets/stylesheets/tree.scss | 10 +- app/assets/stylesheets/ui_basic.scss | 12 +- app/helpers/application_helper.rb | 2 +- app/views/admin/projects/show.html.haml | 2 +- app/views/commits/_head.html.haml | 2 +- app/views/dashboard/index.html.haml | 2 +- app/views/issues/_head.html.haml | 2 +- app/views/issues/index.html.haml | 4 +- app/views/layouts/_head_panel.html.haml | 2 +- app/views/merge_requests/_form.html.haml | 28 +- app/views/merge_requests/index.html.haml | 2 +- app/views/merge_requests/show.html.haml | 2 +- app/views/milestones/_form.html.haml | 34 +- app/views/milestones/index.html.haml | 2 +- app/views/profile/design.html.haml | 47 +- app/views/profile/password.html.haml | 88 ++-- app/views/profile/show.html.haml | 56 +-- app/views/projects/_project_head.html.haml | 2 +- app/views/projects/index.html.haml | 4 +- app/views/projects/show.html.haml | 30 +- app/views/projects/team.html.haml | 6 +- app/views/protected_branches/index.html.haml | 4 +- app/views/refs/_tree_file.html.haml | 6 +- app/views/refs/tree.html.haml | 2 +- .../repositories/_branches_head.html.haml | 2 +- app/views/repositories/branches.html.haml | 2 +- app/views/repositories/tags.html.haml | 2 +- app/views/search/show.html.haml | 4 +- app/views/team_members/_show.html.haml | 4 +- app/views/team_members/show.html.haml | 9 +- db/schema.rb | 40 +- 37 files changed, 687 insertions(+), 546 deletions(-) create mode 100644 app/assets/stylesheets/gitlab_bootstrap.scss diff --git a/Gemfile b/Gemfile index 0703b382..24bc6502 100644 --- a/Gemfile +++ b/Gemfile @@ -31,7 +31,7 @@ gem "httparty" gem "charlock_holmes" gem "foreman" gem "omniauth-ldap" -gem 'bootstrap-sass', "1.4.4" +gem 'bootstrap-sass', "2.0.2" gem "colored" gem 'yaml_db', :git => "https://github.com/gitlabhq/yaml_db.git" gem 'modularity' diff --git a/Gemfile.lock b/Gemfile.lock index 3808242b..30dc519d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -71,8 +71,7 @@ GEM awesome_print (1.0.2) bcrypt-ruby (3.0.1) blankslate (2.1.2.4) - bootstrap-sass (1.4.4) - sass-rails (~> 3.1) + bootstrap-sass (2.0.2) builder (3.0.0) capybara (1.1.2) mime-types (>= 1.16) @@ -306,7 +305,7 @@ DEPENDENCIES autotest autotest-rails awesome_print - bootstrap-sass (= 1.4.4) + bootstrap-sass (= 2.0.2) capybara carrierwave charlock_holmes diff --git a/app/assets/javascripts/merge_requests.js b/app/assets/javascripts/merge_requests.js index b051928e..481f1e01 100644 --- a/app/assets/javascripts/merge_requests.js +++ b/app/assets/javascripts/merge_requests.js @@ -4,18 +4,18 @@ var MergeRequest = { init: function() { - $(".tabs a").live("click", function() { - $(".tabs a").parent().removeClass("active"); + $(".nav-tabs a").live("click", function() { + $(".nav-tabs a").parent().removeClass("active"); $(this).parent().addClass("active"); }); - $(".tabs a.merge-notes-tab").live("click", function(e) { + $(".nav-tabs a.merge-notes-tab").live("click", function(e) { $(".merge-request-diffs").hide(); $(".merge_request_notes").show(); e.preventDefault(); }); - $(".tabs a.merge-diffs-tab").live("click", function(e) { + $(".nav-tabs a.merge-diffs-tab").live("click", function(e) { if(!MergeRequest.diffs_loaded) { MergeRequest.loadDiff(); } diff --git a/app/assets/stylesheets/common.scss b/app/assets/stylesheets/common.scss index 89729e5c..d531411d 100644 --- a/app/assets/stylesheets/common.scss +++ b/app/assets/stylesheets/common.scss @@ -1,190 +1,20 @@ -a { - outline: none; - color: $link_color; - &:hover { - text-decoration:none; - color: $blue_link; - } - - &.btn { - color: $style_color; - } - - &.dark { - color: $style_color; - } - - &.lined { - text-decoration:underlined; - } - - &.gray { - color:gray; - } - - &.supp_diff_link { - text-align:center; - padding:20px 0; - background:#f1f1f1; - width:100%; - float:left; - } - - &.neib { - margin-right:15px; - } -} - -.btn { - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f1f1f1), color-stop(25%, #f1f1f1), to(#e6e6e6)); - background-image: -webkit-linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6); - background-image: -moz-linear-gradient(top, #f1f1f1, #f1f1f1 25%, #e6e6e6); - background-image: -ms-linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6); - background-image: -o-linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6); - background-image: linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6); - - &:hover { - } - - &.primary { - background:$link_color; - &:hover { - background:$blue_link; - } - } -} - -a:focus { - outline: none; -} - -.vlink { - color: $link_color !important; -} - -.pills a:hover { - background-color:#ccc; -} - -.pills .active a { - background-color: #aaa; -} - -.label { - background-color: #474D57; -} - -.pretty_label { - @include round-borders-all(4px); - padding:2px 4px; - background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8)); - background-image: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8); - background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8); - background-image: -o-linear-gradient(#fefefe 7.6%, #F6F7F8); - color: #777; - border: 1px solid #DEDFE1; - - &.branch { - border:none; - font-size:13px; - background: #474D57; - color:#fff; - font-family: monospace; - } -} - -.event_label { - background: #FCEEC1; - padding:0 2px; - font-family: monospace; -} - -.tabs > li > a, .pills > li > a { - color:$style_color; -} - .diff_file_header a, .file_stats a { color:$style_color; } -/** COLORS **/ -.cgray { color:gray; } -.cred { color:#D12F19; } -.cgreen { color:#44aa22; } -.cblack { color:#111; } -.cwhite { color:#fff !important } - -/** COMMON STYLES **/ -.left { - float:left; -} -.right { - float:right !important; -} -.width-50p{ - width:50%; -} -.width-49p{ - width:49%; -} -.width-30p{ - width:30%; -} -.width-65p{ - width:65%; -} -.width-100p{ - width:100%; -} -.append-bottom-10 { - margin-bottom:10px; -} -.append-bottom-20 { - margin-bottom:20px; -} -.prepend-top-10 { - margin-top:10px; -} - -.prepend-top-20 { - margin-top:20px; -} - -.padded { - padding:20px; -} - -.ipadded { - padding:20px !important; -} -.lborder { - border-left:1px solid #eee; -} -.no-borders { - border:none; -} -table.no-borders { - border:none; - tr, td { border:none } -} -.no-padding { - padding:0 !important; -} -.underlined { - border-bottom: 1px solid $border_color; -} /** LAYOUT **/ .container { - width:$min_app_width; padding-top:0; z-index:5; + min-width:$min_app_width; + padding:0 20px } .container .content { - margin:0 $app_padding; + margin:0 0; } .container .sidebar { @@ -212,7 +42,7 @@ header { cursor: pointer; img { border-radius: 4px; - right: 20px; + right: 0px; position: absolute; width: 33px; height: 33px; @@ -271,7 +101,7 @@ header { border-radius: 5px; width: 100px; position: absolute; - right: 20px; + right: 10px; top: 46px; margin-top: 0; float: right; @@ -319,7 +149,7 @@ header { nav.main_menu { border-radius: 4px; margin: auto; - margin:30px $app_padding; + margin:30px 0; background:#eee; border:1px solid #bbb; height:38px; @@ -338,6 +168,14 @@ nav.main_menu { color:$style_color; } a { + // Landscape phone to portrait tablet + @media (max-width: 1080px) { min-width:35px; } + // Portrait tablet to landscape and desktop + @media (min-width: 1080px) and (max-width: 1200px) { min-width:40px; } + // Large desktop + @media (min-width: 1200px) { min-width:55px; } + + text-align:center; font-weight:bold; &:first-child{ -webkit-border-top-left-radius: 4px; @@ -357,7 +195,7 @@ nav.main_menu { &.home { background: url(home_icon.PNG) no-repeat center center; text-indent:-9999px; - min-width:40px; + //min-width:40px; img { position:relative; top:4px; @@ -377,23 +215,6 @@ nav.main_menu { * */ - - -img.avatar { - float:left; - margin-right:15px; - width:40px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -img.lil_av { - padding-left: 5px; - position: relative; - top: 3px; -} - .profile_avatar_holder { float:left; width:60px; @@ -406,67 +227,11 @@ img.lil_av { } } -.wll { - background-color: #FFF; - padding: 10px 5px; - min-height: 20px; - border-bottom: 1px solid #eee; - border-bottom: 1px solid rgba(0, 0, 0, 0.05); - cursor:pointer; - &.smoke { - background-color:#f5f5f5; - } - &:hover { - background:$hover; - } - &:last-child { border:none } - p { padding-top:5px; margin:0; color:$style_color;} - .author { color: #999; } - p { - color:#222; - margin-bottom: 0; - img { - position:relative; - top:3px; - } - } -} .visible_link, .author_link { color: $link_color; } -.entry { - position: relative; - padding: 7px 15px; - margin-bottom: 18px; - color: #404040; - filter:none; - - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); - text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); - - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); - - background:#F1F1F1; - border: 1px solid #ccc; - - - p { - color:$style_color; - margin-bottom: 0; - img { - position:relative; - top:3px; - } - } -} .widget { @include shade; @@ -492,86 +257,6 @@ img.lil_av { } } - -.ui-box { - margin-bottom: 40px; - @include round-borders-all(4px); - @include shade; - border-color:#ddd; - - ul { - margin:0; - } - - h5, .title { - padding: 0 10px; - background:#f5f5f5; - border-bottom: 1px solid #eee; - @include round-borders-top(4px); - border-top:none; - - form { - padding:9px 0; - margin:0px; - } - - .pills { - li { - padding:3px 0; - &.active a { background-color:$style_color; } - a { - border-radius:7px; - } - } - } - } - - .bottom { - background:#f5f5f5; - border-top: 1px solid #eee; - @include round-borders-bottom(4px); - border-bottom:none; - } - - &.padded { - h5, .title { - margin: -20px; - margin-bottom: 0; - padding: 5px 20px; - } - .middle_title { - background:#f5f5f5; - margin:20px -20px; - padding: 0 20px; - border-top:1px solid #eee; - border-bottom:1px solid #eee; - font-size:14px; - color:#777; - } - } - .row_title { - font-weight:bold; - color:#444; - &:hover { - text-decoration:underline; - } - } - - li, .wll { - padding:10px; - &:first-child { - @include round-borders-top(4px); - border-top:none; - } - - &:last-child { - @include round-borders-bottom(4px); - border:none; - } - } - -} - .help li { color:#111 } .back_link { @@ -591,11 +276,6 @@ img.lil_av { } } -.borders { - border: 1px solid #ccc; - @include shade; -} - .download_repo_link { background: url("images.png") no-repeat 0 -48px; padding-left:20px; @@ -623,6 +303,7 @@ table a code { .btn.padded { margin-right:3px; + padding:4px 10px 4px; } .loading { @@ -726,7 +407,7 @@ a.project-update.titled { input.git_clone_url { - width:475px; + width:325px; } .merge-request-form-holder { @@ -874,7 +555,7 @@ li.commit { } code { - padding:4px; + padding:0px; } } p.time { diff --git a/app/assets/stylesheets/gitlab_bootstrap.scss b/app/assets/stylesheets/gitlab_bootstrap.scss new file mode 100644 index 00000000..42493f59 --- /dev/null +++ b/app/assets/stylesheets/gitlab_bootstrap.scss @@ -0,0 +1,440 @@ +a { + outline: none; + color: $link_color; + &:hover { + text-decoration:none; + color: $blue_link; + } + + &.btn { + color: $style_color; + } + + &.dark { + color: $style_color; + } + + &.lined { + text-decoration:underlined; + } + + &.gray { + color:gray; + } + + &.supp_diff_link { + text-align:center; + padding:20px 0; + background:#f1f1f1; + width:100%; + float:left; + } + + &.neib { + margin-right:15px; + } +} + +.alert-message { + @extend .alert; + + &.success { + @extend .alert-success; + } + + &.error { + @extend .alert-error; + } +} + +.alert { + &.alert-well { + background:#ddd; + border:1px solid #ccc; + background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #ddd), to(#dfdfdf)); + background-image: -webkit-linear-gradient(#ddd 6.6%, #dfdfdf); + background-image: -moz-linear-gradient(#ddd 6.6%, #dfdfdf); + background-image: -o-linear-gradient(#ddd 6.6%, #dfdfdf); + color:#111; + } +} + +h3, h4, h5, h6 { + line-height: 36px; +} + +code { + background:#FCEEC1; + color:$style_color; +} + +table { + width:100%; + th { + padding-top: 9px; + font-weight: bold; + vertical-align: middle; + } + th, td { + padding: 10px 10px 9px; + line-height: 18px; + text-align: left; + } + + &.bordered-table { + border: 1px solid #DDD; + border-collapse: separate; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + } + + &.zebra-striped { + @extend .table-striped; + } +} + +.btn { + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f1f1f1), color-stop(25%, #f1f1f1), to(#e6e6e6)); + background-image: -webkit-linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6); + background-image: -moz-linear-gradient(top, #f1f1f1, #f1f1f1 25%, #e6e6e6); + background-image: -ms-linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6); + background-image: -o-linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6); + background-image: linear-gradient(#f1f1f1, #f1f1f1 25%, #e6e6e6); + + &:hover { + } + + &.btn-primary { + background:$link_color; + &:hover { + background:$blue_link; + } + } + &.danger, + &.btn-danger { + background:#DD4B39; + color:white; + border-color:#990000; + text-shadow:0 0 1px #111; + &:hover { + color:white; + background:#DD0000; + } + } + + &.small { + @extend .btn-small; + } +} + +a:focus { + outline: none; +} + +.nav-pills a:hover { + background-color:#ccc; +} + +.nav-pills .active a { + background-color: #aaa; +} + +.label { + background-color: #474D57; +} + +.nav-tabs > li > a, .nav-pills > li > a { + color:$style_color; +} + +/** COLORS **/ +.cgray { color:gray; } +.cred { color:#D12F19; } +.cgreen { color:#44aa22; } +.cblack { color:#111; } +.cwhite { color:#fff !important } + +/** COMMON STYLES **/ +.left { + float:left; +} +.right { + float:right !important; +} +.width-50p{ + width:50%; +} +.width-49p{ + width:49%; +} +.width-30p{ + width:30%; +} +.width-65p{ + width:65%; +} +.width-100p{ + width:100%; +} +.append-bottom-10 { + margin-bottom:10px; +} +.append-bottom-20 { + margin-bottom:20px; +} +.prepend-top-10 { + margin-top:10px; +} + +.prepend-top-20 { + margin-top:20px; +} + +.padded { + padding:20px; +} + +.ipadded { + padding:20px !important; +} +.lborder { + border-left:1px solid #eee; +} + +.borders { + border: 1px solid #ccc; + @include shade; +} +.no-borders { + border:none; +} +table.no-borders { + border:none; + tr, td { border:none } +} +.no-padding { + padding:0 !important; +} +.underlined { + border-bottom: 1px solid $border_color; +} +.vlink { + color: $link_color !important; +} + +.pretty_label { + @include round-borders-all(4px); + padding:2px 4px; + background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #fefefe), to(#F6F7F8)); + background-image: -webkit-linear-gradient(#fefefe 7.6%, #F6F7F8); + background-image: -moz-linear-gradient(#fefefe 7.6%, #F6F7F8); + background-image: -o-linear-gradient(#fefefe 7.6%, #F6F7F8); + color: #777; + border: 1px solid #DEDFE1; + + &.branch { + border:none; + font-size:13px; + background: #474D57; + color:#fff; + font-family: monospace; + } +} + +.event_label { + background: #FCEEC1; + padding:0 2px; + font-family: monospace; +} + +img.avatar { + float:left; + margin-right:15px; + width:40px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +img.lil_av { + padding-left: 4px; + padding-right:3px; +} + +form { + @extend .form-horizontal; + + .actions { + @extend .form-actions; + } + + .clearfix { + @extend .control-group; + } + + .input { + @extend .controls; + } + + label { + @extend .control-label; + } + .xlarge { + @extend .input-xlarge; + } + .xxlarge { + @extend .input-xxlarge; + } +} + +/** + * List li block element #1 + * + */ +.wll { + background-color: #FFF; + padding: 10px 5px; + min-height: 20px; + border-bottom: 1px solid #eee; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); + cursor:pointer; + &.smoke { + background-color:#f5f5f5; + } + &:hover { + background:$hover; + } + &:last-child { border:none } + p { padding-top:5px; margin:0; color:$style_color;} + .author { color: #999; } + p { + color:#222; + margin-bottom: 0; + img { + position:relative; + top:3px; + } + } +} + + +/** + * Block element #2 + * + */ +.entry { + position: relative; + padding: 7px 15px; + margin-bottom: 18px; + color: #404040; + filter:none; + + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + + background:#F1F1F1; + border: 1px solid #ccc; + + + p { + color:$style_color; + margin-bottom: 0; + img { + position:relative; + top:3px; + } + } +} + + +/** + * Big UI Block for show page content + * + */ +.ui-box { + margin-bottom: 40px; + @include round-borders-all(4px); + @include shade; + border-color:#ddd; + + ul { + margin:0; + } + + h5, .title { + padding: 0 10px; + background:#f5f5f5; + border-bottom: 1px solid #eee; + @include round-borders-top(4px); + border-top:none; + + form { + padding:9px 0; + margin:0px; + } + + .pills { + li { + padding:3px 0; + &.active a { background-color:$style_color; } + a { + border-radius:7px; + } + } + } + } + + .bottom { + background:#f5f5f5; + border-top: 1px solid #eee; + @include round-borders-bottom(4px); + border-bottom:none; + } + + &.padded { + h5, .title { + margin: -20px; + margin-bottom: 0; + padding: 5px 20px; + } + .middle_title { + background:#f5f5f5; + margin:20px -20px; + padding: 0 20px; + border-top:1px solid #eee; + border-bottom:1px solid #eee; + font-size:14px; + color:#777; + } + } + .row_title { + font-weight:bold; + color:#444; + &:hover { + text-decoration:underline; + } + } + + li, .wll { + padding:10px; + &:first-child { + @include round-borders-top(4px); + border-top:none; + } + + &:last-child { + @include round-borders-bottom(4px); + border:none; + } + } + +} diff --git a/app/assets/stylesheets/main.scss b/app/assets/stylesheets/main.scss index 4fec0633..141f2acb 100644 --- a/app/assets/stylesheets/main.scss +++ b/app/assets/stylesheets/main.scss @@ -1,4 +1,5 @@ @import "bootstrap"; +@import "bootstrap-responsive"; /** GITLAB colors **/ $text_color:#222; @@ -75,6 +76,14 @@ $hover: #FDF5D9; */ @import "ui_mars.scss"; +/** + * Gitlab bootstrap. + * Overrides some styles of twitter bootstrap. + * Also give some common classes for gitlab app + */ +@import "gitlab_bootstrap.scss"; + + /** * Most of application styles placed here. * This file represent common UI that should not be changed between themes diff --git a/app/assets/stylesheets/tree.scss b/app/assets/stylesheets/tree.scss index 91711a0d..969aaa9d 100644 --- a/app/assets/stylesheets/tree.scss +++ b/app/assets/stylesheets/tree.scss @@ -124,14 +124,17 @@ .tree-item { .tree-item-file-name { + vertical-align:middle; font-weight:bold; a { color:$style_color; + &:hover { + color:$blue_link; + } } img { position: relative; - top: 2px; } } } @@ -139,6 +142,10 @@ ul.breadcrumb { background:white; border:none; + li { + display: inline; + text-shadow: 0 1px 0 white + } a { color:#474D57; @@ -149,6 +156,7 @@ #tree-slider { @include shade; + width:100%; border-color:#ccc; diff --git a/app/assets/stylesheets/ui_basic.scss b/app/assets/stylesheets/ui_basic.scss index a1e6133d..cd6b0e13 100644 --- a/app/assets/stylesheets/ui_basic.scss +++ b/app/assets/stylesheets/ui_basic.scss @@ -63,15 +63,11 @@ } } } - .wrapper { - margin:auto; - min-width:$min_app_width; - max-width:$max_app_width; - position:relative; - padding:15px 0; - + .container { .top_panel_content { - margin:0 $app_padding; + margin:auto; + position:relative; + padding:15px 0; } } diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index a69a1a0b..0516338f 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -123,7 +123,7 @@ module ApplicationHelper end def app_theme - if current_user && current_user.theme_id == 1 + if true#current_user && current_user.theme_id == 1 "ui_basic" else "ui_mars" diff --git a/app/views/admin/projects/show.html.haml b/app/views/admin/projects/show.html.haml index e3f5c3b5..a387fc72 100644 --- a/app/views/admin/projects/show.html.haml +++ b/app/views/admin/projects/show.html.haml @@ -31,7 +31,7 @@ = @admin_project.description -.span-14 +.span12 %h3 Team diff --git a/app/views/commits/_head.html.haml b/app/views/commits/_head.html.haml index 6951c3a2..c9f12aac 100644 --- a/app/views/commits/_head.html.haml +++ b/app/views/commits/_head.html.haml @@ -1,4 +1,4 @@ -%ul.tabs +%ul.nav.nav-tabs %li = form_tag switch_project_refs_path(@project), :method => :get, :class => "project-refs-form" do = select_tag "ref", grouped_options_refs, :onchange => "$(this.form).trigger('submit');", :class => "project-refs-select" diff --git a/app/views/dashboard/index.html.haml b/app/views/dashboard/index.html.haml index acef7c51..8985d5c6 100644 --- a/app/views/dashboard/index.html.haml +++ b/app/views/dashboard/index.html.haml @@ -42,7 +42,7 @@ %br = link_to profile_path, :class => "btn" do Your Profile ยป - .span12.left= render "dashboard/projects_feed", :projects => @active_projects + .span8.left= render "dashboard/projects_feed", :projects => @active_projects - if @last_push && @last_push.valid_push? .padded.prepend-top-20 %h5 diff --git a/app/views/issues/_head.html.haml b/app/views/issues/_head.html.haml index 9fede71d..99c61d75 100644 --- a/app/views/issues/_head.html.haml +++ b/app/views/issues/_head.html.haml @@ -1,4 +1,4 @@ -.tabs +%ul.nav.nav-tabs %li{:class => "#{'active' if current_page?(project_issues_path(@project))}"} = link_to project_issues_path(@project), :class => "tab" do Browse Issues diff --git a/app/views/issues/index.html.haml b/app/views/issues/index.html.haml index e0afa71f..b6212fc6 100644 --- a/app/views/issues/index.html.haml +++ b/app/views/issues/index.html.haml @@ -22,7 +22,7 @@ .title .row .span6 - %ul.pills.left + %ul.nav.nav-pills.left %li{:class => ("active" if (params[:f] == "0" || !params[:f]))} = link_to project_issues_path(@project, :f => 0) do Open @@ -36,7 +36,7 @@ = link_to project_issues_path(@project, :f => 1) do All - .span6.right + .span4.right = form_tag project_issues_path(@project), :method => :get, :class => :right do = select_tag(:milestone_id, options_from_collection_for_select(@project.milestones.order("id desc").all, "id", "title", params[:milestone_id]), :prompt => "Select milestone") diff --git a/app/views/layouts/_head_panel.html.haml b/app/views/layouts/_head_panel.html.haml index 70c8f9e9..c3a75b46 100644 --- a/app/views/layouts/_head_panel.html.haml +++ b/app/views/layouts/_head_panel.html.haml @@ -1,6 +1,6 @@ / Page Header %header.top_panel_holder - .wrapper + .container .top_panel_content %div.app_logo = link_to root_path, :class => "home", :title => "Home" do diff --git a/app/views/merge_requests/_form.html.haml b/app/views/merge_requests/_form.html.haml index 8ec3f63c..f2ddc9a5 100644 --- a/app/views/merge_requests/_form.html.haml +++ b/app/views/merge_requests/_form.html.haml @@ -1,29 +1,29 @@ -= form_for [@project, @merge_request] do |f| += form_for [@project, @merge_request], :html => { :class => "new_merge_request form-horizontal" } do |f| -if @merge_request.errors.any? .alert-message.block-message.error %ul - @merge_request.errors.full_messages.each do |msg| %li= msg - .clearfix - = f.label :title - .input= f.text_area :title, :class => "xxlarge", :maxlength => 255, :rows => 5 - .clearfix - = f.label :source_branch, "From" - .input + .control-group + = f.label :title, :class => "control-label" + .controls= f.text_area :title, :class => "input-xxlarge", :maxlength => 255, :rows => 5 + .control-group + = f.label :source_branch, "From", :class => "control-label" + .controls = f.select(:source_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px") .mr_source_commit - .clearfix - = f.label :target_branch, "To" - .input + .control-group + = f.label :target_branch, "To", :class => "control-label" + .controls = f.select(:target_branch, @project.heads.map(&:name), { :include_blank => "Select branch" }, :style => "width:250px") .mr_target_commit .clearfix - = f.label :assignee_id, "Assign to" - .input= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }, :style => "width:250px") + = f.label :assignee_id, "Assign to", :class => "control-label" + .controls= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }, :style => "width:250px") - .actions - = f.submit 'Save', :class => "primary btn" + .form-actions + = f.submit 'Save', :class => "btn-primary btn" - if @merge_request.new_record? = link_to project_merge_requests_path(@project), :class => "btn" do Cancel diff --git a/app/views/merge_requests/index.html.haml b/app/views/merge_requests/index.html.haml index 9a03d195..9c7a67ad 100644 --- a/app/views/merge_requests/index.html.haml +++ b/app/views/merge_requests/index.html.haml @@ -8,7 +8,7 @@ .ui-box .title - %ul.pills + %ul.nav.nav-pills %li{:class => ("active" if (params[:f] == "0" || !params[:f]))} = link_to project_merge_requests_path(@project, :f => 0) do Open diff --git a/app/views/merge_requests/show.html.haml b/app/views/merge_requests/show.html.haml index ef83b1e4..95274f42 100644 --- a/app/views/merge_requests/show.html.haml +++ b/app/views/merge_requests/show.html.haml @@ -56,7 +56,7 @@ = render "merge_requests/commits" - unless @commits.empty? - .tabs + .nav.nav-tabs %li.active = link_to "#notes", :class => "merge-notes-tab tab" do Notes diff --git a/app/views/milestones/_form.html.haml b/app/views/milestones/_form.html.haml index 6c3e37a7..46d7daf9 100644 --- a/app/views/milestones/_form.html.haml +++ b/app/views/milestones/_form.html.haml @@ -5,33 +5,33 @@ %hr -= form_for [@project, @milestone] do |f| += form_for [@project, @milestone], :html => {:class => "new_milestone form-horizontal"} do |f| -if @milestone.errors.any? .alert-message.block-message.error %ul - @milestone.errors.full_messages.each do |msg| %li= msg .row - .span7 - .clearfix - = f.label :title, "Title" - .input - = f.text_field :title, :maxlength => 255, :class => "xlarge" - %p.hint Required - .clearfix - = f.label :description, "Description" - .input - = f.text_area :description, :maxlength => 2000, :class => "xlarge", :rows => 10 - %p.hint Markdown is enabled. - .span8 - .clearfix - = f.label :due_date, "Due Date" + .span6 + .control-group + = f.label :title, "Title", :class => "control-label" + .controls + = f.text_field :title, :maxlength => 255, :class => "input-xlarge" + %p.help-block Required + .control-group + = f.label :description, "Description", :class => "control-label" + .controls + = f.text_area :description, :maxlength => 2000, :class => "input-xlarge", :rows => 10 + %p.help-block Markdown is enabled. + .span6 + .control-group + = f.label :due_date, "Due Date", :class => "control-label" .input= f.hidden_field :due_date - .input + .controls .datepicker - .actions + .form-actions - if @milestone.new_record? = f.submit 'Create milestone', :class => "primary btn" -else diff --git a/app/views/milestones/index.html.haml b/app/views/milestones/index.html.haml index e55e58b2..faa87e02 100644 --- a/app/views/milestones/index.html.haml +++ b/app/views/milestones/index.html.haml @@ -7,7 +7,7 @@ %br %div.ui-box .title - %ul.pills + %ul.nav.nav-pills %li{:class => ("active" if (params[:f] == "0" || !params[:f]))} = link_to project_milestones_path(@project, :f => 0) do Active diff --git a/app/views/profile/design.html.haml b/app/views/profile/design.html.haml index 11ab7333..85f3d0ca 100644 --- a/app/views/profile/design.html.haml +++ b/app/views/profile/design.html.haml @@ -1,30 +1,33 @@ = form_for @user, :url => profile_update_path, :remote => true, :method => :put do |f| - %h3 Application theme - %hr - .clearfix - = label_tag do - = f.radio_button :theme_id, 1 - Default + -#%div + %h3 Application theme + %hr + .clearfix + = label_tag do + = f.radio_button :theme_id, 1 + Default - = label_tag do - = f.radio_button :theme_id, 2 - Classic - %br + = label_tag do + = f.radio_button :theme_id, 2 + Classic + %br %h3 Code review %hr .row - %label.span4{:for => "user_dark_scheme_false"} - %center - %h4 - = f.radio_button :dark_scheme, false - White code preview - = image_tag "white.png", :width => 210, :class => "styled_image" - %label.span4{:for => "user_dark_scheme_true"} - %center - %h4 - = f.radio_button :dark_scheme, true - Dark code preview - = image_tag "dark.png", :width => 210, :class => "styled_image" + %label.span3{:for => "user_dark_scheme_false"} + .thumbnail + = image_tag "white.png", :width => 260, :class => "styled_image" + .caption + %h5 + = f.radio_button :dark_scheme, false + White code preview + %label.span3{:for => "user_dark_scheme_true"} + .thumbnail + = image_tag "dark.png", :width => 260, :class => "styled_image" + .caption + %h5 + = f.radio_button :dark_scheme, true + Dark code preview :javascript $(function(){ diff --git a/app/views/profile/password.html.haml b/app/views/profile/password.html.haml index 350d6801..0234785b 100644 --- a/app/views/profile/password.html.haml +++ b/app/views/profile/password.html.haml @@ -1,46 +1,50 @@ .row - .span8 - %h3 Password - %hr - = form_for @user, :url => profile_password_path, :method => :put do |f| - .data - .alert-message.block-message.warning - %p After successfull password update you will be redirected to login page where you should login with new password - -if @user.errors.any? - .alert-message.block-message.error - %ul - - @user.errors.full_messages.each do |msg| - %li= msg + .span6 + .thumbnail + .caption + %h3 Password + %hr + = form_for @user, :url => profile_password_path, :method => :put do |f| + .data + .alert-message.block-message.warning + %p After successfull password update you will be redirected to login page where you should login with new password + -if @user.errors.any? + .alert-message.block-message.error + %ul + - @user.errors.full_messages.each do |msg| + %li= msg - .clearfix - = f.label :password - .input= f.password_field :password - .clearfix - = f.label :password_confirmation - .input= f.password_field :password_confirmation - .actions - = f.submit 'Save', :class => "btn" - - .span7.right - %h3 - Private token - %span.cred.right - keep it in secret! - %hr - = form_for @user, :url => profile_reset_private_token_path, :method => :put do |f| - .data - .alert-message.block-message.warning - %p Private token used to access application resources without authentication. + .clearfix + = f.label :password + .input= f.password_field :password + .clearfix + = f.label :password_confirmation + .input= f.password_field :password_confirmation %hr - %p * required for rss feed - %p.cgray - - if current_user.private_token - = text_field_tag "token", current_user.private_token - - else - You don`t have one yet. Click generate to fix it. - .actions - - if current_user.private_token - = f.submit 'Reset', :confirm => "Are you sure?", :class => "btn" - - else - = f.submit 'Generate', :class => "btn" + = f.submit 'Save', :class => "btn" + + .span6.right + .thumbnail + .caption + %h3 + Private token + %span.cred.right + keep it in secret! + %hr + = form_for @user, :url => profile_reset_private_token_path, :method => :put do |f| + .data + .alert-message.block-message.warning + %p Private token used to access application resources without authentication. + %hr + %p * required for rss feed + %p.cgray + - if current_user.private_token + = text_field_tag "token", current_user.private_token + - else + You don`t have one yet. Click generate to fix it. + %hr + - if current_user.private_token + = f.submit 'Reset', :confirm => "Are you sure?", :class => "btn" + - else + = f.submit 'Generate', :class => "btn" diff --git a/app/views/profile/show.html.haml b/app/views/profile/show.html.haml index 293ccd91..4b153956 100644 --- a/app/views/profile/show.html.haml +++ b/app/views/profile/show.html.haml @@ -1,5 +1,5 @@ .row - .span10 + .span8 .profile_avatar_holder = image_tag gravatar_icon(@user.email, 90), :class => "styled_image" %h3 @@ -8,7 +8,7 @@ %small = @user.email - .span6.right + .span4.right %div %div %h5.cgray @@ -23,45 +23,45 @@ %span= current_user.keys.count %hr -= form_for @user, :url => profile_update_path, :method => :put do |f| += form_for @user, :url => profile_update_path, :method => :put, :html => { :class => "edit_user form-horizontal" } do |f| -if @user.errors.any? %div.alert-message.block-message.error %ul - @user.errors.full_messages.each do |msg| %li= msg .row - .span9 - .clearfix - = f.label :name - .input - = f.text_field :name, :class => "xlarge" + .span7 + .control-group + = f.label :name, :class => "control-label" + .controls + = f.text_field :name, :class => "input-xlarge" %span.help-block Enter youre name, so people you know can recognize you. - .clearfix - = f.label :email - .input - = f.text_field :email, :class => "xlarge" + .control-group + = f.label :email, :class => "control-label" + .controls + = f.text_field :email, :class => "input-xlarge" %span.help-block We also use email for avatar detection - .clearfix - = f.label :skype - .input= f.text_field :skype, :class => "xlarge" - .clearfix - = f.label :linkedin - .input= f.text_field :linkedin, :class => "xlarge" - .clearfix - = f.label :twitter - .input= f.text_field :twitter, :class => "xlarge" - .clearfix - = f.label :bio - .input - = f.text_area :bio, :rows => 6, :class => "xlarge", :maxlength => 250 + .control-group + = f.label :skype, :class => "control-label" + .controls= f.text_field :skype, :class => "input-xlarge" + .control-group + = f.label :linkedin, :class => "control-label" + .controls= f.text_field :linkedin, :class => "input-xlarge" + .control-group + = f.label :twitter, :class => "control-label" + .controls= f.text_field :twitter, :class => "input-xlarge" + .control-group + = f.label :bio, :class => "control-label" + .controls + = f.text_area :bio, :rows => 6, :class => "input-xlarge", :maxlength => 250 %span.help-block About yourself in fewer than 250 characters. - .span7.right + .span5.right %p.alert-message.block-message %strong Tip: You can change your avatar at gravatar.com - .actions - = f.submit 'Save', :class => "primary btn" + .form-actions + = f.submit 'Save', :class => "btn-primary btn" -#= link_to "New project", new_project_path, :class => "btn small padded" -#= link_to "New public key", new_key_path, :class => "btn small" diff --git a/app/views/projects/_project_head.html.haml b/app/views/projects/_project_head.html.haml index 7102b5dc..074a0f52 100644 --- a/app/views/projects/_project_head.html.haml +++ b/app/views/projects/_project_head.html.haml @@ -1,4 +1,4 @@ -%ul.tabs +%ul.nav.nav-tabs %li{ :class => "#{'active' if current_page?(project_path(@project)) }" } = link_to project_path(@project), :class => "activities-tab tab" do Show diff --git a/app/views/projects/index.html.haml b/app/views/projects/index.html.haml index fee6363d..68edd9b4 100644 --- a/app/views/projects/index.html.haml +++ b/app/views/projects/index.html.haml @@ -1,8 +1,8 @@ - if @projects.any? .row - .span11 + .span8 = render @events - .span5.right + .span4.right %div.leftbar.ui-box %h5 Projects diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml index dd2f768e..4c57db7e 100644 --- a/app/views/projects/show.html.haml +++ b/app/views/projects/show.html.haml @@ -1,9 +1,18 @@ = render "project_head" -.main_box - .top_box_content - %h3 - = @project.name - %span.right + +.alert.alert-info + .row + -#.span2 + .back_link + = link_to projects_path do + ← To projects list + .span7 + .form-horizontal + .input-prepend + %span.add-on git clone + = text_field_tag :project_clone, @project.url_to_repo, :class => "one_click_select span5" + .span4.right + .right - if can? current_user, :download_code, @project = link_to "Download", archive_project_repository_path(@project), :class => "btn small padded" - if @project.merge_requests_enabled && can?(current_user, :write_merge_request, @project) @@ -12,18 +21,7 @@ - if @project.issues_enabled && can?(current_user, :write_issue, @project) = link_to new_project_issue_path(@project), :title => "New Issue", :class => "btn small" do Issue - .back_link - = link_to projects_path do - ← To projects list - .middle_box_content - .input - .input-prepend - %span.add-on git clone - = text_field_tag :project_clone, @project.url_to_repo, :class => "xlarge one_click_select git_clone_url" - - if @project.description.present? - .bottom_box_content - .markdown= markdown @project.description - unless @events.blank? %br %h5.cgray diff --git a/app/views/projects/team.html.haml b/app/views/projects/team.html.haml index 7f2d6dcc..391436f8 100644 --- a/app/views/projects/team.html.haml +++ b/app/views/projects/team.html.haml @@ -1,10 +1,12 @@ = render "project_head" - if can? current_user, :admin_team_member, @project - .alert-message.block-message + .alert.alert-info = link_to new_project_team_member_path(@project), :class => "btn small right", :title => "New Team Member" do New Team Member - %p Read more about project permissions #{link_to "here", help_permissions_path, :class => "vlink"} + %p + Read more about project permissions + %strong= link_to "here", help_permissions_path, :class => "vlink" %p To open team member profile - click on avatar. diff --git a/app/views/protected_branches/index.html.haml b/app/views/protected_branches/index.html.haml index de04cc08..392a135d 100644 --- a/app/views/protected_branches/index.html.haml +++ b/app/views/protected_branches/index.html.haml @@ -1,6 +1,6 @@ = render "repositories/branches_head" -.alert-message.block-message +.alert %p Protected branches designed to prevent push for all except #{link_to "masters", help_permissions_path, :class => "vlink"}. %p This ability allows: %ul @@ -11,7 +11,7 @@ - unless @branches.empty? - %table.zebra-striped + %table.table-striped %thead %tr %th Name diff --git a/app/views/refs/_tree_file.html.haml b/app/views/refs/_tree_file.html.haml index 69b7c886..120964fa 100644 --- a/app/views/refs/_tree_file.html.haml +++ b/app/views/refs/_tree_file.html.haml @@ -4,14 +4,14 @@ .row .span1.file_icon= image_tag(file.image? ? "file_img.png" : "file_txt.png") .span2.mode_text= file.mode - .span7.file_name= name - .span4.right + .span5.file_name= name + .span3.right = 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;" - if file.text? .view_file_content - unless file.empty? - %div{:class => current_user.dark_scheme ? "black" : ""} + %div{:class => current_user.dark_scheme ? "black" : "white"} :erb <%= raw file.colorize %> - else diff --git a/app/views/refs/tree.html.haml b/app/views/refs/tree.html.haml index ece6f188..165d7788 100644 --- a/app/views/refs/tree.html.haml +++ b/app/views/refs/tree.html.haml @@ -1,4 +1,4 @@ -%ul.tabs +%ul.nav.nav-tabs %li = form_tag switch_project_refs_path(@project), :method => :get, :class => "project-refs-form", :remote => true do = select_tag "ref", grouped_options_refs, :onchange => "$(this.form).trigger('submit');", :class => "project-refs-select" diff --git a/app/views/repositories/_branches_head.html.haml b/app/views/repositories/_branches_head.html.haml index 9a189498..dd0b343b 100644 --- a/app/views/repositories/_branches_head.html.haml +++ b/app/views/repositories/_branches_head.html.haml @@ -1,5 +1,5 @@ = render "commits/head" -%ul.pills +%ul.nav.nav-pills %li{:class => ("active" if current_page?(project_repository_path(@project)))} = link_to project_repository_path(@project) do Recent diff --git a/app/views/repositories/branches.html.haml b/app/views/repositories/branches.html.haml index c56b54d5..75e34da5 100644 --- a/app/views/repositories/branches.html.haml +++ b/app/views/repositories/branches.html.haml @@ -1,6 +1,6 @@ = render "repositories/branches_head" - unless @branches.empty? - %table.zebra-striped.borders + %table.table-striped.borders %tbody - @branches.each do |branch| = render "repositories/branch", :branch => branch diff --git a/app/views/repositories/tags.html.haml b/app/views/repositories/tags.html.haml index 16113853..7e1442d9 100644 --- a/app/views/repositories/tags.html.haml +++ b/app/views/repositories/tags.html.haml @@ -1,6 +1,6 @@ = render "commits/head" - unless @tags.empty? - %table.zebra-striped.borders + %table.table-striped.borders - @tags.each do |tag| %tr %td diff --git a/app/views/search/show.html.haml b/app/views/search/show.html.haml index a524b7b4..69a0a704 100644 --- a/app/views/search/show.html.haml +++ b/app/views/search/show.html.haml @@ -2,8 +2,8 @@ .padded = label_tag :search, "Looking for" .input - = text_field_tag :search, params[:search],:placeholder => "issue 143", :class => "xxlarge" - = submit_tag 'Search', :class => "btn primary" + = text_field_tag :search, params[:search],:placeholder => "issue 143", :class => "input-xxlarge" + = submit_tag 'Search', :class => "btn btn-primary" - if params[:search].present? %br %h3 Search results diff --git a/app/views/team_members/_show.html.haml b/app/views/team_members/_show.html.haml index 7afd6938..4218a8a9 100644 --- a/app/views/team_members/_show.html.haml +++ b/app/views/team_members/_show.html.haml @@ -11,5 +11,5 @@ .span3 = form_for(member, :as => :team_member, :url => project_team_member_path(@project, member)) do |f| = f.select :project_access, options_for_select(UsersProject.access_roles, member.project_access), {}, :class => "medium project-access-select", :disabled => !allow_admin - - if @project.owner == user - %span.label Project Owner + - if @project.owner == user + %span.label Project Owner diff --git a/app/views/team_members/show.html.haml b/app/views/team_members/show.html.haml index 666cf6aa..c3470cd8 100644 --- a/app/views/team_members/show.html.haml +++ b/app/views/team_members/show.html.haml @@ -15,7 +15,7 @@ ← To team list %br .row - .span8 + .span6 %table.no-borders %tr %td Email @@ -35,7 +35,7 @@ %tr %td Bio %td= user.bio - .span8 + .span6 %table.no-borders %tr %td Member since @@ -50,8 +50,9 @@ %hr = render user.recent_events.limit(3) - if can? current_user, :admin_project, @project - .actions - = link_to 'Remove from team', project_team_member_path(:project_id => @project, :id => @team_member.id), :confirm => 'Are you sure?', :method => :delete, :class => "btn danger" + .form-horizontal + .form-actions + = link_to 'Remove from team', project_team_member_path(:project_id => @project, :id => @team_member.id), :confirm => 'Are you sure?', :method => :delete, :class => "btn btn-danger" :javascript $(function(){ diff --git a/db/schema.rb b/db/schema.rb index 906c5b00..9b16c9fc 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -30,8 +30,8 @@ ActiveRecord::Schema.define(:version => 20120408181910) do t.integer "assignee_id" t.integer "author_id" t.integer "project_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.boolean "closed", :default => false, :null => false t.integer "position", :default => 0 t.boolean "critical", :default => false, :null => false @@ -44,8 +44,8 @@ ActiveRecord::Schema.define(:version => 20120408181910) do create_table "keys", :force => true do |t| t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.text "key" t.string "title" t.string "identifier" @@ -60,10 +60,10 @@ ActiveRecord::Schema.define(:version => 20120408181910) do t.integer "assignee_id" t.string "title" t.boolean "closed", :default => false, :null => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.text "st_commits", :limit => 2147483647 - t.text "st_diffs", :limit => 2147483647 + t.datetime "created_at" + t.datetime "updated_at" + t.text "st_commits", :limit => 4294967295 + t.text "st_diffs", :limit => 4294967295 t.boolean "merged", :default => false, :null => false end @@ -84,8 +84,8 @@ ActiveRecord::Schema.define(:version => 20120408181910) do t.string "noteable_id" t.string "noteable_type" t.integer "author_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.integer "project_id" t.string "attachment" t.string "line_code" @@ -98,8 +98,8 @@ ActiveRecord::Schema.define(:version => 20120408181910) do t.string "name" t.string "path" t.text "description" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.boolean "private_flag", :default => true, :null => false t.string "code" t.integer "owner_id" @@ -122,8 +122,8 @@ ActiveRecord::Schema.define(:version => 20120408181910) do t.text "content" t.integer "author_id", :null => false t.integer "project_id", :null => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.string "file_name" t.datetime "expires_at" end @@ -156,8 +156,8 @@ ActiveRecord::Schema.define(:version => 20120408181910) do t.datetime "last_sign_in_at" t.string "current_sign_in_ip" t.string "last_sign_in_ip" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.string "name" t.boolean "admin", :default => false, :null => false t.integer "projects_limit", :default => 10 @@ -176,16 +176,16 @@ ActiveRecord::Schema.define(:version => 20120408181910) do create_table "users_projects", :force => true do |t| t.integer "user_id", :null => false t.integer "project_id", :null => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.integer "project_access", :default => 0, :null => false end create_table "web_hooks", :force => true do |t| t.string "url" t.integer "project_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" end create_table "wikis", :force => true do |t|