elFinder-web2py , Filemanager for Web2py!

553 views
Skip to first unread message

Phyo Arkar

unread,
Jun 23, 2010, 9:47:05 PM6/23/10
to web...@googlegroups.com, Massimo Di Pierro
Finally after 2 days of hacking elfinder backend for Django from http://www.elrte.ru/redmine/issues/128  , i have managed to get elFinder working (about 90% of features)

Attached is elFinder-web2py , still alot of improvement needed.

-Downloading files is not working yet but should be easy to fix.
-Help me make it more integrated into web2py
-Their method of DIrectory scanning is so slow , going to replace with os.walk.

Please note that this is not for Production use.

I started a project , download and test there.

Note URL (Both in View and web2py_elcon) need to be change to your host:port (i did with port 8080)

http://code.google.com/p/elfinder-web2py/downloads/list




Giuseppe Luca Scrofani

unread,
Jun 24, 2010, 11:23:18 AM6/24/10
to web...@googlegroups.com
Yeah!!! Great, this is super-useful! I was not able to make it work
yet it will not install as an appliances and extracting the
application folder in the web2py didnt work either. Its because some
parts are not ready yet? I cant wait to see this in my application
list in web2py!

gls

Phyo Arkar

unread,
Jun 24, 2010, 4:23:04 PM6/24/10
to web...@googlegroups.com
It is not an appliance , and not made web2pyapp yet , after you unzip it into application folder modify view/index.html and controller/default/web2py_elcon

in Controller:

def web2py_elcon():

    cont=connector({
        'root': '/home/v3ss/Downloads', # MODIFY to file folder path of your upload/downloads
        #'URL': 'http://localhost:8080'+URL(c='default',r=Request,f='call',args=['json','json_connector']),
        'URL':'http://localhost:8080/filemanager/default/web2py_elcon', #MODIFY TO your URL.
        'debug': False,                   # send debug information
        'dirSize': True,                 # calculate directory sizes
        'dotFiles': True,                # show files beginning with dot
        'defaults':{'read':True,
                    'write':True,
                    'rm':True}
       
        }
    )

In view :


