file_share 0.1.3 → 0.1.4

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.3
1
+ 0.1.4
@@ -37,6 +37,7 @@ class FileAttachmentsController < FileShare::ApplicationController
37
37
  def new
38
38
  end
39
39
  def show
40
+ @file_attachment = FileAttachment.find(params[:id])
40
41
  end
41
42
  def index
42
43
  @orphans = FileAttachment.orphans
@@ -2,10 +2,11 @@ class FileShare::ApplicationController < ApplicationController
2
2
  helper_method :has_authorization?
3
3
 
4
4
  private
5
- # Redefine this method to implement authorization
5
+ unless private_method_defined?(:has_authorization?)
6
6
  def has_authorization?(*args)
7
7
  true
8
8
  end
9
+ end
9
10
  protected
10
11
  public
11
12
  end
@@ -1,6 +1,7 @@
1
1
  module FileAttachmentsHelper
2
2
 
3
3
  def description_display(file_attachment)
4
+ return unless has_authorization?(:read, file_attachment)
4
5
  content_tag :p, {
5
6
  :id => "file_attachment_#{file_attachment.id}_description",
6
7
  :style => "max-width: 70%; float: right;",
@@ -15,8 +16,16 @@ module FileAttachmentsHelper
15
16
  :id => "file_attachment_#{file_attachment.id}_name",
16
17
  :class => 'file_attachment_name'
17
18
  } do
18
- link_to(file_attachment.name, download_file_attachment_path(file_attachment.id))
19
+ link_to_download_file_attachment(file_attachment)
19
20
  end
20
21
  end
21
-
22
+
23
+ def file_container_data(file_attachment)
24
+ return unless has_authorization?(:update, file_attachment)
25
+ content_tag :span, file_attachment.file_container, {
26
+ :id => "file_attachment_#{file_attachment.id}_file_container",
27
+ :class => "file_attachment_file_container",
28
+ :style => "display:none;"
29
+ }
30
+ end
22
31
  end
@@ -20,19 +20,76 @@ module FileShare
20
20
  end
21
21
  end
22
22
 
23
- def link_to_file_attachments(wrapper_options={})
23
+ def link_to_file_attachments(wrapper_options={}, link_options={})
24
24
  link_wrapper(file_attachments_path, wrapper_options, {
25
25
  :link_text => 'List / Upload Files'
26
- })
26
+ }.merge!(link_options))
27
27
  end
28
28
 
29
- def render_file_share_main_menu
30
- render :partial => 'file-share-shared/main_menu'
29
+ def links_to_edit_and_delete_file_attachment(file_attachment, wrapper_options={}, link_options={})
30
+ return unless has_authorization?(:update, file_attachment) || has_authorization?(:delete, file_attachment)
31
+ content_tag :p do
32
+ link_to_edit_file_attachment(file_attachment) + " " +
33
+ link_to_delete_file_attachment(file_attachment)
34
+ end
35
+ end
36
+
37
+ def link_to_edit_file_attachment(file_attachment, wrapper_options={}, link_options={})
38
+ return unless has_authorization?(:update, file_attachment)
39
+ link_wrapper(edit_file_attachment_path(file_attachment), {
40
+ :no_wrapper => true
41
+ }.merge!(wrapper_options), {
42
+ :link_text => 'update',
43
+ :class => 'file_attachment_dynamic_form_link fake_button'
44
+ }.merge!(link_options))
45
+ end
46
+
47
+ def link_to_delete_file_attachment(file_attachment, wrapper_options={}, link_options={})
48
+ return unless has_authorization?(:delete, file_attachment)
49
+ link_wrapper(file_attachment_path(file_attachment), {
50
+ :no_wrapper => true
51
+ }.merge!(wrapper_options), {
52
+ :link_text => 'delete',
53
+ :method => :delete,
54
+ :confirm => "Did you mean to Delete #{file_attachment.name}?",
55
+ :class => 'fake_button'
56
+ }.merge!(link_options))
57
+ end
58
+
59
+ def link_to_download_file_attachment(file_attachment, wrapper_options={}, link_options={})
60
+ return unless has_authorization?(:read, file_attachment)
61
+ link_wrapper(download_file_attachment_path(file_attachment), {
62
+ :no_wrapper => true
63
+ }.merge!(wrapper_options), {
64
+ :link_text => file_attachment.name
65
+ }.merge!(link_options))
31
66
  end
