Commit b49cfbc1d54b6cfa674ba803b3a90fb81c609c8b
1 parent
cc869d5d
Exists in
master
and in
4 other branches
Project snippets moved to /projects
Showing
10 changed files
with
130 additions
and
8 deletions
Show diff stats
app/controllers/projects/snippets_controller.rb
... | ... | @@ -0,0 +1,12 @@ |
1 | +.file_holder | |
2 | + .file_title | |
3 | + %i.icon-file | |
4 | + %strong= @snippet.file_name | |
5 | + %span.options | |
6 | + = link_to "raw", raw_project_snippet_path(@project, @snippet), class: "btn btn-tiny", target: "_blank" | |
7 | + .file_content.code | |
8 | + - unless @snippet.content.empty? | |
9 | + %div{class: user_color_scheme_class} | |
10 | + = raw @snippet.colorize(formatter: :gitlab) | |
11 | + - else | |
12 | + %p.nothing_here_message Empty file | ... | ... |
... | ... | @@ -0,0 +1,41 @@ |
1 | +%h3.page_title | |
2 | + = @snippet.new_record? ? "New Snippet" : "Edit Snippet ##{@snippet.id}" | |
3 | +%hr | |
4 | +.snippet-form-holder | |
5 | + = form_for [@project, @snippet] do |f| | |
6 | + -if @snippet.errors.any? | |
7 | + .alert.alert-error | |
8 | + %ul | |
9 | + - @snippet.errors.full_messages.each do |msg| | |
10 | + %li= msg | |
11 | + | |
12 | + .clearfix | |
13 | + = f.label :title | |
14 | + .input= f.text_field :title, placeholder: "Example Snippet", class: 'input-xlarge', required: true | |
15 | + .clearfix | |
16 | + = f.label "Lifetime" | |
17 | + .input= f.select :expires_at, lifetime_select_options, {}, {class: 'chosen span2'} | |
18 | + .clearfix | |
19 | + .file-editor | |
20 | + = f.label :file_name, "File" | |
21 | + .input | |
22 | + .file_holder.snippet | |
23 | + .file_title | |
24 | + = f.text_field :file_name, placeholder: "example.rb", class: 'snippet-file-name', required: true | |
25 | + .file_content.code | |
26 | + %pre#editor= @snippet.content | |
27 | + = f.hidden_field :content, class: 'snippet-file-content' | |
28 | + | |
29 | + .form-actions | |
30 | + = f.submit 'Save', class: "btn-save btn" | |
31 | + = link_to "Cancel", project_snippets_path(@project), class: " btn" | |
32 | + - unless @snippet.new_record? | |
33 | + .pull-right= link_to 'Destroy', [@project, @snippet], confirm: 'Are you sure?', method: :delete, class: "btn pull-right danger delete-snippet", id: "destroy_snippet_#{@snippet.id}" | |
34 | + | |
35 | + | |
36 | +:javascript | |
37 | + var editor = ace.edit("editor"); | |
38 | + $(".snippet-form-holder form").submit(function(){ | |
39 | + $(".snippet-file-content").val(editor.getValue()); | |
40 | + }); | |
41 | + | ... | ... |
... | ... | @@ -0,0 +1,13 @@ |
1 | +%tr | |
2 | + %td | |
3 | + = image_tag gravatar_icon(snippet.author_email), class: "avatar s24" | |
4 | + %a{href: project_snippet_path(snippet.project, snippet)} | |
5 | + %strong= truncate(snippet.title, length: 60) | |
6 | + %td | |
7 | + = snippet.file_name | |
8 | + %td | |
9 | + %span.cgray | |
10 | + - if snippet.expires_at | |
11 | + = snippet.expires_at.to_date.to_s(:short) | |
12 | + - else | |
13 | + Never | ... | ... |
... | ... | @@ -0,0 +1 @@ |
1 | += render "snippets/form" | ... | ... |
... | ... | @@ -0,0 +1,19 @@ |
1 | +%h3.page_title | |
2 | + Snippets | |
3 | + %small share code pastes with others out of git repository | |
4 | + | |
5 | + - if can? current_user, :write_snippet, @project | |
6 | + = link_to new_project_snippet_path(@project), class: "btn btn-small add_new pull-right", title: "New Snippet" do | |
7 | + Add new snippet | |
8 | +%br | |
9 | +%table | |
10 | + %thead | |
11 | + %tr | |
12 | + %th Title | |
13 | + %th File Name | |
14 | + %th Expires At | |
15 | + = render @snippets | |
16 | + - if @snippets.empty? | |
17 | + %tr | |
18 | + %td{colspan: 3} | |
19 | + %h3.nothing_here_message Nothing here. | ... | ... |
... | ... | @@ -0,0 +1 @@ |
1 | += render "snippets/form" | ... | ... |
... | ... | @@ -0,0 +1,9 @@ |
1 | +%h3.page_title | |
2 | + = @snippet.title | |
3 | + %small= @snippet.file_name | |
4 | + - if can?(current_user, :admin_snippet, @project) || @snippet.author == current_user | |
5 | + = link_to "Edit", edit_project_snippet_path(@project, @snippet), class: "btn btn-small pull-right", title: 'Edit Snippet' | |
6 | + | |
7 | +%br | |
8 | +%div= render 'blob' | |
9 | +%div#notes= render "notes/notes_with_form" | ... | ... |
config/routes.rb
... | ... | @@ -244,9 +244,11 @@ Gitlab::Application.routes.draw do |
244 | 244 | end |
245 | 245 | end |
246 | 246 | |
247 | - resources :snippets do | |
248 | - member do | |
249 | - get "raw" | |
247 | + scope module: :projects do | |
248 | + resources :snippets do | |
249 | + member do | |
250 | + get "raw" | |
251 | + end | |
250 | 252 | end |
251 | 253 | end |
252 | 254 | ... | ... |
spec/routing/project_routing_spec.rb
... | ... | @@ -249,13 +249,37 @@ end |
249 | 249 | # project_snippet GET /:project_id/snippets/:id(.:format) snippets#show |
250 | 250 | # PUT /:project_id/snippets/:id(.:format) snippets#update |
251 | 251 | # DELETE /:project_id/snippets/:id(.:format) snippets#destroy |
252 | -describe SnippetsController, "routing" do | |
252 | +describe Project::SnippetsController, "routing" do | |
253 | 253 | it "to #raw" do |
254 | - get("/gitlabhq/snippets/1/raw").should route_to('snippets#raw', project_id: 'gitlabhq', id: '1') | |
254 | + get("/gitlabhq/snippets/1/raw").should route_to('projects/snippets#raw', project_id: 'gitlabhq', id: '1') | |
255 | 255 | end |
256 | 256 | |
257 | - it_behaves_like "RESTful project resources" do | |
258 | - let(:controller) { 'snippets' } | |
257 | + it "to #index" do | |
258 | + get("/gitlabhq/snippets").should route_to("projects/snippets#index", project_id: 'gitlabhq') | |
259 | + end | |
260 | + | |
261 | + it "to #create" do | |
262 | + post("/gitlabhq/snippets").should route_to("projects/snippets#create", project_id: 'gitlabhq') | |
263 | + end | |
264 | + | |
265 | + it "to #new" do | |
266 | + get("/gitlabhq/snippets/new").should route_to("projects/snippets#new", project_id: 'gitlabhq') | |
267 | + end | |
268 | + | |
269 | + it "to #edit" do | |
270 | + get("/gitlabhq/snippets/1/edit").should route_to("projects/snippets#edit", project_id: 'gitlabhq', id: '1') | |
271 | + end | |
272 | + | |
273 | + it "to #show" do | |
274 | + get("/gitlabhq/snippets/1").should route_to("projects/snippets#show", project_id: 'gitlabhq', id: '1') | |
275 | + end | |
276 | + | |
277 | + it "to #update" do | |
278 | + put("/gitlabhq/snippets/1").should route_to("projects/snippets#update", project_id: 'gitlabhq', id: '1') | |
279 | + end | |
280 | + | |
281 | + it "to #destroy" do | |
282 | + delete("/gitlabhq/snippets/1").should route_to("projects/snippets#destroy", project_id: 'gitlabhq', id: '1') | |
259 | 283 | end |
260 | 284 | end |
261 | 285 | ... | ... |