Merge branch 'web_editor'

This commit is contained in:
randx 2012-10-15 19:52:10 +03:00
commit bd5dbe14e4
95 changed files with 162513 additions and 7 deletions

View file

@ -18,4 +18,5 @@
//= require chosen-jquery
//= require raphael
//= require branch-graph
//= require ace-src-noconflict/ace.js
//= require_tree .

View file

@ -182,3 +182,9 @@ $hover: #D9EDF7;
*
*/
@import "highlight/dark.scss";
/**
* File Editor styles
*
*/
@import "sections/editor.scss";

View file

@ -0,0 +1,14 @@
.file-editor {
#editor{
height: 500px;
width: 100%;
position: relative;
}
.editor-commit-comment {
padding-top:20px;
textarea {
width: 50%;
margin-left: 20px;
}
}
}

View file

@ -59,3 +59,11 @@
}
}
}
.tree-btn-group {
.btn {
margin-right:-3px;
padding:2px 10px;
}
}

View file

@ -19,4 +19,25 @@ class TreeController < ProjectResourceController
format.js { no_cache_headers }
end
end
def edit
@last_commit = @project.last_commit_for(@ref, @path).sha
end
def update
file_editor = Gitlab::FileEditor.new(current_user, @project, @ref)
update_status = file_editor.update(
@path,
params[:content],
params[:commit_message],
params[:last_commit]
)
if update_status
redirect_to project_tree_path(@project, @id), :notice => "File has been successfully changed"
else
flash[:notice] = "You can't save file because it has been changed"
render :edit
end
end
end

View file

@ -23,7 +23,7 @@ class MergeRequest < ActiveRecord::Base
validate :validate_branches
def self.find_all_by_branch(branch_name)
where("source_branch like :branch or target_branch like :branch", branch: branch_name)
where("source_branch LIKE :branch OR target_branch LIKE :branch", branch: branch_name)
end
def human_state

View file

@ -32,6 +32,10 @@ module Repository
Commit.commits(repo, ref, path, limit, offset)
end
def last_commit_for(ref, path = nil)
commits(ref, path, 1).first
end
def commits_between(from, to)
Commit.commits_between(repo, from, to)
end

View file

@ -5,9 +5,11 @@
= tree_file.name.force_encoding('utf-8')
%small #{tree_file.mode}
%span.options
= link_to "raw", project_blob_path(@project, @id), class: "btn very_small", target: "_blank"
= link_to "history", project_commits_path(@project, @id), class: "btn very_small"
= link_to "blame", project_blame_path(@project, @id), class: "btn very_small"
.btn-group.tree-btn-group
= link_to "raw", project_blob_path(@project, @id), class: "btn very_small", target: "_blank"
= link_to "history", project_commits_path(@project, @id), class: "btn very_small"
= link_to "blame", project_blame_path(@project, @id), class: "btn very_small"
= link_to "edit", edit_project_tree_path(@project, @id), class: "btn very_small"
- if tree_file.text?
- if gitlab_markdown?(tree_file.name)
.file_content.wiki

View file

@ -0,0 +1,30 @@
.file-editor
= form_tag(project_tree_path(@project, @id), :method => :put) do
.file_holder
.file_title
%i.icon-file
%span.file_name
= @tree.path.force_encoding('utf-8')
%span.options
= link_to "cancel editing", project_tree_path(@project, @id), class: "btn very_small"
.file_content.code
#editor= @tree.data
.editor-commit-comment
= label_tag 'commit_message' do
%p.slead Commit message
= text_area_tag 'commit_message', '', :required => true
.form-actions
= hidden_field_tag 'last_commit', @last_commit
= hidden_field_tag 'content', '', :id => :file_content
= button_tag "Save", class: 'btn save-btn'
:javascript
var editor = ace.edit("editor");
editor.setTheme("ace/theme/twilight");
editor.getSession().setMode("ace/mode/javascript");
$(".save-btn").click(function(){
$("#file_content").val(editor.getValue());
$(".form_editor form").submit();
});