From e94676b6a4e8a9767047a535e9f6a03e4dc3a6b2 Mon Sep 17 00:00:00 2001 From: Karel Picman Date: Mon, 20 Jan 2014 13:54:41 +0100 Subject: [PATCH] #207 locks by deleted users producte internal server error 500 --- CHANGELOG.md | 3 ++- app/views/dmsf/show.html.erb | 20 ++++++++++++++------ config/locales/cs.yml | 1 + config/locales/en.yml | 1 + config/locales/es.yml | 1 + config/locales/fr.yml | 1 + config/locales/ja.yml | 1 + config/locales/ru.yml | 1 + config/locales/sl.yml | 3 ++- config/locales/zh.yml | 1 + lib/redmine_dmsf/lockable.rb | 4 ++-- 11 files changed, 27 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ad7dda35..ad55cb8b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,7 +38,8 @@ Changelog for Redmine DMSF * New: Issue #200 - Update the french translation for the multi upload module * Fix: Issue #202 - unable to create Custom Field when DMSF plugin installed * Fix: Issue #203 - Little typing error in french translation - +* Fix: Issue #206 - "Select All" checkbox not functioning +* Fix: Issue #207 - locks by deleted users producte internal server error 500 1.4.6: *2013-10-18* ----------------------- diff --git a/app/views/dmsf/show.html.erb b/app/views/dmsf/show.html.erb index 608bb2fc..d18d9a9c 100644 --- a/app/views/dmsf/show.html.erb +++ b/app/views/dmsf/show.html.erb @@ -116,9 +116,13 @@ <%= format_time(subfolder.updated_at) %> <% if locked_for_user %> - <%= link_to(image_tag('locked.png', :plugin => :redmine_dmsf), - {:controller => 'users', :action => 'show', :id => subfolder.lock.reverse[0].user }, - :title => l(:title_locked_by_user, :user => subfolder.lock.reverse[0].user.to_s)) %> + <% if subfolder.lock.reverse[0].user %> + <%= link_to(image_tag('locked.png', :plugin => :redmine_dmsf), + { :controller => 'users', :action => 'show', :id => subfolder.lock.reverse[0].user }, + :title => l(:title_locked_by_user, :user => subfolder.lock.reverse[0].user.to_s)) %> + <% else %> + <%= image_tag('locked.png', :title => l(:notice_account_unknown_email), :plugin => :redmine_dmsf) %> + <% end %> <% elsif locked %> <%= image_tag('lockedbycurrent.png', :title => l(:title_locked_by_you), :plugin => :redmine_dmsf) %> <% end %> @@ -201,9 +205,13 @@ <%= format_time(file.last_revision.updated_at) %> <% if locked_for_user %> - <%= link_to(image_tag('locked.png', :plugin => :redmine_dmsf), - {:controller => 'users', :action => 'show', :id => file.lock.reverse[0].user }, - :title => l(:title_locked_by_user, :user => file.lock.reverse[0].user.to_s)) %> + <% if file.lock.reverse[0].user %> + <%= link_to(image_tag('locked.png', :plugin => :redmine_dmsf), + {:controller => 'users', :action => 'show', :id => file.lock.reverse[0].user }, + :title => l(:title_locked_by_user, :user => file.lock.reverse[0].user.to_s)) %> + <% else %> + <%= image_tag('locked.png', :title => l(:notice_account_unknown_email), :plugin => :redmine_dmsf) %> + <% end %> <% elsif locked %> <%= image_tag('lockedbycurrent.png', :title => l(:title_locked_by_you), :plugin => :redmine_dmsf) %> <% end %> diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 4ca60167..7ffb39eb 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -38,6 +38,7 @@ cs: error_folder_is_not_empty: Adresář není prázdný error_folder_title_is_already_used: Název již existuje notice_folder_details_were_saved: Detaily složky byly uloženy + error_folder_is_locked: Adresář je zamčen error_file_is_locked: Soubor je zamčen notice_file_deleted: Soubor byl smazán error_at_least_one_revision_must_be_present: Musí existovat alespoň jedna revize diff --git a/config/locales/en.yml b/config/locales/en.yml index 7c3717fa..38490799 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -39,6 +39,7 @@ en: error_folder_is_not_empty: Folder is not empty error_folder_title_is_already_used: Title is already used notice_folder_details_were_saved: Folder details were saved + error_folder_is_locked: Folder is locked error_file_is_locked: File is locked notice_file_deleted: File deleted error_at_least_one_revision_must_be_present: At least one revision must be present diff --git a/config/locales/es.yml b/config/locales/es.yml index 3c175dad..816b99d0 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -37,6 +37,7 @@ es: error_folder_is_not_empty: La carpeta no está vacía error_folder_title_is_already_used: El título ingresado ya está siendo usado por otro documento notice_folder_details_were_saved: Los detalles de la carpeta fueron grabados correctamente + error_folder_is_locked: Carpeta bloqueado error_file_is_locked: Archivo bloqueado notice_file_deleted: Archivo borrado error_at_least_one_revision_must_be_present: al menos una revisión debe estar presente diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 0811f3dc..215c69e2 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -39,6 +39,7 @@ fr: error_folder_is_not_empty: "Le dossier n'est pas vide" error_folder_title_is_already_used: Le titre du fichier est déjà utilisé notice_folder_details_were_saved: Les détails du dossier ont été enregistrés + error_folder_is_locked: Le dossier est verrouillé error_file_is_locked: Le fichier est verrouillé notice_file_deleted: Le fichier a été supprimé error_at_least_one_revision_must_be_present: Au moins une révision est requise diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 15147867..a0b06d63 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -37,6 +37,7 @@ ja: error_folder_is_not_empty: フォルダが空ではありません error_folder_title_is_already_used: タイトルは既に使われています notice_folder_details_were_saved: フォルダの詳細を保存しました + error_folder_is_locked: Folder is locked error_file_is_locked: ファイルはロックされています notice_file_deleted: ファイルを削除しました error_at_least_one_revision_must_be_present: 少なくとも1つのリビジョンが必要です diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 44f6c294..81bde9fd 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -37,6 +37,7 @@ ru: error_folder_is_not_empty: Папка не пустая error_folder_title_is_already_used: Название папки уже используется notice_folder_details_were_saved: Описание папки было сохранено + error_folder_is_locked: Папка заблокированa error_file_is_locked: Файл заблокирован notice_file_deleted: Файл удален error_at_least_one_revision_must_be_present: По крайней мере, одна редакция должна присутствовать diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 411eb6c6..6e7faa41 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -37,7 +37,8 @@ sl: error_folder_is_not_empty: Mapa ni prazna error_folder_title_is_already_used: Naslov je že uporabljen notice_folder_details_were_saved: Podatki o mapi so shranjeni - error_file_is_locked: Datoteka je zaklenjena + error_folder_is_locked: Папка заблокированa + error_file_is_locked: Mapa je zaklenjena notice_file_deleted: Datoteka izbrisana error_at_least_one_revision_must_be_present: Vsaj ena verzija mora obstajati notice_revision_deleted: Verzija izbrisana diff --git a/config/locales/zh.yml b/config/locales/zh.yml index 15f50358..c907664e 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -37,6 +37,7 @@ zh: error_folder_is_not_empty: 非空文件夹 error_folder_title_is_already_used: 标题已经被使用 notice_folder_details_were_saved: 文件夹详细信息已保存 + error_file_is_locked: Folder is locked error_file_is_locked: 文件被锁定 notice_file_deleted: 文件已删除 error_at_least_one_revision_must_be_present: 至少一个修订版本必须存在 diff --git a/lib/redmine_dmsf/lockable.rb b/lib/redmine_dmsf/lockable.rb index 2a56893b..8055fe12 100644 --- a/lib/redmine_dmsf/lockable.rb +++ b/lib/redmine_dmsf/lockable.rb @@ -91,7 +91,7 @@ module RedmineDmsf locks.each {|lock| next if lock.expired? #Incase we're inbetween updates if (lock.lock_scope == :scope_exclusive && b_shared.nil?) - return true if lock.user.id != User.current.id + return true if (!lock.user) || (lock.user.id != User.current.id) else b_shared = true if b_shared.nil? b_shared = false if lock.user.id == User.current.id @@ -120,7 +120,7 @@ module RedmineDmsf else b_destroyed = false existing.each {|lock| - if (lock.user.id == User.current.id) + if (lock.user && (lock.user.id == User.current.id)) || User.current.admin? lock.destroy b_destroyed = true break