filemanager 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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