summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-06-13 15:19:14 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-06-13 15:19:14 +0300
commit15c27192c0fa4e33188c3f6663362faca02df8af (patch)
tree2cbac2abf10cb88afdf03319c58f65ebd88c6cfd
parentd3d0775acde8dbbb887665c3c52009d76e906d10 (diff)
parentd593c98fcbd34789068a72c9386f69a152107139 (diff)
downloadgitlab-ce-15c27192c0fa4e33188c3f6663362faca02df8af.tar.gz
Merge branch 'remove-wall'
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> Conflicts: CHANGELOG
-rw-r--r--CHANGELOG1
-rw-r--r--app/assets/javascripts/dispatcher.js.coffee2
-rw-r--r--app/assets/javascripts/wall.js.coffee85
-rw-r--r--app/assets/stylesheets/sections/wall.scss55
-rw-r--r--app/controllers/projects/walls_controller.rb20
-rw-r--r--app/helpers/events_helper.rb2
-rw-r--r--app/helpers/projects_helper.rb2
-rw-r--r--app/helpers/search_helper.rb1
-rw-r--r--app/mailers/emails/notes.rb9
-rw-r--r--app/models/event.rb4
-rw-r--r--app/models/note.rb6
-rw-r--r--app/models/project.rb5
-rw-r--r--app/observers/note_observer.rb5
-rw-r--r--app/services/notification_service.rb1
-rw-r--r--app/services/projects/create_service.rb1
-rw-r--r--app/views/layouts/nav/_project.html.haml4
-rw-r--r--app/views/notify/note_wall_email.html.haml1
-rw-r--r--app/views/notify/note_wall_email.text.erb9
-rw-r--r--app/views/projects/edit.html.haml7
-rw-r--r--app/views/projects/walls/show.html.haml23
-rw-r--r--config/gitlab.yml.example1
-rw-r--r--config/initializers/1_settings.rb1
-rw-r--r--config/routes.rb6
-rw-r--r--doc/api/notes.md63
-rw-r--r--doc/api/projects.md5
-rw-r--r--doc/markdown/markdown.md1
-rw-r--r--doc/permissions/permissions.md1
-rw-r--r--doc/workflow/project_features.md6
-rw-r--r--features/project/active_tab.feature5
-rw-r--r--features/project/wall.feature16
-rw-r--r--features/steps/project/wall.rb18
-rw-r--r--features/steps/shared/paths.rb8
-rw-r--r--lib/api/entities.rb2
-rw-r--r--lib/api/notes.rb49
-rw-r--r--lib/api/projects.rb4
-rw-r--r--spec/features/security/project/internal_access_spec.rb11
-rw-r--r--spec/features/security/project/private_access_spec.rb11
-rw-r--r--spec/features/security/project/public_access_spec.rb11
-rw-r--r--spec/mailers/notify_spec.rb16
-rw-r--r--spec/requests/api/notes_spec.rb50
-rw-r--r--spec/requests/api/projects_spec.rb2
-rw-r--r--spec/routing/project_routing_spec.rb5
-rw-r--r--spec/services/projects/create_service_spec.rb2
43 files changed, 7 insertions, 530 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 7279b7c8c06..4a299827c11 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -34,6 +34,7 @@ v 7.0.0
- Skip init script check on omnibus-gitlab
- Be more selective when killing stray Sidekiqs
- Check LDAP user filter during sign-in
+ - Remove wall feature (no data loss - you can take it from database)
v 6.9.2
- Revert the commit that broke the LDAP user filter
diff --git a/app/assets/javascripts/dispatcher.js.coffee b/app/assets/javascripts/dispatcher.js.coffee
index 6518c380bdc..ff68b520ad6 100644
--- a/app/assets/javascripts/dispatcher.js.coffee
+++ b/app/assets/javascripts/dispatcher.js.coffee
@@ -34,8 +34,6 @@ class Dispatcher
new Activities()
when 'projects:new', 'projects:edit'
new Project()
- when 'projects:walls:show'
- new Wall(project_id)
when 'projects:teams:members:index'
new TeamMembers()
when 'groups:members'
diff --git a/app/assets/javascripts/wall.js.coffee b/app/assets/javascripts/wall.js.coffee
deleted file mode 100644
index 4cc11331aca..00000000000
--- a/app/assets/javascripts/wall.js.coffee
+++ /dev/null
@@ -1,85 +0,0 @@
-class Wall
- constructor: (project_id) ->
- @project_id = project_id
- @note_ids = []
- @getContent()
- @initRefresh()
- @initForm()
-
- #
- # Gets an initial set of notes.
- #
- getContent: ->
- Api.notes @project_id, (notes) =>
- $.each notes, (i, note) =>
- # render note if it not present in loaded list
- # or skip if rendered
- if $.inArray(note.id, @note_ids) == -1
- @note_ids.push(note.id)
- @renderNote(note)
- @scrollDown()
- $("abbr.timeago").timeago()
-
- initRefresh: ->
- setInterval =>
- @refresh()
- , 10000
-
- refresh: ->
- @getContent()
-
- scrollDown: ->
- notes = $('ul.notes')
- $('body, html').scrollTop(notes.height())
-
- initForm: ->
- form = $('.wall-note-form')
- form.find("#target_type").val('wall')
-
- form.on 'ajax:success', =>
- @refresh()
- form.find(".js-note-text").val("").trigger("input")
-
- form.on 'ajax:complete', ->
- form.find(".js-comment-button").removeAttr('disabled')
- form.find(".js-comment-button").removeClass('disabled')
-
- form.on "click", ".js-choose-note-attachment-button", ->
- form.find(".js-note-attachment-input").click()
-
- form.on "change", ".js-note-attachment-input", ->
- filename = $(this).val().replace(/^.*[\\\/]/, '')
- form.find(".js-attachment-filename").text(filename)
-
- form.find('.note_text').keydown (e) ->
- if e.ctrlKey && e.keyCode == 13
- form.find('.js-comment-button').submit()
-
- form.show()
-
- renderNote: (note) ->
- template = @noteTemplate()
- template = template.replace('{{author_name}}', note.author.name)
- template = template.replace(/{{created_at}}/g, note.created_at)
- template = template.replace('{{text}}', simpleFormat(note.body))
-
- if note.attachment
- file = '<i class="icon-paper-clip"/><a href="' + gon.relative_url_root + '/files/note/' + note.id + '/' + note.attachment + '">' + note.attachment + '</a>'
- else
- file = ''
- template = template.replace('{{file}}', file)
-
-
- $('ul.notes').append(template)
-
- noteTemplate: ->
- return '<li>
- <strong class="wall-author">{{author_name}}</strong>
- <span class="wall-text">
- {{text}}
- <span class="wall-file">{{file}}</span>
- </span>
- <abbr class="timeago" title="{{created_at}}">{{created_at}}</abbr>
- </li>'
-
-@Wall = Wall
diff --git a/app/assets/stylesheets/sections/wall.scss b/app/assets/stylesheets/sections/wall.scss
deleted file mode 100644
index 3705afdb87c..00000000000
--- a/app/assets/stylesheets/sections/wall.scss
+++ /dev/null
@@ -1,55 +0,0 @@
-.wall-page {
- .wall-note-form {
- @extend .col-md-12;
-
- margin: 0;
- height: 140px;
- background: #F9F9F9;
- position: fixed;
- bottom: 0px;
- padding: 3px;
- padding-bottom: 25px;
- border: 1px solid #DDD;
- }
-
- .notes {
- margin-bottom: 160px;
- background: #FFE;
- border: 1px solid #EED;
-
- > li {
- @extend .clearfix;
- border-bottom: 1px solid #EED;
- padding: 10px;
- }
-
- .wall-author {
- color: #666;
- float: left;
- font-size: 12px;
- width: 120px;
- text-overflow: ellipsis;
- white-space: nowrap;
- overflow: hidden;
- }
-
- .wall-text {
- border-left: 1px solid #CCC;
- margin-left: 10px;
- padding-left: 10px;
- float: left;
- width: 75%;
- }
-
- .wall-file {
- margin-left: 8px;
- background: #EEE;
- }
-
- abbr {
- float: right;
- color: #AAA;
- border: none;
- }
- }
-}
diff --git a/app/controllers/projects/walls_controller.rb b/app/controllers/projects/walls_controller.rb
deleted file mode 100644
index 834215a1473..00000000000
--- a/app/controllers/projects/walls_controller.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-class Projects::WallsController < Projects::ApplicationController
- before_filter :module_enabled
-
- respond_to :js, :html
-
- def show
- @note = @project.notes.new
-
- respond_to do |format|
- format.html
- end
- end
-
- protected
-
- def module_enabled
- return render_404 unless @project.wall_enabled
- end
-end
-
diff --git a/app/helpers/events_helper.rb b/app/helpers/events_helper.rb
index 929f9a9c381..d3904e16c11 100644
--- a/app/helpers/events_helper.rb
+++ b/app/helpers/events_helper.rb
@@ -109,8 +109,6 @@ module EventsHelper
"#{event.note_target_type} ##{truncate event.note_target_iid}"
end
end
- elsif event.wall_note?
- link_to 'wall', project_wall_path(event.project)
else
content_tag :strong do
"(deleted)"
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index ef0460f8728..ba4c7068e90 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -139,7 +139,7 @@ module ProjectsHelper
nav_tabs << :settings
end
- [:issues, :wiki, :wall, :snippets].each do |feature|
+ [:issues, :wiki, :snippets].each do |feature|
nav_tabs << feature if project.send :"#{feature}_enabled"
end
diff --git a/app/helpers/search_helper.rb b/app/helpers/search_helper.rb
index a4471507da8..ecd8d3994d0 100644
--- a/app/helpers/search_helper.rb
+++ b/app/helpers/search_helper.rb
@@ -61,7 +61,6 @@ module SearchHelper
{ label: "#{prefix} - Milestones", url: project_milestones_path(@project) },
{ label: "#{prefix} - Snippets", url: project_snippets_path(@project) },
{ label: "#{prefix} - Team", url: project_team_index_path(@project) },
- { label: "#{prefix} - Wall", url: project_wall_path(@project) },
{ label: "#{prefix} - Wiki", url: project_wikis_path(@project) },
]
else
diff --git a/app/mailers/emails/notes.rb b/app/mailers/emails/notes.rb
index 7848d34ab2b..acc6d03b5e4 100644
--- a/app/mailers/emails/notes.rb
+++ b/app/mailers/emails/notes.rb
@@ -32,14 +32,5 @@ module Emails
cc: recipient(recipient_id),
subject: subject("#{@merge_request.title} (##{@merge_request.iid})"))
end
-
- def note_wall_email(recipient_id, note_id)
- @note = Note.find(note_id)
- @project = @note.project
- @target_url = project_wall_url(@note.project, anchor: "note_#{@note.id}")
- mail(from: sender(@note.author_id),
- cc: recipient(recipient_id),
- subject: subject("Note on wall"))
- end
end
end
diff --git a/app/models/event.rb b/app/models/event.rb
index cf88e9f4afc..b88635ccb59 100644
--- a/app/models/event.rb
+++ b/app/models/event.rb
@@ -286,10 +286,6 @@ class Event < ActiveRecord::Base
end.to_s
end
- def wall_note?
- target.noteable_type.blank?
- end
-
def note_target_type
if target.noteable_type.present?
target.noteable_type.titleize
diff --git a/app/models/note.rb b/app/models/note.rb
index dc8b968c3d2..659cd752071 100644
--- a/app/models/note.rb
+++ b/app/models/note.rb
@@ -251,10 +251,6 @@ class Note < ActiveRecord::Base
for_merge_request? && for_diff_line?
end
- def for_wall?
- noteable_type.blank?
- end
-
# override to return commits, which are not active record
def noteable
if for_commit?
@@ -295,8 +291,6 @@ class Note < ActiveRecord::Base
def noteable_type_name
if noteable_type.present?
noteable_type.downcase
- else
- "wall"
end
end
diff --git a/app/models/project.rb b/app/models/project.rb
index f92cc40642a..e251c777d89 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -31,7 +31,6 @@ class Project < ActiveRecord::Base
default_value_for :archived, false
default_value_for :issues_enabled, true
- default_value_for :wall_enabled, true
default_value_for :merge_requests_enabled, true
default_value_for :wiki_enabled, true
default_value_for :snippets_enabled, true
@@ -39,7 +38,7 @@ class Project < ActiveRecord::Base
ActsAsTaggableOn.strict_case_match = true
attr_accessible :name, :path, :description, :issues_tracker, :label_list,
- :issues_enabled, :wall_enabled, :merge_requests_enabled, :snippets_enabled, :issues_tracker_id,
+ :issues_enabled, :merge_requests_enabled, :snippets_enabled, :issues_tracker_id,
:wiki_enabled, :visibility_level, :import_url, :last_activity_at, as: [:default, :admin]
attr_accessible :namespace_id, :creator_id, as: :admin
@@ -98,7 +97,7 @@ class Project < ActiveRecord::Base
exclusion: { in: Gitlab::Blacklist.path },
format: { with: Gitlab::Regex.path_regex,
message: "only letters, digits & '_' '-' '.' allowed. Letter or digit should be first" }
- validates :issues_enabled, :wall_enabled, :merge_requests_enabled,
+ validates :issues_enabled, :merge_requests_enabled,
:wiki_enabled, inclusion: { in: [true, false] }
validates :issues_tracker_id, length: { maximum: 255 }, allow_blank: true
validates :namespace, presence: true
diff --git a/app/observers/note_observer.rb b/app/observers/note_observer.rb
index 9bb1f0f7b98..bb0b0876eca 100644
--- a/app/observers/note_observer.rb
+++ b/app/observers/note_observer.rb
@@ -3,12 +3,9 @@ class NoteObserver < BaseObserver
notification.new_note(note)
# Skip system notes, like status changes and cross-references.
- # Skip wall notes to prevent spamming of dashboard
- if note.noteable_type.present? && !note.system
+ unless note.system
event_service.leave_note(note, note.author)
- end
- unless note.system?
# Create a cross-reference note if this Note contains GFM that names an
# issue, merge request, or commit.
note.references.each do |mentioned|
diff --git a/app/services/notification_service.rb b/app/services/notification_service.rb
index 3547552df8e..650b6008db8 100644
--- a/app/services/notification_service.rb
+++ b/app/services/notification_service.rb
@@ -106,7 +106,6 @@ class NotificationService
# TODO: split on methods and refactor
#
def new_note(note)
- # ignore wall messages
return true unless note.noteable_type.present?
# ignore gitlab service messages
diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb
index 7d322f25e44..3d2b9bf4875 100644
--- a/app/services/projects/create_service.rb
+++ b/app/services/projects/create_service.rb
@@ -19,7 +19,6 @@ module Projects
default_opts = {
issues_enabled: default_features.issues,
wiki_enabled: default_features.wiki,
- wall_enabled: default_features.wall,
snippets_enabled: default_features.snippets,
merge_requests_enabled: default_features.merge_requests,
visibility_level: default_features.visibility_level
diff --git a/app/views/layouts/nav/_project.html.haml b/app/views/layouts/nav/_project.html.haml
index d7d330e2a61..dd48ff6ce38 100644
--- a/app/views/layouts/nav/_project.html.haml
+++ b/app/views/layouts/nav/_project.html.haml
@@ -36,10 +36,6 @@
= nav_link(controller: :wikis) do
= link_to 'Wiki', project_wiki_path(@project, :home)
- - if project_nav_tab? :wall
- = nav_link(controller: :walls) do
- = link_to 'Wall', project_wall_path(@project)
-
- if project_nav_tab? :snippets
= nav_link(controller: :snippets) do
= link_to 'Snippets', project_snippets_path(@project)
diff --git a/app/views/notify/note_wall_email.html.haml b/app/views/notify/note_wall_email.html.haml
deleted file mode 100644
index 2fa2f784661..00000000000
--- a/app/views/notify/note_wall_email.html.haml
+++ /dev/null
@@ -1 +0,0 @@
-= render 'note_message'
diff --git a/app/views/notify/note_wall_email.text.erb b/app/views/notify/note_wall_email.text.erb
deleted file mode 100644
index ee0dc3db1db..00000000000
--- a/app/views/notify/note_wall_email.text.erb
+++ /dev/null
@@ -1,9 +0,0 @@
-New message on the project wall <%= @note.project %>
-
-<%= url_for(project_wall_url(@note.project, anchor: "note_#{@note.id}")) %>
-
-
-<%= @note.author_name %>
-
-<%= @note.note %>
-
diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml
index 59dcf3a6ff0..adc7316820d 100644
--- a/app/views/projects/edit.html.haml
+++ b/app/views/projects/edit.html.haml
@@ -74,13 +74,6 @@
%span.descr Pages for project documentation
.form-group
- = f.label :wall_enabled, "Wall", class: 'control-label'
- .col-sm-10
- .checkbox
- = f.check_box :wall_enabled
- %span.descr Simple chat system for broadcasting inside project
-
- .form-group
= f.label :snippets_enabled, "Snippets", class: 'control-label'
.col-sm-10
.checkbox
diff --git a/app/views/projects/walls/show.html.haml b/app/views/projects/walls/show.html.haml
deleted file mode 100644
index 3e3c7c4f8dd..00000000000
--- a/app/views/projects/walls/show.html.haml
+++ /dev/null
@@ -1,23 +0,0 @@
-%div.wall-page
- %ul.notes
-
- - if can? current_user, :write_note, @project
- .note-form-holder
- = form_for [@project, @note], remote: true, html: { multipart: true, id: nil, class: "new_note wall-note-form" }, authenticity_token: true do |f|
- = note_target_fields
- .note_text_and_preview
- = f.text_area :note, size: 255, class: 'note_text js-note-text js-gfm-input turn-on'
- .note-form-actions
- .buttons
- = f.submit 'Add Comment', class: "btn comment-btn btn-grouped js-comment-button"
-
- .note-form-option
- %a.choose-btn.btn.btn-small.js-choose-note-attachment-button
- %i.icon-paper-clip
- %span Choose File ...
- &nbsp;
- %span.file_name.js-attachment-filename File name...
- = f.file_field :attachment, class: "js-note-attachment-input hidden"
-
- .hint.pull-right CTRL + Enter to send message
- .clearfix
diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example
index 6f33256a2b1..50a1a78b504 100644
--- a/config/gitlab.yml.example
+++ b/config/gitlab.yml.example
@@ -73,7 +73,6 @@ production: &base
issues: true
merge_requests: true
wiki: true
- wall: false
snippets: false
visibility_level: "private" # can be "private" | "internal" | "public"
diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb
index 18c628223a4..de7c0990c09 100644
--- a/config/initializers/1_settings.rb
+++ b/config/initializers/1_settings.rb
@@ -95,7 +95,6 @@ Settings.gitlab['default_projects_features'] ||= {}
Settings.gitlab.default_projects_features['issues'] = true if Settings.gitlab.default_projects_features['issues'].nil?
Settings.gitlab.default_projects_features['merge_requests'] = true if Settings.gitlab.default_projects_features['merge_requests'].nil?
Settings.gitlab.default_projects_features['wiki'] = true if Settings.gitlab.default_projects_features['wiki'].nil?
-Settings.gitlab.default_projects_features['wall'] = false if Settings.gitlab.default_projects_features['wall'].nil?
Settings.gitlab.default_projects_features['snippets'] = false if Settings.gitlab.default_projects_features['snippets'].nil?
Settings.gitlab.default_projects_features['visibility_level'] = Settings.send(:verify_constant, Gitlab::VisibilityLevel, Settings.gitlab.default_projects_features['visibility_level'], Gitlab::VisibilityLevel::PRIVATE)
Settings.gitlab['repository_downloads_path'] = File.absolute_path(Settings.gitlab['repository_downloads_path'] || 'tmp/repositories', Rails.root)
diff --git a/config/routes.rb b/config/routes.rb
index 34ee8d2d798..746e532a0ec 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -209,12 +209,6 @@ Gitlab::Application.routes.draw do
end
end
- resource :wall, only: [:show], constraints: {id: /\d+/} do
- member do
- get 'notes'
- end
- end
-
resource :repository, only: [:show] do
member do
get "stats"
diff --git a/doc/api/notes.md b/doc/api/notes.md
index 6d140643fcb..e7f19965a30 100644
--- a/doc/api/notes.md
+++ b/doc/api/notes.md
@@ -1,67 +1,6 @@
# Notes
-Notes can be wall notes or comments on snippets, issues or merge requests.
-
-## Wall
-
-### List project wall notes
-
-Get a list of project wall notes.
-
-```
-GET /projects/:id/notes
-```
-
-Parameters:
-
-+ `id` (required) - The ID of a project
-
-```json
-[
- {
- "id": 522,
- "body": "The solution is rather tricky",
- "attachment": null,
- "author": {
- "id": 1,
- "username": "john_smith",
- "email": "john@example.com",
- "name": "John Smith",
- "state": "active",
- "created_at": "2012-05-23T08:00:58Z"
- },
- "created_at": "2012-11-27T19:16:44Z"
- }
-]
-```
-
-### Get single wall note
-
-Returns a single wall note.
-
-```
-GET /projects/:id/notes/:note_id
-```
-
-Parameters:
-
-+ `id` (required) - The ID of a project
-+ `note_id` (required) - The ID of a wall note
-
-
-### Create new wall note
-
-Creates a new wall note.
-
-```
-POST /projects/:id/notes
-```
-
-Parameters:
-
-+ `id` (required) - The ID of a project
-+ `body` (required) - The content of a note
-
+Notes are comments on snippets, issues or merge requests.
## Issues
diff --git a/doc/api/projects.md b/doc/api/projects.md
index ae2b8365e80..d32af678fcc 100644
--- a/doc/api/projects.md
+++ b/doc/api/projects.md
@@ -30,7 +30,6 @@ GET /projects
"path_with_namespace": "diaspora/diaspora-client",
"issues_enabled": true,
"merge_requests_enabled": true,
- "wall_enabled": false,
"wiki_enabled": true,
"snippets_enabled": false,
"created_at": "2013-09-30T13: 46: 02Z",
@@ -66,7 +65,6 @@ GET /projects
"path_with_namespace": "brightbox/puppet",
"issues_enabled": true,
"merge_requests_enabled": true,
- "wall_enabled": false,
"wiki_enabled": true,
"snippets_enabled": false,
"created_at": "2013-09-30T13:46:02Z",
@@ -136,7 +134,6 @@ Parameters:
"path_with_namespace": "diaspora/diaspora-project-site",
"issues_enabled": true,
"merge_requests_enabled": true,
- "wall_enabled": false,
"wiki_enabled": true,
"snippets_enabled": false,
"created_at": "2013-09-30T13: 46: 02Z",
@@ -252,7 +249,6 @@ Parameters:
+ `namespace_id` (optional) - namespace for the new project (defaults to user)
+ `description` (optional) - short project description
+ `issues_enabled` (optional)
-+ `wall_enabled` (optional)
+ `merge_requests_enabled` (optional)
+ `wiki_enabled` (optional)
+ `snippets_enabled` (optional)
@@ -276,7 +272,6 @@ Parameters:
+ `description` (optional) - short project description
+ `default_branch` (optional) - 'master' by default
+ `issues_enabled` (optional)
-+ `wall_enabled` (optional)
+ `merge_requests_enabled` (optional)
+ `wiki_enabled` (optional)
+ `snippets_enabled` (optional)
diff --git a/doc/markdown/markdown.md b/doc/markdown/markdown.md
index 0d0a08d50d6..64f571b4351 100644
--- a/doc/markdown/markdown.md
+++ b/doc/markdown/markdown.md
@@ -48,7 +48,6 @@ You can use GFM in
- commit messages
- comments
-- wall posts
- issues
- merge requests
- milestones
diff --git a/doc/permissions/permissions.md b/doc/permissions/permissions.md
index 9ddf56d046e..e01b02212b6 100644
--- a/doc/permissions/permissions.md
+++ b/doc/permissions/permissions.md
@@ -13,7 +13,6 @@ If a user is a GitLab administrator they receive all permissions.
|---------------------------------------|---------|------------|-------------|----------|--------|
| Create new issue | ✓ | ✓ | ✓ | ✓ | ✓ |
| Leave comments | ✓ | ✓ | ✓ | ✓ | ✓ |
-| Write on project wall | ✓ | ✓ | ✓ | ✓ | ✓ |
| Pull project code | | ✓ | ✓ | ✓ | ✓ |
| Download project | | ✓ | ✓ | ✓ | ✓ |
| Create code snippets | | ✓ | ✓ | ✓ | ✓ |
diff --git a/doc/workflow/project_features.md b/doc/workflow/project_features.md
index 6ed9c1127a2..48e86ee3ef5 100644
--- a/doc/workflow/project_features.md
+++ b/doc/workflow/project_features.md
@@ -26,12 +26,6 @@ This is a separate system for documentation, built right into GitLab.
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.
-## Wall
-
-For simple, project specific conversations, the wall can be used.
-
-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.
-
## Snippets
Snippets are little bits of code or text.
diff --git a/features/project/active_tab.feature b/features/project/active_tab.feature
index 48c217fbea7..ce90a086688 100644
--- a/features/project/active_tab.feature
+++ b/features/project/active_tab.feature
@@ -35,11 +35,6 @@ Feature: Project active tab
Then the active main tab should be Merge Requests
And no other main tabs should be active
- Scenario: On Project Wall
- Given I visit my project's wall page
- Then the active main tab should be Wall
- And no other main tabs should be active
-
Scenario: On Project Wiki
Given I visit my project's wiki page
Then the active main tab should be Wiki
diff --git a/features/project/wall.feature b/features/project/wall.feature
deleted file mode 100644
index c38d046a850..00000000000
--- a/features/project/wall.feature
+++ /dev/null
@@ -1,16 +0,0 @@
-Feature: Project Wall
- In order to use Project Wall
- A user should be able to read and write messages
-
- Background:
- Given I sign in as a user
- And I own project "Shop"
- And I visit project "Shop" wall page
-
- @javascript
- Scenario: Write comment
- Given I write new comment "my special test message"
- Then I should see project wall note "my special test message"
-
- Then I visit project "Shop" wall page
- And I should see project wall note "my special test message"
diff --git a/features/steps/project/wall.rb b/features/steps/project/wall.rb
deleted file mode 100644
index 7c61580eb2c..00000000000
--- a/features/steps/project/wall.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-class ProjectWall < Spinach::FeatureSteps
- include SharedAuthentication
- include SharedProject
- include SharedNote
- include SharedPaths
-
-
- Given 'I write new comment "my special test message"' do
- within(".wall-note-form") do
- fill_in "note[note]", with: "my special test message"
- click_button "Add Comment"
- end
- end
-
- Then 'I should see project wall note "my special test message"' do
- page.should have_content "my special test message"
- end
-end
diff --git a/features/steps/shared/paths.rb b/features/steps/shared/paths.rb
index 449f2f9c5ef..2090b642059 100644
--- a/features/steps/shared/paths.rb
+++ b/features/steps/shared/paths.rb
@@ -204,10 +204,6 @@ module SharedPaths
visit project_merge_requests_path(@project)
end
- step "I visit my project's wall page" do
- visit project_wall_path(@project)
- end
-
step "I visit my project's wiki page" do
visit project_wiki_path(@project, :home)
end
@@ -319,10 +315,6 @@ module SharedPaths
visit project_team_index_path(project)
end
- step 'I visit project "Shop" wall page' do
- visit project_wall_path(project)
- end
-
step 'I visit project wiki page' do
visit project_wiki_path(@project, :home)
end
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index 6bad6c74bca..f15fe185ae0 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -48,7 +48,7 @@ module API
expose :owner, using: Entities::UserBasic, unless: ->(project, options) { project.group }
expose :name, :name_with_namespace
expose :path, :path_with_namespace
- expose :issues_enabled, :merge_requests_enabled, :wall_enabled, :wiki_enabled, :snippets_enabled, :created_at, :last_activity_at
+ expose :issues_enabled, :merge_requests_enabled, :wiki_enabled, :snippets_enabled, :created_at, :last_activity_at
expose :namespace
expose :forked_from_project, using: Entities::ForkedFromProject, :if => lambda{ | project, options | project.forked? }
end
diff --git a/lib/api/notes.rb b/lib/api/notes.rb
index cb2bc764476..413faf0cf2d 100644
--- a/lib/api/notes.rb
+++ b/lib/api/notes.rb
@@ -6,55 +6,6 @@ module API
NOTEABLE_TYPES = [Issue, MergeRequest, Snippet]
resource :projects do
- # Get a list of project wall notes
- #
- # Parameters:
- # id (required) - The ID of a project
- # Example Request:
- # GET /projects/:id/notes
- get ":id/notes" do
- @notes = user_project.notes.common
-
- # Get recent notes if recent = true
- @notes = @notes.order('id DESC') if params[:recent]
-
- present paginate(@notes), with: Entities::Note
- end
-
- # Get a single project wall note
- #
- # Parameters:
- # id (required) - The ID of a project
- # note_id (required) - The ID of a note
- # Example Request:
- # GET /projects/:id/notes/:note_id
- get ":id/notes/:note_id" do
- @note = user_project.notes.common.find(params[:note_id])
- present @note, with: Entities::Note
- end
-
- # Create a new project wall note
- #
- # Parameters:
- # id (required) - The ID of a project
- # body (required) - The content of a note
- # Example Request:
- # POST /projects/:id/notes
- post ":id/notes" do
- required_attributes! [:body]
-
- @note = user_project.notes.new(note: params[:body])
- @note.author = current_user
-
- if @note.save
- present @note, with: Entities::Note
- else
- # :note is exposed as :body, but :note is set on error
- bad_request!(:note) if @note.errors[:note].any?
- not_found!
- end
- end
-
NOTEABLE_TYPES.each do |noteable_type|
noteables_str = noteable_type.to_s.underscore.pluralize
noteable_id_str = "#{noteable_type.to_s.underscore}_id"
diff --git a/lib/api/projects.rb b/lib/api/projects.rb
index 9d290c75ba9..9a7f22b536f 100644
--- a/lib/api/projects.rb
+++ b/lib/api/projects.rb
@@ -71,7 +71,6 @@ module API
# name (required) - name for new project
# description (optional) - short project description
# issues_enabled (optional)
- # wall_enabled (optional)
# merge_requests_enabled (optional)
# wiki_enabled (optional)
# snippets_enabled (optional)
@@ -86,7 +85,6 @@ module API
:path,
:description,
:issues_enabled,
- :wall_enabled,
:merge_requests_enabled,
:wiki_enabled,
:snippets_enabled,
@@ -114,7 +112,6 @@ module API
# description (optional) - short project description
# default_branch (optional) - 'master' by default
# issues_enabled (optional)
- # wall_enabled (optional)
# merge_requests_enabled (optional)
# wiki_enabled (optional)
# snippets_enabled (optional)
@@ -129,7 +126,6 @@ module API
:description,
:default_branch,
:issues_enabled,
- :wall_enabled,
:merge_requests_enabled,
:wiki_enabled,
:snippets_enabled,
diff --git a/spec/features/security/project/internal_access_spec.rb b/spec/features/security/project/internal_access_spec.rb
index eb8422df599..f86b3db32eb 100644
--- a/spec/features/security/project/internal_access_spec.rb
+++ b/spec/features/security/project/internal_access_spec.rb
@@ -87,17 +87,6 @@ describe "Internal Project Access", feature: true do
it { should be_denied_for :visitor }
end
- describe "GET /:project_path/wall" do
- subject { project_wall_path(project) }
-
- it { should be_allowed_for master }
- it { should be_allowed_for reporter }
- it { should be_allowed_for :admin }
- it { should be_allowed_for guest }
- it { should be_allowed_for :user }
- it { should be_denied_for :visitor }
- end
-
describe "GET /:project_path/blob" do
before do
commit = project.repository.commit
diff --git a/spec/features/security/project/private_access_spec.rb b/spec/features/security/project/private_access_spec.rb
index 186ad350469..a27361f4d15 100644
--- a/spec/features/security/project/private_access_spec.rb
+++ b/spec/features/security/project/private_access_spec.rb
@@ -87,17 +87,6 @@ describe "Private Project Access", feature: true do
it { should be_denied_for :visitor }
end
- describe "GET /:project_path/wall" do
- subject { project_wall_path(project) }
-
- it { should be_allowed_for master }
- it { should be_allowed_for reporter }
- it { should be_allowed_for :admin }
- it { should be_denied_for guest }
- it { should be_denied_for :user }
- it { should be_denied_for :visitor }
- end
-
describe "GET /:project_path/blob" do
before do
commit = project.repository.commit
diff --git a/spec/features/security/project/public_access_spec.rb b/spec/features/security/project/public_access_spec.rb
index f5d1cf7b971..f114965bd4a 100644
--- a/spec/features/security/project/public_access_spec.rb
+++ b/spec/features/security/project/public_access_spec.rb
@@ -92,17 +92,6 @@ describe "Public Project Access", feature: true do
it { should be_denied_for :visitor }
end
- describe "GET /:project_path/wall" do
- subject { project_wall_path(project) }
-
- it { should be_allowed_for master }
- it { should be_allowed_for reporter }
- it { should be_allowed_for :admin }
- it { should be_allowed_for guest }
- it { should be_allowed_for :user }
- it { should be_allowed_for :visitor }
- end
-
describe "GET /:project_path/blob" do
before do
commit = project.repository.commit
diff --git a/spec/mailers/notify_spec.rb b/spec/mailers/notify_spec.rb
index 32ba6c9b863..453bf2b3e94 100644
--- a/spec/mailers/notify_spec.rb
+++ b/spec/mailers/notify_spec.rb
@@ -410,22 +410,6 @@ describe Notify do
end
end
- describe 'on a project wall' do
- let(:note_on_the_wall_path) { project_wall_path(project, anchor: "note_#{note.id}") }
-
- subject { Notify.note_wall_email(recipient.id, note.id) }
-
- it_behaves_like 'a note email'
-
- it 'has the correct subject' do
- should have_subject /#{project.name}/
- end
-
- it 'contains a link to the wall note' do
- should have_body_text /#{note_on_the_wall_path}/
- end
- end
-
describe 'on a commit' do
let(:commit) { project.repository.commit }
diff --git a/spec/requests/api/notes_spec.rb b/spec/requests/api/notes_spec.rb
index 81576f7c235..11796183474 100644
--- a/spec/requests/api/notes_spec.rb
+++ b/spec/requests/api/notes_spec.rb
@@ -13,58 +13,8 @@ describe API::API, api: true do
let!(:issue_note) { create(:note, noteable: issue, project: project, author: user) }
let!(:merge_request_note) { create(:note, noteable: merge_request, project: project, author: user) }
let!(:snippet_note) { create(:note, noteable: snippet, project: project, author: user) }
- let!(:wall_note) { create(:note, project: project, author: user) }
before { project.team << [user, :reporter] }
- describe "GET /projects/:id/notes" do
- context "when unauthenticated" do
- it "should return authentication error" do
- get api("/projects/#{project.id}/notes")
- response.status.should == 401
- end
- end
-
- context "when authenticated" do
- it "should return project wall notes" do
- get api("/projects/#{project.id}/notes", user)
- response.status.should == 200
- json_response.should be_an Array
- json_response.first['body'].should == wall_note.note
- end
- end
- end
-
- describe "GET /projects/:id/notes/:note_id" do
- it "should return a wall note by id" do
- get api("/projects/#{project.id}/notes/#{wall_note.id}", user)
- response.status.should == 200
- json_response['body'].should == wall_note.note
- end
-
- it "should return a 404 error if note not found" do
- get api("/projects/#{project.id}/notes/123", user)
- response.status.should == 404
- end
- end
-
- describe "POST /projects/:id/notes" do
- it "should create a new wall note" do
- post api("/projects/#{project.id}/notes", user), body: 'hi!'
- response.status.should == 201
- json_response['body'].should == 'hi!'
- end
-
- it "should return 401 unauthorized error" do
- post api("/projects/#{project.id}/notes")
- response.status.should == 401
- end
-
- it "should return a 400 bad request if body is missing" do
- post api("/projects/#{project.id}/notes", user)
- response.status.should == 400
- end
- end
-
describe "GET /projects/:id/noteable/:noteable_id/notes" do
context "when noteable is an Issue" do
it "should return an array of issue notes" do
diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb
index 81e6abbb0d7..43915d8684b 100644
--- a/spec/requests/api/projects_spec.rb
+++ b/spec/requests/api/projects_spec.rb
@@ -126,7 +126,6 @@ describe API::API, api: true do
project = attributes_for(:project, {
description: Faker::Lorem.sentence,
issues_enabled: false,
- wall_enabled: false,
merge_requests_enabled: false,
wiki_enabled: false
})
@@ -208,7 +207,6 @@ describe API::API, api: true do
project = attributes_for(:project, {
description: Faker::Lorem.sentence,
issues_enabled: false,
- wall_enabled: false,
merge_requests_enabled: false,
wiki_enabled: false
})
diff --git a/spec/routing/project_routing_spec.rb b/spec/routing/project_routing_spec.rb
index fa9762625d7..4b2eb42c709 100644
--- a/spec/routing/project_routing_spec.rb
+++ b/spec/routing/project_routing_spec.rb
@@ -56,7 +56,6 @@ end
# projects POST /projects(.:format) projects#create
# new_project GET /projects/new(.:format) projects#new
# fork_project POST /:id/fork(.:format) projects#fork
-# wall_project GET /:id/wall(.:format) projects#wall
# files_project GET /:id/files(.:format) projects#files
# edit_project GET /:id/edit(.:format) projects#edit
# project GET /:id(.:format) projects#show
@@ -75,10 +74,6 @@ describe ProjectsController, "routing" do
post("/gitlab/gitlabhq/fork").should route_to('projects#fork', id: 'gitlab/gitlabhq')
end
- it "to #wall" do
- get("/gitlab/gitlabhq/wall").should route_to('projects/walls#show', project_id: 'gitlab/gitlabhq')
- end
-
it "to #edit" do
get("/gitlab/gitlabhq/edit").should route_to('projects#edit', id: 'gitlab/gitlabhq')
end
diff --git a/spec/services/projects/create_service_spec.rb b/spec/services/projects/create_service_spec.rb
index 38aae452c3c..0eac6bed74b 100644
--- a/spec/services/projects/create_service_spec.rb
+++ b/spec/services/projects/create_service_spec.rb
@@ -65,7 +65,6 @@ describe Projects::CreateService do
@settings.stub(:issues) { true }
@settings.stub(:merge_requests) { true }
@settings.stub(:wiki) { true }
- @settings.stub(:wall) { true }
@settings.stub(:snippets) { true }
stub_const("Settings", Class.new)
@restrictions = double("restrictions")
@@ -108,7 +107,6 @@ describe Projects::CreateService do
@settings.stub(:issues) { true }
@settings.stub(:merge_requests) { true }
@settings.stub(:wiki) { true }
- @settings.stub(:wall) { true }
@settings.stub(:snippets) { true }
@settings.stub(:visibility_level) { Gitlab::VisibilityLevel::PRIVATE }
stub_const("Settings", Class.new)