From a42d7980af0ccad036a68cb5497049464be0b2dc Mon Sep 17 00:00:00 2001 From: Annabel Dunstone Gray Date: Mon, 16 Oct 2017 13:21:51 -0700 Subject: Add readme only option as project view --- app/helpers/preferences_helper.rb | 3 ++- app/models/user.rb | 10 +++------- app/views/projects/_readme.html.haml | 18 ++++++++++++++++++ .../30140-restore-readme-only-preference.yml | 5 +++++ spec/controllers/projects_controller_spec.rb | 8 ++++++++ spec/migrations/migrate_user_project_view_spec.rb | 7 +------ 6 files changed, 37 insertions(+), 14 deletions(-) create mode 100644 app/views/projects/_readme.html.haml create mode 100644 changelogs/unreleased/30140-restore-readme-only-preference.yml 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..525a4fc3778 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -182,13 +182,9 @@ 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..6922442a834 --- /dev/null +++ b/app/views/projects/_readme.html.haml @@ -0,0 +1,18 @@ +- if readme = @repository.readme + %article.file-holder.readme-holder{ id: 'readme', class: ("limited-width-container" unless fluid_layout) } + = render 'projects/blob/viewer', viewer: readme.rich_viewer, viewer_url: namespace_project_blob_path(@project.namespace, @project, tree_join(@repository.root_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 -- cgit v1.2.3 From 2c6cd2e575b04440df24ba79ef70d6463a248fa9 Mon Sep 17 00:00:00 2001 From: Annabel Dunstone Gray Date: Mon, 16 Oct 2017 18:27:07 -0700 Subject: Fix spec --- app/models/user.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 525a4fc3778..9459b6d4fa4 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -185,7 +185,6 @@ class User < ActiveRecord::Base # 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 delegate :path, to: :namespace, allow_nil: true, prefix: true -- cgit v1.2.3 From 9c7fba3dc8ff4a3b84d1e3a018aed1d3470d405d Mon Sep 17 00:00:00 2001 From: Annabel Dunstone Gray Date: Tue, 17 Oct 2017 10:05:02 -0700 Subject: Add readme title and check for rich_viewer --- app/views/projects/_readme.html.haml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/views/projects/_readme.html.haml b/app/views/projects/_readme.html.haml index 6922442a834..5a27c6300a0 100644 --- a/app/views/projects/_readme.html.haml +++ b/app/views/projects/_readme.html.haml @@ -1,5 +1,10 @@ -- if readme = @repository.readme +- 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(@repository.root_ref, readme.path), viewer: :rich, format: :json) - else -- cgit v1.2.3 From 3b462b457756f36142d2450eaac7cf9f3e2061ae Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Wed, 18 Oct 2017 10:17:08 +0000 Subject: Small code style changes --- app/views/projects/_readme.html.haml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/projects/_readme.html.haml b/app/views/projects/_readme.html.haml index 5a27c6300a0..44aa9eb3826 100644 --- a/app/views/projects/_readme.html.haml +++ b/app/views/projects/_readme.html.haml @@ -1,11 +1,11 @@ -- if (readme = @repository.readme) && (readme.rich_viewer) +- 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(@repository.root_ref, readme.path), viewer: :rich, format: :json) + = 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 -- cgit v1.2.3