Coder Social home page Coder Social logo

redmine_dmsf's Introduction

Redmine DMSF Plugin 3.1.6

GitHub CI Support Ukraine Badge

Redmine DMSF is Document Management System Features plugin for Redmine issue tracking system; It is aimed to replace current Redmine's Documents module.

Redmine DMSF now comes bundled with WebDAV functionality: if switched on within plugin settings this will be accessible from /dmsf/webdav.

WebDAV functionality is provided through Dav4Rack library.

The development has been supported by Kontron and has been released as open source thanks to their generosity.
Project home: https://github.com/danmunn/redmine_dmsf

Redmine Document Management System "Features" plugin is distributed under GNU General Public License v2 (GPL).
Redmine is a flexible project management web application, released under the terms of the GNU General Public License v2 (GPL) at https://www.redmine.org/

Further information about the GPL license can be found at https://www.gnu.org/licenses/old-licenses/gpl-2.0.html#SEC1

Features

  • Directory structure
  • Document versioning / revision history
  • Document locking
  • Multi (drag/drop depending on browser) upload/download
  • Direct document or document link sending via email
  • Configurable document approval workflow
  • Document access auditing
  • Integration with Redmine's activity feed
  • Wiki macros for a quick content linking
  • Full read/write WebDAV functionality
  • Optional document content full-text search
  • Documents and folders' symbolic links
  • Trash bin
  • Documents attachable to issues
  • Office documents are displayed inline
  • Editing of office documents
  • REST API
  • DMS Document revision as a custom field type
  • Compatible with Redmine 5.0.x

Dependencies

  • Redmine 5.0 or higher

Full-text search (optional)

Indexing

If you want to use full-text search features, you must setup file content indexing.

