Skip to content
Snippets Groups Projects
Commit 00fc9f26 authored by Douwe Maan's avatar Douwe Maan
Browse files

Load tree readme asynchronously

parent ecc6cc8b
No related branches found
No related tags found
2 merge requests!12073Add RC2 changes to 9-3-stable,!11191Load tree readme asynchronously
Pipeline #
Showing
with 42 additions and 16 deletions
Loading
Loading
@@ -8,7 +8,10 @@ export default class BlobViewer {
this.richViewer = document.querySelector('.blob-viewer[data-type="rich"]');
this.$fileHolder = $('.file-holder');
 
let initialViewerName = document.querySelector('.blob-viewer:not(.hidden)').getAttribute('data-type');
const initialViewer = document.querySelector('.blob-viewer:not(.hidden)');
if (!initialViewer) return;
let initialViewerName = initialViewer.getAttribute('data-type');
 
this.initBindings();
 
Loading
Loading
Loading
Loading
@@ -246,6 +246,7 @@ const ShortcutsBlob = require('./shortcuts_blob');
new NotificationsForm();
if ($('#tree-slider').length) {
new TreeView();
new BlobViewer();
}
break;
case 'projects:pipelines:builds':
Loading
Loading
@@ -300,6 +301,7 @@ const ShortcutsBlob = require('./shortcuts_blob');
case 'projects:tree:show':
shortcut_handler = new ShortcutsNavigation();
new TreeView();
new BlobViewer();
gl.TargetBranchDropDown.bootstrap();
break;
case 'projects:find_file:show':
Loading
Loading
class ReadmeBlob < SimpleDelegator
attr_reader :repository
def initialize(blob, repository)
@repository = repository
super(blob)
end
def rendered_markup
repository.rendered_readme
end
end
Loading
Loading
@@ -518,7 +518,7 @@ class Repository
 
def readme
if head = tree(:head)
head.readme
ReadmeBlob.new(head.readme, self)
end
end
 
Loading
Loading
Loading
Loading
@@ -40,10 +40,7 @@ class Tree
 
readme_path = path == '/' ? readme_tree.name : File.join(path, readme_tree.name)
 
git_repo = repository.raw_repository
@readme = Gitlab::Git::Blob.find(git_repo, sha, readme_path)
@readme.load_all_data!(git_repo)
@readme
@readme = repository.blob_at(sha, readme_path)
end
 
def trees
Loading
Loading
Loading
Loading
@@ -2,9 +2,9 @@
%article.readme-holder
.pull-right
- if can?(current_user, :push_code, @project)
= link_to icon('pencil'), namespace_project_edit_blob_path(@project.namespace, @project, tree_join(@repository.root_ref, readme.name)), class: 'light edit-project-readme'
.file-content.wiki
= markup(readme.name, readme.data, rendered: @repository.rendered_readme)
= link_to icon('pencil'), namespace_project_edit_blob_path(@project.namespace, @project, tree_join(@repository.root_ref, readme.path)), class: 'light edit-project-readme'
= 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
Loading
Loading
Loading
Loading
@@ -2,8 +2,8 @@
- render_error = viewer.render_error
- load_asynchronously = local_assigns.fetch(:load_asynchronously, viewer.server_side?) && render_error.nil?
 
- url = url_for(params.merge(viewer: viewer.type, format: :json)) if load_asynchronously
.blob-viewer{ data: { type: viewer.type, url: url }, class: ('hidden' if hidden) }
- viewer_url = local_assigns.fetch(:viewer_url) { url_for(params.merge(viewer: viewer.type, format: :json)) } if load_asynchronously
.blob-viewer{ data: { type: viewer.type, url: viewer_url }, class: ('hidden' if hidden) }
- if load_asynchronously
.text-center.prepend-top-default.append-bottom-default
= icon('spinner spin 2x', 'aria-hidden' => 'true', 'aria-label' => 'Loading content')
Loading
Loading
%article.file-holder.readme-holder
.js-file-title.file-title
= blob_icon readme.mode, readme.name
= link_to namespace_project_blob_path(@project.namespace, @project, tree_join(@ref, @path, readme.name)) do
= link_to namespace_project_blob_path(@project.namespace, @project, tree_join(@ref, readme.path)) do
%strong
= readme.name
.file-content.wiki
= markup(readme.name, readme.data)
= 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)
---
title: Load tree readme asynchronously
merge_request:
author:
Loading
Loading
@@ -18,6 +18,7 @@ Feature: Project
Then I should see the default project avatar
And I should not see the "Remove avatar" button
 
@javascript
Scenario: I should have readme on page
And I visit project "Shop" page
Then I should see project "Shop" README
Loading
Loading
Loading
Loading
@@ -19,12 +19,14 @@ Feature: Project Source Markdown Render
And I click on Gitlab API in README
Then I should see correct document rendered
 
@javascript
Scenario: I view README in markdown branch
Then I should see files from repository in markdown
And I should see rendered README which contains correct links
And I click on Rake tasks in README
Then I should see correct directory rendered
 
@javascript
Scenario: I view README in markdown branch to see reference links to directory
Then I should see files from repository in markdown
And I should see rendered README which contains correct links
Loading
Loading
@@ -74,6 +76,7 @@ Feature: Project Source Markdown Render
And I click on Gitlab API in README
Then I should see correct document rendered for markdown branch
 
@javascript
Scenario: I browse directory from markdown branch
When I visit markdown branch
Then I should see files from repository in markdown branch
Loading
Loading
Loading
Loading
@@ -2,6 +2,7 @@ class Spinach::Features::Project < Spinach::FeatureSteps
include SharedAuthentication
include SharedProject
include SharedPaths
include WaitForAjax
 
step 'change project settings' do
fill_in 'project_name_edit', with: 'NewName'
Loading
Loading
@@ -86,6 +87,7 @@ class Spinach::Features::Project < Spinach::FeatureSteps
end
 
step 'I should see project "Shop" README' do
wait_for_ajax
page.within('.readme-holder') do
expect(page).to have_content 'testme'
end
Loading
Loading
Loading
Loading
@@ -120,6 +120,7 @@ class Spinach::Features::ProjectSourceMarkdownRender < Spinach::FeatureSteps
 
When 'I visit markdown branch' do
visit namespace_project_tree_path(@project.namespace, @project, "markdown")
wait_for_ajax
end
 
When 'I visit markdown branch "README.md" blob' do
Loading
Loading
Loading
Loading
@@ -1634,7 +1634,7 @@ describe Repository, models: true do
 
context 'with an existing repository' do
it 'returns the README' do
expect(repository.readme).to be_an_instance_of(Gitlab::Git::Blob)
expect(repository.readme).to be_an_instance_of(ReadmeBlob)
end
end
end
Loading
Loading
Loading
Loading
@@ -31,7 +31,7 @@ describe 'projects/tree/show' do
it 'displays correctly' do
render
expect(rendered).to have_css('.js-project-refs-dropdown .dropdown-toggle-text', text: ref)
expect(rendered).to have_css('.readme-holder .file-content', text: ref)
expect(rendered).to have_css('.readme-holder')
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment