</ul>
</div>
</div>
+ <div class="pull-right">
+ <%= form_tag collection_path(@object.uuid), {method: 'get'} do %>
+ <input class="form-control" id="file_regex" name="file_regex" value="<%= params[:file_regex] %>" type="text"/>
+ <button id="file_regex_submit" type="submit" class="btn btn-primary" autofocus>Filter</button>
+ <% end %>
+ </div>
</div>
<p/>
<% end %>
+<%
+ file_regex = nil
+ if params[:file_regex]
+ begin
+ file_regex = Regexp.new(params[:file_regex])
+ rescue RegexpError
+ # If the pattern is not a valid regex, quote it
+ # (i.e. use it as a simple substring search)
+ file_regex = Regexp.new(Regexp.quote(params[:file_regex]))
+ end
+ end
+%>
+
<% file_tree = @object.andand.files_tree %>
<% if file_tree.nil? or file_tree.empty? %>
<p>This collection is empty.</p>
</div>
<ul class="collection_files">
<% else %>
+ <% if !file_regex.nil? and !file_regex.match(filename) %>
+ <% next %>
+ <% end %>
<% link_params = {controller: 'collections', action: 'show_file',
uuid: @object.portable_data_hash, file: file_path, size: size} %>
<div class="collection_files_row">
assert page.has_no_text?("Activity")
assert page.has_no_text?("Sharing and permissions")
end
+
+ test "Filtering collection files by regexp" do
+ col = api_fixture('collections', 'multilevel_collection_1')
+ visit page_with_token('active', "/collections/#{col['uuid']}")
+
+ # Test when only some files match the regex
+ page.find_field('file_regex').set('file[12]')
+ find('button#file_regex_submit').click
+ assert page.has_text?("file1")
+ assert page.has_text?("file2")
+ assert page.has_no_text?("file3")
+
+ # Test all files matching the regex
+ page.find_field('file_regex').set('file[123]')
+ find('button#file_regex_submit').click
+ assert page.has_text?("file1")
+ assert page.has_text?("file2")
+ assert page.has_text?("file3")
+
+ # Test no files matching the regex
+ page.find_field('file_regex').set('file9')
+ find('button#file_regex_submit').click
+ assert page.has_no_text?("file1")
+ assert page.has_no_text?("file2")
+ assert page.has_no_text?("file3")
+
+ # Syntactically invalid regex
+ # Page loads, but does not match any files
+ page.find_field('file_regex').set('file[2')
+ find('button#file_regex_submit').click
+ assert page.has_no_text?("file1")
+ assert page.has_no_text?("file2")
+ assert page.has_no_text?("file3")
+ end
end
multilevel_collection_1:
uuid: zzzzz-4zz18-pyw8yp9g3pr7irn
portable_data_hash: 1fd08fc162a5c6413070a8bd0bffc818+150
- owner_uuid: qr1hi-tpzed-000000000000000
+ owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz
created_at: 2014-02-03T17:22:54Z
modified_by_client_uuid: zzzzz-ozdt8-brczlopd8u8d0jr
modified_by_user_uuid: zzzzz-tpzed-d9tiejq69daie8f
uuid: zzzzz-4zz18-45xf9hw1sxkhl6q
# All of this collection's files are deep in subdirectories.
portable_data_hash: 80cf6dd2cf079dd13f272ec4245cb4a8+48
- owner_uuid: qr1hi-tpzed-000000000000000
+ owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz
created_at: 2014-02-03T17:22:54Z
modified_by_client_uuid: zzzzz-ozdt8-brczlopd8u8d0jr
modified_by_user_uuid: zzzzz-tpzed-d9tiejq69daie8f