filemanager 0.1.1 → 0.2.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 (73) hide show
  1. data/CHANGELOG +4 -0
  2. data/README +1 -1
  3. data/README.zh_CN +32 -0
  4. data/Rakefile +2 -2
  5. data/{rails → filemanager}/app/controllers/fm/filemanager_controller.rb +0 -0
  6. data/{rails → filemanager}/app/views/fm/filemanager/index.html.erb +8 -8
  7. data/{rails → filemanager}/app/views/fm/filemanager/view.html.erb +1 -1
  8. data/{rails/config → filemanager}/filemanager.yml +2 -2
  9. data/{rails → filemanager}/public/filemanager/images/avi.gif +0 -0
  10. data/{rails → filemanager}/public/filemanager/images/box.gif +0 -0
  11. data/{rails → filemanager}/public/filemanager/images/bullet.gif +0 -0
  12. data/{rails → filemanager}/public/filemanager/images/close.gif +0 -0
  13. data/{rails → filemanager}/public/filemanager/images/closelabel.gif +0 -0
  14. data/{rails → filemanager}/public/filemanager/images/doc.gif +0 -0
  15. data/{rails → filemanager}/public/filemanager/images/donate-button.gif +0 -0
  16. data/{rails → filemanager}/public/filemanager/images/download-icon.gif +0 -0
  17. data/{rails → filemanager}/public/filemanager/images/folder.gif +0 -0
  18. data/{rails → filemanager}/public/filemanager/images/gif.gif +0 -0
  19. data/{rails → filemanager}/public/filemanager/images/htm.gif +0 -0
  20. data/{rails → filemanager}/public/filemanager/images/html.gif +0 -0
  21. data/{rails → filemanager}/public/filemanager/images/image-1.jpg +0 -0
  22. data/{rails → filemanager}/public/filemanager/images/image.gif +0 -0
  23. data/{rails → filemanager}/public/filemanager/images/jpg.gif +0 -0
  24. data/{rails → filemanager}/public/filemanager/images/loading.gif +0 -0
  25. data/{rails → filemanager}/public/filemanager/images/mov.gif +0 -0
  26. data/{rails → filemanager}/public/filemanager/images/nextlabel.gif +0 -0
  27. data/{rails → filemanager}/public/filemanager/images/pdf.gif +0 -0
  28. data/{rails → filemanager}/public/filemanager/images/png.gif +0 -0
  29. data/{rails → filemanager}/public/filemanager/images/ppt.gif +0 -0
  30. data/{rails → filemanager}/public/filemanager/images/prevlabel.gif +0 -0
  31. data/{rails → filemanager}/public/filemanager/images/rar.gif +0 -0
  32. data/{rails → filemanager}/public/filemanager/images/rm.gif +0 -0
  33. data/{rails → filemanager}/public/filemanager/images/rmvb.gif +0 -0
  34. data/{rails → filemanager}/public/filemanager/images/separator.gif +0 -0
  35. data/{rails → filemanager}/public/filemanager/images/spacer.gif +0 -0
  36. data/{rails → filemanager}/public/filemanager/images/swf.gif +0 -0
  37. data/{rails → filemanager}/public/filemanager/images/thumb-1.jpg +0 -0
  38. data/{rails → filemanager}/public/filemanager/images/tool_copy.gif +0 -0
  39. data/{rails → filemanager}/public/filemanager/images/tool_cut.gif +0 -0
  40. data/{rails → filemanager}/public/filemanager/images/tool_del.gif +0 -0
  41. data/{rails → filemanager}/public/filemanager/images/tool_folder.gif +0 -0
  42. data/{rails → filemanager}/public/filemanager/images/tool_imagemanager.gif +0 -0
  43. data/{rails → filemanager}/public/filemanager/images/tool_new.gif +0 -0
  44. data/{rails → filemanager}/public/filemanager/images/tool_paste.gif +0 -0
  45. data/{rails → filemanager}/public/filemanager/images/tool_props.gif +0 -0
  46. data/{rails → filemanager}/public/filemanager/images/tool_refresh.gif +0 -0
  47. data/{rails → filemanager}/public/filemanager/images/tool_unzip.gif +0 -0
  48. data/{rails → filemanager}/public/filemanager/images/tool_upload.gif +0 -0
  49. data/{rails → filemanager}/public/filemanager/images/tool_zip.gif +0 -0
  50. data/{rails → filemanager}/public/filemanager/images/txt.gif +0 -0
  51. data/{rails → filemanager}/public/filemanager/images/unknown.gif +0 -0
  52. data/{rails → filemanager}/public/filemanager/images/wmv.gif +0 -0
  53. data/{rails → filemanager}/public/filemanager/images/xls.gif +0 -0
  54. data/{rails → filemanager}/public/filemanager/images/zip.gif +0 -0
  55. data/{rails → filemanager}/public/filemanager/javascripts/builder.js +0 -0
  56. data/{rails → filemanager}/public/filemanager/javascripts/effects.js +0 -0
  57. data/{rails → filemanager}/public/filemanager/javascripts/filemanager.js +0 -0
  58. data/{rails → filemanager}/public/filemanager/javascripts/lang/en.js +0 -0
  59. data/{rails → filemanager}/public/filemanager/javascripts/lang/zh_CN.js +0 -0
  60. data/{rails → filemanager}/public/filemanager/javascripts/lightbox.js +0 -0
  61. data/{rails → filemanager}/public/filemanager/javascripts/prototype.js +0 -0
  62. data/{rails → filemanager}/public/filemanager/javascripts/prototype_ext.js +0 -0
  63. data/{rails → filemanager}/public/filemanager/javascripts/scriptaculous.js +0 -0
  64. data/{rails → filemanager}/public/filemanager/javascripts/translate.js +0 -0
  65. data/{rails/public/fm_resources → filemanager/public/filemanager/resources}/resources.txt +0 -0
  66. data/{rails → filemanager}/public/filemanager/stylesheets/filelist.css +0 -0
  67. data/{rails → filemanager}/public/filemanager/stylesheets/general.css +0 -0
  68. data/{rails → filemanager}/public/filemanager/stylesheets/lightbox.css +0 -0
  69. data/{rails/fm_temp → filemanager/temp}/temp +0 -0
  70. data/lib/filemanager.rb +33 -8
  71. data/lib/filemanager/controller.rb +205 -185
  72. metadata +83 -86
  73. data/rails/app/helpers/fm/filemanager_helper.rb +0 -61
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ Changes in version 0.2.0 (2008-05-20)
2
+ -------------------------------------
3
+ refactory for folder structure, don't copy files to app
4
+
1
5
  Changes in version 0.1.1 (2008-05-19)