32
67
 
33
- def render_file_share_navigation
34
- render :partial => 'file-share-shared/navigation'
68
+ def link_to_attachable(attachable, wrapper_options={}, link_options={})
69
+ return unless has_authorization?(:read, attachable)
70
+ link_wrapper(polymorphic_path(attachable), {
71
+ :no_wrapper => true
72
+ }.merge!(wrapper_options), {
73
+ :link_text => attachable.name
74
+ }.merge!(link_options))
35
75
  end
76
+
77
+ def link_to_attachable_or_file_attachments(attachable, wrapper_options={}, link_options={})
78
+ unless attachable.blank?
79
+ return link_to_attachable(attachable), {
80
+ :no_wrapper => false
81
+ }, {
82
+ :link_text => '< back',
83
+ :class => 'fake_button'
84
+ }
85
+ else
86
+ return link_to_file_attachments({}, {
87
+ :link_text => '< back',
88
+ :class => 'fake_button'
89
+ })
90
+ end
91
+ end
92
+
36
93
  def file_share_javascript_includes
37
94
  list = [
38
95
  "jquery-ui-1.7.2.custom.min.js",
@@ -55,6 +112,6 @@ module FileShare
55
112
  list.unshift("http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js")
56
113
  end
57
114
  list
58
- end
115
+ end
59
116
  end
60
117
  end
@@ -1,3 +1,3 @@
1
1
  <ul>
2
- <li><%= link_to "Files", file_attachments_path %></li>
2
+ <li><%= link_to_file_attachments({}, :link_text => "Files") %></li>
3
3
  </ul>
@@ -1,20 +1,7 @@
1
1
  <%= div_for(file_attachment) do %>
2
- <%= content_tag :span, file_attachment.file_container, {
3
- :id => "file_attachment_#{file_attachment.id}_file_container",
4
- :class => "file_attachment_file_container",
5
- :style => "display:none;"
6
- } if has_authorization?(:update, file_attachment) %>
2
+ <%= file_container_data(file_attachment) %>
7
3
  <%= description_display(file_attachment) %>
8
4
  <%= name_display(file_attachment) %>
9
- <%= content_tag :p, :style => "font-size: 11px;" do %>
10
- <%= link_to "update", edit_file_attachment_path(file_attachment), {
11
- :class => 'file_attachment_dynamic_form_link fake_button'
12
- } %>
13
- <%= link_to('delete', file_attachment_path(file_attachment.id), {
14
- :method => :delete,
15
- :confirm => "Did you mean to Delete #{file_attachment.name}?",
16
- :class => 'fake_button'
17
- }) if has_authorization?(:delete, file_attachment) %>
18
- <% end if has_authorization?(:update, file_attachment) || has_authorization?(:delete, file_attachment) %>
5
+ <%= links_to_edit_and_delete_file_attachment(file_attachment) %>
19
6
  <% end %>
20
7
  <hr />
@@ -4,18 +4,18 @@
4
4
  <h2>Orphaned Files</h2>
5
5
  <%= render :partial => 'file_attachments/file_attachment', :collection => orphans %>
6
6
  </div>
7
- <div class="span-8 last">
7
+ <div id="files" class="span-8 last">
8
8
  <h2>Attached Files</h2>
9
9
  <% files.group_by(&:attachable).each do |attachable, attached_files| %>
10
10
  <div id="<%= "#{attachable.class}_#{attachable.id}" %>">
11
- <h3><%= link_to attachable.name, polymorphic_path(attachable) %></h3>
11
+ <h3><%= link_to_attachable(attachable) %></h3>
12
12
  <%= render :partial => 'file_attachments/file_attachment', :collection => attached_files %>
13
13
  </div>
14
14
  <% end %>
15
15
  </div>
16
16
  <div style="clear:both;"></div>
17
17
  <% else %>
18
- <div>
18
+ <div id="files">
19
19
  <% if files.present? || orphans.present? %>
20
20
  <%= render :partial => 'file_attachments/file_attachment', :collection => files.present? ? files : orphans %>
21
21
  <% end %>
@@ -24,6 +24,7 @@
24
24
  </div>
25
25
 
26
26
  <% if has_authorization?(:update, FileAttachment.new) %>
27
+ <%- @file_containers = FileContainer.all unless defined?(@file_containers) %>
27
28
  <form id="file_attachment_dynamic_form" class="formtastic" method="post" action="<%= file_attachments_path %>" style="display: none; padding: 5px 0;">
28
29
  <div style="margin: 0pt; padding: 0pt; display: inline;">
29
30
  <input type="hidden" value="put" name="_method" />
@@ -42,7 +43,7 @@
42
43
  <% end %>
43
44
  <textarea id="file_attachment_description" style="height: 70px; width: 69%" name="file_attachment[description]"></textarea>
44
45
  <br />
45
- <input type="submit" value="Update" /> | <a href="#" class="cancel_dynamic_form">Cancel</a>
46
+ <input type="submit" value="Update" /> | <a href="#" class="cancel_dynamic_form fake_button">Cancel</a>
46
47
  </form>
47
48
 
48
49
  <% content_for(:javascript) do %>
@@ -1,4 +1,4 @@
1
- <% if defined?(container) && container %>
1
+ <% if defined?(container) && container.present? %>
2
2
  <% new_file_attachment = FileAttachment.new(:attachable => container) %>
3
3
  <% else %>
4
4
  <% new_file_attachment = FileAttachment.new %>
@@ -11,8 +11,10 @@
11
11
  %>
12
12
 
13
13
  <% f.inputs do %>
14
+ <% if new_file_attachment.attachable.present? %>
14
15
  <%= f.input :attachable_id, :as => :hidden %>
15
16
  <%= f.input :attachable_type, :as => :hidden %>
17
+ <% end %>
16
18
  <%= f.input :name, :label => 'Name' %>
17
19
  <%= f.input :description, :label => 'Description' %>
18
20
  <%= f.input :uploaded_file, :as => :file, :label => 'Filepath' %>
@@ -1,6 +1,4 @@
1
- <%- back_path = @file_attachment.attachable_id.blank? ?
2
- file_attachments_path : polymorphic_path(@file_attachment.attachable_id) -%>
3
- <p><%= link_to '< back', back_path, :class => 'fake_button' %></p>
1
+ <p><%= link_to_attachable_or_file_attachments(@file_attachment.attachable) %></p>
4
2
 
5
3
  <%= content_tag :div do %>
6
4
  <%= semantic_form_for @file_attachment do |form| %>
@@ -0,0 +1,5 @@
1
+ <h2><%= link_to_download_file_attachment(@file_attachment) %></h2>
2
+ <%= link_to_attachable(@file_attachment.attachable) %>
3
+ <%= description_display(@file_attachment) %>
4
+
5
+ <%= links_to_edit_and_delete_file_attachment(file_attachment) %>
@@ -41,7 +41,7 @@
41
41
  <div class="span-4 last">
42
42
  <div id="main_menu">
43
43
  <ul>
44
- <li><%= link_to "Files", file_attachments_path %></li>
44
+ <li><%= link_to_file_attachments %></li>
45
45
  </ul>
46
46
  </div>
47
47
 
@@ -6,4 +6,5 @@ default:
6
6
  - link-icons
7
7
  - pagination
8
8
  - tacs-base
9
+ - files
9
10
 
@@ -166,7 +166,7 @@ DynamicForm = $.klass({
166
166
  // get resource attr names from form input ids
167
167
  var resourceAttrContainer = resourceContainer.find('.'+this.id);
168
168
  // get resource attr vals from w/in resource container
169
- this.value = resourceAttrContainer.text();
169
+ this.value = $.trim(resourceAttrContainer.text());
170
170
  });
171
171
 
172
172
  this.formElement.show();
@@ -1,4 +1,4 @@
1
- TACS base styles
1
+ Event styles
2
2
 
3
3
  Credits
4
4
  ----------------------------------------------------------------
@@ -9,4 +9,4 @@ Usage
9
9
  ----------------------------------------------------------------
10
10
 
11
11
  1) Add this line to your HTML:
