diff options
author | Douwe Maan <douwe@gitlab.com> | 2017-10-18 10:54:52 +0000 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2017-10-18 10:54:52 +0000 |
commit | cddc504740eea1e017c1ce23b84c6b19044020f4 (patch) | |
tree | 2d6db7826d63a5d8f58bb91dc4854b54c3bbbe5d | |
parent | 220a5c375972462a3c583a106c5ca4c8a2138267 (diff) | |
parent | 3b462b457756f36142d2450eaac7cf9f3e2061ae (diff) | |
download | gitlab-ce-cddc504740eea1e017c1ce23b84c6b19044020f4.tar.gz |
Merge branch '30140-restore-readme-only-preference' into 'master'
Add readme only option as project view
Closes #30140
See merge request gitlab-org/gitlab-ce!14900
-rw-r--r-- | app/helpers/preferences_helper.rb | 3 | ||||
-rw-r--r-- | app/models/user.rb | 9 | ||||
-rw-r--r-- | app/views/projects/_readme.html.haml | 23 | ||||
-rw-r--r-- | changelogs/unreleased/30140-restore-readme-only-preference.yml | 5 | ||||
-rw-r--r-- | spec/controllers/projects_controller_spec.rb | 8 | ||||
-rw-r--r-- | spec/migrations/migrate_user_project_view_spec.rb | 7 |
6 files changed, 41 insertions, 14 deletions
diff --git a/app/helpers/preferences_helper.rb b/app/helpers/preferences_helper.rb index 0d7347ed30d..8e822ed0ea2 100644 --- a/app/helpers/preferences_helper.rb +++ b/app/helpers/preferences_helper.rb @@ -36,7 +36,8 @@ module PreferencesHelper def project_view_choices [ ['Files and Readme (default)', :files], - ['Activity', :activity] + ['Activity', :activity], + ['Readme', :readme] ] end diff --git a/app/models/user.rb b/app/models/user.rb index 533a776bc65..9459b6d4fa4 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -182,13 +182,8 @@ class User < ActiveRecord::Base enum dashboard: [:projects, :stars, :project_activity, :starred_project_activity, :groups, :todos] # User's Project preference - # - # Note: When adding an option, it MUST go on the end of the hash with a - # number higher than the current max. We cannot move options and/or change - # their numbers. - # - # We skip 0 because this was used by an option that has since been removed. - enum project_view: { activity: 1, files: 2 } + # Note: When adding an option, it MUST go on the end of the array. + enum project_view: [:readme, :activity, :files] alias_attribute :private_token, :authentication_token diff --git a/app/views/projects/_readme.html.haml b/app/views/projects/_readme.html.haml new file mode 100644 index 00000000000..44aa9eb3826 --- /dev/null +++ b/app/views/projects/_readme.html.haml @@ -0,0 +1,23 @@ +- if (readme = @repository.readme) && readme.rich_viewer + %article.file-holder.readme-holder{ id: 'readme', class: ("limited-width-container" unless fluid_layout) } + .js-file-title.file-title + = blob_icon readme.mode, readme.name + = link_to project_blob_path(@project, tree_join(@ref, readme.path)) do + %strong + = readme.name + = render 'projects/blob/viewer', viewer: readme.rich_viewer, viewer_url: namespace_project_blob_path(@project.namespace, @project, tree_join(@ref, readme.path), viewer: :rich, format: :json) + +- else + .row-content-block.second-block.center + %h3.page-title + This project does not have a README yet + - if can?(current_user, :push_code, @project) + %p + A + %code README + file contains information about other files in a repository and is commonly + distributed with computer software, forming part of its documentation. + %p + We recommend you to + = link_to "add a README", add_special_file_path(@project, file_name: 'README.md'), class: 'underlined-link' + file to the repository and GitLab will render it here instead of this message. diff --git a/changelogs/unreleased/30140-restore-readme-only-preference.yml b/changelogs/unreleased/30140-restore-readme-only-preference.yml new file mode 100644 index 00000000000..4b4ee4d5be9 --- /dev/null +++ b/changelogs/unreleased/30140-restore-readme-only-preference.yml @@ -0,0 +1,5 @@ +--- +title: Add readme only option as project view +merge_request: 14900 +author: +type: changed diff --git a/spec/controllers/projects_controller_spec.rb b/spec/controllers/projects_controller_spec.rb index 0544afe31ed..7569052c3aa 100644 --- a/spec/controllers/projects_controller_spec.rb +++ b/spec/controllers/projects_controller_spec.rb @@ -222,6 +222,14 @@ describe ProjectsController do get :show, namespace_id: public_project.namespace, id: public_project expect(response).to render_template('_files') end + + it "renders the readme view" do + allow(controller).to receive(:current_user).and_return(user) + allow(user).to receive(:project_view).and_return('readme') + + get :show, namespace_id: public_project.namespace, id: public_project + expect(response).to render_template('_readme') + end end context "when the url contains .atom" do diff --git a/spec/migrations/migrate_user_project_view_spec.rb b/spec/migrations/migrate_user_project_view_spec.rb index afaa5d836a7..5e16769d63a 100644 --- a/spec/migrations/migrate_user_project_view_spec.rb +++ b/spec/migrations/migrate_user_project_view_spec.rb @@ -5,12 +5,7 @@ require Rails.root.join('db', 'post_migrate', '20170406142253_migrate_user_proje describe MigrateUserProjectView, :truncate do let(:migration) { described_class.new } - let!(:user) { create(:user) } - - before do - # 0 is the numeric value for the old 'readme' option - user.update_column(:project_view, 0) - end + let!(:user) { create(:user, project_view: 'readme') } describe '#up' do it 'updates project view setting with new value' do |