file_share 0.1.0

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.
Files changed (161) hide show
  1. data/Gemfile +16 -0
  2. data/Gemfile.lock +147 -0
  3. data/README +0 -0
  4. data/Rakefile +38 -0
  5. data/VERSION +1 -0
  6. data/app/controllers/application_controller.rb +4 -0
  7. data/app/controllers/file_attachments_controller.rb +123 -0
  8. data/app/controllers/file_share/application_controller.rb +5 -0
  9. data/app/helpers/file_attachments_helper.rb +9 -0
  10. data/app/helpers/file_share/application_helper.rb +60 -0
  11. data/app/models/file_attachment.rb +104 -0
  12. data/app/models/file_container.rb +30 -0
  13. data/app/views/file-share-shared/_flash.html.erb +7 -0
  14. data/app/views/file-share-shared/_main_menu.html.erb +3 -0
  15. data/app/views/file-share-shared/_navigation.html.erb +2 -0
  16. data/app/views/file_attachments/_file_attachment.html.erb +17 -0
  17. data/app/views/file_attachments/_file_attachments.html.erb +52 -0
  18. data/app/views/file_attachments/_file_container_option.html.erb +4 -0
  19. data/app/views/file_attachments/_file_container_select.html.erb +14 -0
  20. data/app/views/file_attachments/_plupload_with_listing.html.erb +142 -0
  21. data/app/views/file_attachments/_upload_form.html.erb +22 -0
  22. data/app/views/file_attachments/edit.html.erb +32 -0
  23. data/app/views/file_attachments/index.html.erb +1 -0
  24. data/app/views/file_attachments/update.js.rjs +13 -0
  25. data/app/views/layouts/application.html.erb +56 -0
  26. data/config/application.rb +42 -0
  27. data/config/blueprint_settings.yml +9 -0
  28. data/config/boot.rb +13 -0
  29. data/config/cucumber.yml +8 -0
  30. data/config/database.example.yml +22 -0
  31. data/config/environment.rb +5 -0
  32. data/config/environments/development.rb +26 -0
  33. data/config/environments/production.rb +49 -0
  34. data/config/environments/test.rb +35 -0
  35. data/config/initializers/backtrace_silencers.rb +7 -0
  36. data/config/initializers/inflections.rb +10 -0
  37. data/config/initializers/mime_types.rb +5 -0
  38. data/config/initializers/secret_token.rb +9 -0
  39. data/config/initializers/session_store.rb +10 -0
  40. data/config/locales/en.yml +5 -0
  41. data/config/routes.rb +64 -0
  42. data/db/migrate/20101020002635_create_file_attachments.rb +19 -0
  43. data/db/schema.rb +27 -0
  44. data/db/seeds.rb +7 -0
  45. data/lib/file_share.rb +3 -0
  46. data/lib/file_share/engine.rb +25 -0
  47. data/lib/generators/file_share/install/USAGE +5 -0
  48. data/lib/generators/file_share/install/install_generator.rb +19 -0
  49. data/lib/generators/file_share/install/templates/file_share.rake +169 -0
  50. data/lib/tasks/blueprint.rake +25 -0
  51. data/lib/tasks/cucumber.rake +53 -0
  52. data/public/404.html +26 -0
  53. data/public/422.html +26 -0
  54. data/public/500.html +26 -0
  55. data/public/favicon.ico +0 -0
  56. data/public/images/rails.png +0 -0
  57. data/public/javascripts/file_share.js +62 -0
  58. data/public/javascripts/file_share_behaviors.js +131 -0
  59. data/public/javascripts/idselector.js +538 -0
  60. data/public/javascripts/jquery-1.3.2.min.js +19 -0
  61. data/public/javascripts/jquery-ui-1.7.2.custom.min.js +298 -0
  62. data/public/javascripts/jquery.clonePosition.js +27 -0
  63. data/public/javascripts/jquery.js +154 -0
  64. data/public/javascripts/jquery.qtip-1.0.0-rc3.js +2149 -0
  65. data/public/javascripts/jquery.qtip-1.0.0-rc3.min.js +15 -0
  66. data/public/javascripts/jquery.string.1.0-min.js +6 -0
  67. data/public/javascripts/jquery.tablesorter.min.js +2 -0
  68. data/public/javascripts/lowpro.jquery.js +224 -0
  69. data/public/javascripts/plupload/gears_init.js +86 -0
  70. data/public/javascripts/plupload/jquery.plupload.queue.min.js +202 -0
  71. data/public/javascripts/plupload/plupload.browserplus.min.js +1 -0
  72. data/public/javascripts/plupload/plupload.flash.min.js +1 -0
  73. data/public/javascripts/plupload/plupload.flash.swf +0 -0
  74. data/public/javascripts/plupload/plupload.full.min.js +1 -0
  75. data/public/javascripts/plupload/plupload.gears.min.js +1 -0
  76. data/public/javascripts/plupload/plupload.html4.min.js +1 -0
  77. data/public/javascripts/plupload/plupload.html5.min.js +1 -0
  78. data/public/javascripts/plupload/plupload.min.js +1 -0
  79. data/public/javascripts/plupload/plupload.silverlight.min.js +1 -0
  80. data/public/javascripts/plupload/plupload.silverlight.xap +0 -0
  81. data/public/javascripts/rails.js +132 -0
  82. data/public/robots.txt +5 -0
  83. data/public/stylesheets/blueprint/grid.css +290 -0
  84. data/public/stylesheets/blueprint/icons/cross.png +0 -0
  85. data/public/stylesheets/blueprint/icons/doc.png +0 -0
  86. data/public/stylesheets/blueprint/icons/email.png +0 -0
  87. data/public/stylesheets/blueprint/icons/external.png +0 -0
  88. data/public/stylesheets/blueprint/icons/feed.png +0 -0
  89. data/public/stylesheets/blueprint/icons/im.png +0 -0
  90. data/public/stylesheets/blueprint/icons/key.png +0 -0
  91. data/public/stylesheets/blueprint/icons/pdf.png +0 -0
  92. data/public/stylesheets/blueprint/icons/tick.png +0 -0
  93. data/public/stylesheets/blueprint/icons/visited.png +0 -0
  94. data/public/stylesheets/blueprint/icons/xls.png +0 -0
  95. data/public/stylesheets/blueprint/ie.css +36 -0
  96. data/public/stylesheets/blueprint/oldgrid.css +161 -0
  97. data/public/stylesheets/blueprint/plugins/buttons/icons/cross.png +0 -0
  98. data/public/stylesheets/blueprint/plugins/buttons/icons/key.png +0 -0
  99. data/public/stylesheets/blueprint/plugins/buttons/icons/tick.png +0 -0
  100. data/public/stylesheets/blueprint/plugins/buttons/readme.txt +32 -0
  101. data/public/stylesheets/blueprint/plugins/buttons/screen.css +97 -0
  102. data/public/stylesheets/blueprint/plugins/fancy-type/readme.txt +14 -0
  103. data/public/stylesheets/blueprint/plugins/fancy-type/screen.css +71 -0
  104. data/public/stylesheets/blueprint/plugins/link-icons/icons/doc.png +0 -0
  105. data/public/stylesheets/blueprint/plugins/link-icons/icons/email.png +0 -0
  106. data/public/stylesheets/blueprint/plugins/link-icons/icons/external.png +0 -0
  107. data/public/stylesheets/blueprint/plugins/link-icons/icons/feed.png +0 -0
  108. data/public/stylesheets/blueprint/plugins/link-icons/icons/im.png +0 -0
  109. data/public/stylesheets/blueprint/plugins/link-icons/icons/pdf.png +0 -0
  110. data/public/stylesheets/blueprint/plugins/link-icons/icons/visited.png +0 -0
  111. data/public/stylesheets/blueprint/plugins/link-icons/icons/xls.png +0 -0
  112. data/public/stylesheets/blueprint/plugins/link-icons/readme.txt +18 -0
  113. data/public/stylesheets/blueprint/plugins/link-icons/screen.css +40 -0
  114. data/public/stylesheets/blueprint/plugins/rtl/readme.txt +10 -0
  115. data/public/stylesheets/blueprint/plugins/rtl/screen.css +110 -0
  116. data/public/stylesheets/blueprint/plugins/silksprite/sprite.css +1 -0
  117. data/public/stylesheets/blueprint/plugins/silksprite/sprites.png +0 -0
  118. data/public/stylesheets/blueprint/print.css +29 -0
  119. data/public/stylesheets/blueprint/readme.txt +12 -0
  120. data/public/stylesheets/blueprint/screen.css +402 -0
  121. data/public/stylesheets/error_messages.css +65 -0
  122. data/public/stylesheets/formtastic.css +138 -0
  123. data/public/stylesheets/formtastic_changes.css +33 -0
  124. data/public/stylesheets/main_elements.css +26 -0
  125. data/public/stylesheets/plupload/backgrounds.gif +0 -0
  126. data/public/stylesheets/plupload/buttons-disabled.png +0 -0
  127. data/public/stylesheets/plupload/buttons.png +0 -0
  128. data/public/stylesheets/plupload/delete.gif +0 -0
  129. data/public/stylesheets/plupload/done.gif +0 -0
  130. data/public/stylesheets/plupload/error.gif +0 -0
  131. data/public/stylesheets/plupload/screen.css +172 -0
  132. data/public/stylesheets/plupload/transp50.png +0 -0
  133. data/public/stylesheets/reset.css +60 -0
  134. data/public/stylesheets/scaffold.css +55 -0
  135. data/public/stylesheets/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  136. data/public/stylesheets/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  137. data/public/stylesheets/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  138. data/public/stylesheets/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  139. data/public/stylesheets/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  140. data/public/stylesheets/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  141. data/public/stylesheets/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  142. data/public/stylesheets/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  143. data/public/stylesheets/smoothness/images/ui-icons_222222_256x240.png +0 -0
  144. data/public/stylesheets/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  145. data/public/stylesheets/smoothness/images/ui-icons_454545_256x240.png +0 -0
  146. data/public/stylesheets/smoothness/images/ui-icons_888888_256x240.png +0 -0
  147. data/public/stylesheets/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  148. data/public/stylesheets/smoothness/jquery-ui-1.7.2.custom.css +406 -0
  149. data/public/stylesheets/tablesorter/blue/asc.gif +0 -0
  150. data/public/stylesheets/tablesorter/blue/bg.gif +0 -0
  151. data/public/stylesheets/tablesorter/blue/desc.gif +0 -0
  152. data/public/stylesheets/tablesorter/blue/style.css +39 -0
  153. data/public/stylesheets/text_and_colors.css +49 -0
  154. data/spec/controllers/file_attachments_controller_spec.rb +305 -0
  155. data/spec/fixtures/file_share_file_attachments.yml +2 -0
  156. data/spec/fixtures/somefile.txt +1 -0
  157. data/spec/helpers/file_attachments_helper_spec.rb +11 -0
  158. data/spec/models/file_attachment_spec.rb +57 -0
  159. data/spec/models/file_container_spec.rb +23 -0
  160. data/spec/spec_helper.rb +27 -0
  161. metadata +474 -0