Check at Line 53:

   <script type="text/javascript" charset="utf-8">
        $().ready(function() {
           
            var f = $('#finder').elfinder({
                url : 'http://localhost:8080/filemanager/default/web2py_elcon.json', #HERE!
                lang : 'en',

                editorCallback : function(url) {
                    if (window.console && window.console.log) {
                        window.console.log(url);
                    } else {
                        alert(url);
                    }
                   
                },

Giuseppe Luca Scrofani

unread,
Jun 24, 2010, 4:29:40 PM6/24/10
to web...@googlegroups.com
I re-tried, managed to install extracting files in the correct folder,
but now Im stuck

"Note URL (Both in View and web2py_elcon) need to be change to your
host:port (i did with port 8080)"

Can you please explain a little more, what I've to change and where?

From what I understand seems to edit default/index.html and change the
url in the javascript in (in my case):

url : 'http://192.168.0.101:8000/filemanager/default/web2py_elcon.json',

and to edit under modules folder the files elw2py.py to

_options = {
'root': '/path/to/a/folder?',
'URL': 'http://192.168.0.101:8000',

but this not work so...

Giuseppe Luca Scrofani

unread,
Jun 24, 2010, 4:35:16 PM6/24/10
to web...@googlegroups.com
Please ignore my previous message (written before you replied), now I
will try to make your suggested changes

Phyo Arkar

unread,
Jun 24, 2010, 4:38:49 PM6/24/10
to web2py-users
OK feel free to ask , and if you stuck give me error message.


On Jun 24, 8:35 pm, Giuseppe Luca Scrofani <glsdes...@gmail.com>
wrote:

Giuseppe Luca Scrofani

unread,
Jun 25, 2010, 12:30:19 PM6/25/10
to web...@googlegroups.com
Even following your indication I can't make it work :( I will retry
after dinner. I am surprised of how this project seems not interesting
to the others... It is very strange, In my humble, I think this have
to be shipped by default in web2py...

Phyo Arkar

unread,
Jun 29, 2010, 1:32:49 PM6/29/10
to web...@googlegroups.com
Let me know where it dont work.
I am suprised too :D may be for security issues?

GoldenTiger

unread,
Jun 29, 2010, 8:36:58 PM6/29/10
to web2py-users
Yes, this project like me, and Massimo said about an Admin version 2
of web2py based at elFinder

Look at this

http://groups.google.es/group/web2py/browse_thread/thread/ae2e3ef69daef09a/e88c6812af206cc6

So, probably it will be shipped by default in the future :D

I am working on integration too :)

Troex Nevelin

unread,
Jun 30, 2010, 7:53:45 AM6/30/10
to web2py-users
Hello, I'm author of elFinder.py

In about a month we plan to release new version of elFinder, mostly
bugfixes but I also plan to rewrite python version to be more library
like.

I know there are problems integrating elfinder with different
frameworks on python, current version was written for use under pure
CGI. This is my first major experience with python and so I have many
questions about the "right way" how to write connector so it can be
easy to integrate and write plugins.

The biggest question to me is how to implement handling POST and GET
data, I've seen many different ways how it is done in different
frameworks. Currently this is done using:
import cgi
self._form = cgi.FieldStorage()
Maybe I should put this outside elFinder.py and only pass parameters
to connector?

Feedback is welcome.
Message has been deleted

Phyo Arkar

unread,
Jun 30, 2010, 2:18:39 PM6/30/10
to web...@googlegroups.com
Hello Torex

Welcome to Web2py Group!
Thats very good to have you here!
I am trying to make elfinder work for web2py , please feel free to reuse my work in your release.

Here is the Connector initiation:

http://code.google.com/p/elfinder-web2py/source/browse/filemanager/controllers/default.py

Check inside function elcon .

and here is elFinder Backend Class

http://code.google.com/p/elfinder-web2py/source/browse/filemanager/modules/elw2p.py



Currently it is working partially  (atleast for me)

Please review and test , we can work together on this.



On Jun 24, 5:47 am, Phyo Arkar <phyo.arkarl...@gmail.com> wrote:
> Finally after 2 days of hacking elfinder backend for Django fromhttp://www.elrte.ru/redmine/issues/128<http://www.google.com/url?sa=D&q=http://www.elrte.ru/redmine/issues/1...>

Troex Nevelin

unread,
Jun 30, 2010, 8:11:58 PM6/30/10
to web2py-users
I've looked though your code and I like idea to put POST/GET and json
outside the connector itself. I'll start contributing your code right
now because my main goal for next release is to make python connector
usable in frameworks without (if this is possible) modifications.

About speed of directory search - we know this issue. md5 hash will be
replaced by some encryption, so hash can be decrypted and there will
be no need to search for directory.

If you want to keep track of elfinder source update use feed
http://elrte.ru/redmine/projects/elfinder/repository/revisions.atom

On Jun 30, 10:18 pm, Phyo Arkar <phyo.arkarl...@gmail.com> wrote:
> Hello Torex
>
> Welcome to Web2py Group!
> Thats very good to have you here!
> I am trying to make elfinder work for web2py , please feel free to reuse my
> work in your release.
>
> Here is the Connector initiation:
>
> http://code.google.com/p/elfinder-web2py/source/browse/filemanager/co...
>
> Check inside function elcon .
>
> and here is elFinder Backend Class
>
> http://code.google.com/p/elfinder-web2py/source/browse/filemanager/mo...

GoldenTiger

unread,
Jun 30, 2010, 11:32:22 PM6/30/10
to web2py-users
Hello Troex

Welcome to web2py group! Your arrival could not be more timely
I am working on elfinder and web2py integration.

You are in the right place to be helped with python and websites. This
google group is very helpful.
I'd like to contribute too.
My spoken English is limited to express complex ideas. I wonder if you
speak Spanish, as I see it sounds ElDorado elfinder and Spanish, and
the finder website is in Spanish. I'm from Spain.

The best way to start a project in python is google groups.
Why not create a group so that we can discuss elfinder?


About elfinder compatible with other Python frameworks, what are the
frameworks that interest you most?

Web2py is especially easy to manage files, since all transfers are
streaming automatically.
In matters of compatibility and data management will be happy to help.
To be compatible with various frameworks is not necessarily limited by
CGI.
The only justification for using CGI are the restrictions of the web
server.

It is possible to make it compatible without having to change
anything. But maybe then squandered advantage of some frameworks, as
in the case of streaming files web2py automatic.

About elRTE, do you plan to integrate it with elfinder and python as
well?

On 1 jul, 02:11, Troex Nevelin <tr...@fury.scancode.ru> wrote:
> I've looked though your code and I like idea to put POST/GET and json
> outside the connector itself. I'll start contributing your code right
> now because my main goal for next release is to make python connector
> usable in frameworks without (if this is possible) modifications.
>
> About speed of directory search - we know this issue. md5 hash will be
> replaced by some encryption, so hash can be decrypted and there will
> be no need to search for directory.
>
> If you want to keep track of elfinder source update use feedhttp://elrte.ru/redmine/projects/elfinder/repository/revisions.atom

Troex Nevelin

unread,
Jul 1, 2010, 6:22:39 AM7/1/10
to web2py-users
About starting google group I think no, this is more political
question, we have our own resources (git, issues, wiki, forum). People
who develop elRTE and elFinder also develop commercial projects
therefore it is good to have all development in one place. Btw
elFinder was started not "just for fun" but as commercial need.

> About elRTE, do you plan to integrate it with elfinder and python as
well?
elFinder integrates well with elRTE here is doc
http://elrte.ru/redmine/projects/elfinder/wiki/Integration_EN
elRTE is pure javascript so no need to integrate it with python, maybe
only write a little helper.

About Spanish, I don't speak it. Spanish translation is done by one of
our contributers who live in Spain and now he is stuck with Java
connector. Our team is all Russians and have difficulties speaking/
writing English, except me (I'm not russian but Russian is native
language to me). I'm responsible for all non-russian communication.

elRTE and especially elFinder are now well known in Russian IT
community and market, some big companies already integrated elFinder
in their products but this is not true for the rest of the world.
Maybe you can give some advices how or where to promote our open
source projects. I really believe we can hit the world with our
projects.
Message has been deleted

GoldenTiger

unread,
Jul 1, 2010, 5:04:28 PM7/1/10
to web2py-users
I am already promoting elfinder ;)
I am who shared for first time elfinder at web2py groups (english and
spanish groups), and probably that's the reason why you came here

Users comments about elfinder is very very good, like you can see :

http://groups.google.es/group/web2py/browse_thread/thread/ae2e3ef69daef09a/16305bddcb423c15
Massimo di Pierro wrote: "Really nice. Perhaps it is a time for
an admin^2"


Any Server side File management appliance in python?
http://groups.google.es/group/web2py/browse_thread/thread/ea6c95ca24a745b/77289a6a67c7ce64

At spanish web2py group:
http://groups.google.es/group/web2py-usuarios/msg/2b2aede7c2b444f3
"The resources you have put are awesome.I've gone amazed with
elFinder"

>>Maybe you can give some advices how or where to promote our open
>>source projects I really believe we can hit the world with our
>>projects.

Yes I can give you some advices to promote it, I am very good on SEO,
I have been working as SEO expert with very good results

QUESTION: why elfinder is unknown out from Russia?
ANSWER: your domain is a .ru

When i discover elfinder I had been searching for a few hours.
finding your software is very dificult for english users
for spanish users is almost impossible, .ru domains are almost
invisible for spanish users

My advice to you: buy the domain www.elfinder.org or .com, instead as
a subfolder of elrte.ru

I can help you to promote among spanish community and market, since I
am planning using it on production server it will be easy for me. Just
let me know.
I can talk to your partner in Spain if you want too. You can contact
me through the mail you see above.

Another advice is translating ElDorado-CMS to english and spanish, and
buy more appropiate domains too.
The demo is amazing :)

On 1 jul, 12:22, Troex Nevelin <tr...@fury.scancode.ru> wrote:
> About starting google group I think no, this is more political
> question, we have our own resources (git, issues, wiki, forum). People
> who develop elRTE andelFinderalso develop commercial projects
> therefore it is good to have all development in one place. BtwelFinderwas started not "just for fun" but as commercial need.
>
> > About elRTE, do you plan to integrate it withelfinderand python as
>
> well?elFinderintegrates well with elRTE here is dochttp://elrte.ru/redmine/projects/elfinder/wiki/Integration_EN
> elRTE is pure javascript so no need to integrate it with python, maybe
> only write a little helper.
>
> About Spanish, I don't speak it. Spanish translation is done by one of
> our contributers who live in Spain and now he is stuck with Java
> connector. Our team is all Russians and have difficulties speaking/
> writing English, except me (I'm not russian but Russian is native
> language to me). I'm responsible for all non-russian communication.
>
> elRTE and especiallyelFinderare now well known in Russian IT

Phyo Arkar

unread,
Jul 1, 2010, 5:05:52 PM7/1/10
to web...@googlegroups.com
I agree there is no need for another Google Group. We can just use here to discuss or we should use elrte.ru site.


My elfinder-web2py is working partially already ( What missing is  download and Upload functions) , which can be fixed when i free in small time. Golden Boy , why not we work together on this instead of separating another one ?

Torex , there is some performance hit while browsing folders with many files

For example , my root folder + sub directories contains 3000 + files , which take 3900 ms for walking through directories +  getting json response and + around 4000

I can help improving performance on Walking directories in elfinder backend part.

I will try to implement faster directory walking using os.walk or caching dirlists.



Below is the Firebug profiler response:

Profile (7659.663ms, 276835 calls)
removeData()8365220.35%1558.544ms1558.544ms0.019ms0.006ms 446.163msjquery-1....1.min.js (line 38)
remove()2440312.84%983.222ms2292.791ms 0.094ms0.018ms446.965msjquery-1....1.min.js (line 51)
ab()1313512.58%963.605ms1344.82ms0.102ms0.056ms0.654ms jquery-1....1.min.js (line 49)
removeClass()327712.14%929.997ms2199.872ms 0.671ms0.028ms22.867msjquery-1....1.min.js (line 42)
ia()85.86%449.083ms2886.269ms360.784ms0.007ms2885.198ms jquery-1....1.min.js (line 112)
A()415.3%405.951ms405.951ms 9.901ms0.005ms207.67msjquery-1....1.min.js (line 86)
removeData()245653.91%299.849ms356.871ms0.015ms0.009ms0.179ms jquery-1....1.min.js (line 39)
replaceWith()13.52%269.832ms3169.609ms 3169.609ms3169.609ms3169.609msjquery-1....1.min.js (line 105)
trigger()98263.04%233.21ms1841.147ms0.187ms0.093ms441.418ms jquery-1....1.min.js (line 65)
_init()32682.33%178.167ms2390.789ms 0.732ms0.621ms22.921msjquery-u...om.min.js (line 36)
add()32722.27%173.546ms1772.807ms0.542ms0.45ms1.276ms jquery-u...om.min.js (line 11)
trigger()131352.26%173.194ms1518.014ms 0.116ms0.068ms0.712msjquery-1....1.min.js (line 65)
ready()32762.08%159.326ms159.538ms0.049ms0ms0.53ms jquery-1....1.min.js (line 26)
nodeName()11.56%119.122ms119.122ms 119.122ms119.122ms119.122msjquery-1....1.min.js (line 29)
add()32721.51%115.733ms4426.332ms1.353ms1.102ms23.573ms jquery-u...om.min.js (line 11)
error()262881.46%111.484ms111.484ms 0.004ms0.002ms0.073msjquery-1....1.min.js (line 28)
toggleClass()111.08%83.06ms84.575ms7.689ms0.027ms41.467ms jquery-1....1.min.js (line 43)
uaMatch()131220.88%67.21ms68.024ms 0.005ms0.004ms0.186msjquery-1....1.min.js (line 32)
error()131500.74%57.022ms57.022ms0.004ms0.002ms0.037ms jquery-1....1.min.js (line 28)
POS()33190.51%39.424ms39.424ms 0.012ms0.01ms0.062msjquery-1....1.min.js (line 85)
trim()98600.51%39.388ms5205.801ms0.528ms0.008ms4441.948ms jquery-1....1.min.js (line 30)
error()190.45%34.793ms300.029ms 15.791ms0.09ms90.199msjquery-1....1.min.js (line 74)
h13680.36%27.334ms27.334ms0.02ms0ms27.334ms elfinder.min.js (line 2)
CHILD()33460.33%25.617ms209.708ms 0.063ms0.003ms54.975msjquery-1....1.min.js (line 83)
add()420.31%24.021ms25.372ms0.604ms0.002ms3.654ms jquery-1....1.min.js (line 56)
init()33340.3%23.023ms315.531ms 0.095ms0.008ms207.826msjquery-1....1.min.js (line 21)
init()33340.27%20.687ms292.508ms0.088ms0.002ms207.819ms jquery-1....1.min.js (line 22)
text()33110.18%13.694ms13.694ms 0.004ms0.003ms0.022msjquery-1....1.min.js (line 100)
curCSS()80.15%11.115ms11.115ms1.389ms0.026ms4.898ms jquery-1....1.min.js (line 115)
ATTR()30.1%7.357ms7.357ms 2.452ms0.039ms3.686msjquery-1....1.min.js (line 79)
load()10.09%6.934ms6.934ms6.934ms6.934ms6.934ms jquery-1....1.min.js (line 117)
CLASS()450.06%4.667ms534.758ms 11.884ms0ms207.784msjquery-1....1.min.js (line 91)
f()10.06%4.581ms123.703ms123.703ms123.703ms123.703msjquery-1....1.min.js (line 130)
handle()420.05%3.815ms374.475ms 8.916ms0ms184.564msjquery-1....1.min.js (line 54)
after()30.05%3.653ms6.22ms2.073ms0.603ms4.99ms jquery-1....1.min.js (line 103)
o()440.04%3.167ms530.023ms 12.046ms0ms207.776msjquery-1....1.min.js (line 70)
abort()590.04%2.83ms8782.669ms 148.859ms0.012ms8779.999msjquery-1....1.min.js (line 127)
hide()60.04%2.8ms18.785ms3.131ms0.174ms8.218ms jquery-1....1.min.js (line 132)
remove()380.03%1.917ms376.392ms 9.905ms0.068ms185.069msjquery-1....1.min.js (line 50)
filter()290.02%1.726ms2.721ms0.094ms0.037ms0.169ms jquery-1....1.min.js (line 73)
elFinder()10.02%1.542ms3199.756ms 3199.756ms3199.756ms3199.756mselfinder.min.js (line 2)
handle()270.02%1.509ms302.864ms11.217ms0ms152.551ms jquery-1....1.min.js (line 53)
file()180.02%1.369ms177.022ms 9.835ms1.636ms54.966msjquery-1....1.min.js (line 81)
f()10.02%1.29ms14.912ms14.912ms14.912ms14.912ms jquery-1....1.min.js (line 122)
Ea()660.02%1.26ms1.26ms 0.019ms0.008ms0.036msjquery-1....1.min.js (line 92)
preventDefault()740.02%1.203ms1.581ms0.021ms0ms0.125ms jquery-1....1.min.js (line 58)
_init()40.01%1.072ms2.275ms 0.569ms0.519ms0.622msjquery-u...om.min.js (line 23)
elFinder()20.01%1.071ms73.539ms36.77ms0.166ms73.373ms elfinder.min.js (line 2)
empty()30.01%1.047ms1.145ms 0.382ms0.01ms1.124msjquery-1....1.min.js (line 110)
empty()70.01%1.021ms3.23ms0.461ms0.035ms1.844ms jquery-1....1.min.js (line 110)
ATTR()280.01%0.995ms0.995ms 0.036ms0.017ms0.053msjquery-1....1.min.js (line 79)
C()1020.01%0.951ms0.951ms0.009ms0.005ms0.047ms jquery-1....1.min.js (line 87)
Ba()240.01%0.885ms7.086ms 0.295ms0.02ms1.878msjquery-1....1.min.js (line 59)
fadeTo()60.01%0.838ms2.044ms0.341ms0.069ms0.635ms jquery-1....1.min.js (line 133)
enabled()70.01%0.515ms15.45ms 2.207ms0.008ms15.393msjquery-1....1.min.js (line 80)
filter()110.01%0.507ms181.532ms16.503ms0.183ms90.597ms jquery-1....1.min.js (line 98)
uaMatch()240.01%0.437ms7.523ms 0.313ms0.036ms1.895msjquery-1....1.min.js (line 32)
J380.01%0.388ms0.388ms0.01ms0.005ms0.015msjquery-1....1.min.js (line 18)
Ia()40%0.381ms0.381ms 0.095ms0.065ms0.156msjquery-1....1.min.js (line 99)
ready()300%0.378ms1.068ms0.036ms0.01ms0.078ms jquery-1....1.min.js (line 24)
hasClass()90%0.353ms3.089ms 0.343ms0.076ms0.937msjquery-1....1.min.js (line 44)
POS()510%0.347ms0.347ms0.007ms0.003ms0.026ms jquery-1....1.min.js (line 85)
filter()110%0.341ms1.292ms 0.117ms0.004ms0.468msjquery-1....1.min.js (line 73)
empty()30%0.226ms1.582ms0.527ms0.061ms1.455ms jquery-1....1.min.js (line 110)
filter()90%0.207ms0.332ms 0.037ms0.015ms0.091msjquery-1....1.min.js (line 98)
detach()30%0.204ms8.24ms2.747ms0.804ms6.609ms jquery-1....1.min.js (line 107)
ready()98540%0.176ms5204.731ms 0.528ms0.013ms4441.957msjquery-1....1.min.js (line 24)
grep()110%0.16ms0.253ms0.023ms0.004ms0.071ms jquery-1....1.min.js (line 31)
error()450%0.156ms0.156ms 0.003ms0.002ms0.009msjquery-1....1.min.js (line 28)
ready()170%0.156ms0.156ms0.009ms0.004ms0.018ms jquery-1....1.min.js (line 24)
not()130%0.152ms347.498ms 26.731ms0.02ms207.806msjquery-1....1.min.js (line 94)
uaMatch()50%0.148ms0.4ms0.08ms0.028ms0.122ms jquery-1....1.min.js (line 32)
elFinder()20%0.146ms300.092ms 150.046ms148.653ms151.439mselfinder.min.js (line 2)
elFinder()10%0.137ms1.98ms1.98ms1.98ms1.98ms elfinder.min.js (line 2)
ra30%0.136ms1.718ms 0.573ms0.091ms1.528msjquery-1....1.min.js (line 20)
error()240%0.131ms0.131ms 0.005ms0.003ms0.025msjquery-1....1.min.js (line 28)
empty()80%0.131ms3.546ms0.443ms0.021ms1.881ms jquery-1....1.min.js (line 110)
odd()200%0.126ms0.126ms 0.006ms0.004ms0.009msjquery-1....1.min.js (line 82)
Ia()90%0.125ms0.125ms0.014ms0.007ms0.023msjquery-1....1.min.js (line 99)
Y600%0.123ms0.123ms 0.002ms0.001ms0.003msjquery-1....1.min.js (line 18)
find()30%0.118ms1.909ms 0.636ms0.268ms0.854msjquery-1....1.min.js (line 93)
not()200%0.115ms0.168ms0.008ms0.006ms0.022ms jquery-1....1.min.js (line 94)
elFinder()10%0.111ms11.892ms 11.892ms11.892ms11.892mselfinder.min.js (line 2)
hasClass()90%0.11ms3.475ms0.386ms0.109ms0.972ms jquery-1....1.min.js (line 44)
trim()110%0.109ms0.109ms 0.01ms0.006ms0.016msjquery-1....1.min.js (line 30)
wrapAll()20%0.104ms3.057ms1.529ms1.454ms1.603ms jquery-1....1.min.js (line 101)
add()40%0.087ms4451.549ms 1112.887ms0.034ms4441.987msjquery-u...om.min.js (line 11)
not()240%0.084ms0.084ms0.004ms0.002ms0.006ms jquery-1....1.min.js (line 94)
attr()20%0.084ms0.136ms 0.068ms0.067ms0.069msjquery-1....1.min.js (line 47)
add()40%0.081ms1.203ms0.301ms0.278ms0.35msjquery-u...om.min.js (line 11)
andSelf()30%0.078ms0.956ms 0.319ms0.091ms0.451msjquery-1....1.min.js (line 96)
curCSS()80%0.077ms11.192ms1.399ms0.034ms4.908ms jquery-1....1.min.js (line 114)
add()20%0.076ms3.176ms 1.588ms1.551ms1.625msjquery-u...om.min.js (line 11)
elFinder()40%0.075ms0.127ms0.032ms0.018ms0.045ms elfinder.min.js (line 2)
Ia()110%0.074ms187.759ms 17.069ms0.175ms90.304msjquery-1....1.min.js (line 99)
elFinder()10%0.071ms5149.726ms5149.726ms5149.726ms5149.726ms elfinder.min.js (line 2)
hasClass()40%0.068ms0.068ms 0.017ms0.009ms0.028msjquery-1....1.min.js (line 45)
elFinder()10%0.067ms8654.25ms8654.25ms8654.25ms8654.25mselfinder.min.js (line 2)
grep()110%0.066ms0.066ms 0.006ms0.003ms0.029msjquery-1....1.min.js (line 31)
elFinder()10%0.064ms30.808ms30.808ms30.808ms30.808ms elfinder.min.js (line 2)
_init()20%0.062ms2.954ms 1.477ms1.373ms1.581msjquery-u...om.min.js (line 48)
elFinder()10%0.06ms16.792ms16.792ms16.792ms16.792ms elfinder.min.js (line 2)
elFinder()10%0.06ms11.637ms 11.637ms11.637ms11.637mselfinder.min.js (line 2)
filter()110%0.06ms187.685ms17.062ms0.17ms90.296ms jquery-1....1.min.js (line 73)
ajax()10%0.058ms0.058ms 0.058ms0.058ms0.058msjquery-1....1.min.js (line 121)
elFinder()10%0.058ms183.65ms183.65ms183.65ms183.65ms elfinder.min.js (line 2)
_init()20%0.056ms3.157ms 1.579ms1.37ms1.787msjquery-u...om.min.js (line 48)
elFinder()20%0.056ms1.056ms0.528ms0.517ms0.539ms elfinder.min.js (line 2)
L()200%0.053ms0.053ms 0.003ms0.002ms0.005msjquery-1....1.min.js (line 33)
Ia()40%0.052ms0.052ms 0.013ms0.006ms0.02msjquery-1....1.min.js (line 99)
elFinder()10%0.05ms231.315ms231.315ms231.315ms231.315mselfinder.min.js (line 2)
elFinder()10%0.048ms16.574ms 16.574ms16.574ms16.574mselfinder.min.js (line 2)
elFinder()10%0.047ms1.271ms1.271ms1.271ms1.271ms elfinder.min.js (line 2)
fadeTo()20%0.045ms1.347ms 0.674ms0.605ms0.742msjquery-1....1.min.js (line 134)
elFinder()20%0.044ms3.153ms1.577ms1.552ms1.601ms elfinder.min.js (line 2)
hover()20%0.041ms302.636ms 151.318ms150.067ms152.569msjquery-1....1.min.js (line 66)
b10%0.04ms8656.024ms8656.024ms8656.024ms8656.024ms jquery-1....1.min.js (line 122)
f()10%0.04ms0.126ms 0.126ms0.126ms0.126msjquery-1....1.min.js (line 130)
ATTR()90%0.039ms0.039ms 0.004ms0.003ms0.006msjquery-1....1.min.js (line 79)
Ba()10%0.037ms0.037ms0.037ms0.037ms0.037msjquery-1....1.min.js (line 59)
after()30%0.036ms8.276ms 2.759ms0.815ms6.622msjquery-1....1.min.js (line 103)
hover()40%0.036ms302.776ms75.694ms0.031ms152.603ms jquery-1....1.min.js (line 66)
f30%0.036ms0.229ms 0.076ms0.039ms0.13msjquery-1....1.min.js (line 123)
grep()20%0.034ms0.034ms 0.017ms0.015ms0.019msjquery-1....1.min.js (line 31)
f20%0.034ms0.041ms0.02ms0.018ms0.023msjquery-1....1.min.js (line 131)
index()30%0.031ms2.085ms 0.695ms0.345ms0.905msjquery-1....1.min.js (line 95)
fadeTo()20%0.031ms1.447ms0.724ms0.655ms0.792ms jquery-1....1.min.js (line 133)
add()10%0.03ms0.211ms 0.211ms0.211ms0.211msjquery-u...om.min.js (line 11)
pa50%0.028ms0.028ms0.006ms0.002ms0.008msjquery-1....1.min.js (line 19)
d20%0.028ms0.082ms 0.041ms0.037ms0.045msjquery-1....1.min.js (line 130)
nextUntil()40%0.027ms0.408ms 0.102ms0.07ms0.164msjquery-1....1.min.js (line 97)
httpData()10%0.027ms0.027ms0.027ms0.027ms0.027ms jquery-1....1.min.js (line 129)
elFinder()20%0.027ms3.18ms 1.59ms1.566ms1.614mselfinder.min.js (line 2)
elFinder()10%0.027ms8655.854ms8655.854ms8655.854ms8655.854ms elfinder.min.js (line 2)
elFinder()40%0.027ms0.027ms 0.007ms0.003ms0.01mselfinder.min.js (line 2)
elFinder()20%0.025ms0.342ms0.171ms0.163ms0.179ms elfinder.min.js (line 2)
elFinder()10%0.025ms0.721ms 0.721ms0.721ms0.721mselfinder.min.js (line 2)
elFinder()40%0.025ms0.025ms0.006ms0.003ms0.011ms elfinder.min.js (line 2)
ready()30%0.023ms0.023ms 0.008ms0.005ms0.009msjquery-1....1.min.js (line 24)
nextUntil()40%0.022ms0.074ms0.019ms0.01ms0.027ms jquery-1....1.min.js (line 97)
Ba()50%0.022ms0.022ms 0.004ms0.003ms0.006msjquery-1....1.min.js (line 59)
h10%0.022ms16.596ms16.596ms16.596ms16.596ms elfinder.min.js (line 2)
add()20%0.02ms3.196ms 1.598ms1.562ms1.634msjquery-u...om.min.js (line 11)
enabled()20%0.019ms0.019ms0.01ms0.008ms0.011ms jquery-1....1.min.js (line 80)
a()10%0.017ms441.435ms 441.435ms441.435ms441.435msjquery-1....1.min.js (line 68)
removeClass()20%0.016ms0.166ms 0.083ms0.079ms0.087msjquery-1....1.min.js (line 42)
d10%0.016ms0.085ms0.085ms0.085ms0.085msjquery-1....1.min.js (line 122)
ready()30%0.015ms0.038ms 0.013ms0.01ms0.014msjquery-1....1.min.js (line 24)
_init()10%0.015ms0.061ms0.061ms0.061ms0.061ms jquery-u...om.min.js (line 48)
elFinder()10%0.015ms0.015ms 0.015ms0.015ms0.015mselfinder.min.js (line 2)
X20%0.014ms0.15ms0.075ms0.073ms0.077msjquery-1....1.min.js (line 17)
elFinder()10%0.013ms0.179ms 0.179ms0.179ms0.179mselfinder.min.js (line 2)
elFinder()10%0.013ms73.386ms73.386ms73.386ms73.386ms elfinder.min.js (line 2)
elFinder()10%0.011ms8654.261ms 8654.261ms8654.261ms8654.261mselfinder.min.js (line 2)
load()10%0.009ms6.943ms6.943ms6.943ms6.943ms jquery-1....1.min.js (line 117)
elFinder()10%0.009ms7.168ms 7.168ms7.168ms7.168mselfinder.min.js (line 2)
enabled()10%0.008ms0.008ms0.008ms0.008ms0.008ms jquery-1....1.min.js (line 80)
A()10%0.008ms0.01ms 0.01ms0.01ms0.01msjquery-1....1.min.js (line 86)
index()10%0.008ms7.159ms 7.159ms7.159ms7.159msjquery-1....1.min.js (line 95)
elFinder()10%0.007ms0.007ms0.007ms0.007ms0.007ms elfinder.min.js (line 2)
elFinder()10%0.007ms0.007ms 0.007ms0.007ms0.007mselfinder.min.js (line 2)
add()10%0.006ms0.006ms0.006ms0.006ms0.006ms jquery-u...om.min.js (line 11)
elFinder()10%0.005ms0.005ms 0.005ms0.005ms0.005mselfinder.min.js (line 2)
elFinder()10%0.005ms0.005ms0.005ms0.005ms0.005ms elfinder.min.js (line 2)
elFinder()10%0.005ms0.005ms 0.005ms0.005ms0.005mselfinder.min.js (line 2)
elFinder()10%0.004ms0.004ms0.004ms0.004ms0.004ms elfinder.min.js (line 2)
elFinder()10%0.003ms0.003ms 0.003ms0.003ms0.003mselfinder.min.js (line 2)
elFinder()10%0.003ms0.003ms0.003ms0.003ms0.003ms elfinder.min.js (line 2)
odd()10%0.002ms0.002ms 0.002ms0.002ms0.002msjquery-1....1.min.js (line 82)
elFinder()10%0.002ms0.002ms0.002ms0.002ms0.002ms elfinder.min.js (line 2)

Troex Nevelin

unread,
Jul 1, 2010, 9:26:41 PM7/1/10
to web2py-users
I have some progress that should make your life easier.
Have a look at this revision
http://elrte.ru/redmine/projects/elfinder/repository/revisions/cc41850e7543640a268464a47c079b3da129709f
especially connector.py as it uses new way how pass parameters and get
back response.
Download/upload is working with CGI, now it is much more closer to
your implementation.

Hope this changes will help you.
> (line...
>
> read more »

Phyo Arkar

unread,
Jul 2, 2010, 3:41:56 PM7/2/10
to web...@googlegroups.com
Thats very good. I am checking out now.

mdipierro

unread,
Jul 2, 2010, 6:53:03 PM7/2/10
to web2py-users
Thank you Troex and everybody on this thread for all your help on this
thread. I am now busy with something else but I would like to have a
elfinder based version of web2py admin by the end of the summer.

Massimo

On 1 Lug, 20:26, Troex Nevelin <tr...@fury.scancode.ru> wrote:
> I have some progress that should make your life easier.
> Have a look at this revisionhttp://elrte.ru/redmine/projects/elfinder/repository/revisions/cc4185...
> ...
>
> leggi tutto

Phyo Arkar

unread,
Jul 2, 2010, 7:08:39 PM7/2/10
to web...@googlegroups.com
Mass

Thanks a lot. we will need your help if you free.

While converting from CGI (elfinder is with cgilib) to web2py , some problems i have currently are :

- Uploads and Download (how should i make it use web2py version of upload and downloads ?)

Phyo Arkar

unread,
Jul 2, 2010, 7:13:08 PM7/2/10
to web...@googlegroups.com
Another thing , how can i serve file, to be able to download directly out of web2py's application folder? Is it allowed? I guess not.

mdipierro

unread,
Jul 4, 2010, 5:47:29 AM7/4/10
to web2py-users
Hello Troex,

I very much like elRTE but I cannot find a way to customize the header
beyond the tiny, compact, etc. options. I would like have a toolbar
with:
bold, italic, underline, color, underline, alignment options, heading/
paragraph options, ul, ol, link, image, flash, table, expand but no
save and no font size/face option. I would like it to fit in one
line. Is this possible? where can i find documentation?

On 1 Lug, 05:22, Troex Nevelin <tr...@fury.scancode.ru> wrote:
> About starting google group I think no, this is more political
> question, we have our own resources (git, issues, wiki, forum). People
> who develop elRTE and elFinder also develop commercial projects
> therefore it is good to have all development in one place. Btw
> elFinder was started not "just for fun" but as commercial need.
>
> > About elRTE, do you plan to integrate it with elfinder and python as
>
> well?
> elFinder integrates well with elRTE here is dochttp://elrte.ru/redmine/projects/elfinder/wiki/Integration_EN
Message has been deleted

GoldenTiger

unread,
Jul 4, 2010, 8:05:39 AM7/4/10
to web2py-users
Phyo
>>GoldenBoy , why not we work together on this instead of separating another one ?

yes, of course, that's why i suggested some place to work together
like a google group or similar

>>Another thing , how can i serve file, to be able to download directly out of
>>web2py's application folder? Is it allowed? I guess not.

not sure about what you want to say
are you talking about how to download a file located for example at
web2py/deposit/file.w2p ?

web2py can read/write the same files as user account, but the download
is done by URL(), takes public folders as parameters. this function
can't serve non-public files directly, a controller is needed

what user is intended for?
1-admin of web2py?
2-admin of an app?
3- or end user?

An end user should have limited permissions to folders on the
application.
I see very interesting the integration with admin application, so we
can manage files easily and use elRTE for html edition, totally online

Troex: I saw the domain elfinder.com is bought, is it yours?

Massimo,
have you been thinking about implementation concepts? I'd love to
know a little about your approach of elfinder based admin

mdipierro

unread,
Jul 4, 2010, 8:50:16 AM7/4/10
to web2py-users
Right now we have admin

I think we could have an alternative admin (we could ship them as one
app but we should depelop it separately) which sees the applications
folder as an elFinder file structure but not a real one, a virtual one
(except for static files). We would need custom hanlders for the event
of creating fileds and folder. For example when a new folder is
created under applications, welcome.w2p has to be expended in there.
It should be forbidden to edit a non-py file under controllers/models
and non-html files under views/ etc. Some virtual files may be listed
that do not correspond to real files. For example one that contains
the results of tests and one that contains the appadmin (the same one
we have now).

These are just prelimiary ideas. Everything is open for discoussion.

Massimo

Troex Nevelin

unread,
Jul 4, 2010, 9:11:17 AM7/4/10
to web...@googlegroups.com
That is possible, sorry for missing documentation, I've have updated it,
grab it here
http://elrte.ru/redmine/projects/elrte/wiki/Docs_EN#Custom-toolbar

GoldenTiger

unread,
Jul 4, 2010, 9:33:52 AM7/4/10
to web2py-users
>>It should be forbidden to edit a non-py file under controllers/models
>>and non-html files under views/
Aham, actual admin allows edit non-html under views,
then one of your target is to get enforced good practices, isn't?
I have some ideas too, I'll comment them soon


>>I very much like elRTE but I cannot find a way to customize the header
>>beyond the tiny, compact, etc. options.
>>I would like it to fit in one line

i think composition of toolbar is made in "src/elrte/js/
elRTE.options.js",
take a look at its content:
----------------------------------------------
....
panels : {
save : ['save'],
copypaste : ['copy', 'cut', 'paste', 'pastetext',
'pasteformattext', 'removeformat', 'docstructure'],
undoredo : ['undo', 'redo'],
style : ['bold', 'italic', 'underline', 'strikethrough',
'subscript', 'superscript'],
colors : ['forecolor', 'hilitecolor'],
alignment : ['justifyleft', 'justifycenter', 'justifyright',
'justifyfull'],
indent : ['outdent', 'indent'],
format : ['formatblock', 'fontsize', 'fontname'],
lists : ['insertorderedlist', 'insertunorderedlist'],
elements : ['horizontalrule', 'blockquote', 'div', 'stopfloat',
'css', 'nbsp'],
links : ['link', 'unlink', 'anchor'],
images : ['image'],
media : ['image', 'flash'],
tables : ['table', 'tableprops', 'tablerm', 'tbrowbefore',
'tbrowafter', 'tbrowrm', 'tbcolbefore', 'tbcolafter', 'tbcolrm',
'tbcellprops', 'tbcellsmerge', 'tbcellsplit'],
elfinder : ['elfinder'],
fullscreen : ['fullscreen']
},
toolbars : {
tiny : ['style'],
compact : ['save', 'undoredo', 'style', 'alignment', 'lists',
'links', 'fullscreen'],
normal : ['save', 'copypaste', 'undoredo', 'style', 'alignment',
'colors', 'indent', 'lists', 'links', 'elements', 'images',
'fullscreen'],
complete : ['save', 'copypaste', 'undoredo', 'style', 'alignment',
'colors', 'format', 'indent', 'lists', 'links', 'elements', 'media',
'fullscreen'],
maxi : ['save', 'copypaste', 'undoredo', 'elfinder', 'style',
'alignment', 'colors', 'format', 'indent', 'lists', 'links',
'elements', 'media', 'tables', 'fullscreen'],
eldorado : ['save', 'copypaste', 'elfinder', 'undoredo', 'style',
'alignment', 'colors', 'format', 'indent', 'lists', 'links',
'elements', 'media', 'tables', 'fullscreen']

},
panelNames : {
save : 'Save',
copypaste : 'Copy/Pase',
undoredo : 'Undo/Redo',
style : 'Text styles',
colors : 'Colors',
alignment : 'Alignment',
indent : 'Indent/Outdent',
format : 'Text format',
lists : 'Lists',
elements : 'Misc elements',
links : 'Links',
images : 'Images',
media : 'Media',
tables : 'Tables',
elfinder : 'File manager (elFinder)'
Message has been deleted

GoldenTiger

unread,
Jul 4, 2010, 9:41:33 AM7/4/10
to web2py-users
> That is possible, sorry for missing documentation, I've have updated it,
> grab it herehttp://elrte.ru/redmine/projects/elrte/wiki/Docs_EN#Custom-toolbar

Great!! Thanks a lot !!

mdipierro

unread,
Jul 4, 2010, 9:57:01 AM7/4/10
to web2py-users
Thanks for the QUICK repl ;-)

On 4 Lug, 08:11, Troex Nevelin <tr...@fury.scancode.ru> wrote:
> That is possible, sorry for missing documentation, I've have updated it,
> grab it herehttp://elrte.ru/redmine/projects/elrte/wiki/Docs_EN#Custom-toolbar

Phyo Arkar

unread,
Jul 5, 2010, 12:13:25 AM7/5/10
to web...@googlegroups.com, tr...@fury.scancode.ru, Massimo Di Pierro
Hello All

I have made elfinder web2py-app  please check here : http://code.google.com/p/elfinder-web2py/downloads/list now it can be directly installed (when you install , re-name it to filemanager so module imports will work)

In this  version I got both uploads/downloads working fine! and can deploy directly as web2py application now.

Hello Troex

Please review in the code in my mercurial repo : http://code.google.com/p/elfinder-web2py/source/browse/

--Added new option , noHash , which disable Hashing (Sacrificing Speed for Security)
--At  line 211  Reset self._response['error']  and httpstatus so it dont locked in one folder forever, when an error occoured
--Around Line 219 - 230 , To prevent directory locking (When new file is created/changed/uploaded)
--Also i remove all other archiever checks , they cost a lot of performance , python code should check form arc option and determine to check archiever or not at all. Especially bzip2 --version , it freeze Elfinder ,for my OS (Gentoo)

Phyo Arkar

unread,
Jul 5, 2010, 12:14:44 AM7/5/10
to web...@googlegroups.com, tr...@fury.scancode.ru, Massimo Di Pierro
Also thanks a lot to Troex , your fixes make me a lot easier to integrate.

Phyo Arkar

unread,
Jul 6, 2010, 8:22:00 AM7/6/10
to Massimo Di Pierro, web...@googlegroups.com, Troex Nevelin
can you explain me more how to ?

On Mon, Jul 5, 2010 at 7:30 PM, Phyo Arkar <phyo.ar...@gmail.com> wrote:
Glad that you like it Massimo , Would be really nice to integrate it inside Admin.


I am planning to make it a plugin but plugins for web2py is a bit new to me.

> 1) replace all path = '/path/to'+'/'+filename with path = os.path.join('/path/to',
filename)
Means all paths, static paths ? Or at where elfinder''s option (Root) ?

and
> 4) create a models/plugin_elfinder that defines a function plugin_elfinder(....) such that

I am not clear about this , can you give me an example ?


On Mon, Jul 5, 2010 at 12:21 PM, Massimo Di Pierro <mdip...@cs.depaul.edu> wrote:
I have a request....

I can post it as it is on appliances but that is more of a repository of exmaples. I think what you have would make a nice plugin. I can turn it into a plugin but it would take less time to you Phyo. Here is what to do:
1) replace all path = '/path/to'+'/'+filename with path = os.path.join('/path/to',filename)
2) rename the controller plugin_elfinder 
3) move modules/* into modules/plugin_elfinder/
4) create a models/plugin_elfinder that defines a function plugin_elfinder(....) such that
5) rewrite index.html as 

{{extend 'layout.html'}}
{{=plugin_elfinder(os.path.join(request.folder,'private'))}}

Does this make sense?

In this way people would download the plugin instead of the app and easily plug it into any app.

Massimo

Fernando Vieira

unread,
Jul 8, 2013, 1:40:42 PM7/8/13
to web...@googlegroups.com, Massimo Di Pierro
I installed the application, it works, but I can not edit

when I start the application I get a warning: invalid parameters
Reply all
Reply to author
Forward
0 new messages