diff options
author | randx <dmitriy.zaporozhets@gmail.com> | 2012-10-09 22:09:46 +0300 |
---|---|---|
committer | randx <dmitriy.zaporozhets@gmail.com> | 2012-10-09 22:09:46 +0300 |
commit | 679d0d6d760b850e27c13f3ce0f812b8b081df7f (patch) | |
tree | e3f088a9139d693e96fd2bd86264150f0d96270c /app/contexts | |
parent | 63fe042d97a5430770ec50fc0e8f29c416bd2ec9 (diff) | |
download | gitlab-ce-679d0d6d760b850e27c13f3ce0f812b8b081df7f.tar.gz |
Context refactoring. Move Issues list, Search logic to context
Diffstat (limited to 'app/contexts')
-rw-r--r-- | app/contexts/commit_load_context.rb (renamed from app/contexts/commit_load.rb) | 8 | ||||
-rw-r--r-- | app/contexts/issues_list_context.rb | 29 | ||||
-rw-r--r-- | app/contexts/merge_requests_load_context.rb (renamed from app/contexts/merge_requests_load.rb) | 2 | ||||
-rw-r--r-- | app/contexts/search_context.rb | 27 |
4 files changed, 61 insertions, 5 deletions
diff --git a/app/contexts/commit_load.rb b/app/contexts/commit_load_context.rb index 81fb4925cc8..b3548ed858e 100644 --- a/app/contexts/commit_load.rb +++ b/app/contexts/commit_load_context.rb @@ -1,17 +1,17 @@ -class CommitLoad < BaseContext +class CommitLoadContext < BaseContext def execute - result = { + result = { commit: nil, suppress_diff: false, line_notes: [], notes_count: 0, - note: nil, + note: nil, status: :ok } commit = project.commit(params[:id]) - if commit + if commit commit = CommitDecorator.decorate(commit) line_notes = project.commit_line_notes(commit) diff --git a/app/contexts/issues_list_context.rb b/app/contexts/issues_list_context.rb new file mode 100644 index 00000000000..9bbdfe1db39 --- /dev/null +++ b/app/contexts/issues_list_context.rb @@ -0,0 +1,29 @@ +class IssuesListContext < BaseContext + include IssuesHelper + + attr_accessor :issues + + def execute + @issues = case params[:f] + when issues_filter[:all] then @project.issues + when issues_filter[:closed] then @project.issues.closed + when issues_filter[:to_me] then @project.issues.opened.assigned(current_user) + else @project.issues.opened + end + + @issues = @issues.tagged_with(params[:label_name]) if params[:label_name].present? + @issues = @issues.includes(:author, :project).order("updated_at") + + # Filter by specific assignee_id (or lack thereof)? + if params[:assignee_id].present? + @issues = @issues.where(assignee_id: (params[:assignee_id] == '0' ? nil : params[:assignee_id])) + end + + # Filter by specific milestone_id (or lack thereof)? + if params[:milestone_id].present? + @issues = @issues.where(milestone_id: (params[:milestone_id] == '0' ? nil : params[:milestone_id])) + end + + @issues + end +end diff --git a/app/contexts/merge_requests_load.rb b/app/contexts/merge_requests_load_context.rb index e2f68e3805b..e7dbdd285ee 100644 --- a/app/contexts/merge_requests_load.rb +++ b/app/contexts/merge_requests_load_context.rb @@ -1,4 +1,4 @@ -class MergeRequestsLoad < BaseContext +class MergeRequestsLoadContext < BaseContext def execute type = params[:f] diff --git a/app/contexts/search_context.rb b/app/contexts/search_context.rb new file mode 100644 index 00000000000..6e5e8c5e9b5 --- /dev/null +++ b/app/contexts/search_context.rb @@ -0,0 +1,27 @@ +class SearchContext + attr_accessor :project_ids, :params + + def initialize(project_ids, params) + @project_ids, @params = project_ids, params.dup + end + + def execute + query = params[:search] + + return result unless query.present? + + result[:projects] = Project.where(id: project_ids).search(query).limit(10) + result[:merge_requests] = MergeRequest.where(project_id: project_ids).search(query).limit(10) + result[:issues] = Issue.where(project_id: project_ids).search(query).limit(10) + result + end + + def result + @result ||= { + projects: [], + merge_requests: [], + issues: [] + } + end +end + |