boxroom 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/app/concepts/boxroom/folder/cell/show.rb +17 -0
- data/app/concepts/boxroom/folder/contract/files_and_folders.rb +9 -0
- data/app/concepts/boxroom/folder/operations/files_and_folders.rb +28 -0
- data/app/concepts/boxroom/folder/view/show.erb +3 -3
- data/app/concepts/boxroom/search/contract/files_and_folders.rb +2 -0
- data/app/concepts/boxroom/search/operations/files_and_folders.rb +20 -0
- data/app/controllers/boxroom/folders_controller.rb +4 -0
- data/app/controllers/boxroom/search_controller.rb +1 -1
- data/app/views/boxroom/folders/show.html.erb +6 -3
- data/app/views/boxroom/search/show.html.erb +4 -2
- data/lib/boxroom/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2425f21a20fb62edbadae39129d71297a13297dd
|
4
|
+
data.tar.gz: b28cc4abc23332bbe28439304d2b9003873aa4d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aea5a38bcf464ca445bf742d30c7296664e8e02c234dc26c1b5641a11cf8835ced66f2d9f9281349131142a2df8de3f48a00178f4a4c1a5af4c94611cb5fc14e
|
7
|
+
data.tar.gz: 9d6fca592719fc908a0efa10ff09bb032c96def05880cc14dc72af49533821f4c80d15e8be2c949d8cb4e088a6f2d50deaca3a8b4a5fcf0860b1c2fc16689646
|
data/README.md
CHANGED
@@ -20,6 +20,23 @@ module Boxroom
|
|
20
20
|
model
|
21
21
|
end
|
22
22
|
|
23
|
+
def sort_link(field)
|
24
|
+
if @options[:sort_field] == field
|
25
|
+
sort_dir = @options[:sort_dir] == 'desc' ? 'asc' : 'desc'
|
26
|
+
icon_class = sort_dir == 'asc' ? 'fa-caret-up' : 'fa-caret-down'
|
27
|
+
else
|
28
|
+
sort_dir = 'asc'
|
29
|
+
icon_class = 'fa-caret-down'
|
30
|
+
end
|
31
|
+
span_class = @options[:sort_field] == field ? 'has-text-link' : 'has-text-grey-lighter'
|
32
|
+
path = if request.original_url.include? 'search'
|
33
|
+
search_path(folder_id: folder.id, term: params[:term], sort_field: field, sort_dir: sort_dir)
|
34
|
+
else
|
35
|
+
folder_path(folder, sort_field: field, sort_dir: sort_dir)
|
36
|
+
end
|
37
|
+
link_to "<span class=\"icon is-small #{span_class}\"><i class=\"fa #{icon_class}\"></i></span>", path
|
38
|
+
end
|
39
|
+
|
23
40
|
end
|
24
41
|
end
|
25
42
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Boxroom
|
2
|
+
class Folder < ActiveRecord::Base
|
3
|
+
class FilesAndFolders < ::Trailblazer::Operation
|
4
|
+
step Trailblazer::Operation::Contract::Build(constant: Boxroom::Folder::Contract::FilesAndFolders)
|
5
|
+
step Trailblazer::Operation::Contract::Validate()
|
6
|
+
step :get_lists
|
7
|
+
|
8
|
+
def get_lists(options, params:, **)
|
9
|
+
folder = Boxroom::Folder.find(params[:folder_id])
|
10
|
+
sort_field, sort_dir = params[:sort_field], params[:sort_dir]
|
11
|
+
sort_dir = sort_dir == 'asc' ? 'asc' : 'desc'
|
12
|
+
options['folders'] = folder.children
|
13
|
+
options['files'] = folder.user_files
|
14
|
+
case sort_field
|
15
|
+
when 'name'
|
16
|
+
options['folders'] = options['folders'].reorder("name #{sort_dir}")
|
17
|
+
options['files'] = options['files'].reorder("attachment_file_name #{sort_dir}")
|
18
|
+
when 'size'
|
19
|
+
options['files'] = options['files'].reorder("attachment_file_size #{sort_dir}")
|
20
|
+
when 'date'
|
21
|
+
options['folders'] = options['folders'].reorder("updated_at #{sort_dir}")
|
22
|
+
options['files'] = options['files'].reorder("updated_at #{sort_dir}")
|
23
|
+
end
|
24
|
+
true
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -2,9 +2,9 @@
|
|
2
2
|
<thead>
|
3
3
|
<tr>
|
4
4
|
<th></th>
|
5
|
-
<th><%= t :name
|
6
|
-
<th><%= t :size
|
7
|
-
<th><%= t :date_modified
|
5
|
+
<th><%= t :name %> <%= sort_link 'name' %> </th>
|
6
|
+
<th><%= t :size %> <%= sort_link 'size' %> </th>
|
7
|
+
<th><%= t :date_modified %> <%= sort_link 'date' %> </th>
|
8
8
|
<th></th>
|
9
9
|
</tr>
|
10
10
|
</thead>
|
@@ -2,6 +2,8 @@ module Boxroom::Search::Contract
|
|
2
2
|
class FilesAndFolders < Reform::Form
|
3
3
|
property :term, virtual: true
|
4
4
|
property :folder_id, virtual: true
|
5
|
+
property :sort_field, virtual: true
|
6
|
+
property :sort_dir, virtual: true
|
5
7
|
|
6
8
|
validates :folder_id, presence: true
|
7
9
|
validates :term, length: {minimum: 3}
|
@@ -3,6 +3,7 @@ module Boxroom::Search
|
|
3
3
|
step Trailblazer::Operation::Contract::Build(constant: Boxroom::Search::Contract::FilesAndFolders)
|
4
4
|
step Trailblazer::Operation::Contract::Validate()
|
5
5
|
step :search_tree
|
6
|
+
step :sort_results
|
6
7
|
|
7
8
|
def search_tree(options, params:, **)
|
8
9
|
options['files'], options['folders'] = [], []
|
@@ -17,5 +18,24 @@ module Boxroom::Search
|
|
17
18
|
search_folder(term, f, options)
|
18
19
|
end
|
19
20
|
end
|
21
|
+
|
22
|
+
def sort_results(options, params:, **)
|
23
|
+
sort_field, sort_dir = params[:sort_field], params[:sort_dir]
|
24
|
+
sort_dir = sort_dir == 'asc' ? 'asc' : 'desc'
|
25
|
+
case sort_field
|
26
|
+
when 'name'
|
27
|
+
options['folders'] = options['folders'].sort_by {|f| f.name}
|
28
|
+
options['files'] = options['files'].sort_by {|f| f.attachment_file_name}
|
29
|
+
options['folders'] = options['folders'].reverse if sort_dir == 'desc'
|
30
|
+
when 'size'
|
31
|
+
options['files'] = options['files'].sort_by {|f| f.attachment_file_size}
|
32
|
+
when 'date'
|
33
|
+
options['folders'] = options['folders'].sort_by {|f| f.updated_at}
|
34
|
+
options['files'] = options['files'].sort_by {|f| f.updated_at}
|
35
|
+
options['folders'] = options['folders'].reverse if sort_dir == 'desc'
|
36
|
+
end
|
37
|
+
options['files'] = options['files'].reverse if sort_dir == 'desc'
|
38
|
+
true
|
39
|
+
end
|
20
40
|
end
|
21
41
|
end
|
@@ -17,6 +17,10 @@ module Boxroom
|
|
17
17
|
|
18
18
|
# Note: @folder is set in require_existing_folder
|
19
19
|
def show
|
20
|
+
result = Boxroom::Folder::FilesAndFolders.(params: {folder_id: @folder.id, sort_field: params[:sort_field], sort_dir: params[:sort_dir]})
|
21
|
+
if result.success?
|
22
|
+
@files, @folders = result['files'], result['folders']
|
23
|
+
end
|
20
24
|
end
|
21
25
|
|
22
26
|
# Note: @target_folder is set in require_existing_target_folder
|
@@ -5,7 +5,7 @@ module Boxroom
|
|
5
5
|
def show
|
6
6
|
@folder = get_folder_or_redirect(params[:folder_id])
|
7
7
|
@term = params[:term]
|
8
|
-
result = Search::FilesAndFolders.(params: {term: @term, folder_id: @folder.id})
|
8
|
+
result = Search::FilesAndFolders.(params: {term: @term, folder_id: @folder.id, sort_field: params[:sort_field]})
|
9
9
|
if result.success?
|
10
10
|
@folders = result['folders']
|
11
11
|
@files = result['files']
|
@@ -56,9 +56,12 @@
|
|
56
56
|
|
57
57
|
<div id="files_and_folders">
|
58
58
|
<%= concept(Boxroom::Folder::Cell::Show, @folder,
|
59
|
-
folders: @
|
60
|
-
files: @
|
61
|
-
current_user: boxroom_current_user
|
59
|
+
folders: @folders,
|
60
|
+
files: @files,
|
61
|
+
current_user: boxroom_current_user,
|
62
|
+
sort_field: params[:sort_field],
|
63
|
+
sort_dir: params[:sort_dir]
|
64
|
+
) %>
|
62
65
|
</div>
|
63
66
|
|
64
67
|
<% if boxroom_current_user.member_of_admins? -%>
|
@@ -2,10 +2,12 @@
|
|
2
2
|
|
3
3
|
<h1 class="title"><%= "Search `#{@term}` in #{@folder.name}" %></h1>
|
4
4
|
|
5
|
-
<%= concept(Boxroom::Folder::Cell::Show,
|
5
|
+
<%= concept(Boxroom::Folder::Cell::Show, @folder,
|
6
6
|
folders: @folders,
|
7
7
|
files: @files,
|
8
|
-
current_user: boxroom_current_user
|
8
|
+
current_user: boxroom_current_user,
|
9
|
+
sort_field: params[:sort_field],
|
10
|
+
sort_dir: params[:sort_dir]
|
9
11
|
) %>
|
10
12
|
|
11
13
|
<div class="field">
|
data/lib/boxroom/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: boxroom
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Serge Koba
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03-
|
11
|
+
date: 2018-03-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -333,6 +333,8 @@ files:
|
|
333
333
|
- app/assets/stylesheets/boxroom/application.scss
|
334
334
|
- app/concepts/boxroom/base_cell.rb
|
335
335
|
- app/concepts/boxroom/folder/cell/show.rb
|
336
|
+
- app/concepts/boxroom/folder/contract/files_and_folders.rb
|
337
|
+
- app/concepts/boxroom/folder/operations/files_and_folders.rb
|
336
338
|
- app/concepts/boxroom/folder/view/show.erb
|
337
339
|
- app/concepts/boxroom/search/contract/files_and_folders.rb
|
338
340
|
- app/concepts/boxroom/search/operations/files_and_folders.rb
|