It is necessary to index DMSF files with omindex before searching attempts to receive some output:

  1. Change the configuration part of redmine_dmsf/extra/xapian_indexer.rb file according to your environment. (The path to the index database set in xapian_indexer.rb must corresponds to the path set in the plugin's settings.)
  2. Run ruby redmine_dmsf/extra/xapian_indexer.rb -v

This command should be run on regular basis (e.g. from cron)

Example of cron job (once per hour at 8th minute):

8 * * * * root /usr/bin/ruby redmine_dmsf/extra/xapian_indexer.rb

See redmine_dmsf/extra/xapian_indexer.rb for help.

Searching

If you want to use fulltext search abilities, install xapian packages. In case of using of Bitnami stack or Ruby installed via RVM it might be necessary to install Xapian bindings from sources. See https://xapian.org for details.

To index some files with omega you may have to install some other packages like xpdf, antiword, ...

From Omega documentation:

  • HTML (.html, .htm, .shtml, .shtm, .xhtml, .xhtm)
  • PHP (.php) - our HTML parser knows to ignore PHP code
  • text files (.txt, .text)
  • SVG (.svg)
  • CSV (Comma-Separated Values) files (.csv)
  • PDF (.pdf) if pdftotext is available (comes with poppler or xpdf)
  • PostScript (.ps, .eps, .ai) if ps2pdf (from ghostscript) and pdftotext (comes with poppler or xpdf) are available
  • OpenOffice/StarOffice documents (.sxc, .stc, .sxd, .std, .sxi, .sti, .sxm, .sxw, .sxg, .stw) if unzip is available
  • OpenDocument format documents (.odt, .ods, .odp, .odg, .odc, .odf, .odb, .odi, .odm, .ott, .ots, .otp, .otg, .otc, .otf, .oti, .oth) if unzip is available
  • MS Word documents (.dot) if antiword is available (.doc files are left to libmagic, as they may actually be RTF (AbiWord saves RTF when asked to save as .doc, and Microsoft Word quietly loads RTF files with a .doc extension), or plain-text).
  • MS Excel documents (.xls, .xlb, .xlt, .xlr, .xla) if xls2csv is available (comes with catdoc)
  • MS Powerpoint documents (.ppt, .pps) if catppt is available (comes with catdoc)
  • MS Office 2007 documents (.docx, .docm, .dotx, .dotm, .xlsx, .xlsm, .xltx, .xltm, .pptx, .pptm, .potx, .potm, .ppsx, .ppsm) if unzip is available
  • Wordperfect documents (.wpd) if wpd2text is available (comes with libwpd)
  • MS Works documents (.wps, .wpt) if wps2text is available (comes with libwps)
  • MS Outlook message (.msg) if perl with Email::Outlook::Message and HTML::Parser modules is available
  • MS Publisher documents (.pub) if pub2xhtml is available (comes with libmspub)
  • AbiWord documents (.abw)
  • Compressed AbiWord documents (.zabw)
  • Rich Text Format documents (.rtf) if unrtf is available
  • Perl POD documentation (.pl, .pm, .pod) if pod2text is available
  • reStructured text (.rst, .rest) if rst2html is available (comes with docutils)
  • Markdown (.md, .markdown) if markdown is available
  • TeX DVI files (.dvi) if catdvi is available
  • DjVu files (.djv, .djvu) if djvutxt is available
  • XPS files (.xps) if unzip is available
  • Debian packages (.deb, .udeb) if dpkg-deb is available
  • RPM packages (.rpm) if rpm is available
  • Atom feeds (.atom)
  • MAFF (.maff) if unzip is available
  • MHTML (.mhtml, .mht) if perl with MIME::Tools is available
  • MIME email messages (.eml) and USENET articles if perl with MIME::Tools and HTML::Parser is available
  • vCard files (.vcf, .vcard) if perl with Text::vCard is available

You can use following commands to install some of the required indexing tools:

On Debian use:

sudo apt-get install xapian-omega ruby-xapian libxapian-dev poppler-utils antiword unzip catdoc libwpd-tools \
libwps-tools gzip unrtf catdvi djview djview3 uuid uuid-dev xz-utils libemail-outlook-message-perl

On Ubuntu use:

sudo apt-get install xapian-omega ruby-xapian libxapian-dev poppler-utils antiword  unzip catdoc libwpd-tools \
libwps-tools gzip unrtf catdvi djview djview3 uuid uuid-dev xz-utils libemail-outlook-message-perl

On CentOS use:

sudo yum install xapian-core xapian-bindings-ruby libxapian-dev poppler-utils antiword unzip catdoc libwpd-tools \
libwps-tools gzip unrtf catdvi djview djview3 uuid uuid-dev xz libemail-outlook-message-perl

Inline displaying of office documents (optional)

If LibreOffice binary libreoffice is present in the server, office documents (.odt, .ods,...) are displayed inline. The command must be runable by the web app's user. Test it in advance, e.g:

sudo -u www-data libreoffice --convert-to pdf my_document.odt

libreoffice package is available in the most of Linux distributions, e.g. on Debain based systems:

sudo apt install libreoffice liblibreoffice-java

Usage

DMSF is designed to act as project module, so it must be checked as an enabled module within the project settings.

Search will now automatically search DMSF content when a Redmine search is performed, additionally a "Documents" and "Folders" check box will be visible, allowing you to search DMSF content exclusively.

Linking DMSF object from Wiki entries (macros)

You can link DMSF object from Wikis using a macro tag {{ }}. List of available macros with their description is available from the wiki's toolbar.

Hooks

You can implement these hooks in your plugin and extend DMSF functionality in certain events.

E.g.

class DmsfUploadControllerHooks < Redmine::Hook::Listener

    def dmsf_upload_controller_after_commit(context={}) 
        context[:controller].flash[:info] = 'Okay'
    end

end

dmsf_upload_controller_after_commit

Called after all uploaded files are committed.

parameters: files

dmsf_helper_upload_after_commit

Called after an individual file is committed. The controller is not available.

Parameters: file

dmsf_workflow_controller_before_approval

Called before an approval. If the hook returns false, the approval is not recorded.

parameters: revision, step_action

dmsf_files_controller_before_view

Allows a preview of the file by an external plugin. If the hook returns true, the file is not sent by DMSF. It is expected that the file is sent by the hook.

parameters: file

Setup / Upgrade

You can either clone the master branch or download the latest zipped version. Before installing ensure that the Redmine instance is stopped.

git clone [email protected]:danmunn/redmine_dmsf.git
   
wget https://github.com/danmunn/redmine_dmsf/archive/master.zip
  1. In case of upgrade BACKUP YOUR DATABASE, ORIGINAL PLUGIN AND THE FOLDER WITH DOCUMENTS first!!!

  2. Put redmine_dmsf plugin directory into plugins. The plugins sub-directory must be named just redmine_dmsf. In case of need rename redmine_dmsf-x.y.z to redmine_dmsf.

  3. Go to the redmine directory

    cd redmine

  4. Install dependencies:

    bundle install

    4.1 In production environment

     bundle config set --local without 'development test`
     bundle install
    

    4.2 Without Xapian fulltext search (on Windows)

     bundle config set --local without 'xapian'
     bundle install
    
  5. Initialize/Update database:

    RAILS_ENV=production bundle exec rake redmine:plugins:migrate NAME=redmine_dmsf

  6. The access rights must be set for web server, e.g.:

    chown -R www-data:www-data plugins/redmine_dmsf.

  7. Restart the web server, e.g.:

    systemctl restart apache2

  8. You should configure the plugin via Redmine interface: Administration -> Plugins -> DMSF -> Configure. (You should check and then save the plugin's configuration after each upgrade.)

  9. Don't forget to grant permissions for DMSF in Administration -> Roles and permissions

  10. Assign DMSF permissions to appropriate roles.

  11. There are a few rake tasks:

    I) To convert documents from the standard Redmine document module

    Available options:
    
        * project - id or identifier of a project (default to all projects)
        * dry_run - perform just a check without any conversion
        * issues - Convert also files attached to issues
    
    Example:
        
        rake redmine:dmsf_convert_documents project=test RAILS_ENV="production"
    
        (If you don't run the rake task as the web server user, don't forget to change the ownership of the imported files, e.g.
          chown -R www-data:www-data /redmine/files/dmsf
        afterwards)
    

    II) To alert all users who are expected to do an approval in the current approval steps

    Example:
        
        rake redmine:dmsf_alert_approvals RAILS_ENV="production"   
    

    III) To create missing checksums for all document revisions

    Available options:
    
      * dry_run - test, no changes to the database          
      * forceSHA256 - replace old MD5 with SHA256
    
    Example:
    
      bundle exec rake redmine:dmsf_create_digests RAILS_ENV="production"
      bundle exec rake redmine:dmsf_create_digests forceSHA256=1 RAILS_ENV="production"
      bundle exec rake redmine:dmsf_create_digests dry_run=1 RAILS_ENV="production"
    

    IV) To maintain DMSF

    * Remove all files with no database record from the document directory
    * Remove all links project_id = -1 (added links to an issue which hasn't been created)
    
    Available options:
    
      * dry_run - No physical deletion but to list of all unused files only
    
    Example:
    
      rake redmine:dmsf_maintenance RAILS_ENV="production"
      rake redmine:dmsf_maintenance dry_run=1 RAILS_ENV="production"
    

WebDAV

In order to enable WebDAV module, it is necessary to put the following code into yor config/additional_environment.rb

# Redmine DMSF's WebDAV
require File.dirname(__FILE__) + '/plugins/redmine_dmsf/lib/redmine_dmsf/webdav/custom_middleware'
config.middleware.insert_before ActionDispatch::Cookies, RedmineDmsf::Webdav::CustomMiddleware

Installation in a sub-uri

In order to documents and folders are available via WebDAV in case that the Redmine is configured to be run in a sub-uri it's necessary to add the following configuration option into your config/additional_environment.rb:

config.relative_url_root = '/redmine'

Uninstalling DMSF

Before uninstalling the DMSF plugin, please ensure that the Redmine instance is stopped.

  1. cd [redmine-install-dir]
  2. rake redmine:plugins:migrate NAME=redmine_dmsf VERSION=0 RAILS_ENV=production
  3. rm plugins/redmine_dmsf -Rf

After these steps re-start your instance of Redmine.

Contributing

If you've added something, why not share it. Fork the repository (github.com/danmunn/redmine_dmsf), make the changes and send a pull request to the maintainers.

Changes with tests, and full documentation are preferred.

Additional Documentation

CHANGELOG.md - Project changelog


Special thanks to JetBrains logo for providing an excellent IDE.

redmine_dmsf's People

Contributors

ahorek avatar art4 avatar atmis avatar ayapapa avatar carlolars avatar chris-ibcsf avatar danmunn avatar dombru avatar gnn avatar hryamzik avatar jniggemann avatar jokogr avatar kacerr avatar kiorky avatar laurentpsychedelic avatar liaham avatar lpereira98 avatar ludovic-gasc avatar lyollix avatar mrak0s avatar nsilent22 avatar picman avatar potatogim avatar salmanmp avatar scratchbuild avatar toroliu avatar victorlcampos avatar williamschey avatar wolfc01 avatar zdravko avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

redmine_dmsf's Issues

Screeners

Can please you publish some screeners and a feature list?

Thanks bin advance

A few questions about the plugin (possible improvements)

First, is it possible to know what are all the documents locked by each user like in "My page" for issues?

Second, is the plugin DMSF adequate for hundreds of files? In my case, the interface becomes slow.

Third, does the simple document approval workflow can be assigned to a user?

Best Regards,

Cannot create new project

I have installed dmsf with the configuration below, without xapian.
Since then I cannot create a new project (Internal Server Error 500).
If I uninstall dmsf then everything is fine.

Where can I get the error log to help you see what is wrong ?

Environment:
Redmine version 2.0.3.stable
Ruby version 1.8.7 (x86_64-linux)
Rails version 3.2.6
Environment production
Database adapter MySQL
Redmine plugins:
redmine_dmsf 1.4.3 stable

Extended locking model

DMSF has a single mode exclusive lock, however with the introduction with Webdav, this is inefficient as all other locks are returned as created but ignored (write exclusive from webdav is treated as the same exclusive lock); further locks do not expire.

Question comes in:
1: Should locks have an TTL (unless flagged as "forever", through UI or otherwise)?
2: Should UI be presented when making a revision of a file (if file is locked to user) asking if they wish to have a lock made?
3: Should we allow multiple locks on a file, eg: shared locking?
4: In which cases do we indicate to a user that a resource is locked? (only write locks should be indicated, as other locks are indication of intent)
5: What impact is this going to have on WebDav functionality - as it complies with existing locking mechanism (to a degree).
6: Should additional logging effort be made for clashes with file locks?

Webdav incorrectly provides empty listing for non-DMSF enabled projects

When accessing with a GET request

http://.../dmsf/webdav/project2 (which does not have DMSF enabled on it, shows a directory listing with no contents, when it should include 404 error as project is inaccessible to webdav. Ultimately this could mean that DMSF items are listed againts non-enabled projects when using PUT etc.

Improve model relations

At present models relate via use of has_many and conditions set within - which for functionality sake works, however is exceptionally limiting.

There is an open feature request on google code which asks for the ability to hold "public" items, and the manual permission check on items isn't really feasible in this scope.

Instead, if we use a lambda scope function (say visible, to keep with the convention that redmine uses), we could then start not listing deleted files, but also running an appropriate visibility check (such as deletion, but permission and a public check too). Further as this develops it means we could look at some point in the future at overhauling the permissions in play on the plugin and assigning permissions perhaps on folder and file directly? (though this isn't a scheduled change ... yet).

As we move forward it becomes apparent that when a project is deleted the DMSF data is retained (I'm going to view this as an error, as data shouldn't really ever be orphaned), due to the fact that data links are not ever flagged with dependency action (destroy in this case):

The proposal is as the following:
Through project patch, add 2 has_many links that list dependency deletions (dmsf_files and dmsf_folders)
In the dmsf_folder model, take the file link conditions out, and add a lambda function into dmsf_files
In the dmsf_file model take the link conditions out, and add a lambda function into dmsf_file_revisions.
Provide link between revisions and dmsf_file_revision_access (with dependency destroy)
update the link between dmsf_file and dmsf_lock with relevent dependency destroy.

If there are any comments on this please advise.

Error 500 when deleting a file

Hello,
We are using redmine_dmsf devel-1.4.5 under redmine 2.0.2 with ruby 1.8 under debian wheezy.
When deleting a file, we got an error 500.
----------------8<------- LOG FILE ----------------8<-------
tarted POST "/dmsf/files/33/delete" for 172.16.1.249 at Wed Jul 18 17:12:53 +0200 2012
Processing by DmsfFilesController#delete as HTML
Parameters: {"id"=>"33", "utf8"=>"รข~~S", "authenticity_token"=>"UuC7Vx+VGYbi1Orsi1+LYxbaGLOtoIe0CEdiBRCda2E="}
2012-07-18 17:12:54 [email protected]/: deleted dmsf://exemplefx/33/
Rendered plugins/redmine_dmsf/app/views/dmsf_mailer/files_deleted.text.erb within layouts/mailer (3.9ms)
Completed 500 Internal Server Error in 534ms

ActionView::Template::Error (undefined method title' for nil:NilClass): 1: User <%= @user %> deleted DMSF files in project <%= @project.name %>: 2: <% @files.each do |file| %> 3: <%= file.dmsf_path_str %> (<%= file.name %>), <%= number_to_human_size(file.last_revision.size) %>, version: <%= file.last_revision.major_version %>.<%= file.last_revision.minor_version %> 4: 5: <% end %> app/models/mailer.rb:406:inmail'
app/models/mailer.rb:405:in mail' app/models/mailer.rb:416:ininitialize'
app/models/mailer.rb:429:in `method_missing'
----------------8<------- LOG FILE ----------------8<-------
Thanks again for this great plugin.
Cheers

Redmine 1.4.4 git clone redmine_dmsf rake fails afterwards

Hi,

i tried the plugin and git cloned it, then bundled the gems, everything fine since i try to rake afterwards.

i get this then:

rake aborted!
uninitialized constant ActionDispatch
/opt/redmine/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:469:in load_missing_constant' /opt/redmine/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:106:inconst_missing'
/opt/redmine/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:118:in const_missing' /opt/redmine/apps/redmine/htdocs/vendor/plugins/redmine_dmsf/lib/redmine_dmsf/webdav/no_parse.rb:49 /opt/redmine/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:184:inrequire'
/opt/redmine/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:184:in require' /opt/redmine/apps/redmine/htdocs/vendor/plugins/redmine_dmsf/lib/redmine_dmsf/webdav.rb:21 /opt/redmine/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:184:inrequire'
/opt/redmine/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:184:in require' /opt/redmine/apps/redmine/htdocs/vendor/plugins/redmine_dmsf/lib/redmine_dmsf.rb:6 /opt/redmine/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:184:inrequire'
/opt/redmine/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:184:in require' /opt/redmine/apps/redmine/htdocs/vendor/plugins/redmine_dmsf/init.rb:21:inevaluate_init_rb'
/opt/redmine/ruby/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/rails/plugin.rb:158:in evaluate_init_rb' /opt/redmine/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/core_ext/kernel/reporting.rb:11:insilence_warnings'
/opt/redmine/ruby/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/rails/plugin.rb:154:in evaluate_init_rb' /opt/redmine/ruby/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/rails/plugin.rb:48:inload'
/opt/redmine/apps/redmine/htdocs/config/../vendor/plugins/engines/lib/engines/plugin.rb:44:in load' /opt/redmine/ruby/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/rails/plugin/loader.rb:38:inload_plugins'
/opt/redmine/ruby/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/rails/plugin/loader.rb:37:in each' /opt/redmine/ruby/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/rails/plugin/loader.rb:37:inload_plugins'
/opt/redmine/ruby/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/initializer.rb:369:in load_plugins' /opt/redmine/ruby/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/initializer.rb:165:inprocess'
/opt/redmine/ruby/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/initializer.rb:113:in send' /opt/redmine/ruby/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/initializer.rb:113:inrun'
/opt/redmine/apps/redmine/htdocs/config/environment.rb:21
/opt/redmine/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:182:in require' /opt/redmine/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:182:inrequire'
/opt/redmine/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:547:in new_constants_in' /opt/redmine/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:182:inrequire'
/opt/redmine/apps/redmine/htdocs/vendor/plugins/Redmine-Periodic-Task/lib/tasks/periodictask.rake:7
/opt/redmine/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:171:in load_without_new_constant_marking' /opt/redmine/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:171:inload'
/opt/redmine/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:547:in new_constants_in' /opt/redmine/ruby/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/dependencies.rb:171:inload'
/opt/redmine/ruby/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/tasks/rails.rb:13
/opt/redmine/ruby/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/tasks/rails.rb:13:in each' /opt/redmine/ruby/lib/ruby/gems/1.8/gems/rails-2.3.14/lib/tasks/rails.rb:13 /opt/redmine/apps/redmine/htdocs/Rakefile:15:inrequire'
/opt/redmine/apps/redmine/htdocs/Rakefile:15
/opt/redmine/ruby/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/rake_module.rb:25:in load' /opt/redmine/ruby/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/rake_module.rb:25:inload_rakefile'
/opt/redmine/ruby/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:501:in raw_load_rakefile' /opt/redmine/ruby/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:82:inload_rakefile'
/opt/redmine/ruby/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:133:in standard_exception_handling' /opt/redmine/ruby/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:81:inload_rakefile'
/opt/redmine/ruby/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:65:in run' /opt/redmine/ruby/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:133:instandard_exception_handling'
/opt/redmine/ruby/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/application.rb:63:in run' /opt/redmine/ruby/lib/ruby/gems/1.8/gems/rake-0.9.2.2/bin/rake:33 /opt/redmine/ruby/bin/rake:19:inload'
/opt/redmine/ruby/bin/rake:19

Error when uploading locked file

When a file is uploaded which is locked, the following error occures:
NameError (uninitialized constant DmsfUploadController::DmsfFileLock):
plugins/redmine_dmsf/app/controllers/dmsf_upload_controller.rb:136:in commit_files' plugins/redmine_dmsf/app/controllers/dmsf_upload_controller.rb:87:ineach_value'
plugins/redmine_dmsf/app/controllers/dmsf_upload_controller.rb:87:in `commit_files'

Used the version: 93284f0

Thanks for the great work!

Greats,
Robbedoes

"page not found"

After installing danmunn-redmine_dmsf-e46d07e.zip with redmine 2.0.3, the main pages for dmsf are not displayed anymore. What went wrong?

The direct links by using e.g. {{{dmsf(44)}}} are still accessible.

Here the production.log:

Started GET "/projects/pilot/dmsf" for 10.10.21.195 at 2012-09-07 08:34:32 +0200

AbstractController::ActionNotFound (The action 'pilot' could not be found for ProjectsController):
actionpack (3.2.6) lib/abstract_controller/base.rb:116:in process' actionpack (3.2.6) lib/abstract_controller/rendering.rb:45:inprocess'
actionpack (3.2.6) lib/action_controller/metal.rb:203:in dispatch' actionpack (3.2.6) lib/action_controller/metal/rack_delegation.rb:14:indispatch'
actionpack (3.2.6) lib/action_controller/metal.rb:246:in block in action' actionpack (3.2.6) lib/action_dispatch/routing/route_set.rb:73:incall'
actionpack (3.2.6) lib/action_dispatch/routing/route_set.rb:73:in dispatch' actionpack (3.2.6) lib/action_dispatch/routing/route_set.rb:36:incall'
...

Error : undefined method `size' for nil:NilClass

The issue is described here http://code.google.com/p/redmine-dmsf/issues/detail?id=191

It seems to happen when the upload doesn't complete for some reason. The dmsf_file doesn't have a dmsf_file_revision. The only way to access DMSF again is to delete manually the corrupted entry in the database :

To identify any files missing revisions:

SELECT * FROM dmsf_files
WHERE NOT EXISTS(
SELECT * FROM dmsf_file_revisions
WHERE dmsf_file_revisions.dmsf_file_id = dmsf_files.id
)

And delete the files missing revisions to recover from the problem:

DELETE FROM dmsf_files
WHERE NOT EXISTS(
SELECT * FROM dmsf_file_revisions
WHERE dmsf_file_revisions.dmsf_file_id = dmsf_files.id
)

It could be great that when a file is corrupted, we still can access it and maybe have the possibility to delete it directly from Redmine and not going to the database ?

Cannot properly operate with Webdav

I have DMSF 1.4.4 plugin on my Redmine 2.0.3 server. I'm not able to properly operate with Webdav.

I first had to modify Windows 7 registry to allow basic authentication for Webdav under Windows Explorer :

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\WebClient\Parameters : change key BasicAuthLevel to 2

Otherwise, I could not access it. The authentication window was popping up over and over after entering a correct username and password. How authentication works?

So now I can access with Webdav but cannot write. For example, if a drag and drop a file in, this error appear : "Cannot read from the source file or disk". I tried with a administrator and also with a member role with all permissions for DMSF.

Thanks for your help!

Improve/AJAXify DMSF browsing UI

At present the UI for DMSF is quite clunky and I think it could do with an overhaul.

The following is proposed:

  • Replace current file / folder browse functionality
  • Implement an AJAX powered replacement
  • enable drag/drop functionality into the UI - enabling files and folders to be moved with ease.
  • enable renaming file elements with ease
  • Interaction with said area with keyboard shortcuts (F2, delete, enter, arrow keys - perhaps even ctrl+c/ctrl+v/ctrl+x)
  • Enable multi object selection for interaction within said area.
  • Provide full functionality for graceful degradation should user not have JS enabled browser.

This is an open issue, and it'd be great to get feedback from users about functionality they'd like to see - or even some assistance / input on UI design (and subsequent ideas) etc.

Documents not found after upgrade from DMSF v1.3 to v1.4.5

We upgraded the DMSF plugin from v1.3 to v1.4.5. After the upgrade, a few DMSF documents were missing (download failed with "Redmine 500 error"). This is the top of the backtrace in our production.log:

ActionController::MissingFile (Cannot read file /var/redmine-dmsf/p_newproject/130209148904_159_my_document.docx):
  actionpack (3.2.6) lib/action_controller/metal/data_streaming.rb:71:in `send_file'
  actionpack (3.2.6) lib/action_controller/metal/instrumentation.rb:48:in `send_file'
  activesupport (3.2.6) lib/active_support/notifications.rb:123:in `instrument'
  activesupport (3.2.6) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
  activesupport (3.2.6) lib/active_support/notifications.rb:123:in `instrument'
  actionpack (3.2.6) lib/action_controller/metal/instrumentation.rb:46:in `send_file'
  plugins/redmine_dmsf/app/controllers/dmsf_files_controller.rb:220:in `send_revision'
  plugins/redmine_dmsf/app/controllers/dmsf_files_controller.rb:51:in `show'
  actionpack (3.2.6) lib/action_controller/metal/implicit_render.rb:4:in `send_action'

The missing documents had been copied from project "oldproject" to "newproject" before the upgrade. "oldproject" was archived after the documents were copied.
The document has not been updated after it had been copied.
The missing file was moved to "p_oldproject" during the upgrade.

It looks like DMSF does not create a new file on the hard drive when a document is copied in the DMSF web interface, and the migration script fails to create copies in all target folders during the upgrade.

Append File Revision on filename when downloading file

A minor feature that would be excellent is if when the file is downloaded, either when clicked on or when packaged in a zip file, the major and minor version numbers would be included in the file name. Ideally they would appear tagged onto the end of the file. For example, a file Test.doc with version 1.4 would become Test_1-4.doc or something similar.

Redmine 2.0.3 1.4.4p2 stable problem on dmfs file information history and webdav

Hi,

i installed a fresh install of redmine 2.0.3 but i had to bundle without xapian and postgresql, sqlite.
DMFS works fine and installed then.

Problem is:

  1. i can access the file history page of a file as long as it has not been downloaded.
    After that i have this error in the logs.

Started GET "/redmine/dmsf/files/3" for 192.168.0.33 at Tue Jul 17 14:49:30 +0200 2012
Processing by DmsfFilesController#show as HTML
Parameters: {"id"=>"3"}
Rendered plugins/redmine_dmsf/app/views/dmsf/_path.html.erb (0.6ms)
Rendered plugins/redmine_dmsf/app/views/dmsf_files/_file_new_revision.html.erb (34.6ms)
Rendered plugins/redmine_dmsf/app/views/dmsf/_custom_fields.html.erb (2.1ms)
Rendered plugins/redmine_dmsf/app/views/dmsf_files/_revision_access.html.erb (132.4ms)
Rendered plugins/redmine_dmsf/app/views/dmsf_files/show.html.erb within layouts/base (191.1ms)
Completed 500 Internal Server Error in 227ms

ActionView::Template::Error (wrong number of arguments (1 for 0)):
13:
14: <%=link_to_user(access.user)%>
15: <%=access["count"]%>
16: <%=access.min.to_s(:db)%>
17: <%=access.max.to_s(:db)%>
18:
19: <% end %>
plugins/redmine_dmsf/app/views/dmsf_files/_revision_access.html.erb:16:in to_s' plugins/redmine_dmsf/app/views/dmsf_files/_revision_access.html.erb:16:in_plugins_redmine_dmsf_app_views_dmsf_files__revision_access_html_erb___1129680921_70265489464640'
activerecord (3.2.6) lib/active_record/relation/delegation.rb:6:in each' activerecord (3.2.6) lib/active_record/relation/delegation.rb:6:insend'
activerecord (3.2.6) lib/active_record/relation/delegation.rb:6:in each' plugins/redmine_dmsf/app/views/dmsf_files/_revision_access.html.erb:12:in_plugins_redmine_dmsf_app_views_dmsf_files__revision_access_html_erb___1129680921_70265489464640'
actionpack (3.2.6) lib/action_view/template.rb:145:in send' actionpack (3.2.6) lib/action_view/template.rb:145:inrender'
activesupport (3.2.6) lib/active_support/notifications.rb:125:in instrument' actionpack (3.2.6) lib/action_view/template.rb:143:inrender'
actionpack (3.2.6) lib/action_view/renderer/partial_renderer.rb:265:in render_partial' actionpack (3.2.6) lib/action_view/renderer/partial_renderer.rb:238:inrender'
actionpack (3.2.6) lib/action_view/renderer/abstract_renderer.rb:38:in instrument' activesupport (3.2.6) lib/active_support/notifications.rb:123:ininstrument'
activesupport (3.2.6) lib/active_support/notifications/instrumenter.rb:20:in instrument' activesupport (3.2.6) lib/active_support/notifications.rb:123:ininstrument'
actionpack (3.2.6) lib/action_view/renderer/abstract_renderer.rb:38:in instrument' actionpack (3.2.6) lib/action_view/renderer/partial_renderer.rb:237:inrender'
actionpack (3.2.6) lib/action_view/renderer/renderer.rb:41:in render_partial' actionpack (3.2.6) lib/action_view/renderer/renderer.rb:15:inrender'
actionpack (3.2.6) lib/action_view/helpers/rendering_helper.rb:24:in render_without_update' prototype-rails (3.2.1) lib/prototype-rails/rendering.rb:8:inrender'
plugins/redmine_dmsf/app/views/dmsf_files/show.html.erb:129:in _plugins_redmine_dmsf_app_views_dmsf_files_show_html_erb__1700552360_70265490680800' plugins/redmine_dmsf/app/views/dmsf_files/show.html.erb:59:ineach'
plugins/redmine_dmsf/app/views/dmsf_files/show.html.erb:59:in _plugins_redmine_dmsf_app_views_dmsf_files_show_html_erb__1700552360_70265490680800' actionpack (3.2.6) lib/action_view/template.rb:145:insend'
actionpack (3.2.6) lib/action_view/template.rb:145:in render' activesupport (3.2.6) lib/active_support/notifications.rb:125:ininstrument'
actionpack (3.2.6) lib/action_view/template.rb:143:in render' actionpack (3.2.6) lib/action_view/renderer/template_renderer.rb:47:inrender_template'
actionpack (3.2.6) lib/action_view/renderer/abstract_renderer.rb:38:in instrument' activesupport (3.2.6) lib/active_support/notifications.rb:123:ininstrument'
activesupport (3.2.6) lib/active_support/notifications/instrumenter.rb:20:in instrument' activesupport (3.2.6) lib/active_support/notifications.rb:123:ininstrument'
actionpack (3.2.6) lib/action_view/renderer/abstract_renderer.rb:38:in instrument' actionpack (3.2.6) lib/action_view/renderer/template_renderer.rb:46:inrender_template'
actionpack (3.2.6) lib/action_view/renderer/template_renderer.rb:54:in render_with_layout' actionpack (3.2.6) lib/action_view/renderer/template_renderer.rb:45:inrender_template'
actionpack (3.2.6) lib/action_view/renderer/template_renderer.rb:18:in render' actionpack (3.2.6) lib/action_view/renderer/renderer.rb:36:inrender_template'
actionpack (3.2.6) lib/action_view/renderer/renderer.rb:17:in render' actionpack (3.2.6) lib/abstract_controller/rendering.rb:110:in_render_template'
actionpack (3.2.6) lib/action_controller/metal/streaming.rb:225:in _render_template' actionpack (3.2.6) lib/abstract_controller/rendering.rb:103:inrender_to_body'
actionpack (3.2.6) lib/action_controller/metal/renderers.rb:28:in render_to_body' actionpack (3.2.6) lib/action_controller/metal/compatibility.rb:50:inrender_to_body'
actionpack (3.2.6) lib/abstract_controller/rendering.rb:88:in render' actionpack (3.2.6) lib/action_controller/metal/rendering.rb:16:inrender'
actionpack (3.2.6) lib/action_controller/metal/instrumentation.rb:40:in render' activesupport (3.2.6) lib/active_support/core_ext/benchmark.rb:5:inms'
/opt/redmine/ruby/lib/ruby/1.8/benchmark.rb:308:in realtime' activesupport (3.2.6) lib/active_support/core_ext/benchmark.rb:5:inms'
actionpack (3.2.6) lib/action_controller/metal/instrumentation.rb:40:in render' actionpack (3.2.6) lib/action_controller/metal/instrumentation.rb:83:incleanup_view_runtime'
activerecord (3.2.6) lib/active_record/railties/controller_runtime.rb:24:in cleanup_view_runtime' actionpack (3.2.6) lib/action_controller/metal/instrumentation.rb:39:inrender'
plugins/redmine_dmsf/app/controllers/dmsf_files_controller.rb:61:in show' actionpack (3.2.6) lib/action_controller/metal/implicit_render.rb:4:insend_action'
actionpack (3.2.6) lib/action_controller/metal/implicit_render.rb:4:in send_action' actionpack (3.2.6) lib/abstract_controller/base.rb:167:inprocess_action'
actionpack (3.2.6) lib/action_controller/metal/rendering.rb:10:in process_action' actionpack (3.2.6) lib/abstract_controller/callbacks.rb:18:inprocess_action'
activesupport (3.2.6) lib/active_support/callbacks.rb:469:in _run__558712993__process_action__1738412532__callbacks' activesupport (3.2.6) lib/active_support/callbacks.rb:405:insend'
activesupport (3.2.6) lib/active_support/callbacks.rb:405:in __run_callback' activesupport (3.2.6) lib/active_support/callbacks.rb:385:in_run_process_action_callbacks'
activesupport (3.2.6) lib/active_support/callbacks.rb:81:in send' activesupport (3.2.6) lib/active_support/callbacks.rb:81:inrun_callbacks'
actionpack (3.2.6) lib/abstract_controller/callbacks.rb:17:in process_action' actionpack (3.2.6) lib/action_controller/metal/rescue.rb:29:inprocess_action'
actionpack (3.2.6) lib/action_controller/metal/instrumentation.rb:30:in process_action' activesupport (3.2.6) lib/active_support/notifications.rb:123:ininstrument'
activesupport (3.2.6) lib/active_support/notifications/instrumenter.rb:20:in instrument' activesupport (3.2.6) lib/active_support/notifications.rb:123:ininstrument'
actionpack (3.2.6) lib/action_controller/metal/instrumentation.rb:29:in process_action' actionpack (3.2.6) lib/action_controller/metal/params_wrapper.rb:206:inprocess_action'
activerecord (3.2.6) lib/active_record/railties/controller_runtime.rb:18:in process_action' actionpack (3.2.6) lib/abstract_controller/base.rb:121:inprocess'
actionpack (3.2.6) lib/abstract_controller/rendering.rb:45:in process' actionpack (3.2.6) lib/action_controller/metal.rb:203:indispatch'
actionpack (3.2.6) lib/action_controller/metal/rack_delegation.rb:14:in dispatch' actionpack (3.2.6) lib/action_controller/metal.rb:246:inaction'
actionpack (3.2.6) lib/action_dispatch/routing/route_set.rb:73:in call' actionpack (3.2.6) lib/action_dispatch/routing/route_set.rb:73:indispatch'
actionpack (3.2.6) lib/action_dispatch/routing/route_set.rb:36:in call' journey (1.0.3) lib/journey/router.rb:68:incall'
journey (1.0.3) lib/journey/router.rb:56:in each' journey (1.0.3) lib/journey/router.rb:56:incall'
actionpack (3.2.6) lib/action_dispatch/routing/route_set.rb:600:in call' rack-openid (1.3.1) lib/rack/openid.rb:98:incall'
actionpack (3.2.6) lib/action_dispatch/middleware/best_standards_support.rb:17:in call' rack (1.4.1) lib/rack/etag.rb:23:incall'
rack (1.4.1) lib/rack/conditionalget.rb:25:in call' actionpack (3.2.6) lib/action_dispatch/middleware/head.rb:14:incall'
actionpack (3.2.6) lib/action_dispatch/middleware/params_parser.rb:21:in call' plugins/redmine_dmsf/lib/redmine_dmsf/webdav/no_parse.rb:33:incall'
actionpack (3.2.6) lib/action_dispatch/middleware/flash.rb:242:in call' rack (1.4.1) lib/rack/session/abstract/id.rb:205:incontext'
rack (1.4.1) lib/rack/session/abstract/id.rb:200:in call' actionpack (3.2.6) lib/action_dispatch/middleware/cookies.rb:338:incall'
activerecord (3.2.6) lib/active_record/query_cache.rb:64:in call' activerecord (3.2.6) lib/active_record/connection_adapters/abstract/connection_pool.rb:473:incall'
actionpack (3.2.6) lib/action_dispatch/middleware/callbacks.rb:28:in call' activesupport (3.2.6) lib/active_support/callbacks.rb:405:in_run__4384754__call__4__callbacks'
activesupport (3.2.6) lib/active_support/callbacks.rb:405:in send' activesupport (3.2.6) lib/active_support/callbacks.rb:405:in__run_callback'
activesupport (3.2.6) lib/active_support/callbacks.rb:385:in _run_call_callbacks' activesupport (3.2.6) lib/active_support/callbacks.rb:81:insend'
activesupport (3.2.6) lib/active_support/callbacks.rb:81:in run_callbacks' actionpack (3.2.6) lib/action_dispatch/middleware/callbacks.rb:27:incall'
actionpack (3.2.6) lib/action_dispatch/middleware/remote_ip.rb:31:in call' actionpack (3.2.6) lib/action_dispatch/middleware/debug_exceptions.rb:16:incall'
actionpack (3.2.6) lib/action_dispatch/middleware/show_exceptions.rb:56:in call' railties (3.2.6) lib/rails/rack/logger.rb:26:incall_app'
railties (3.2.6) lib/rails/rack/logger.rb:16:in call' actionpack (3.2.6) lib/action_dispatch/middleware/request_id.rb:22:incall'
rack (1.4.1) lib/rack/methodoverride.rb:21:in call' rack (1.4.1) lib/rack/runtime.rb:17:incall'
activesupport (3.2.6) lib/active_support/cache/strategy/local_cache.rb:72:in call' rack (1.4.1) lib/rack/lock.rb:15:incall'
actionpack (3.2.6) lib/action_dispatch/middleware/static.rb:62:in call' rack-cache (1.2) lib/rack/cache/context.rb:136:inforward'
rack-cache (1.2) lib/rack/cache/context.rb:245:in fetch' rack-cache (1.2) lib/rack/cache/context.rb:185:inlookup'
rack-cache (1.2) lib/rack/cache/context.rb:66:in call!' rack-cache (1.2) lib/rack/cache/context.rb:51:incall'
railties (3.2.6) lib/rails/engine.rb:479:in call' railties (3.2.6) lib/rails/application.rb:220:incall'
railties (3.2.6) lib/rails/railtie/configurable.rb:30:in send' railties (3.2.6) lib/rails/railtie/configurable.rb:30:inmethod_missing'
passenger (3.0.12) lib/phusion_passenger/rack/request_handler.rb:96:in process_request' passenger (3.0.12) lib/phusion_passenger/abstract_request_handler.rb:513:inaccept_and_process_next_request'
passenger (3.0.12) lib/phusion_passenger/abstract_request_handler.rb:274:in main_loop' passenger (3.0.12) lib/phusion_passenger/classic_rails/application_spawner.rb:321:instart_request_handler'
passenger (3.0.12) lib/phusion_passenger/classic_rails/application_spawner.rb:275:in send' passenger (3.0.12) lib/phusion_passenger/classic_rails/application_spawner.rb:275:inhandle_spawn_application'
passenger (3.0.12) lib/phusion_passenger/utils.rb:479:in safe_fork' passenger (3.0.12) lib/phusion_passenger/classic_rails/application_spawner.rb:270:inhandle_spawn_application'
passenger (3.0.12) lib/phusion_passenger/abstract_server.rb:357:in __send__' passenger (3.0.12) lib/phusion_passenger/abstract_server.rb:357:in server_main_loop'
passenger (3.0.12) lib/phusion_passenger/abstract_server.rb:206:instart_synchronously' passenger (3.0.12) lib/phusion_passenger/abstract_server.rb:180:in start'
passenger (3.0.12) lib/phusion_passenger/classic_rails/application_spawner.rb:149:instart' passenger (3.0.12) lib/phusion_passenger/spawn_manager.rb:219:in spawn_rails_application'
passenger (3.0.12) lib/phusion_passenger/abstract_server_collection.rb:132:inlookup_or_add' passenger (3.0.12) lib/phusion_passenger/spawn_manager.rb:214:in spawn_rails_application'
passenger (3.0.12) lib/phusion_passenger/abstract_server_collection.rb:82:insynchronize' passenger (3.0.12) lib/phusion_passenger/abstract_server_collection.rb:79:in synchronize'
passenger (3.0.12) lib/phusion_passenger/spawn_manager.rb:213:inspawn_rails_application' passenger (3.0.12) lib/phusion_passenger/spawn_manager.rb:132:in spawn_application'
passenger (3.0.12) lib/phusion_passenger/spawn_manager.rb:275:inhandle_spawn_application' passenger (3.0.12) lib/phusion_passenger/abstract_server.rb:357:in send'
passenger (3.0.12) lib/phusion_passenger/abstract_server.rb:357:inserver_main_loop' passenger (3.0.12) lib/phusion_passenger/abstract_server.rb:206:in start_synchronously'
passenger (3.0.12) helper-scripts/passenger-spawn-server:99

The second problem ist webdav:

Started GET "/redmine/projects/test/dmsf/webdav" for 192.168.0.33 at Tue Jul 17 14:50:18 +0200 2012

ActionController::RoutingError (No route matches [GET] "/projects/test/dmsf/webdav"):
actionpack (3.2.6) lib/action_dispatch/middleware/debug_exceptions.rb:21:in call' actionpack (3.2.6) lib/action_dispatch/middleware/show_exceptions.rb:56:incall'
railties (3.2.6) lib/rails/rack/logger.rb:26:in call_app' railties (3.2.6) lib/rails/rack/logger.rb:16:incall'
actionpack (3.2.6) lib/action_dispatch/middleware/request_id.rb:22:in call' rack (1.4.1) lib/rack/methodoverride.rb:21:incall'
rack (1.4.1) lib/rack/runtime.rb:17:in call' activesupport (3.2.6) lib/active_support/cache/strategy/local_cache.rb:72:incall'
rack (1.4.1) lib/rack/lock.rb:15:in call' actionpack (3.2.6) lib/action_dispatch/middleware/static.rb:62:incall'
rack-cache (1.2) lib/rack/cache/context.rb:136:in forward' rack-cache (1.2) lib/rack/cache/context.rb:245:infetch'
rack-cache (1.2) lib/rack/cache/context.rb:185:in lookup' rack-cache (1.2) lib/rack/cache/context.rb:66:incall!'
rack-cache (1.2) lib/rack/cache/context.rb:51:in call' railties (3.2.6) lib/rails/engine.rb:479:incall'
railties (3.2.6) lib/rails/application.rb:220:in call' railties (3.2.6) lib/rails/railtie/configurable.rb:30:insend'
railties (3.2.6) lib/rails/railtie/configurable.rb:30:in method_missing' passenger (3.0.12) lib/phusion_passenger/rack/request_handler.rb:96:inprocess_request'
passenger (3.0.12) lib/phusion_passenger/abstract_request_handler.rb:513:in accept_and_process_next_request' passenger (3.0.12) lib/phusion_passenger/abstract_request_handler.rb:274:inmain_loop'
passenger (3.0.12) lib/phusion_passenger/classic_rails/application_spawner.rb:321:in start_request_handler' passenger (3.0.12) lib/phusion_passenger/classic_rails/application_spawner.rb:275:insend'
passenger (3.0.12) lib/phusion_passenger/classic_rails/application_spawner.rb:275:in handle_spawn_application' passenger (3.0.12) lib/phusion_passenger/utils.rb:479:insafe_fork'
passenger (3.0.12) lib/phusion_passenger/classic_rails/application_spawner.rb:270:in handle_spawn_application' passenger (3.0.12) lib/phusion_passenger/abstract_server.rb:357:insend'
passenger (3.0.12) lib/phusion_passenger/abstract_server.rb:357:in server_main_loop' passenger (3.0.12) lib/phusion_passenger/abstract_server.rb:206:instart_synchronously'
passenger (3.0.12) lib/phusion_passenger/abstract_server.rb:180:in start' passenger (3.0.12) lib/phusion_passenger/classic_rails/application_spawner.rb:149:instart'
passenger (3.0.12) lib/phusion_passenger/spawn_manager.rb:219:in spawn_rails_application' passenger (3.0.12) lib/phusion_passenger/abstract_server_collection.rb:132:inlookup_or_add'
passenger (3.0.12) lib/phusion_passenger/spawn_manager.rb:214:in spawn_rails_application' passenger (3.0.12) lib/phusion_passenger/abstract_server_collection.rb:82:insynchronize'
passenger (3.0.12) lib/phusion_passenger/abstract_server_collection.rb:79:in synchronize' passenger (3.0.12) lib/phusion_passenger/spawn_manager.rb:213:inspawn_rails_application'
passenger (3.0.12) lib/phusion_passenger/spawn_manager.rb:132:in spawn_application' passenger (3.0.12) lib/phusion_passenger/spawn_manager.rb:275:inhandle_spawn_application'
passenger (3.0.12) lib/phusion_passenger/abstract_server.rb:357:in __send__' passenger (3.0.12) lib/phusion_passenger/abstract_server.rb:357:inserver_main_loop'
passenger (3.0.12) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
passenger (3.0.12) helper-scripts/passenger-spawn-server:99

i get a 404.

keep up the brilliant work!

Search fails on Redmine 2.0

On Redmine 2.0 search fails with a complain about merge_conditions

What helped was to implement it in app/models/dmsf_file.rb:

  def self.merge_conditions(*conditions)
   segments = []

   conditions.each do |condition|
     unless condition.blank?
       sql = sanitize_sql(condition)
       segments << sql unless sql.blank?
     end
   end

   "(#{segments.join(') AND (')})" unless segments.empty?
  end

But I don't know if this is a "good" solution...

PostgreSQL: rake migrate error (column "dmsf_file_locks.id" must appear in the GROUP BY clause or be used in an aggregate function)

While installing redmine_dmsf 1.4.4p2 (with updated init.rb) on Windows 2008, Redmine 2.0.3 and Postgres, I encountered the following error. Redmine is configured with Postgres so I assume it's sending MySQL specific SQL that PostgreSQL does not understand.

==  Dmsf144: migrating ========================================================
-- add_column(:dmsf_file_locks, :entity_type, :integer, {:null=>true})
   -> 0.0000s
-- add_column(:dmsf_file_locks, :lock_type_cd, :integer, {:null=>true})
   -> 0.0000s
-- add_column(:dmsf_file_locks, :lock_scope_cd, :integer, {:null=>true})
   -> 0.0000s
-- add_column(:dmsf_file_locks, :uuid, :string, {:limit=>36, :null=>true})
   -> 0.0000s
-- add_column(:dmsf_file_locks, :expires_at, :datetime, {:null=>true})
   -> 0.0156s
rake aborted!
An error has occurred, this and all later migrations canceled:

PG::Error: ERROR:  column "dmsf_file_locks.id" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: SELECT  "dmsf_file_locks".* FROM "dmsf_file_locks"  WHERE ("...
                ^
: SELECT  "dmsf_file_locks".* FROM "dmsf_file_locks"  WHERE ("dmsf_file_locks".
id" >= 0) GROUP BY dmsf_file_id ORDER BY "dmsf_file_locks"."id" ASC LIMIT 1000

Tasks: TOP => redmine:plugins:migrate

Cannot upload files to DMSF

Hello,

I have upgraded redmine to 2.0.3 and dmsf to this branch (1.4.4). However I can't seem to upload documents. I get the error shown below.

In addition, the migrated uploads are not displayed, even though they seemed to be correctly referenced in the migrated database and stored on disk.

Can you help?

Thanks!

The error:

NoMethodError (undefined method `id' for nil:NilClass):
  plugins/redmine_dmsf/app/controllers/dmsf_upload_controller.rb:187:in `log_activity'
  plugins/redmine_dmsf/app/controllers/dmsf_upload_controller.rb:170:in `block in commit_files'
  plugins/redmine_dmsf/app/controllers/dmsf_upload_controller.rb:170:in `each'
  plugins/redmine_dmsf/app/controllers/dmsf_upload_controller.rb:170:in `commit_files'
  actionpack (3.2.6) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
  actionpack (3.2.6) lib/abstract_controller/base.rb:167:in `process_action'
  actionpack (3.2.6) lib/action_controller/metal/rendering.rb:10:in `process_action'
  actionpack (3.2.6) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
  activesupport (3.2.6) lib/active_support/callbacks.rb:480:in `_run__34386977550386613__process_action__4575986109012499539__callbacks'
  activesupport (3.2.6) lib/active_support/callbacks.rb:405:in `__run_callback'
  activesupport (3.2.6) lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
  activesupport (3.2.6) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (3.2.6) lib/abstract_controller/callbacks.rb:17:in `process_action'
  actionpack (3.2.6) lib/action_controller/metal/rescue.rb:29:in `process_action'
  actionpack (3.2.6) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
  activesupport (3.2.6) lib/active_support/notifications.rb:123:in `block in instrument'
  activesupport (3.2.6) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
  activesupport (3.2.6) lib/active_support/notifications.rb:123:in `instrument'
  actionpack (3.2.6) lib/action_controller/metal/instrumentation.rb:29:in `process_action'
  actionpack (3.2.6) lib/action_controller/metal/params_wrapper.rb:206:in `process_action'
  activerecord (3.2.6) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
  actionpack (3.2.6) lib/abstract_controller/base.rb:121:in `process'
  actionpack (3.2.6) lib/abstract_controller/rendering.rb:45:in `process'
  actionpack (3.2.6) lib/action_controller/metal.rb:203:in `dispatch'
  actionpack (3.2.6) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
  actionpack (3.2.6) lib/action_controller/metal.rb:246:in `block in action'
  actionpack (3.2.6) lib/action_dispatch/routing/route_set.rb:73:in `call'
  actionpack (3.2.6) lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
  actionpack (3.2.6) lib/action_dispatch/routing/route_set.rb:36:in `call'
  journey (1.0.4) lib/journey/router.rb:68:in `block in call'
  journey (1.0.4) lib/journey/router.rb:56:in `each'
  journey (1.0.4) lib/journey/router.rb:56:in `call'
  actionpack (3.2.6) lib/action_dispatch/routing/route_set.rb:600:in `call'
  rack-openid (1.3.1) lib/rack/openid.rb:98:in `call'
  actionpack (3.2.6) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
  rack (1.4.1) lib/rack/etag.rb:23:in `call'
  rack (1.4.1) lib/rack/conditionalget.rb:35:in `call'
  actionpack (3.2.6) lib/action_dispatch/middleware/head.rb:14:in `call'
  actionpack (3.2.6) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
  plugins/redmine_dmsf/lib/redmine_dmsf/webdav/no_parse.rb:33:in `call'
  actionpack (3.2.6) lib/action_dispatch/middleware/flash.rb:242:in `call'
  rack (1.4.1) lib/rack/session/abstract/id.rb:205:in `context'
  rack (1.4.1) lib/rack/session/abstract/id.rb:200:in `call'
  actionpack (3.2.6) lib/action_dispatch/middleware/cookies.rb:338:in `call'
  activerecord (3.2.6) lib/active_record/query_cache.rb:64:in `call'
  activerecord (3.2.6) lib/active_record/connection_adapters/abstract/connection_pool.rb:473:in `call'
  actionpack (3.2.6) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
  activesupport (3.2.6) lib/active_support/callbacks.rb:405:in `_run__4021944421656164979__call__3985744558239652159__callbacks'
  activesupport (3.2.6) lib/active_support/callbacks.rb:405:in `__run_callback'
  activesupport (3.2.6) lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
  activesupport (3.2.6) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (3.2.6) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
  actionpack (3.2.6) lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
  actionpack (3.2.6) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
  actionpack (3.2.6) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
  railties (3.2.6) lib/rails/rack/logger.rb:26:in `call_app'
  railties (3.2.6) lib/rails/rack/logger.rb:16:in `call'
  actionpack (3.2.6) lib/action_dispatch/middleware/request_id.rb:22:in `call'
  rack (1.4.1) lib/rack/methodoverride.rb:21:in `call'
  rack (1.4.1) lib/rack/runtime.rb:17:in `call'
  activesupport (3.2.6) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
  rack (1.4.1) lib/rack/lock.rb:15:in `call'
  actionpack (3.2.6) lib/action_dispatch/middleware/static.rb:62:in `call'
  rack-cache (1.2) lib/rack/cache/context.rb:136:in `forward'
  rack-cache (1.2) lib/rack/cache/context.rb:143:in `pass'
  rack-cache (1.2) lib/rack/cache/context.rb:155:in `invalidate'
  rack-cache (1.2) lib/rack/cache/context.rb:71:in `call!'
  rack-cache (1.2) lib/rack/cache/context.rb:51:in `call'
  railties (3.2.6) lib/rails/engine.rb:479:in `call'
  railties (3.2.6) lib/rails/application.rb:220:in `call'
  rack (1.4.1) lib/rack/content_length.rb:14:in `call'
  railties (3.2.6) lib/rails/rack/log_tailer.rb:17:in `call'
  rack (1.4.1) lib/rack/handler/webrick.rb:59:in `service'
  /usr/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
  /usr/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
  /usr/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'

Documentation?

Hi all, this plugin seems totally awsome... but to use all its capabilities some kind of documentation (Web, PDF) would be handy...

Did I just not find whatever documentation there is, or is there not much?
If so, what would be the contact / place to contribute documentation, should I find time to write some?

Migrate Successful but No DMSF listed in Plugins?

Fresh install of redmine 2.0.3, I went through your instructions, installed the dependencies:

put redmine_dmsf into the plugins folder. Got the gems installed:

Using nokogiri (1.5.5)
Using simple_enum (1.6.2)
Using uuidtools (2.1.3)
Using zip (2.0.2)

ran bundle install --without xapian

rake went fine: Migrating redmine_dmsf (DMSF)...

DB was updated properly, checked the tables. So... everything looked good. Restarted Apache, using passenger in this case.

But DMSF doesn't show up in the plugin list. I tried converting a project as per your instructions as well, same problem.

Any suggestions as to how to troubleshoot? I'm pretty new to redmine, ruby and rails.

Environment:
Redmine version 2.0.3.stable
Ruby version 1.9.3 (x86_64-linux)
Rails version 3.2.6
Environment production
Database adapter Mysql2

internal error on dmsf after file writing using webdav

Is it a known issue that when editing/copying files through webdav, it results in internal server error when trying to view the version history of that file? I am suspecting it is due to no revision info being entered when writing with webdav?

Failure installing on Redmine 2.0.3 with PostgreSQL

Context

I'm a ruby/rails/redmine newbie, please correct me if I followed any procedure wrong. :)

  • Freshly installed Redmine 2.0.3.
  • Tested operation.
  • Integrated with Apache.
  • Tested operation.
  • Seems ok.

DMSF Installation

# cd /opt/redmine-2.0.3/plugins
# git clone https://github.com/danmunn/redmine_dmsf.git
# cd redmine_dmsf
# bundle --without=xapian mysql rmagick sqlite
# rake db:migrate_plugins RAILS_ENV=production

Fails with:

Could not find gem 'xapian-full (>= 0) ruby' in the gems available on this machine.
Run `bundle install` to install missing gems.

Retry #1

Apparently rake wants to install xapian-full which, I think, I said I did not want earlier (did I do something wrong?).
Proceeded to deleted the group :xapian from Gemfile and rerunning.
This now failed later in the process:

==  Dmsf144: migrating ========================================================
-- add_column(:dmsf_file_locks, :entity_type, :integer, {:null=>true})
   -> 0.0015s
-- add_column(:dmsf_file_locks, :lock_type_cd, :integer, {:null=>true})
   -> 0.0009s
-- add_column(:dmsf_file_locks, :lock_scope_cd, :integer, {:null=>true})
   -> 0.0008s
-- add_column(:dmsf_file_locks, :uuid, :string, {:null=>true, :limit=>36})
   -> 0.0009s
-- add_column(:dmsf_file_locks, :expires_at, :datetime, {:null=>true})
   -> 0.0044s
rake aborted!
An error has occurred, this and all later migrations canceled:

PG::Error: ERROR:  column "dmsf_file_locks.id" must appear in the GROUP BY clause or be us
ed in an aggregate function
LINE 1: SELECT  "dmsf_file_locks".* FROM "dmsf_file_locks"  WHERE ("...
                ^
: SELECT  "dmsf_file_locks".* FROM "dmsf_file_locks"  WHERE ("dmsf_file_locks"."id" >= 0) 
GROUP BY dmsf_file_id ORDER BY "dmsf_file_locks"."id" ASC LIMIT 1000

Tasks: TOP => db:migrate_plugins => redmine:plugins:migrate
(See full trace by running task with --trace)

PostgreSQL log:

SELECT  "dmsf_file_locks".* FROM "dmsf_file_locks"  WHERE ("dmsf_file_locks"."id" >= 0) GROUP BY dmsf_file_id ORDER BY "dmsf_file_locks"."id" ASC LIMIT 1000

The GROUP BY statement does not seem to make sense since no SQL aggregation seems to be selected.

Retry #2

Peeked around and found db/migrate/07_dmsf_1_4_4.rb - hand patched it:

-    DmsfFileLock.order('updated_at DESC').group('dmsf_file_id').find_each do |lock|
+    DmsfFileLock.order('updated_at DESC').find_each do |lock|

This ran ok.

Final Questions

  • Shouldn't the rake command have discarded xapian? Did I do something wrong?
  • Is my "fix" to the GROUP BY issue correct? I admit you may by running this with MySQL or sqlite which may not fail with the SQL query... But what is the purpose of the .group('dmsf_file_id') in db/migrate/07_dmsf_1_4_4.rb. Shouldn't it be removed?

All in all, thanks for:

  • Sharing your DMSF version.
  • Feeding me back in this.

Installing on windows / Bitnami

Hi,

I try to install the plugin on a windows machine.
First I execute bundle --without=xapian rmagick test development
After that I try rake redmine:plugins:migrate RAILS_ENV="production"
but I got the error I need other gems (I thought xapian), but how can I install it without xapian?

Make the 100 MB ajax upload limit an option

I understand that the 100 MB ajax upload limit is a compatibility safety for legacy browser but I have just tested with the latest chrome a 500MB ajax upload (I modified the JQuery script to explode the max_file_size) and it worked like a charm.

Considering that the ajax uploader is a way more intuitive UI to upload a file, could you provide an option in which we could configure the max_file_size for the ajax upload ?

dav4rack problems

Whwn I try to migra the database with rake redmine:plugins:migrate RAILS_ENV="production"

Redmine returns a error:
git://github.com/chrisroberts/dav4rack.git (at master) is not checked out. Please run `bundle install

I run bundle install an Redmine bundle returns another error:
Fetching git://github.com/chrisroberts/dav4rack.git
sh: 1: git: not found
Git error: command git clone 'git://github.com/chrisroberts/dav4rack.git' "/hom e/zer0/.bundler/cache/git/dav4rack-ca582a306e167025ded43630e7e3361ec99432da" --b are --no-hardlinks in directory /var/redmine has failed.

Could you helpme please?

Thanks in advance for your support and your work.

Upgrade from 1.2.2 to 1.4.4p2 stable

Now i try to upgrade redmine from 1.3 to 2.0. Also i try to upgrade DMSF
Everything looks fine, but when i try to download file i got 404 error.
In logs i found this information:

ActionController::MissingFile (Cannot read file /usr/share/redmine/files/dmsf/p_project-id/filename.txt):

And this is correct cause this file located here /usr/share/redmine/files/dmsf/filename.txt

As for as i know - previous version of DMSF store all files in the dmsf folder. And this version creates subfolders like dmsf/p_project-id

So can you create a migration task, or something like that?

Missing test functionality

The original DMSF project does not include test cases on controllers or projects, and as such it cannot be ensured that changes does not affect existing functionality, or even works as expected.

  • Solution test cases based on existing code
  • Produce relevant unit and functional cases
  • Produce where appropriate integration tests

Accessing webdav

Hi I have recently gotten dmsf 1.4.4 up and running on redmine 2.0.3. I see under plugin configuration that I can access webdav functionality once enabled at http://.../dmsf/webdav/

When attempting to access it it does ask for authentication for locked content. I've entered redmine admin credentials and ones for created users that have full access to dmsf under roles and permissions. either way once I login, I am taken to a blank page(or in the case of ie and chrome: link appears to be broken)

Just wondering if I am missing something here, any help would be appreciated. Thanks!

CMIS support

Investigation the provision of CMIS support within DMSF

Additional documentation for Webdav

Due to the use of Basic authentication, Microsoft disable its use of standard HTTP, documentation could be provided to demonstrate how to re-enable basic authentication over http (security risk). However it is worth pointing out that Open office seem to lack the same level of support (however have been unable to ascertain how to get that to function correctly over http - fine on https)

Installation Error

I was excited to see that development on this plugin has picked back up. I recently upgraded my redmine installation to 2.0.3 and was looking foward to installing and using this plugin. However, after placing the plugin folder into the correct directoy, I recieved the following error while issuing the plugin migration command:

"/data/redmine-2.0.3-0/ruby/lib/ruby/gems/1.8/gems/bundler-1.0.21/lib/bundler/dsl .rb:209:in `_normalize_options': You passed :github as an option for gem 'dav4rack', but it is invalid."

I looked into the error for quite a long time, but came up empty. Any help is appreciated as I would really like to utilize this plugin.

Redmine Version: 2.0.3 (Bitnami 2.0.3-0)
OS: CentOS 6
I have tried to migrate the plugin both with Redmine runnung and with Redmine stopped.

README.md keying mistake probably

Please update README.md

Dependencies

  • Nikogiri 1.4.2 or greater (Gem)

The should be

Dependencies
*N__o__kogiri 1.4.2 or greater (Gem)

gem install nikogiri
ERROR: Could not find a valid gem 'nikogiri' (>= 0) in any repository

mime type avoid force download

Hi!,
The upload pictures (jpg, png) always force download

I think that these filetypes may be displayed in the browser without download it, maybe wich send the correct mimetype will work?

Accessing WebDAV with Passenger / Nginx

Hi, I got the same error on a different setup and I suppose there's another reason.
Up and down loading files through the web UI is like a breeze.
I can connect to the webdav repo with the explorer on win 7 or Nautilus on Fedora 17. There is no problem reading files. But writing files is not possible.
Nautilus says that there is an internal server error.
Explorer says that it can't read the source file or source dir. Hm?

My setup:

  • CentOS 6.2 minimal installation, VM on an ESXi-Host
  • Ruby 1.9.3 p 194, build from source
  • Nginx 1.2.1 build by passenger
  • Redmine 2.0.3
  • Passenger 3.0.13
  • Redmine DMSF 1.4.4p1
  • MySQL 5.0.1 on a different machine

In the redmine production.log there is an error entry:
...
Started PROPFIND "/dmsf/webdav/soc/2011AppSvcDeliveryFull.pdf" for 192.168.178.21 at 2012-07-08 13:07:51 +0200
Started PUT "/dmsf/webdav/soc/2011AppSvcDeliveryFull.pdf" for 192.168.178.21 at 2012-07-08 13:07:51 +0200
NoMethodError (undefined method length' for #PhusionPassenger::Utils::RewindableInput:0x00000006cae4b8):
plugins/redmine_dmsf/lib/redmine_dmsf/webdav/dmsf_resource.rb:514:input'
plugins/redmine_dm.....

There is an error entry in the nginx access.log
192.168.178.21 - Sebastian [08/Jul/2012:13:07:51 +0200] "PROPFIND /dmsf/webdav HTTP/1.1" 207 1334 "-" "Microsoft-WebDAV-MiniRedir/6.1.7601" "-"
192.168.178.21 - Sebastian [08/Jul/2012:13:07:51 +0200] "PROPFIND /dmsf/webdav/soc/2011AppSvcDeliveryFull.pdf HTTP/1.1" 404 5 "-" "Microsoft-WebDAV-MiniRedir/6.1.7601" "-"
192.168.178.21 - Sebastian [08/Jul/2012:13:07:51 +0200] "PUT /dmsf/webdav/soc/2011AppSvcDeliveryFull.pdf HTTP/1.1" 500 674 "-" "Microsoft-WebDAV-MiniRedir/6.1.7601" "-"
192.168.178.21 - - [08/Jul/2012:13:31:40 +0200] "-" 400 0 "-" "-" "-"

There is no entry in the nginx error.log

Any help woud be appreciated. Thanks.

Sebastian

Search inside files doesn't work (Redmine 2.0.3)

When I try to search inside files, it doesn return any result. I tried to debudg it, and the request

dmsf_file = DmsfFile.where(limit_options[:conditions]).where(:id => dmsf_attrs[1], :deleted => false).first

returns empty result, although the xapian search found the record in the database (see screenshot http://saky.org/images/dmsf_search.JPG).

Any ideas what can be wrong?

Thanks,
Libor

Administration UI Overhaul

Lets face it, the plugin has some basic configuration options however makes no attempt to integrate with the administration portion of redmine. I think it would be beneficial (if possible) to see the ability to run safe data cleanup operations, and perhaps even see notifications where DMSF is update (if this is possible).

Are there other functionalities that people can conceive that perhaps could/should be added?

Webdav test cases

There is no test cases for webdav functionality, the module that empowers this functionality dav4rack also contains no testing, so tests need to be scoped from appropriate use cases. As we are unable to test the controllers in this case, we are unable to effectively test our data scoping objects, so cases will need to be created more as integration tests than unit or functional tests.

Cannot download some specific folders

Hello,

I am receiving an internal server error when downloading some folders. Some folders work perfectly but about 1/3 of them fail.

Below is the error I am seeing in the log. Can you see what could be wrong here?

Thanks!

Processing by DmsfController#entries_operation as HTML
Parameters: {"utf8"=>"โœ“", "authenticity_token"=>"*****", "download_entries"=>"Download", "subfolders"=>["34"], "folder_id"=>"13", "id"=>"fp7"}
Completed 500 Internal Server Error in 22ms

NoMethodError (undefined method disk_file' for nil:NilClass): plugins/redmine_dmsf/lib/dmsf_zip.rb:53:inadd_file'
plugins/redmine_dmsf/lib/dmsf_zip.rb:72:in block in add_folder' activerecord (3.2.6) lib/active_record/associations/collection_proxy.rb:89:ineach'
activerecord (3.2.6) lib/active_record/associations/collection_proxy.rb:89:in method_missing' plugins/redmine_dmsf/lib/dmsf_zip.rb:72:inadd_folder'
plugins/redmine_dmsf/app/controllers/dmsf_controller.rb:321:in block in zip_entries' plugins/redmine_dmsf/app/controllers/dmsf_controller.rb:319:ineach'
plugins/redmine_dmsf/app/controllers/dmsf_controller.rb:319:in zip_entries' plugins/redmine_dmsf/app/controllers/dmsf_controller.rb:300:indownload_entries'
plugins/redmine_dmsf/app/controllers/dmsf_controller.rb:56:in entries_operation' actionpack (3.2.6) lib/action_controller/metal/implicit_render.rb:4:insend_action'
......

Writing files with wrong timestamp

Hi,

I've just pulled 1.4.4p2.
When I'm writing files to dmsf they got a wrong timestamp, either using web UI or WebDAV.
There are definitly 2 hours missing. I've checked the time on the server and it's correct.
A newly created ticket got the right time.
I'm at germany.
Maybe it's a problem with the timezone.

Any help would be apreciated.

Sebastian

CentOS 6.2, Ruby 1.9.3p194, Nginx 1.2.1, Passenger 3.0.13, Redmine 2.0.3

Version conflict writing data to WebDAV on Win 7

Hi,

I've just pulled 1.4.4p2.
When I'm testing WebDAV functionality there's a strange behavior.
Please have a look at the following image http://dl.dropbox.com/u/88033600/pic001.png.
When I copy a file using win 7 explorer to the webdav dir it becomes immediately Version 2.0 (It's the first file on the picture).
The same things happens when I save a file from Word 2010 to the webdav dir (It's the last file on the picture).
When I copy a file using Nautilus on Fedora 17 everything's right (It's the 3rd file on the picture).
When I save a file from LibreOffice everything is right too (It's the 2nd file on the picture).

When you look at the details for the first file http://dl.dropbox.com/u/88033600/pic002.png you will find two versions. The first is already 0 Bytes in size, the second one is ok. The time stamp it's nearly the same.

Any Help would be apreciated.

Sebastian

CentOS 6.2, Ruby 1.9.3 p194, Nginx 1.2.1, Passenger 3.0.13, Redmine 2.0.3

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.