12
- <link rel="stylesheet" href="css/blueprint/plugins/tacs-base/screen.css" type="text/css" media="screen, projection">
12
+ <link rel="stylesheet" href="css/blueprint/plugins/events/screen.css" type="text/css" media="screen, projection">
@@ -399,4 +399,8 @@ table.tiny_table td {padding:0px 2px;margin:0px 2px;font-size:9px;}
399
399
  table.tablesorter {width:auto;}
400
400
  table.tablesorter tbody td {padding:4px 12px;}
401
401
  table.tablesorter th.header {padding-right:24px;}
402
- table.tablesorter thead tr th {font-size:13px;}
402
+ table.tablesorter thead tr th {font-size:13px;}
403
+
404
+ /* files */
405
+ div.file_attachment {margin-bottom:10px;}
406
+ p.description_file_attachment {float:right;max-width:70%;}
@@ -23,4 +23,4 @@
23
23
 
24
24
  .pagination {
25
25
  }
26
- */
26
+ */
@@ -167,6 +167,21 @@ describe FileAttachmentsController do
167
167
 
168
168
  end
169
169
 
170
+ describe ":show, :id => int" do
171
+ before(:each) do
172
+ FileAttachment.stub(:find).and_return(mock_file_attachment)
173
+ end
174
+ it "loads a @file_attachment" do
175
+ FileAttachment.should_receive(:find).with('1').and_return(mock_file_attachment)
176
+ get :show, :id => "1"
177
+ assigns[:file_attachment].should eql mock_file_attachment
178
+ end
179
+ it "renders the show template" do
180
+ get :show, :id => "1"
181
+ response.should render_template("file_attachments/show")
182
+ end
183
+ end
184
+
170
185
  describe ":edit, :id => integer" do
171
186
 
172
187
  before(:each) do
@@ -176,7 +191,7 @@ describe FileAttachmentsController do
176
191
  it "loads a file_attachment as @file_attachment" do
177
192
  FileAttachment.should_receive(:find).with('1').and_return(mock_file_attachment)
178
193
  get :edit, :id => "1"
179
- assigns[:file_attachment].should == @mock_file_attachment
194
+ assigns[:file_attachment].should eql @mock_file_attachment
180
195
  end
181
196
 
182
197
  it "loads potential containers as @file_containers" do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: file_share
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 3
10
- version: 0.1.3
9
+ - 4
10
+ version: 0.1.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jason LaPier
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-12-13 00:00:00 -08:00
19
+ date: 2010-12-15 00:00:00 -08:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -295,6 +295,7 @@ files:
295
295
  - app/views/file_attachments/_upload_form.html.erb
296
296
  - app/views/file_attachments/edit.html.erb
297
297
  - app/views/file_attachments/index.html.erb
298
+ - app/views/file_attachments/show.html.erb
298
299
  - app/views/file_attachments/update.js.rjs
299
300
  - app/views/layouts/application.html.erb
300
301
  - config/application.rb