2
6
  -------------------------------------
3
7
  fix a bug about sub-directories' number
data/README CHANGED
@@ -1,4 +1,4 @@
1
- Filemanager, release 0.1.1 (May. 2008)
1
+ Filemanager, release 0.2.0 (May. 2008)
2
2
  A online file manager for rails project
3
3
 
4
4
  Feature
data/README.zh_CN ADDED
@@ -0,0 +1,32 @@
1
+ Filemanager, release 0.2.0 (May. 2008)
2
+ Rails��Ŀ�������ļ�������
3
+
4
+ ����
5
+ =======
6
+ 1. �ļ���Ŀ¼����������ƣ����У�ճ������������ɾ���������ȹ���
7
+ 2. ��ѹzip�ļ�
8
+ 3. ѹ��������ָ���Ķ���ļ���Ŀ¼
9
+ 4. �ϴ��ļ�
10
+ 5. �����ļ���ʽ�鿴�ļ�
11
+ 6. �ļ���Ŀ¼�����ʻ���ҳ���������ʻ�
12
+
13
+ ����
14
+ =======
15
+ #������������environment.rb����
16
+
17
+ $FM_OVERWRITE = true
18
+ require 'filemanager'
19
+
20
+ #ע��: �������Ҫ��������Ŀ�ж�Filemanager�ĸı䣬�����ɾ��$FM_OVERWRITE��һ��
21
+ #��ͬʱҲ�ᵼ��Filemanager����ʱijЩ������ܷ������ã�����Ը�����Ҫ����$FM_OVERWRITE���趨
22
+
23
+ ʹ��
24
+ =======
25
+ ����rails����� http://localhost:3000/fm/filemanager
26
+ �������ܶ��������Ҽ��˵���
27
+
28
+ ����������� "RAILS_ROOT/confile/filemanager.yml"
29
+ Ĭ�ϵĹ���Ŀ¼�� "RAILS_ROOT/public/fm_resources"
30
+ ҳ������i18n�� "RAILS_ROOT/public/filemanager/javascripts/lang"
31
+
32
+ Copyright (c) 2008 Leon Li, released under the MIT license
data/Rakefile CHANGED
@@ -1,12 +1,12 @@
1
1
  require 'rubygems'
2
2
  require 'rake/gempackagetask'
3
3
  PKG_NAME = "filemanager"
4
- PKG_VERSION = "0.1.1"
4
+ PKG_VERSION = "0.2.0"
5
5
  PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
6
6
  PKG_FILES = FileList[
7
7
  '[A-Z]*',
8
8
  'lib/**/*',
9
- 'rails/**/*'
9
+ 'filemanager/**/*'
10
10
  ]
11
11
  spec = Gem::Specification.new do |s|
12
12
  s.platform = Gem::Platform::RUBY
@@ -151,13 +151,13 @@ background-color:#039;
151
151
  <td class=filelistheadcol id=fmodcol1 nowrap width="2%" align="center"> <span fmLang="modification_date">Modification Date</span> </td>
152
152
  </tr>
153
153
  <%
154
- path = encode(@path)
154
+ path = @controller.encode(@path)
155
155
  unless @parent_path.nil?
156
156
  %>
157
157
  <tr class=filelistroweven>
158
158
  <td width=1></td>
159
159
  <td><a onmousedown="return false;" href="#"><img class="" title=directory height=16 alt=directory src="/filemanager/images/folder.gif" width=16 border=0></a></td>
160
- <td class=filelistfilename><a onmousedown="return false;" href="?path=<%= encode(@parent_path) %>">..</a></td>
160
+ <td class=filelistfilename><a onmousedown="return false;" href="?path=<%= @controller.encode(@parent_path) %>">..</a></td>
161
161
  <td nowrap></td>
162
162
  <td nowrap><%= File.ctime(@resource_path + @parent_path).strftime("%Y-%m-%d %H:%M:%S") %></td>
163
163
  </tr>
@@ -167,7 +167,7 @@ background-color:#039;
167
167
  @directories.each do |i|
168
168
  next if i == '.' || i == '..'
169
169
  old_i = i
170
- i = encode(i)
170
+ i = @controller.encode(i)
171
171
  %>
172
172
  <tr class=filelistroweven id="tr_<%= i %>">
173
173
  <td width=1><input onclick="triggerselect(this)" type="checkbox" name="fileCheck" value="<%= i %>"></td>
@@ -185,15 +185,15 @@ background-color:#039;
185
185
  unless @files.nil?
186
186
  @files.each do |i|
187
187
  old_i = i
188
- i = encode(i)
188
+ i = @controller.encode(i)
189
189
  %>
190
190
  <tr class=filelistroweven id="tr_<%= i %>">
191
191
  <td width=1><input onclick="triggerselect(this)" type="checkbox" name="fileCheck" value="<%= i %>"></td>
192
- <td><a onmousedown="return false;" name="<%= i %>"></a><a href="#"><img class="" height=16 src="/filemanager/images/<%= get_file_type(i) %>.gif" width=16 border=0></a></td>
192
+ <td><a onmousedown="return false;" name="<%= i %>"></a><a href="#"><img class="" height=16 src="/filemanager/images/<%= @controller.get_file_type(i) %>.gif" width=16 border=0></a></td>
193
193
  <td class=filelistfilename>
194
194
  <a id="context_file_<%= i %>" title="<%= path + '/' + i %>" href="javascript:ajaxLink('/fm/filemanager/view?path=<%= path + '/' + i %>', 'view', 'none');" onmousedown="hideMenu();" onclick="showControl('<%= path + '/' + i %>')" ><%= i %></a>
195
195
  </td>
196
- <td nowrap><%= hsize(File.size(@current_path + '/' + old_i).to_f) %></td>
196
+ <td nowrap><%= @controller.hsize(File.size(@current_path + '/' + old_i).to_f) %></td>
197
197
  <td nowrap><%= File.ctime(@current_path + '/' + old_i).strftime("%Y-%m-%d %H:%M:%S") %></td>
198
198
  </tr>
199
199
  <%
@@ -209,7 +209,7 @@ background-color:#039;
209
209
  <legend align=left><span fmLang="directory_information">Directory Information</span></legend>
210
210
  <div style="margin: 2px; overflow: hidden; width: 100%">
211
211
  <div class=previewsubtitle><span fmLang="directory_name">Directory Name</span></div>
212
- <div class=previewtext><%= encode(File.basename(@current_path)) %></div>
212
+ <div class=previewtext><%= @controller.encode(File.basename(@current_path)) %></div>
213
213
  </div>
214
214
  <div style="float: left; margin: 2px; width: 45%">
215
215
  <div class=previewsubtitle><span fmLang="sub_directories">Sub-directories</span>:</div>
@@ -221,7 +221,7 @@ background-color:#039;
221
221
  <div class=previewsubtitle><span fmLang="files">Files</span>:</div>
222
222
  <div class=previewtext><%= @files.size %></div>
223
223
  <div class=previewsubtitle><span fmLang="file_total_size">File Total Size</span>:</div>
224
- <div class=previewtext><%= hsize(@file_total_size) %></div>
224
+ <div class=previewtext><%= @controller.hsize(@file_total_size) %></div>
225
225
 
226
226
  </div>
227
227
  <br style="clear: both">
@@ -1,6 +1,6 @@
1
1
  <%
2
2
  randome_key = Time.new.to_i
3
- path = @lock_path + encode(@path) + '?' + randome_key.to_s
3
+ path = @lock_path + @controller.encode(@path) + '?' + randome_key.to_s
4
4
  if @controller.is_image?
5
5
  %>
6
6
 
@@ -9,8 +9,8 @@ excel.type: xls xla ods
9
9
  ppt.type: ppt pps ppz pot
10
10
  help.type: hlp chm
11
11
  none.type: rar zip
12
- resources.url: /fm_resources
13
- resources.path: <%= RAILS_ROOT %>/public/fm_resources
12
+ resources.url: /filemanager/resources
13
+ resources.path: <%= RAILS_ROOT %>/public/filemanager/resources
14
14
  encoding.to: UTF-8
15
15
  encoding.from:
16
16
  temp.dir:
File without changes
data/lib/filemanager.rb CHANGED
@@ -8,12 +8,17 @@
8
8
 
9
9
  require 'action_controller/routing'
10
10
  require 'fileutils'
11
+ FM_ID = 'filemanager'
12
+ FM_ROOT = File.join(RAILS_ROOT, 'vendor', FM_ID)
13
+ FM_PATH_CONTROLLER = File.join(FM_ROOT, 'app', 'controllers')
14
+ FM_PATH_VIEW = File.join(FM_ROOT, 'app', 'views')
15
+ FM_PATH_PUBLIC = File.join(FM_ROOT, 'public')
11
16
 
12
- fm_config = File.join(RAILS_ROOT, 'config', 'filemanager.yml')
13
-
14
- if $FM_OVERWRITE || ! File.exist?(fm_config)
15
- fm_rails_path = File.dirname(File.dirname(__FILE__)) + "/rails/"
16
- Dir.foreach(fm_rails_path) {|f| FileUtils.cp_r(fm_rails_path + f, RAILS_ROOT)}
17
+ if $FM_OVERWRITE || ! File.exist?(FM_ROOT)
18
+ fm_rails_path = File.dirname(File.dirname(__FILE__)) + "/#{FM_ID}"
19
+ FileUtils.cp_r(fm_rails_path, File.join(RAILS_ROOT, 'vendor'))
20
+ FileUtils.cp_r(FM_PATH_PUBLIC, RAILS_ROOT)
21
+ FileUtils.rm_rf(FM_PATH_PUBLIC)
17
22
  end
18
23
 
19
24
  ActionController::Routing::RouteSet.class_eval do
@@ -31,9 +36,29 @@ ActionController::Routing::RouteSet.class_eval do
31
36
 
32
37
  end
33
38
 
39
+ Rails::Initializer.class_eval do
40
+
41
+ def fm_set_load_path
42
+ configuration.load_paths << FM_PATH_CONTROLLER
43
+ fm_old_set_load_path
44
+ end
45
+
46
+ def fm_initialize_framework_views
47
+ fm_old_initialize_framework_views
48
+ ActionController::Base.view_paths << FM_PATH_VIEW
49
+ configuration.controller_paths << FM_PATH_CONTROLLER
50
+ end
51
+
52
+ alias_method :fm_old_initialize_framework_views, :initialize_framework_views
53
+ alias_method :initialize_framework_views, :fm_initialize_framework_views
54
+ alias_method :fm_old_set_load_path, :set_load_path
55
+ alias_method :set_load_path, :fm_set_load_path
56
+
57
+ end
58
+
34
59
  require "erb"
35
60
  require "yaml"
36
- $FM_PROPERTIES = YAML::load(ERB.new(IO.read(fm_config)).result)
61
+ $FM_PROPERTIES = YAML::load(ERB.new(IO.read(File.join(FM_ROOT, 'filemanager.yml'))).result)
37
62
 
38
63
  FM_IMAGE_TYPES = $FM_PROPERTIES['image.type'].split(' ')
39
64
  FM_FLASH_TYPES = $FM_PROPERTIES['flash.type'].split(' ')
@@ -54,6 +79,6 @@ FM_LOCK_PATH = $FM_PROPERTIES['resources.url']
54
79
  FM_ENCODING_TO = $FM_PROPERTIES['encoding.to']
55
80
  FM_ENCODING_FROM = $FM_PROPERTIES['encoding.from'].nil? ? '' : $FM_PROPERTIES['encoding.from']
56
81
 
57
- FM_TEMP_DIR = $FM_PROPERTIES['temp.dir'].nil? ? File.join(RAILS_ROOT, '/fm_temp') : $FM_PROPERTIES['temp.dir']
82
+ FM_TEMP_DIR = $FM_PROPERTIES['temp.dir'].nil? ? File.join(FM_ROOT, 'temp') : $FM_PROPERTIES['temp.dir']
58
83
 
59
- FileUtils.rm_rf(Dir.glob("#{FM_TEMP_DIR}/*"))
84
+ FileUtils.rm_rf(Dir.glob("#{FM_TEMP_DIR}/*"))
@@ -8,190 +8,210 @@
8
8
  module Filemanager
9
9
  module Controller
10
10
  def set_up
11
- @lock_path = FM_LOCK_PATH
12
- @source = params[:source]
13
- @source = decode(@source) unless @source.nil?
14
- @path = (params[:path].nil? || ! params[:path].index('..').nil?) ? '' : params[:path]
15
- @path = '' if @path == '/'
16
- @path = decode(@path)
17
- @resource_path = FM_RESOURCES_PATH
18
- @current_path = @resource_path + @path
19
- @current_file = (File.directory?(@current_path) ? Dir.new(@current_path) : File.new(@current_path))
20
- @parent_path = (!@path.blank? && !@path.rindex('/').nil?) ? (@path.rindex('/') == 0 ? '/' : @path[0..(@path.rindex('/')-1)]) : nil
21
- @path_suffix = @path.index('.').nil? || @path[-1] == '.' ? '' : @path[@path.index('.')+1..-1]
22
- if File.directory?(@current_path)
23
- @all_files = Dir.entries(@current_path)
24
- @directories = @all_files.map{|f| File.directory?(@current_path + File::SEPARATOR + f) ? f : nil}.compact
25
- @files = @all_files.map{|f| File.directory?(@current_path + File::SEPARATOR + f) ? nil : f}.compact
26
- @file_total_size = @files.inject(0){|size, f| size + File.size(@current_path + File::SEPARATOR + f)}
27
- end
28
- end
29
-
30
- def tear_off
31
- @current_file.close unless @current_file.nil?
32
- end
33
-
34
- def index
35
-
36
- end
37
-
38
- def view
39
- # respond_to do |wants|
40
- # wants.js { render :text => File.size(@current_path) > 1000000 ? 'File too big' : File.read(@current_path) }
41
- # end
42
- end
43
-
44
- def file_content
45
- File.size(@current_path) > 1000000 ? 'File too big' : File.read(@current_path)
46
- end
47
-
48
- # def office
49
- # render :action=>'excel' if is_excel?
50
- # render :action=>'word' if is_word?
51
- # render :action=>'ppt' if is_ppt?
52
- # render :action=>'help' if is_help?
53
- # end
54
-
55
- def rename
56
- old_name = @current_path + File::SEPARATOR + decode(params[:old_name])
57
- new_name = @current_path + File::SEPARATOR + decode(params[:new_name])
58
- File.rename(old_name, new_name)
59
- success
60
- end
61
-
62
- def remove
63
- FileUtils.rm_rf(@source.map{|s| @current_path + File::SEPARATOR + s})
64
- success
65
- end
66
-
67
- def new_file
68
- File.new(@current_path + File::SEPARATOR + decode(params[:new_name]), 'w')
69
- success
70
- end
71
-
72
- def new_folder
73
- Dir.mkdir(@current_path + File::SEPARATOR + decode(params[:new_name]))
74
- success
75
- end
76
-
77
- def copy
78
- session[:source] = @source.map{|s| @current_path + File::SEPARATOR + s}
79
- session[:remove] = false
80
- success
81
- end
82
-
83
- def cut
84
- session[:source] = @source.map{|s| @current_path + File::SEPARATOR + s}
85
- session[:remove] = true
86
- success
87
- end
88
-
89
- def paste
90
- return error if session[:remove].nil? || session[:source].nil?
91
- begin
92
- session[:remove] == true ? FileUtils.mv(session[:source], @current_path) : FileUtils.cp_r(session[:source], @current_path)
93
- session[:remove] = nil
94
- session[:source] = nil
95
- success
96
- rescue => exception
97
- result(exception)
98
- end
99
-
100
- end
101
-
102
- def download
103
- now = Time.new
104
- now = "#{now.to_i}#{now.usec}"
105
- temp_file = FM_TEMP_DIR + File::SEPARATOR + now + '.zip'
106
- FileUtils.cd(@current_path) do |dir|
107
- system "zip -r #{temp_file} #{@source.map{|s| '"' + s + '"'}.join(' ')}"
108
- end
109
- send_file(temp_file)
110
- end
111
-
112
-
113
- def upload
114
- file = params[:upload]
115
- filename = decode(file.original_filename)
116
- File.open(@current_path + File::SEPARATOR + filename, "wb") do |f|
117
- f.write(file.read)
118
- end
119
- to_index
120
- end
121
-
122
-
123
-
124
- #TODO
125
- def adjust_size
126
-
127
- end
128
-
129
- #TODO
130
- def rotate
131
-
132
- end
133
-
134
- #TODO
135
- def unzip
136
- filename = decode(params[:old_name])
137
- FileUtils.cd(@current_path) do |dir|
138
- system "unzip -o #{filename}"
139
- end
140
- to_index
141
- end
142
-
143
- def to_index
144
- redirect_to :action => 'index', :path => encode(@path)
145
- end
146
-
147
- def success
148
- result("SUCCESS")
149
- end
150
-
151
- def error()
152
- result("ERROR")
153
- end
154
-
155
- def result(message)
156
- respond_to do |wants|
157
- wants.js { render :text => message }
158
- end
159
- end
160
-
161
- #methods for view
162
- def method_missing(method_id, *args)
163
- method_id_s = method_id.to_s
164
- if method_id_s[0, 3] == 'is_' && method_id_s[-1, 1] == '?'
165
- instance_eval %{
166
- def #{method_id}(*args)
167
- FM_#{method_id_s[3..-2].upcase}_TYPES.include?(@path_suffix)
168
- end
169
- }
170
- send(method_id, *args)
171
- else
172
- super
173
- end
174
- end
175
-
176
- def transfer(from, to, target)
177
- if FM_ENCODING_TO.nil?
178
- target
179
- else
180
- if target.is_a?(Array)
181
- target.map{|i| to.nil? ? i : Iconv.conv(to, from, i)}
182
- else
183
- Iconv.conv(to, from, target)
184
- end
185
- end
186
- end
187
-
188
- def encode(target)
189
- transfer(FM_ENCODING_FROM, FM_ENCODING_TO, target);
190
- end
191
-
192
- def decode(target)
193
- transfer(FM_ENCODING_TO, FM_ENCODING_FROM, target);
194
- end
195
-
11
+ @lock_path = FM_LOCK_PATH
12
+ @source = params[:source]
13
+ @source = decode(@source) unless @source.nil?
14
+ @path = (params[:path].nil? || ! params[:path].index('..').nil?) ? '' : params[:path]
15
+ @path = '' if @path == '/'
16
+ @path = decode(@path)
17
+ @resource_path = FM_RESOURCES_PATH
18
+ @current_path = @resource_path + @path
19
+ @current_file = (File.directory?(@current_path) ? Dir.new(@current_path) : File.new(@current_path))
20
+ @parent_path = (!@path.blank? && !@path.rindex('/').nil?) ? (@path.rindex('/') == 0 ? '/' : @path[0..(@path.rindex('/')-1)]) : nil
21
+ @path_suffix = @path.index('.').nil? || @path[-1] == '.' ? '' : @path[@path.index('.')+1..-1].downcase
22
+ if File.directory?(@current_path)
23
+ @all_files = Dir.entries(@current_path)
24
+ @directories = @all_files.map{|f| File.directory?(@current_path + File::SEPARATOR + f) ? f : nil}.compact
25
+ @files = @all_files.map{|f| File.directory?(@current_path + File::SEPARATOR + f) ? nil : f}.compact
26
+ @file_total_size = @files.inject(0){|size, f| size + File.size(@current_path + File::SEPARATOR + f)}
27
+ end
28
+ end
29
+
30
+ def tear_off
31
+ @current_file.close unless @current_file.nil?
32
+ end
33
+
34
+ def index
35
+
36
+ end
37
+
38
+ def view
39
+ # respond_to do |wants|
40
+ # wants.js { render :text => File.size(@current_path) > 1000000 ? 'File too big' : File.read(@current_path) }
41
+ # end
42
+ end
43
+
44
+ def file_content
45
+ File.size(@current_path) > 1000000 ? 'File too big' : File.read(@current_path)
46
+ end
47
+
48
+ # def office
49
+ # render :action=>'excel' if is_excel?
50
+ # render :action=>'word' if is_word?
51
+ # render :action=>'ppt' if is_ppt?
52
+ # render :action=>'help' if is_help?
53
+ # end
54
+
55
+ def rename
56
+ old_name = @current_path + File::SEPARATOR + decode(params[:old_name])
57
+ new_name = @current_path + File::SEPARATOR + decode(params[:new_name])
58
+ File.rename(old_name, new_name)
59
+ success
60
+ end
61
+
62
+ def remove
63
+ FileUtils.rm_rf(@source.map{|s| @current_path + File::SEPARATOR + s})
64
+ success
65
+ end
66
+
67
+ def new_file
68
+ File.new(@current_path + File::SEPARATOR + decode(params[:new_name]), 'w')
69
+ success
70
+ end
71
+
72
+ def new_folder
73
+ Dir.mkdir(@current_path + File::SEPARATOR + decode(params[:new_name]))
74
+ success
75
+ end
76
+
77
+ def copy
78
+ session[:source] = @source.map{|s| @current_path + File::SEPARATOR + s}
79
+ session[:remove] = false
80
+ success
81
+ end
82
+
83
+ def cut
84
+ session[:source] = @source.map{|s| @current_path + File::SEPARATOR + s}
85
+ session[:remove] = true
86
+ success
87
+ end
88
+
89
+ def paste
90
+ return error if session[:remove].nil? || session[:source].nil?
91
+ begin
92
+ session[:remove] == true ? FileUtils.mv(session[:source], @current_path) : FileUtils.cp_r(session[:source], @current_path)
93
+ session[:remove] = nil
94
+ session[:source] = nil
95
+ success
96
+ rescue => exception
97
+ result(exception)
98
+ end
99
+
100
+ end
101
+
102
+ def download
103
+ now = Time.new
104
+ now = "#{now.to_i}#{now.usec}"
105
+ temp_file = FM_TEMP_DIR + File::SEPARATOR + now + '.zip'
106
+ FileUtils.cd(@current_path) do |dir|
107
+ system "zip -r #{temp_file} #{@source.map{|s| '"' + s + '"'}.join(' ')}"
108
+ end
109
+ send_file(temp_file)
110
+ end
111
+
112
+
113
+ def upload
114
+ file = params[:upload]
115
+ filename = decode(file.original_filename)
116
+ File.open(@current_path + File::SEPARATOR + filename, "wb") do |f|
117
+ f.write(file.read)
118
+ end
119
+ to_index
120
+ end
121
+
122
+
123
+
124
+ #TODO
125
+ def adjust_size
126
+
127
+ end
128
+
129
+ #TODO
130
+ def rotate
131
+
132
+ end
133
+
134
+ #TODO
135
+ def unzip
136
+ filename = decode(params[:old_name])
137
+ FileUtils.cd(@current_path) do |dir|
138
+ system "unzip -o #{filename}"
139
+ end
140
+ to_index
141
+ end
142
+
143
+ def to_index
144
+ redirect_to :action => 'index', :path => encode(@path)
145
+ end
146
+
147
+ def success
148
+ result("SUCCESS")
149
+ end
150
+
151
+ def error()
152
+ result("ERROR")
153
+ end
154
+
155
+ def result(message)
156
+ respond_to do |wants|
157
+ wants.js { render :text => message }
158
+ end
159
+ end
160
+
161
+ #methods for view
162
+ def method_missing(method_id, *args)
163
+ method_id_s = method_id.to_s
164
+ if method_id_s[0, 3] == 'is_' && method_id_s[-1, 1] == '?'
165
+ instance_eval %{
166
+ def #{method_id}(*args)
167
+ FM_#{method_id_s[3..-2].upcase}_TYPES.include?(@path_suffix)
168
+ end
169
+ }
170
+ send(method_id, *args)
171
+ else
172
+ super
173
+ end
174
+ end
175
+
176
+ def transfer(from, to, target)
177
+ if FM_ENCODING_TO.nil?
178
+ target
179
+ else
180
+ if target.is_a?(Array)
181
+ target.map{|i| to.nil? ? i : Iconv.conv(to, from, i)}
182
+ else
183
+ Iconv.conv(to, from, target)
184
+ end
185
+ end
186
+ end
187
+
188
+ def encode(target)
189
+ transfer(FM_ENCODING_FROM, FM_ENCODING_TO, target);
190
+ end
191
+
192
+ def decode(target)
193
+ transfer(FM_ENCODING_TO, FM_ENCODING_FROM, target);
194
+ end
195
+
196
+ def hsize(size)
197
+ size = size/1024
198
+ if size > 1024
199
+ size = size/1024
200
+ size = format('%0.2f',(size)) + ' mb'
201
+ else
202
+ size = format('%0.2f', size) + ' kb'
203
+ end
204
+ end
205
+
206
+ def get_file_type(file)
207
+ type = File.extname(file)
208
+
209
+ unless type.blank?
210
+ type = type.downcase[1..-1]
211
+ return type if FM_SUPPORT_TYPES.include?(type)
212
+ end
213
+ FM_UNKNOWN_TYPE
214
+ end
215
+
196
216
  end
197
217
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: filemanager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leon Li
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-05-19 00:00:00 +08:00
12
+ date: 2008-05-20 00:00:00 +08:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -23,12 +23,13 @@ extra_rdoc_files: []
23
23
 
24
24
  files:
25
25
  - CHANGELOG
26
+ - filemanager
26
27
  - lib
27
28
  - MIT-LICENSE
28
29
  - pkg
29
- - rails
30
30
  - Rakefile
31
31
  - README
32
+ - README.zh_CN
32
33
  - lib/filemanager
33
34
  - lib/filemanager/controller.rb
34
35
  - lib/filemanager.rb
@@ -41,89 +42,85 @@ files:
41
42
  - lib/locale/win32.rb
42
43
  - lib/locale/win32_table.rb
43
44
  - lib/locale.rb
44
- - rails/app
45
- - rails/app/controllers
46
- - rails/app/controllers/fm
47
- - rails/app/controllers/fm/filemanager_controller.rb
48
- - rails/app/helpers
49
- - rails/app/helpers/fm
50
- - rails/app/helpers/fm/filemanager_helper.rb
51
- - rails/app/views
52
- - rails/app/views/fm
53
- - rails/app/views/fm/filemanager
54
- - rails/app/views/fm/filemanager/index.html.erb
55
- - rails/app/views/fm/filemanager/view.html.erb
56
- - rails/config
57
- - rails/config/filemanager.yml
58
- - rails/fm_temp
59
- - rails/fm_temp/temp
60
- - rails/public
61
- - rails/public/filemanager
62
- - rails/public/filemanager/images
63
- - rails/public/filemanager/images/avi.gif
64
- - rails/public/filemanager/images/box.gif
65
- - rails/public/filemanager/images/bullet.gif
66
- - rails/public/filemanager/images/close.gif
67
- - rails/public/filemanager/images/closelabel.gif
68
- - rails/public/filemanager/images/doc.gif
69
- - rails/public/filemanager/images/donate-button.gif
70
- - rails/public/filemanager/images/download-icon.gif
71
- - rails/public/filemanager/images/folder.gif
72
- - rails/public/filemanager/images/gif.gif
73
- - rails/public/filemanager/images/htm.gif
74
- - rails/public/filemanager/images/html.gif
75
- - rails/public/filemanager/images/image-1.jpg
76
- - rails/public/filemanager/images/image.gif
77
- - rails/public/filemanager/images/jpg.gif
78
- - rails/public/filemanager/images/loading.gif
79
- - rails/public/filemanager/images/mov.gif
80
- - rails/public/filemanager/images/nextlabel.gif
81
- - rails/public/filemanager/images/pdf.gif
82
- - rails/public/filemanager/images/png.gif
83
- - rails/public/filemanager/images/ppt.gif
84
- - rails/public/filemanager/images/prevlabel.gif
85
- - rails/public/filemanager/images/rar.gif
86
- - rails/public/filemanager/images/rm.gif
87
- - rails/public/filemanager/images/rmvb.gif
88
- - rails/public/filemanager/images/separator.gif
89
- - rails/public/filemanager/images/spacer.gif
90
- - rails/public/filemanager/images/swf.gif
91
- - rails/public/filemanager/images/thumb-1.jpg
92
- - rails/public/filemanager/images/tool_copy.gif
93
- - rails/public/filemanager/images/tool_cut.gif
94
- - rails/public/filemanager/images/tool_del.gif
95
- - rails/public/filemanager/images/tool_folder.gif
96
- - rails/public/filemanager/images/tool_imagemanager.gif
97
- - rails/public/filemanager/images/tool_new.gif
98
- - rails/public/filemanager/images/tool_paste.gif
99
- - rails/public/filemanager/images/tool_props.gif
100
- - rails/public/filemanager/images/tool_refresh.gif
101
- - rails/public/filemanager/images/tool_unzip.gif
102
- - rails/public/filemanager/images/tool_upload.gif
103
- - rails/public/filemanager/images/tool_zip.gif
104
- - rails/public/filemanager/images/txt.gif
105
- - rails/public/filemanager/images/unknown.gif
106
- - rails/public/filemanager/images/wmv.gif
107
- - rails/public/filemanager/images/xls.gif
108
- - rails/public/filemanager/images/zip.gif
109
- - rails/public/filemanager/javascripts
110
- - rails/public/filemanager/javascripts/builder.js
111
- - rails/public/filemanager/javascripts/effects.js
112
- - rails/public/filemanager/javascripts/filemanager.js
113
- - rails/public/filemanager/javascripts/lang
114
- - rails/public/filemanager/javascripts/lang/en.js
115
- - rails/public/filemanager/javascripts/lang/zh_CN.js
116
- - rails/public/filemanager/javascripts/lightbox.js
117
- - rails/public/filemanager/javascripts/prototype.js
118
- - rails/public/filemanager/javascripts/prototype_ext.js
119
- - rails/public/filemanager/javascripts/scriptaculous.js
120
- - rails/public/filemanager/javascripts/translate.js
121
- - rails/public/filemanager/stylesheets
122
- - rails/public/filemanager/stylesheets/filelist.css
123
- - rails/public/filemanager/stylesheets/general.css
124
- - rails/public/filemanager/stylesheets/lightbox.css
125
- - rails/public/fm_resources
126
- - rails/public/fm_resources/resources.txt
45
+ - filemanager/app
46
+ - filemanager/app/controllers
47
+ - filemanager/app/controllers/fm
48
+ - filemanager/app/controllers/fm/filemanager_controller.rb
49
+ - filemanager/app/views
50
+ - filemanager/app/views/fm
51
+ - filemanager/app/views/fm/filemanager
52
+ - filemanager/app/views/fm/filemanager/index.html.erb
53
+ - filemanager/app/views/fm/filemanager/view.html.erb
54
+ - filemanager/filemanager.yml
55
+ - filemanager/public
56
+ - filemanager/public/filemanager
57
+ - filemanager/public/filemanager/images
58
+ - filemanager/public/filemanager/images/avi.gif
59
+ - filemanager/public/filemanager/images/box.gif
60
+ - filemanager/public/filemanager/images/bullet.gif
61
+ - filemanager/public/filemanager/images/close.gif
62
+ - filemanager/public/filemanager/images/closelabel.gif
63
+ - filemanager/public/filemanager/images/doc.gif
64
+ - filemanager/public/filemanager/images/donate-button.gif
65
+ - filemanager/public/filemanager/images/download-icon.gif
66
+ - filemanager/public/filemanager/images/folder.gif
67
+ - filemanager/public/filemanager/images/gif.gif
68
+ - filemanager/public/filemanager/images/htm.gif
69
+ - filemanager/public/filemanager/images/html.gif
70
+ - filemanager/public/filemanager/images/image-1.jpg
71
+ - filemanager/public/filemanager/images/image.gif
72
+ - filemanager/public/filemanager/images/jpg.gif
73
+ - filemanager/public/filemanager/images/loading.gif
74
+ - filemanager/public/filemanager/images/mov.gif
75
+ - filemanager/public/filemanager/images/nextlabel.gif
76
+ - filemanager/public/filemanager/images/pdf.gif
77
+ - filemanager/public/filemanager/images/png.gif
78
+ - filemanager/public/filemanager/images/ppt.gif
79
+ - filemanager/public/filemanager/images/prevlabel.gif
80
+ - filemanager/public/filemanager/images/rar.gif
81
+ - filemanager/public/filemanager/images/rm.gif
82
+ - filemanager/public/filemanager/images/rmvb.gif
83
+ - filemanager/public/filemanager/images/separator.gif
84
+ - filemanager/public/filemanager/images/spacer.gif
85
+ - filemanager/public/filemanager/images/swf.gif
86
+ - filemanager/public/filemanager/images/thumb-1.jpg
87
+ - filemanager/public/filemanager/images/tool_copy.gif
88
+ - filemanager/public/filemanager/images/tool_cut.gif
89
+ - filemanager/public/filemanager/images/tool_del.gif
90
+ - filemanager/public/filemanager/images/tool_folder.gif
91
+ - filemanager/public/filemanager/images/tool_imagemanager.gif
92
+ - filemanager/public/filemanager/images/tool_new.gif
93
+ - filemanager/public/filemanager/images/tool_paste.gif
94
+ - filemanager/public/filemanager/images/tool_props.gif
95
+ - filemanager/public/filemanager/images/tool_refresh.gif
96
+ - filemanager/public/filemanager/images/tool_unzip.gif
97
+ - filemanager/public/filemanager/images/tool_upload.gif
98
+ - filemanager/public/filemanager/images/tool_zip.gif
99
+ - filemanager/public/filemanager/images/txt.gif
100
+ - filemanager/public/filemanager/images/unknown.gif
101
+ - filemanager/public/filemanager/images/wmv.gif
102
+ - filemanager/public/filemanager/images/xls.gif
103
+ - filemanager/public/filemanager/images/zip.gif
104
+ - filemanager/public/filemanager/javascripts
105
+ - filemanager/public/filemanager/javascripts/builder.js
106
+ - filemanager/public/filemanager/javascripts/effects.js
107
+ - filemanager/public/filemanager/javascripts/filemanager.js
108
+ - filemanager/public/filemanager/javascripts/lang
109
+ - filemanager/public/filemanager/javascripts/lang/en.js
110
+ - filemanager/public/filemanager/javascripts/lang/zh_CN.js
111
+ - filemanager/public/filemanager/javascripts/lightbox.js
112
+ - filemanager/public/filemanager/javascripts/prototype.js
113
+ - filemanager/public/filemanager/javascripts/prototype_ext.js
114
+ - filemanager/public/filemanager/javascripts/scriptaculous.js
115
+ - filemanager/public/filemanager/javascripts/translate.js
116
+ - filemanager/public/filemanager/resources
117
+ - filemanager/public/filemanager/resources/resources.txt
118
+ - filemanager/public/filemanager/stylesheets
119
+ - filemanager/public/filemanager/stylesheets/filelist.css
120
+ - filemanager/public/filemanager/stylesheets/general.css
121
+ - filemanager/public/filemanager/stylesheets/lightbox.css
122
+ - filemanager/temp
123
+ - filemanager/temp/temp
127
124
  has_rdoc: false
128
125
  homepage: http://filemanager.rubyforge.org/
129
126
  post_install_message:
@@ -1,61 +0,0 @@
1
- =begin
2
- filemanager_helper.rb
3
- Copyright (C) 2008 Leon Li
4
-
5
- You may redistribute it and/or modify it under the same
6
- license terms as Ruby.
7
- =end
8
-
9
- module Fm
10
- module FilemanagerHelper
11
-
12
- def get_file_type(file)
13
- type = File.extname(file)
14
-
15
- unless type.blank?
16
- type = type.downcase[1..-1]
17
- return type if FM_SUPPORT_TYPES.include?(type)
18
- end
19
- FM_UNKNOWN_TYPE
20
- end
21
-
22
- def get_file_content(path, to=FM_ENCODING_TO, from=FM_ENCODING_FROM)
23
- if File.new(path).size > 1000000
24
- 'File too big'
25
- else
26
- str = File.read(path)
27
- to.nil? ? str : Iconv.conv(to, from, str)
28
- end
29
- end
30
-
31
- def transfer(from, to, target)
32
- if FM_ENCODING_TO.nil?
33
- target
34
- else
35
- if target.is_a?(Array)
36
- target.map{|i| to.nil? ? i : Iconv.conv(to, from, i)}
37
- else
38
- Iconv.conv(to, from, target)
39
- end
40
- end
41
- end
42
-
43
- def encode(target)
44
- transfer(FM_ENCODING_FROM, FM_ENCODING_TO, target);
45
- end
46
-
47
- def decode(target)
48
- transfer(FM_ENCODING_TO, FM_ENCODING_FROM, target);
49
- end
50
-
51
- def hsize(size)
52
- size = size/1024
53
- if size > 1024
54
- size = size/1024
55
- size = format('%0.2f',(size)) + ' mb'
56
- else
57
- size = format('%0.2f', size) + ' kb'
58
- end
59
- end
60
- end
61
- end