93 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| module ReleasesHelper
 | |
|   IMAGE_PATH = 'illustrations/releases.svg'
 | |
|   DOCUMENTATION_PATH = 'user/project/releases/index'
 | |
| 
 | |
|   # This needs to be kept in sync with the constant in
 | |
|   # app/assets/javascripts/releases/constants.js
 | |
|   DEFAULT_SORT = 'RELEASED_AT_DESC'
 | |
| 
 | |
|   def illustration
 | |
|     image_path(IMAGE_PATH)
 | |
|   end
 | |
| 
 | |
|   def releases_help_page_path(anchor: nil)
 | |
|     help_page_path(DOCUMENTATION_PATH, anchor: anchor)
 | |
|   end
 | |
| 
 | |
|   def data_for_releases_page
 | |
|     {
 | |
|       project_id: @project.id,
 | |
|       project_path: @project.full_path,
 | |
|       illustration_path: illustration,
 | |
|       documentation_path: releases_help_page_path
 | |
|     }.tap do |data|
 | |
|       if can?(current_user, :create_release, @project)
 | |
|         data[:new_release_path] = new_project_release_path(@project)
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   # For simplicity, only optimize non-paginated requests
 | |
|   def use_startup_query_for_index_page?
 | |
|     params[:before].nil? && params[:after].nil?
 | |
|   end
 | |
| 
 | |
|   def index_page_startup_query_variables
 | |
|     {
 | |
|       fullPath: @project.full_path,
 | |
|       sort: DEFAULT_SORT,
 | |
|       first: 1
 | |
|     }
 | |
|   end
 | |
| 
 | |
|   def data_for_show_page
 | |
|     {
 | |
|       project_id: @project.id,
 | |
|       project_path: @project.full_path,
 | |
|       tag_name: @release.tag
 | |
|     }
 | |
|   end
 | |
| 
 | |
|   def data_for_edit_release_page
 | |
|     new_edit_pages_shared_data.merge(
 | |
|       tag_name: @release.tag,
 | |
|       releases_page_path: project_releases_path(@project, anchor: @release.tag),
 | |
|       delete_release_docs_path: releases_help_page_path(anchor: 'delete-a-release')
 | |
|     )
 | |
|   end
 | |
| 
 | |
|   def data_for_new_release_page
 | |
|     new_edit_pages_shared_data.merge(
 | |
|       tag_name: params[:tag_name],
 | |
|       default_branch: @project.default_branch,
 | |
|       releases_page_path: project_releases_path(@project)
 | |
|     )
 | |
|   end
 | |
| 
 | |
|   def group_milestone_project_releases_available?(project)
 | |
|     false
 | |
|   end
 | |
| 
 | |
|   private
 | |
| 
 | |
|   def new_edit_pages_shared_data
 | |
|     {
 | |
|       project_id: @project.id,
 | |
|       group_id: @project.group&.id,
 | |
|       group_milestones_available: group_milestone_project_releases_available?(@project),
 | |
|       project_path: @project.full_path,
 | |
|       markdown_preview_path: preview_markdown_path(@project),
 | |
|       markdown_docs_path: help_page_path('user/markdown'),
 | |
|       release_assets_docs_path: releases_help_page_path(anchor: 'release-assets'),
 | |
|       manage_milestones_path: project_milestones_path(@project),
 | |
|       new_milestone_path: new_project_milestone_path(@project, redirect_path: 'new_release'),
 | |
|       edit_release_docs_path: releases_help_page_path(anchor: 'edit-a-release'),
 | |
|       upcoming_release_docs_path: releases_help_page_path(anchor: 'upcoming-releases')
 | |
|     }
 | |
|   end
 | |
| end
 | |
| 
 | |
| ReleasesHelper.prepend_mod_with('ReleasesHelper')
 |