Commit 8045a81b authored by Sebastian Ziebell's avatar Sebastian Ziebell

Merge branch 'master' into fixes/api

parents 5d8a99f1 2f0a75ab
v 5.0.0
- replaced gitolite with gitlab-shell
v 4.2.0
- User show page. Via /u/username
- Show help contents on pages for better navigation
......
......@@ -32,9 +32,6 @@ gem 'gitlab_omniauth-ldap', '1.0.2', require: "omniauth-ldap"
# Dump db to yml file. Mostly used to migrate from sqlite to mysql
gem 'gitlab_yaml_db', '1.0.0', require: "yaml_db"
# Gitolite client (for work with gitolite-admin repo)
gem "gitolite", '1.1.0'
# Syntax highlighter
gem "pygments.rb", git: "https://github.com/gitlabhq/pygments.rb.git", branch: "master"
......@@ -165,5 +162,5 @@ group :test do
end
group :production do
gem "gitlab_meta", '4.0'
gem "gitlab_meta", '5.0'
end
......@@ -107,7 +107,6 @@ GEM
coderay (>= 1.0.0)
erubis (>= 2.7.0)
binding_of_caller (0.6.8)
blankslate (3.1.2)
bootstrap-sass (2.2.1.1)
sass (~> 3.2)
builder (3.0.4)
......@@ -188,17 +187,13 @@ GEM
mime-types (~> 1.19)
pygments.rb (>= 0.2.13)
github-markup (0.7.4)
gitlab_meta (4.0)
gitlab_meta (5.0)
gitlab_omniauth-ldap (1.0.2)
net-ldap (~> 0.2.2)
omniauth (~> 1.0)
pyu-ruby-sasl (~> 0.0.3.1)
rubyntlm (~> 0.1.1)
gitlab_yaml_db (1.0.0)
gitolite (1.1.0)
gratr19 (~> 0.4.4.1)
grit (~> 2.5.0)
hashery (~> 1.5.0)
grape (0.2.2)
activesupport
hashie (~> 1.2)
......@@ -208,7 +203,6 @@ GEM
rack-accept
rack-mount
virtus
gratr19 (0.4.4.1)
growl (1.0.3)
guard (1.5.4)
listen (>= 0.4.2)
......@@ -227,8 +221,6 @@ GEM
activesupport (>= 3.1, < 4.1)
haml (~> 3.1)
railties (>= 3.1, < 4.1)
hashery (1.5.0)
blankslate
hashie (1.2.0)
hike (1.2.1)
http_parser.rb (0.5.3)
......@@ -494,10 +486,9 @@ DEPENDENCIES
git
github-linguist (~> 2.3.4)
github-markup (~> 0.7.4)
gitlab_meta (= 4.0)
gitlab_meta (= 5.0)
gitlab_omniauth-ldap (= 1.0.2)
gitlab_yaml_db (= 1.0.0)
gitolite (= 1.1.0)
grack!
grape (~> 0.2.1)
grit!
......
## GitLab Roadmap
### v4.3 March 22
### v5.0 March 22
* Jenkins CI integration service
* Replace gitolite with gitlab-shell
* Usability improvements
* Notification improvements
### v4.2 February 22
* Campfire integration service
* Teams
......@@ -20,12 +20,12 @@ var NoteList = {
if(NoteList.reversed) {
var form = $(".js-main-target-form");
form.find(".buttons, .note_options").hide();
form.find(".note-form-actions").hide();
var textarea = form.find(".js-note-text");
textarea.css("height", "40px");
textarea.on("focus", function(){
textarea.css("height", "80px");
form.find(".buttons, .note_options").show();
form.find(".note-form-actions").show();
});
}
......
......@@ -338,10 +338,6 @@ li.note {
li {
border-bottom:none !important;
}
.attachment {
padding-left: 20px;
background:url("icon-attachment.png") no-repeat left center;
}
}
}
......
......@@ -17,6 +17,8 @@ $baseLineHeight: 18px !default;
@import "gitlab_bootstrap/variables.scss";
@import "gitlab_bootstrap/fonts.scss";
@import "gitlab_bootstrap/mixins.scss";
@import "gitlab_bootstrap/avatar.scss";
@import "gitlab_bootstrap/nav.scss";
@import "gitlab_bootstrap/common.scss";
@import "gitlab_bootstrap/typography.scss";
@import "gitlab_bootstrap/buttons.scss";
......
/** AVATARS **/
img.avatar { float: left; margin-right: 12px; width: 40px; border: 1px solid #ddd; padding: 1px; }
img.avatar.s16 { width: 16px; height: 16px; margin-right: 6px; }
img.avatar.s24 { width: 24px; height: 24px; margin-right: 8px; }
img.avatar.s32 { width: 32px; height: 32px; margin-right: 10px; }
img.avatar.s90 { width: 90px; height: 90px; margin-right: 15px; }
img.lil_av { padding-left: 4px; padding-right: 3px; }
img.small { width: 80px; }
......@@ -95,7 +95,11 @@
form {
margin-bottom: 0;
margin-top: 3px;
margin-top: 0;
}
.btn-tiny {
@include box-shadow(0 0px 0px 1px #f1f1f1);
}
.nav-pills {
......
.btn {
@include linear-gradient(#f7f7f7, #d5d5d5);
@include linear-gradient(#f1f1f1, #e1e1e1);
text-shadow: 0 1px 1px #FFF;
border-color: #BBB;
&:hover {
@include bg-gray-gradient;
border-color: #bbb;
background: #f1f1f1;
@include linear-gradient(#fAfAfA, #f1f1f1);
border-color: #AAA;
color: #333;
}
&.btn-white {
background: #FFF;
}
&.primary {
&.btn-primary {
background: #2a79A3;
@include linear-gradient(#47A7b7, #2585b5);
border-color: #2A79A3;
......@@ -58,21 +57,18 @@
}
}
&.save-btn {
&.btn-create {
@extend .wide;
@extend .primary;
@extend .success;
}
&.cancel-btn {
float: right;
}
&.wide {
padding-left: 30px;
padding-right: 30px;
&.btn-save {
@extend .wide;
@extend .btn-primary;
}
&.danger {
&.btn-close,
&.btn-remove {
@extend .btn-danger;
border-color: #BD362F;
......@@ -82,8 +78,13 @@
}
}
&.danger {
@extend .btn-danger;
&.btn-cancel {
float: right;
}
&.wide {
padding-left: 20px;
padding-right: 20px;
}
&.small {
......@@ -95,7 +96,7 @@
background-color: #ccc;
}
&.very_small {
&.btn-tiny {
font-size: 11px;
padding: 2px 6px;
line-height: 16px;
......
......@@ -9,7 +9,6 @@
/** COMMON CLASSES **/
.left { float:left }
.right { float:right!important }
.append-bottom-10 { margin-bottom:10px }
.append-bottom-20 { margin-bottom:20px }
.prepend-top-10 { margin-top:10px }
......@@ -22,82 +21,13 @@
.light { color: #888 }
.tiny { font-weight: normal }
/** PILLS & TABS**/
.nav-pills {
.active a {
background: $primary_color;
}
> li > a {
@include border-radius(0);
}
&.nav-stacked {
> li > a {
border-left: 4px solid #EEE;
padding: 12px;
}
> .active > a {
border-color: #29B;
border-radius: 0;
background: #F1F1F1;
color: $style_color;
font-weight: bold;
}
}
}
.nav-pills > .active > a > i[class^="icon-"] { background: inherit; }
/**
* nav-tabs
*
*/
.nav-tabs > li > a, .nav-pills > li > a { color: $style_color; }
.nav.nav-tabs {
li {
> a {
padding: 8px 20px;
margin-right: 7px;
line-height: 20px;
border-color: #EEE;
color: #888;
border-bottom: 1px solid #ddd;
.badge {
background-color: #eee;
color: #888;
text-shadow: 0 1px 1px #fff;
}
i[class^="icon-"] {
line-height: 14px;
}
}
&.active {
> a {
border-color: #CCC;
border-bottom: 1px solid #fff;
color: #333;
}
}
}
&.nav-small-tabs > li > a { padding: 6px 9px; }
}
/** ALERT MESSAGES **/
.alert-message { @extend .alert; }
.alert-messag.success { @extend .alert-success; }
.alert-message.error { @extend .alert-error; }
/** AVATARS **/
img.avatar { float: left; margin-right: 12px; width: 40px; border: 1px solid #ddd; padding: 1px; }
img.avatar.s16 { width: 16px; height: 16px; margin-right: 6px; }
img.avatar.s24 { width: 24px; height: 24px; margin-right: 8px; }
img.avatar.s32 { width: 32px; height: 32px; margin-right: 10px; }
img.avatar.s90 { width: 90px; height: 90px; margin-right: 15px; }
img.lil_av { padding-left: 4px; padding-right: 3px; }
img.small { width: 80px; }
.alert.alert-disabled {
background: #EEE;
color: #777;
border-color: #DDD;
}
/** HELPERS **/
.nothing_here_message {
......
/**
* nav-pills
*
*/
.nav-pills {
.active a {
background: $primary_color;
}
> li > a {
@include border-radius(0);
}
&.nav-stacked {
> li > a {
border-left: 4px solid #EEE;
padding: 12px;
}
> .active > a {
border-color: #29B;
border-radius: 0;
background: #F1F1F1;
color: $style_color;
font-weight: bold;
}
}
}
.nav-pills > .active > a > i[class^="icon-"] { background: inherit; }
/**
* nav-tabs
*
*/
.nav-tabs > li > a, .nav-pills > li > a { color: $style_color; }
.nav.nav-tabs {
li {
> a {
padding: 8px 20px;
margin-right: 7px;
line-height: 20px;
border-color: #EEE;
color: #888;
border-bottom: 1px solid #ddd;
.badge {
background-color: #eee;
color: #888;
text-shadow: 0 1px 1px #fff;
}
i[class^="icon-"] {
line-height: 14px;
}
}
&.active {
> a {
border-color: #CCC;
border-bottom: 1px solid #fff;
color: #333;
}
}
}
&.nav-small-tabs > li > a { padding: 6px 9px; }
}
......@@ -127,7 +127,7 @@
.btn-new-mr {
@extend .btn-info;
@extend .small;
@extend .right;
@extend .pull-right;
margin: -3px;
}
}
......
/* Login Page */
body.login-page{
padding-top: 10%;
background: #f1f1f1;
padding-top: 7%;
background: #666;
}
.login-box{
......
......@@ -6,8 +6,7 @@ ul.main_menu {
margin: auto;
margin: 30px 0;
margin-top: 10px;
border-bottom: 1px solid #DDD;
height: 37px;
height: 38px;
position: relative;
overflow: hidden;
.count {
......@@ -33,6 +32,7 @@ ul.main_menu {
margin: 0;
display: table-cell;
width: 1%;
border-bottom: 2px solid #EEE;
&.active {
border-bottom: 2px solid #474D57;
a {
......@@ -42,10 +42,8 @@ ul.main_menu {
&.home {
a {
background: url(home_icon.PNG) no-repeat center center;
text-indent:-9999px;
min-width: 20px;
img {
i {
font-size: 20px;
position: relative;
top: 4px;
}
......@@ -56,7 +54,7 @@ ul.main_menu {
display: block;
text-align: center;
font-weight: normal;
height: 35px;
height: 36px;
line-height: 36px;
color: #777;
text-shadow: 0 1px 1px white;
......
......@@ -81,14 +81,6 @@ ul.notes {
.attachment {
font-size: 14px;
margin-top: -20px;
.icon-attachment {
@extend .icon-paper-clip;
font-size: 24px;
position: relative;
text-align: right;
top: 6px;
}
}
.note-body {
margin-left: 45px;
......@@ -214,9 +206,11 @@ ul.notes {
* Note Form
*/
.comment-btn,
.comment-btn {
@extend .btn-create;
}
.reply-btn {
@extend .save-btn;
@extend .btn-primary;
}
.file .content tr.line_holder:hover > td { background: $hover !important; }
.file .content tr.line_holder:hover > td .line_note_link {
......@@ -227,11 +221,6 @@ ul.notes {
.discussion {
.new_note {
margin: 8px 5px 8px 0;
.note_options {
// because of the smaller width and the extra "cancel" button
margin-top: 8px;
}
}
}
.new_note {
......@@ -244,37 +233,6 @@ ul.notes {
.clearfix {
margin-bottom: 0;
}
.note_options {
h6 {
@extend .left;
line-height: 20px;
padding-right: 16px;
padding-bottom: 16px;
}
label {
padding: 0;
}
.attachment {
@extend .right;
position: relative;
width: 350px;
height: 50px;
margin:0 0 5px !important;
// hide the actual file field
input {
display: none;
}
.choose-btn {
float: right;
}
}
.notify_options {
@extend .right;
}
}
.note_text_and_preview {
// makes the "absolute" position for links relative to this
position: relative;
......@@ -313,3 +271,17 @@ ul.notes {
@extend .thumbnail;
margin-left: 45px;
}
.note-form-actions {
background: #F9F9F9;
height: 45px;
padding: 0 5px;
.note-form-option {
margin-top: 8px;
margin-left: 15px;
@extend .pull-left;
@extend .span4;
}
}
......@@ -4,7 +4,7 @@
}
.side {
@extend .right;
@extend .pull-right;
.projects_box {
> .title {
......
......@@ -4,16 +4,12 @@ class ApplicationController < ActionController::Base
before_filter :set_current_user_for_observers
before_filter :add_abilities
before_filter :dev_tools if Rails.env == 'development'
before_filter :default_headers
protect_from_forgery
helper_method :abilities, :can?
rescue_from Gitlab::Gitolite::AccessDenied do |exception|
log_exception(exception)
render "errors/gitolite", layout: "errors", status: 500
end
rescue_from Encoding::CompatibilityError do |exception|
log_exception(exception)
render "errors/encoding", layout: "errors", status: 500
......@@ -148,4 +144,8 @@ class ApplicationController < ActionController::Base
Rack::MiniProfiler.authorize_request
end
def default_headers
headers['X-Frame-Options'] = 'DENY'
headers['X-XSS-Protection'] = '1; mode=block'
end
end
class GraphController < ProjectResourceController
include ExtractsPath
# Authorize
before_filter :authorize_read_project!
before_filter :authorize_code_access!
before_filter :require_non_empty_project
def show
respond_to do |format|
format.html
format.json do
graph = Gitlab::Graph::JsonBuilder.new(project, @ref)
render :json => graph.to_json
end
end
end
end
......@@ -6,6 +6,7 @@ class GroupsController < ApplicationController
# Authorize
before_filter :authorize_read_group!, except: [:new, :create]
before_filter :authorize_admin_group!, only: [:edit, :update, :destroy]
before_filter :authorize_create_group!, only: [:new, :create]
# Load group projects
......@@ -84,6 +85,31 @@ class GroupsController < ApplicationController
redirect_to people_group_path(@group), notice: 'Users was successfully added.'
end
def edit
end
def update
group_params = params[:group].dup
owner_id =group_params.delete(:owner_id)
if owner_id
@group.owner = User.find(owner_id)
end
if @group.update_attributes(group_params)
redirect_to @group, notice: 'Group was successfully updated.'
else
render action: "edit"
end
end
def destroy
@group.truncate_teams
@group.destroy
redirect_to root_path, notice: 'Group was removed.'
end
protected
def group
......@@ -106,6 +132,14 @@ class GroupsController < ApplicationController
end
def authorize_create_group!
can?(current_user, :create_group, nil)
unless can?(current_user, :create_group, nil)
return render_404
end
end
def authorize_admin_group!
unless can?(current_user, :manage_group, group)
return render_404
end
end
end
......@@ -90,16 +90,6 @@ class ProjectsController < ProjectResourceController
end
end
def graph
respond_to do |format|
format.html
format.json do
graph = Gitlab::Graph::JsonBuilder.new(project)
render :json => graph.to_json
end
end
end
def destroy
return access_denied! unless can?(current_user, :remove_project, project)
......
......@@ -13,6 +13,8 @@ class RefsController < ProjectResourceController
format.html do
new_path = if params[:destination] == "tree"
project_tree_path(@project, (@ref + "/" + params[:path]))
elsif params[:destination] == "graph"
project_graph_path(@project, @ref)
else
project_commits_path(@project, @ref)
end
......
......@@ -43,7 +43,7 @@ module ProjectsHelper
tm = project.team_member_by_id(author)
if tm
link_to author_html, project_team_member_path(project, tm), class: "author_link"
link_to author_html, project_team_member_path(project, tm.user_username), class: "author_link"
else
author_html
end.html_safe
......
......@@ -10,6 +10,10 @@ class Notify < ActionMailer::Base
default from: Gitlab.config.gitlab.email_from
# Just send email with 3 seconds delay
def self.delay
delay_for(2.seconds)
end
#
......@@ -63,12 +67,12 @@ class Notify < ActionMailer::Base
# Note
#
def note_commit_email(commit_autor_email, note_id)
def note_commit_email(recipient_id, note_id)
@note = Note.find(note_id)
@commit = @note.noteable
@commit = CommitDecorator.decorate(@commit)
@project = @note.project
mail(to: commit_autor_email, subject: subject("note for commit #{@commit.short_id}", @commit.title))
mail(to: recipient(recipient_id), subject: subject("note for commit #{@commit.short_id}", @commit.title))
end
def note_issue_email(recipient_id, note_id)
......
......@@ -24,8 +24,8 @@ class Key < ActiveRecord::Base
before_save :set_identifier
validates :title, presence: true, length: { within: 0..255 }
validates :key, presence: true, length: { within: 0..5000 }, format: { :with => /ssh-.{3} / }
validate :unique_key, :fingerprintable_key
validates :key, presence: true, length: { within: 0..5000 }, format: { :with => /ssh-.{3} / }, uniqueness: true
validate :fingerprintable_key
delegate :name, :email, to: :user, prefix: true
......@@ -33,14 +33,6 @@ class Key < ActiveRecord::Base
self.key = self.key.strip unless self.key.blank?
end
def unique_key
query = Key.where(key: key)
query = query.where('(project_id IS NULL OR project_id = ?)', project_id) if project_id
if (query.count > 0)
errors.add :key, 'already exist.'
end
end
def fingerprintable_key
return true unless key # Don't test if there is no key.
# `ssh-keygen -lf /dev/stdin <<< "#{key}"` errors with: redirection unexpected
......@@ -65,7 +57,7 @@ class Key < ActiveRecord::Base
end
def is_deploy_key
true if project_id
!!project_id
end
# projects that has this key
......@@ -77,7 +69,7 @@ class Key < ActiveRecord::Base
end
end
def last_deploy?
Key.where(identifier: identifier).count == 0
def shell_id
"key-#{self.id}"
end
end
......@@ -27,7 +27,6 @@ class Namespace < ActiveRecord::Base
after_create :ensure_dir_exist
after_update :move_dir
after_commit :update_gitolite, on: :update, if: :require_update_gitolite
after_destroy :rm_dir
scope :root, where('type IS NULL')
......@@ -89,11 +88,6 @@ class Namespace < ActiveRecord::Base
end
end
def update_gitolite
@require_update_gitolite = false
projects.each(&:update_repository)
end
def rm_dir
dir_path = File.join(Gitlab.config.gitolite.repos_path, path)
FileUtils.rm_r( dir_path, force: true )
......
......@@ -8,7 +8,6 @@
# description :text
# created_at :datetime not null
# updated_at :datetime not null
# private_flag :boolean default(TRUE), not null
# creator_id :integer
# default_branch :string(255)
# issues_enabled :boolean default(TRUE), not null
......@@ -16,6 +15,7 @@
# merge_requests_enabled :boolean default(TRUE), not null
# wiki_enabled :boolean default(TRUE), not null
# namespace_id :integer
# public :boolean default(FALSE), not null
#
require "grit"
......@@ -262,8 +262,6 @@ class Project < ActiveRecord::Base
Gitlab::ProjectMover.new(self, old_dir, new_dir).execute
gitolite.move_repository(old_repo, self)
save!
end
rescue Gitlab::ProjectMover::ProjectMoveError => ex
......@@ -459,20 +457,6 @@ class Project < ActiveRecord::Base
namespace.try(:path) || ''
end
def update_repository
GitoliteWorker.perform_async(
:update_repository,
self.id
)
end
def destroy_repository
GitoliteWorker.perform_async(
:remove_repository,
self.path_with_namespace
)
end
def repo_exists?
@repo_exists ||= (repository && repository.branches.present?)
rescue
......
......@@ -112,7 +112,6 @@ class ProjectTeam
source_team.each do |tm|
tm.save
end
target_project.update_repository
end
true
......
......@@ -18,13 +18,6 @@ class ProtectedBranch < ActiveRecord::Base
validates :name, presence: true
validates :project, presence: true
after_save :update_repository
after_destroy :update_repository
def update_repository
project.update_repository
end
def commit
project.repository.commit(self.name)
end
......
......@@ -31,6 +31,8 @@
# extern_uid :string(255)
# provider :string(255)
# username :string(255)
# can_create_group :boolean default(TRUE), not null
# can_create_team :boolean default(TRUE), not null
#
class User < ActiveRecord::Base
......
# == Schema Information
#
# Table name: user_teams
#
# id :integer not null, primary key
# name :string(255)
# path :string(255)
# owner_id :integer
# created_at :datetime not null
# updated_at :datetime not null
#
class UserTeam < ActiveRecord::Base
attr_accessible :name, :owner_id, :path
......
# == Schema Information
#
# Table name: user_team_project_relationships
#
# id :integer not null, primary key
# project_id :integer
# user_team_id :integer
# greatest_access :integer
# created_at :datetime not null
# updated_at :datetime not null
#
class UserTeamProjectRelationship < ActiveRecord::Base
attr_accessible :greatest_access, :project_id, :user_team_id
......
# == Schema Information
#
# Table name: user_team_user_relationships
#
# id :integer not null, primary key
# user_id :integer
# user_team_id :integer
# group_admin :boolean
# permission :integer
# created_at :datetime not null
# updated_at :datetime not null
#
class UserTeamUserRelationship < ActiveRecord::Base
attr_accessible :group_admin, :permission, :user_id, :user_team_id
......
......@@ -25,15 +25,12 @@ class UsersProject < ActiveRecord::Base
attr_accessor :skip_git
after_save :update_repository, unless: :skip_git?
after_destroy :update_repository, unless: :skip_git?
validates :user, presence: true
validates :user_id, uniqueness: { scope: [:project_id], message: "already exists in project" }
validates :project_access, inclusion: { in: [GUEST, REPORTER, DEVELOPER, MASTER] }, presence: true
validates :project, presence: true
delegate :name, :email, to: :user, prefix: true
delegate :name, :username, :email, to: :user, prefix: true
scope :guests, where(project_access: GUEST)
scope :reporters, where(project_access: REPORTER)
......@@ -84,11 +81,6 @@ class UsersProject < ActiveRecord::Base
end
end
GitoliteWorker.perform_async(
:update_repositories,
project_ids
)
true
rescue
false
......@@ -103,11 +95,6 @@ class UsersProject < ActiveRecord::Base
end
end
GitoliteWorker.perform_async(
:update_repositories,
project_ids
)
true
rescue
false
......@@ -136,10 +123,6 @@ class UsersProject < ActiveRecord::Base
end
end
def update_repository
project.update_repository
end
def project_access_human
Project.access_options.key(self.project_access)
end
......
......@@ -3,20 +3,17 @@ class KeyObserver < ActiveRecord::Observer
def after_save(key)
GitoliteWorker.perform_async(
:set_key,
key.identifier,
key.key,
key.projects.map(&:id)
:add_key,
key.shell_id,
key.key
)
end
def after_destroy(key)
return if key.is_deploy_key && !key.last_deploy?
GitoliteWorker.perform_async(
:remove_key,
key.identifier,
key.projects.map(&:id)
key.shell_id,
key.key,
)
end
end
......@@ -11,7 +11,9 @@ class NoteObserver < ActiveRecord::Observer
notify_team(note)
elsif note.notify_author
# Notify only author of resource
Notify.delay.note_commit_email(note.noteable.author_email, note.id)
if note.commit_author
Notify.delay.note_commit_email(note.commit_author.id, note.id)
end
else
# Otherwise ignore it
nil
......
class ProjectObserver < ActiveRecord::Observer
def after_create(project)
project.update_repository
GitoliteWorker.perform_async(
:add_repository,
project.path_with_namespace
)
log_info("#{project.owner.name} created a new project \"#{project.name_with_namespace}\"")
end
def after_update(project)
......@@ -8,14 +13,14 @@ class ProjectObserver < ActiveRecord::Observer
end
def after_destroy(project)
log_info("Project \"#{project.name}\" was removed")
GitoliteWorker.perform_async(
:remove_repository,
project.path_with_namespace
)
project.satellite.destroy
project.destroy_repository
end
def after_create project
log_info("#{project.owner.name} created a new project \"#{project.name_with_namespace}\"")
log_info("Project \"#{project.name}\" was removed")
end
protected
......
......@@ -6,7 +6,7 @@
= link_to admin_projects_path do
%h1= Project.count
%hr
= link_to 'New Project', new_project_path, class: "btn small"
= link_to 'New Project', new_project_path, class: "btn btn-small"
.span4
.ui-box
%h5.title Groups
......@@ -14,7 +14,7 @@
= link_to admin_groups_path do
%h1= Group.count
%hr
= link_to 'New Group', new_admin_group_path, class: "btn small"
= link_to 'New Group', new_admin_group_path, class: "btn btn-small"
.span4
.ui-box
%h5.title Users
......@@ -22,7 +22,7 @@
= link_to admin_users_path do
%h1= User.count
%hr
= link_to 'New User', new_admin_user_path, class: "btn small"
= link_to 'New User', new_admin_user_path, class: "btn btn-small"
.row
.span4
......@@ -31,7 +31,7 @@
- @projects.each do |project|
%p
= link_to project.name_with_namespace, [:admin, project]
%span.light.right
%span.light.pull-right
= time_ago_in_words project.created_at
ago
......@@ -42,7 +42,7 @@
%p
= link_to [:admin, user] do
= user.name
%span.light.right
%span.light.pull-right
= time_ago_in_words user.created_at
ago
......@@ -51,25 +51,25 @@
%hr
%p
Issues
%span.light.right
%span.light.pull-right
= Issue.count
%p
Merge Requests
%span.light.right
%span.light.pull-right
= MergeRequest.count
%p
Notes
%span.light.right
%span.light.pull-right
= Note.count
%p
Snippets
%span.light.right
%span.light.pull-right
= Snippet.count
%p
SSH Keys
%span.light.right
%span.light.pull-right
= Key.count
%p
Milestones
%span.light.right
%span.light.pull-right
= Milestone.count
......@@ -2,7 +2,7 @@
%hr
= form_for [:admin, @group] do |f|
- if @group.errors.any?
.alert-message.block-message.error
.alert.alert-error
%span= @group.errors.full_messages.first
.clearfix.group_name_holder
= f.label :name do
......@@ -24,5 +24,5 @@
%li It will change the git path to repositories under this group.
.form-actions
= f.submit 'Rename group', class: "btn danger"
= link_to 'Cancel', admin_groups_path, class: "btn cancel-btn"
= f.submit 'Rename group', class: "btn btn-remove"
= link_to 'Cancel', admin_groups_path, class: "btn btn-cancel"
......@@ -4,11 +4,11 @@
allows you to keep projects organized.
Use groups for uniting related projects.
= link_to 'New Group', new_admin_group_path, class: "btn small right"
= link_to 'New Group', new_admin_group_path, class: "btn btn-small pull-right"
%br
= form_tag admin_groups_path, method: :get, class: 'form-inline' do
= text_field_tag :name, params[:name], class: "xlarge"
= submit_tag "Search", class: "btn submit primary"
= submit_tag "Search", class: "btn submit btn-primary"
%table
%thead
......@@ -30,6 +30,6 @@
%td
= link_to group.owner_name, admin_user_path(group.owner_id)
%td.bgred
= link_to 'Rename', edit_admin_group_path(group), id: "edit_#{dom_id(group)}", class: "btn small"
= link_to 'Destroy', [:admin, group], confirm: "REMOVE #{group.name}? Are you sure?", method: :delete, class: "btn small danger"
= link_to 'Rename', edit_admin_group_path(group), id: "edit_#{dom_id(group)}", class: "btn btn-small"
= link_to 'Destroy', [:admin, group], confirm: "REMOVE #{group.name}? Are you sure?", method: :delete, class: "btn btn-small btn-remove"
= paginate @groups, theme: "admin"
......@@ -2,7 +2,7 @@
%hr
= form_for [:admin, @group] do |f|
- if @group.errors.any?
.alert-message.block-message.error
.alert.alert-error
%span= @group.errors.full_messages.first
.clearfix
= f.label :name do
......@@ -10,7 +10,7 @@
.input
= f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left"
&nbsp;
= f.submit 'Create group', class: "btn primary"
= f.submit 'Create group', class: "btn btn-primary"
%hr
.padded
%ul
......
......@@ -14,7 +14,7 @@
%td
= @group.name
&nbsp;
= link_to edit_admin_group_path(@group), class: "btn btn-small right" do
= link_to edit_admin_group_path(@group), class: "btn btn-small pull-right" do
%i.icon-edit
Rename
%tr
......@@ -29,7 +29,7 @@
Owner:
%td
= @group.owner_name
.right
.pull-right
= link_to "#", class: "btn btn-small change-owner-link" do
%i.icon-edit
Change owner
......@@ -42,7 +42,7 @@
= form_for [:admin, @group] do |f|
= f.select :owner_id, User.all.map { |user| [user.name, user.id] }, {}, {class: 'chosen'}
%div
= f.submit 'Change Owner', class: "btn danger"
= f.submit 'Change Owner', class: "btn btn-remove"
= link_to "Cancel", "#", class: "btn change-owner-cancel-link"
- if @group.projects.any?
......@@ -63,7 +63,7 @@
%span.monospace= project.path_with_namespace + ".git"
%td= project.users.count
%td.bgred
= link_to 'Transfer project to global namespace', remove_project_admin_group_path(@group, project_id: project.id), confirm: 'Remove project from group and move to global namespace. Are you sure?', method: :delete, class: "btn danger small"
= link_to 'Transfer project to global namespace', remove_project_admin_group_path(@group, project_id: project.id), confirm: 'Remove project from group and move to global namespace. Are you sure?', method: :delete, class: "btn btn-remove small"
= form_tag project_teams_update_admin_group_path(@group), id: "new_team_member", class: "bulk_import", method: :put do
%table.zebra-striped
......@@ -88,7 +88,7 @@
%td= select_tag :project_access, options_for_select(Project.access_options), {class: "project-access-select chosen span3"}
%tr
%td= submit_tag 'Add user to projects in group', class: "btn primary"
%td= submit_tag 'Add user to projects in group', class: "btn btn-primary"
%td
Read more about project permissions
%strong= link_to "here", help_permissions_path, class: "vlink"
......@@ -110,7 +110,7 @@
.input
= select_tag :project_ids, options_from_collection_for_select(@projects , :id, :name_with_namespace), multiple: true, data: {placeholder: 'Select projects'}, class: 'chosen span5'
.form-actions
= submit_tag 'Add', class: "btn primary"
= submit_tag 'Add', class: "btn btn-primary"
:javascript
$(function(){
......
......@@ -7,7 +7,7 @@
= form_for @hook, as: :hook, url: admin_hooks_path, html: { class: 'form-inline' } do |f|
-if @hook.errors.any?
.alert-message.block-message.error
.alert.alert-error
- @hook.errors.full_messages.each do |msg|
%p= msg
.clearfix
......@@ -15,7 +15,7 @@
.input
= f.text_field :url, class: "text_field xxlarge"
&nbsp;
= f.submit "Add System Hook", class: "btn primary"
= f.submit "Add System Hook", class: "btn btn-primary"
%hr
-if @hooks.any?
......@@ -33,7 +33,7 @@
%td
= link_to admin_hook_path(hook) do
%strong= hook.url
= link_to 'Test Hook', admin_hook_test_path(hook), class: "btn small right"
= link_to 'Test Hook', admin_hook_test_path(hook), class: "btn btn-small pull-right"
%td POST
%td
= link_to 'Remove', admin_hook_path(hook), confirm: 'Are you sure?', method: :delete, class: "danger btn small right"
= link_to 'Remove', admin_hook_path(hook), confirm: 'Are you sure?', method: :delete, class: "btn btn-remove btn-small pull-right"
......@@ -15,7 +15,7 @@
.file_title
%i.icon-file
githost.log
.right
.pull-right
= link_to '#', class: 'log-bottom' do
%i.icon-arrow-down
Scroll down
......@@ -29,7 +29,7 @@
.file_title
%i.icon-file
application.log
.right
.pull-right
= link_to '#', class: 'log-bottom' do
%i.icon-arrow-down
Scroll down
......@@ -43,7 +43,7 @@
.file_title
%i.icon-file
production.log
.right
.pull-right
= link_to '#', class: 'log-bottom' do
%i.icon-arrow-down
Scroll down
......@@ -57,7 +57,7 @@
.file_title
%i.icon-file
sidekiq.log
.right
.pull-right
= link_to '#', class: 'log-bottom' do
%i.icon-arrow-down
Scroll down
......
= form_for [:admin, project] do |f|
-if project.errors.any?
.alert-message.block-message.error
.alert.alert-error
%ul
- project.errors.full_messages.each do |msg|
%li= msg
......@@ -65,8 +65,8 @@
.actions
= f.submit 'Save Project', class: "btn save-btn"
= link_to 'Cancel', admin_projects_path, class: "btn cancel-btn"
= f.submit 'Save Project', class: "btn btn-save"
= link_to 'Cancel', admin_projects_path, class: "btn btn-cancel"
......
%h3.page_title
Projects
= link_to 'New Project', new_project_path, class: "btn small right"
= link_to 'New Project', new_project_path, class: "btn btn-small pull-right"
%hr
......@@ -37,7 +37,7 @@
.form-actions
= submit_tag "Search", class: "btn submit primary"
= submit_tag "Search", class: "btn submit btn-primary"
= link_to "Reset", admin_projects_path, class: "btn"
.span8
.ui-box
......@@ -51,9 +51,9 @@
- else
%i.icon-lock.cgreen
= link_to project.name_with_namespace, [:admin, project]
.right
= link_to 'Edit', edit_admin_project_path(project), id: "edit_#{dom_id(project)}", class: "btn small"
= link_to 'Destroy', [:admin, project], confirm: "REMOVE #{project.name}? Are you sure?", method: :delete, class: "btn small danger"
.pull-right
= link_to 'Edit', edit_admin_project_path(project), id: "edit_#{dom_id(project)}", class: "btn btn-small"
= link_to 'Destroy', [:admin, project], confirm: "REMOVE #{project.name}? Are you sure?", method: :delete, class: "btn btn-small btn-remove"
- if @projects.blank?
%p.nothing_here_message 0 projects matches
- else
......
= form_for @team_member_relation, as: :team_member, url: admin_project_member_path(@project, @member) do |f|
-if @team_member_relation.errors.any?
.alert-message.block-message.error
.alert.alert-error
%ul
- @team_member_relation.errors.full_messages.each do |msg|
%li= msg
......@@ -12,5 +12,5 @@
%br
.actions
= f.submit 'Save', class: "btn primary"
= f.submit 'Save', class: "btn btn-primary"
= link_to 'Cancel', :back, class: "btn"
%h3.page_title
Project: #{@project.name_with_namespace}
= link_to edit_admin_project_path(@project), class: "btn right" do
= link_to edit_admin_project_path(@project), class: "btn pull-right" do
%i.icon-edit
Edit
......@@ -129,8 +129,8 @@
%td
= link_to tm.name, admin_user_path(tm)
%td= @project.project_access_human(tm)
%td= link_to 'Edit Access', edit_admin_project_member_path(@project, tm), class: "btn small"
%td= link_to 'Remove from team', admin_project_member_path(@project, tm), confirm: 'Are you sure?', method: :delete, class: "btn danger small"
%td= link_to 'Edit Access', edit_admin_project_member_path(@project, tm), class: "btn btn-small"
%td= link_to 'Remove from team', admin_project_member_path(@project, tm), confirm: 'Are you sure?', method: :delete, class: "btn btn-remove small"
%br
%h5 Add new team member
......@@ -147,7 +147,7 @@
%td= select_tag :project_access, options_for_select(Project.access_options), {class: "project-access-select chosen span3"}
%tr
%td= submit_tag 'Add', class: "btn primary"
%td= submit_tag 'Add', class: "btn btn-primary"
%td
Read more about project permissions
%strong= link_to "here", help_permissions_path, class: "vlink"
......@@ -2,7 +2,7 @@
%hr
= form_for @team, url: admin_team_path(@team), method: :put do |f|
- if @team.errors.any?
.alert-message.block-message.error
.alert.alert-error
%span= @team.errors.full_messages.first
.clearfix.team_name_holder
= f.label :name do
......@@ -19,5 +19,5 @@
%li It will change web url for access team and team projects.
.form-actions
= f.submit 'Rename team', class: "btn danger"
= link_to 'Cancel', admin_teams_path, class: "btn cancel-btn"
= f.submit 'Rename team', class: "btn btn-remove"
= link_to 'Cancel', admin_teams_path, class: "btn btn-cancel"
......@@ -3,12 +3,12 @@
%small
simple Teams description
= link_to 'New Team', new_admin_team_path, class: "btn small right"
= link_to 'New Team', new_admin_team_path, class: "btn btn-small pull-right"
%br
= form_tag admin_teams_path, method: :get, class: 'form-inline' do
= text_field_tag :name, params[:name], class: "xlarge"
= submit_tag "Search", class: "btn submit primary"
= submit_tag "Search", class: "btn submit btn-primary"
%table
%thead
......@@ -32,7 +32,7 @@
%td
= link_to team.owner.name, admin_user_path(team.owner_id)
%td.bgred
= link_to 'Rename', edit_admin_team_path(team), id: "edit_#{dom_id(team)}", class: "btn small"
= link_to 'Destroy', admin_team_path(team), confirm: "REMOVE #{team.name}? Are you sure?", method: :delete, class: "btn small danger"
= link_to 'Rename', edit_admin_team_path(team), id: "edit_#{dom_id(team)}", class: "btn btn-small"
= link_to 'Destroy', admin_team_path(team), confirm: "REMOVE #{team.name}? Are you sure?", method: :delete, class: "btn btn-small btn-remove"
= paginate @teams, theme: "admin"
= form_tag admin_team_member_path(@team, @member), method: :put do
-if @member.errors.any?
.alert-message.block-message.error
.alert.alert-error
%ul
- @member.errors.full_messages.each do |msg|
%li= msg
......@@ -16,5 +16,5 @@
%br
.actions
= submit_tag 'Save', class: "btn primary"
= submit_tag 'Save', class: "btn btn-primary"
= link_to 'Cancel', :back, class: "btn"
......@@ -26,4 +26,4 @@
%td
%span= check_box_tag :group_admin
%span Admin?
%td= submit_tag 'Add', class: "btn primary", id: :add_members_to_team
%td= submit_tag 'Add', class: "btn btn-primary", id: :add_members_to_team
......@@ -2,7 +2,7 @@
%hr
= form_for @team, url: admin_teams_path do |f|
- if @team.errors.any?
.alert-message.block-message.error
.alert.alert-error
%span= @team.errors.full_messages.first
.clearfix
= f.label :name do
......@@ -10,7 +10,7 @@
.input
= f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left"
&nbsp;
= f.submit 'Create team', class: "btn primary"
= f.submit 'Create team', class: "btn btn-primary"
%hr
.padded
%ul
......
= form_tag admin_team_project_path(@team, @project), method: :put do
-if @project.errors.any?
.alert-message.block-message.error
.alert.alert-error
%ul
- @project.errors.full_messages.each do |msg|
%li= msg
......@@ -12,5 +12,5 @@
%br
.actions
= submit_tag 'Save', class: "btn primary"
= submit_tag 'Save', class: "btn btn-primary"
= link_to 'Cancel', :back, class: "btn"
......@@ -20,4 +20,4 @@
%tr
%td= select_tag :project_ids, options_from_collection_for_select(@projects , :id, :name_with_namespace), multiple: true, data: {placeholder: 'Select projects'}, class: 'chosen span5'
%td= select_tag :greatest_project_access, options_for_select(Project.access_options), {class: "project-access-select chosen span3" }
%td= submit_tag 'Add', class: "btn primary", id: :assign_projects_to_team
%td= submit_tag 'Add', class: "btn btn-primary", id: :assign_projects_to_team
......@@ -14,7 +14,7 @@
%td
= @team.name
&nbsp;
= link_to edit_admin_team_path(@team), class: "btn btn-small right" do
= link_to edit_admin_team_path(@team), class: "btn btn-small pull-right" do
%i.icon-edit
Rename
%tr
......@@ -23,7 +23,7 @@
Owner:
%td
= @team.owner.name
.right
.pull-right
= link_to "#", class: "btn btn-small change-owner-link" do
%i.icon-edit
Change owner
......@@ -36,13 +36,13 @@
= form_for @team, url: admin_team_path(@team) do |f|
= f.select :owner_id, User.all.map { |user| [user.name, user.id] }, {}, {class: 'chosen'}
%div
= f.submit 'Change Owner', class: "btn danger"
= f.submit 'Change Owner', class: "btn btn-remove"
= link_to "Cancel", "#", class: "btn change-owner-cancel-link"
%fieldset
%legend
Members (#{@team.members.count})
%span= link_to 'Add members', new_admin_team_member_path(@team), class: "btn success small right", id: :add_members_to_team
%span= link_to 'Add members', new_admin_team_member_path(@team), class: "btn btn-primary btn-small pull-right", id: :add_members_to_team
- if @team.members.any?
%table#members_list
%thead
......@@ -60,14 +60,14 @@
%td= @team.human_default_projects_access(member)
%td= @team.admin?(member) ? "Admin" : "Member"
%td.bgred
= link_to 'Edit', edit_admin_team_member_path(@team, member), class: "btn small"
= link_to 'Edit', edit_admin_team_member_path(@team, member), class: "btn btn-small"
&nbsp;
= link_to 'Remove', admin_team_member_path(@team, member), confirm: 'Remove member from team. Are you sure?', method: :delete, class: "btn danger small", id: "remove_member_#{member.id}"
= link_to 'Remove', admin_team_member_path(@team, member), confirm: 'Remove member from team. Are you sure?', method: :delete, class: "btn btn-remove btn-small", id: "remove_member_#{member.id}"
%fieldset
%legend
Projects (#{@team.projects.count})
%span= link_to 'Add projects', new_admin_team_project_path(@team), class: "btn success small right", id: :assign_projects_to_team
%span= link_to 'Add projects', new_admin_team_project_path(@team), class: "btn btn-primary btn-small pull-right", id: :assign_projects_to_team
- if @team.projects.any?
%table#projects_list
%thead
......@@ -82,9 +82,9 @@
%td
%span= @team.human_max_project_access(project)
%td.bgred
= link_to 'Edit', edit_admin_team_project_path(@team, project), class: "btn small"
= link_to 'Edit', edit_admin_team_project_path(@team, project), class: "btn btn-small"
&nbsp;
= link_to 'Relegate', admin_team_project_path(@team, project), confirm: 'Remove project from team. Are you sure?', method: :delete, class: "btn danger small", id: "relegate_project_#{project.id}"
= link_to 'Relegate', admin_team_project_path(@team, project), confirm: 'Remove project from team. Are you sure?', method: :delete, class: "btn btn-remove small", id: "relegate_project_#{project.id}"
:javascript
$(function(){
......
......@@ -63,10 +63,10 @@
.alert.alert-error
- if @admin_user.blocked
%p This user is blocked and is not able to login to GitLab
= link_to 'Unblock User', unblock_admin_user_path(@admin_user), method: :put, class: "btn small"
= link_to 'Unblock User', unblock_admin_user_path(@admin_user), method: :put, class: "btn btn-small"
- else
%p Blocked users will be removed from all projects &amp; will not be able to login to GitLab.
= link_to 'Block User', block_admin_user_path(@admin_user), confirm: 'USER WILL BE BLOCKED! Are you sure?', method: :put, class: "btn small danger"
= link_to 'Block User', block_admin_user_path(@admin_user), confirm: 'USER WILL BE BLOCKED! Are you sure?', method: :put, class: "btn btn-small btn-remove"
%fieldset
%legend Profile
.clearfix
......@@ -80,8 +80,8 @@
.input= f.text_field :twitter
.actions
= f.submit 'Save', class: "btn save-btn"
= f.submit 'Save', class: "btn btn-save"
- if @admin_user.new_record?
= link_to 'Cancel', admin_users_path, class: "btn cancel-btn"
= link_to 'Cancel', admin_users_path, class: "btn btn-cancel"
- else
= link_to 'Cancel', admin_user_path(@admin_user), class: "btn cancel-btn"
= link_to 'Cancel', admin_user_path(@admin_user), class: "btn btn-cancel"
%h3.page_title
Users
= link_to 'New User', new_admin_user_path, class: "btn small right"
= link_to 'New User', new_admin_user_path, class: "btn btn-small pull-right"
%br
= form_tag admin_users_path, method: :get, class: 'form-inline' do
= text_field_tag :name, params[:name], class: "xlarge"
= submit_tag "Search", class: "btn submit primary"
= submit_tag "Search", class: "btn submit btn-primary"
%ul.nav.nav-tabs
%li{class: "#{'active' unless params[:filter]}"}
= link_to admin_users_path do
......@@ -44,15 +44,15 @@
%td= user.username
%td= user.email
%td= user.users_projects.count
%td= link_to 'Edit', edit_admin_user_path(user), id: "edit_#{dom_id(user)}", class: "btn small"
%td= link_to 'Edit', edit_admin_user_path(user), id: "edit_#{dom_id(user)}", class: "btn btn-small"
%td.bgred
- if user == current_user
%span.cred It's you!
- else
- if user.blocked
= link_to 'Unblock', unblock_admin_user_path(user), method: :put, class: "btn small success"
= link_to 'Unblock', unblock_admin_user_path(user), method: :put, class: "btn btn-small success"
- else
= link_to 'Block', block_admin_user_path(user), confirm: 'USER WILL BE BLOCKED! Are you sure?', method: :put, class: "btn small danger"
= link_to 'Destroy', [:admin, user], confirm: "USER #{user.name} WILL BE REMOVED! Are you sure?", method: :delete, class: "btn small danger"
= link_to 'Block', block_admin_user_path(user), confirm: 'USER WILL BE BLOCKED! Are you sure?', method: :put, class: "btn btn-small btn-remove"
= link_to 'Destroy', [:admin, user], confirm: "USER #{user.name} WILL BE REMOVED! Are you sure?", method: :delete, class: "btn btn-small btn-remove"
= paginate @admin_users, theme: "admin"
......@@ -4,7 +4,7 @@
%small Blocked
- if @admin_user.admin
%small Administrator
= link_to edit_admin_user_path(@admin_user), class: "btn right" do
= link_to edit_admin_user_path(@admin_user), class: "btn pull-right" do
%i.icon-edit
Edit
......@@ -86,7 +86,7 @@
%td= select_tag :project_access, options_for_select(Project.access_options), class: "project-access-select chosen span3"
%tr
%td= submit_tag 'Add', class: "btn primary"
%td= submit_tag 'Add', class: "btn btn-primary"
%td
Read more about project permissions
%strong= link_to "here", help_permissions_path, class: "vlink"
......@@ -123,5 +123,5 @@
%tr
%td= link_to project.name_with_namespace, admin_project_path(project)
%td= tm.project_access_human
%td= link_to 'Edit Access', edit_admin_project_member_path(project, tm.user), class: "btn small"
%td= link_to 'Remove from team', admin_project_member_path(project, tm.user), confirm: 'Are you sure?', method: :delete, class: "btn small danger"
%td= link_to 'Edit Access', edit_admin_project_member_path(project, tm.user), class: "btn btn-small"
%td= link_to 'Remove from team', admin_project_member_path(project, tm.user), confirm: 'Are you sure?', method: :delete, class: "btn btn-small btn-remove"
......@@ -3,5 +3,5 @@
= render partial: 'shared/ref_switcher', locals: {destination: 'tree', path: params[:path]}
= nav_link(controller: :refs) do
= link_to 'Source', project_tree_path(@project, @ref)
%li.right
%li.pull-right
= render "shared/clone_panel"
= render "commits/commit_box"
.alert-message.block-message.error
.alert.alert-error
%h4 Commit diffs are too big to be displayed
= render "commits/commit_box"
%p.right.cgray
%p.pull-right.cgray
This commit has
%span.cgreen #{@commit.stats.additions} additions
and
......
.ui-box.ui-box-show
.ui-box-head
.right
.pull-right
- if @notes_count > 0
%span.btn.disabled.grouped
%i.icon-comment
......@@ -13,7 +13,7 @@
%ul.dropdown-menu
%li= link_to "Email Patches", project_commit_path(@project, @commit, format: :patch)
%li= link_to "Plain Diff", project_commit_path(@project, @commit, format: :diff)
= link_to project_tree_path(@project, @commit), class: "btn primary grouped" do
= link_to project_tree_path(@project, @commit), class: "btn btn-primary grouped" do
%span Browse Code »
%h3.commit-title.page_title
= gfm escape_once(@commit.title)
......
- if @suppress_diff
.alert-message.block-message
.alert.alert-block
%p
%strong Warning! Large commit with more then #{Commit::DIFF_SAFE_SIZE} files changed.
%strong Warning! Large commit with more than #{Commit::DIFF_SAFE_SIZE} files changed.
%p To prevent performance issue we rejected diff information.
%p
But if you still want to see diff
......@@ -25,7 +25,7 @@
%span= diff.old_path
- if @commit.prev_commit
= link_to project_tree_path(@project, tree_join(@commit.prev_commit_id, diff.new_path)), {:class => 'btn right view-file'} do
= link_to project_tree_path(@project, tree_join(@commit.prev_commit_id, diff.new_path)), {:class => 'btn pull-right view-file'} do
View file @
%span.commit-short-id= @commit.short_id(6)
- else
......@@ -33,7 +33,7 @@
- if diff.a_mode && diff.b_mode && diff.a_mode != diff.b_mode
%span.file-mode= "#{diff.a_mode}#{diff.b_mode}"
= link_to project_tree_path(@project, tree_join(@commit.id, diff.new_path)), {:class => 'btn very_small right view-file'} do
= link_to project_tree_path(@project, tree_join(@commit.id, diff.new_path)), {:class => 'btn btn-tiny pull-right view-file'} do
View file @
%span.commit-short-id= @commit.short_id(6)
......
......@@ -22,7 +22,7 @@
- if current_controller?(:commits) && current_user.private_token
%li.right
%li.pull-right
%span.rss-icon
= link_to project_commits_path(@project, @ref, {format: :atom, private_token: current_user.private_token}), title: "Feed" do
= image_tag "rss_ui.png", title: "feed"
......@@ -19,7 +19,7 @@
= text_field_tag :to, params[:to], placeholder: "aa8b4ef", class: "xlarge"
.pull-left
&nbsp;
= submit_tag "Compare", class: "btn primary wide commits-compare-btn"
= submit_tag "Compare", class: "btn btn-primary wide commits-compare-btn"
- if @refs_are_same
.alert
%span Refs are the same
......
......@@ -25,9 +25,9 @@
%li{class: ("active" if params[:project_id] == project.id.to_s)}
= link_to dashboard_filter_path(entity, project_id: project.id) do
= project.name_with_namespace
%small.right= entities_per_project(project, entity)
%small.pull-right= entities_per_project(project, entity)
%fieldset
%hr
= link_to "Reset", dashboard_filter_path(entity), class: 'btn right'
= link_to "Reset", dashboard_filter_path(entity), class: 'btn pull-right'
......@@ -4,8 +4,8 @@
%small
(#{groups.count})
- if current_user.can_create_group?
%span.right
= link_to new_group_path, class: "btn very_small info" do
%span.pull-right
= link_to new_group_path, class: "btn btn-tiny info" do
%i.icon-plus
New Group
%ul.well-list
......@@ -13,6 +13,6 @@
%li
= link_to group_path(id: group.path), class: dom_class(group) do
%strong.well-title= truncate(group.name, length: 35)
%span.right.light
%span.pull-right.light
- if group.owner == current_user
%i.icon-wrench
......@@ -4,8 +4,8 @@
%small
(#{@projects_count})
- if current_user.can_create_project?
%span.right
= link_to new_project_path, class: "btn very_small info" do
%span.pull-right
= link_to new_project_path, class: "btn btn-tiny info" do
%i.icon-plus
New Project
......
......@@ -3,8 +3,8 @@
Teams
%small
(#{@teams.count})
%span.right
= link_to new_team_path, class: "btn very_small info" do
%span.pull-right
= link_to new_team_path, class: "btn btn-tiny info" do
%i.icon-plus
New Team
%ul.well-list
......@@ -12,7 +12,7 @@
%li
= link_to team_path(id: team.path), class: dom_class(team) do
%strong.well-title= truncate(team.name, length: 35)
%span.right.light
%span.pull-right.light
- if team.owner == current_user
%i.icon-wrench
- tm = current_user.user_team_user_relationships.find_by_user_team_id(team.id)
......
......@@ -6,7 +6,7 @@
= current_user.projects_limit
projects. Click on button below to add a new one
.link_holder
= link_to new_project_path, class: "btn primary" do
= link_to new_project_path, class: "btn btn-primary" do
New Project »
- else
If you will be added to project - it will be displayed here
%h3.page_title
Issues
%small (assigned to you)
%small.right #{@issues.total_count} issues
%small.pull-right #{@issues.total_count} issues
%hr
......
%h3.page_title
Merge Requests
%small (authored by or assigned to you)
%small.right #{@merge_requests.total_count} merge requests
%small.pull-right #{@merge_requests.total_count} merge requests
%hr
.row
......
......@@ -3,8 +3,8 @@
%span
(#{@projects.total_count})
- if current_user.can_create_project?
%span.right
= link_to new_project_path, class: "btn very_small info" do
%span.pull-right
= link_to new_project_path, class: "btn btn-tiny info" do
%i.icon-plus
New Project
......@@ -42,7 +42,7 @@
%small.light
%strong Last activity:
%span= project_last_activity(project)
.right.light
.pull-right.light
- if project.owner == current_user
%i.icon-wrench
- tm = project.team.get_tm(current_user.id)
......
%div
= form_for [@project, @key], url: project_deploy_keys_path do |f|
-if @key.errors.any?
.alert-message.block-message.error
.alert.alert-error
%ul
- @key.errors.full_messages.each do |msg|
%li= msg
......@@ -18,6 +18,6 @@
= link_to "here", help_ssh_path
.actions
= f.submit 'Save', class: "save-btn btn"
= link_to "Cancel", project_deploy_keys_path(@project), class: "btn cancel-btn"
= f.submit 'Save', class: "btn-save btn"
= link_to "Cancel", project_deploy_keys_path(@project), class: "btn btn-cancel"
......@@ -8,5 +8,5 @@
= time_ago_in_words(key.created_at)
ago
%td
= link_to 'Remove', project_deploy_key_path(key.project, key), confirm: 'Are you sure?', method: :delete, class: "danger btn delete-key small right"
= link_to 'Remove', project_deploy_key_path(key.project, key), confirm: 'Are you sure?', method: :delete, class: "btn btn-remove delete-key btn-small pull-right"
......@@ -4,7 +4,7 @@
Deploy keys allow read-only access to repository. It matches perfectly for CI, staging or production servers.
- if can? current_user, :admin_project, @project
= link_to new_project_deploy_key_path(@project), class: "btn small", title: "New Deploy Key" do
= link_to new_project_deploy_key_path(@project), class: "btn btn-small", title: "New Deploy Key" do
Add Deploy Key
- if @keys.any?
%table
......
......@@ -10,5 +10,5 @@
&larr; To keys list
%hr
%pre= @key.key
.right
= link_to 'Remove', project_deploy_key_path(@key.project, @key), confirm: 'Are you sure?', method: :delete, class: "danger btn delete-key"
.pull-right
= link_to 'Remove', project_deploy_key_path(@key.project, @key), confirm: 'Are you sure?', method: :delete, class: "btn-remove btn delete-key"
......@@ -8,5 +8,5 @@
%div
= f.password_field :password_confirmation, class: "text bottom", placeholder: "Confirm new password"
%div
= f.submit "Change my password", class: "btn primary"
.right= render partial: "devise/shared/links"
= f.submit "Change my password", class: "btn btn-primary"
.pull-right= render partial: "devise/shared/links"
<%= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :class => "login-box", :method => :post }) do |f| %>
<%= image_tag "login-logo.png", :width => "304", :height => "66", :class => "login-logo", :alt => "Login Logo" %>
<%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { class: "login-box", method: :post }) do |f| %>
<%= image_tag "login-logo.png", width: "304", height: "66", class: "login-logo", alt: "Login Logo" %>
<%= devise_error_messages! %>
<%= f.email_field :email, :placeholder => "Email", :class => "text" %>
<%= f.email_field :email, placeholder: "Email", class: "text" %>
<br/>
<br/>
<%= f.submit "Reset password", :class => "primary btn" %>
<div class="right"> <%= link_to "Sign in", new_session_path(resource_name), :class => "btn" %><br /></div>
<%= f.submit "Reset password", class: "btn-primary btn" %>
<div class="pull-right"> <%= link_to "Sign in", new_session_path(resource_name), class: "btn" %><br /></div>
<% end %>
= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :class => "login-box" }) do |f|
= image_tag "login-logo.png", :width => "304", :height => "66", :class => "login-logo", :alt => "Login Logo"
= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { class: "login-box" }) do |f|
= image_tag "login-logo.png", width: "304", height: "66", class: "login-logo", alt: "Login Logo"
= devise_error_messages!
%div
= f.text_field :name, :class => "text top", :placeholder => "Name", :required => true
= f.text_field :name, class: "text top", placeholder: "Name", required: true
%div
= f.text_field :username, :class => "text middle", :placeholder => "Username", :required => true
= f.text_field :username, class: "text middle", placeholder: "Username", required: true
%div
= f.email_field :email, :class => "text middle", :placeholder => "Email", :required => true
= f.email_field :email, class: "text middle", placeholder: "Email", required: true
%div
= f.password_field :password, :class => "text middle", :placeholder => "Password", :required => true
= f.password_field :password, class: "text middle", placeholder: "Password", required: true
%div
= f.password_field :password_confirmation, :class => "text bottom", :placeholder => "Confirm password", :required => true
= f.password_field :password_confirmation, class: "text bottom", placeholder: "Confirm password", required: true
%div
= f.submit "Sign up", :class => "primary btn wide"
%br
= f.submit "Sign up", class: "btn-create btn"
%hr
= link_to "Sign in", new_session_path(resource_name)
= link_to "Forgot your password?", new_password_path(resource_name), :class => "right"
= link_to "Forgot your password?", new_password_path(resource_name), class: "pull-right"
......@@ -3,11 +3,11 @@
= text_field_tag :username, nil, {:class => "text top", :placeholder => "LDAP Login"}
= password_field_tag :password, nil, {:class => "text bottom", :placeholder => "Password"}
%br/
= submit_tag "LDAP Sign in", :class => "primary btn"
= submit_tag "LDAP Sign in", :class => "btn-primary btn"
- if devise_mapping.omniauthable?
- (resource_class.omniauth_providers - [:ldap]).each do |provider|
%hr/
= link_to "Sign in with #{provider.to_s.titleize}", omniauth_authorize_path(resource_name, provider), :class => "btn primary"
= link_to "Sign in with #{provider.to_s.titleize}", omniauth_authorize_path(resource_name, provider), :class => "btn btn-primary"
%br/
%hr/
%a#other_form_toggle{:href => "#", :onclick => "javascript:$('#new_user').toggle();"} Other Sign in
......@@ -24,6 +24,6 @@
= f.check_box :remember_me
%span Remember me
%br/
= f.submit "Sign in", :class => "primary btn"
.right
= f.submit "Sign in", :class => "btn-primary btn"
.pull-right
= render :partial => "devise/shared/links"
......@@ -11,18 +11,18 @@
= f.check_box :remember_me
%span Remember me
%br/
= f.submit "Sign in", :class => "primary btn wide"
.right
= f.submit "Sign in", :class => "btn-create btn"
.pull-right
= link_to "Forgot your password?", new_password_path(resource_name), :class => "btn"
%br/
%br/
- if Gitlab.config.gitlab.signup_enabled
%hr/
Don't have an account?
= link_to "Sign up", new_registration_path(resource_name)
.clearfix
- if devise_mapping.omniauthable? && resource_class.omniauth_providers.present?
%hr
%div
%span Sign in with: &nbsp;
- resource_class.omniauth_providers.each do |provider|
%span
= link_to authbutton(provider, 32), omniauth_authorize_path(resource_name, provider)
- if event.proper?
%div.event-item
%span.cgray.right
%span.cgray.pull-right
#{time_ago_in_words(event.created_at)} ago.
= image_tag gravatar_icon(event.author_email), class: "avatar s24"
......
%h3.page_title Project Network Graph
%br
= render partial: 'shared/ref_switcher', locals: {destination: 'graph', path: @path}
%br
.graph_holder
%h4
%small You can move around the graph by using the arrow keys.
......@@ -11,7 +12,8 @@
var branch_graph;
$(function(){
branch_graph = new BranchGraph($("#holder"), {
url: '#{url_for controller: 'projects', action: 'graph', format: :json}',
commit_url: '#{project_commit_path(@project, 'ae45ca32').gsub("ae45ca32", "%s")}'
url: '#{project_graph_path(@project, @ref, format: :json)}',
commit_url: '#{project_commit_path(@project, 'ae45ca32').gsub("ae45ca32", "%s")}',
ref: '#{@ref}'
});
});
......@@ -25,9 +25,9 @@
%li{class: ("active" if params[:project_id] == project.id.to_s)}
= link_to group_filter_path(entity, project_id: project.id) do
= project.name_with_namespace
%small.right= entities_per_project(project, entity)
%small.pull-right= entities_per_project(project, entity)
%fieldset
%hr
= link_to "Reset", group_filter_path(entity), class: 'btn right'
= link_to "Reset", group_filter_path(entity), class: 'btn pull-right'
......@@ -14,5 +14,5 @@
.form-actions
= hidden_field_tag :redirect_to, people_group_path(@group)
= f.submit 'Add', class: "btn save-btn"
= f.submit 'Add', class: "btn btn-save"
......@@ -14,5 +14,5 @@
.form-actions
= hidden_field_tag :redirect_to, people_group_path(@group, project_id: @project.id)
= f.submit 'Add', class: "btn save-btn"
= f.submit 'Add', class: "btn btn-save"
......@@ -6,9 +6,9 @@
%li{class: ("active" if params[:project_id] == project.id.to_s)}
= link_to people_group_path(@group, project_id: project.id) do
= project.name_with_namespace
%small.right= project.users.count
%small.pull-right= project.users.count
%fieldset
%hr
= link_to "Reset", people_group_path(@group), class: 'btn right'
= link_to "Reset", people_group_path(@group), class: 'btn pull-right'
......@@ -4,8 +4,8 @@
%small
(#{projects.count})
- if can? current_user, :manage_group, @group
%span.right
= link_to new_project_path(namespace_id: @group.id), class: "btn very_small info" do
%span.pull-right
= link_to new_project_path(namespace_id: @group.id), class: "btn btn-tiny info" do
%i.icon-plus
New Project
%ul.well-list
......
%h3.page_title Edit Group
%hr
= form_for @group do |f|
- if @group.errors.any?
.alert.alert-error
%span= @group.errors.full_messages.first
.clearfix
= f.label :name do
Group name is
.input
= f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left"
&nbsp;
= f.submit 'Save group', class: "btn btn-save"
%hr
.row
.span7
.ui-box
%h5.title Projects
%ul.well-list
- @group.projects.each do |project|
%li
- if project.public
%i.icon-share
- else
%i.icon-lock.cgreen
= link_to project.name_with_namespace, project
.pull-right
= link_to 'Team', project_team_index_path(project), id: "edit_#{dom_id(project)}", class: "btn btn-small"
= link_to 'Edit', edit_project_path(project), id: "edit_#{dom_id(project)}", class: "btn btn-small"
= link_to 'Remove', project, confirm: "REMOVE #{project.name}? Are you sure?", method: :delete, class: "btn btn-small btn-remove"
.span5
.ui-box
%h5.title Transfer group
.padded
%p
Transferring group will cause loss of admin control over group and all child projects
= form_for @group do |f|
= f.select :owner_id, User.all.map { |user| [user.name, user.id] }, {}, {class: 'chosen'}
= f.submit 'Transfer group', class: "btn btn-small"
.ui-box
%h5.title Remove group
.padded.bgred
%p
Remove of group will cause removing all child projects and resources
%br
Removed group can not be restored!
= link_to 'Remove Group', @group, confirm: 'Removed group can not be restored! Are you sure?', method: :delete, class: "btn btn-remove btn-small"
%h3.page_title
Issues
%small (assigned to you)
%small.right #{@issues.total_count} issues
%small.pull-right #{@issues.total_count} issues
%hr
.row
......
%h3.page_title
Merge Requests
%small (authored by or assigned to you)
%small.right #{@merge_requests.total_count} merge requests
%small.pull-right #{@merge_requests.total_count} merge requests
%hr
.row
......
......@@ -2,7 +2,7 @@
%hr
= form_for @group do |f|
- if @group.errors.any?
.alert-message.block-message.error
.alert.alert-error
%span= @group.errors.full_messages.first
.clearfix
= f.label :name do
......@@ -10,7 +10,7 @@
.input
= f.text_field :name, placeholder: "Ex. OpenSource", class: "xxlarge left"
&nbsp;
= f.submit 'Create group', class: "btn primary"
= f.submit 'Create group', class: "btn btn-create"
%hr
.padded
%ul
......
......@@ -16,5 +16,5 @@
%strong= user.name
%span.cgray= user.email
- if @group.owner == user
%span.btn.btn-small.disabled.right Group Owner
%span.btn.btn-small.disabled.pull-right Group Owner
......@@ -4,6 +4,6 @@
%strong Looking for
.input
= search_field_tag :search, params[:search], placeholder: "issue 143", class: "input-xxlarge search-text-input", id: "dashboard_search"
= submit_tag 'Search', class: "btn primary wide"
= submit_tag 'Search', class: "btn btn-primary wide"
- if params[:search].present?
= render 'search/result'
.projects
.activities.span8
= render "events/event_last_push", event: @last_push
= link_to dashboard_path, class: 'btn very_small' do
= link_to dashboard_path, class: 'btn btn-tiny' do
&larr; To dashboard
&nbsp;
%span.cgray You will only see events from projects in this group
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment