fcfinder 0.1.1
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.
- checksums.yaml +7 -0
- data/.gitignore +10 -0
- data/.travis.yml +3 -0
- data/CODE_OF_CONDUCT.md +13 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/Rakefile +1 -0
- data/app/assets/images/fcfinder/about.png +0 -0
- data/app/assets/images/fcfinder/copy.png +0 -0
- data/app/assets/images/fcfinder/cut.png +0 -0
- data/app/assets/images/fcfinder/date_sorter.png +0 -0
- data/app/assets/images/fcfinder/delete.png +0 -0
- data/app/assets/images/fcfinder/directory-max.png +0 -0
- data/app/assets/images/fcfinder/directory.png +0 -0
- data/app/assets/images/fcfinder/directory_mini.png +0 -0
- data/app/assets/images/fcfinder/download.png +0 -0
- data/app/assets/images/fcfinder/duplicate.png +0 -0
- data/app/assets/images/fcfinder/edit.png +0 -0
- data/app/assets/images/fcfinder/files/7z.png +0 -0
- data/app/assets/images/fcfinder/files/Untitled-24.png +0 -0
- data/app/assets/images/fcfinder/files/avi.png +0 -0
- data/app/assets/images/fcfinder/files/bmp.png +0 -0
- data/app/assets/images/fcfinder/files/bz.png +0 -0
- data/app/assets/images/fcfinder/files/bz2.png +0 -0
- data/app/assets/images/fcfinder/files/css.png +0 -0
- data/app/assets/images/fcfinder/files/doc.png +0 -0
- data/app/assets/images/fcfinder/files/docx.png +0 -0
- data/app/assets/images/fcfinder/files/dv.png +0 -0
- data/app/assets/images/fcfinder/files/flv.png +0 -0
- data/app/assets/images/fcfinder/files/gif.png +0 -0
- data/app/assets/images/fcfinder/files/gz.png +0 -0
- data/app/assets/images/fcfinder/files/htm.png +0 -0
- data/app/assets/images/fcfinder/files/html.png +0 -0
- data/app/assets/images/fcfinder/files/ico.png +0 -0
- data/app/assets/images/fcfinder/files/jpeg.png +0 -0
- data/app/assets/images/fcfinder/files/jpg.png +0 -0
- data/app/assets/images/fcfinder/files/js.png +0 -0
- data/app/assets/images/fcfinder/files/mid.png +0 -0
- data/app/assets/images/fcfinder/files/mkv.png +0 -0
- data/app/assets/images/fcfinder/files/mov.png +0 -0
- data/app/assets/images/fcfinder/files/mp3.png +0 -0
- data/app/assets/images/fcfinder/files/mp4.png +0 -0
- data/app/assets/images/fcfinder/files/mp4a.png +0 -0
- data/app/assets/images/fcfinder/files/mpg.png +0 -0
- data/app/assets/images/fcfinder/files/ogg.png +0 -0
- data/app/assets/images/fcfinder/files/other.png +0 -0
- data/app/assets/images/fcfinder/files/pdf.png +0 -0
- data/app/assets/images/fcfinder/files/php.png +0 -0
- data/app/assets/images/fcfinder/files/png.png +0 -0
- data/app/assets/images/fcfinder/files/pps.png +0 -0
- data/app/assets/images/fcfinder/files/ppt.png +0 -0
- data/app/assets/images/fcfinder/files/pptx.png +0 -0
- data/app/assets/images/fcfinder/files/psd.png +0 -0
- data/app/assets/images/fcfinder/files/rar.png +0 -0
- data/app/assets/images/fcfinder/files/rb.png +0 -0
- data/app/assets/images/fcfinder/files/swf.png +0 -0
- data/app/assets/images/fcfinder/files/tar.png +0 -0
- data/app/assets/images/fcfinder/files/tbz.png +0 -0
- data/app/assets/images/fcfinder/files/tga.png +0 -0
- data/app/assets/images/fcfinder/files/tgz.png +0 -0
- data/app/assets/images/fcfinder/files/tif.png +0 -0
- data/app/assets/images/fcfinder/files/tiff.png +0 -0
- data/app/assets/images/fcfinder/files/txt.png +0 -0
- data/app/assets/images/fcfinder/files/wav.png +0 -0
- data/app/assets/images/fcfinder/files/wm.png +0 -0
- data/app/assets/images/fcfinder/files/wma.png +0 -0
- data/app/assets/images/fcfinder/files/xls.png +0 -0
- data/app/assets/images/fcfinder/files/xlsx.png +0 -0
- data/app/assets/images/fcfinder/files/xml.png +0 -0
- data/app/assets/images/fcfinder/files/zip.png +0 -0
- data/app/assets/images/fcfinder/finder.png +0 -0
- data/app/assets/images/fcfinder/icon_view.png +0 -0
- data/app/assets/images/fcfinder/info.png +0 -0
- data/app/assets/images/fcfinder/info2.png +0 -0
- data/app/assets/images/fcfinder/kind_sorter.png +0 -0
- data/app/assets/images/fcfinder/list_view.png +0 -0
- data/app/assets/images/fcfinder/name_sorter.png +0 -0
- data/app/assets/images/fcfinder/new_folder.png +0 -0
- data/app/assets/images/fcfinder/paste.png +0 -0
- data/app/assets/images/fcfinder/preview.png +0 -0
- data/app/assets/images/fcfinder/refresh.png +0 -0
- data/app/assets/images/fcfinder/rename.png +0 -0
- data/app/assets/images/fcfinder/settings.png +0 -0
- data/app/assets/images/fcfinder/show_date.png +0 -0
- data/app/assets/images/fcfinder/show_size.png +0 -0
- data/app/assets/images/fcfinder/size_sorter.png +0 -0
- data/app/assets/images/fcfinder/sort.png +0 -0
- data/app/assets/images/fcfinder/tree/folder.png +0 -0
- data/app/assets/images/fcfinder/tree/loader.gif +0 -0
- data/app/assets/images/fcfinder/tree/minus.png +0 -0
- data/app/assets/images/fcfinder/tree/plus.png +0 -0
- data/app/assets/images/fcfinder/up_folder.png +0 -0
- data/app/assets/images/fcfinder/upload.png +0 -0
- data/app/assets/javascripts/fcfinder.js +1697 -0
- data/app/assets/stylesheets/fcfinder.css +347 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/fcfinder.gemspec +31 -0
- data/lib/fcfinder.rb +7 -0
- data/lib/fcfinder/connector.rb +612 -0
- data/lib/fcfinder/engine.rb +4 -0
- data/lib/fcfinder/version.rb +3 -0
- data/lib/fcfinder/zip_file_generator.rb +47 -0
- metadata +203 -0
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
@import url(http://fonts.googleapis.com/css?family=Roboto:400,300&subset=latin,latin-ext);
|
|
2
|
+
* {outline: none; position: relative;
|
|
3
|
+
/*font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif;*/
|
|
4
|
+
font-family: 'Roboto', Trebuchet MS, Tahoma, Verdana, Arial, sans-serif;
|
|
5
|
+
font-weight: 300;
|
|
6
|
+
}
|
|
7
|
+
html, body{margin:0px; padding: 0px; height: 100%; min-height: 100%; font-size: 100%;}
|
|
8
|
+
#fcfinder { background: #dddddd; max-width: 100%; height: 100%; position: relative; }
|
|
9
|
+
#fcfinder .left { height:94%; border: 1px solid #c0c0c0; background: #f0f0f0; width: 25%; min-width: 135px; margin:5px 0 0 5px; border-radius: 5px; float: left; overflow: auto; }
|
|
10
|
+
#fcfinder .left #all_folders { width: 100%; display: flex;}
|
|
11
|
+
#fcfinder .right { height:94%; margin: 5px 0px 0px 0px; float: left; }
|
|
12
|
+
#fcfinder .right ul.widget {height:35px; width: 99%; margin:4px 0px 0px 0px; padding:0px 0px 0px 5px; font-size: 15px; }
|
|
13
|
+
#fcfinder .right ul.widget li { float: left; list-style: none; margin-right:10px; }
|
|
14
|
+
#fcfinder .right ul.widget li a{
|
|
15
|
+
border-radius: 32px; width:32px; height: 32px; display: block; font-size: 0%;
|
|
16
|
+
position:relative;
|
|
17
|
+
overflow:hidden;
|
|
18
|
+
-webkit-transition: all 0.2s ease;
|
|
19
|
+
-moz-transition: all 0.2s ease;
|
|
20
|
+
-o-transition: all 0.2s ease;
|
|
21
|
+
transition: all 0.2s ease;
|
|
22
|
+
z-index:0;
|
|
23
|
+
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26);
|
|
24
|
+
-webkit-box-shadow:rgba(0, 0, 0, 0.26) 0 2px 5px 0;
|
|
25
|
+
-moz-box-shadow:rgba(0, 0, 0, 0.26) 0 2px 5px 0;
|
|
26
|
+
}
|
|
27
|
+
#fcfinder .right ul.widget li a:hover{
|
|
28
|
+
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.80);
|
|
29
|
+
-webkit-box-shadow:rgba(0, 0, 0, 0.80) 0 2px 5px 0;
|
|
30
|
+
-moz-box-shadow:rgba(0, 0, 0, 0.80) 0 2px 5px 0;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
#fcfinder .ink {display: block; position: absolute;background:rgba(255, 255, 255, 0.3);border-radius: 100%;-webkit-transform:scale(0);-moz-transform:scale(0);-o-transform:scale(0);transform:scale(0);}
|
|
35
|
+
#fcfinder .animate {-webkit-animation:ripple 0.65s linear;-moz-animation:ripple 0.65s linear;-ms-animation:ripple 0.65s linear;-o-animation:ripple 0.65s linear;animation:ripple 0.65s linear;}
|
|
36
|
+
@-webkit-keyframes ripple {100% {opacity: 0; -webkit-transform: scale(2.5);}}
|
|
37
|
+
@-moz-keyframes ripple {100% {opacity: 0; -moz-transform: scale(2.5);}}
|
|
38
|
+
@-o-keyframes ripple {100% {opacity: 0; -o-transform: scale(2.5);}}
|
|
39
|
+
@keyframes ripple {100% {opacity: 0; transform: scale(2.5);}}
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
/*#fcfinder .right ul.widget li a:hover { border-radius: 5px; border: 1px solid #ccc;}*/
|
|
43
|
+
|
|
44
|
+
#fcfinder .right ul.widget li a.up_folder { background: url("./fcfinder/up_folder.png") no-repeat; }
|
|
45
|
+
#fcfinder .right ul.widget li a.upload { background: url("./fcfinder/upload.png") no-repeat; }
|
|
46
|
+
#fcfinder .right ul.widget li a.refresh { background: url("./fcfinder/refresh.png") no-repeat; }
|
|
47
|
+
#fcfinder .right ul.widget li a.settings { background: url("./fcfinder/settings.png") no-repeat; }
|
|
48
|
+
#fcfinder .right ul.widget li a.new_folder{ background: url("./fcfinder/new_folder.png") no-repeat; }
|
|
49
|
+
#fcfinder .right ul.widget li a.download{ background: url("./fcfinder/download.png") no-repeat; }
|
|
50
|
+
|
|
51
|
+
#fcfinder .right ul.widget li a.info{ background: url("./fcfinder/info.png") no-repeat; }
|
|
52
|
+
#fcfinder .right ul.widget li a.preview{ background: url("./fcfinder/preview.png") no-repeat; }
|
|
53
|
+
#fcfinder .right ul.widget li a.edit{ background: url("./fcfinder/edit.png") no-repeat; }
|
|
54
|
+
#fcfinder .right ul.widget li a.cut{ background: url("./fcfinder/cut.png") no-repeat; }
|
|
55
|
+
#fcfinder .right ul.widget li a.copy{ background: url("./fcfinder/copy.png") no-repeat; }
|
|
56
|
+
#fcfinder .right ul.widget li a.paste{ background: url("./fcfinder/paste.png") no-repeat; }
|
|
57
|
+
#fcfinder .right ul.widget li a.duplicate{ background: url("./fcfinder/duplicate.png") no-repeat; }
|
|
58
|
+
#fcfinder .right ul.widget li a.rename{ background: url("./fcfinder/rename.png") no-repeat; }
|
|
59
|
+
#fcfinder .right ul.widget li a.delete{ background: url("./fcfinder/delete.png") no-repeat; }
|
|
60
|
+
#fcfinder .right ul.widget li a.list_view{ background: url("./fcfinder/list_view.png") no-repeat; }
|
|
61
|
+
#fcfinder .right ul.widget li a.icon_view{ background: url("./fcfinder/icon_view.png") no-repeat; }
|
|
62
|
+
#fcfinder .right ul.widget li a.show_date{ background: url("./fcfinder/show_date.png") no-repeat; }
|
|
63
|
+
#fcfinder .right ul.widget li a.show_size{ background: url("./fcfinder/show_size.png") no-repeat; }
|
|
64
|
+
#fcfinder .right ul.widget li a.sort{ background: url("./fcfinder/sort.png") no-repeat; }
|
|
65
|
+
#fcfinder .right ul.widget li a.name_sorter{ background: url("./fcfinder/name_sorter.png") no-repeat; }
|
|
66
|
+
#fcfinder .right ul.widget li a.size_sorter{ background: url("./fcfinder/size_sorter.png") no-repeat; }
|
|
67
|
+
#fcfinder .right ul.widget li a.date_sorter{ background: url("./fcfinder/date_sorter.png") no-repeat; }
|
|
68
|
+
#fcfinder .right ul.widget li a.kind_sorter{ background: url("./fcfinder/kind_sorter.png") no-repeat; }
|
|
69
|
+
#fcfinder .right ul.widget li a.about{ background: url("./fcfinder/about.png") no-repeat; }
|
|
70
|
+
|
|
71
|
+
#fcfinder .right ul.widget li a.passive {
|
|
72
|
+
-webkit-filter: grayscale(100%);
|
|
73
|
+
filter: grayscale(100%);}
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
#fcfinder .right ul.widget div { position: absolute; padding:0; margin:0; z-index:1; display: none; padding-top:8px; margin-left: -10px; }
|
|
80
|
+
#fcfinder .right ul.widget li:hover div { display: block; }
|
|
81
|
+
|
|
82
|
+
#fcfinder .right ul.widget div ul { padding:0; margin:0px; background: #DDD; clear: both; float: left; padding-left:3px;border-radius:0px 0px 5px 5px; border: 2px solid #CCC; border-top: 0px none;}
|
|
83
|
+
#fcfinder .right ul.widget li div ul li { clear: both; margin-bottom: 8px; padding:0; text-align: center; margin-left:5px;}
|
|
84
|
+
#fcfinder .right ul.widget li div ul li:hover a {
|
|
85
|
+
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.80);
|
|
86
|
+
-webkit-box-shadow:rgba(0, 0, 0, 0.80) 0 2px 5px 0;
|
|
87
|
+
-moz-box-shadow:rgba(0, 0, 0, 0.80) 0 2px 5px 0;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
/*#fcfinder .right .widget {height:35px; border: 1px solid #c0c0c0; background: #f0f0f0; width: 99%; margin:0px 0px 0 5px; border-radius: 5px;}*/
|
|
93
|
+
#fcfinder .right ul.wrapper {height:2%; border: 1px solid #c0c0c0; background: #f0f0f0; margin:5px 0px 0 5px; border-radius: 5px; list-style: none; padding:0px; overflow:auto;}
|
|
94
|
+
|
|
95
|
+
#fcfinder .right ul.wrapper.list_view {}
|
|
96
|
+
#fcfinder .right ul.wrapper.list_view li div { display: flex; float: left; width:100%; height: 35px !important; padding: 0; margin: 0; border: 0; background-size: 24px 24px !important; background-position: 5px 5px !important;}
|
|
97
|
+
#fcfinder .right ul.wrapper.list_view li div.directory { background: url("./fcfinder/directory_mini.png") 5px 5px no-repeat;}
|
|
98
|
+
#fcfinder .right ul.wrapper.list_view li div span.file_name { font-size:13px; overflow: hidden; float: left; margin: 0; padding:8px 5px 0 35px; width: 200px; text-align: left;}
|
|
99
|
+
#fcfinder .right ul.wrapper.list_view li div span.file_name input { width:95%; padding: 0 2px;font-size: 12px;height: 15px;border-radius: 5px;display: block;border: 1px solid #999;}
|
|
100
|
+
#fcfinder .right ul.wrapper.list_view li div span.file_size { float: left; font-size: 12px; color: #666; display:block !important;; margin: 0; padding: 8px 5px 0 10px; text-align:left; width: 100px;}
|
|
101
|
+
#fcfinder .right ul.wrapper.list_view li div span.file_date { float: left; font-size: 12px; color: #666; display:block !important; margin: 0; padding: 8px 5px 0 10px; text-align:left; width: 180px;}
|
|
102
|
+
#fcfinder .right ul.wrapper.list_view li div:hover {box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); color: #fff; -webkit-box-shadow:rgba(0, 0, 0, 0.26) 0 2px 5px 0;-moz-box-shadow:rgba(0, 0, 0, 0.26) 0 2px 5px 0; background-color:#1E92CC !important; border: 0px none;border-radius: 0;}
|
|
103
|
+
#fcfinder .right ul.wrapper.list_view li div.active {box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); color: #fff; -webkit-box-shadow:rgba(0, 0, 0, 0.26) 0 2px 5px 0;-moz-box-shadow:rgba(0, 0, 0, 0.26) 0 2px 5px 0; background-color:#1E92CC !important; border: 0px none; border-radius: 0;}
|
|
104
|
+
#fcfinder .right ul.wrapper.list_view li div.list_head { width: 100%; background: #ddd; color: #000; font-size: 14px; border-radius: 0 !important; border-bottom: 1px solid #ccc; cursor: default; }
|
|
105
|
+
#fcfinder .right ul.wrapper.list_view li div.list_head:hover { color:#000; background-color:#ddd !important; box-shadow:none !important; -webkit-box-shadow:none !important;-moz-box-shadow:none !important; border-bottom: 1px solid #ccc;}
|
|
106
|
+
#fcfinder .right ul.wrapper.list_view li div.list_head span.file_name { color: #000; font-size: 13px; width:200px; text-align: left;}
|
|
107
|
+
#fcfinder .right ul.wrapper.list_view li div.list_head span.file_size { color: #000; font-size: 13px; width:100px; text-align: left;}
|
|
108
|
+
#fcfinder .right ul.wrapper.list_view li div.list_head span.file_date { color: #000; font-size: 13px; width:180px; text-align: left;}
|
|
109
|
+
/*----*/
|
|
110
|
+
#fcfinder .right ul.wrapper.icon_view {}
|
|
111
|
+
|
|
112
|
+
#fcfinder .right ul.wrapper li { margin:0px; display:block; width: 100%;}
|
|
113
|
+
#fcfinder .right ul.wrapper li div { border: 2px solid transparent; position: relative; font-size:13px; text-align: center; float: left; margin:5px; padding: 5px; width:75px; height:80px;/*line-height: 145px;*/ overflow: hidden; display: block; outline: none; cursor: pointer; border-radius: 5px; max-height: 128px; }
|
|
114
|
+
|
|
115
|
+
#fcfinder .right ul.wrapper li div.directory { background: url("./fcfinder/directory.png") center 5px no-repeat; }
|
|
116
|
+
#fcfinder .right ul.wrapper li div.other { background: url("./fcfinder/files/other.png") center 5px no-repeat; }
|
|
117
|
+
/*---*/
|
|
118
|
+
#fcfinder .dialog .file_bg.seven_z,#fcfinder .right ul.wrapper li div.seven_z { background: url("./fcfinder/files/7z.png") center 5px no-repeat; }
|
|
119
|
+
#fcfinder .dialog .file_bg.avi,#fcfinder .right ul.wrapper li div.avi { background: url("./fcfinder/files/avi.png") center 5px no-repeat; }
|
|
120
|
+
#fcfinder .dialog .file_bg.bmp,#fcfinder .right ul.wrapper li div.bmp{ background: url("./fcfinder/files/bmp.png") center 5px no-repeat; }
|
|
121
|
+
#fcfinder .dialog .file_bg.bz,#fcfinder .right ul.wrapper li div.bz { background: url("./fcfinder/files/bz.png") center 5px no-repeat; }
|
|
122
|
+
#fcfinder .dialog .file_bg.bz2,#fcfinder .right ul.wrapper li div.bz2 { background: url("./fcfinder/files/bz2.png") center 5px no-repeat; }
|
|
123
|
+
#fcfinder .dialog .file_bg.css,#fcfinder .right ul.wrapper li div.css { background: url("./fcfinder/files/css.png") center 5px no-repeat; }
|
|
124
|
+
#fcfinder .dialog .file_bg.doc,#fcfinder .right ul.wrapper li div.doc { background: url("./fcfinder/files/doc.png") center 5px no-repeat; }
|
|
125
|
+
#fcfinder .dialog .file_bg.docx,#fcfinder .right ul.wrapper li div.docx { background: url("./fcfinder/files/docx.png") center 5px no-repeat; }
|
|
126
|
+
#fcfinder .dialog .file_bg.dv,#fcfinder .right ul.wrapper li div.dv { background: url("./fcfinder/files/dv.png") center 5px no-repeat; }
|
|
127
|
+
#fcfinder .dialog .file_bg.flv,#fcfinder .right ul.wrapper li div.flv { background: url("./fcfinder/files/flv.png") center 5px no-repeat; }
|
|
128
|
+
#fcfinder .dialog .file_bg.gif,#fcfinder .right ul.wrapper li div.gif { background: url("./fcfinder/files/gif.png") center 5px no-repeat; }
|
|
129
|
+
#fcfinder .dialog .file_bg.gz,#fcfinder .right ul.wrapper li div.gz { background: url("./fcfinder/files/gz.png") center 5px no-repeat; }
|
|
130
|
+
#fcfinder .dialog .file_bg.html,#fcfinder .right ul.wrapper li div.html { background: url("./fcfinder/files/html.png") center 5px no-repeat; }
|
|
131
|
+
#fcfinder .dialog .file_bg.htm,#fcfinder .right ul.wrapper li div.htm { background: url("./fcfinder/files/htm.png") center 5px no-repeat; }
|
|
132
|
+
#fcfinder .dialog .file_bg.ico,#fcfinder .right ul.wrapper li div.ico { background: url("./fcfinder/files/ico.png") center 5px no-repeat; }
|
|
133
|
+
#fcfinder .dialog .file_bg.jpeg,#fcfinder .right ul.wrapper li div.jpeg { background: url("./fcfinder/files/jpeg.png") center 5px no-repeat; }
|
|
134
|
+
#fcfinder .dialog .file_bg.jpg,#fcfinder .right ul.wrapper li div.jpg { background: url("./fcfinder/files/jpg.png") center 5px no-repeat; }
|
|
135
|
+
#fcfinder .dialog .file_bg.js,#fcfinder .right ul.wrapper li div.js { background: url("./fcfinder/files/js.png") center 5px no-repeat; }
|
|
136
|
+
#fcfinder .dialog .file_bg.mid,#fcfinder .right ul.wrapper li div.mid { background: url("./fcfinder/files/mid.png") center 5px no-repeat; }
|
|
137
|
+
#fcfinder .dialog .file_bg.mkv,#fcfinder .right ul.wrapper li div.mkv { background: url("./fcfinder/files/mkv.png") center 5px no-repeat; }
|
|
138
|
+
#fcfinder .dialog .file_bg.mov,#fcfinder .right ul.wrapper li div.mov { background: url("./fcfinder/files/mov.png") center 5px no-repeat; }
|
|
139
|
+
#fcfinder .dialog .file_bg.mp3,#fcfinder .right ul.wrapper li div.mp3 { background: url("./fcfinder/files/mp3.png") center 5px no-repeat; }
|
|
140
|
+
#fcfinder .dialog .file_bg.mp4,#fcfinder .right ul.wrapper li div.mp4 { background: url("./fcfinder/files/mp4.png") center 5px no-repeat; }
|
|
141
|
+
#fcfinder .dialog .file_bg.mp4a,#fcfinder .right ul.wrapper li div.mp4a { background: url("./fcfinder/files/mp4a.png") center 5px no-repeat; }
|
|
142
|
+
#fcfinder .dialog .file_bg.mpg,#fcfinder .right ul.wrapper li div.mpg { background: url("./fcfinder/files/mpg.png") center 5px no-repeat; }
|
|
143
|
+
#fcfinder .dialog .file_bg.ogg,#fcfinder .right ul.wrapper li div.ogg { background: url("./fcfinder/files/ogg.png") center 5px no-repeat; }
|
|
144
|
+
#fcfinder .dialog .file_bg.pdf,#fcfinder .right ul.wrapper li div.pdf { background: url("./fcfinder/files/pdf.png") center 5px no-repeat; }
|
|
145
|
+
#fcfinder .dialog .file_bg.php,#fcfinder .right ul.wrapper li div.php { background: url("./fcfinder/files/php.png") center 5px no-repeat; }
|
|
146
|
+
#fcfinder .dialog .file_bg.png,#fcfinder .right ul.wrapper li div.png { background: url("./fcfinder/files/png.png") center 5px no-repeat; }
|
|
147
|
+
#fcfinder .dialog .file_bg.pps,#fcfinder .right ul.wrapper li div.pps { background: url("./fcfinder/files/pps.png") center 5px no-repeat; }
|
|
148
|
+
#fcfinder .dialog .file_bg.ppt,#fcfinder .right ul.wrapper li div.ppt { background: url("./fcfinder/files/ppt.png") center 5px no-repeat; }
|
|
149
|
+
#fcfinder .dialog .file_bg.psd,#fcfinder .right ul.wrapper li div.psd { background: url("./fcfinder/files/psd.png") center 5px no-repeat; }
|
|
150
|
+
#fcfinder .dialog .file_bg.pptx,#fcfinder .right ul.wrapper li div.pptx { background: url("./fcfinder/files/pptx.png") center 5px no-repeat; }
|
|
151
|
+
#fcfinder .dialog .file_bg.rar,#fcfinder .right ul.wrapper li div.rar { background: url("./fcfinder/files/rar.png") center 5px no-repeat; }
|
|
152
|
+
#fcfinder .dialog .file_bg.rb,#fcfinder .right ul.wrapper li div.rb { background: url("./fcfinder/files/rb.png") center 5px no-repeat; }
|
|
153
|
+
#fcfinder .dialog .file_bg.swf,#fcfinder .right ul.wrapper li div.swf { background: url("./fcfinder/files/swf.png") center 5px no-repeat; }
|
|
154
|
+
#fcfinder .dialog .file_bg.tar,#fcfinder .right ul.wrapper li div.tar { background: url("./fcfinder/files/tar.png") center 5px no-repeat; }
|
|
155
|
+
#fcfinder .dialog .file_bg.tbz,#fcfinder .right ul.wrapper li div.tbz { background: url("./fcfinder/files/tbgz.png") center 5px no-repeat; }
|
|
156
|
+
#fcfinder .dialog .file_bg.tga,#fcfinder .right ul.wrapper li div.tga { background: url("./fcfinder/files/tga.png") center 5px no-repeat; }
|
|
157
|
+
#fcfinder .dialog .file_bg.tgz,#fcfinder .right ul.wrapper li div.tgz { background: url("./fcfinder/files/tgz.png") center 5px no-repeat; }
|
|
158
|
+
#fcfinder .dialog .file_bg.tif,#fcfinder .right ul.wrapper li div.tif { background: url("./fcfinder/files/tif.png") center 5px no-repeat; }
|
|
159
|
+
#fcfinder .dialog .file_bg.tiff,#fcfinder .right ul.wrapper li div.tiff { background: url("./fcfinder/files/tiff.png") center 5px no-repeat; }
|
|
160
|
+
#fcfinder .dialog .file_bg.txt,#fcfinder .right ul.wrapper li div.txt { background: url("./fcfinder/files/txt.png") center 5px no-repeat; }
|
|
161
|
+
#fcfinder .dialog .file_bg.mpeg,#fcfinder .right ul.wrapper li div.mpeg { background: url("./fcfinder/files/mpeg.png") center 5px no-repeat; }
|
|
162
|
+
#fcfinder .dialog .file_bg.wav,#fcfinder .right ul.wrapper li div.wav { background: url("./fcfinder/files/wav.png") center 5px no-repeat; }
|
|
163
|
+
#fcfinder .dialog .file_bg.wm,#fcfinder .right ul.wrapper li div.wm { background: url("./fcfinder/files/wm.png") center 5px no-repeat; }
|
|
164
|
+
#fcfinder .dialog .file_bg.wma,#fcfinder .right ul.wrapper li div.wma { background: url("./fcfinder/files/wma.png") center 5px no-repeat; }
|
|
165
|
+
#fcfinder .dialog .file_bg.xls,#fcfinder .right ul.wrapper li div.xls { background: url("./fcfinder/files/xls.png") center 5px no-repeat; }
|
|
166
|
+
#fcfinder .dialog .file_bg.xlsx,#fcfinder .right ul.wrapper li div.xlsx { background: url("./fcfinder/files/xlsx.png") center 5px no-repeat; }
|
|
167
|
+
#fcfinder .dialog .file_bg.xml,#fcfinder .right ul.wrapper li div.xml { background: url("./fcfinder/files/xml.png") center 5px no-repeat; }
|
|
168
|
+
#fcfinder .dialog .file_bg.zip,#fcfinder .right ul.wrapper li div.zip { background: url("./fcfinder/files/zip.png") center 5px no-repeat; }
|
|
169
|
+
/*--*/
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
#fcfinder .right ul.wrapper li div:hover {box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); color: #fff; -webkit-box-shadow:rgba(0, 0, 0, 0.26) 0 2px 5px 0;-moz-box-shadow:rgba(0, 0, 0, 0.26) 0 2px 5px 0; background-color:#1E92CC !important; border: 2px solid #216DCC;}
|
|
175
|
+
#fcfinder .right ul.wrapper li div.active {box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); color: #fff; -webkit-box-shadow:rgba(0, 0, 0, 0.26) 0 2px 5px 0;-moz-box-shadow:rgba(0, 0, 0, 0.26) 0 2px 5px 0; background-color:#1E92CC !important; border: 2px solid #216DCC;}
|
|
176
|
+
#fcfinder .right ul.wrapper li div.cutting { opacity: 0.5;}
|
|
177
|
+
#fcfinder .right ul.wrapper li div span.file_name { font-size:13px; text-align: center; display: block; margin-top: 64px; height: 16px; overflow: hidden;}
|
|
178
|
+
#fcfinder .right ul.wrapper li div span.file_name input { width: 69px;padding: 0 2px;font-size: 12px;height: 14px;border-radius: 5px;display: block;border: 1px solid #999;}
|
|
179
|
+
#fcfinder .right ul.wrapper li div span.file_date,
|
|
180
|
+
#fcfinder .right ul.wrapper li div span.file_size { font-size: 12px; color: #666; display: none;}
|
|
181
|
+
|
|
182
|
+
#fcfinder .right ul.wrapper li div:hover span.file_date,
|
|
183
|
+
#fcfinder .right ul.wrapper li div:hover span.file_size ,
|
|
184
|
+
#fcfinder .right ul.wrapper li div.active span.file_date,
|
|
185
|
+
#fcfinder .right ul.wrapper li div.active span.file_size {color: #ddd;}
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
#fcfinder .right ul.wrapper li div.image_file { background: none; background-size: 80px 60px;}
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
#fcfinder ul.bottom { margin: 0; padding: 0; list-style: none; position: fixed;left: 10px;font-size: 13px;color: #555;bottom: 5px; }
|
|
196
|
+
#fcfinder .left ul.folders { list-style: none; margin:10px 10px; padding: 0px; font-size: 14px; }
|
|
197
|
+
#fcfinder .left ul.folders li ul.folders { margin-top:4px; margin-left:20px; margin-bottom: 0px;}
|
|
198
|
+
#fcfinder .left ul.folders li { margin:1px 0px;}
|
|
199
|
+
#fcfinder .left ul.folders li a { text-decoration: none; color: #555; display: flex;}
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
#fcfinder .left ul.folders li a span.braca {width: 16px; height: 16px; padding:3px 0px 0px 0px; float: left;}
|
|
204
|
+
#fcfinder .left ul.folders li a span.braca.closed { background: url("./fcfinder/tree/plus.png") no-repeat left center;}
|
|
205
|
+
#fcfinder .left ul.folders li a span.braca.opened {background: url("./fcfinder/tree/minus.png") no-repeat left center;}
|
|
206
|
+
|
|
207
|
+
#fcfinder .left ul.folders li a span.folder {border:1px solid transparent; background: url("./fcfinder/tree/folder.png") no-repeat 2px center; padding:1px 10px 2px 22px; margin-left: 2px;
|
|
208
|
+
position:relative;
|
|
209
|
+
overflow:hidden;
|
|
210
|
+
-webkit-transition: all 0.2s ease;
|
|
211
|
+
-moz-transition: all 0.2s ease;
|
|
212
|
+
-o-transition: all 0.2s ease;
|
|
213
|
+
transition: all 0.2s ease;
|
|
214
|
+
z-index:0;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
#fcfinder .left ul.folders li a:hover{ color:#fff;}
|
|
222
|
+
#fcfinder .left ul.folders li a:hover span.folder { border-radius: 3px; background: url("./fcfinder/tree/folder.png") no-repeat 2px center #ccc; border: 1px solid #999; box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26);
|
|
223
|
+
-webkit-box-shadow:rgba(0, 0, 0, 0.26) 0 2px 5px 0;
|
|
224
|
+
-moz-box-shadow:rgba(0, 0, 0, 0.26) 0 2px 5px 0;}
|
|
225
|
+
|
|
226
|
+
#fcfinder .left ul.folders li a.active{ color:#fff;}
|
|
227
|
+
#fcfinder .left ul.folders li a.active span.folder { border-radius: 3px; background: url("./fcfinder/tree/folder.png") no-repeat 2px center #1e92cc; border: 1px solid #216dcc;box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26);
|
|
228
|
+
-webkit-box-shadow:rgba(0, 0, 0, 0.26) 0 2px 5px 0;
|
|
229
|
+
-moz-box-shadow:rgba(0, 0, 0, 0.26) 0 2px 5px 0;}
|
|
230
|
+
|
|
231
|
+
#fcfinder .upload_field {cursor: pointer;}
|
|
232
|
+
#fcfinder span.load {background: url("./fcfinder/tree/loader.gif"); float: left;width: 16px; height: 16px;}
|
|
233
|
+
#fcfinder span.folder_load {background: url("./fcfinder/tree/loader.gif") no-repeat; display:block; min-height: 16px; margin: 7px 0px 0px 37px; padding-left: 18px; color: #000;}
|
|
234
|
+
|
|
235
|
+
#fcfinder .clear { clear: both; width: 100%; height:0px;}
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
#fcfinder .dialog { border-radius:4px;
|
|
239
|
+
background-color: #FFF;
|
|
240
|
+
padding: 10px;
|
|
241
|
+
min-width: 250px;
|
|
242
|
+
max-width: 90%;
|
|
243
|
+
max-height: 90%;
|
|
244
|
+
overflow: auto;
|
|
245
|
+
min-height: 150px;
|
|
246
|
+
box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26);
|
|
247
|
+
-webkit-box-shadow:rgba(0, 0, 0, 0.26) 0 2px 5px 0;
|
|
248
|
+
-moz-box-shadow:rgba(0, 0, 0, 0.26) 0 2px 5px 0;
|
|
249
|
+
z-index: 6;
|
|
250
|
+
position: absolute;
|
|
251
|
+
left: 0;
|
|
252
|
+
top: 0;
|
|
253
|
+
}
|
|
254
|
+
#fcfinder .dialog h1 { margin: 0px; padding:5px; font-size:22px; border-bottom: 1px solid #ccc; font-weight: 500; }
|
|
255
|
+
#fcfinder .dialog .file_bg { float: left; width: 64px; height: 64px !important; margin:15px; display: block;padding-right: 20px;}
|
|
256
|
+
#fcfinder .dialog .file_bg.directory { background: url("./fcfinder/directory.png") no-repeat;}
|
|
257
|
+
|
|
258
|
+
#fcfinder .dialog img.preview { margin: 0 auto; padding: 10px; display: block;}
|
|
259
|
+
|
|
260
|
+
#fcfinder .dialog span.file_name{ font-size:18px; font-weight: bold; display: block; margin-top: 15px;}
|
|
261
|
+
#fcfinder .dialog span.file_type{margin-top:5px;font-size:15px;display: block;}
|
|
262
|
+
#fcfinder .dialog ul.file_info{ list-style: none; margin: 0; padding: 0; clear: both;font-size: 14px;}
|
|
263
|
+
#fcfinder .dialog ul.file_info li { }
|
|
264
|
+
#fcfinder .dialog ul.file_info li span { width: 125px; text-align: right; display: block; float: left; padding-right: 10px;}
|
|
265
|
+
#fcfinder .dialog ul.file_info li a{ color: #06f;}
|
|
266
|
+
#fcfinder .dialog ul.file_info li a:hover {color: #3F51B5;}
|
|
267
|
+
#fcfinder .dialog a.close { position: relative; overflow: hidden; font-size: 13px; font-weight: bold; color: #3F51B5; text-decoration: none; border-radius: 5px; text-transform: uppercase; padding:10px 15px; display: block; float: right;}
|
|
268
|
+
#fcfinder .dialog a.close:hover{background-color: rgba(158, 158, 158, 0.2);}
|
|
269
|
+
#fcfinder .dialog a.btn { position: relative; overflow: hidden; font-size: 13px; font-weight: bold; color: #3F51B5; text-decoration: none; border-radius: 5px; text-transform: uppercase; padding:10px 15px; display: block; float: right;}
|
|
270
|
+
#fcfinder .dialog a.btn:hover{background-color: rgba(158, 158, 158, 0.2);}
|
|
271
|
+
|
|
272
|
+
#fcfinder .dialog div.content { padding:15px 5px;}
|
|
273
|
+
#fcfinder .dialog div.content div { padding:5px;}
|
|
274
|
+
#fcfinder .dialog-scope { position: fixed; z-index: 5; background:#000; opacity: 0.5; width: 100%; height: 100%; left: 0; top:0; }
|
|
275
|
+
|
|
276
|
+
#fcfinder .dialog.danger { border:2px solid #A94442;
|
|
277
|
+
-webkit-box-shadow: 0px 0px 20px 5px #A94442;
|
|
278
|
+
-moz-box-shadow: 0px 0px 20px 5px #A94442;
|
|
279
|
+
box-shadow: 0px 0px 20px 5px #A94442;
|
|
280
|
+
}
|
|
281
|
+
#fcfinder .dialog.warning{ border: 2px solid #CEA969;
|
|
282
|
+
-webkit-box-shadow: 0px 0px 20px 5px #CEA969;
|
|
283
|
+
-moz-box-shadow: 0px 0px 20px 5px #CEA969;
|
|
284
|
+
box-shadow: 0px 0px 20px 5px #CEA969;
|
|
285
|
+
}
|
|
286
|
+
#fcfinder .dialog.success { border: 2px solid #6CBC6D;
|
|
287
|
+
-webkit-box-shadow: 0px 0px 20px 5px #6CBC6D;
|
|
288
|
+
-moz-box-shadow: 0px 0px 20px 5px #6CBC6D;
|
|
289
|
+
box-shadow: 0px 0px 20px 5px #6CBC6D;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
#fcfinder ul#ctxMenu {margin: 0; padding: 0; list-style: none; position: absolute; display: block; width:200px; max-height:350px;height: 300px; overflow: auto; overflow-x:hidden; z-index: 4;border: solid 1px #CCC; background: #fff; box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26);-webkit-box-shadow:rgba(0, 0, 0, 0.26) 0 2px 5px 0;-moz-box-shadow:rgba(0, 0, 0, 0.26) 0 2px 5px 0; border-radius: 3px;}
|
|
296
|
+
#fcfinder ul#ctxMenu li { padding:3px 0; font-size: 13px; }
|
|
297
|
+
#fcfinder ul#ctxMenu li a {padding:8px; display: block; color: #000; text-decoration: none; border-left: 5px solid transparent; }
|
|
298
|
+
#fcfinder ul#ctxMenu li a.none:hover { background: none;border-left: 5px solid transparent; }
|
|
299
|
+
|
|
300
|
+
#fcfinder ul#ctxMenu li a:hover {background: #ededed; border-left: 5px solid #ddd; }
|
|
301
|
+
#fcfinder ul#ctxMenu li.hr {padding:0px;font-size:0%; border-bottom: 1px solid #ccc;}
|
|
302
|
+
|
|
303
|
+
#progress {
|
|
304
|
+
position: fixed;
|
|
305
|
+
z-index: 1;
|
|
306
|
+
top: 0;
|
|
307
|
+
left: -6px;
|
|
308
|
+
width: 1%;
|
|
309
|
+
height: 2px;
|
|
310
|
+
background: #1293cc;
|
|
311
|
+
-moz-border-radius: 1px;
|
|
312
|
+
-webkit-border-radius: 1px;
|
|
313
|
+
border-radius: 1px;
|
|
314
|
+
-moz-transition: width 500ms ease-out,opacity 400ms linear;
|
|
315
|
+
-ms-transition: width 500ms ease-out,opacity 400ms linear;
|
|
316
|
+
-o-transition: width 500ms ease-out,opacity 400ms linear;
|
|
317
|
+
-webkit-transition: width 500ms ease-out,opacity 400ms linear;
|
|
318
|
+
transition: width 500ms ease-out,opacity 400ms linear;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
#progress dd, #progress dt {
|
|
322
|
+
position: absolute;
|
|
323
|
+
top: 0;
|
|
324
|
+
height: 3px;
|
|
325
|
+
-moz-box-shadow: #1293cc 1px 0 6px 1px;
|
|
326
|
+
-ms-box-shadow: #1293cc 1px 0 6px 1px;
|
|
327
|
+
-webkit-box-shadow: #1293cc 1px 0 6px 1px;
|
|
328
|
+
box-shadow: #1293cc 1px 0 6px 1px;
|
|
329
|
+
-moz-border-radius: 100%;
|
|
330
|
+
-webkit-border-radius: 100%;
|
|
331
|
+
border-radius: 100%;
|
|
332
|
+
background:#1293CC;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
#progress dt {
|
|
336
|
+
opacity: .6;
|
|
337
|
+
width: 180px;
|
|
338
|
+
right: -80px;
|
|
339
|
+
clip: rect(-6px,90px,14px,-6px);
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
#progress dd {
|
|
343
|
+
opacity: .6;
|
|
344
|
+
width: 20px;
|
|
345
|
+
right: 0;
|
|
346
|
+
clip: rect(-6px,22px,14px,10px);
|
|
347
|
+
}
|
data/bin/console
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require "bundler/setup"
|
|
4
|
+
require "fcfinder"
|
|
5
|
+
|
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
|
8
|
+
|
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
|
10
|
+
# require "pry"
|
|
11
|
+
# Pry.start
|
|
12
|
+
|
|
13
|
+
require "irb"
|
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
data/fcfinder.gemspec
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require 'fcfinder/version'
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |spec|
|
|
7
|
+
spec.name = "fcfinder"
|
|
8
|
+
spec.version = Fcfinder::VERSION
|
|
9
|
+
spec.authors = ["Furkan \xC3\x87elik"]
|
|
10
|
+
spec.email = ["furkan.celik32@gmail.com"]
|
|
11
|
+
|
|
12
|
+
spec.summary = %q{Rails icin web dosya gezgini}
|
|
13
|
+
spec.description = %q{Dosya yukleme klasor olusturma gibi islemleri hızlıbir şekilde yapabileceginiz cke tinymce gibi editorlerle entegreli kullanacieceginiz dosya gezgini}
|
|
14
|
+
spec.homepage = "https://github.com/furkancelik/fcfinder"
|
|
15
|
+
spec.license = "MIT"
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
19
|
+
spec.bindir = "exe"
|
|
20
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
21
|
+
spec.require_paths = ["lib"]
|
|
22
|
+
|
|
23
|
+
spec.add_development_dependency "bundler", "~> 1.9"
|
|
24
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
|
25
|
+
spec.add_dependency "mini_magick", "~> 4.2"
|
|
26
|
+
spec.add_dependency "rubyzip", "~> 1.1"
|
|
27
|
+
|
|
28
|
+
#spec.requirements << "zip"
|
|
29
|
+
#spec.requirements << "mini_magick"
|
|
30
|
+
|
|
31
|
+
end
|
data/lib/fcfinder.rb
ADDED
|
@@ -0,0 +1,612 @@
|
|
|
1
|
+
module Fcfinder
|
|
2
|
+
class Connector
|
|
3
|
+
attr_reader :run
|
|
4
|
+
|
|
5
|
+
def initialize(file,host_url,fc_params=nil,options = {})
|
|
6
|
+
|
|
7
|
+
#Max dosya boyutu boş ise 1MB dosya yüklemesine izin ver
|
|
8
|
+
@max_file_size = options[:max_file_size] ||= 1_000_000
|
|
9
|
+
@allowed_mime = options[:allowed_mime] ||= {}
|
|
10
|
+
@disallowed_mime = options[:disallowed_mime] ||= {}
|
|
11
|
+
#izin verilen dosyalar
|
|
12
|
+
@permission_mime = permission_mime(@allowed_mime,@disallowed_mime)
|
|
13
|
+
|
|
14
|
+
@file = file
|
|
15
|
+
@fcdir = file.chomp('/*')
|
|
16
|
+
@main_folder = @fcdir.split('/').last
|
|
17
|
+
@host_url = host_url
|
|
18
|
+
@main_file = {}
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
if fc_params.nil?
|
|
22
|
+
@main_params = append_file(file)
|
|
23
|
+
@main_params[:main_file] = {:path => file.split('/')[-2], :url => file, :sub_dir => @main_file[:sub_dir]}
|
|
24
|
+
result = [@main_params, @main_params[:directory].size+@main_params[:file].size, format_mb(directory_size(@main_params[:main_file][:url].chomp('/*')))]
|
|
25
|
+
else
|
|
26
|
+
result = case fc_params[:type]
|
|
27
|
+
when 'path_to_url'
|
|
28
|
+
path_to_url(get_path(fc_params[:path]))
|
|
29
|
+
|
|
30
|
+
#Tum Dosyaları Listele
|
|
31
|
+
#Klasor Secilme İslemi Yapilinca
|
|
32
|
+
when 'all_file_list'
|
|
33
|
+
all_file_list(get_path(fc_params[:url]))
|
|
34
|
+
|
|
35
|
+
#Yeni Klasor Olusturma
|
|
36
|
+
when 'create_directory'
|
|
37
|
+
create_directory(fc_params[:path], fc_params[:directory_name])
|
|
38
|
+
|
|
39
|
+
#Yenileme Islemi
|
|
40
|
+
when 'refresh'
|
|
41
|
+
refresh(get_path(fc_params[:path]))
|
|
42
|
+
|
|
43
|
+
#Dosya Indirme Islemi
|
|
44
|
+
when 'download'
|
|
45
|
+
download(get_path(fc_params[:path]))
|
|
46
|
+
|
|
47
|
+
#Bilgiler
|
|
48
|
+
when 'info'
|
|
49
|
+
info_and_preview(fc_params[:file], fc_params[:kind])
|
|
50
|
+
|
|
51
|
+
#Onizleme
|
|
52
|
+
when 'preview'
|
|
53
|
+
info_and_preview(fc_params[:file], fc_params[:kind])
|
|
54
|
+
|
|
55
|
+
#Dosya Kopyala
|
|
56
|
+
when 'copy'
|
|
57
|
+
copy(get_path(fc_params[:copy_file_path]), get_path(fc_params[:this_folder_path]))
|
|
58
|
+
|
|
59
|
+
#Dosya Zorunlu Kopyala
|
|
60
|
+
when 'copy!'
|
|
61
|
+
copy!(get_path(fc_params[:copy_file_path]), get_path(fc_params[:this_folder_path]))
|
|
62
|
+
|
|
63
|
+
#Dosya Kesme
|
|
64
|
+
when 'cut'
|
|
65
|
+
cut(get_path(fc_params[:cut_file_path]), get_path(fc_params[:this_folder_path]))
|
|
66
|
+
|
|
67
|
+
#Dosyayı Zorla Kes
|
|
68
|
+
when 'cut!'
|
|
69
|
+
cut!(get_path(fc_params[:cut_file_path]), get_path(fc_params[:this_folder_path]))
|
|
70
|
+
|
|
71
|
+
#Dosya Kopyasını Oluşturma
|
|
72
|
+
when 'duplicate'
|
|
73
|
+
duplicate(get_path(fc_params[:file_path]))
|
|
74
|
+
|
|
75
|
+
#Dosya Yeniden Adlandır
|
|
76
|
+
when 'file_rename'
|
|
77
|
+
file_rename(get_path(fc_params[:path]), fc_params[:file_name])
|
|
78
|
+
|
|
79
|
+
#Dosya Silme İşlemi
|
|
80
|
+
when 'delete'
|
|
81
|
+
delete!(get_path(fc_params[:file_path]))
|
|
82
|
+
|
|
83
|
+
#Dosya Yükleme İşlemi
|
|
84
|
+
when 'upload'
|
|
85
|
+
upload(fc_params[:upload], get_path(fc_params[:path]))
|
|
86
|
+
|
|
87
|
+
#Dosya Duzenleme
|
|
88
|
+
when 'edit_file'
|
|
89
|
+
edit_file(get_path(fc_params[:file_path]))
|
|
90
|
+
else
|
|
91
|
+
# type code here
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
@run = result.to_json
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def path_to_url(path)
|
|
99
|
+
if File.exist?(path)
|
|
100
|
+
['true',path]
|
|
101
|
+
else
|
|
102
|
+
%w(false 0)
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def all_file_list(url)
|
|
108
|
+
@url_params = append_file(url+'/*')
|
|
109
|
+
[@url_params,@url_params[:directory].size+@url_params[:file].size,format_mb(directory_size(url))]
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def create_directory(path,directory_name)
|
|
113
|
+
create_file_path = File.join(get_path(path),directory_name)
|
|
114
|
+
create_file_thumbs = create_file_path.sub(@fcdir.chomp('/'),@fcdir.chomp('/')+'/.thumbs')
|
|
115
|
+
if File.exist?(create_file_path)
|
|
116
|
+
#-1 => Aynı İsimde Dosya Var Dosya Oluşmadı
|
|
117
|
+
%w(false -1)
|
|
118
|
+
else
|
|
119
|
+
if Dir.mkdir(create_file_path) && Dir.mkdir(create_file_thumbs)
|
|
120
|
+
['true', {:top_dir => path, :path => set_path(create_file_path)}]
|
|
121
|
+
else
|
|
122
|
+
#0 => Herhangibir Hata var Dosya Oluşmadı
|
|
123
|
+
%w(false 0)
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def refresh(path)
|
|
129
|
+
append_file(File.join(path,'/*'))
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def add_zip_file(path, output_file)
|
|
133
|
+
zf = ZipFileGenerator.new(path, output_file)
|
|
134
|
+
zf.write
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
def download(path)
|
|
138
|
+
begin
|
|
139
|
+
if File.directory?(path)
|
|
140
|
+
output_file = path.chomp('/')+'.zip'
|
|
141
|
+
add_zip_file(path, output_file)
|
|
142
|
+
file = set_path(output_file).sub('fcdir:/', '').split('/').join(':')
|
|
143
|
+
type = path.chomp('/')+'.zip'
|
|
144
|
+
else
|
|
145
|
+
file = set_path(path).sub('fcdir:/', '').split('/').join(':')
|
|
146
|
+
type = path
|
|
147
|
+
end
|
|
148
|
+
result = { :file => file, :type => MIME::Types.type_for(type).first.content_type }
|
|
149
|
+
rescue Exception => e
|
|
150
|
+
result = ['false', '0',e.to_s]
|
|
151
|
+
end
|
|
152
|
+
result
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
def info_and_preview(file,kind)
|
|
156
|
+
{ :url => get_url(file),
|
|
157
|
+
:path => file,
|
|
158
|
+
:size => kind=='directory' ? format_mb(directory_size(get_path(file))) : format_mb(File.size(get_path(file))),
|
|
159
|
+
:ctime => File.ctime(get_path(file)).strftime('%d/%m/%Y %H:%M'),
|
|
160
|
+
:mtime => File.mtime(get_path(file)).strftime('%d/%m/%Y %H:%M'),
|
|
161
|
+
:type => File.directory?(get_path(file)) ? 'directory' : set_type(MIME::Types.type_for(get_path(file)).first.content_type) ,
|
|
162
|
+
:mime_type => File.directory?(get_path(file)) ? 'directory' : MIME::Types.type_for(get_path(file)).first.content_type ,
|
|
163
|
+
:permissions => {:write => File.writable?(get_path(file)).to_s, :read => File.readable?(get_path(file)).to_s}
|
|
164
|
+
}
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
def thumbs(opt)
|
|
168
|
+
thumbs = ''
|
|
169
|
+
thumbs = opt[:target].sub(@fcdir.chomp('/'),@fcdir.chomp('/')+'/.thumbs') if opt[:type] == :cut || opt[:type] == :copy || opt[:type] == :rename
|
|
170
|
+
thumbs = opt[:file_path].sub(@fcdir.chomp('/'), @fcdir.chomp('/')+'/.thumbs') if opt[:type] == :duplicate || opt[:type] == :duplicate2
|
|
171
|
+
if File.directory?(opt[:file])
|
|
172
|
+
FileUtils.cp_r(opt[:file].sub(@fcdir.chomp('/'),@fcdir.chomp('/')+'/.thumbs'),thumbs) if opt[:type ] == :copy
|
|
173
|
+
FileUtils.mv(opt[:file].sub(@fcdir.chomp('/'),@fcdir.chomp('/')+'/.thumbs'),thumbs) if opt[:type ] == :cut
|
|
174
|
+
FileUtils.cp_r(thumbs, opt[:folder_name].sub(@fcdir.chomp('/'), @fcdir.chomp('/')+'/.thumbs')+'/'+opt[:file_name]+' copy 1'+opt[:extension]) if opt[:type ] == :duplicate
|
|
175
|
+
FileUtils.cp_r(thumbs, opt[:new_file_path].sub(@fcdir.chomp('/'), @fcdir.chomp('/')+'/.thumbs')) if opt[:type2] == :duplicate2
|
|
176
|
+
FileUtils.mv(thumbs, File.join(opt[:folder_name].sub(@fcdir.chomp('/'), @fcdir.chomp('/')+'/.thumbs'),opt[:file_name])) if opt[:type] == :rename
|
|
177
|
+
else
|
|
178
|
+
if %w(image/x-ms-bmp image/jpeg image/gif image/png).include?(MIME::Types.type_for(opt[:file]).first.content_type)
|
|
179
|
+
unless File.exist?(thumbs)
|
|
180
|
+
_folder = ''
|
|
181
|
+
thumbs.split('/').each do |folder|
|
|
182
|
+
_folder << folder+'/'
|
|
183
|
+
unless File.exist?(_folder)
|
|
184
|
+
Dir.mkdir(_folder.chomp('/'))
|
|
185
|
+
end
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
FileUtils.cp_r(opt[:file].sub(@fcdir.chomp('/'),@fcdir.chomp('/')+'/.thumbs'),thumbs) if opt[:type] == :copy
|
|
189
|
+
FileUtils.mv(opt[:file].sub(@fcdir.chomp('/'),@fcdir.chomp('/')+'/.thumbs'),thumbs) if opt[:type] == :cut
|
|
190
|
+
FileUtils.cp_r(thumbs, opt[:folder_name].sub(@fcdir.chomp('/'), @fcdir.chomp('/')+'/.thumbs')+'/'+opt[:file_name]+' copy 1'+opt[:extension]) if opt[:type] == :duplicate
|
|
191
|
+
FileUtils.cp_r(thumbs, opt[:new_file_path].sub(@fcdir.chomp('/'), @fcdir.chomp('/')+'/.thumbs')) if opt[:type] == :duplicate2
|
|
192
|
+
FileUtils.mv(thumbs, File.join(opt[:folder_name].sub(@fcdir.chomp('/'), @fcdir.chomp('/')+'/.thumbs'),opt[:file_name])) if opt[:type] == :rename
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
def image_resize(file_path)
|
|
198
|
+
file_path.each do |file|
|
|
199
|
+
#ORJ=>thumbs = file.sub(@fcdir.chomp('/'), @fcdir.chomp('/')+'/.thumbs').chomp(file.sub(@fcdir.chomp('/'), @fcdir.chomp('/')+'/.thumbs').split('/').last).chomp('/')
|
|
200
|
+
thumbs = file.sub(@fcdir.chomp('/'), @fcdir.chomp('/')+'/.thumbs').chomp(file.split('/').last).chomp('/')
|
|
201
|
+
unless File.exist?(thumbs)
|
|
202
|
+
_folder = ''
|
|
203
|
+
thumbs.split('/').each do |folder|
|
|
204
|
+
_folder << folder + '/'
|
|
205
|
+
unless File.exist?(_folder)
|
|
206
|
+
Dir.mkdir(_folder.chomp('/'))
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
image = MiniMagick::Image.open(file)
|
|
211
|
+
image.resize '64x64'
|
|
212
|
+
image.write(file.sub(@fcdir.chomp('/'), @fcdir.chomp('/')+'/.thumbs'))
|
|
213
|
+
end
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
def copy(file,target)
|
|
217
|
+
begin
|
|
218
|
+
file_path = File.join(target,file.split('/').last)
|
|
219
|
+
if File.exist?(file_path)
|
|
220
|
+
#0 => Aynı Dosyadan Var
|
|
221
|
+
result = %w(false 0)
|
|
222
|
+
else
|
|
223
|
+
#Kopyalama İşlemini Gerçekleştir
|
|
224
|
+
FileUtils.cp_r(file,target)
|
|
225
|
+
thumbs({:file=>file, :target=>target, :type=>:copy})
|
|
226
|
+
result = %w(true)
|
|
227
|
+
end
|
|
228
|
+
rescue Exception => e
|
|
229
|
+
result = ['false', '-1',e.to_s]
|
|
230
|
+
end
|
|
231
|
+
result
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
def copy!(file,target)
|
|
235
|
+
begin
|
|
236
|
+
#Kopyalama İşlemini Gerçekleştir
|
|
237
|
+
FileUtils.cp_r(file,target)
|
|
238
|
+
|
|
239
|
+
#thumbs'a kopyasını gönder
|
|
240
|
+
thumbs({:file=>file, :target=>target, :type=>:copy})
|
|
241
|
+
result = %w(true)
|
|
242
|
+
rescue Exception => e
|
|
243
|
+
result = ['false', '-1',e.to_s]
|
|
244
|
+
end
|
|
245
|
+
result
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
def cut(file,target)
|
|
249
|
+
begin
|
|
250
|
+
file_path = target.chomp('/')+'/'+file.split('/').last
|
|
251
|
+
if File.exist?(file_path) || File.directory?(file_path)
|
|
252
|
+
#0 => Aynı Dosyadan Var
|
|
253
|
+
result = %w(false 0)
|
|
254
|
+
else
|
|
255
|
+
#Kesme İşlemini Gerçekleştir
|
|
256
|
+
FileUtils.mv(file,target)
|
|
257
|
+
#thumbs'a kopyasını gönder
|
|
258
|
+
thumbs({:file=>file, :target=>target, :type=>:cut})
|
|
259
|
+
result = %w(true)
|
|
260
|
+
end
|
|
261
|
+
rescue Exception => e
|
|
262
|
+
result = ['false', '-1',e.to_s]
|
|
263
|
+
end
|
|
264
|
+
result
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
def cut!(file,target)
|
|
268
|
+
begin
|
|
269
|
+
#Kesme İşlemini Gerçekleştir
|
|
270
|
+
FileUtils.mv(file,target)
|
|
271
|
+
#thumbs'a kopyasını gönder
|
|
272
|
+
thumbs({:file=>file, :target=>target, :type=>:cut})
|
|
273
|
+
result = %w(true)
|
|
274
|
+
rescue Exception => e
|
|
275
|
+
result = ['false', '-1',e.to_s]
|
|
276
|
+
end
|
|
277
|
+
result
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
def duplicate(file)
|
|
281
|
+
begin
|
|
282
|
+
file_path = file.chomp('/')
|
|
283
|
+
extension = (file_path.split('/').last.split('.').size>1) ? '.'+file_path.split('/').last.split('.').last : ''
|
|
284
|
+
file_name = file_path.split('/').last.chomp(extension)
|
|
285
|
+
folder_name = file_path.chomp(file_path.split('/').last).chomp('/')
|
|
286
|
+
|
|
287
|
+
reg_file = "#{file_name}".match(/(.+?) copy ([0-9])/i)
|
|
288
|
+
if reg_file.nil? && !File.exist?(folder_name+'/'+file_name+' copy 1'+extension)
|
|
289
|
+
FileUtils.cp_r(file_path, folder_name+'/'+file_name+' copy 1'+extension)
|
|
290
|
+
#thumbs dosyaları ekle
|
|
291
|
+
thumbs({:file_path=>file_path,:file=>file_path,:type=>:duplicate,:folder_name=>folder_name,:file_name=>file_name,:extension=>extension})
|
|
292
|
+
result = %w(true)
|
|
293
|
+
else
|
|
294
|
+
#"file_name copy 1" şeklinde bir dosya adı var
|
|
295
|
+
reg_file = "#{file_name} copy 1#{extension}".match(/(.+?) copy ([0-9])/i) if reg_file.nil?
|
|
296
|
+
j = Dir.glob("#{folder_name}/#{reg_file[1]} copy *#{extension}").last.match(/#{reg_file[1]} copy ([0-9])#{extension}/)[1].to_i + 1
|
|
297
|
+
|
|
298
|
+
new_file_name = "#{reg_file[1]} copy #{j}#{extension}"
|
|
299
|
+
new_file_path = folder_name.chomp('/')+'/'+new_file_name
|
|
300
|
+
FileUtils.cp_r(file_path, new_file_path)
|
|
301
|
+
#thumbs'a kopyasını gönder
|
|
302
|
+
thumbs({:file_path=>file_path,:file=>file_path,:type=>:duplicate2,:new_file_path=>new_file_path})
|
|
303
|
+
result = %w(true)
|
|
304
|
+
end
|
|
305
|
+
rescue Exception => e
|
|
306
|
+
result = ['false', '-1',e.to_s]
|
|
307
|
+
end
|
|
308
|
+
result
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
def file_rename(path,file_name)
|
|
312
|
+
begin
|
|
313
|
+
if File.exist?(path)
|
|
314
|
+
folder_name = path.chomp(path.split('/').last).chomp('/')
|
|
315
|
+
FileUtils.mv(path,folder_name+'/'+file_name)
|
|
316
|
+
#thumbs'a kopyasını gönder
|
|
317
|
+
thumbs({:file=>path,:target=>path,:type=>:rename,:folder_name=>folder_name,:file_name=>file_name})
|
|
318
|
+
result = %w(true)
|
|
319
|
+
else
|
|
320
|
+
#return false Dosya Yok!
|
|
321
|
+
result = %w(false)
|
|
322
|
+
end
|
|
323
|
+
rescue Exception => e
|
|
324
|
+
result = ['false', '-1',e.to_s]
|
|
325
|
+
end
|
|
326
|
+
result
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
def delete!(path)
|
|
330
|
+
begin
|
|
331
|
+
if File.exist?(path)
|
|
332
|
+
FileUtils.rm_rf(path)
|
|
333
|
+
FileUtils.rm_rf(path.sub(@fcdir.chomp('/'), @fcdir.chomp('/')+'/.thumbs')) if File.exist?(path.sub(@fcdir.chomp('/'), @fcdir.chomp('/')+'/.thumbs'))
|
|
334
|
+
result = %w(true)
|
|
335
|
+
else
|
|
336
|
+
#return false Dosya Yok!
|
|
337
|
+
result = %w(false 0)
|
|
338
|
+
end
|
|
339
|
+
rescue Exception => e
|
|
340
|
+
result = ['false', '-1',e.to_s]
|
|
341
|
+
end
|
|
342
|
+
result
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
def upload(upload_files,path)
|
|
346
|
+
begin
|
|
347
|
+
image_mime_type = %w(image/x-ms-bmp image/jpeg image/gif image/png)
|
|
348
|
+
file_path,error_delete_file = [],[]
|
|
349
|
+
upload_files.each do |file|
|
|
350
|
+
#dosya büyük
|
|
351
|
+
return ['false', '0',format_mb(@max_file_size)] if file.tempfile.size > @max_file_size
|
|
352
|
+
#format yok
|
|
353
|
+
return ['false', '-1',@permission_mime.to_a] unless @permission_mime.has_key?(file.original_filename.split('.').last) || @permission_mime[file.original_filename.split('.').last]==file.content_type
|
|
354
|
+
file_path.push(File.join(path,file.original_filename)) if image_mime_type.include?(file.content_type)
|
|
355
|
+
error_delete_file.push(File.join(path,file.original_filename))
|
|
356
|
+
File.open(File.join(path,file.original_filename), 'wb') do |f|
|
|
357
|
+
f.write(file.read)
|
|
358
|
+
end
|
|
359
|
+
end
|
|
360
|
+
|
|
361
|
+
# resimleri yeniden boyutlandır
|
|
362
|
+
image_resize(file_path)
|
|
363
|
+
result = %w(true)
|
|
364
|
+
rescue Exception => e
|
|
365
|
+
error_delete_file.each do |file|
|
|
366
|
+
FileUtils.rm_rf(file) unless File.size(file) > 0
|
|
367
|
+
end
|
|
368
|
+
result = ['false', '-2',e.to_s]
|
|
369
|
+
end
|
|
370
|
+
result
|
|
371
|
+
end
|
|
372
|
+
|
|
373
|
+
def edit_file(path)
|
|
374
|
+
File.exist?(path) ?
|
|
375
|
+
{ :url => get_url(set_path(path)), :title => path.chomp('/').split('/').last } :
|
|
376
|
+
%w(false 0)
|
|
377
|
+
end
|
|
378
|
+
|
|
379
|
+
def append_file(files_url)
|
|
380
|
+
all_file,all_dir = {},{}
|
|
381
|
+
Dir.glob(files_url).each do |file|
|
|
382
|
+
if File.directory?(file)
|
|
383
|
+
@main_file[:sub_dir] = true if @main_file[:sub_dir].nil?
|
|
384
|
+
all_dir[file.split('/').last] = {:file=>file,:url => get_url(set_path(file)), :sub_dir => false, :size_2 => directory_size(file), :size => format_mb(directory_size(file)), :ctime => File.ctime(file).strftime('%d/%m/%Y %H:%M'), :path => set_path(file), :type => '_directory'}
|
|
385
|
+
Dir.glob(file+'/*').each do |sub_dir|
|
|
386
|
+
if File.directory?(sub_dir)
|
|
387
|
+
all_dir[file.split('/').last][:sub_dir] = true
|
|
388
|
+
end
|
|
389
|
+
end
|
|
390
|
+
else
|
|
391
|
+
all_file[file.split('/').last] = {:file=>file, :path => set_path(file), :url => get_url(set_path(file)), :type => set_type(MIME::Types.type_for(file).first.content_type), :size_2 => File.size(file), :size => format_mb(File.size(file)), :ctime => File.ctime(file).strftime('%d/%m/%Y %H:%M')}
|
|
392
|
+
end
|
|
393
|
+
end
|
|
394
|
+
{ :directory => all_dir, :file => all_file }
|
|
395
|
+
end
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
def set_path(path)
|
|
399
|
+
path.chomp('/').sub(@fcdir, 'fcdir:')
|
|
400
|
+
end
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
def get_path(path)
|
|
404
|
+
path.chomp('/').sub('fcdir:',@fcdir)
|
|
405
|
+
end
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
def set_url(path)
|
|
409
|
+
path.chomp('/').sub(File.join(@host_url,@main_folder)+@main_folder, 'fcdir:')
|
|
410
|
+
end
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
def get_url(path)
|
|
414
|
+
path.chomp('/').sub('fcdir:',File.join(@host_url,@main_folder))
|
|
415
|
+
end
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
def set_type(type)
|
|
419
|
+
case type
|
|
420
|
+
when 'application/vnd.ms-word'
|
|
421
|
+
'doc'
|
|
422
|
+
when 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
|
|
423
|
+
'docx'
|
|
424
|
+
when 'application/vnd.ms-excel'
|
|
425
|
+
'xls'
|
|
426
|
+
when 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
|
427
|
+
'xlsx'
|
|
428
|
+
when 'application/vnd.openxmlformats-officedocument.presentationml.presentation'
|
|
429
|
+
'pptx'
|
|
430
|
+
when 'application/vnd.ms-powerpoint'
|
|
431
|
+
'ppt'
|
|
432
|
+
when 'application/pdf'
|
|
433
|
+
'pdf'
|
|
434
|
+
when 'application/xml'
|
|
435
|
+
'xml'
|
|
436
|
+
when 'application/x-shockwave-flash'
|
|
437
|
+
'swf'
|
|
438
|
+
when 'application/x-gzip', 'application/gzip'
|
|
439
|
+
'gz'
|
|
440
|
+
when 'application/x-gtar'
|
|
441
|
+
'tgz'
|
|
442
|
+
when 'application/x-bzip'
|
|
443
|
+
'bz'
|
|
444
|
+
when 'application/x-bzip2'
|
|
445
|
+
'bz2'
|
|
446
|
+
when 'application/zip'
|
|
447
|
+
'zip'
|
|
448
|
+
when 'application/x-rar', 'application/x-rar-compressed'
|
|
449
|
+
'rar'
|
|
450
|
+
when 'application/x-tar'
|
|
451
|
+
'tar'
|
|
452
|
+
when 'application/x-7z-compressed'
|
|
453
|
+
'7z'
|
|
454
|
+
when 'text/plain'
|
|
455
|
+
'txt'
|
|
456
|
+
when 'text/x-php', 'application/x-httpd-php'
|
|
457
|
+
'php'
|
|
458
|
+
when 'text/html'
|
|
459
|
+
'html'
|
|
460
|
+
when 'text/htm'
|
|
461
|
+
'htm'
|
|
462
|
+
when 'application/javascript'
|
|
463
|
+
'js'
|
|
464
|
+
when 'text/css'
|
|
465
|
+
'css'
|
|
466
|
+
when 'application/x-ruby'
|
|
467
|
+
'rb'
|
|
468
|
+
when 'image/tiff'
|
|
469
|
+
'tiff'
|
|
470
|
+
when 'image/x-targa'
|
|
471
|
+
'tga'
|
|
472
|
+
when 'image/vnd.adobe.photoshop'
|
|
473
|
+
'psd'
|
|
474
|
+
when 'image/x-icon'
|
|
475
|
+
'ico'
|
|
476
|
+
when 'audio/mpeg'
|
|
477
|
+
'mp3'
|
|
478
|
+
when 'audio/midi'
|
|
479
|
+
'mid'
|
|
480
|
+
when 'audio/ogg'
|
|
481
|
+
'ogg'
|
|
482
|
+
when 'audio/mp4'
|
|
483
|
+
'mp4a'
|
|
484
|
+
when 'audio/wav', 'audio/x-wav'
|
|
485
|
+
'wav'
|
|
486
|
+
when 'audio/x-ms-wma'
|
|
487
|
+
'vma'
|
|
488
|
+
when 'video/x-msvideo'
|
|
489
|
+
'avi'
|
|
490
|
+
when 'video/x-dv'
|
|
491
|
+
'dv'
|
|
492
|
+
when 'video/mp4'
|
|
493
|
+
'mp4'
|
|
494
|
+
when 'video/mpeg'
|
|
495
|
+
'mpeg'
|
|
496
|
+
when 'video/mpeg'
|
|
497
|
+
'mpg'
|
|
498
|
+
when 'video/quicktime'
|
|
499
|
+
'mov'
|
|
500
|
+
when 'video/x-ms-wmv'
|
|
501
|
+
'vm'
|
|
502
|
+
when 'video/x-flv'
|
|
503
|
+
'flv'
|
|
504
|
+
when 'video/x-matroska'
|
|
505
|
+
'mkv'
|
|
506
|
+
when 'image/png', 'image/jpeg','image/x-ms-bmp','image/gif'
|
|
507
|
+
'image_file'
|
|
508
|
+
else
|
|
509
|
+
'other'
|
|
510
|
+
end
|
|
511
|
+
end
|
|
512
|
+
|
|
513
|
+
|
|
514
|
+
def directory_size(path)
|
|
515
|
+
path << '/' unless path.end_with?('/')
|
|
516
|
+
raise RuntimeError, "#{path} is not a directory" unless File.directory?(path)
|
|
517
|
+
total_size = 0
|
|
518
|
+
Dir["#{path}**/*"].each do |f|
|
|
519
|
+
total_size += File.size(f) if File.file?(f) && File.size?(f)
|
|
520
|
+
end
|
|
521
|
+
total_size
|
|
522
|
+
end
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
def format_mb(size)
|
|
526
|
+
conv = %w(B KB MB GB TER PB EB)
|
|
527
|
+
scale = 1024
|
|
528
|
+
ndx=1
|
|
529
|
+
return "#{(size)} #{conv[ndx-1]}" if size < 2*(scale**ndx)
|
|
530
|
+
size=size.to_f
|
|
531
|
+
[2,3,4,5,6,7].each do |ndx|
|
|
532
|
+
return "#{'%.3f' % (size/(scale**(ndx-1)))} #{conv[ndx-1]}" if size < 2*(scale**ndx)
|
|
533
|
+
end
|
|
534
|
+
ndx=7
|
|
535
|
+
"#{'%.3f' % (size/(scale**(ndx-1)))} #{conv[ndx-1]}"
|
|
536
|
+
end
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
def permission_mime(allowed_mime,disallowed_mime)
|
|
540
|
+
permission = {
|
|
541
|
+
'doc' => 'application/vnd.ms-word',
|
|
542
|
+
'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
|
543
|
+
'xls' => 'application/vnd.ms-excel',
|
|
544
|
+
'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
|
545
|
+
'ppt' => 'application/vnd.ms-powerpoint',
|
|
546
|
+
'pps' => 'application/vnd.ms-powerpoint',
|
|
547
|
+
'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
|
|
548
|
+
'pdf' => 'application/pdf',
|
|
549
|
+
'xml' => 'application/xml',
|
|
550
|
+
'swf' => 'application/x-shockwave-flash',
|
|
551
|
+
# archives
|
|
552
|
+
'gz' => 'application/x-gzip',
|
|
553
|
+
'tgz' => 'application/x-gzip',
|
|
554
|
+
'bz' => 'application/x-bzip2',
|
|
555
|
+
'bz2' => 'application/x-bzip2',
|
|
556
|
+
'tbz' => 'application/x-bzip2',
|
|
557
|
+
'zip' => 'application/zip',
|
|
558
|
+
'rar' => 'application/x-rar',
|
|
559
|
+
'tar' => 'application/x-tar',
|
|
560
|
+
'rar' => 'application/x-rar-compressed',
|
|
561
|
+
'7z' => 'application/x-7z-compressed',
|
|
562
|
+
# texts
|
|
563
|
+
'txt' => 'text/plain',
|
|
564
|
+
'php' => 'text/x-php',
|
|
565
|
+
'html' => 'text/html',
|
|
566
|
+
'htm' => 'text/html',
|
|
567
|
+
'js' => 'text/javascript',
|
|
568
|
+
'css' => 'text/css',
|
|
569
|
+
'rtf' => 'text/rtf',
|
|
570
|
+
'rtfd' => 'text/rtfd',
|
|
571
|
+
'py' => 'text/x-python',
|
|
572
|
+
'java' => 'text/x-java-source',
|
|
573
|
+
'rb' => 'text/x-ruby',
|
|
574
|
+
'erb' => 'text/x-ruby',
|
|
575
|
+
'sh' => 'text/x-shellscript',
|
|
576
|
+
'pl' => 'text/x-perl',
|
|
577
|
+
'sql' => 'text/x-sql',
|
|
578
|
+
# images
|
|
579
|
+
'bmp' => 'image/x-ms-bmp',
|
|
580
|
+
'jpg' => 'image/jpeg',
|
|
581
|
+
'jpeg' => 'image/jpeg',
|
|
582
|
+
'gif' => 'image/gif',
|
|
583
|
+
'png' => 'image/png',
|
|
584
|
+
'tif' => 'image/tiff',
|
|
585
|
+
'tiff' => 'image/tiff',
|
|
586
|
+
'tga' => 'image/x-targa',
|
|
587
|
+
'psd' => 'image/vnd.adobe.photoshop',
|
|
588
|
+
'ico' => 'image/x-icon',
|
|
589
|
+
# audio
|
|
590
|
+
'mp3' => 'audio/mpeg',
|
|
591
|
+
'mid' => 'audio/midi',
|
|
592
|
+
'ogg' => 'audio/ogg',
|
|
593
|
+
'mp4a' => 'audio/mp4',
|
|
594
|
+
'wav' => 'audio/wav',
|
|
595
|
+
'wma' => 'audio/x-ms-wma',
|
|
596
|
+
# video
|
|
597
|
+
'avi' => 'video/x-msvideo',
|
|
598
|
+
'dv' => 'video/x-dv',
|
|
599
|
+
'mp4' => 'video/mp4',
|
|
600
|
+
'mpeg' => 'video/mpeg',
|
|
601
|
+
'mpg' => 'video/mpeg',
|
|
602
|
+
'mov' => 'video/quicktime',
|
|
603
|
+
'wm' => 'video/x-ms-wmv',
|
|
604
|
+
'flv' => 'video/x-flv',
|
|
605
|
+
'mkv' => 'video/x-matroska'
|
|
606
|
+
}
|
|
607
|
+
permission.merge!(allowed_mime)
|
|
608
|
+
permission.delete_if {|key| disallowed_mime.include?(key) }
|
|
609
|
+
permission
|
|
610
|
+
end
|
|
611
|
+
end
|
|
612
|
+
end
|