@@ -0,0 +1,30 @@
1
+ module FileContainer
2
+ mattr_reader :types
3
+
4
+ @@types ||= []
5
+
6
+ def self.included(base)
7
+ @@types << base
8
+
9
+ base.instance_eval do
10
+ include Associations
11
+ end
12
+ end
13
+
14
+ def self.all
15
+ types.collect do |type|
16
+ type.all
17
+ end.flatten! || []
18
+ end
19
+
20
+ module Associations
21
+ def self.included(base)
22
+ base.instance_eval do
23
+ has_many :file_attachments, {
24
+ :as => :attachable,
25
+ :dependent => :destroy
26
+ }
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,7 @@
1
+ <% if flash[:notice] || flash[:warning] %>
2
+ <div id="flash_message">
3
+ <div class="<%= flash[:notice] ? 'notice' : 'error' %>">
4
+ <p><%= flash[:notice] || flash[:warning] %></p>
5
+ </div>
6
+ </div>
7
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <ul>
2
+ <li><%= link_to "Files", file_attachments_path %></li>
3
+ </ul>
@@ -0,0 +1,2 @@
1
+ <h4>Files</h4>
2
+ <%= link_to_file_attachments %>
@@ -0,0 +1,17 @@
1
+ <%= div_for(file_attachment) do %>
2
+ <%= description_display(file_attachment) %>
3
+ <%= content_tag :p do %>
4
+ <%= link_to(file_attachment.name, download_file_attachment_path(file_attachment.id)) %>
5
+ <% end %>
6
+
7
+ <%= content_tag :p, :style => "font-size: 11px;" do %>
8
+ <a href="#" file_attachment_id="<%= file_attachment.id %>" file_attachment[description]="<%= file_attachment.description %>" class="file_attachment_dynamic_form_link fake_button">update description</a>
9
+ <%= link_to('update', edit_file_attachment_path(file_attachment.id), :class => 'fake_button') if has_authorization?(:update, file_attachment) %>
10
+ <%= link_to('delete', file_attachment_path(file_attachment.id), {
11
+ :method => :delete,
12
+ :confirm => "Did you mean to Delete #{file_attachment.name}?",
13
+ :class => 'fake_button'
14
+ }) if has_authorization?(:delete, file_attachment) %>
15
+ <% end if has_authorization?(:update, file_attachment) || has_authorization?(:delete, file_attachment) %>
16
+ <% end %>
17
+ <hr />
@@ -0,0 +1,52 @@
1
+ <div id="file_attachments">
2
+ <div id="orphans" class="span-8">
3
+ <h2>Orphaned Files (<em><%= @orphans.count %></em>)</h2>
4
+ <%= render :partial => 'file_attachments/file_attachment', :collection => @orphans %>
5
+ </div>
6
+ <div id="files" class="span-8 last">
7
+ <h2>Files (<em><%= @files.count %></em>)</h2>
8
+ <% @files.group_by(&:attachable).each do |attachable, attached_files| %>
9
+ <div id="<%= "#{attachable.class}_#{attachable.id}" %>">
10
+ <h3><%= link_to attachable.name, polymorphic_path(attachable) %> (<em><%= attached_files.count %></em>)</h3>
11
+ <%= render :partial => 'file_attachments/file_attachment', :collection => attached_files %>
12
+ </div>
13
+ <% end %>
14
+ </div>
15
+ <div style="clear:both;"></div>
16
+ </div>
17
+
18
+ <% if has_authorization?(:update, FileAttachment.new) %>
19
+ <div id="blank_description_form" style="display: none; padding: 5px 0;">
20
+ <form class="formtastic file_attachment" id="new_description" method="post" action="#">
21
+ <div style="margin: 0pt; padding: 0pt; display: inline;">
22
+ <input type="hidden" value="put" name="_method" />
23
+ <input type="hidden" value="<%= form_authenticity_token %>" name="authenticity_token" />
24
+ </div>
25
+ <textarea id="file_attachment_description" style="height: 70px; width: 69%" name="file_attachment[description]"></textarea>
26
+ <br />
27
+ <input type="submit" value="Update" />
28
+ </form>
29
+ </div>
30
+
31
+ <% content_for(:javascript) do %>
32
+ <script type="text/javascript">
33
+ jQuery.ajaxSetup({
34
+ 'beforeSend': function(xhr) {
35
+ xhr.setRequestHeader("Accept", "text/javascript");
36
+ }
37
+ });
38
+
39
+ jQuery(function($) {
40
+ $("a.file_attachment_dynamic_form_link").attach(DynamicForm, {
41
+ formId: 'new_description',
42
+ formContainer: 'blank_description_form',
43
+ actionPrefix: '/file_attachments',
44
+ targetIdName: 'file_attachment_id',
45
+ targetContentName: 'file_attachment[description]',
46
+ targetContentType: 'textarea'
47
+ });
48
+ $("#new_description").attach(Remote.Form);
49
+ });
50
+ </script>
51
+ <% end %>
52
+ <% end %>
@@ -0,0 +1,4 @@
1
+ <% value_class = file_container_option.class.to_s -%>
2
+ <% value = file_container_option.id -%>
3
+ <% selected_txt = selected == "#{value_class}_#{value}" ? ' selected="selected" ' : '' %>
4
+ <option value="<%= value_class -%>_<%= value -%>"<%= selected_txt %>><%= file_container_option.name %></option>
@@ -0,0 +1,14 @@
1
+ <select id="file_container_select" name="file_attachment[file_container]">
2
+ <option value=""></option>
3
+ <% @file_containers.group_by(&:class).each do |klass, file_containers| %>
4
+ <optgroup label="<%= klass.to_s.pluralize %>">
5
+ <%= render({
6
+ :partial => 'file_attachments/file_container_option',
7
+ :collection => file_containers,
8
+ :locals => {
9
+ :selected => selected
10
+ }
11
+ }) %>
12
+ </optgroup>
13
+ <% end %>
14
+ </select>
@@ -0,0 +1,142 @@
1
+ <% content_for(:javascript) do %>
2
+ <script type="text/javascript">
3
+ jQuery.ajaxSetup({
4
+ 'beforeSend': function(xhr) {
5
+ xhr.setRequestHeader("Accept", "text/javascript");
6
+ }
7
+ });
8
+ function bindCallbacks(plupload) {
9
+ plupload.bind('FileUploaded', function(up, file, response) {
10
+ if( $('#file_container_select').val() ) {
11
+ $("#" + $('#file_container_select').val() ).append(response.response);
12
+ } else {
13
+ $("#orphans").append(response.response);
14
+ }
15
+ });
16
+ plupload.bind('UploadProgress', function() {
17
+ if( plupload.files.length == plupload.total.failed + plupload.total.uploaded ) {
18
+ $('span.plupload_upload_status').hide();
19
+ $('div.plupload_buttons').show();
20
+ }
21
+ });
22
+ plupload.bind('UploadFile', function(up, file) {
23
+ attachable_params = $('#file_container_select').val().split('_');
24
+ $.extend(up.settings.multipart_params, {
25
+ attachable_id: attachable_params[1],
26
+ attachable_type: attachable_params[0]
27
+ });
28
+ });
29
+ }
30
+ // Convert divs to queue widgets when the DOM is ready
31
+ $(function() {
32
+ // Setup html5 version
33
+ $("#multiple_uploads").pluploadQueue({
34
+ // General settings
35
+ runtimes : 'html5', // use only html5
36
+ url : '<%= file_attachments_path %>',
37
+ dragdrop: false,
38
+ setup: bindCallbacks,
39
+ multipart: true,
40
+ multipart_params: {
41
+ authenticity_token: '<%= form_authenticity_token %>'
42
+ },
43
+ required_features: 'multipart', // disable uploader if html5+multipart not available - webkit doesn't support html5+multipart
44
+ max_file_size : '50mb',
45
+ unique_names : true,
46
+
47
+ // Resize images on clientside if we can
48
+ resize : {width : 320, height : 240, quality : 90},
49
+
50
+ // Specify what files to browse for
51
+ filters : [
52
+ {title : "Image files", extensions : "jpg,gif,png,svg"},
53
+ {title : "Zip files", extensions : "zip"},
54
+ {title : "PDF documents", extensions : "pdf"},
55
+ {title : "Word documents", extensions : "doc"},
56
+ {title : "Power Point presentations", extensions : "ppt"},
57
+ {title : "Excel spreadsheets", extensions : "xls"},
58
+ {title : "Plain text files", extensions : "txt"}
59
+ ],
60
+
61
+ // Flash settings
62
+ // flash_swf_url : '/plupload/js/plupload.flash.swf'
63
+ });
64
+ });
65
+
66
+ $(window).load(function() {
67
+ <% if !params[:std].nil? %>
68
+ $('#linker').hide();
69
+ $('#unlinker').show();
70
+ $('#file_block').show();
71
+ <% else %>
72
+ $('#linker').show();
73
+ $('#unlinker').hide();
74
+ $('#file_block').hide();
75
+ <% end %>
76
+ });
77
+ </script>
78
+
79
+
80
+ <% end %>
81
+
82
+ <h3>Downloadable Resources<hr /></h3>
83
+
84
+ <%= render :partial => 'file_attachments/file_attachments' %>
85
+
86
+ <% if has_authorization?(:create, FileAttachment.new) %>
87
+
88
+ <p id="linker" class="upload_block_linker" style="display:none; text-align: right;">
89
+ <a href="<%= url_for(:controller => controller_name, :action => action_name) %>?show=upload_files_block&toggle=upload_block_unlinker&hide=upload_block_linker" class="show_hide_link fake_button">Upload Files</a>
90
+ </p>
91
+ <p id="unlinker" class="upload_block_unlinker" style="display:none; text-align: right;">
92
+ <%= link_to "Cancel", url_for({
93
+ :controller => controller_name,
94
+ :action => action_name,
95
+ # show=upload_files_block&toggle=upload_block_unlinker&hide=upload_block_linker
96
+ :show => 'upload_block_linker',
97
+ :toggle => 'upload_block_unlinker',
98
+ :hide => 'upload_files_block'
99
+ }), :class => 'show_hide_link fake_button' %>
100
+ </p>
101
+
102
+ <div id="file_block" class="upload_files_block" style="">
103
+ <h4>Upload Files<hr /></h4>
104
+
105
+ <p>
106
+ <%= link_to_unless params[:std] == '1', "One at a time", url_for(:controller => controller_name, :action => action_name, :std => 1), :class => 'fake_button' %>
107
+ <%= link_to_if params[:std] == '1', "Several at once", url_for(:controller => controller_name, :action => action_name, :std => 0), :class => 'fake_button' %>
108
+ </p>
109
+
110
+ <% if @file_containers.present? %>
111
+ <p>
112
+ <%= render({
113
+ :partial => 'file_attachments/file_container_select',
114
+ :locals => {
115
+ :selected => "#{params[:attachable_type]}_#{params[:attachable_id]}"
116
+ }
117
+ }) %>
118
+ </p>
119
+ <% elsif instance_variable_defined?("@#{controller_name.singularize}") %>
120
+ <% instance = instance_variable_get("@#{controller_name.singularize}") %>
121
+ <%= hidden_field_tag 'file_attachment[file_container]', "#{instance.class}_#{instance.id}", {
122
+ :id => 'file_container_select'
123
+ } %>
124
+ <% else %>
125
+ <%= hidden_field_tag 'file_attachment[file_container]', nil, {
126
+ :id => 'file_container_select'
127
+ } %>
128
+ <% end %>
129
+
130
+ <% if params[:std] && params[:std] == '1' %>
131
+ <div id="single_upload" style="width: 33%;">
132
+ <%= render :partial => 'file_attachments/upload_form', :locals => {:container => instance} if defined?(instance) %>
133
+ <%= render :partial => 'file_attachments/upload_form' unless defined?(instance) %>
134
+ </div>
135
+ <% elsif params[:std].nil? || params[:std] == '0' %>
136
+ <div id="multiple_uploads">
137
+ You browser doesn't support native upload. Try Firefox 3 or Safari 4.
138
+ </div>
139
+ <% end %>
140
+ </div>
141
+
142
+ <% end %>
@@ -0,0 +1,22 @@
1
+ <% if defined?(container) && container %>
2
+ <% new_file_attachment = FileAttachment.new(:attachable => container) %>
3
+ <% else %>
4
+ <% new_file_attachment = FileAttachment.new %>
5
+ <% end %>
6
+ <% semantic_form_for new_file_attachment, :html => { :multipart => true } do |f| %>
7
+
8
+ <%=
9
+ # todo replace f.error_messages
10
+ #f.error_messages
11
+ %>
12
+
13
+ <% f.inputs do %>
14
+ <%= f.input :attachable_id, :as => :hidden %>
15
+ <%= f.input :attachable_type, :as => :hidden %>
16
+ <%= f.input :name, :label => 'Name' %>
17
+ <%= f.input :description, :label => 'Description' %>
18
+ <%= f.input :uploaded_file, :as => :file, :label => 'Filepath' %>
19
+ <% end %>
20
+
21
+ <%= f.buttons %>
22
+ <% end %>
@@ -0,0 +1,32 @@
1
+ <%
2
+ #if @file_attachment.event_id.nil?
3
+ %>
4
+ <p><%= link_to '< back', file_attachments_path, :class => 'fake_button' %></p>
5
+ <%
6
+ #else
7
+ %>
8
+ <!-- <p><%=
9
+ #link_to '< back', event_path(@file_attachment.event.id), :class => 'fake_button'
10
+ %>
11
+ </p> -->
12
+ <%
13
+ #end
14
+ %>
15
+ <%= content_tag :div do %>
16
+ <%= semantic_form_for @file_attachment do |form| %>
17
+ <%= form.inputs do %>
18
+ <%= form.input :name, :hint => 'something memorable' %>
19
+ <%= render({
20
+ :partial => 'file_container_select',
21
+ :locals => {
22
+ :selected => "#{@file_attachment.attachable_type}_#{@file_attachment.attachable_id}"
23
+ }
24
+ }) %>
25
+ <%=
26
+ #form.input :event, :hint => 'does this file belong somewhere else?'
27
+ %>
28
+ <%= form.input :description, :hint => "of file contents, purpose, etc" %>
29
+ <% end %>
30
+ <%= form.buttons %>
31
+ <% end %>
32
+ <% end %>
@@ -0,0 +1 @@
1
+ <%= render :partial => 'file_attachments/plupload_with_listing', :locals => {:file_attachments => @file_attachments} %>
@@ -0,0 +1,13 @@
1
+ if @file_attachment.valid?
2
+ page << %Q{
3
+ $('#blank_description_form').hide();
4
+ $('#file_attachment_#{@file_attachment.id}_description').replaceWith('#{description_display(@file_attachment)}');
5
+ $('#file_attachment_#{@file_attachment.id}').effect('highlight', {
6
+ color: '#C3D9FF'
7
+ }, 2500)
8
+ }
9
+ else
10
+ page << %Q{
11
+ alert("The file description could not be saved.");
12
+ }
13
+ end
@@ -0,0 +1,56 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
5
+ <!-- <link rel="icon" type="image/png" href="/images/favorite.png"/> -->
6
+ <title>FileShare</title>
7
+ <%= stylesheet_link_tag "blueprint/screen", :media => "screen, projection" %>
8
+ <%= stylesheet_link_tag "plupload/screen", :media => "screen, projection" %>
9
+ <%= stylesheet_link_tag "blueprint/print", :media => "print" %>
10
+ <!--[if lt IE 8]>
11
+ <%= stylesheet_link_tag "blueprint/ie", :media => "screen, projection" %>
12
+ <![endif]-->
13
+ <%= stylesheet_link_tag "tablesorter/blue/style", :media => "screen" %>
14
+ <%= stylesheet_link_tag "smoothness/jquery-ui-1.7.2.custom.css" %>
15
+
16
+ <%= stylesheet_link_tag 'error_messages', 'formtastic', 'formtastic_changes',
17
+ 'main_elements', 'text_and_colors' %>
18
+
19
+ <%= javascript_include_tag file_share_javascript_includes %>
20
+
21
+ <%= csrf_meta_tag %>
22
+
23
+ <%= yield :javascript %>
24
+ </head>
25
+ <body>
26
+
27
+ <div class="container">
28
+ <div class="top-banner span-24 last">
29
+ <div class="header span-14">
30
+ <h1>FileShare</h1>
31
+ </div>
32
+ </div>
33
+
34
+ <div class="base_content span-20">
35
+ <%= render :partial => 'file-share-shared/flash', :object => flash %>
36
+ <div class="inner_content">
37
+ <%= yield %>
38
+ </div>
39
+ </div>
40
+
41
+ <div class="span-4 last">
42
+ <div id="main_menu">
43
+ <ul>
44
+ <li><%= link_to "Files", file_attachments_path %></li>
45
+ </ul>
46
+ </div>
47
+
48
+ <div class="sidebar">
49
+ <%= yield :sidebar %>
50
+ </div>
51
+
52
+ </div>
53
+ </div>
54
+
55
+ </body>
56
+ </html>
@@ -0,0 +1,42 @@
1
+ require File.expand_path('../boot', __FILE__)
2
+
3
+ require 'rails/all'
4
+
5
+ # If you have a Gemfile, require the gems listed there, including any gems
6
+ # you've limited to :test, :development, or :production.
7
+ Bundler.require(:default, Rails.env) if defined?(Bundler)
8
+
9
+ module FileShare
10
+ class Application < Rails::Application
11
+ # Settings in config/environments/* take precedence over those specified here.
12
+ # Application configuration should go into files in config/initializers
13
+ # -- all .rb files in that directory are automatically loaded.
14
+
15
+ # Custom directories with classes and modules you want to be autoloadable.
16
+ # config.autoload_paths += %W(#{config.root}/extras)
17
+
18
+ # Only load the plugins named here, in the order given (default is alphabetical).
19
+ # :all can be used as a placeholder for all plugins not explicitly named.
20
+ # config.plugins = [ :exception_notification, :ssl_requirement, :all ]
21
+
22
+ # Activate observers that should always be running.
23
+ # config.active_record.observers = :cacher, :garbage_collector, :forum_observer
24
+
25
+ # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
26
+ # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
27
+ # config.time_zone = 'Central Time (US & Canada)'
28
+
29
+ # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
30
+ # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
31
+ # config.i18n.default_locale = :de
32
+
33
+ # JavaScript files you want as :defaults (application.js is always included).
34
+ config.action_view.javascript_expansions[:defaults] = %w()
35
+
36
+ # Configure the default encoding used in templates for Ruby 1.9.
37
+ config.encoding = "utf-8"
38
+
39
+ # Configure sensitive parameters which will be filtered from the log file.
40
+ config.filter_parameters += [:password]
41
+ end
42
+ end