Commit 24db1d16b8ebeef84011a2af44b03ffdb73f39c8
1 parent
f624fb84
Exists in
master
and in
1 other branch
fixes #956 integrate font-awesome
Showing
32 changed files
with
83 additions
and
55 deletions
Show diff stats
Gemfile
@@ -8,29 +8,27 @@ gem 'actionmailer', RAILS_VERSION | @@ -8,29 +8,27 @@ gem 'actionmailer', RAILS_VERSION | ||
8 | gem 'actionpack', RAILS_VERSION | 8 | gem 'actionpack', RAILS_VERSION |
9 | gem 'railties', RAILS_VERSION | 9 | gem 'railties', RAILS_VERSION |
10 | 10 | ||
11 | -gem 'mongoid', '5.0.0' | ||
12 | -gem 'mongoid_rails_migrations' | ||
13 | - | 11 | +gem 'actionmailer_inline_css' |
12 | +gem 'decent_exposure' | ||
14 | gem 'devise' | 13 | gem 'devise' |
14 | +gem 'dotenv-rails' | ||
15 | +gem 'draper' | ||
16 | +gem 'errbit_plugin' | ||
17 | +gem 'errbit_github_plugin' | ||
18 | +gem 'font-awesome-rails' | ||
15 | gem 'haml' | 19 | gem 'haml' |
16 | gem 'htmlentities' | 20 | gem 'htmlentities' |
17 | -gem 'rack-ssl', :require => 'rack/ssl' # force SSL | ||
18 | - | ||
19 | -gem 'useragent' | ||
20 | -gem 'decent_exposure' | ||
21 | -gem 'actionmailer_inline_css' | ||
22 | gem 'kaminari', '>= 0.14.1' | 21 | gem 'kaminari', '>= 0.14.1' |
22 | +gem 'mongoid', '5.0.0' | ||
23 | +gem 'mongoid_rails_migrations' | ||
24 | +gem 'rack-ssl', :require => 'rack/ssl' # force SSL | ||
23 | gem 'rack-ssl-enforcer', :require => false | 25 | gem 'rack-ssl-enforcer', :require => false |
24 | gem 'rails_autolink' | 26 | gem 'rails_autolink' |
27 | +gem 'useragent' | ||
28 | + | ||
25 | # Please don't update hoptoad_notifier to airbrake. | 29 | # Please don't update hoptoad_notifier to airbrake. |
26 | # It's for internal use only, and we monkeypatch certain methods | 30 | # It's for internal use only, and we monkeypatch certain methods |
27 | gem 'hoptoad_notifier', "~> 2.4" | 31 | gem 'hoptoad_notifier', "~> 2.4" |
28 | -gem 'draper' | ||
29 | - | ||
30 | -gem 'errbit_plugin' | ||
31 | -gem 'errbit_github_plugin' | ||
32 | - | ||
33 | -gem 'dotenv-rails' | ||
34 | 32 | ||
35 | # Notification services | 33 | # Notification services |
36 | # --------------------------------------- | 34 | # --------------------------------------- |
Gemfile.lock
@@ -136,6 +136,8 @@ GEM | @@ -136,6 +136,8 @@ GEM | ||
136 | flowdock (0.6.0) | 136 | flowdock (0.6.0) |
137 | httparty (~> 0.7) | 137 | httparty (~> 0.7) |
138 | multi_json | 138 | multi_json |
139 | + font-awesome-rails (4.2.0.0) | ||
140 | + railties (>= 3.2, < 5.0) | ||
139 | globalid (0.3.6) | 141 | globalid (0.3.6) |
140 | activesupport (>= 4.1.0) | 142 | activesupport (>= 4.1.0) |
141 | haml (4.0.6) | 143 | haml (4.0.6) |
@@ -436,6 +438,7 @@ DEPENDENCIES | @@ -436,6 +438,7 @@ DEPENDENCIES | ||
436 | errbit_plugin | 438 | errbit_plugin |
437 | fabrication | 439 | fabrication |
438 | flowdock | 440 | flowdock |
441 | + font-awesome-rails | ||
439 | haml | 442 | haml |
440 | hipchat | 443 | hipchat |
441 | hoi | 444 | hoi |
app/assets/stylesheets/application.css.erb
app/assets/stylesheets/errbit.css.erb
@@ -93,9 +93,10 @@ a.action { float: right; font-size: 0.9em;} | @@ -93,9 +93,10 @@ a.action { float: right; font-size: 0.9em;} | ||
93 | padding: 0 14px; | 93 | padding: 0 14px; |
94 | line-height: 30px; | 94 | line-height: 30px; |
95 | } | 95 | } |
96 | -#header #session-links #sign-out { | ||
97 | - background: transparent url(<%= asset_path "images/icons/bullet-red-sm.png" %>) 12px 50% no-repeat; | ||
98 | - padding-left: 29px; | 96 | +#header #session-links #sign-out i { |
97 | + color: #cc0033; | ||
98 | + font-size: 11px; | ||
99 | + margin-right: 3px; | ||
99 | } | 100 | } |
100 | #header #session-links a:hover { | 101 | #header #session-links a:hover { |
101 | text-decoration: none; | 102 | text-decoration: none; |
@@ -133,10 +134,12 @@ a.action { float: right; font-size: 0.9em;} | @@ -133,10 +134,12 @@ a.action { float: right; font-size: 0.9em;} | ||
133 | color: #333; | 134 | color: #333; |
134 | } | 135 | } |
135 | 136 | ||
137 | +#nav-bar li i { | ||
138 | + margin-right: 5px; | ||
139 | +} | ||
136 | #nav-bar li a { | 140 | #nav-bar li a { |
137 | color: #666; | 141 | color: #666; |
138 | - display: block; | ||
139 | - padding: 0 20px 0 40px; | 142 | + padding: 0 20px; |
140 | font-size: 14px; | 143 | font-size: 14px; |
141 | font-weight: bold; | 144 | font-weight: bold; |
142 | line-height: 37px; | 145 | line-height: 37px; |
@@ -146,9 +149,6 @@ a.action { float: right; font-size: 0.9em;} | @@ -146,9 +149,6 @@ a.action { float: right; font-size: 0.9em;} | ||
146 | background: transparent 10px 6px no-repeat; | 149 | background: transparent 10px 6px no-repeat; |
147 | } | 150 | } |
148 | #nav-bar li a:hover { color: #666;} | 151 | #nav-bar li a:hover { color: #666;} |
149 | -#nav-bar li.apps a { background-image: url(<%= asset_path "images/icons/briefcase.png" %>); } | ||
150 | -#nav-bar li.errs a { background-image: url(<%= asset_path "images/icons/error.png" %>); } | ||
151 | -#nav-bar li.users a { background-image: url(<%= asset_path "images/icons/user.png" %>); } | ||
152 | #nav-bar li:not(.active):hover { | 152 | #nav-bar li:not(.active):hover { |
153 | box-shadow: 0 0 3px #69c; | 153 | box-shadow: 0 0 3px #69c; |
154 | -moz-box-shadow: 0 0 3px #69c; | 154 | -moz-box-shadow: 0 0 3px #69c; |
@@ -215,8 +215,7 @@ a.action { float: right; font-size: 0.9em;} | @@ -215,8 +215,7 @@ a.action { float: right; font-size: 0.9em;} | ||
215 | } | 215 | } |
216 | #action-bar span a { | 216 | #action-bar span a { |
217 | color: #666; | 217 | color: #666; |
218 | - display: block; | ||
219 | - padding: 0 20px 0 40px; | 218 | + padding: 0 20px; |
220 | font-size: 14px; font-weight: bold; line-height: 39px; text-decoration: none; | 219 | font-size: 14px; font-weight: bold; line-height: 39px; text-decoration: none; |
221 | text-shadow: 1px 1px 0px #FFF; -webkit-text-shadow: 1px 1px 0px #FFF; | 220 | text-shadow: 1px 1px 0px #FFF; -webkit-text-shadow: 1px 1px 0px #FFF; |
222 | background: transparent 10px 8px no-repeat; | 221 | background: transparent 10px 8px no-repeat; |
@@ -227,17 +226,11 @@ a.action { float: right; font-size: 0.9em;} | @@ -227,17 +226,11 @@ a.action { float: right; font-size: 0.9em;} | ||
227 | -moz-box-shadow: 0 0 3px #69c; | 226 | -moz-box-shadow: 0 0 3px #69c; |
228 | -webkit-box-shadow: 0 0 3px #69c; | 227 | -webkit-box-shadow: 0 0 3px #69c; |
229 | } | 228 | } |
230 | -#action-bar a.add { | ||
231 | - background-image: url(<%= asset_path "images/icons/add.png" %>); | ||
232 | -} | ||
233 | - | ||
234 | -#action-bar .calendar_link { | ||
235 | - background: url(<%= asset_path "images/icons/ical.png" %>) no-repeat scroll 12px 6px transparent; | ||
236 | - padding-left: 47px; | 229 | +#action-bar a i { |
230 | + margin-right: 5px; | ||
237 | } | 231 | } |
238 | 232 | ||
239 | -#action-bar span.github a { background: url(<%= asset_path "images/icons/github.png" %>) no-repeat 6px 5px; } | ||
240 | -#action-bar span.unlink_github a { background: url(<%= asset_path "images/icons/unlink_github.png" %>) no-repeat 6px 5px; } | 233 | +#action-bar span.github a:before { font-family: FontAwesome; content: "\f09b"; margin-right: 8px; position: relative; top: 4px; font-size: 26px; } |
241 | 234 | ||
242 | /* Content */ | 235 | /* Content */ |
243 | #content { | 236 | #content { |
@@ -306,7 +299,7 @@ form label { | @@ -306,7 +299,7 @@ form label { | ||
306 | } | 299 | } |
307 | form label.inline { display: inline; } | 300 | form label.inline { display: inline; } |
308 | form .checkbox label { display: inline; } | 301 | form .checkbox label { display: inline; } |
309 | -form .required label { padding-right: 20px; background: transparent url(<%= asset_path "images/icons/required.png" %>) right 50% no-repeat; } | 302 | +form .required label:after { font-family: FontAwesome; content: "\f069"; color: #cc0033; margin-left: 5px; font-weight: normal; } |
310 | form .field_with_errors label { color: #900; } | 303 | form .field_with_errors label { color: #900; } |
311 | form input[type=text], form input[type=password], form input[type=email] { | 304 | form input[type=text], form input[type=password], form input[type=email] { |
312 | width: 96%; padding: 0.8em; | 305 | width: 96%; padding: 0.8em; |
@@ -365,10 +358,13 @@ form div.buttons input, form div.buttons button { | @@ -365,10 +358,13 @@ form div.buttons input, form div.buttons button { | ||
365 | -webkit-text-shadow: 1px 1px 0px #FFF; | 358 | -webkit-text-shadow: 1px 1px 0px #FFF; |
366 | border: none; | 359 | border: none; |
367 | } | 360 | } |
368 | -form div.buttons button.sign_in { | ||
369 | - padding-left: 40px; | ||
370 | - background: transparent url(<%= asset_path "images/icons/right-arrow.png" %>) 3px 3px no-repeat; | 361 | + |
362 | +.sign_in:before { | ||
363 | + font-family: FontAwesome; | ||
364 | + content: "\f061"; | ||
365 | + margin-right: 8px; | ||
371 | } | 366 | } |
367 | + | ||
372 | form strong.option { | 368 | form strong.option { |
373 | display: block; | 369 | display: block; |
374 | margin: 0.7em 0; | 370 | margin: 0.7em 0; |
@@ -650,7 +646,7 @@ td.count, td.issue_link { | @@ -650,7 +646,7 @@ td.count, td.issue_link { | ||
650 | padding: 0.1em 0.7em; | 646 | padding: 0.1em 0.7em; |
651 | margin-top: 3px; | 647 | margin-top: 3px; |
652 | color: #fff; | 648 | color: #fff; |
653 | - background: #cc0033 url(<%= asset_path "images/error-badge-bg.png" %>) 0 bottom repeat-x; | 649 | + background-color: #cc0033; |
654 | border: 1px solid #900; | 650 | border: 1px solid #900; |
655 | border-radius: 18px; | 651 | border-radius: 18px; |
656 | -moz-border-radius: 18px; | 652 | -moz-border-radius: 18px; |
@@ -661,7 +657,7 @@ td.count, td.issue_link { | @@ -661,7 +657,7 @@ td.count, td.issue_link { | ||
661 | -webkit-opacity: 0.8 | 657 | -webkit-opacity: 0.8 |
662 | } | 658 | } |
663 | .count a.resolved { | 659 | .count a.resolved { |
664 | - background: #05B81d url(<%= asset_path "images/resolved-badge-bg.png" %>) 0 bottom repeat-x; | 660 | + background-color: #05B81d; |
665 | border: 1px solid #080; | 661 | border: 1px solid #080; |
666 | } | 662 | } |
667 | .count a:hover { | 663 | .count a:hover { |
@@ -729,13 +725,17 @@ table.deploys td.when { | @@ -729,13 +725,17 @@ table.deploys td.when { | ||
729 | } | 725 | } |
730 | 726 | ||
731 | /* Resolve Errs */ | 727 | /* Resolve Errs */ |
732 | -#action-bar a.resolve { | ||
733 | - background: transparent url(<%= asset_path "images/icons/thumbs-up.png" %>) 6px 5px no-repeat; | 728 | +#action-bar .resolve:before { |
729 | + font-family: FontAwesome; | ||
730 | + content: "\f087"; | ||
731 | + margin-right: 5px; | ||
734 | } | 732 | } |
735 | 733 | ||
736 | /* Go Up */ | 734 | /* Go Up */ |
737 | -#action-bar a.up { | ||
738 | - background: transparent url(<%= asset_path "images/icons/up.png" %>) 6px 5px no-repeat; | 735 | +#action-bar a.up:before { |
736 | + font-family: FontAwesome; | ||
737 | + content: "\f077"; | ||
738 | + margin-right: 5px; | ||
739 | } | 739 | } |
740 | 740 | ||
741 | /* Notices Pagination */ | 741 | /* Notices Pagination */ |
app/assets/stylesheets/images/content-fade.png
134 Bytes
app/assets/stylesheets/images/error-badge-bg.png
75 Bytes
app/assets/stylesheets/images/header.png
109 Bytes
app/assets/stylesheets/images/icons/add.png
908 Bytes
app/assets/stylesheets/images/icons/briefcase.png
635 Bytes
app/assets/stylesheets/images/icons/bullet-red-sm.png
338 Bytes
app/assets/stylesheets/images/icons/cross.png
285 Bytes
app/assets/stylesheets/images/icons/edit.png
1.13 KB
app/assets/stylesheets/images/icons/github.png
1.57 KB
app/assets/stylesheets/images/icons/ical.png
1.59 KB
app/assets/stylesheets/images/icons/required.png
198 Bytes
app/assets/stylesheets/images/icons/right-arrow.png
847 Bytes
app/assets/stylesheets/images/icons/trash.png
1.59 KB
app/assets/stylesheets/images/icons/unlink_github.png
1.87 KB
app/assets/stylesheets/images/icons/up.png
837 Bytes
app/assets/stylesheets/images/icons/user.png
822 Bytes
app/assets/stylesheets/images/notebook.png
91 Bytes
app/assets/stylesheets/images/resolved-badge-bg.png
75 Bytes
app/views/apps/index.html.haml
1 | - content_for :title, t('.title') | 1 | - content_for :title, t('.title') |
2 | - content_for :action_bar do | 2 | - content_for :action_bar do |
3 | - %span= link_to(t('.new_app'), new_app_path, :class => 'add') if current_user.admin? | 3 | + - if current_user.admin? |
4 | + %span | ||
5 | + = link_to(new_app_path) do | ||
6 | + %i.fa.fa-plus-circle | ||
7 | + = t('.new_app') | ||
4 | 8 | ||
5 | %table.apps | 9 | %table.apps |
6 | %thead | 10 | %thead |
app/views/deploys/index.html.haml
1 | - content_for :title, 'Deploys' | 1 | - content_for :title, 'Deploys' |
2 | - content_for :action_bar do | 2 | - content_for :action_bar do |
3 | - if current_user.authentication_token | 3 | - if current_user.authentication_token |
4 | - %span= link_to 'iCal', app_deploys_path(@app, :format => "ics", :auth_token => current_user.authentication_token), :class => "calendar_link" | 4 | + %span |
5 | + = link_to app_deploys_path(@app, :format => "ics", :auth_token => current_user.authentication_token) do | ||
6 | + %i.fa.fa-calendar | ||
7 | + iCal | ||
5 | = render 'table', :deploys => @deploys | 8 | = render 'table', :deploys => @deploys |
6 | = paginate @deploys | 9 | = paginate @deploys |
7 | 10 |
app/views/problems/show.html.haml
@@ -16,8 +16,10 @@ | @@ -16,8 +16,10 @@ | ||
16 | %span= link_to 'resolve', [:resolve, app, problem], :method => :put, | 16 | %span= link_to 'resolve', [:resolve, app, problem], :method => :put, |
17 | :data => { :confirm => problem_confirm('resolve_one') }, :class => 'resolve' | 17 | :data => { :confirm => problem_confirm('resolve_one') }, :class => 'resolve' |
18 | - if current_user.authentication_token | 18 | - if current_user.authentication_token |
19 | - %span= link_to 'iCal', polymorphic_path([app, problem], :format => "ics", | ||
20 | - :auth_token => current_user.authentication_token), :class => "calendar_link" | 19 | + %span |
20 | + = link_to polymorphic_path([app, problem], :format => "ics", :auth_token => current_user.authentication_token) do | ||
21 | + %i.fa.fa-calendar | ||
22 | + iCal | ||
21 | %span>= link_to 'up', (request.env['HTTP_REFERER'] ? :back : app_problems_path(app)), :class => 'up' | 23 | %span>= link_to 'up', (request.env['HTTP_REFERER'] ? :back : app_problems_path(app)), :class => 'up' |
22 | %br | 24 | %br |
23 | = render "issue_tracker_links" | 25 | = render "issue_tracker_links" |
app/views/shared/_flash_messages.html.haml
app/views/shared/_link_github_account.html.haml
1 | - if Errbit::Config.github_authentication && user == current_user | 1 | - if Errbit::Config.github_authentication && user == current_user |
2 | - if user.github_account? | 2 | - if user.github_account? |
3 | - %span.unlink_github= link_to "Unlink GitHub account", unlink_github_user_path(user), :method => :delete, :data => { :confirm => "Are you sure?" } | 3 | + %span.github= link_to "Unlink GitHub account", unlink_github_user_path(user), :method => :delete, :data => { :confirm => "Are you sure?" } |
4 | - else | 4 | - else |
5 | %span.github= link_to "Link GitHub account", user_omniauth_authorize_path(:github) | 5 | %span.github= link_to "Link GitHub account", user_omniauth_authorize_path(:github) |
app/views/shared/_navigation.html.haml
1 | #nav-bar | 1 | #nav-bar |
2 | %ul | 2 | %ul |
3 | - %li.apps{:class => active_if_here(:apps)}= link_to t('.apps'), apps_path | ||
4 | - %li.errs{:class => active_if_here(:problems)}= link_to t('.errors'), problems_path | 3 | + %li{:class => active_if_here(:apps)} |
4 | + = link_to apps_path do | ||
5 | + %i.fa.fa-briefcase | ||
6 | + = t('.apps') | ||
7 | + %li{:class => active_if_here(:problems)} | ||
8 | + = link_to problems_path do | ||
9 | + %i.fa.fa-warning | ||
10 | + = t('.errors') | ||
5 | - if user_signed_in? && current_user.admin? | 11 | - if user_signed_in? && current_user.admin? |
6 | - %li.users{:class => active_if_here(:users)}= link_to t('.users'), users_path | 12 | + %li{:class => active_if_here(:users)} |
13 | + = link_to users_path do | ||
14 | + %i.fa.fa-users | ||
15 | + = t('.users') | ||
7 | %div.clear | 16 | %div.clear |
app/views/shared/_session.html.haml
1 | - if current_user | 1 | - if current_user |
2 | %ul#session-links | 2 | %ul#session-links |
3 | - %li= link_to t('.sign_out'), destroy_session_path(:user), :id => 'sign-out', :method => :delete | 3 | + %li |
4 | + = link_to destroy_session_path(:user), :id => 'sign-out', :method => :delete do | ||
5 | + %i.fa.fa-circle | ||
6 | + = t('.sign_out') | ||
7 | + | ||
4 | %li= link_to t('.edit_profile'), edit_user_path(current_user), :id => 'edit-profile' | 8 | %li= link_to t('.edit_profile'), edit_user_path(current_user), :id => 'edit-profile' |
app/views/users/index.html.haml
1 | - content_for :title, 'Users' | 1 | - content_for :title, 'Users' |
2 | - content_for :action_bar do | 2 | - content_for :action_bar do |
3 | - %span= link_to('Add a New User', new_user_path, :class => 'add') | 3 | + %span |
4 | + = link_to(new_user_path) do | ||
5 | + %i.fa.fa-plus-circle | ||
6 | + = t('.new') | ||
4 | 7 | ||
5 | %table.users | 8 | %table.users |
6 | %thead | 9 | %thead |
app/views/users/show.html.haml
@@ -7,7 +7,6 @@ | @@ -7,7 +7,6 @@ | ||
7 | 7 | ||
8 | - content_for :action_bar do | 8 | - content_for :action_bar do |
9 | = render 'shared/link_github_account' | 9 | = render 'shared/link_github_account' |
10 | - %span= link_to('Add a New User', new_user_path, :class => 'add') | ||
11 | = link_to 'edit', edit_user_path(user), :class => 'button' | 10 | = link_to 'edit', edit_user_path(user), :class => 'button' |
12 | = link_to 'destroy', user_path(user), :method => :delete, | 11 | = link_to 'destroy', user_path(user), :method => :delete, |
13 | :data => { :confirm => t('users.confirm_delete') }, :class => 'delete button' | 12 | :data => { :confirm => t('users.confirm_delete') }, :class => 'delete button' |
config/locales/en.yml
@@ -84,6 +84,8 @@ en: | @@ -84,6 +84,8 @@ en: | ||
84 | confirm_delete: "Permanently delete this comment?" | 84 | confirm_delete: "Permanently delete this comment?" |
85 | users: | 85 | users: |
86 | confirm_delete: "Permanently delete this user?" | 86 | confirm_delete: "Permanently delete this user?" |
87 | + index: | ||
88 | + new: Add a New User | ||
87 | apps: | 89 | apps: |
88 | confirm_delete: "Permanently delete this app?" | 90 | confirm_delete: "Permanently delete this app?" |
89 | confirm_destroy_all_problems: "Permanently delete all of this app's errors?" | 91 | confirm_destroy_all_problems: "Permanently delete all of this app's errors?" |