Class: Explore::ProjectsController

Inherits:
ApplicationController
  • Object
show all
Includes:
PageLimiter, ParamsBackwardCompatibility, RendersMemberAccess, RendersProjectsList, SortingHelper, SortingPreference
Defined in:
app/controllers/explore/projects_controller.rb

Constant Summary collapse

MIN_SEARCH_LENGTH =
3
PAGE_LIMIT =
50
RSS_ENTRIES_LIMIT =
20

Constants included from CookiesHelper

CookiesHelper::COOKIE_TYPE_ENCRYPTED, CookiesHelper::COOKIE_TYPE_PERMANENT

Constants included from SortingTitlesValuesHelper

SortingTitlesValuesHelper::SORT_NAME, SortingTitlesValuesHelper::SORT_UPDATED_OLDEST, SortingTitlesValuesHelper::SORT_UPDATED_RECENT

Constants included from PageLimiter

PageLimiter::PageLimitNotANumberError, PageLimiter::PageLimitNotSensibleError, PageLimiter::PageLimiterError, PageLimiter::PageOutOfBoundsError

Instance Method Summary collapse

Methods included from SortingPreference

#legacy_sort_cookie_name, #set_sort_order

Methods included from CookiesHelper

#set_secure_cookie

Methods included from SortingHelper

#admin_groups_sort_options_hash, #admin_users_sort_options, #audit_logs_sort_order_hash, #branches_sort_options_hash, #can_sort_by_issue_weight?, #can_sort_by_merged_date?, #due_date_option, #forks_reverse_sort_options_hash, #forks_sort_direction_button, #forks_sort_options_hash, #groups_sort_options_hash, #issuable_reverse_sort_order_hash, #issuable_sort_direction_button, #issuable_sort_option_overrides, #issuable_sort_option_title, #issuable_sort_options, #label_priority_option, #label_sort_options_hash, #merged_option, #milestones_sort_options_hash, #packages_reverse_sort_order_hash, #packages_sort_direction_button, #packages_sort_option_title, #packages_sort_options_hash, #popularity_option, #projects_sort_options_hash, #relative_position_option, #sort_direction_button, #sort_direction_icon, #sort_options_hash, #starrers_sort_options_hash, #subgroups_sort_options_hash, #tags_sort_options_hash, #title_option, #users_sort_options_hash

Methods included from ButtonHelper

#clipboard_button, #deprecated_clipboard_button, #dropdown_item_with_description, #http_clone_button, #http_dropdown_description, #link_button_to, #ssh_clone_button

Methods included from SortingTitlesValuesHelper

#sort_title_closed_date, #sort_title_closed_earlier, #sort_title_closed_recently, #sort_title_contacted_date, #sort_title_created_date, #sort_title_downvotes, #sort_title_due_date, #sort_title_due_date_later, #sort_title_due_date_soon, #sort_title_expire_date, #sort_title_label_priority, #sort_title_largest_group, #sort_title_largest_repo, #sort_title_latest_activity, #sort_title_merged_date, #sort_title_merged_earlier, #sort_title_merged_recently, #sort_title_milestone, #sort_title_milestone_later, #sort_title_milestone_soon, #sort_title_most_stars, #sort_title_name, #sort_title_name_asc, #sort_title_name_desc, #sort_title_oldest_activity, #sort_title_oldest_created, #sort_title_oldest_last_activity, #sort_title_oldest_signin, #sort_title_oldest_starred, #sort_title_oldest_updated, #sort_title_popularity, #sort_title_priority, #sort_title_recently_created, #sort_title_recently_last_activity, #sort_title_recently_signin, #sort_title_recently_starred, #sort_title_recently_updated, #sort_title_relative_position, #sort_title_size, #sort_title_stars, #sort_title_start_date_later, #sort_title_start_date_soon, #sort_title_title, #sort_title_upvotes, #sort_title_version_asc, #sort_title_version_desc, #sort_value_closed_date, #sort_value_closed_earlier, #sort_value_closed_recently, #sort_value_contacted_date, #sort_value_created_date, #sort_value_downvotes, #sort_value_due_date, #sort_value_due_date_later, #sort_value_due_date_soon, #sort_value_expire_date, #sort_value_label_priority, #sort_value_largest_group, #sort_value_largest_repo, #sort_value_latest_activity, #sort_value_least_popular, #sort_value_merged_date, #sort_value_merged_earlier, #sort_value_merged_recently, #sort_value_milestone, #sort_value_milestone_later, #sort_value_milestone_soon, #sort_value_most_popular, #sort_value_name, #sort_value_name_desc, #sort_value_oldest_activity, #sort_value_oldest_created, #sort_value_oldest_last_activity, #sort_value_oldest_signin, #sort_value_oldest_updated, #sort_value_popularity, #sort_value_priority, #sort_value_recently_created, #sort_value_recently_last_activity, #sort_value_recently_signin, #sort_value_recently_updated, #sort_value_relative_position, #sort_value_size, #sort_value_stars_asc, #sort_value_stars_desc, #sort_value_start_date_later, #sort_value_start_date_soon, #sort_value_title, #sort_value_title_desc, #sort_value_upvotes, #sort_value_version_asc, #sort_value_version_desc

Methods included from RendersProjectsList

#prepare_projects_for_rendering

Methods included from RendersMemberAccess

#prepare_groups_for_rendering

Methods included from PageLimiter

#limit_pages

Instance Method Details

#indexObject



32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'app/controllers/explore/projects_controller.rb', line 32

def index
  show_alert_if_search_is_disabled
  @projects = load_projects

  respond_to do |format|
    format.html
    format.json do
      render json: {
        html: view_to_html_string("explore/projects/_projects", projects: @projects)
      }
    end
  end
end

#starredObject

rubocop: disable CodeReuse/ActiveRecord



61
62
63
64
65
66
67
68
69
70
71
72
# File 'app/controllers/explore/projects_controller.rb', line 61

def starred
  @projects = load_projects.reorder('star_count DESC')

  respond_to do |format|
    format.html
    format.json do
      render json: {
        html: view_to_html_string("explore/projects/_projects", projects: @projects)
      }
    end
  end
end

#topicObject



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'app/controllers/explore/projects_controller.rb', line 80

def topic
  load_topic

  return render_404 unless @topic

  params[:topic] = @topic.name
  @projects = load_projects

  respond_to do |format|
    format.html
    format.atom do
      @projects = @projects.projects_order_id_desc.limit(RSS_ENTRIES_LIMIT)
      render layout: 'xml'
    end
  end
end

#topicsObject

rubocop: enable CodeReuse/ActiveRecord



75
76
77
78
# File 'app/controllers/explore/projects_controller.rb', line 75

def topics
  load_project_counts
  load_topics
end


46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'app/controllers/explore/projects_controller.rb', line 46

def trending
  params[:trending] = true
  @projects = load_projects

  respond_to do |format|
    format.html
    format.json do
      render json: {
        html: view_to_html_string("explore/projects/_projects", projects: @projects)
      }
    end
  end
end