summaryrefslogtreecommitdiff
path: root/app/contexts
diff options
context:
space:
mode:
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.rb29
-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.rb27
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
+