Commit 15c27192c0fa4e33188c3f6663362faca02df8af
Exists in
spb-stable
and in
2 other branches
Merge branch 'remove-wall'
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> Conflicts: CHANGELOG
Showing
43 changed files
with
7 additions
and
530 deletions
Show diff stats
CHANGELOG
... | ... | @@ -34,6 +34,7 @@ v 7.0.0 |
34 | 34 | - Skip init script check on omnibus-gitlab |
35 | 35 | - Be more selective when killing stray Sidekiqs |
36 | 36 | - Check LDAP user filter during sign-in |
37 | + - Remove wall feature (no data loss - you can take it from database) | |
37 | 38 | |
38 | 39 | v 6.9.2 |
39 | 40 | - Revert the commit that broke the LDAP user filter | ... | ... |
app/assets/javascripts/dispatcher.js.coffee
app/assets/javascripts/wall.js.coffee
... | ... | @@ -1,85 +0,0 @@ |
1 | -class Wall | |
2 | - constructor: (project_id) -> | |
3 | - @project_id = project_id | |
4 | - @note_ids = [] | |
5 | - @getContent() | |
6 | - @initRefresh() | |
7 | - @initForm() | |
8 | - | |
9 | - # | |
10 | - # Gets an initial set of notes. | |
11 | - # | |
12 | - getContent: -> | |
13 | - Api.notes @project_id, (notes) => | |
14 | - $.each notes, (i, note) => | |
15 | - # render note if it not present in loaded list | |
16 | - # or skip if rendered | |
17 | - if $.inArray(note.id, @note_ids) == -1 | |
18 | - @note_ids.push(note.id) | |
19 | - @renderNote(note) | |
20 | - @scrollDown() | |
21 | - $("abbr.timeago").timeago() | |
22 | - | |
23 | - initRefresh: -> | |
24 | - setInterval => | |
25 | - @refresh() | |
26 | - , 10000 | |
27 | - | |
28 | - refresh: -> | |
29 | - @getContent() | |
30 | - | |
31 | - scrollDown: -> | |
32 | - notes = $('ul.notes') | |
33 | - $('body, html').scrollTop(notes.height()) | |
34 | - | |
35 | - initForm: -> | |
36 | - form = $('.wall-note-form') | |
37 | - form.find("#target_type").val('wall') | |
38 | - | |
39 | - form.on 'ajax:success', => | |
40 | - @refresh() | |
41 | - form.find(".js-note-text").val("").trigger("input") | |
42 | - | |
43 | - form.on 'ajax:complete', -> | |
44 | - form.find(".js-comment-button").removeAttr('disabled') | |
45 | - form.find(".js-comment-button").removeClass('disabled') | |
46 | - | |
47 | - form.on "click", ".js-choose-note-attachment-button", -> | |
48 | - form.find(".js-note-attachment-input").click() | |
49 | - | |
50 | - form.on "change", ".js-note-attachment-input", -> | |
51 | - filename = $(this).val().replace(/^.*[\\\/]/, '') | |
52 | - form.find(".js-attachment-filename").text(filename) | |
53 | - | |
54 | - form.find('.note_text').keydown (e) -> | |
55 | - if e.ctrlKey && e.keyCode == 13 | |
56 | - form.find('.js-comment-button').submit() | |
57 | - | |
58 | - form.show() | |
59 | - | |
60 | - renderNote: (note) -> | |
61 | - template = @noteTemplate() | |
62 | - template = template.replace('{{author_name}}', note.author.name) | |
63 | - template = template.replace(/{{created_at}}/g, note.created_at) | |
64 | - template = template.replace('{{text}}', simpleFormat(note.body)) | |
65 | - | |
66 | - if note.attachment | |
67 | - file = '<i class="icon-paper-clip"/><a href="' + gon.relative_url_root + '/files/note/' + note.id + '/' + note.attachment + '">' + note.attachment + '</a>' | |
68 | - else | |
69 | - file = '' | |
70 | - template = template.replace('{{file}}', file) | |
71 | - | |
72 | - | |
73 | - $('ul.notes').append(template) | |
74 | - | |
75 | - noteTemplate: -> | |
76 | - return '<li> | |
77 | - <strong class="wall-author">{{author_name}}</strong> | |
78 | - <span class="wall-text"> | |
79 | - {{text}} | |
80 | - <span class="wall-file">{{file}}</span> | |
81 | - </span> | |
82 | - <abbr class="timeago" title="{{created_at}}">{{created_at}}</abbr> | |
83 | - </li>' | |
84 | - | |
85 | -@Wall = Wall |
app/assets/stylesheets/sections/wall.scss
... | ... | @@ -1,55 +0,0 @@ |
1 | -.wall-page { | |
2 | - .wall-note-form { | |
3 | - @extend .col-md-12; | |
4 | - | |
5 | - margin: 0; | |
6 | - height: 140px; | |
7 | - background: #F9F9F9; | |
8 | - position: fixed; | |
9 | - bottom: 0px; | |
10 | - padding: 3px; | |
11 | - padding-bottom: 25px; | |
12 | - border: 1px solid #DDD; | |
13 | - } | |
14 | - | |
15 | - .notes { | |
16 | - margin-bottom: 160px; | |
17 | - background: #FFE; | |
18 | - border: 1px solid #EED; | |
19 | - | |
20 | - > li { | |
21 | - @extend .clearfix; | |
22 | - border-bottom: 1px solid #EED; | |
23 | - padding: 10px; | |
24 | - } | |
25 | - | |
26 | - .wall-author { | |
27 | - color: #666; | |
28 | - float: left; | |
29 | - font-size: 12px; | |
30 | - width: 120px; | |
31 | - text-overflow: ellipsis; | |
32 | - white-space: nowrap; | |
33 | - overflow: hidden; | |
34 | - } | |
35 | - | |
36 | - .wall-text { | |
37 | - border-left: 1px solid #CCC; | |
38 | - margin-left: 10px; | |
39 | - padding-left: 10px; | |
40 | - float: left; | |
41 | - width: 75%; | |
42 | - } | |
43 | - | |
44 | - .wall-file { | |
45 | - margin-left: 8px; | |
46 | - background: #EEE; | |
47 | - } | |
48 | - | |
49 | - abbr { | |
50 | - float: right; | |
51 | - color: #AAA; | |
52 | - border: none; | |
53 | - } | |
54 | - } | |
55 | -} |
app/controllers/projects/walls_controller.rb
... | ... | @@ -1,20 +0,0 @@ |
1 | -class Projects::WallsController < Projects::ApplicationController | |
2 | - before_filter :module_enabled | |
3 | - | |
4 | - respond_to :js, :html | |
5 | - | |
6 | - def show | |
7 | - @note = @project.notes.new | |
8 | - | |
9 | - respond_to do |format| | |
10 | - format.html | |
11 | - end | |
12 | - end | |
13 | - | |
14 | - protected | |
15 | - | |
16 | - def module_enabled | |
17 | - return render_404 unless @project.wall_enabled | |
18 | - end | |
19 | -end | |
20 | - |
app/helpers/events_helper.rb
app/helpers/projects_helper.rb
... | ... | @@ -139,7 +139,7 @@ module ProjectsHelper |
139 | 139 | nav_tabs << :settings |
140 | 140 | end |
141 | 141 | |
142 | - [:issues, :wiki, :wall, :snippets].each do |feature| | |
142 | + [:issues, :wiki, :snippets].each do |feature| | |
143 | 143 | nav_tabs << feature if project.send :"#{feature}_enabled" |
144 | 144 | end |
145 | 145 | ... | ... |
app/helpers/search_helper.rb
... | ... | @@ -61,7 +61,6 @@ module SearchHelper |
61 | 61 | { label: "#{prefix} - Milestones", url: project_milestones_path(@project) }, |
62 | 62 | { label: "#{prefix} - Snippets", url: project_snippets_path(@project) }, |
63 | 63 | { label: "#{prefix} - Team", url: project_team_index_path(@project) }, |
64 | - { label: "#{prefix} - Wall", url: project_wall_path(@project) }, | |
65 | 64 | { label: "#{prefix} - Wiki", url: project_wikis_path(@project) }, |
66 | 65 | ] |
67 | 66 | else | ... | ... |
app/mailers/emails/notes.rb
... | ... | @@ -32,14 +32,5 @@ module Emails |
32 | 32 | cc: recipient(recipient_id), |
33 | 33 | subject: subject("#{@merge_request.title} (##{@merge_request.iid})")) |
34 | 34 | end |
35 | - | |
36 | - def note_wall_email(recipient_id, note_id) | |
37 | - @note = Note.find(note_id) | |
38 | - @project = @note.project | |
39 | - @target_url = project_wall_url(@note.project, anchor: "note_#{@note.id}") | |
40 | - mail(from: sender(@note.author_id), | |
41 | - cc: recipient(recipient_id), | |
42 | - subject: subject("Note on wall")) | |
43 | - end | |
44 | 35 | end |
45 | 36 | end | ... | ... |
app/models/event.rb
app/models/note.rb
... | ... | @@ -251,10 +251,6 @@ class Note < ActiveRecord::Base |
251 | 251 | for_merge_request? && for_diff_line? |
252 | 252 | end |
253 | 253 | |
254 | - def for_wall? | |
255 | - noteable_type.blank? | |
256 | - end | |
257 | - | |
258 | 254 | # override to return commits, which are not active record |
259 | 255 | def noteable |
260 | 256 | if for_commit? |
... | ... | @@ -295,8 +291,6 @@ class Note < ActiveRecord::Base |
295 | 291 | def noteable_type_name |
296 | 292 | if noteable_type.present? |
297 | 293 | noteable_type.downcase |
298 | - else | |
299 | - "wall" | |
300 | 294 | end |
301 | 295 | end |
302 | 296 | ... | ... |
app/models/project.rb
... | ... | @@ -31,7 +31,6 @@ class Project < ActiveRecord::Base |
31 | 31 | |
32 | 32 | default_value_for :archived, false |
33 | 33 | default_value_for :issues_enabled, true |
34 | - default_value_for :wall_enabled, true | |
35 | 34 | default_value_for :merge_requests_enabled, true |
36 | 35 | default_value_for :wiki_enabled, true |
37 | 36 | default_value_for :snippets_enabled, true |
... | ... | @@ -39,7 +38,7 @@ class Project < ActiveRecord::Base |
39 | 38 | ActsAsTaggableOn.strict_case_match = true |
40 | 39 | |
41 | 40 | attr_accessible :name, :path, :description, :issues_tracker, :label_list, |
42 | - :issues_enabled, :wall_enabled, :merge_requests_enabled, :snippets_enabled, :issues_tracker_id, | |
41 | + :issues_enabled, :merge_requests_enabled, :snippets_enabled, :issues_tracker_id, | |
43 | 42 | :wiki_enabled, :visibility_level, :import_url, :last_activity_at, as: [:default, :admin] |
44 | 43 | |
45 | 44 | attr_accessible :namespace_id, :creator_id, as: :admin |
... | ... | @@ -98,7 +97,7 @@ class Project < ActiveRecord::Base |
98 | 97 | exclusion: { in: Gitlab::Blacklist.path }, |
99 | 98 | format: { with: Gitlab::Regex.path_regex, |
100 | 99 | message: "only letters, digits & '_' '-' '.' allowed. Letter or digit should be first" } |
101 | - validates :issues_enabled, :wall_enabled, :merge_requests_enabled, | |
100 | + validates :issues_enabled, :merge_requests_enabled, | |
102 | 101 | :wiki_enabled, inclusion: { in: [true, false] } |
103 | 102 | validates :issues_tracker_id, length: { maximum: 255 }, allow_blank: true |
104 | 103 | validates :namespace, presence: true | ... | ... |
app/observers/note_observer.rb
... | ... | @@ -3,12 +3,9 @@ class NoteObserver < BaseObserver |
3 | 3 | notification.new_note(note) |
4 | 4 | |
5 | 5 | # Skip system notes, like status changes and cross-references. |
6 | - # Skip wall notes to prevent spamming of dashboard | |
7 | - if note.noteable_type.present? && !note.system | |
6 | + unless note.system | |
8 | 7 | event_service.leave_note(note, note.author) |
9 | - end | |
10 | 8 | |
11 | - unless note.system? | |
12 | 9 | # Create a cross-reference note if this Note contains GFM that names an |
13 | 10 | # issue, merge request, or commit. |
14 | 11 | note.references.each do |mentioned| | ... | ... |
app/services/notification_service.rb
app/services/projects/create_service.rb
... | ... | @@ -19,7 +19,6 @@ module Projects |
19 | 19 | default_opts = { |
20 | 20 | issues_enabled: default_features.issues, |
21 | 21 | wiki_enabled: default_features.wiki, |
22 | - wall_enabled: default_features.wall, | |
23 | 22 | snippets_enabled: default_features.snippets, |
24 | 23 | merge_requests_enabled: default_features.merge_requests, |
25 | 24 | visibility_level: default_features.visibility_level | ... | ... |
app/views/layouts/nav/_project.html.haml
... | ... | @@ -36,10 +36,6 @@ |
36 | 36 | = nav_link(controller: :wikis) do |
37 | 37 | = link_to 'Wiki', project_wiki_path(@project, :home) |
38 | 38 | |
39 | - - if project_nav_tab? :wall | |
40 | - = nav_link(controller: :walls) do | |
41 | - = link_to 'Wall', project_wall_path(@project) | |
42 | - | |
43 | 39 | - if project_nav_tab? :snippets |
44 | 40 | = nav_link(controller: :snippets) do |
45 | 41 | = link_to 'Snippets', project_snippets_path(@project) | ... | ... |
app/views/notify/note_wall_email.html.haml
... | ... | @@ -1 +0,0 @@ |
1 | -= render 'note_message' |
app/views/notify/note_wall_email.text.erb
app/views/projects/edit.html.haml
... | ... | @@ -74,13 +74,6 @@ |
74 | 74 | %span.descr Pages for project documentation |
75 | 75 | |
76 | 76 | .form-group |
77 | - = f.label :wall_enabled, "Wall", class: 'control-label' | |
78 | - .col-sm-10 | |
79 | - .checkbox | |
80 | - = f.check_box :wall_enabled | |
81 | - %span.descr Simple chat system for broadcasting inside project | |
82 | - | |
83 | - .form-group | |
84 | 77 | = f.label :snippets_enabled, "Snippets", class: 'control-label' |
85 | 78 | .col-sm-10 |
86 | 79 | .checkbox | ... | ... |
app/views/projects/walls/show.html.haml
... | ... | @@ -1,23 +0,0 @@ |
1 | -%div.wall-page | |
2 | - %ul.notes | |
3 | - | |
4 | - - if can? current_user, :write_note, @project | |
5 | - .note-form-holder | |
6 | - = form_for [@project, @note], remote: true, html: { multipart: true, id: nil, class: "new_note wall-note-form" }, authenticity_token: true do |f| | |
7 | - = note_target_fields | |
8 | - .note_text_and_preview | |
9 | - = f.text_area :note, size: 255, class: 'note_text js-note-text js-gfm-input turn-on' | |
10 | - .note-form-actions | |
11 | - .buttons | |
12 | - = f.submit 'Add Comment', class: "btn comment-btn btn-grouped js-comment-button" | |
13 | - | |
14 | - .note-form-option | |
15 | - %a.choose-btn.btn.btn-small.js-choose-note-attachment-button | |
16 | - %i.icon-paper-clip | |
17 | - %span Choose File ... | |
18 | - | |
19 | - %span.file_name.js-attachment-filename File name... | |
20 | - = f.file_field :attachment, class: "js-note-attachment-input hidden" | |
21 | - | |
22 | - .hint.pull-right CTRL + Enter to send message | |
23 | - .clearfix |
config/gitlab.yml.example
config/initializers/1_settings.rb
... | ... | @@ -95,7 +95,6 @@ Settings.gitlab['default_projects_features'] ||= {} |
95 | 95 | Settings.gitlab.default_projects_features['issues'] = true if Settings.gitlab.default_projects_features['issues'].nil? |
96 | 96 | Settings.gitlab.default_projects_features['merge_requests'] = true if Settings.gitlab.default_projects_features['merge_requests'].nil? |
97 | 97 | Settings.gitlab.default_projects_features['wiki'] = true if Settings.gitlab.default_projects_features['wiki'].nil? |
98 | -Settings.gitlab.default_projects_features['wall'] = false if Settings.gitlab.default_projects_features['wall'].nil? | |
99 | 98 | Settings.gitlab.default_projects_features['snippets'] = false if Settings.gitlab.default_projects_features['snippets'].nil? |
100 | 99 | Settings.gitlab.default_projects_features['visibility_level'] = Settings.send(:verify_constant, Gitlab::VisibilityLevel, Settings.gitlab.default_projects_features['visibility_level'], Gitlab::VisibilityLevel::PRIVATE) |
101 | 100 | Settings.gitlab['repository_downloads_path'] = File.absolute_path(Settings.gitlab['repository_downloads_path'] || 'tmp/repositories', Rails.root) | ... | ... |
config/routes.rb
... | ... | @@ -209,12 +209,6 @@ Gitlab::Application.routes.draw do |
209 | 209 | end |
210 | 210 | end |
211 | 211 | |
212 | - resource :wall, only: [:show], constraints: {id: /\d+/} do | |
213 | - member do | |
214 | - get 'notes' | |
215 | - end | |
216 | - end | |
217 | - | |
218 | 212 | resource :repository, only: [:show] do |
219 | 213 | member do |
220 | 214 | get "stats" | ... | ... |
doc/api/notes.md
1 | 1 | # Notes |
2 | 2 | |
3 | -Notes can be wall notes or comments on snippets, issues or merge requests. | |
4 | - | |
5 | -## Wall | |
6 | - | |
7 | -### List project wall notes | |
8 | - | |
9 | -Get a list of project wall notes. | |
10 | - | |
11 | -``` | |
12 | -GET /projects/:id/notes | |
13 | -``` | |
14 | - | |
15 | -Parameters: | |
16 | - | |
17 | -+ `id` (required) - The ID of a project | |
18 | - | |
19 | -```json | |
20 | -[ | |
21 | - { | |
22 | - "id": 522, | |
23 | - "body": "The solution is rather tricky", | |
24 | - "attachment": null, | |
25 | - "author": { | |
26 | - "id": 1, | |
27 | - "username": "john_smith", | |
28 | - "email": "john@example.com", | |
29 | - "name": "John Smith", | |
30 | - "state": "active", | |
31 | - "created_at": "2012-05-23T08:00:58Z" | |
32 | - }, | |
33 | - "created_at": "2012-11-27T19:16:44Z" | |
34 | - } | |
35 | -] | |
36 | -``` | |
37 | - | |
38 | -### Get single wall note | |
39 | - | |
40 | -Returns a single wall note. | |
41 | - | |
42 | -``` | |
43 | -GET /projects/:id/notes/:note_id | |
44 | -``` | |
45 | - | |
46 | -Parameters: | |
47 | - | |
48 | -+ `id` (required) - The ID of a project | |
49 | -+ `note_id` (required) - The ID of a wall note | |
50 | - | |
51 | - | |
52 | -### Create new wall note | |
53 | - | |
54 | -Creates a new wall note. | |
55 | - | |
56 | -``` | |
57 | -POST /projects/:id/notes | |
58 | -``` | |
59 | - | |
60 | -Parameters: | |
61 | - | |
62 | -+ `id` (required) - The ID of a project | |
63 | -+ `body` (required) - The content of a note | |
64 | - | |
3 | +Notes are comments on snippets, issues or merge requests. | |
65 | 4 | |
66 | 5 | ## Issues |
67 | 6 | ... | ... |
doc/api/projects.md
... | ... | @@ -30,7 +30,6 @@ GET /projects |
30 | 30 | "path_with_namespace": "diaspora/diaspora-client", |
31 | 31 | "issues_enabled": true, |
32 | 32 | "merge_requests_enabled": true, |
33 | - "wall_enabled": false, | |
34 | 33 | "wiki_enabled": true, |
35 | 34 | "snippets_enabled": false, |
36 | 35 | "created_at": "2013-09-30T13: 46: 02Z", |
... | ... | @@ -66,7 +65,6 @@ GET /projects |
66 | 65 | "path_with_namespace": "brightbox/puppet", |
67 | 66 | "issues_enabled": true, |
68 | 67 | "merge_requests_enabled": true, |
69 | - "wall_enabled": false, | |
70 | 68 | "wiki_enabled": true, |
71 | 69 | "snippets_enabled": false, |
72 | 70 | "created_at": "2013-09-30T13:46:02Z", |
... | ... | @@ -136,7 +134,6 @@ Parameters: |
136 | 134 | "path_with_namespace": "diaspora/diaspora-project-site", |
137 | 135 | "issues_enabled": true, |
138 | 136 | "merge_requests_enabled": true, |
139 | - "wall_enabled": false, | |
140 | 137 | "wiki_enabled": true, |
141 | 138 | "snippets_enabled": false, |
142 | 139 | "created_at": "2013-09-30T13: 46: 02Z", |
... | ... | @@ -252,7 +249,6 @@ Parameters: |
252 | 249 | + `namespace_id` (optional) - namespace for the new project (defaults to user) |
253 | 250 | + `description` (optional) - short project description |
254 | 251 | + `issues_enabled` (optional) |
255 | -+ `wall_enabled` (optional) | |
256 | 252 | + `merge_requests_enabled` (optional) |
257 | 253 | + `wiki_enabled` (optional) |
258 | 254 | + `snippets_enabled` (optional) |
... | ... | @@ -276,7 +272,6 @@ Parameters: |
276 | 272 | + `description` (optional) - short project description |
277 | 273 | + `default_branch` (optional) - 'master' by default |
278 | 274 | + `issues_enabled` (optional) |
279 | -+ `wall_enabled` (optional) | |
280 | 275 | + `merge_requests_enabled` (optional) |
281 | 276 | + `wiki_enabled` (optional) |
282 | 277 | + `snippets_enabled` (optional) | ... | ... |
doc/markdown/markdown.md
doc/permissions/permissions.md
... | ... | @@ -13,7 +13,6 @@ If a user is a GitLab administrator they receive all permissions. |
13 | 13 | |---------------------------------------|---------|------------|-------------|----------|--------| |
14 | 14 | | Create new issue | ✓ | ✓ | ✓ | ✓ | ✓ | |
15 | 15 | | Leave comments | ✓ | ✓ | ✓ | ✓ | ✓ | |
16 | -| Write on project wall | ✓ | ✓ | ✓ | ✓ | ✓ | | |
17 | 16 | | Pull project code | | ✓ | ✓ | ✓ | ✓ | |
18 | 17 | | Download project | | ✓ | ✓ | ✓ | ✓ | |
19 | 18 | | Create code snippets | | ✓ | ✓ | ✓ | ✓ | | ... | ... |
doc/workflow/project_features.md
... | ... | @@ -26,12 +26,6 @@ This is a separate system for documentation, built right into GitLab. |
26 | 26 | |
27 | 27 | It is source controlled and is very convenient if you don't want to keep you documentation in your source code, but you do want to keep it in your GitLab project. |
28 | 28 | |
29 | -## Wall | |
30 | - | |
31 | -For simple, project specific conversations, the wall can be used. | |
32 | - | |
33 | -It's very lightweight and simple and works well if you're not interested in using issues, but still want to occasionally communicate within a project. | |
34 | - | |
35 | 29 | ## Snippets |
36 | 30 | |
37 | 31 | Snippets are little bits of code or text. | ... | ... |
features/project/active_tab.feature
... | ... | @@ -35,11 +35,6 @@ Feature: Project active tab |
35 | 35 | Then the active main tab should be Merge Requests |
36 | 36 | And no other main tabs should be active |
37 | 37 | |
38 | - Scenario: On Project Wall | |
39 | - Given I visit my project's wall page | |
40 | - Then the active main tab should be Wall | |
41 | - And no other main tabs should be active | |
42 | - | |
43 | 38 | Scenario: On Project Wiki |
44 | 39 | Given I visit my project's wiki page |
45 | 40 | Then the active main tab should be Wiki | ... | ... |
features/project/wall.feature
... | ... | @@ -1,16 +0,0 @@ |
1 | -Feature: Project Wall | |
2 | - In order to use Project Wall | |
3 | - A user should be able to read and write messages | |
4 | - | |
5 | - Background: | |
6 | - Given I sign in as a user | |
7 | - And I own project "Shop" | |
8 | - And I visit project "Shop" wall page | |
9 | - | |
10 | - @javascript | |
11 | - Scenario: Write comment | |
12 | - Given I write new comment "my special test message" | |
13 | - Then I should see project wall note "my special test message" | |
14 | - | |
15 | - Then I visit project "Shop" wall page | |
16 | - And I should see project wall note "my special test message" |
features/steps/project/wall.rb
... | ... | @@ -1,18 +0,0 @@ |
1 | -class ProjectWall < Spinach::FeatureSteps | |
2 | - include SharedAuthentication | |
3 | - include SharedProject | |
4 | - include SharedNote | |
5 | - include SharedPaths | |
6 | - | |
7 | - | |
8 | - Given 'I write new comment "my special test message"' do | |
9 | - within(".wall-note-form") do | |
10 | - fill_in "note[note]", with: "my special test message" | |
11 | - click_button "Add Comment" | |
12 | - end | |
13 | - end | |
14 | - | |
15 | - Then 'I should see project wall note "my special test message"' do | |
16 | - page.should have_content "my special test message" | |
17 | - end | |
18 | -end |
features/steps/shared/paths.rb
... | ... | @@ -204,10 +204,6 @@ module SharedPaths |
204 | 204 | visit project_merge_requests_path(@project) |
205 | 205 | end |
206 | 206 | |
207 | - step "I visit my project's wall page" do | |
208 | - visit project_wall_path(@project) | |
209 | - end | |
210 | - | |
211 | 207 | step "I visit my project's wiki page" do |
212 | 208 | visit project_wiki_path(@project, :home) |
213 | 209 | end |
... | ... | @@ -319,10 +315,6 @@ module SharedPaths |
319 | 315 | visit project_team_index_path(project) |
320 | 316 | end |
321 | 317 | |
322 | - step 'I visit project "Shop" wall page' do | |
323 | - visit project_wall_path(project) | |
324 | - end | |
325 | - | |
326 | 318 | step 'I visit project wiki page' do |
327 | 319 | visit project_wiki_path(@project, :home) |
328 | 320 | end | ... | ... |
lib/api/entities.rb
... | ... | @@ -48,7 +48,7 @@ module API |
48 | 48 | expose :owner, using: Entities::UserBasic, unless: ->(project, options) { project.group } |
49 | 49 | expose :name, :name_with_namespace |
50 | 50 | expose :path, :path_with_namespace |
51 | - expose :issues_enabled, :merge_requests_enabled, :wall_enabled, :wiki_enabled, :snippets_enabled, :created_at, :last_activity_at | |
51 | + expose :issues_enabled, :merge_requests_enabled, :wiki_enabled, :snippets_enabled, :created_at, :last_activity_at | |
52 | 52 | expose :namespace |
53 | 53 | expose :forked_from_project, using: Entities::ForkedFromProject, :if => lambda{ | project, options | project.forked? } |
54 | 54 | end | ... | ... |
lib/api/notes.rb
... | ... | @@ -6,55 +6,6 @@ module API |
6 | 6 | NOTEABLE_TYPES = [Issue, MergeRequest, Snippet] |
7 | 7 | |
8 | 8 | resource :projects do |
9 | - # Get a list of project wall notes | |
10 | - # | |
11 | - # Parameters: | |
12 | - # id (required) - The ID of a project | |
13 | - # Example Request: | |
14 | - # GET /projects/:id/notes | |
15 | - get ":id/notes" do | |
16 | - @notes = user_project.notes.common | |
17 | - | |
18 | - # Get recent notes if recent = true | |
19 | - @notes = @notes.order('id DESC') if params[:recent] | |
20 | - | |
21 | - present paginate(@notes), with: Entities::Note | |
22 | - end | |
23 | - | |
24 | - # Get a single project wall note | |
25 | - # | |
26 | - # Parameters: | |
27 | - # id (required) - The ID of a project | |
28 | - # note_id (required) - The ID of a note | |
29 | - # Example Request: | |
30 | - # GET /projects/:id/notes/:note_id | |
31 | - get ":id/notes/:note_id" do | |
32 | - @note = user_project.notes.common.find(params[:note_id]) | |
33 | - present @note, with: Entities::Note | |
34 | - end | |
35 | - | |
36 | - # Create a new project wall note | |
37 | - # | |
38 | - # Parameters: | |
39 | - # id (required) - The ID of a project | |
40 | - # body (required) - The content of a note | |
41 | - # Example Request: | |
42 | - # POST /projects/:id/notes | |
43 | - post ":id/notes" do | |
44 | - required_attributes! [:body] | |
45 | - | |
46 | - @note = user_project.notes.new(note: params[:body]) | |
47 | - @note.author = current_user | |
48 | - | |
49 | - if @note.save | |
50 | - present @note, with: Entities::Note | |
51 | - else | |
52 | - # :note is exposed as :body, but :note is set on error | |
53 | - bad_request!(:note) if @note.errors[:note].any? | |
54 | - not_found! | |
55 | - end | |
56 | - end | |
57 | - | |
58 | 9 | NOTEABLE_TYPES.each do |noteable_type| |
59 | 10 | noteables_str = noteable_type.to_s.underscore.pluralize |
60 | 11 | noteable_id_str = "#{noteable_type.to_s.underscore}_id" | ... | ... |
lib/api/projects.rb
... | ... | @@ -71,7 +71,6 @@ module API |
71 | 71 | # name (required) - name for new project |
72 | 72 | # description (optional) - short project description |
73 | 73 | # issues_enabled (optional) |
74 | - # wall_enabled (optional) | |
75 | 74 | # merge_requests_enabled (optional) |
76 | 75 | # wiki_enabled (optional) |
77 | 76 | # snippets_enabled (optional) |
... | ... | @@ -86,7 +85,6 @@ module API |
86 | 85 | :path, |
87 | 86 | :description, |
88 | 87 | :issues_enabled, |
89 | - :wall_enabled, | |
90 | 88 | :merge_requests_enabled, |
91 | 89 | :wiki_enabled, |
92 | 90 | :snippets_enabled, |
... | ... | @@ -114,7 +112,6 @@ module API |
114 | 112 | # description (optional) - short project description |
115 | 113 | # default_branch (optional) - 'master' by default |
116 | 114 | # issues_enabled (optional) |
117 | - # wall_enabled (optional) | |
118 | 115 | # merge_requests_enabled (optional) |
119 | 116 | # wiki_enabled (optional) |
120 | 117 | # snippets_enabled (optional) |
... | ... | @@ -129,7 +126,6 @@ module API |
129 | 126 | :description, |
130 | 127 | :default_branch, |
131 | 128 | :issues_enabled, |
132 | - :wall_enabled, | |
133 | 129 | :merge_requests_enabled, |
134 | 130 | :wiki_enabled, |
135 | 131 | :snippets_enabled, | ... | ... |
spec/features/security/project/internal_access_spec.rb
... | ... | @@ -87,17 +87,6 @@ describe "Internal Project Access", feature: true do |
87 | 87 | it { should be_denied_for :visitor } |
88 | 88 | end |
89 | 89 | |
90 | - describe "GET /:project_path/wall" do | |
91 | - subject { project_wall_path(project) } | |
92 | - | |
93 | - it { should be_allowed_for master } | |
94 | - it { should be_allowed_for reporter } | |
95 | - it { should be_allowed_for :admin } | |
96 | - it { should be_allowed_for guest } | |
97 | - it { should be_allowed_for :user } | |
98 | - it { should be_denied_for :visitor } | |
99 | - end | |
100 | - | |
101 | 90 | describe "GET /:project_path/blob" do |
102 | 91 | before do |
103 | 92 | commit = project.repository.commit | ... | ... |
spec/features/security/project/private_access_spec.rb
... | ... | @@ -87,17 +87,6 @@ describe "Private Project Access", feature: true do |
87 | 87 | it { should be_denied_for :visitor } |
88 | 88 | end |
89 | 89 | |
90 | - describe "GET /:project_path/wall" do | |
91 | - subject { project_wall_path(project) } | |
92 | - | |
93 | - it { should be_allowed_for master } | |
94 | - it { should be_allowed_for reporter } | |
95 | - it { should be_allowed_for :admin } | |
96 | - it { should be_denied_for guest } | |
97 | - it { should be_denied_for :user } | |
98 | - it { should be_denied_for :visitor } | |
99 | - end | |
100 | - | |
101 | 90 | describe "GET /:project_path/blob" do |
102 | 91 | before do |
103 | 92 | commit = project.repository.commit | ... | ... |
spec/features/security/project/public_access_spec.rb
... | ... | @@ -92,17 +92,6 @@ describe "Public Project Access", feature: true do |
92 | 92 | it { should be_denied_for :visitor } |
93 | 93 | end |
94 | 94 | |
95 | - describe "GET /:project_path/wall" do | |
96 | - subject { project_wall_path(project) } | |
97 | - | |
98 | - it { should be_allowed_for master } | |
99 | - it { should be_allowed_for reporter } | |
100 | - it { should be_allowed_for :admin } | |
101 | - it { should be_allowed_for guest } | |
102 | - it { should be_allowed_for :user } | |
103 | - it { should be_allowed_for :visitor } | |
104 | - end | |
105 | - | |
106 | 95 | describe "GET /:project_path/blob" do |
107 | 96 | before do |
108 | 97 | commit = project.repository.commit | ... | ... |
spec/mailers/notify_spec.rb
... | ... | @@ -410,22 +410,6 @@ describe Notify do |
410 | 410 | end |
411 | 411 | end |
412 | 412 | |
413 | - describe 'on a project wall' do | |
414 | - let(:note_on_the_wall_path) { project_wall_path(project, anchor: "note_#{note.id}") } | |
415 | - | |
416 | - subject { Notify.note_wall_email(recipient.id, note.id) } | |
417 | - | |
418 | - it_behaves_like 'a note email' | |
419 | - | |
420 | - it 'has the correct subject' do | |
421 | - should have_subject /#{project.name}/ | |
422 | - end | |
423 | - | |
424 | - it 'contains a link to the wall note' do | |
425 | - should have_body_text /#{note_on_the_wall_path}/ | |
426 | - end | |
427 | - end | |
428 | - | |
429 | 413 | describe 'on a commit' do |
430 | 414 | let(:commit) { project.repository.commit } |
431 | 415 | ... | ... |
spec/requests/api/notes_spec.rb
... | ... | @@ -13,58 +13,8 @@ describe API::API, api: true do |
13 | 13 | let!(:issue_note) { create(:note, noteable: issue, project: project, author: user) } |
14 | 14 | let!(:merge_request_note) { create(:note, noteable: merge_request, project: project, author: user) } |
15 | 15 | let!(:snippet_note) { create(:note, noteable: snippet, project: project, author: user) } |
16 | - let!(:wall_note) { create(:note, project: project, author: user) } | |
17 | 16 | before { project.team << [user, :reporter] } |
18 | 17 | |
19 | - describe "GET /projects/:id/notes" do | |
20 | - context "when unauthenticated" do | |
21 | - it "should return authentication error" do | |
22 | - get api("/projects/#{project.id}/notes") | |
23 | - response.status.should == 401 | |
24 | - end | |
25 | - end | |
26 | - | |
27 | - context "when authenticated" do | |
28 | - it "should return project wall notes" do | |
29 | - get api("/projects/#{project.id}/notes", user) | |
30 | - response.status.should == 200 | |
31 | - json_response.should be_an Array | |
32 | - json_response.first['body'].should == wall_note.note | |
33 | - end | |
34 | - end | |
35 | - end | |
36 | - | |
37 | - describe "GET /projects/:id/notes/:note_id" do | |
38 | - it "should return a wall note by id" do | |
39 | - get api("/projects/#{project.id}/notes/#{wall_note.id}", user) | |
40 | - response.status.should == 200 | |
41 | - json_response['body'].should == wall_note.note | |
42 | - end | |
43 | - | |
44 | - it "should return a 404 error if note not found" do | |
45 | - get api("/projects/#{project.id}/notes/123", user) | |
46 | - response.status.should == 404 | |
47 | - end | |
48 | - end | |
49 | - | |
50 | - describe "POST /projects/:id/notes" do | |
51 | - it "should create a new wall note" do | |
52 | - post api("/projects/#{project.id}/notes", user), body: 'hi!' | |
53 | - response.status.should == 201 | |
54 | - json_response['body'].should == 'hi!' | |
55 | - end | |
56 | - | |
57 | - it "should return 401 unauthorized error" do | |
58 | - post api("/projects/#{project.id}/notes") | |
59 | - response.status.should == 401 | |
60 | - end | |
61 | - | |
62 | - it "should return a 400 bad request if body is missing" do | |
63 | - post api("/projects/#{project.id}/notes", user) | |
64 | - response.status.should == 400 | |
65 | - end | |
66 | - end | |
67 | - | |
68 | 18 | describe "GET /projects/:id/noteable/:noteable_id/notes" do |
69 | 19 | context "when noteable is an Issue" do |
70 | 20 | it "should return an array of issue notes" do | ... | ... |
spec/requests/api/projects_spec.rb
... | ... | @@ -126,7 +126,6 @@ describe API::API, api: true do |
126 | 126 | project = attributes_for(:project, { |
127 | 127 | description: Faker::Lorem.sentence, |
128 | 128 | issues_enabled: false, |
129 | - wall_enabled: false, | |
130 | 129 | merge_requests_enabled: false, |
131 | 130 | wiki_enabled: false |
132 | 131 | }) |
... | ... | @@ -208,7 +207,6 @@ describe API::API, api: true do |
208 | 207 | project = attributes_for(:project, { |
209 | 208 | description: Faker::Lorem.sentence, |
210 | 209 | issues_enabled: false, |
211 | - wall_enabled: false, | |
212 | 210 | merge_requests_enabled: false, |
213 | 211 | wiki_enabled: false |
214 | 212 | }) | ... | ... |
spec/routing/project_routing_spec.rb
... | ... | @@ -56,7 +56,6 @@ end |
56 | 56 | # projects POST /projects(.:format) projects#create |
57 | 57 | # new_project GET /projects/new(.:format) projects#new |
58 | 58 | # fork_project POST /:id/fork(.:format) projects#fork |
59 | -# wall_project GET /:id/wall(.:format) projects#wall | |
60 | 59 | # files_project GET /:id/files(.:format) projects#files |
61 | 60 | # edit_project GET /:id/edit(.:format) projects#edit |
62 | 61 | # project GET /:id(.:format) projects#show |
... | ... | @@ -75,10 +74,6 @@ describe ProjectsController, "routing" do |
75 | 74 | post("/gitlab/gitlabhq/fork").should route_to('projects#fork', id: 'gitlab/gitlabhq') |
76 | 75 | end |
77 | 76 | |
78 | - it "to #wall" do | |
79 | - get("/gitlab/gitlabhq/wall").should route_to('projects/walls#show', project_id: 'gitlab/gitlabhq') | |
80 | - end | |
81 | - | |
82 | 77 | it "to #edit" do |
83 | 78 | get("/gitlab/gitlabhq/edit").should route_to('projects#edit', id: 'gitlab/gitlabhq') |
84 | 79 | end | ... | ... |
spec/services/projects/create_service_spec.rb
... | ... | @@ -65,7 +65,6 @@ describe Projects::CreateService do |
65 | 65 | @settings.stub(:issues) { true } |
66 | 66 | @settings.stub(:merge_requests) { true } |
67 | 67 | @settings.stub(:wiki) { true } |
68 | - @settings.stub(:wall) { true } | |
69 | 68 | @settings.stub(:snippets) { true } |
70 | 69 | stub_const("Settings", Class.new) |
71 | 70 | @restrictions = double("restrictions") |
... | ... | @@ -108,7 +107,6 @@ describe Projects::CreateService do |
108 | 107 | @settings.stub(:issues) { true } |
109 | 108 | @settings.stub(:merge_requests) { true } |
110 | 109 | @settings.stub(:wiki) { true } |
111 | - @settings.stub(:wall) { true } | |
112 | 110 | @settings.stub(:snippets) { true } |
113 | 111 | @settings.stub(:visibility_level) { Gitlab::VisibilityLevel::PRIVATE } |
114 | 112 | stub_const("Settings", Class.new) | ... | ... |