PluginWebDav » History » Version 1

Arnaud Martel, 2010-07-06 17:11
Creation

1 1 Arnaud Martel
h1. Introduction
2 1 Arnaud Martel
3 1 Arnaud Martel
This WebDav plugin is mainly a POC (proof of concept) for accessing files and documents using WebDav protocol. 
4 1 Arnaud Martel
This plugin is a fork of this existing railsdav plugin (""railsdav":http://github.com/funkensturm/railsdav) with some modifications to make it run with REDMINE.
5 1 Arnaud Martel
6 1 Arnaud Martel
This was done using REDMINE r3826 (=> 0.9.5 +) but any release after 0.9 should work
7 1 Arnaud Martel
8 1 Arnaud Martel
Main features:
9 1 Arnaud Martel
*  webdav access to a project is done using an url like http://myserver/redmine/webdav
10 1 Arnaud Martel
* the plugin allows you to see folders with the following structure:
11 1 Arnaud Martel
<pre>
12 1 Arnaud Martel
project1
13 1 Arnaud Martel
   + documents
14 1 Arnaud Martel
   |    + title_document1
15 1 Arnaud Martel
   |    |     + file1
16 1 Arnaud Martel
   |    |     + file2
17 1 Arnaud Martel
   |    |     
18 1 Arnaud Martel
   |    + title_document2
19 1 Arnaud Martel
   |          + file1
20 1 Arnaud Martel
   |          + file2
21 1 Arnaud Martel
   |
22 1 Arnaud Martel
   + files
23 1 Arnaud Martel
        + file1 (with no version)
24 1 Arnaud Martel
        + file2 (with no version)
25 1 Arnaud Martel
        + Version1
26 1 Arnaud Martel
        |     + file1
27 1 Arnaud Martel
        |     + file2
28 1 Arnaud Martel
        |
29 1 Arnaud Martel
        + Version2
30 1 Arnaud Martel
              + file1
31 1 Arnaud Martel
              + file2
32 1 Arnaud Martel
project2
33 1 Arnaud Martel
   + documents
34 1 Arnaud Martel
   + files
35 1 Arnaud Martel
project3
36 1 Arnaud Martel
   + documents
37 1 Arnaud Martel
38 1 Arnaud Martel
</pre>
39 1 Arnaud Martel
* plugin is using REDMINE permissions (:view_files, :manage_files, :view_documents and :manage_documents) to grant access to files and folders/documents
40 1 Arnaud Martel
* plugin allows you all files operations (create, delete, rename, move and copy)
41 1 Arnaud Martel
* plugin allows you to create documents (just create a folder inside documents folder) but version creation is not allowed
42 1 Arnaud Martel
43 1 Arnaud Martel
44 1 Arnaud Martel
45 1 Arnaud Martel
h1. Setup
46 1 Arnaud Martel
47 1 Arnaud Martel
WEBDAV is using basic HTTP authentication which is not supported in REDMINE core (at least in 0.9.5). A workaround is to use this very nice plugin "redmine_http_auth":http://github.com/AdamLantos/redmine_http_auth in conjunction with Apache and RedmineAdvanced.pm (located in  redmine_webdav/extra/svn)
48 1 Arnaud Martel
49 1 Arnaud Martel
h3. 1. Install plugin into vendor/plugins
50 1 Arnaud Martel
51 1 Arnaud Martel
If you want to install redmine_http_auth, run the following command from your redmine directory:
52 1 Arnaud Martel
* ruby script/plugin install http://github.com/AdamLantos/redmine_http_auth.git
53 1 Arnaud Martel
54 1 Arnaud Martel
Then install redmine_webdav with:
55 1 Arnaud Martel
* ruby script/plugin install http://github.com/amartel/redmine_webdav.git
56 1 Arnaud Martel
57 1 Arnaud Martel
No DB migration is required...
58 1 Arnaud Martel
59 1 Arnaud Martel
h3. 2. Get the required gems
60 1 Arnaud Martel
61 1 Arnaud Martel
<a href="http://github.com/stueccles/railsdav">Railsdav</a> needs these 2 plugins:
62 1 Arnaud Martel
* unicode
63 1 Arnaud Martel
* shared-mime-info
64 1 Arnaud Martel
65 1 Arnaud Martel
Under linux, install is done with:
66 1 Arnaud Martel
* sudo gem install unicode
67 1 Arnaud Martel
* sudo gem install shared-mime-info
68 1 Arnaud Martel
69 1 Arnaud Martel
h3. 3. Configure your web server
70 1 Arnaud Martel
71 1 Arnaud Martel
Assuming you are using RHEL5/CentOS5:
72 1 Arnaud Martel
* Copy redmine_webdav/extra/svn/RedmineAdavanced.pm in /etc/httpd/Apache/Authn
73 1 Arnaud Martel
* Create the file /etc/httpd/conf.d/redmine_webdav.conf
74 1 Arnaud Martel
75 1 Arnaud Martel
<pre>
76 1 Arnaud Martel
<Location /redmine/webdav>
77 1 Arnaud Martel
   AuthType Basic
78 1 Arnaud Martel
   AuthName REDMINE
79 1 Arnaud Martel
   Require valid-user
80 1 Arnaud Martel
   PerlAccessHandler Apache::Authn::RedmineAdvanced::access_handler
81 1 Arnaud Martel
   PerlAuthenHandler Apache::Authn::RedmineAdvanced::authen_handler
82 1 Arnaud Martel
   RedmineDSN "DBI:mysql:database=redmine;host=192.168.10.1;port=3306"
83 1 Arnaud Martel
   RedmineDbUser "redmine"
84 1 Arnaud Martel
   RedmineDbPass "password"
85 1 Arnaud Martel
   RedmineAuthenticationOnly "On"
86 1 Arnaud Martel
  Order allow,deny
87 1 Arnaud Martel
  Allow from 127.0.0.1
88 1 Arnaud Martel
  Satisfy Any
89 1 Arnaud Martel
</Location>
90 1 Arnaud Martel
</pre>
91 1 Arnaud Martel
92 1 Arnaud Martel
h3. 4. Restart your web server
93 1 Arnaud Martel
94 1 Arnaud Martel
/etc/init.d/httpd restart
95 1 Arnaud Martel
96 1 Arnaud Martel
h3. 5. Configure REDMINE with your web browser
97 1 Arnaud Martel
98 1 Arnaud Martel
If everything is OK, you should see both plugins (WebDav and HTTP authentication) in the plugin list (Administration -> Plugins)
99 1 Arnaud Martel
100 1 Arnaud Martel
A new permission is now available (Webdav access) and you have to assign it to the roles you need
101 1 Arnaud Martel
102 1 Arnaud Martel
h3. 6. Set up your project
103 1 Arnaud Martel
104 1 Arnaud Martel
Don't forget to activate the webdav module in the projects where you want to access files over WevDav
105 1 Arnaud Martel
106 1 Arnaud Martel
h3. 7. Use webdav to manage files and documents
107 1 Arnaud Martel
108 1 Arnaud Martel
You have to use a WebDav client in order to use the plugin. 
109 1 Arnaud Martel
110 1 Arnaud Martel
For MacOSX (webdav access is natively supported):
111 1 Arnaud Martel
* Open the finder and choose "Go to -> Connect to server..."
112 1 Arnaud Martel
* enter *http://myserver/redmine/webdav* as the url of the server
113 1 Arnaud Martel
* enter your credentials (login/password)
114 1 Arnaud Martel
* You're in
115 1 Arnaud Martel
116 1 Arnaud Martel
117 1 Arnaud Martel
For linux:
118 1 Arnaud Martel
TODO
119 1 Arnaud Martel
120 1 Arnaud Martel
For WindowsXP:
121 1 Arnaud Martel
* Open *My Network Places*.
122 1 Arnaud Martel
* Double-click *Add Network Place*.
123 1 Arnaud Martel
* Click Next twice, then type *http://myserver/redmine/webdav*
124 1 Arnaud Martel
* Click Next
125 1 Arnaud Martel
* enter your credentials (login/password)
126 1 Arnaud Martel
* Click Finish
127 1 Arnaud Martel
128 1 Arnaud Martel
129 1 Arnaud Martel
130 1 Arnaud Martel
131 1 Arnaud Martel
h1. Original author's README:
132 1 Arnaud Martel
133 1 Arnaud Martel
Railsdav (WebDAV for Ruby On Rails)
134 1 Arnaud Martel
===================================
135 1 Arnaud Martel
136 1 Arnaud Martel
THIS IS A MODIFIED VERSION OF THE ORIGINAL Railsdav, created by Marcello Nuccio.  I have done it because I was not able to make to use the original one.
137 1 Arnaud Martel
138 1 Arnaud Martel
139 1 Arnaud Martel
READ COMMENTS IN lib/acts_as_webdav.rb TO START!
140 1 Arnaud Martel
141 1 Arnaud Martel
142 1 Arnaud Martel
Railsdav is a plugin which allows for custom WebDAV controllers to be added to a Ruby On Rails application to expose functionality as filesystems to WebDAV clients such as Mac OS X Finder, Windows Network Places, Dreamweaver etc.
143 1 Arnaud Martel
144 1 Arnaud Martel
Railsdav requires the following gems in addition to rails
145 1 Arnaud Martel
146 1 Arnaud Martel
* unicode (gem install unicode)
147 1 Arnaud Martel
* shared-mime-info (gem install shared-mime-info)
148 1 Arnaud Martel
149 1 Arnaud Martel
Railsdav was created by Stuart Eccles (http://www.liverail.net/). I'd like to thank the following people for assisting with Railsdav
150 1 Arnaud Martel
151 1 Arnaud Martel
*   Albert Ramstedt who contributed bug fixes for a variety of code issues and helped with re-structuring the plugin
152 1 Arnaud Martel
*   Alex MacCaw
153 1 Arnaud Martel
*   Fabien Franzen