From adb33cd7f70d170036df90bcfb780789ef0d8c1a Mon Sep 17 00:00:00 2001 From: Karel Picman Date: Tue, 18 Feb 2014 17:20:08 +0100 Subject: [PATCH] #183 Create document links --- app/controllers/dmsf_controller.rb | 140 ++++--- app/controllers/dmsf_files_controller.rb | 25 +- app/controllers/dmsf_links_controller.rb | 91 +++++ app/controllers/dmsf_workflows_controller.rb | 34 +- app/helpers/dmsf_links_helper.rb | 40 ++ app/models/dmsf_file.rb | 6 +- app/models/dmsf_folder.rb | 32 +- app/models/dmsf_link.rb | 62 +++ app/views/dmsf/_dir.html.erb | 102 +++++ app/views/dmsf/_file.html.erb | 179 +++++++++ app/views/dmsf/_path.html.erb | 6 +- app/views/dmsf/edit.html.erb | 40 +- app/views/dmsf/edit_root.html.erb | 23 +- app/views/dmsf/show.html.erb | 363 +++++------------- app/views/dmsf_files/show.html.erb | 119 +++--- app/views/dmsf_files_copy/new.html.erb | 14 +- app/views/dmsf_folders_copy/new.html.erb | 14 +- app/views/dmsf_links/_form.html.erb | 64 +++ app/views/dmsf_links/new.html.erb | 19 + app/views/dmsf_state/_user_pref.html.erb | 6 +- app/views/dmsf_upload/upload_files.html.erb | 12 +- assets/images/delete.png | Bin 459 -> 0 bytes assets/images/filetypes/c_gray.png | Bin 0 -> 437 bytes assets/images/filetypes/csharp_gray.png | Bin 0 -> 471 bytes assets/images/filetypes/css_gray.png | Bin 0 -> 452 bytes assets/images/filetypes/doc_gray.png | Bin 0 -> 401 bytes assets/images/filetypes/docx_gray.png | Bin 0 -> 401 bytes assets/images/filetypes/html_gray.png | Bin 0 -> 473 bytes assets/images/filetypes/image_gray.png | Bin 0 -> 416 bytes assets/images/filetypes/java_gray.png | Bin 0 -> 458 bytes assets/images/filetypes/js_gray.png | Bin 0 -> 434 bytes assets/images/filetypes/mpp_gray.png | Bin 0 -> 424 bytes assets/images/filetypes/odg_gray.png | Bin 0 -> 419 bytes assets/images/filetypes/odp_gray.png | Bin 0 -> 416 bytes assets/images/filetypes/ods_gray.png | Bin 0 -> 401 bytes assets/images/filetypes/odt_gray.png | Bin 0 -> 413 bytes assets/images/filetypes/pdf_gray.png | Bin 0 -> 418 bytes assets/images/filetypes/php_gray.png | Bin 0 -> 431 bytes assets/images/filetypes/ppt_gray.png | Bin 0 -> 419 bytes assets/images/filetypes/pptx_gray.png | Bin 0 -> 419 bytes assets/images/filetypes/ruby_gray.png | Bin 0 -> 446 bytes assets/images/filetypes/vsd_gray.png | Bin 0 -> 389 bytes assets/images/filetypes/vsdx_gray.png | Bin 0 -> 389 bytes assets/images/filetypes/xls_gray.png | Bin 0 -> 405 bytes assets/images/filetypes/xlsx_gray.png | Bin 0 -> 405 bytes assets/images/filetypes/xml_gray.png | Bin 0 -> 448 bytes assets/images/filetypes/zip_gray.png | Bin 0 -> 469 bytes assets/images/folder_gray.png | Bin 0 -> 312 bytes assets/images/link.png | Bin 0 -> 316 bytes assets/images/locked_gray.png | Bin 0 -> 324 bytes assets/images/lockedbycurrent_gray.png | Bin 0 -> 263 bytes assets/images/unlockdisabled.png | Bin 662 -> 0 bytes assets/javascripts/redmine_dmsf.js | 32 -- assets/stylesheets/dmsf.css | 129 ++++--- .../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 260 -> 0 bytes .../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 251 -> 0 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 180 -> 0 bytes .../images/ui-bg_flat_10_000000_40x100.png | Bin 178 -> 0 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 178 -> 0 bytes .../images/ui-bg_glass_100_eef5fd_1x400.png | Bin 113 -> 0 bytes .../images/ui-bg_glass_100_f6f6f6_1x400.png | Bin 104 -> 0 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 120 -> 0 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 105 -> 0 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 111 -> 0 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 110 -> 0 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 119 -> 0 bytes .../ui-bg_gloss-wave_35_759fcf_500x100.png | Bin 3945 -> 0 bytes .../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin 90 -> 0 bytes .../ui-bg_highlight-soft_75_759fcf_1x100.png | Bin 126 -> 0 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 101 -> 0 bytes .../images/ui-icons_222222_256x240.png | Bin 4369 -> 0 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 4369 -> 0 bytes .../images/ui-icons_454545_256x240.png | Bin 4369 -> 0 bytes .../images/ui-icons_759fcf_256x240.png | Bin 4369 -> 0 bytes .../images/ui-icons_888888_256x240.png | Bin 4369 -> 0 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 4369 -> 0 bytes .../images/ui-icons_ffd27a_256x240.png | Bin 4369 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 4369 -> 0 bytes .../stylesheets/jquery-ui/jquery-ui-1.9.2.css | 5 - config/locales/cs.yml | 17 +- config/locales/de.yml | 17 +- config/locales/en.yml | 17 +- config/locales/es.yml | 17 +- config/locales/fr.yml | 17 +- config/locales/ja.yml | 17 +- config/locales/ru.yml | 17 +- config/locales/sl.yml | 17 +- config/locales/zh.yml | 17 +- config/routes.rb | 53 +-- .../20131113141403_create_dmsf_links.rb | 38 ++ init.rb | 4 +- lib/redmine_dmsf/hooks/base_view_hooks.rb | 4 +- lib/redmine_dmsf/patches/project_patch.rb | 12 +- test/functional/dmsf_links_controller_test.rb | 8 + test/unit/dmsf_links_test.rb | 27 ++ 95 files changed, 1209 insertions(+), 647 deletions(-) create mode 100644 app/controllers/dmsf_links_controller.rb create mode 100644 app/helpers/dmsf_links_helper.rb create mode 100644 app/models/dmsf_link.rb create mode 100644 app/views/dmsf/_dir.html.erb create mode 100644 app/views/dmsf/_file.html.erb create mode 100644 app/views/dmsf_links/_form.html.erb create mode 100644 app/views/dmsf_links/new.html.erb delete mode 100644 assets/images/delete.png create mode 100644 assets/images/filetypes/c_gray.png create mode 100644 assets/images/filetypes/csharp_gray.png create mode 100644 assets/images/filetypes/css_gray.png create mode 100644 assets/images/filetypes/doc_gray.png create mode 100644 assets/images/filetypes/docx_gray.png create mode 100644 assets/images/filetypes/html_gray.png create mode 100644 assets/images/filetypes/image_gray.png create mode 100644 assets/images/filetypes/java_gray.png create mode 100644 assets/images/filetypes/js_gray.png create mode 100644 assets/images/filetypes/mpp_gray.png create mode 100644 assets/images/filetypes/odg_gray.png create mode 100644 assets/images/filetypes/odp_gray.png create mode 100644 assets/images/filetypes/ods_gray.png create mode 100644 assets/images/filetypes/odt_gray.png create mode 100644 assets/images/filetypes/pdf_gray.png create mode 100644 assets/images/filetypes/php_gray.png create mode 100644 assets/images/filetypes/ppt_gray.png create mode 100644 assets/images/filetypes/pptx_gray.png create mode 100644 assets/images/filetypes/ruby_gray.png create mode 100644 assets/images/filetypes/vsd_gray.png create mode 100644 assets/images/filetypes/vsdx_gray.png create mode 100644 assets/images/filetypes/xls_gray.png create mode 100644 assets/images/filetypes/xlsx_gray.png create mode 100644 assets/images/filetypes/xml_gray.png create mode 100644 assets/images/filetypes/zip_gray.png create mode 100644 assets/images/folder_gray.png create mode 100644 assets/images/link.png create mode 100644 assets/images/locked_gray.png create mode 100644 assets/images/lockedbycurrent_gray.png delete mode 100644 assets/images/unlockdisabled.png delete mode 100644 assets/javascripts/redmine_dmsf.js delete mode 100644 assets/stylesheets/jquery-ui/images/ui-bg_diagonals-thick_18_b81900_40x40.png delete mode 100644 assets/stylesheets/jquery-ui/images/ui-bg_diagonals-thick_20_666666_40x40.png delete mode 100644 assets/stylesheets/jquery-ui/images/ui-bg_flat_0_aaaaaa_40x100.png delete mode 100644 assets/stylesheets/jquery-ui/images/ui-bg_flat_10_000000_40x100.png delete mode 100644 assets/stylesheets/jquery-ui/images/ui-bg_flat_75_ffffff_40x100.png delete mode 100644 assets/stylesheets/jquery-ui/images/ui-bg_glass_100_eef5fd_1x400.png delete mode 100644 assets/stylesheets/jquery-ui/images/ui-bg_glass_100_f6f6f6_1x400.png delete mode 100644 assets/stylesheets/jquery-ui/images/ui-bg_glass_55_fbf9ee_1x400.png delete mode 100644 assets/stylesheets/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png delete mode 100644 assets/stylesheets/jquery-ui/images/ui-bg_glass_75_dadada_1x400.png delete mode 100644 assets/stylesheets/jquery-ui/images/ui-bg_glass_75_e6e6e6_1x400.png delete mode 100644 assets/stylesheets/jquery-ui/images/ui-bg_glass_95_fef1ec_1x400.png delete mode 100644 assets/stylesheets/jquery-ui/images/ui-bg_gloss-wave_35_759fcf_500x100.png delete mode 100644 assets/stylesheets/jquery-ui/images/ui-bg_highlight-soft_100_eeeeee_1x100.png delete mode 100644 assets/stylesheets/jquery-ui/images/ui-bg_highlight-soft_75_759fcf_1x100.png delete mode 100644 assets/stylesheets/jquery-ui/images/ui-bg_highlight-soft_75_cccccc_1x100.png delete mode 100644 assets/stylesheets/jquery-ui/images/ui-icons_222222_256x240.png delete mode 100644 assets/stylesheets/jquery-ui/images/ui-icons_2e83ff_256x240.png delete mode 100644 assets/stylesheets/jquery-ui/images/ui-icons_454545_256x240.png delete mode 100644 assets/stylesheets/jquery-ui/images/ui-icons_759fcf_256x240.png delete mode 100644 assets/stylesheets/jquery-ui/images/ui-icons_888888_256x240.png delete mode 100644 assets/stylesheets/jquery-ui/images/ui-icons_cd0a0a_256x240.png delete mode 100644 assets/stylesheets/jquery-ui/images/ui-icons_ffd27a_256x240.png delete mode 100644 assets/stylesheets/jquery-ui/images/ui-icons_ffffff_256x240.png delete mode 100644 assets/stylesheets/jquery-ui/jquery-ui-1.9.2.css create mode 100644 db/migrate/20131113141403_create_dmsf_links.rb create mode 100644 test/functional/dmsf_links_controller_test.rb create mode 100644 test/unit/dmsf_links_test.rb diff --git a/app/controllers/dmsf_controller.rb b/app/controllers/dmsf_controller.rb index 29b272fa..1840028d 100644 --- a/app/controllers/dmsf_controller.rb +++ b/app/controllers/dmsf_controller.rb @@ -37,13 +37,20 @@ class DmsfController < ApplicationController @file_manipulation_allowed = User.current.allowed_to?(:file_manipulation, @project) @force_file_unlock_allowed = User.current.allowed_to?(:force_file_unlock, @project) + @workflows_available = DmsfWorkflow.where(['project_id = ? OR project_id IS NULL', @project.id]).count > 0 + unless @folder @subfolders = @project.dmsf_folders.visible - @files = @project.dmsf_files.visible + @files = @project.dmsf_files.visible + @locked_for_user = false + @dir_links = @project.folder_links + @file_links = @project.file_links else @subfolders = @folder.subfolders.visible @files = @folder.files.visible @locked_for_user = @folder.locked_for_user? + @dir_links = @folder.folder_links + @file_links = @folder.file_links end @files.sort! do |a,b| @@ -58,15 +65,32 @@ class DmsfController < ApplicationController end def entries_operation - selected_folders = params[:subfolders] - selected_files = params[:files] + selected_folders = params[:subfolders].present? ? params[:subfolders] : [] + selected_files = params[:files].present? ? params[:files] : [] + selected_dir_links = params[:dir_links] + selected_file_links = params[:file_links] - if selected_folders.nil? && selected_files.nil? - flash[:warning] = l(:warning_no_entries_selected) - redirect_to :action => 'show', :id => @project, :folder_id => @folder + if selected_folders.blank? && selected_files.blank? && + selected_dir_links.blank? && selected_file_links.blank? + flash[:warning] = l(:warning_no_entries_selected) + redirect_to :back return end + if selected_dir_links.present? + selected_dir_links.each do |id| + link = DmsfLink.find_by_id id + selected_folders << link.target_id if link + end + end + + if selected_file_links.present? + selected_file_links.each do |id| + link = DmsfLink.find_by_id id + selected_files << link.target_id if link + end + end + if params[:email_entries].present? email_entries(selected_folders, selected_files) else @@ -74,10 +98,10 @@ class DmsfController < ApplicationController end rescue ZipMaxFilesError flash[:error] = l(:error_max_files_exceeded, :number => Setting.plugin_redmine_dmsf['dmsf_max_file_download']) - redirect_to({:controller => 'dmsf', :action => 'show', :id => @project, :folder_id => @folder}) + redirect_to :back rescue EmailMaxFileSize flash[:error] = l(:error_max_email_filesize_exceeded, :number => Setting.plugin_redmine_dmsf['dmsf_max_email_filesize']) - redirect_to({:controller => 'dmsf', :action => 'show', :id => @project, :folder_id => @folder}) + redirect_to :back rescue FileNotFound render_404 rescue DmsfAccessError @@ -101,42 +125,67 @@ class DmsfController < ApplicationController def delete_entries selected_folders = params[:subfolders] selected_files = params[:files] - if selected_folders.nil? && selected_files.nil? + selected_dir_links = params[:dir_links] + selected_file_links = params[:file_links] + if selected_folders.blank? && selected_files.blank? && + selected_dir_links.blank? && selected_file_links.blank? flash[:warning] = l(:warning_no_entries_selected) else - failed_entries = [] - deleted_files = [] - deleted_folders = [] - if selected_folders - if User.current.allowed_to?(:folder_manipulation, @project) + failed_entries = [] + + if User.current.allowed_to?(:folder_manipulation, @project) + # Folders + if selected_folders.present? selected_folders.each do |subfolderid| - subfolder = DmsfFolder.visible.find(subfolderid) - next if subfolder.nil? + subfolder = DmsfFolder.visible.find_by_id subfolderid + next unless subfolder if subfolder.project != @project || !subfolder.delete - failed_entries.push(subfolder) - else - deleted_folders.push(subfolder) + failed_entries.push(subfolder) end - end - else - flash[:error] = l(:error_user_has_not_right_delete_folder) + end end + # Folder links + if selected_dir_links.present? + selected_dir_links.each do |dir_link_id| + link_folder = DmsfLink.visible.find_by_id dir_link_id + next unless link_folder + if link_folder.project != @project || !link_folder.delete + failed_entries.push(link_folder) + end + end + end + else + flash[:error] = l(:error_user_has_not_right_delete_folder) end - if selected_files - if User.current.allowed_to?(:file_manipulation, @project) + + deleted_files = [] + if User.current.allowed_to?(:file_manipulation, @project) + # Files + if selected_files.present? selected_files.each do |fileid| - file = DmsfFile.visible.find(fileid) + file = DmsfFile.visible.find_by_id fileid next unless file if file.project != @project || !file.delete failed_entries.push(file) else deleted_files.push(file) end - end - else - flash[:error] = l(:error_user_has_not_right_delete_file) + end end + # File links + if selected_file_links.present? + selected_file_links.each do |file_link_id| + file_link = DmsfLink.visible.find_by_id file_link_id + next unless file_link + if file_link.project != @project || !file_link.delete + failed_entries.push(file_link) + end + end + end + else + flash[:error] = l(:error_user_has_not_right_delete_file) end + unless deleted_files.empty? deleted_files.each do |f| log_activity(f, 'deleted') @@ -149,8 +198,8 @@ class DmsfController < ApplicationController flash[:warning] = l(:warning_some_entries_were_not_deleted, :entries => failed_entries.map{|e| e.title}.join(', ')) end end - - redirect_to :controller => 'dmsf', :action => 'show', :id => @project, :folder_id => @folder + + redirect_to :back end # Folder manipulation @@ -202,8 +251,8 @@ class DmsfController < ApplicationController else flash[:error] = @delete_folder.errors[:base][0] end - end - redirect_to :controller => 'dmsf', :action => 'show', :id => @project, :folder_id => @folder + end + redirect_to dmsf_folder_path(:id => @project, :folder_id => @delete_folder.dmsf_folder_id) rescue DmsfAccessError render_403 end @@ -229,14 +278,8 @@ class DmsfController < ApplicationController @project.save end flash[:notice] = l(:notice_folder_notifications_activated) - end - if params[:current] - redirect_to params[:current] - elsif @folder - redirect_to({:controller => 'dmsf', :action => 'show', :id => @project, :folder_id => @folder.folder}) - else - redirect_to({:controller => 'dmsf', :action => 'show', :id => @project}) end + redirect_to :back end def notify_deactivate @@ -250,17 +293,10 @@ class DmsfController < ApplicationController @project.save end flash[:notice] = l(:notice_folder_notifications_deactivated) - end - if params[:current] - redirect_to params[:current] - elsif @folder - redirect_to({:controller => 'dmsf', :action => 'show', :id => @project, :folder_id => @folder.folder}) - else - redirect_to({:controller => 'dmsf', :action => 'show', :id => @project}) end + redirect_to :back end - def lock if @folder.nil? flash[:warning] = l(:warning_foler_unlockable) @@ -269,9 +305,8 @@ class DmsfController < ApplicationController else @folder.lock! flash[:notice] = l(:notice_folder_locked) - end - redirect_to params[:current] ? params[:current] : - {:controller => 'dmsf', :action => 'show', :id => @project, :folder_id => @folder.folder} + end + redirect_to :back end def unlock @@ -286,9 +321,8 @@ class DmsfController < ApplicationController else flash[:error] = l(:error_only_user_that_locked_folder_can_unlock_it) end - end - redirect_to params[:current] ? params[:current] : - {:controller => 'dmsf', :action => 'show', :id => @project, :folder_id => @folder.folder} + end + redirect_to :back end private diff --git a/app/controllers/dmsf_files_controller.rb b/app/controllers/dmsf_files_controller.rb index c612b455..5b7b9abd 100644 --- a/app/controllers/dmsf_files_controller.rb +++ b/app/controllers/dmsf_files_controller.rb @@ -172,9 +172,8 @@ class DmsfFilesController < ApplicationController else @file.lock! flash[:notice] = l(:notice_file_locked) - end - redirect_to params[:current] ? params[:current] : - {:controller => 'dmsf', :action => 'show', :id => @project, :folder_id => @file.folder} + end + redirect_to :back end def unlock @@ -187,9 +186,8 @@ class DmsfFilesController < ApplicationController else flash[:error] = l(:error_only_user_that_locked_file_can_unlock_it) end - end - redirect_to params[:current] ? params[:current] : - {:controller => 'dmsf', :action => 'show', :id => @project, :folder_id => @file.folder} + end + redirect_to :back end def notify_activate @@ -198,9 +196,8 @@ class DmsfFilesController < ApplicationController else @file.notify_activate flash[:notice] = l(:notice_file_notifications_activated) - end - redirect_to params[:current] ? params[:current] : - {:controller => 'dmsf', :action => 'show', :id => @project, :folder_id => @file.folder} + end + redirect_to :back end def notify_deactivate @@ -209,9 +206,8 @@ class DmsfFilesController < ApplicationController else @file.notify_deactivate flash[:notice] = l(:notice_file_notifications_deactivated) - end - redirect_to params[:current] ? params[:current] : - {:controller => 'dmsf', :action => 'show', :id => @project, :folder_id => @file.folder} + end + redirect_to :back end private @@ -234,13 +230,16 @@ class DmsfFilesController < ApplicationController def find_file @file = DmsfFile.visible.find(params[:id]) @project = @file.project - rescue + rescue ActiveRecord::RecordNotFound + render_404 end def find_revision @revision = DmsfFileRevision.visible.find(params[:id]) @file = @revision.file @project = @file.project + rescue ActiveRecord::RecordNotFound + render_404 end def check_project(entry) diff --git a/app/controllers/dmsf_links_controller.rb b/app/controllers/dmsf_links_controller.rb new file mode 100644 index 00000000..016a9e09 --- /dev/null +++ b/app/controllers/dmsf_links_controller.rb @@ -0,0 +1,91 @@ +# Redmine plugin for Document Management System "Features" +# +# Copyright (C) 2014 Karel Pičman +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +class DmsfLinksController < ApplicationController + unloadable + + model_object DmsfLink + before_filter :find_model_object, :only => [:destroy] + before_filter :find_link_project + before_filter :authorize + + def new + @dmsf_link = DmsfLink.new + @dmsf_link.project_id = @project.id + @dmsf_link.target_type = DmsfFolder.model_name + @dmsf_link.dmsf_folder_id = params[:dmsf_folder_id] + + if params[:dmsf_link].present? + @dmsf_link.target_project_id = params[:dmsf_link][:target_project_id] + @target_folder_id = DmsfLinksHelper.is_a_number?(params[:dmsf_link][:target_folder_id]) ? params[:dmsf_link][:target_folder_id].to_i : nil + else + @dmsf_link.target_project_id = @project.id + @target_folder_id = @dmsf_link.dmsf_folder_id + end + + render :layout => !request.xhr? + end + + def create + @dmsf_link = DmsfLink.new + @dmsf_link.project_id = @project.id + @dmsf_link.target_project_id = params[:dmsf_link][:target_project_id] + @dmsf_link.dmsf_folder_id = params[:dmsf_link][:dmsf_folder_id] + + if params[:dmsf_link][:target_file_id].present? + @dmsf_link.target_id = params[:dmsf_link][:target_file_id] + @dmsf_link.target_type = DmsfFile.model_name + else + @dmsf_link.target_id = DmsfLinksHelper.is_a_number?(params[:dmsf_link][:target_folder_id]) ? params[:dmsf_link][:target_folder_id].to_i : nil + @dmsf_link.target_type = DmsfFolder.model_name + end + + @dmsf_link.name = params[:dmsf_link][:name] + + if @dmsf_link.save + flash[:notice] = l(:notice_successful_create) + redirect_to dmsf_folder_path(:id => @project.id, :folder_id => @dmsf_link.dmsf_folder_id) + else + render :action => 'new' + end + end + + def destroy + begin + @dmsf_link.destroy + flash[:notice] = l(:notice_successful_delete) + rescue + flash[:error] = l(:error_unable_delete_dmsf_workflow) + end + + redirect_to :back + end + + private + + def find_link_project + if @dmsf_link + @project = @dmsf_link.project + else + @project = Project.find(params[:dmsf_link].present? ? params[:dmsf_link][:project_id] : params[:project_id]) + end + rescue ActiveRecord::RecordNotFound + render_404 + end + +end diff --git a/app/controllers/dmsf_workflows_controller.rb b/app/controllers/dmsf_workflows_controller.rb index 1e8aae9c..b9a6b5ac 100644 --- a/app/controllers/dmsf_workflows_controller.rb +++ b/app/controllers/dmsf_workflows_controller.rb @@ -269,25 +269,23 @@ class DmsfWorkflowsController < ApplicationController def start revision = DmsfFileRevision.find_by_id(params[:dmsf_file_revision_id]) - if revision - if request.post? - revision.set_workflow(@workflow.id, params[:action]) - if revision.save - assignments = @workflow.next_assignments revision.id - assignments.each do |assignment| - DmsfMailer.workflow_notification( - assignment.user, - @workflow, - revision, - l(:text_email_subject_started, :name => @workflow.name), - l(:text_email_started, :name => @workflow.name, :filename => revision.file.name), - l(:text_email_to_proceed)).deliver if assignment.user - end - flash[:notice] = l(:notice_workflow_started) - else - flash[:error] = l(:notice_cannot_start_workflow) + if revision + revision.set_workflow(@workflow.id, params[:action]) + if revision.save + assignments = @workflow.next_assignments revision.id + assignments.each do |assignment| + DmsfMailer.workflow_notification( + assignment.user, + @workflow, + revision, + l(:text_email_subject_started, :name => @workflow.name), + l(:text_email_started, :name => @workflow.name, :filename => revision.file.name), + l(:text_email_to_proceed)).deliver if assignment.user end - end + flash[:notice] = l(:notice_workflow_started) + else + flash[:error] = l(:notice_cannot_start_workflow) + end end redirect_to :back end diff --git a/app/helpers/dmsf_links_helper.rb b/app/helpers/dmsf_links_helper.rb new file mode 100644 index 00000000..9a1a89a7 --- /dev/null +++ b/app/helpers/dmsf_links_helper.rb @@ -0,0 +1,40 @@ +# Redmine plugin for Document Management System "Features" +# +# Copyright (C) 2014 Karel Pičman +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +module DmsfLinksHelper + + def folder_tree_options_for_select(folder_tree, options = {}) + s = '' + folder_tree.each do |name, id| + tag_options = {:value => id} + if id == options[:selected] + tag_options[:selected] = 'selected' + else + tag_options[:selected] = nil + end + s << content_tag('option', name, tag_options) + end + s.html_safe + end + + # An integer test + def self.is_a_number?(s) + s.to_s.match(/\A[+-]?\d+?(\.\d+)?\Z/) == nil ? false : true + end + +end diff --git a/app/models/dmsf_file.rb b/app/models/dmsf_file.rb index 3472d2d5..a42b5995 100644 --- a/app/models/dmsf_file.rb +++ b/app/models/dmsf_file.rb @@ -31,14 +31,16 @@ class DmsfFile < ActiveRecord::Base belongs_to :project belongs_to :folder, :class_name => 'DmsfFolder', :foreign_key => 'dmsf_folder_id' + belongs_to :deleted_by_user, :class_name => 'User', :foreign_key => 'deleted_by_user_id' has_many :revisions, :class_name => 'DmsfFileRevision', :foreign_key => 'dmsf_file_id', :order => "#{DmsfFileRevision.table_name}.major_version DESC, #{DmsfFileRevision.table_name}.minor_version DESC, #{DmsfFileRevision.table_name}.updated_at DESC", :dependent => :destroy has_many :locks, :class_name => 'DmsfLock', :foreign_key => 'entity_id', :order => "#{DmsfLock.table_name}.updated_at DESC", :conditions => {:entity_type => 0}, - :dependent => :destroy - belongs_to :deleted_by_user, :class_name => 'User', :foreign_key => 'deleted_by_user_id' + :dependent => :destroy + has_many :referenced_links, :class_name => 'DmsfLink', :foreign_key => 'target_id', + :conditions => {:target_type => DmsfFile.model_name}, :dependent => :destroy scope :visible, lambda {|*args| where(DmsfFile.visible_condition(args.shift || User.current, *args)).readonly(false)} diff --git a/app/models/dmsf_folder.rb b/app/models/dmsf_folder.rb index 0869505e..df63f559 100644 --- a/app/models/dmsf_folder.rb +++ b/app/models/dmsf_folder.rb @@ -26,12 +26,17 @@ class DmsfFolder < ActiveRecord::Base belongs_to :project belongs_to :folder, :class_name => 'DmsfFolder', :foreign_key => 'dmsf_folder_id' - has_many :subfolders, :class_name => 'DmsfFolder', :foreign_key => 'dmsf_folder_id', :order => "#{DmsfFolder.table_name}.title ASC", - :dependent => :destroy + has_many :subfolders, :class_name => 'DmsfFolder', :foreign_key => 'dmsf_folder_id', + :order => "#{DmsfFolder.table_name}.title ASC", :dependent => :destroy has_many :files, :class_name => 'DmsfFile', :foreign_key => 'dmsf_folder_id', :dependent => :destroy belongs_to :user - + has_many :folder_links, :class_name => 'DmsfLink', :foreign_key => 'dmsf_folder_id', + :conditions => {:target_type => DmsfFolder.model_name}, :dependent => :destroy + has_many :file_links, :class_name => 'DmsfLink', :foreign_key => 'dmsf_folder_id', + :conditions => {:target_type => DmsfFile.model_name}, :dependent => :destroy + has_many :referenced_links, :class_name => 'DmsfLink', :foreign_key => 'target_id', + :conditions => {:target_type => DmsfFolder.model_name}, :dependent => :destroy has_many :locks, :class_name => 'DmsfLock', :foreign_key => 'entity_id', :order => "#{DmsfLock.table_name}.updated_at DESC", :conditions => {:entity_type => 1}, @@ -133,20 +138,29 @@ class DmsfFolder < ActiveRecord::Base end end return tree - end + end + + def self.file_list(files) + options = Array.new + options.push ['', nil] + files.each do |f| + options.push [f.title, f.id] + end + options + end def deep_file_count file_count = self.files.visible.count self.subfolders.visible.each {|subfolder| file_count += subfolder.deep_file_count} - file_count + file_count + self.file_links.visible.count end def deep_folder_count folder_count = self.subfolders.visible.count self.subfolders.visible.each {|subfolder| folder_count += subfolder.deep_folder_count} - folder_count - end - + folder_count + self.folder_links.visible.count + end + def deep_size size = 0 self.files.visible.each {|file| size += file.size} @@ -239,7 +253,7 @@ class DmsfFolder < ActiveRecord::Base def self.directory_subtree(tree, folder, level, current_folder) folder.subfolders.visible.each do |subfolder| unless subfolder == current_folder - tree.push(["#{"..." * level}#{subfolder.title}", subfolder.id]) + tree.push(["#{'...' * level}#{subfolder.title}", subfolder.id]) directory_subtree(tree, subfolder, level + 1, current_folder) end end diff --git a/app/models/dmsf_link.rb b/app/models/dmsf_link.rb new file mode 100644 index 00000000..dd64bcf3 --- /dev/null +++ b/app/models/dmsf_link.rb @@ -0,0 +1,62 @@ +# Redmine plugin for Document Management System "Features" +# +# Copyright (C) 2014 Karel Pičman +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +class DmsfLink < ActiveRecord::Base + unloadable + + belongs_to :project + belongs_to :dmsf_folder + validates :name, :presence => true + validates :target_id, :presence => true + validates_length_of :name, :maximum => 255 + scope :visible, :conditions => 'deleted = 0' + + def target_folder_id + if self.target_type == DmsfFolder.model_name + self.target_id + else + f = DmsfFile.find_by_id self.target_id + f.dmsf_folder_id if f + end + end + + def target_folder + DmsfFolder.find self.target_folder_id if self.target_folder_id + end + + def target_file_id + self.target_id if self.target_type == DmsfFile.model_name + end + + def target_file + DmsfFile.find self.target_file_id if self.target_file_id + end + + def target_project + Project.find self.target_project_id + end + + def folder + DmsfFolder.find_by_id self.dmsf_folder_id + end + + def title + self.name + end + +end diff --git a/app/views/dmsf/_dir.html.erb b/app/views/dmsf/_dir.html.erb new file mode 100644 index 00000000..703b1d37 --- /dev/null +++ b/app/views/dmsf/_dir.html.erb @@ -0,0 +1,102 @@ +<%#= +# Redmine plugin for Document Management System "Features" +# +# Copyright (C) 2014 Karel Pičman +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +%> + +<% locked_for_user = subfolder.locked_for_user? %> +<% locked = subfolder.locked? %> + +<%= check_box_tag(link ? 'dir_links[]' : 'subfolders[]', + link ? link.id : subfolder.id, false, :title => l(:title_check_for_zip_download_or_email)) %> + + <%= link_to(h(link ? link.name : subfolder.title), + dmsf_folder_path(:id => @project, :folder_id => subfolder), + :class => 'icon icon-folder') %> +
[<%= subfolder.files.visible.count %>]
+ + +<%= format_time(subfolder.updated_at) %> + <% if locked_for_user %> + <% if subfolder.lock.reverse[0].user %> + <%= link_to('', + user_path(subfolder.lock.reverse[0].user), + :title => l(:title_locked_by_user, :user => subfolder.lock.reverse[0].user), + :class => 'icon icon-dmsf-locked') %> + <% else %> + <%= content_tag(:span, '', :title => l(:notice_account_unknown_email), + :class => 'icon icon-dmsf-locked') %> + <% end %> + <% elsif locked %> + <%= content_tag(:span, '', :title => l(:title_locked_by_you), + :class => 'icon icon-dmsf-lockedbycurrent') %> + <% end %> + + + +<%= h(subfolder.user) %> + + <% if @folder_manipulation_allowed %> +
+ <% unless locked %> + <%= link_to('', + edit_dmsf_path(:id => @project, :folder_id => subfolder), + :title => l(:link_edit, :title => h(subfolder.title)), + :class => 'icon icon-edit') %> + <%= link_to('', + lock_dmsf_path(:id => @project, :folder_id => subfolder), + :title => l(:title_lock_file), + :class => 'icon icon-dmsf-lock') %> + <% if subfolder.notification %> + <%= link_to('', + notify_deactivate_dmsf_path(:id => @project, :folder_id => subfolder), + :title => l(:title_notifications_active_deactivate), + :class => 'icon icon-notification-on') %> + <% else %> + <%= link_to('', + notify_activate_dmsf_path(:id => @project, :folder_id => subfolder), + :title => l(:title_notifications_not_active_activate), + :class => 'icon icon-notification-off') %> + <% end %> + <% if link %> + <%= link_to('', + dmsf_link_path(link), + :data => {:confirm => l(:text_are_you_sure)}, + :method => :delete, + :title => l(:title_delete), + :class => 'icon icon-del') %> + <% else %> + <%= link_to('', + delete_dmsf_path(:id => @project, :folder_id => @folder, :delete_folder_id => subfolder), + :data => {:confirm => l(:text_are_you_sure)}, + :title => l(:title_delete), + :class => 'icon icon-del') %> + <% end %> + <% else %> + + <% if (!locked_for_user || @force_file_unlock_allowed) && subfolder.unlockable? %> + <%= link_to('', + unlock_dmsf_path(:id => @project, :folder_id => subfolder), + :title => l(:title_unlock_file), + :class => 'icon icon-dmsf-unlock')%> + <% end %> + <% end %> +
+ <% end %> + +0 +0 diff --git a/app/views/dmsf/_file.html.erb b/app/views/dmsf/_file.html.erb new file mode 100644 index 00000000..74c09186 --- /dev/null +++ b/app/views/dmsf/_file.html.erb @@ -0,0 +1,179 @@ +<%#= +# Redmine plugin for Document Management System "Features" +# +# Copyright (C) 2014 Karel Pičman +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +%> + +<% locked_for_user = file.locked_for_user? %> +<% locked = file.locked? %> +<% wf = DmsfWorkflow.find_by_id(file.last_revision.dmsf_workflow_id) %> + +<%= check_box_tag(link ? 'file_links[]' : 'files[]', + link ? link.id : file.id, false, :title => l(:title_check_for_zip_download_or_email)) %> + + <% file_download_url = url_for({:only_path => false, :controller => :dmsf_files, :action => 'show', :id => file, :download => ''}) %> + <%= link_to(h(link ? link.name : file.last_revision.display_title), + file_download_url, + :class => "icon icon-file #{DmsfHelper.filetype_css(file.name)}", + :title => l(:title_title_version_version_download, :title => h(file.title), :version => file.version), + 'data-downloadurl' => "#{file.last_revision.detect_content_type}:#{h(file.name)}:#{file_download_url}") %> +
<%= h(file.display_name) %>
+ +<%= number_to_human_size(file.last_revision.size) %> + + <%= format_time(file.last_revision.updated_at) %> + <% if locked_for_user %> + <% if file.lock.reverse[0].user %> + <%= link_to('', + user_path(file.lock.reverse[0].user), + :title => l(:title_locked_by_user, :user => file.lock.reverse[0].user), + :class => 'icon icon-dmsf-locked') %> + <% else %> + <%= content_tag(:span, '', + :title => l(:notice_account_unknown_email), + :class => 'icon icon-dmsf-locked') %> + <% end %> + <% elsif locked %> + <%= content_tag(:span, '', :title => l(:title_locked_by_you), + :class => 'icon icon-dmsf-lockedbycurrent') %> + <% end %> + +<%= file.last_revision.version %> + + <% if wf && @file_manipulation_allowed %> + <%= link_to( + file.last_revision.workflow_str(false), + log_dmsf_workflow_path( + :project_id => @project.id, + :id => wf.id, + :dmsf_file_revision_id => file.last_revision.id), + :title => DmsfWorkflow.assignments_to_users_str(wf.next_assignments(file.last_revision.id)), + :remote => true) %> + <% else %> + <%= file.last_revision.workflow_str(false) %> + <% end %> + +<%= h(file.last_revision.user) %> + + <% if @file_manipulation_allowed %> +
+ <% unless locked %> + <%= link_to('', + dmsf_file_path(:id => file), + :title => l(:link_details, :title => h(file.last_revision.title)), + :class => 'icon icon-dmsf-file-details') %> + <%= link_to('', + lock_dmsf_files_path(:id => file), + :title => l(:title_lock_file), + :class => 'icon icon-dmsf-lock') %> + <% if file.notification %> + <%= link_to('', + notify_deactivate_dmsf_files_path(:id => file), + :title => l(:title_notifications_active_deactivate), + :class => 'icon icon-notification-on') %> + <% else %> + <%= link_to('', + notify_activate_dmsf_files_path(:id => file), + :title => l(:title_notifications_not_active_activate), + :class => 'icon icon-notification-off') %> + <% end %> + <% if link %> + <%= link_to('', + dmsf_link_path(link), + :data => {:confirm => l(:text_are_you_sure)}, + :method => :delete, + :title => l(:title_delete), + :class => 'icon icon-del') %> + <% else %> + <%= link_to('', + dmsf_file_path(:id => file), + :data => {:confirm => l(:text_are_you_sure)}, + :method => :delete, + :title => l(:title_delete), + :class => 'icon icon-del') unless locked_for_user %> + <% end %> + <% else %> + + <% if (!locked_for_user || @force_file_unlock_allowed) && file.unlockable? %> + <%= link_to('', + unlock_dmsf_files_path(:id => file), + :title => l(:title_unlock_file), + :class => 'icon icon-dmsf-unlock')%> + <% end %> + + + <% end %> + <% case file.last_revision.workflow %> + <% when DmsfWorkflow::STATE_WAITING_FOR_APPROVAL %> + <% if wf %> + <% assignments = wf.next_assignments(file.last_revision.id) %> + <% index = assignments.find_index{|assignment| assignment.user_id == User.current.id} if assignments %> + <% if index %> + <%= link_to('', + action_dmsf_workflow_path( + :project_id => @project.id, + :id => wf.id, + :dmsf_workflow_step_assignment_id => assignments[index].id, + :dmsf_file_revision_id => file.last_revision.id), + :title => l(:title_waiting_for_approval), + :class => 'icon icon-dmsf-waiting-for-approval', + :remote => true) %> + <% else %> + <%= content_tag(:span, '', + :title => "#{l(:label_dmsf_wokflow_action_approve)} #{l(:label_dmsf_wokflow_action_reject)} #{l(:label_dmsf_wokflow_action_delegate)}", + :class => 'icon icon-dmsf-waiting-for-approval') %> + <% end %> + <% else %> + <%= content_tag(:span, '', + :title => "#{l(:label_dmsf_wokflow_action_approve)} #{l(:label_dmsf_wokflow_action_reject)} #{l(:label_dmsf_wokflow_action_delegate)}", + :class => 'icon icon-dmsf-waiting-for-approval') %> + <% end %> + <% when DmsfWorkflow::STATE_APPROVED %> + <%= content_tag(:span, '', :title => l(:title_approved), + :class => 'icon icon-dmsf-approved') %> + <% when DmsfWorkflow::STATE_ASSIGNED %> + <% if User.current && (file.last_revision.dmsf_workflow_assigned_by == User.current.id) && wf %> + <%= link_to('', + start_dmsf_workflow_path( + :id => file.last_revision.dmsf_workflow_id, + :dmsf_file_revision_id => file.last_revision.id), + :title => l(:label_dmsf_wokflow_action_start), + :class => 'icon icon-dmsf-assigned') %> + <% else %> + <%= content_tag(:span, '', + title => l(:label_dmsf_wokflow_action_start), + :class => 'icon icon-dmsf-assigned') %> + <% end %> + <% when DmsfWorkflow::STATE_REJECTED %> + <%= content_tag(:span, '', :title => l(:title_rejected), + :class => 'icon icon-dmsf-rejected') %> + <% else %> + <% if @workflows_available %> + <%= link_to('', + assign_dmsf_workflow_path( + :project_id => @project.id, + :dmsf_file_revision_id => file.last_revision.id), + :title => l(:label_dmsf_wokflow_action_assign), + :class => 'icon icon-dmsf-none', + :remote => true) %> + <% end %> + <% end %> +
+ <% end %> + +1 +<%= file.last_revision.size %> \ No newline at end of file diff --git a/app/views/dmsf/_path.html.erb b/app/views/dmsf/_path.html.erb index 2019d776..720314d4 100644 --- a/app/views/dmsf/_path.html.erb +++ b/app/views/dmsf/_path.html.erb @@ -18,17 +18,17 @@

<% if folder %> - <%= link_to l(:link_documents), dmsf_path(:id => @project) %> + <%= link_to l(:link_documents), dmsf_folder_path(:id => @project) %> <% folder.dmsf_path.each do |path_element| %> / <% if !filename && path_element == folder.dmsf_path.last %> <%= h(path_element.title) %> <% else %> - <%= link_to h(path_element.title), dmsf_path(:id => @project, :folder_id => path_element) %> + <%= link_to h(path_element.title), dmsf_folder_path(:id => @project, :folder_id => path_element) %> <% end %> <% end %> <% else %> - <%= link_to l(:link_documents), dmsf_path(:id => @project) %> + <%= link_to l(:link_documents), dmsf_folder_path(:id => @project) %> <% end %> <% if filename %> / diff --git a/app/views/dmsf/edit.html.erb b/app/views/dmsf/edit.html.erb index 6e537eb5..25af034f 100644 --- a/app/views/dmsf/edit.html.erb +++ b/app/views/dmsf/edit.html.erb @@ -20,9 +20,39 @@ <% html_title(l(:dmsf)) %>
- <%= link_to(image_tag('copy.png'), - {:controller => :dmsf_folders_copy, :action => 'new', :id => @folder }, - :title => l(:title_copy)) if @folder.id %> + <% if User.current.allowed_to?(:folder_manipulation, @project) && params[:action] == 'edit' %> + <% unless @folder.locked? %> + <%= link_to(l(:button_lock), + lock_dmsf_path(:id => @project, :folder_id => @folder), + :title => l(:title_lock_file), + :class => 'icon icon-dmsf-lock') %> + <% if @folder.notification %> + <%= link_to(l(:label_notifications_off), + notify_deactivate_dmsf_path(:id => @project, :folder_id => @folder), + :title => l(:title_notifications_active_deactivate), + :class => 'icon icon-notification-on') %> + <% else %> + <%= link_to(l(:label_notifications_on), + notify_activate_dmsf_path(:id => @project, :folder_id => @folder), + :title => l(:title_notifications_not_active_activate), + :class => 'icon icon-notification-off') %> + <% end %> + <%= link_to(l(:button_copy), copy_folder_path(:id => @folder), + :title => l(:title_copy), :class => 'icon icon-copy') %> + <%= link_to(l(:button_delete), + delete_dmsf_path(:id => @project, :folder_id => @folder.dmsf_folder_id, :delete_folder_id => @folder), + :data => {:confirm => l(:text_are_you_sure)}, + :title => l(:title_delete), + :class => 'icon icon-del') %> + <% else %> + <% if (!@folder.locked_for_user? || User.current.allowed_to?(:force_file_unlock, @project)) && @folder.unlockable? %> + <%= link_to(l(:button_unlock), + unlock_dmsf_path(:id => @project, :folder_id => @folder), + :title => l(:title_unlock_file), + :class => 'icon icon-dmsf-unlock')%> + <% end %> + <% end %> + <% end %>
<% create = @pathfolder == @parent %> @@ -64,7 +94,3 @@ <% end %> <%= wikitoolbar_for 'dmsf_folder_description' %> - -<% content_for :header_tags do %> - <%= stylesheet_link_tag 'dmsf', :plugin => 'redmine_dmsf' %> -<% end %> diff --git a/app/views/dmsf/edit_root.html.erb b/app/views/dmsf/edit_root.html.erb index a665999b..c16163be 100644 --- a/app/views/dmsf/edit_root.html.erb +++ b/app/views/dmsf/edit_root.html.erb @@ -20,11 +20,22 @@ <% html_title(l(:dmsf)) %>
+ <% if User.current.allowed_to?(:folder_manipulation, @project) %> + <% if @project.dmsf_notification %> + <%= link_to(l(:label_notifications_off), + notify_deactivate_dmsf_path(:id => @project), + :title => l(:title_notifications_active_deactivate), + :class => 'icon icon-notification-on') %> + <% else %> + <%= link_to(l(:label_notifications_on), + notify_activate_dmsf_path(:id => @project), + :title => l(:title_notifications_active_deactivate), + :class => 'icon icon-notification-off') %> + <% end %> + <% end %>
-

- <%= link_to l(:link_documents), {:controller => 'dmsf', :action => 'show', :id => @project } %> -

+<%= render(:partial => 'path', :locals => {:folder => nil, :filename => nil}) %> <%= form_for(@project, :url => {:action => 'save_root', :id => @project}, :html => {:method=>:post}) do |f| %> @@ -39,8 +50,4 @@ <%= submit_tag(l(:submit_save)) %> <% end %> -<%= wikitoolbar_for 'dmsf_folder_description' %> - -<% content_for :header_tags do %> - <%= stylesheet_link_tag 'dmsf', :plugin => 'redmine_dmsf' %> -<% end %> +<%= wikitoolbar_for 'project_dmsf_description' %> \ No newline at end of file diff --git a/app/views/dmsf/show.html.erb b/app/views/dmsf/show.html.erb index d18d9a9c..ee880ed5 100644 --- a/app/views/dmsf/show.html.erb +++ b/app/views/dmsf/show.html.erb @@ -1,9 +1,9 @@ <%#= # Redmine plugin for Document Management System "Features" # -# Copyright (C) 2011 Vít Jonáš -# Copyright (C) 2012 Daniel Munn -# Copyright (C) 2013 Karel Pičman +# Copyright (C) 2011 Vít Jonáš +# Copyright (C) 2012 Daniel Munn +# Copyright (C) 2014 Karel Pičman # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -22,47 +22,73 @@ <% html_title(l(:dmsf)) %>
- <% if User.current.allowed_to?(:folder_manipulation, @project) %> - <% if @folder.nil? %> -   - <%= link_to('', {:action => 'edit_root', :id => @project}, - :title => l(:link_edit, :title => l(:link_documents)), :class => 'icon icon-edit') %> - <% elsif @locked_for_user %> -   - <%= link_to('', {:action => 'edit', :id => @project, :folder_id => @folder }, - :title => l(:link_edit, :title => h(@folder.title)), :class => 'icon icon-edit') %> + <% if @folder_manipulation_allowed %> + <% if @folder.nil? %> + <%= link_to(l(:button_edit), + edit_root_dmsf_path(:id => @project), + :title => l(:link_edit, :title => l(:link_documents)), + :class => 'icon icon-edit') %> + <% elsif !@locked_for_user %> + <%= link_to(l(:button_edit), + edit_dmsf_path(:id => @project, :folder_id => @folder), + :title => l(:link_edit, :title => h(@folder.title)), + :class => 'icon icon-edit') %> <% end %> <% if @folder && (!@locked_for_user || User.current.allowed_to?(:force_file_unlock, @project)) %> <% if @folder.locked? %> <% unless @folder.unlockable? %> - <%= image_tag('locked.png', :plugin => :redmine_dmsf, :title => l(:title_folder_parent_locked, :name => @folder.folder.lock.reverse[0].folder.title)) unless @folder.nil?%> + <%= link_to(l(:button_unlock), + :title => l(:title_folder_parent_locked, :name => @folder.folder.lock.reverse[0].folder.title), + :class => 'icon icon-dmsf-unlock') if @folder %> <% else %> - <%= link_to_function(image_tag('unlock.png', :plugin => 'redmine_dmsf'), - "manipulation_link('#{url_for(:action => 'unlock', :id => @project, :folder_id => @folder, :current => request.url)}')", - :title => l(:title_unlock_folder)) if @folder %> + <%= link_to(l(:button_unlock), + unlock_dmsf_path(:id => @project, :folder_id => @folder, :current => request.url), + :title => l(:title_unlock_folder), + :class => 'icon icon-dmsf-unlock') if @folder %> <% end %> <% else %> - <%= link_to_function(image_tag('lock.png', :plugin => 'redmine_dmsf'), - "manipulation_link('#{url_for(:action => 'lock', :id => @project, :folder_id => @folder, :current => request.url)}')", - :title => l(:title_lock_folder)) if @folder %> + <%= link_to(l(:button_lock), + lock_dmsf_path(:id => @project, :folder_id => @folder, :current => request.url), + :title => l(:title_lock_folder), + :class => 'icon icon-dmsf-lock') if @folder %> <% end %> <% end %> - <% unless @folder %> -   - <% if @project.dmsf_notification %> - <%= link_to_function(image_tag('notify.png', :plugin => :redmine_dmsf), - "manipulation_link('#{url_for(:action => 'notify_deactivate', :id => @project)}')", - :title => l(:title_notifications_active_deactivate)) %> - <% else %> - <%= link_to_function(image_tag('notifynot.png', :plugin => :redmine_dmsf), - "manipulation_link('#{url_for(:action => 'notify_activate', :id => @project)}')", - :title => l(:title_notifications_not_active_activate)) %> - <% end %> - <% end %> -   - <%= link_to('', {:action => 'new', :id => @project, :parent_id => @folder }, - :title => l(:link_create_folder), :class => 'icon icon-add') unless @locked_for_user %> - <% end %> + <% unless @folder %> + <% if @project.dmsf_notification %> + <%= link_to(l(:label_notifications_off), + notify_deactivate_dmsf_path(:id => @project), + :title => l(:title_notifications_active_deactivate), + :class => 'icon icon-notification-on') %> + <% else %> + <%= link_to(l(:label_notifications_on), + notify_activate_dmsf_path(:id => @project), + :title => l(:title_notifications_active_deactivate), + :class => 'icon icon-notification-off') %> + <% end %> + <% else %> + <% if @folder.notification %> + <%= link_to(l(:label_notifications_off), + notify_deactivate_dmsf_path(:id => @project, :folder_id => @folder), + :title => l(:title_notifications_active_deactivate), + :class => 'icon icon-notification-on') %> + <% else %> + <%= link_to(l(:label_notifications_on), + notify_activate_dmsf_path(:id => @project, :folder_id => @folder), + :title => l(:title_notifications_not_active_activate), + :class => 'icon icon-notification-off') %> + <% end %> + <% end %> + <% if @file_manipulation_allowed %> + <%= link_to(l(:label_create_link), + new_dmsf_link_path(:project_id => @project.id, :dmsf_folder_id => @folder ? @folder.id : @folder, :target_project_id => @project.id), + :title => l(:link_create_link), + :class => 'icon icon-link') unless @locked_for_user %> + <% end %> + <%= link_to(l(:link_create_folder), + new_dmsf_path(:id => @project, :parent_id => @folder), + :title => l(:link_create_folder), + :class => 'icon icon-add') unless @locked_for_user %> + <% end %>
<%= render(:partial => 'path', :locals => {:folder => @folder, :filename => nil}) %> @@ -81,7 +107,7 @@
<%= submit_tag(l(:submit_download), :title => l(:title_download_checked), :name => 'download_entries') %> <%= submit_tag(l(:submit_email), :title => l(:title_send_checked_by_email), :name => 'email_entries') %> - <% if User.current.allowed_to?(:file_manipulation, @project) && @folder && !@locked_for_user %> + <% if @file_manipulation_allowed && @folder_manipulation_allowed && !@locked_for_user %> <% end %>
@@ -102,236 +128,37 @@ - - <% @subfolders.each do |subfolder| %> - <% locked_for_user = subfolder.locked_for_user? %> - <% locked = subfolder.locked? %> + + <% @subfolders.each do |subfolder| %> - <%= check_box_tag('subfolders[]', subfolder.id, false, :title => l(:title_check_for_zip_download_or_email)) %> - - <%= link_to(h(subfolder.title), - {:action => 'show', :id => @project, :folder_id => subfolder}, :class => 'icon icon-folder') %> -
[<%= subfolder.files.visible.count %>]
- - - <%= format_time(subfolder.updated_at) %> - <% if locked_for_user %> - <% 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 %> - - - - <%= h(subfolder.user) %> - - <% if @folder_manipulation_allowed %> -
- <% if subfolder.notification %> - <%= link_to_function(image_tag('notify.png', :plugin => :redmine_dmsf), - "manipulation_link('#{url_for(:action => 'notify_deactivate', :id => @project, :folder_id => subfolder)}')", - :title => l(:title_notifications_active_deactivate)) %> - <% else %> - <%= link_to_function(image_tag('notifynot.png', :plugin => :redmine_dmsf), - "manipulation_link('#{url_for(:action => 'notify_activate', :id => @project, :folder_id => subfolder)}')", - :title => l(:title_notifications_not_active_activate)) %> - <% end %> -
-
-
- <%= link_to(image_tag('edit.png', :class =>'detail_icon'), - {:action => 'edit', :id => @project, :folder_id => subfolder }, - :title => l(:link_edit, :title => h(subfolder.title))) unless locked_for_user %> -
-
- <% unless locked_for_user && !User.current.allowed_to?(:force_file_unlock, @project)%> - <% if locked %> - <% if subfolder.unlockable? %> - <%= link_to_function(image_tag('unlock.png', :plugin => :redmine_dmsf), - "manipulation_link('#{url_for(:controller => 'dmsf', :action => 'unlock', - :id => @project, :folder_id => subfolder)}')", - :title => l(:title_unlock_file))%> - <% else %> - <%= image_tag('locked.png', :plugin => :redmine_dmsf, - :title => l(:title_folder_parent_locked, :name => subfolder.lock.reverse[0].folder.title)) %> - <% end %> - <% else %> - <%= link_to_function(image_tag('lock.png', :plugin => :redmine_dmsf), - "manipulation_link('#{url_for(:controller => 'dmsf', :action => 'lock', - :id => @project, :folder_id => subfolder)}')", - :title => l(:title_lock_file)) %> - <% end %> -   - <% end %> - <%= link_to_function(image_tag('delete.png', :plugin => :redmine_dmsf), - "confirmation_link('#{url_for(:action => 'delete', :id => @project, :folder_id => @folder, :delete_folder_id => subfolder)}', '#{l(:question_do_you_really_want_to_delete_this_entry)}')", - :title => l(:title_delete)) unless locked_for_user %> -
-
-
- <% end %> - - 0 - 0 + <%= render(:partial => 'dir', :locals => {:subfolder => subfolder, :link => nil}) %> <% end %> - <% workflows_available = DmsfWorkflow.where(['project_id = ? OR project_id IS NULL', @project.id]).count > 0 %> + <% @dir_links.each do |link| %> + + <%= render(:partial => 'dir', :locals => {:subfolder => link.target_folder, :link => link}) %> + + <% end %> <% @files.each do |file| %> <% unless file.last_revision %> <% Rails.logger.error "Error: dmsf_file id #{file.id} has no revision!" %> <% next %> - <% end %> - <% locked_for_user = file.locked_for_user? %> - <% locked = file.locked? %> - <% wf = DmsfWorkflow.find_by_id(file.last_revision.dmsf_workflow_id) %> + <% end %> - <%= check_box_tag('files[]', file.id, false, :title => l(:title_check_for_zip_download_or_email)) %> - - <% file_download_url = url_for({:only_path => false, :controller => :dmsf_files, :action => 'show', :id => file, :download => ''}) %> - <%= link_to(h(file.last_revision.display_title), - file_download_url, - :class => "icon icon-file #{DmsfHelper.filetype_css(file.name)}", - :title => l(:title_title_version_version_download, :title => h(file.title), :version => file.version), - 'data-downloadurl' => "#{file.last_revision.detect_content_type}:#{h(file.name)}:#{file_download_url}") %> -
<%= h(file.display_name) %>
- - <%= number_to_human_size(file.last_revision.size) %> - - <%= format_time(file.last_revision.updated_at) %> - <% if locked_for_user %> - <% 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 %> - - <%= file.last_revision.version %> - - <% if wf && @file_manipulation_allowed %> - <%= link_to( - file.last_revision.workflow_str(false), - log_dmsf_workflow_path( - :project_id => @project.id, - :id => wf.id, - :dmsf_file_revision_id => file.last_revision.id), - :title => DmsfWorkflow.assignments_to_users_str(wf.next_assignments(file.last_revision.id)), - :remote => true) %> - <% else %> - <%= file.last_revision.workflow_str(false) %> - <% end %> - - <%= h(file.last_revision.user) %> - - <% if @file_manipulation_allowed %> -
- <% if file.notification %> - <%= link_to_function(image_tag('notify.png', :plugin => :redmine_dmsf), - "manipulation_link('#{url_for(:controller => 'dmsf_files', :action => 'notify_deactivate', :id => file)}')", - :title => l(:title_notifications_active_deactivate)) %> - <% else %> - <%= link_to_function(image_tag('notifynot.png', :plugin => :redmine_dmsf), - "manipulation_link('#{url_for(:controller => 'dmsf_files', :action => 'notify_activate', :id => file)}')", - :title => l(:title_notifications_not_active_activate)) %> - <% end %> - <% case file.last_revision.workflow %> - <% when DmsfWorkflow::STATE_WAITING_FOR_APPROVAL %> - <% if wf %> - <% assignments = wf.next_assignments(file.last_revision.id) %> - <% index = assignments.find_index{|assignment| assignment.user_id == User.current.id} if assignments %> - <% if index %> - <%= link_to( - image_tag('waiting_for_approval.png', :plugin => :redmine_dmsf), - action_dmsf_workflow_path( - :project_id => @project.id, - :id => wf.id, - :dmsf_workflow_step_assignment_id => assignments[index].id, - :dmsf_file_revision_id => file.last_revision.id), - :title => l(:title_waiting_for_approval), - :remote => true) %> - <% else %> - <%= image_tag('waiting_for_approval.png', :title => "#{l(:label_dmsf_wokflow_action_approve)} #{l(:label_dmsf_wokflow_action_reject)} #{l(:label_dmsf_wokflow_action_delegate)}", :plugin => :redmine_dmsf) %> - <% end %> - <% else %> - <%= image_tag('waiting_for_approval.png', :title => "#{l(:label_dmsf_wokflow_action_approve)} #{l(:label_dmsf_wokflow_action_reject)} #{l(:label_dmsf_wokflow_action_delegate)}", :plugin => :redmine_dmsf) %> - <% end %> - <% when DmsfWorkflow::STATE_APPROVED %> - <%= image_tag('approved.png', :title => l(:title_approved), :plugin => :redmine_dmsf) %> - <% when DmsfWorkflow::STATE_ASSIGNED %> - <% if User.current && (file.last_revision.dmsf_workflow_assigned_by == User.current.id) && wf %> - <%= link_to_function(image_tag('assigned.png', :plugin => :redmine_dmsf), - "manipulation_link('#{start_dmsf_workflow_path( - :id => file.last_revision.dmsf_workflow_id, - :dmsf_file_revision_id => file.last_revision.id)}')", - :title => l(:label_dmsf_wokflow_action_start)) %> - <% else %> - <%= image_tag('assigned.png', :title => l(:label_dmsf_wokflow_action_start), :plugin => :redmine_dmsf) %> - <% end %> - <% when DmsfWorkflow::STATE_REJECTED %> - <%= image_tag('rejected.png', :title => l(:title_rejected), :plugin => :redmine_dmsf) %> - <% else %> - <% if workflows_available %> - <%= link_to( - image_tag('none.png', :plugin => :redmine_dmsf), - assign_dmsf_workflow_path( - :project_id => @project.id, - :dmsf_file_revision_id => file.last_revision.id), - :title => l(:label_dmsf_wokflow_action_assign), - :remote => true) %> - <% end %> - <% end %> -
-
-
- <%= link_to(image_tag('filedetails.png', :plugin => :redmine_dmsf, :class =>'detail_icon'), - {:controller => 'dmsf_files', :action => :show, :id => file }, - :title => l(:link_details, :title =>h(file.last_revision.title))) %> -
-
- <% if !locked_for_user || @force_file_unlock_allowed %> - <% if locked %> - <% if file.unlockable? %> - <%= link_to_function(image_tag('unlock.png', :plugin => :redmine_dmsf), - "manipulation_link('#{url_for(:controller => 'dmsf_files', :action => 'unlock', :id => file)}')", - :title => l(:title_unlock_file))%> - <% else %> - <%= image_tag('locked.png', :plugin => :redmine_dmsf, - :title => l(:title_file_parent_locked, :name => file.folder.lock.reverse[0].folder.title)) %> - <% end%> - <% else %> - <%= link_to_function(image_tag('lock.png', :plugin => :redmine_dmsf), - "manipulation_link('#{url_for(:controller => 'dmsf_files', :action => 'lock', :id => file)}')", - :title => l(:title_lock_file)) %> - <% end %> -   - <% end %> - <% unless locked_for_user %> - <%= link_to_function(image_tag('delete.png', :plugin => :redmine_dmsf), - "confirmation_link('#{url_for(:controller => 'dmsf_files', :action => 'delete', :id => file)}', '#{l(:question_do_you_really_want_to_delete_this_entry)}')", - :title => l(:title_delete)) %> - <% end %> -
-
-
- <% end %> - - 1 - <%= file.last_revision.size %> + <%= render(:partial => 'file', :locals => {:file => file, :link => nil}) %> + + <% end %> + <% @file_links.each do |link| %> + <% unless link.target_file.last_revision %> + <% Rails.logger.error "Error: dmsf_file id #{link.target_id} has no revision!" %> + <% next %> + <% end %> + + <%= render(:partial => 'file', :locals => {:file => link.target_file, :link => link}) %> <% end %> - -
+ <% end %> <% end %> -<%= render(:partial => 'multi_upload') if (@file_manipulation_allowed && !@locked_for_user) %> -
+<%= render(:partial => 'multi_upload') if (@file_manipulation_allowed && !@locked_for_user) %> \ No newline at end of file diff --git a/app/views/dmsf_files/show.html.erb b/app/views/dmsf_files/show.html.erb index 4b73d305..9c1f898c 100644 --- a/app/views/dmsf_files/show.html.erb +++ b/app/views/dmsf_files/show.html.erb @@ -24,40 +24,34 @@
<% if User.current.allowed_to?(:file_manipulation, @project) %> - <% unless @file.locked_for_user? && !User.current.allowed_to?(:force_file_unlock, @project)%> - <% if @file.locked? %> - <% unless @file.unlockable? %> - <%= image_tag('locked.png', :plugin => :redmine_dmsf, :title => l(:title_file_parent_locked, :name => @file.lock.reverse[0].folder.title)) %> - <% else %> - <%= link_to_function(image_tag('unlock.png', :plugin => 'redmine_dmsf'), - "manipulation_link('#{url_for(:action => 'unlock', :id => @file, :current => request.url)}')", - :title => l(:title_unlock_file)) %> - <% end %> - <% else %> - <%= link_to_function(image_tag('lock.png', :plugin => 'redmine_dmsf'), - "manipulation_link('#{url_for(:action => 'lock', :id => @file, :current => request.url)}')", - :title => l(:title_lock_file)) %> - <% end %> - <% end %> - <% unless @file.locked_for_user? %> -   - <%= link_to_function(image_tag('delete.png', :plugin => 'redmine_dmsf'), - "confirmation_link('#{url_for(:action => 'delete', :id => @file)}', '#{l(:question_do_you_really_want_to_delete_this_entry)}')", - :title => l(:title_delete)) %> - <% end %> -   - <% if @file.notification %> - <%= link_to_function(image_tag('notify.png', :plugin => 'redmine_dmsf'), - "manipulation_link('#{url_for(:action => 'notify_deactivate', :id => @file, :current => request.url)}')", - :title => l(:title_notifications_active_deactivate)) %> + <% unless @file.locked? %> + <%= link_to(l(:button_lock), + lock_dmsf_files_path(:id => @file), + :title => l(:title_lock_file), + :class => 'icon icon-dmsf-lock') %> + <% if @file.notification %> + <%= link_to(l(:label_notifications_off), + notify_deactivate_dmsf_files_path(:id => @file), + :title => l(:title_notifications_active_deactivate), + :class => 'icon icon-notification-on') %> + <% else %> + <%= link_to(l(:label_notifications_on), + notify_activate_dmsf_files_path(:id => @file), + :title => l(:title_notifications_not_active_activate), + :class => 'icon icon-notification-off') %> + <% end %> + <%= link_to(l(:button_copy), copy_file_path(:id => @file), + :title => l(:title_copy), :class => 'icon icon-copy') %> + <%= delete_link @file %> <% else %> - <%= link_to_function(image_tag('notifynot.png', :plugin => 'redmine_dmsf'), - "manipulation_link('#{url_for(:action => 'notify_activate', :id => @file, :current => request.url)}')", - :title => l(:title_notifications_not_active_activate)) %> - <% end %> -   - <%= link_to(image_tag('copy.png'), {:controller => :dmsf_files_copy, :action => 'new', :id => @file }, :title => l(:title_copy_or_move)) %> - <% end %> + <% if (!@file.locked_for_user? || User.current.allowed_to?(:force_file_unlock, @project)) && @file.unlockable? %> + <%= link_to(l(:button_unlock), + unlock_dmsf_files_path(:id => @file), + :title => l(:title_unlock_file), + :class => 'icon icon-dmsf-unlock')%> + <% end %> + <% end %> + <% end %>
<%= render(:partial => '/dmsf/path', :locals => {:folder => @file.folder, :filename => @file.title}) %> @@ -72,15 +66,22 @@
-
- <%= link_to_function(image_tag('rev_downloads.png', :plugin => 'redmine_dmsf'), "$('#revision_access-#{revision.id}').toggle()", :title => 'Download entries')%> - <%= link_to(image_tag('rev_download.png', :plugin => 'redmine_dmsf'), - {:action => 'show', :id => @file, :download => revision}, - :title => l(:title_title_version_version_download, :title => h(revision.title), :version => revision.version)) %> +
+ <%= link_to_function( + '', + "$('#revision_access-#{revision.id}').toggle()", + :title => l(:title_download_entries), + :class => 'icon icon-dmsf-rev-downloads') %> + <%= link_to('', + dmsf_file_path(@file, :download => revision), + :title => l(:title_title_version_version_download, :title => h(revision.title), :version => revision.version), + :class => 'icon icon-dmsf-rev-download') %> <% if User.current.allowed_to?(:file_manipulation, @project) %> - <%= link_to_function(image_tag('rev_delete.png', :plugin => 'redmine_dmsf'), - "confirmation_link('#{url_for(:action => 'delete_revision', :id => revision)}', '#{l(:question_do_you_really_want_to_delete_this_revision)}')", - :title => l(:title_delete_revision)) %> + <%= link_to '', + delete_revision_path(revision), + :data => {:confirm => l(:text_are_you_sure)}, + :title => l(:title_delete_revision), + :class => 'icon icon-dmsf-rev-delete' %> <% end %>
<%= l(:info_revision, :rev => revision.id) %> @@ -158,34 +159,34 @@ %> <% if @revision.valid? && @file.valid? %> <% end %> -<% content_for :header_tags do %> - <%= stylesheet_link_tag 'jquery-ui/jquery-ui-1.9.2.css', :plugin => 'redmine_dmsf' %> +<% content_for :header_tags do %> <%= stylesheet_link_tag 'jquery.dataTables/jquery-ui.dataTables.css', :plugin => 'redmine_dmsf' %> - <%= stylesheet_link_tag 'dmsf', :plugin => 'redmine_dmsf' %> <%= javascript_include_tag 'jquery-1.6.1.min.js', :plugin => 'redmine_dmsf' %> <%= javascript_include_tag 'jquery-ui-1.8.13.min.js', :plugin => 'redmine_dmsf' %> <%= javascript_include_tag 'jquery.dataTables/jquery.dataTables.min.js', :plugin => 'redmine_dmsf' %> diff --git a/app/views/dmsf_files_copy/new.html.erb b/app/views/dmsf_files_copy/new.html.erb index ddaffe66..5729a1c0 100644 --- a/app/views/dmsf_files_copy/new.html.erb +++ b/app/views/dmsf_files_copy/new.html.erb @@ -28,12 +28,12 @@ <%= form_tag({:action => 'create', :id => @file}, :id => 'copyForm') do |f| %>

- + <%= select_tag('target_project_id', project_tree_options_for_select(DmsfFile.allowed_target_projects_on_copy, :selected => @target_project)) %>

- <%= label_tag('target_folder_id', "#{l(:label_target_folder)}:") %> + <%= label_tag('target_folder_id', "#{l(:field_target_folder)}:") %> <%= select_tag('target_folder_id', options_for_select(DmsfFolder.directory_tree(@target_project), :selected => (@target_folder.id if @target_folder))) %> @@ -55,12 +55,4 @@ jQuery('#target_project_id').change(function () { jQuery('#content').load("<%= url_for(:action => 'new') %>", jQuery('#copyForm').serialize()); }); - - -<% content_for :header_tags do %> - <%= stylesheet_link_tag 'dmsf', :plugin => 'redmine_dmsf' %> - <%= javascript_include_tag 'jquery-1.6.1.min.js', :plugin => 'redmine_dmsf' %> - -<% end %> + \ No newline at end of file diff --git a/app/views/dmsf_folders_copy/new.html.erb b/app/views/dmsf_folders_copy/new.html.erb index 1eff4ad5..b8b04143 100644 --- a/app/views/dmsf_folders_copy/new.html.erb +++ b/app/views/dmsf_folders_copy/new.html.erb @@ -27,12 +27,12 @@ <%= form_tag({:action => 'copy_to', :id => @folder}, :id => 'copyForm') do |f| %>

- + <%= select_tag('target_project_id', project_tree_options_for_select(DmsfFolder.allowed_target_projects_on_copy, :selected => @target_project)) %>

- <%= label_tag('target_folder_id', "#{l(:label_target_folder)}:") %> + <%= label_tag('target_folder_id', "#{l(:field_target_folder)}:") %> <%= select_tag('target_folder_id', options_for_select(DmsfFolder.directory_tree(@target_project, @folder), :selected => (@target_folder.id if @target_folder))) %> @@ -46,12 +46,4 @@ jQuery('#target_project_id').change(function () { jQuery('#content').load("<%= url_for(:action => 'new') %>", jQuery('#copyForm').serialize()); }); - - -<% content_for :header_tags do %> - <%= stylesheet_link_tag 'dmsf', :plugin => 'redmine_dmsf' %> - <%= javascript_include_tag 'jquery-1.6.1.min.js', :plugin => 'redmine_dmsf' %> - -<% end %> + \ No newline at end of file diff --git a/app/views/dmsf_links/_form.html.erb b/app/views/dmsf_links/_form.html.erb new file mode 100644 index 00000000..b719a1b1 --- /dev/null +++ b/app/views/dmsf_links/_form.html.erb @@ -0,0 +1,64 @@ +<%# Redmine plugin for Document Management System "Features" +# +# Copyright (C) 2014 Karel Pičman +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.%> + +<% html_title(l(:dmsf)) %> + +

+
+ +<%= render(:partial => '/dmsf/path', :locals => {:folder => @dmsf_link.folder, :filename => nil}) %> + +<%= labelled_form_for @dmsf_link do |f| %> + <%= error_messages_for @dmsf_link %> + <%= f.hidden_field :project_id, :value => @dmsf_link.project_id %> + <%= f.hidden_field :dmsf_folder_id, :value => @dmsf_link.dmsf_folder_id if @dmsf_link.dmsf_folder_id %> +
+

+ <%= f.select(:target_project_id, + project_tree_options_for_select(DmsfFile.allowed_target_projects_on_copy, + :selected => @dmsf_link.target_project), + {:required => true}) %> +

+

+ <%= f.select(:target_folder_id, + folder_tree_options_for_select(DmsfFolder.directory_tree(@dmsf_link.target_project), + :selected => @target_folder_id), + {:required => true}) %> +

+

+ <%= f.select(:target_file_id, + options_for_select( + DmsfFolder.file_list( + (@target_folder_id ? DmsfFolder.find(@target_folder_id).files : @dmsf_link.target_project.dmsf_files).visible), + @target_file_id)) %> +

+

+ <%= f.text_field :name, :size => 40, :maxlength => 255, :required => true, :value => @dmsf_link.name %> +

+
+ <%= f.submit l(:button_create) %> +<% end %> + + \ No newline at end of file diff --git a/app/views/dmsf_links/new.html.erb b/app/views/dmsf_links/new.html.erb new file mode 100644 index 00000000..011e1b52 --- /dev/null +++ b/app/views/dmsf_links/new.html.erb @@ -0,0 +1,19 @@ +<%# Redmine plugin for Document Management System "Features" +# +# Copyright (C) 2014 Karel Pičman +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.%> + +<%= render 'form' %> \ No newline at end of file diff --git a/app/views/dmsf_state/_user_pref.html.erb b/app/views/dmsf_state/_user_pref.html.erb index d230b30d..669c5037 100644 --- a/app/views/dmsf_state/_user_pref.html.erb +++ b/app/views/dmsf_state/_user_pref.html.erb @@ -32,8 +32,4 @@ <%= submit_tag(l(:submit_save), :title => l(:title_save_preferences)) %>
<% end %> -
- -<% content_for :header_tags do %> - <%= stylesheet_link_tag 'dmsf', :plugin => 'redmine_dmsf' %> -<% end %> \ No newline at end of file +
\ No newline at end of file diff --git a/app/views/dmsf_upload/upload_files.html.erb b/app/views/dmsf_upload/upload_files.html.erb index 9513c916..ff2637d8 100644 --- a/app/views/dmsf_upload/upload_files.html.erb +++ b/app/views/dmsf_upload/upload_files.html.erb @@ -41,14 +41,4 @@ <% i += 1 %> <% end %> <%= submit_tag(l(:submit_commit)) %> -<% end %> - -<% content_for :header_tags do %> - <%= stylesheet_link_tag 'dmsf', :plugin => 'redmine_dmsf' %> - <%= javascript_include_tag 'jquery-1.6.1.min.js', :plugin => 'redmine_dmsf' %> - -<% end %> +<% end %> \ No newline at end of file diff --git a/assets/images/delete.png b/assets/images/delete.png deleted file mode 100644 index ec01ecd32b987b0fa0ff4ca286abb0718e62fd5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 459 zcmV;+0W|)JP)&b__8wWXz{LPEWBbMM~X_xJbCV`Ihu0L}may$}$!LPFl& z-o0aEwGa@!006Z)IlU<<)&Ky#N=n9abNA=x#yL6O007Pi2*wZ)=dG>h007QwYu*S5 zy+T6&_xHw9Qtto&&O$=(IXU+T2=B(m&Pq!6T3YvGWA{o*&Qem=b93)&YxjG5_k@K1 zl$73cbN`&2)?;J;rKSI^t>=u4-khB8&d&d}wceDJ)=Em}dwbSvYtC9))>>NUwY7|{ z2qypl00DGTPE!Ct=GbNc005^+L_t&-83n;RP6A;72Eh5)g~SN4HCkXSXgGwGH}?Sc zCd7tDI|C^DKh_xl0C;>2*azYz$@FG_--pA2!OgN&+ie@?Rxgu>oPyW)HlAr(p002ovPDHLkV1f~d B+s6O^ diff --git a/assets/images/filetypes/c_gray.png b/assets/images/filetypes/c_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..6edaf869b5474f1a122f4f5ff90fa0fb63f35511 GIT binary patch literal 437 zcmV;m0ZRUfP)Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^h<5Cj3+ zyKTh)00B8kL_t(2&s~wdN&`_4g}-}u6ANP?jX_jM5K$prASpyF(g@bJ0iQy#un`|1 zpoP|X0DFA`8}01;Ys3^Wnx9R`-aQt(YT}t{n2(vm86&_fk;h|NEnXD?LQo!d#xB%f z4RzL_fK>ui#;&Kn`s(XbA9`1)H=Q>qU=bK9p#qH*C{R}&wG?Wgo-P^`j5t|oA8*$o z%K}A2$cS8G#IO3N<+bZfPB=QWSjFLyrb9%?JYZ)Jvbme99d^kO5a8kAlP1Ls0CsV2 z$nz~gjUr$Y#3vOWaX_ydU)%z~U@^aO*!Cl2*W;$iQ-Xkpje&>DF`M-l`ZW0>LI`0{ zvcZV`!;Pct+=!48HTWHY#jhqo-Rmw1c|1{}sQ58k(vL4Q`LGBqNJK6m;=dv{z!?E% fnS5e;T8`E?PTixckS}2k00000NkvXXu0mjfj7_NS literal 0 HcmV?d00001 diff --git a/assets/images/filetypes/csharp_gray.png b/assets/images/filetypes/csharp_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..6c27ebc12247b29714ce661a3799ef005fef2f70 GIT binary patch literal 471 zcmV;|0Vw{7P)Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^h<5Cj@g z-lQo200CP`L_t(2&t1{KYf}Lf#qrO3mIf*jf?_LH8)^|NI29u3Ak^8>wctPCDlRVK z&@rHc&Mu-zcZ)xYI0#PJ95NI^8nB5rKN|DiyAH2n>-Q{oINZxUCkZ6;W*u{sj_oKA zf|dQ=B+ufX_TzC=T^a|5#w72@AO9y7 z$J3^I5*}UXJy>0%>a_DhX2TgvHr+CJb!vTO`OS%12z|R2<#r_MJ{dcOw0f^r+uB%l z(~RGGUi)a;dtJHbNEdF8wLimkXZ>(e#Yn}BIZH?jg~49=dPBvuv5Rs&i>@H;wW(by z4KKa5tPx#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^h<5C{+* zz5+V{00BrzL_t(2&t1^5YEuCe#_`|1xm5}#3Ms8Z0&&wtDoO&K1V<4CU!a}DLHZ01 zPF)Nr;vn`Nvg+Uil;|s%NHK7+V$)kmZjM6|wf?{1EFb5b?@Izn!-k5pjC_e1LU8N! zXi`q&uTJA-S4$cTLwiyl$2i6@jvw(ozQr^S<5gEnDoC`aQN*t(qKKby6r-5NNgT(U zu2vH6RX*Q&`~JX+uUL1(rppqLb&}ol@if_M7&@nl91Yjp7S?5*%#*dfZMlI>g}yDh zx}J&-NIkpjlYMoCzJWCZJ$$sXFjVKUd-`tL@(w$=Ae(<-|HIC|XKOgNC7oLT**vB|KD>$vWwa!^z{}^P0?1j)|J<9=W*K@TaJyCjV#}+L@(q-pq2$ unUNA!bY7!200;0000Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^h<5Csw6 z7fj#)009+AL_t(2&sEUBP84wz#qrN>CcK5EjfIT`hQy5x78X|8kXTv5BlrZ?Xl*nh z!3Qu_3#&Z^6|n#cC`dH&XTjN-o!_x=qU<@%P44&JoSXqLNv-YOXf@av_^)x=G?}H& zO|CP|W|GZ7^(i!t9Jn+!bK}B0uue7x6)!AmRr+b2RE@DiCtmvKl{c0VyzQZC=B`7X zC1;pBL9B_0ZNn>fT>Ig>V-x3|s{3UWR5gC$i!+~{x{nxRB#Pk$emVCX2VSEQkB#~t z!x|Gy?%{zaXvMCtB0AL+`(UrnJy$&HQ*^4|RzVFKE#eziM5pijeV+YGo?HH)`U`X- vb`~0asF*JTqlN1tw}CAbMW<5~b49@)qFbU1MYb`?00000NkvXXu0mjf(D9$6 literal 0 HcmV?d00001 diff --git a/assets/images/filetypes/docx_gray.png b/assets/images/filetypes/docx_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..3de9b344e949f74ce1fd45d9d2f1e4718f7c9c09 GIT binary patch literal 401 zcmV;C0dD?@P)Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^h<5CsX$ zd(^f7009+AL_t(2&sEUBP84wz#qrN>CcK5EjfIT`hQy5x78X|8kXTv5BlrZ?Xl*nh z!3Qu_3#&Z^6|n#cC`dH&XTjN-o!_x=qU<@%P44&JoSXqLNv-YOXf@av_^)x=G?}H& zO|CP|W|GZ7^(i!t9Jn+!bK}B0uue7x6)!AmRr+b2RE@DiCtmvKl{c0VyzQZC=B`7X zC1;pBL9B_0ZNn>fT>Ig>V-x3|s{3UWR5gC$i!+~{x{nxRB#Pk$emVCX2VSEQkB#~t z!x|Gy?%{zaXvMCtB0AL+`(UrnJy$&HQ*^4|RzVFKE#eziM5pijeV+YGo?HH)`U`X- vb`~0asF*JTqlN1tw}CAbMW<5~b49@)qFbU1MYb`?00000NkvXXu0mjfmieGc literal 0 HcmV?d00001 diff --git a/assets/images/filetypes/html_gray.png b/assets/images/filetypes/html_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..9c161f2dfba95da0cc79daa21a9e99d103c81ab9 GIT binary patch literal 473 zcmV;~0Ve*5P)Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^h<5Cl6N zx3qTv00CV|L_t(2&sEV+YExkphVkEbdy`b#+JvGh)zCnoPLvKJir@xxDjkXwL7WH< z9J>Lr6m;Su9J+#TpgI$(C06iK$z-aRSathN>db<&uVw{9xob!~Ub$Uy=8s)n zsmlr-WhE7mgoia5wx#Cve7C40l`4%ORuY*5f0fP19I4CxdrInC|7NhSWY2FES7fS~ z5=V&mdEc?rz_eMH)cmk4jMpSS{rpl=H=}IMbv+AONF<}et4(jWwmYWHsoPc2wj>Aw z2vG=Y&t81ok*R8GS-KE5Oz)3e-0Ao730Zl}V_x*T+94t|)W^ul6b}CZ4R(@S#%pi) P00000NkvXXu0mjf?T^Nx literal 0 HcmV?d00001 diff --git a/assets/images/filetypes/image_gray.png b/assets/images/filetypes/image_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..2c6d6edb2ec4ec83ca7593b818f4a6ec08369ced GIT binary patch literal 416 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf67>k44ofy`glX(f`FeQ1ryD>1lag0jfAcNO;GW4aSYKoA3AZj zA5)-+>vc&t4ugY7oTTJc!fs_aIVC-9kBItV>SlQBqSWK%5w{~&cQV#2Xk<)#b}#o} z%7MMNYtLEn3nxUIXnu@mj(ftWm~q~1<>@V7e9U8`SWYp|z0zxX(M9<0i|E?as_VJa z#TsK{ulOJTnl(j;DdEkfv}Ts`cfbBr-TUu?|CTSytE9vaDmGNWrKO1o*b1bPgxXs=9hC+mRhHC6s37t9)HsK^6=k{)~j4OQ&}X| zPURFUbyNSmdcMY+7c2@7?`~<(dm7tg%(%^WbHln*hCi4;FWlIwYxrjkFbEkuUHx3v IIVCg!0H*Vt-v9sr literal 0 HcmV?d00001 diff --git a/assets/images/filetypes/java_gray.png b/assets/images/filetypes/java_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..e8ae43c3e9b896522685ab1e5f40147480a97c68 GIT binary patch literal 458 zcmV;*0X6=KP)Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^h<5CtO_ zz#U)!00B-(L_t(2&t=a)Yg2I)#_`YZ=0=i+nppo-gO-4cL+zko1qEM#xQM%>n=it> zgo19);;4f!pg0M-b#M_u@K2gZsx)oN&ArE=0V(~S@q7=@c~T%d9g*+$zewn8YL|@h8SHh*|uM7n^#roY&Vj9&KkKR4BEz(DwLg?nytr zd3bK)Qm=*NNE#Vgbr$67dAq;5^1(ZQ6=-O?>xOOD&0Ih}Udh}xH1bulsHUV)ZTxtKGp7A>@3OUDg(c*X-bmh*~=7Cy7!>}c7RIZs-DLDI?2~_ z*!r~=l9NPx#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^h<5CQ7XhTCa7yS!u(a_M`)X*dZ zLJe&#HMP~)7PM3}2Q9UTLZqcWU%vNFgYT7g&TyB{z4zQ}1ejTp#28kcHwAzY6uOO` z@9EE79al(WDFli=zooX?YOARa)#RzFlL~1p1css~N3I+>`cgx6dFrU8(+X)Lwqmy{ z=Qqz}xdSH2kRgEqz%H4ixOPn$;%sn*OM)gY1r`ZNV3%xmOc@~0G!x_)C(bpG*kl2) zIOtz>4~P^s9{2>F7zu%~!Q(G+StbX3V~4=mAh1q?F0Viqs~?knrr3lO(B&cwInPqq zV(nGk?U%y^^5O1xW>{mD(Qv}=qaybP?1`dH#PvTDmA(S7KqBxR0{$!TJNQO`nIjpk c9FkA{2h}8;vc1q(0RR9107*qoM6N<$g1t4Ya{vGU literal 0 HcmV?d00001 diff --git a/assets/images/filetypes/mpp_gray.png b/assets/images/filetypes/mpp_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..2095c3ec3267c2fd5b609ada7fea6df25912cb6e GIT binary patch literal 424 zcmV;Z0ayNsP)Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^h<5C{cu zW9HBR00AsXL_t(2&sEU9Y86ow#qr-A1}rS>v=;=ixU~v~_)!TFYhNIN#0T&Ne1Zf7 zBZx(aHiAXUd?+G98{LU)zzQ zi)pkmiQjP+s}ZppP``>K`R=n;tI?Qx0hWoCQQcc~;)CSAyI@HSxywX7#kyPx#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^h<5C;xm zDI=Ev00AdSL_t(2&t1?zYgAzrgz?|it0*K!j3P^-DAtxXDeVLah*+euvr2DgVPR(% z`xFw;Zy<=QxP^t-1wjH9+esQB!MlIncPz5t)idQhXU=dM;A1+og{Eev*lzrt51D0} zNxF>lBmBtW~ z+;qu-x6YcFn~T~%aqL*J?y_oX;Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^h<5C$~A zKFeeP00AUPL_t(2&sEVqYZOrw2H1q=NHu?mPF5-^pWRr+)m>BT0Z zkS0YCY%H`Af<#advA3~Xg80z{6WH0=xvxcrb#qU1;XLQ%z^Q-_8EN|(YmKp0`TyRh z%{Wa)8Rk*0MK-dV8F1LQzh)`&FvBF7CGXN?n4>I3_H&Zmq$f3e%VYPQf^GK%&-&4d z{cJh4=BknJKFdtKQXl1xbvu^DTa7p7Em$z`hJyNum+n@ZxvpqD(1}j*+Nvn(1A~fA z5p>gVat;QSX@jUx(}S-6PeJ3CAAb7dqjk}lI|oI?q8E;h{dVSQpD;I@aNCN%K4~r5 z^F@@4ASzc3Y+7~+#pL1+#bt*!#4R@!G0~s&d0G@jr&AOYMZrJ&@VV9k);Y)k0000< KMNUMnLSTXgRj%X! literal 0 HcmV?d00001 diff --git a/assets/images/filetypes/ods_gray.png b/assets/images/filetypes/ods_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..3fb218bc2a965b3a37e09a2c68dc1cff3ad48603 GIT binary patch literal 401 zcmV;C0dD?@P)Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^h<5C$RA z<1dc@009+AL_t(2&sEUBYgIuI#qrNxu3a#Ntyqbmjemo7fixo4c2?=_EGz}P*r$+y zSf>!8#Lhy*E`?gXLWMLBgS;QvJr?hBbKQYqXU_L5Gh2X69nakmZ4^3R#T|4n9eP_%NBN2`zG<$iqUm4TF4WQe!;!fcL)CQK z1?u=Xz24@JqUtxZR&nONg?nhj22pjJYm=dsG5-ftQ4~c5ouX`pyaayv4%P)Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^h<5Cjp% z41J*h00ALML_t(2&sEPoYZOr!hT&_L0TBWLMH@p>2{v}xSc(XOjff~V>8vd51O*FQ zv5SpW3JFSnK|mySDw;+xDXg4Mu~-SX+1)vh#SZK2Ipux5=c5ANXJpdtv57J6SN^Ye znPi-!jMC&@RwB2uksf&4<|23ms|m|f5~V!*Ojk44ofy`glX(f`FeQ1ryD>1lUb4DxKO4G(pYN#W6(VeCWiz zUe1mJt^4opHs=&FX;SHR;*!?wy^(2UxOb`4g+qE<=k_Zw=GHWbgxNK1T|2jR(E>%r zlkz{6cT3LR`&}(PVO4&bMe!7dtjSD_r?Wom7CQ)N`0g@JS6$h8=ep*iqs;8a*QdKz zPF?tAiL&m-OHYTb;#^Z743BkI3RU(*27@jSU zHj7X{uJ_b+!9lb4B^J-7h)1#X{7GYO-|6^ta`dJKhR_B6$KuVODu+f|?o@fb*CoH} z?e603*Q@VMJdzi5B=N0(dzq$=cG#NPd>WdJSHxP6d}xw+Tkm65RZ|`RF9H~d44$rj JF6*2UngC@Ro$>$x literal 0 HcmV?d00001 diff --git a/assets/images/filetypes/php_gray.png b/assets/images/filetypes/php_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..6ef833889eb3f7e408e160730ee2e3272e776a80 GIT binary patch literal 431 zcmV;g0Z{&lP)Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^h<5CkNU zzqx_{00A>eL_t(2&s~teOG0rJ#XsNYlLo0FP$7z(b1LCUR8UK61O@#I4KA(X5RT#? z6x0^@FEqCHCj>!@wnPqP*002ovPDHLkV1j$fuk!!^ literal 0 HcmV?d00001 diff --git a/assets/images/filetypes/ppt_gray.png b/assets/images/filetypes/ppt_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..929bf23a1a47addee3a6e97c0afbc7e7827c70dc GIT binary patch literal 419 zcmV;U0bKrxP)Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^h<5Ctn4 z8hj&aB!sbRW;`$pYIw zlsX%B3=J@6!7GjMR0!dXlpT9*(v-&@nsV%Je+(6=HEGF&-zH=kSHcmNg(_vUPRz=N ziVO383Xjyj<4(5bom1zE&Rc8#2p@eGLXol=FYWjyEZQ}rQ7!c=ic~z;x;Cxx)q9Or z_<}{D=>NSRPyQ{BF&{{Ofg*$t#Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^h<5Ct}R z9r=p@00AdSL_t(2&sESrOO|0A#qrORmpnK)1g=36`Vv9}rLn0O(AetJAk8lN0)kY~ zArS|mFhj&aB!sbRW;`$pYIw zlsX%B3=J@6!7GjMR0!dXlpT9*(v-&@nsV%Je+(6=HEGF&-zH=kSHcmNg(_vUPRz=N ziVO383Xjyj<4(5bom1zE&Rc8#2p@eGLXol=FYWjyEZQ}rQ7!c=ic~z;x;Cxx)q9Or z_<}{D=>NSRPyQ{BF&{{Ofg*$t#Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^h<5C#O9 z=ljS200BZtL_t(2&t=g)Yf}Lf#_`|1xgj)m2o&0iQDSlEtPm$Rmu{kq(AiOu3T~nw z!C*7^AspPDT>SuAu=uh_(xMfU+?d>(Eom$a?P)oPVGLs!KjTOAqKI$N?Py5_iFOfr{Ej^G_!TG7k0M4fh?gC$ zB52n& zdul3kH1B2H*7VwC2Ub0{A`z!2z#UER)a_YWfH}&R;qQ8*t$yYue+?nw<{4;4N`zUN ooB0oyBV`guF4|aLb4sQD9~V84gr;|EsQ>@~07*qoM6N<$f+M-RGXMYp literal 0 HcmV?d00001 diff --git a/assets/images/filetypes/vsd_gray.png b/assets/images/filetypes/vsd_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..4a70fb3ac88bbeb21975fd51fc6ba9695cf24852 GIT binary patch literal 389 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf67>k44ofy`glX(f`FeQ1ryD>1XzqxvUx58P2lu&aSYKoA9}&j zYfhj5%Y*zj_Ic{ufiAB46PR~g%01R9-cfEKad1sflfsTd*#eP5Q}IGot^Ylf|Ihz! z)opWZWA@dO($diH4Zml+(u$fZ_S;szR62IcNAqQdorNZaGJ?k$Un*G%D?9fdyK!T8 zwt>R8>XrHV>x$FFZ!h}BtmIp`B%@|KcN&wuw&vc4H@obAJY$)=LAj+sb?>8-ycUeP zvTaTOxczi3O^pnk#PWDW7rxkkEqcF9RB?oD&doJaFM0nQ5NEFoZ?#^-9hvn^ak}j_ zk)v*<6PK>cja(gE($({!!Blbef4lDW#m_f36u-1rk44ofy`glX(f`FeQ1ryD>1lV=9dL{wo896;&978nDhhA{> zniD9%@*uyBeV#gZpo^>i1m+!=a*wr&ca$4Q99+}Wq_Cq4C>wnMW|MS0F zb=w@XRv^4a4!|xfdw4&yU{kD}am5$x=(R`UN&sgSeP;Mzu-TUYyuLWbS zY+KVmZa-a1QzHW>u{>VUg)jDBi{392RUBcPb90TR#M$e@Tdmh{M`k@!oNjwf z!Ro@$-!h#V_p@xf3%shKX)I-*VRfwyTbiUZ6;1 en253KLHkgt1%FSponZrp6N9I#pUXO@geCxgxRIFv literal 0 HcmV?d00001 diff --git a/assets/images/filetypes/xls_gray.png b/assets/images/filetypes/xls_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..3337cadf6815925693318c655cf5d02930743cbc GIT binary patch literal 405 zcmV;G0c!qPx#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^h<5C<9K z`le6-009|EL_t(2&sET`Yt?ZS#_`wH5B>)h%Y>V)BBEo(>Z*u?CCe6F^FOf8W*7^C z!7$J|l?8D{SQ(f^i^-MU>;3-vJO;na-Sd|Vbn`AdoUS-hw>WhU&qtkf-w#fFR@YHf`$k=U>!h7GHdG6E!rmEoO2$j}tSNybN z>Y863c`F`^h&M{(x~Z#XPMmq>rhXhoMVaH&H@9%&$PI%y#Hy&u%z<}W$Da7@*ot1P zspE|@w{9Km`QeYxI`I+r#Go`6?`_%y4^;O@7lYE;Pz?tCs6iazt{9AY@8#iz^IX!t z@(&n9d{|2Kj;dbdQ>oLq*I00000NkvXXu0mjfwwtw^ literal 0 HcmV?d00001 diff --git a/assets/images/filetypes/xlsx_gray.png b/assets/images/filetypes/xlsx_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..0ed8a0f2857bf847238512aef5ef53e8b3b455e4 GIT binary patch literal 405 zcmV;G0c!qPx#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^h<5C;Pu zm|rRY009|EL_t(2&sET`Yt?ZS#_`wH5B>)h%Y>V)BBEo(>Z*u?CCe6F^FOf8W*7^C z!7$J|l?8D{SQ(f^i^-MU>;3-vJO;na-Sd|Vbn`AdoUS-hw>WhU&qtkf-w#fFR@YHf`$k=U>!h7GHdG6E!rmEoO2$j}tSNybN z>Y863c`F`^h&M{(x~Z#XPMmq>rhXhoMVaH&H@9%&$PI%y#Hy&u%z<}W$Da7@*ot1P zspE|@w{9Km`QeYxI`I+r#Go`6?`_%y4^;O@7lYE;Pz?tCs6iazt{9AY@8#iz^IX!t z@(&n9d{|2Kj;dbdQ>oLq*I00000NkvXXu0mjfwU@K; literal 0 HcmV?d00001 diff --git a/assets/images/filetypes/xml_gray.png b/assets/images/filetypes/xml_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..a68065100097c48d4ee47f3a65d05bc4b9feaff0 GIT binary patch literal 448 zcmV;x0YCnUP)Px#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^h<5C$qm zG4=-l00BfvL_t(2&t1_yYgAzr1mNer`{siXBt|e65f-!x#75jS78Z(?ybN_t z%J|1|yl87GVlHS+t9}e(5Q8|5qd1H*e#XnTrb3Xk${58YMlp(BbfXhx45J_WZOs%? za;^Vm3DiPq;_Q5pyq95n{k`Ard8=^Kl4V`B(s^W_Zf-s=lnB{Jx2;I3d9C8v-JS23 zcYE&OmY#-pzRI#$XmM$OWA&)IVFPDecWm8((2!?>gGWEctBnti(Dli(Lsw)C1xVrk zxeK3nc6%OsWyR0~Yp9Xsy@EHtUOyR_Vq)N-wVCzY;qRdqoStAATG>LEWPx#0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^h<5C#~H z=BI}M00CJ^L_t(2&sEPqYg2I?h4Ih5xh6F+N=p?{L0Ty2;L=s_CAbOFT^)^EDZT-x zIJHBCf`Sem-7RiT3QjE+t3?-~Rcqp(=HBnmq1USWbDncfmayC~na*`qtEr?yC`b8& z-TC=FvSj6I>a{ONv*Uy$B%!ilFnxE6Vr9;wseH$GyLN<->pCt}4Jh2Yn0Fmj3Wbq3 z>%)6{OP#S$IRLKAC`}@v@b<#+*|DmU3y{MHO-(KDB~*S2zYYy(+LR+T;K zSa>&k{^i#%i`wP2R782IJKKG={SR=nr)M!=iafQ;JjIc@?6&@I2XmQt5k44ofy`glX(f`FeQ1ryD>1Q@vtGS=6 zNymi$ou2<8kU=x&X8AJB?Q#bumX^%g>?pj*^0&;K{|*9^c1&5c*2gIG-cpsq$pUw* ze;QA#nPterb)ZH272l__Sc8R38&X(0GvNhMZXerQL70(Y)*K0-AbW|YuPggKMj=*t%~hLCoq$4;C9V-A&iT2y zsd*&~&PAz-C8;S2<(VZJ3hti10pX2&;y^{yJzX3_EKVmUED$gd3R)n4u_gH3qb@5p zF{iEt5A5|$&%7YAFgfLD4-XH|`HQ}Zj>SUCa`|i06A~u0NGWknPF6DFsgjhCV3LrK zFf%YP@OW6lC^tKCmhy$G1``)pet6WiYyOLk$6MS#OPQRN2=q9?t-Y{>W7f0(EU^r% zt2bt(9gyyQaZZ`dAaIs=#094J_Nr_KMm#JG44nscD@<$sn}AMa@O1TaS?83{1OQ+> BWEKDb literal 0 HcmV?d00001 diff --git a/assets/images/locked_gray.png b/assets/images/locked_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..aa8b2c09ade1e5ff6b55ba29bcfd2b398d79377b GIT binary patch literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CH!2%>VZZS;| zxA&jf59DzcctjQhl^+IS#^d=bQh>IoPe|2p35Lg-&?7IEF}Ejy-Sd z#T>|RL3i`nGt%^fCKQaBStj?Z>1-%j6-IFF{NehNV2sY)- zJDL?SCu@d1k1?ahWf2j#g}zSa?-t4V1X}PMT_4XN!P+gwaoOZ!yt8YEaCJx1J~sIZ zhn7>DG|ZiIo5f7hjPC0_^~yKnjhdihvaMJ4=BF3uK6>^)Io+jd{w;J}NSQ^iO0RnD zdN#fTJGV&xS39>>EB3cZ`0HNfV(07?ccaDkR6ko(Y_RjI(&UqKTjhH$+N|5xux~fe OPYj-}elF{r5}E)juyy$W literal 0 HcmV?d00001 diff --git a/assets/images/lockedbycurrent_gray.png b/assets/images/lockedbycurrent_gray.png new file mode 100644 index 0000000000000000000000000000000000000000..6c4ea7212f802929cd8b8fc1b5261b8322650820 GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^+(697!2%?MGxX$u6k~CayA#8@b22Z19Hu01cNd2L z?fqx=19_YU9+AaB<%dC-@p%4<6rdn`iKnkC`#mOJ4tArb=TGeg3UzzBIEF}EEAD%zJaTj(Iq%*f0Wl&(@6$X3XjG$P3}xta`fn*n{&6m%PU(jb)p8> z4$k%3fhEgsaFyiGkrm`RcIx^4`(7#B#upy0`7{4B!@gO1@{n2Ub_GQ literal 0 HcmV?d00001 diff --git a/assets/images/unlockdisabled.png b/assets/images/unlockdisabled.png deleted file mode 100644 index faba76930743e3ad1a4274c1a53f73e0a3b068bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 662 zcmV;H0%`q;P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&02y>eSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+*LgRNQs00IU{L_t(IPlb~^h#FxK$B!#gU4K;?!7{#!lHvmGK%_g+lZTd8y&nFCUI2_knt#+GWFc`pWHiOk_1;^u&8f&-PfALPBR;%yH z>b@0=ML@`8GNA$loX=;tTrLog$I(QF7hp6RpDUFL%;$5!HSYI&IGs*Zh~2Z4_vaog<{5{U$LK9x!V!!W-U3dN&R zseCjT46k^_B>9@qujnpzj6@>%M!dMaTrU4AlgYlk42eYIp)ewTAl-i+4hK9AdSz0n zlq;1=AQlAhg95Z#EsN$93I*_ZJRE_2z$9LtSlj?+v-uCpvVi8f-R{5Sy$>Y$ksJyh wi(p_4oq!ngL{`UHESB%2``iD1sxJ!u0VH9SQ)@@7uK)l507*qoM6N<$f{nKpxc~qF diff --git a/assets/javascripts/redmine_dmsf.js b/assets/javascripts/redmine_dmsf.js deleted file mode 100644 index 020f67a6..00000000 --- a/assets/javascripts/redmine_dmsf.js +++ /dev/null @@ -1,32 +0,0 @@ -/* -* Redmine plugin for Document Management System "Features" -* -* Copyright (C) 2013 Karel Pičman -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; either version 2 -* of the License, or (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -function manipulation_link(action) { - jQuery('#entries_form').attr('action', action); - jQuery('#entries_form').submit(); -}; - -function confirmation_link(action, question) { - if(!window.confirm(question)) { - return; - } - jQuery('#entries_form').attr('action', action); - jQuery('#entries_form').submit(); -}; \ No newline at end of file diff --git a/assets/stylesheets/dmsf.css b/assets/stylesheets/dmsf.css index 03c8b476..3eb2951e 100644 --- a/assets/stylesheets/dmsf.css +++ b/assets/stylesheets/dmsf.css @@ -34,13 +34,13 @@ table.entries { } table.entries td.modified { - min-width: 104px; - width: 104px; + min-width: 127px; + width: 127px; } table.entries td.actions { - min-width: 116px; - width: 116px; + min-width: 96px; + width: 96px; } table.entries td.title { @@ -71,42 +71,6 @@ table.display tbody tr.odd { table.display tbody tr:hover { background-color:#ffffdd; } -.icon-file.filetype-doc, .icon-file.filetype-docx { - background-image: url(../images/filetypes/doc.png); -} - -.icon-file.filetype-xls, .icon-file.filetype-xlsx { - background-image: url(../images/filetypes/xls.png); -} - -.icon-file.filetype-ppt, .icon-file.filetype-pptx { - background-image: url(../images/filetypes/ppt.png); -} - -.icon-file.filetype-vsd, .icon-file.filetype-vsdx { - background-image: url(../images/filetypes/vsd.png); -} - -.icon-file.filetype-mpp { - background-image: url(../images/filetypes/mpp.png); -} - -.icon-file.filetype-odt { - background-image: url(../images/filetypes/odt.png); -} - -.icon-file.filetype-ods { - background-image: url(../images/filetypes/ods.png); -} - -.icon-file.filetype-odp { - background-image: url(../images/filetypes/odp.png); -} - -.icon-file.filetype-odg { - background-image: url(../images/filetypes/odg.png); -} - form.dmfs_entries { margin-bottom: 10px; display: block; @@ -167,10 +131,7 @@ div.right_icon_box { float: right; white-space: nowrap; padding: 0 5px 0 5px; -} - -div.right_icon_box img.detail_icon { - padding-top: 2px; + width: 96px; } /* DMSF entries upload control */ @@ -312,3 +273,83 @@ table.list td.step { .modal a, .modal a:link, .modal a:visited{ color: #169; text-decoration: none; } .modal a:hover, .modal a:active{ color: #c61a1a; text-decoration: underline;} .modal{ font-size: 12px} + +/* Command icons */ +.icon-margin-left { margin-left: 3px; } +.icon-link { background-image: url(../images/link.png); } +.icon-notification-on { background-image: url(../images/notify.png); margin-left: 3px; } +.icon-notification-off { background-image: url(../images/notifynot.png); margin-left: 3px; } +.icon-dmsf-lock { background-image: url(../images/lock.png); } +.icon-dmsf-unlock { background-image: url(../images/unlock.png); } +.icon-dmsf-locked { background-image: url(../images/locked.png); margin-left: 2px } +.icon-dmsf-lockedbycurrent { background-image: url(../images/lockedbycurrent.png); margin-left: 2px } +.icon-dmsf-waiting-for-approval { background-image: url(../images/waiting_for_approval.png); } +.icon-dmsf-approved { background-image: url(../images/approved.png); } +.icon-dmsf-assigned { background-image: url(../images/assigned.png); } +.icon-dmsf-rejected { background-image: url(../images/rejected.png); } +.icon-dmsf-none { background-image: url(../images/none.png); } +.icon-dmsf-file-details { background-image: url(../images/filedetails.png); } +.icon-dmsf-rev-download { background-image: url(../images/rev_download.png); } +.icon-dmsf-rev-downloads { background-image: url(../images/rev_downloads.png); } +.icon-dmsf-rev-delete { background-image: url(../images/rev_delete.png); } + +.icon-edit-gray { background-image: url(../images/edit_gray.png); } +.icon-notification-on-gray { background-image: url(../images/notify_gray.png); } +.icon-notification-off-gray { background-image: url(../images/notifynot_gray.png); } +.icon-dmsf-lock-gray { background-image: url(../images/lock_gray.png); } +.icon-dmsf-unlock-gray { background-image: url(../images/unlock_gray.png); } +.icon-dmsf-waiting-for-approval-gray { background-image: url(../images/waiting_for_approval_gray.png); } +.icon-dmsf-approved-gray { background-image: url(../images/approved_gray.png); } +.icon-dmsf-assigned-gray { background-image: url(../images/assigned_gray.png); } +.icon-dmsf-rejected-gray { background-image: url(../images/rejected_gray.png); } +.icon-dmsf-file-details-gray { background-image: url(../images/filedetails_gray.png); } + +tr.gray .icon-dmsf-locked { background-image: url(../images/locked_gray.png); margin-left: 2px } +tr.gray .icon-dmsf-lockedbycurrent { background-image: url(../images/lockedbycurrent_gray.png); margin-left: 2px } + +tr.gray .icon-dmsf-locked { background-image: url(../images/locked_gray.png); margin-left: 2px } +tr.gray .icon-dmsf-lockedbycurrent { background-image: url(../images/lockedbycurrent_gray.png); margin-left: 2px } + +/* File types */ +tr.gray .icon-folder { background-image: url(../images/folder_gray.png); } + +.icon-file.filetype-doc, .icon-file.filetype-docx { background-image: url(../images/filetypes/doc.png); } +.icon-file.filetype-xls, .icon-file.filetype-xlsx { background-image: url(../images/filetypes/xls.png); } +.icon-file.filetype-ppt, .icon-file.filetype-pptx { background-image: url(../images/filetypes/ppt.png); } +.icon-file.filetype-vsd, .icon-file.filetype-vsdx { background-image: url(../images/filetypes/vsd.png); } +.icon-file.filetype-mpp { background-image: url(../images/filetypes/mpp.png); } +.icon-file.filetype-odt { background-image: url(../images/filetypes/odt.png); } +.icon-file.filetype-ods { background-image: url(../images/filetypes/ods.png); } +.icon-file.filetype-odp { background-image: url(../images/filetypes/odp.png); } +.icon-file.filetype-odg { background-image: url(../images/filetypes/odg.png); } + +tr.gray .icon-file.filetype-doc, .icon-file.filetype-docx { background-image: url(../images/filetypes/doc_gray.png); } +tr.gray .icon-file.filetype-xls, .icon-file.filetype-xlsx { background-image: url(../images/filetypes/xls_gray.png); } +tr.gray .icon-file.filetype-ppt, .icon-file.filetype-pptx { background-image: url(../images/filetypes/ppt_gray.png); } +tr.gray .icon-file.filetype-vsd, .icon-file.filetype-vsdx { background-image: url(../images/filetypes/vsd_gray.png); } +tr.gray .icon-file.filetype-mpp { background-image: url(../images/filetypes/mpp_gray.png); } +tr.gray .icon-file.filetype-odt { background-image: url(../images/filetypes/odt_gray.png); } +tr.gray .icon-file.filetype-ods { background-image: url(../images/filetypes/ods_gray.png); } +tr.gray .icon-file.filetype-odp { background-image: url(../images/filetypes/odp_gray.png); } +tr.gray .icon-file.filetype-odg { background-image: url(../images/filetypes/odg_gray.png); } + +tr.gray .icon-file.text-x-c { background-image: url(../images/filetypes/c_gray.png); } +tr.gray .icon-file.text-x-csharp { background-image: url(../images/filetypes/csharp_gray.png); } +tr.gray .icon-file.text-x-java { background-image: url(../images/files/filetypes_gray.png); } +tr.gray .icon-file.text-x-javascript { background-image: url(../images/filetypes/js_gray.png); } +tr.gray .icon-file.text-x-php { background-image: url(../images/filetypes/php_gray.png); } +tr.gray .icon-file.text-x-ruby { background-image: url(../images/filetypes/ruby_gray.png); } +tr.gray .icon-file.text-xml { background-image: url(../images/filetypes/xml_gray.png); } +tr.gray .icon-file.text-css { background-image: url(../images/filetypes/css_gray.png); } +tr.gray .icon-file.text-html { background-image: url(../images/filetypes/html_gray.png); } +tr.gray .icon-file.image-gif { background-image: url(../images/filetypes/image_gray.png); } +tr.gray .icon-file.image-jpeg { background-image: url(../images/filetypes/image_gray.png); } +tr.gray .icon-file.image-png { background-image: url(../images/filetypes/image_gray.png); } +tr.gray .icon-file.image-tiff { background-image: url(../images/filetypes/image_gray.png); } +tr.gray .icon-file.application-pdf { background-image: url(../images/filetypes/pdf_gray.png); } +tr.gray .icon-file.application-zip { background-image: url(../images/filetypes/zip_gray.png); } +tr.gray .icon-file.application-x-gzip { background-image: url(../images/filetypes/zip_gray.png); } + +/* Links */ +.gray { color: #AAA } +.gray a, .gray a:link, .gray a:visited{ color: #484848; text-decoration: none; } \ No newline at end of file diff --git a/assets/stylesheets/jquery-ui/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/assets/stylesheets/jquery-ui/images/ui-bg_diagonals-thick_18_b81900_40x40.png deleted file mode 100644 index 954e22dbd99e8c6dd7091335599abf2d10bf8003..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEr#)R9Ln2z=UU%d=WFXS=@V?HT z#xG*`>Yvsgk=}99w^d^D^d*@m74oMo<%#FcopJf?u00-~YVKV2wzrI*_R6;UORMea zBFVSEnN~eiVA6V&z`E)YLz5Aok^D)In}Yn=OzDpgR5Wv0XfT8pOkmV{sKAJ-PO9#T zZK}IXj&Q-V!U)!LcB_3K0&C*{ diff --git a/assets/stylesheets/jquery-ui/images/ui-bg_diagonals-thick_20_666666_40x40.png b/assets/stylesheets/jquery-ui/images/ui-bg_diagonals-thick_20_666666_40x40.png deleted file mode 100644 index 64ece5707d91a6edf9fad4bfcce0c4dbcafcf58d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmVbvPcjKS|RKP(6sDcCAB(_QB%0978a<$Ah$!b|E zwn;|HO0i8cQj@~)s!ajF0S002ovPDHLkV1oEp BYH0uf diff --git a/assets/stylesheets/jquery-ui/images/ui-bg_flat_0_aaaaaa_40x100.png b/assets/stylesheets/jquery-ui/images/ui-bg_flat_0_aaaaaa_40x100.png deleted file mode 100644 index 5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`R^ z$vje}bP0l+XkK DSH>_4 diff --git a/assets/stylesheets/jquery-ui/images/ui-bg_flat_10_000000_40x100.png b/assets/stylesheets/jquery-ui/images/ui-bg_flat_10_000000_40x100.png deleted file mode 100644 index abdc01082bf3534eafecc5819d28c9574d44ea89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsY*{5$B>N1x91EQ4=4yQY-ImG zFPf9b{J;c_6SHRK%WcbN_hZpM=(Ry;4Rxv2@@2Y=$K57eF$X$=!PC{xWt~$(69B)$ BI)4BF diff --git a/assets/stylesheets/jquery-ui/images/ui-bg_flat_75_ffffff_40x100.png b/assets/stylesheets/jquery-ui/images/ui-bg_flat_75_ffffff_40x100.png deleted file mode 100644 index ac8b229af950c29356abf64a6c4aa894575445f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsY*{5$B>N1x91EQ4=4yQYz+E8 zPo9&<{J;c_6SHRil>2s{Zw^OT)6@jj2u|u!(plXsM>LJD`vD!n;OXk;vd$@?2>^GI BH@yG= diff --git a/assets/stylesheets/jquery-ui/images/ui-bg_glass_100_eef5fd_1x400.png b/assets/stylesheets/jquery-ui/images/ui-bg_glass_100_eef5fd_1x400.png deleted file mode 100644 index c3492e336d2018bda4d6d48dca8f447c077253a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouq%1sL978O6lYe~r{Jvg|jg74> zFlmZ}YMbuI*Ze(4PaHUK;K%`vWW%IH#gk4d5`ka(gccvsFx22=m=nm!7p(ip251I@ Mr>mdKI;Vst0O$E4z UEim$g7SJdLPgg&ebxsLQ09~*s;{X5v diff --git a/assets/stylesheets/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png b/assets/stylesheets/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png deleted file mode 100644 index 42ccba269b6e91bef12ad0fa18be651b5ef0ee68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouqzpV=978O6-=0?FV^9z|eBtf= z|7WztIJ;WT>{+tN>ySr~=F{k$>;_x^_y?afmf9pRKH0)6?eSP?3s5hEr>mdKI;Vst E0O;M1& diff --git a/assets/stylesheets/jquery-ui/images/ui-bg_glass_75_dadada_1x400.png b/assets/stylesheets/jquery-ui/images/ui-bg_glass_75_dadada_1x400.png deleted file mode 100644 index 5a46b47cb16631068aee9e0bd61269fc4e95e5cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouq|7{B978O6lPf+wIa#m9#>Unb zm^4K~wN3Zq+uP{vDV26o)#~38k_!`W=^oo1w6ixmPC4R1b Tyd6G3lNdZ*{an^LB{Ts5`idse diff --git a/assets/stylesheets/jquery-ui/images/ui-bg_gloss-wave_35_759fcf_500x100.png b/assets/stylesheets/jquery-ui/images/ui-bg_gloss-wave_35_759fcf_500x100.png deleted file mode 100644 index 70b39a86fceda2b245e127402cf5c1a122019878..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3945 zcmcIndstHWx~7_@nf6pqQ|3LJoau(`#u(AO;OU}F<|Rx-rJypP#7jx$6>0A|lcT8| zOEhn|2l56YDGF+U-IO%VQ3Mh%l%^JnhzO)8Zn~W3Ip;ZlpMTbGeQT}fTkrS&p6~tM zU*_pR=%$S}8vy{orjx&(2nGPwEST>vee<>XdR6p<2moyP`Q(YCAxWjGvgteHKX3J& z_#rOHg8%LML+kk8`dHX%BVBJp#f5Clk`LL*S*)qRJ|nQ)TlYlYot~a zwdP~Ko#5*Lz|HmNk8c0~!T|q|0pYm9Fp_5Hr6waGl2)m9lq*Z}92LzgfyEZ(e#pau z0#>oui4=;=*GHIk2ZSPP-C?tbiKtmVH>s6YnoOi;7j5jadal%q8ieE-&mn)&J2zcg zi2Th8e6kEt#l{V$f*n^T2QMXCc~#aSEm*K_r}XU}VjC8T()5FkK>|*3AJCNBlha~I zOVi$ytkdTD=e|#RVGjVDU-RlOGaWl#OSvkE%}0WM%-4qM3A9!mS>V`PX7A+oLp+uE}=VXWME(*yFF`U zC^cEr;XkmWS1R_7knN7*Scr;kNAE36mKGYSduy$%snY0k8u^9y={rV-5{AGAAro36oiTC_=%6#qblhUn zK)o_|=g?+_V@UjnEJ1x6f4OYXfvPZFlh)B+cHg+aDNp!(>Umg*Jh+Ek@e|WEG8#en zUUDWf6~mf1!dRjTZk=tCVz{H8aV#nb6KK#&+;H=CvrvwnCYAqX;~wc0B3*LiRbPGk zwL!AvsK@Oct0uqm)zL)<+z%uiWPyxNwa6UHiAKiB8bYNyMB$ixCUTz+o2`lpWUPeg zJhBiZy-mC%qHyr#y{S;IcEya43QH`ITI1!vI;rm|wT4^5CYCBD4k=FGs=QDlIZ~jG zS+zf7Nqrt= ze}r+IC6Q&+sa3gezDO33Q$N5K) z4ic%veA21Hs)wYysCs1*aqFT^PO~#y3>m6-eUpLl?E-E)+61@sa*3T}9(s`mynS)| zsiN(EB@HL<%W=+v_LTcn9Ejda*W+3;FIFedE1}@5a|!&j&go2|r+WcMQ<1C5E6uIj zZ?OrMt@QNp5bj>>vI~~otv-jF3fqBXf$qHUHx}vO$uE(!A6sIsUY(k{%yTP9<_ZGz zG9%;n;LlRxhlICLz16^P!b_YU?h6XH^<3R*7AN8CI94YJL#@06!nX`joU=N*0 z;hsU9`C&1=ac{p>54rYSI5CJW+lkqUh!@L7Odkr{@W5SWjQoTDtBJ3Am&lizq=~|X$0s&2hkyL@PU25> z6w)CF^MCFp(7#e+cTr0G79w&NAheQq)vl*tX<@}ndaQ_M)n^5do!gq@rNcsC$+}w( zpk-_8bFui-xHy)|fPa~%m&#vvre+$S?Q*ar-PdaBDR&xTkmG0e0K)PX3dc}S zMxUV9x2iKA_XWQGd+ejc&W#X)<{RU+GQ1(HF9z@M_~btlzvslD6~TDc3SY2xuQlN6 z_gagkbVZ5o@Z^-`Pz-c*(pn`@c6>Ltad=xZF(`00aI;c1ee$tX7}!YNXx%Sbj z1CO*~d{XEJIE_On&N0#k{)+i9f?drpeRa_TG8wt?CUekWl8r$MSKn>6D~F(>6@2Ep zHRtWq0|}(M)vDL{A#SpFUB-Oa=&$bXIezVhvDcB>k_!pe2@tA3kPbS23)vSXwLH9f(n@A=2j8R3TY zfVmu4ul4NN31o)XWt-&!kB`01pE7(LZ2$U-{dvB1h%7(tNJ*lzBE9*;T>bmFp{a4I zK-3p>>5Smf1DRY#va{8&l-a*rTJkIhU5Ah1xKy?D`YI!!qOQM90x3EYnhQZP$?bU> zW_J_FETFJ%rf9|4bo{u>2Dm*gAvMLJ7xzrpA#mLxDTPmFPk?O2qaWNkxlFv`dCFnn zjrBm+S;Jr6tHJpzuQ-S_YJH~ip7;6s9AoH3tWEwh219Q>paBha^TyCkH3RS^o_sGN z4PVi}B~*~-j_aH>X4exbQig)5;w&-RK;yfnc_5nusmH;Uj%D;@giM&HyA(PDD<_M- z^v&7r=5hA`@P(2uQ!jR?7HIZXfY+G0&s6>Q@>v%i0YCYo=9rw@W9F}f9z21j@*|~* z8NA_-R^g^1{*ysK{kaYRaC*ejSi76w@}}rbESE(;LmqI9=H-R%1x*R27 z&cAJEE``ePNNNTI8<{G&7xJM5$f-eZyB$ExRpkBd%sCrq*GKU)x zdH;@W5EL!4DWvLad*Jz2F#BnBU-_MqcVW`m+Cz@SBE3K1mkgTzg!}Fip_A=HD(MAo z2kufSCYkpOgA2A2-#AtAD`80IdU21N3U6##L2FTGh$^>lXk5kfFZ;joApG?n- z!>*JU|E6?%Aq6y@?Q?68BBYf{D|W1M3xs&floj_t_0YiplNRFKDf7=K!wLp{ogGB9 zhT1@Ep_gGfNfkVvj0xo{n;VwA@aRfbe?}CN9MOCE1r^cJce#$Wgi5Pu^RkT#gla$@ z>^gZl#W|!5iV82-&`!2!b5~fg!LBGj zx6CjdF3IDk@dAh;h){6k8S=94wcQTp%>*^pq}RO~FuH@ly63n`g0ynyl`~D%#S8-J zM}5&^RY&kLqA8iHxNyeM#b|*ym5mI}whsUIH8Ry=(bu7NT_lBU*C_>o77W+D~2958~Jz+Nl z5calITc!{vGtNv$M6jAsp1`2c@PV({C^n17Tav!0N6c;=3_p_Dn8J>gI8WsqJycad zt_>g}Y4Plp&}bkP0eye>vOgl49~oXI(nQB(%Bypao?^Pl9EqVr2MEr^L4Ctn^LHnH zQ2tF42i{u?*4OisU=ATtnqP^Rpv&f!=;iegnOy=&dvV722DE^BrD?&94>BiU-C4P& zW*SJ#TxwLFumP1@s9^kV^~_Y%S$1u)htF|L+J5c%Ut)IJ^*4}-(3XQxHy zx4Wj4Qj#MW_>sXT+MS16+myo&=Mw26$_Gh9o||$BbO)V4x}AH<6*tIb_3$%qkFjkC z+>QgdG4JE44w1%$h{Qdy_dW1;E2g41`x2`o>Sn5#7f}^0@;3D|i|O9)@)z$b-9fJ9 z0X{*P;hwN9*hz-c(Co`p30rn-z$OaK`LvRC3;xTv%j(GPKdcv@FMA_hLVKb_0k2*CFdk`Pwf^_xVuJ240wvoBHsp#uQ{? zEooLVvXKkpXZ2w74aKxqqE_mvKaaxhhDr-e>?v=2VTH>v6}>BrdD(M()qmAT$f=+5 z>TQHKh3Qe@m8bfy-%{E&c1ie1J*wNuvMY?0%W;a8`nr%9Ikb~3_S@YlrA-|9&Nwxr zI{@P~m*yifS*pR1{UN@VPED~lJb`B-b7GZ6x1vVEZEw0eZx6^Kwkr|`2Q1K_4ixrG z_&#{3VgM-OhxN(_B&|_{iLVCW4t;!TOARyu8>4hId3(2wC}!4vYZmWnEgF2)k~tts SeP)gTCw&4>)Eztj&wm3=PZNp& diff --git a/assets/stylesheets/jquery-ui/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/assets/stylesheets/jquery-ui/images/ui-bg_highlight-soft_100_eeeeee_1x100.png deleted file mode 100644 index f1273672d253263b7564e9e21d69d7d9d0b337d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^j6j^i!3HGVb)pi0l%l7LV~E7mPmYTG^FX}c% zlGE{DS1Q;~I7-6ze&TN@+F-xsI6sd%SwK#*O5K|pDRZqEy< zJg0Nd8F@!OxqElm`~U#piM22@u@8B<moyKE%ct`B(jysxK+1m?G)UyIFs1t0}L zemGR&?jGaM1YQblj?v&@0iXS#fi-VbR9zLEnHLP?xQ|=%Ihrc7^yPWR!tW$yH!zrw z#I2}_!JnT^(qk)VgJr`NGdPtT^dmQIZc%=6nTAyJDXk+^3}wUOilJuwq>s=T_!9V) zr1)DT6VQ2~rgd@!Jlrte3}}m~j}juCS`J4(d-5+e-3@EzzTJNCE2z)w(kJ90z*QE) zBtnV@4mM>jTrZZ*$01SnGov0&=A-JrX5Ge%Pce1Vj}=5YQqBD^W@n4KmFxxpFK`uH zP;(xKV+6VJ2|g+?_Lct7`uElL<&jzGS8Gfva2+=8A@#V+xsAj9|Dkg)vL5yhX@~B= zN2KZSAUD%QH`x>H+@Ou(D1~Pyv#0nc&$!1kI?IO01yw3jD0@80qvc?T*Nr8?-%rC8 z@5$|WY?Hqp`ixmEkzeJTz_`_wsSRi1%Zivd`#+T{Aib6-rf$}M8sz6v zb6ERbr-SniO2wbOv!M4)nb}6UVzoVZEh5kQWh_5x4rYy3c!871NeaM(_p=4(kbS6U#x<*k8Wg^KHs2ttCz<+pBxQ$Z zQMv;kVm5_fF_vH`Mzrq$Y&6u?j6~ftIV0Yg)Nw7JysIN_ z-_n*K_v1c&D}-1{NbBwS2h#m1y0a5RiEcYil+58$8IDh49bPnzE7R8In6P%V{2IZU z7#clr=V4yyrRe@oXNqbqo^^LvlLE?%8XaI&N(Np90-psU}7kqmbWk zZ;YBwJNnNs$~d!mx9oMGyT( znaBoj0d}gpQ^aRr?6nW)$4god*`@Uh2e+YpS@0(Mw{|z|6ko3NbTvDiCu3YO+)egL z>uW(^ahKFj>iJ-JF!^KhKQyPTznJa;xyHYwxJgr16&Wid_9)-%*mEwo{B_|M9t@S1 zf@T@q?b2Qgl!~_(Roe;fdK)y|XG0;ls;ZbT)w-aOVttk#daQcY7$cpY496H*`m@+L zeP#$&yRbBjFWv}B)|5-1v=(66M_;V1SWv6MHnO}}1=vby&9l+gaP?|pXwp0AFDe#L z&MRJ^*qX6wgxhA_`*o=LGZ>G_NTX%AKHPz4bO^R72ZYK}ale3lffDgM8H!Wrw{B7A z{?c_|dh2J*y8b04c37OmqUw;#;G<* z@nz@dV`;7&^$)e!B}cd5tl0{g(Q>5_7H^@bEJi7;fQ4B$NGZerH#Ae1#8WDTH`iB&) zC6Et3BYY#mcJxh&)b2C^{aLq~psFN)Q1SucCaBaBUr%5PYX{~-q{KGEh)*;n;?75k z=hq%i^I}rd;z-#YyI`8-OfMpWz5kgJE3I!3ean6=UZi!BxG7i(YBk? z02HM7wS0)Wni{dWbQMRtd-A)_Az!t>F;IwWf~!*)-Az4}yryNkz&9)w>ElA80Oc`6 zHo#9H!Y3*Qx9n@Jn)!w6G^hb;e_n8zpIyXCN`JFkPc)^Q?2MsLNFhMgrcZI-<#1ne zjH;KFf?4eAT9mQZ}ZfHLGA#d%s;SZK4p0FwZT2S^{ zQ2BG1xJsbK6?yrHTjJi|5C0u=!|r!?*4FL%y%3q#(d+e>b_2I9!*iI!30}42Ia0bq zUf`Z?LGSEvtz8s``Tg5o_CP(FbR0X$FlE0yCnB7suDPmI2=yOg^*2#cY9o`X z;NY-3VBHZjnVcGS){GZ98{e+lq~O$u6pEcgd0CrnIsWffN1MbCZDH<7c^hv+Z0Ucf0{w zSzi^qKuUHD9Dgp0EAGg@@$zr32dQx>N=ws`MESEsmzgT2&L;?MSTo&ky&!-JR3g~1 zPGTt515X)wr+Bx(G9lWd;@Y3^Vl}50Wb&6-Tiy;HPS0drF`rC}qYq22K4)G#AoD0X zYw$E+Bz@Zr^50MAwu@$?%f9$r4WHH?*2|67&FXFhXBrVFGmg)6?h3^-1?t;UzH0*I zNVf9wQLNLnG2@q>6CGm>&y|lC`iCFfYd}9i%+xkl^5oBJ?<;aneCfcHqJh7Yl5uLS z9Fx-(kMdcNyZejXh22N{mCw_rX1O!cOE&3>e(ZH81PR95wQC37En4O{w;{3q9n1t&;p)D%&Z%Nw$gSPa!nz8Slh7=ko2am)XARwOWw zpsz0~K!s{(dM$NB=(A=kkp>T(*yU6<_dwIx>cH4+LWl282hXa6-EUq>R3t?G2623< z*RwTN%-fgBmD{fu*ejNn)1@KG?Sg*8z3hYtkQJQjB6 zQ|x>wA=o$=O)+nLmgTXW3_6diA;b4EY{*i*R%6dO2EMg z@6g?M3rpbnfB@hOdUeb96=~I?OIA3@BWAGmTwiQ{x5Cqq<8c10L!P zd@Qk^BseTX%$Q7^s}5n%HB|)gKx}H$d8Sb$bBnq9-AglT2dGR2(+I;_fL|R4p$odJ zllfb0NqI)7=^z~qAm1V{(PkpxXsQ#4*NH9yYZ`Vf@)?#ueGgtCmGGY|9U#v|hRdg- zQ%0#cGIfXCd{Y)JB~qykO;KPvHu|5Ck&(Hn%DF~cct@}j+87xhs2ew;fLm5#2+mb| z8{9e*YI(u|gt|{x1G+U=DA3y)9s2w7@cvQ($ZJIA)x$e~5_3LKFV~ASci8W}jF&VeJoPDUy(BB>ExJpck;%;!`0AAo zAcHgcnT8%OX&UW_n|%{2B|<6Wp2MMGvd5`T2KKv;ltt_~H+w00x6+SlAD`{K4!9zx z*1?EpQ%Lwiik){3n{-+YNrT;fH_niD_Ng9|58@m8RsKFVF!6pk@qxa{BH-&8tsim0 zdAQ(GyC^9ane7_KW*#^vMIoeQdpJqmPp%%px3GIftbwESu#+vPyI*YTuJ6+4`z{s? zpkv~0x4c_PFH`-tqafw5)>4AuQ78SkZ!$8}INLK;Egr;2tS18hEO5=t;QDmZ-qu?I zG+=DN`nR72Xto{{bJp||`k}-2G;5#xg8E~xgz22)^_Z;=K|4@(E&5J)SY2of=olcw z5)@L)_Ntcm!*5nEy0M9v0`S33;pO4TN;>4(Z+19p_0>u#e-vE zXCU(6gAvu~I7Cw(xd%0e59MNLw^U37ZDbsBrj%eDCexw8a3G`nTcXVNL6{B7Hj@i& zbVB{;ApEtHk76q08DJ48dSxd$C(;$K6=FpU<~l9pVoT9arW^Vu{%Bcn4`eIpkOVC| z$)AKYG_`ypM{0@BUb3^9lqi_c?ONH|4UJMJWDowMVjacycX7}9g={O7swOB+{;+?; zjBo!9?+nd)ie#x5IbFW-zBOo0c4q@9wGVt5;pNt`=-~Zgcw#*`m($6ibxtZ`H=e=} zF#GZ~5$%AUn};8U#tRem0J(JTR}d4vR(dgK2ML~lZsPhayJ2h1%sD4FVst| zKF)+@`iNzLRjg4=K8@**0=5cE>%?FDc({I^+g9USk<8$&^qD~@%W0i4b|yMG*p4`N zh}I!ltTRI8Ex$+@V{02Br%xq#O?UlhO{r8WsaZnZCZq0MK9%AXU%MDLT;3=0A9(BV z9VxxxJd7jo$hw3q;3o?yBLmA=azBUrd9>-<_ANs0n3?-Ic*6&ytb@H~?0E(*d>T5n z-HiH2jsDf6uWhID%#n>SzOqrFCPDfUcu5QPd?<(=w6pv1BE#nsxS{n!UnC9qAha1< z;3cpZ9A-e$+Y)%b;w@!!YRA9p%Kf9IHGGg^{+p`mh;q8i7}&e@V3EQaMsItEMS&=X plT@$;k0WcB_jb;cn%_Idz4HO$QU*abf4}+wi?e96N>fbq{{i|W0@(ln diff --git a/assets/stylesheets/jquery-ui/images/ui-icons_2e83ff_256x240.png b/assets/stylesheets/jquery-ui/images/ui-icons_2e83ff_256x240.png deleted file mode 100644 index 09d1cdc856c292c4ab6dd818c7543ac0828bd616..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4369 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 diff --git a/assets/stylesheets/jquery-ui/images/ui-icons_454545_256x240.png b/assets/stylesheets/jquery-ui/images/ui-icons_454545_256x240.png deleted file mode 100644 index 59bd45b907c4fd965697774ce8c5fc6b2fd9c105..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4369 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 diff --git a/assets/stylesheets/jquery-ui/images/ui-icons_888888_256x240.png b/assets/stylesheets/jquery-ui/images/ui-icons_888888_256x240.png deleted file mode 100644 index 6d02426c114be4b57aabc0a80b8a63d9e56b9eb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4369 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 oBo%DI*Kv;w;*%(i9W@f3_WCF#rGn diff --git a/assets/stylesheets/jquery-ui/images/ui-icons_cd0a0a_256x240.png b/assets/stylesheets/jquery-ui/images/ui-icons_cd0a0a_256x240.png deleted file mode 100644 index 2ab019b73ec11a485fa09378f3a0e155194f6a5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4369 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 diff --git a/assets/stylesheets/jquery-ui/jquery-ui-1.9.2.css b/assets/stylesheets/jquery-ui/jquery-ui-1.9.2.css deleted file mode 100644 index 090d220d..00000000 --- a/assets/stylesheets/jquery-ui/jquery-ui-1.9.2.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery UI - v1.9.2 - 2012-12-26 -* http://jqueryui.com -* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2C%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=759fcf&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=628db6&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=628db6&iconColorDefault=759fcf&bgColorHover=eef5fd&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=628db6&fcHover=628db6&iconColorHover=759fcf&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=628db6&fcActive=628db6&iconColorActive=759fcf&bgColorHighlight=759fcf&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=628db6&fcHighlight=363636&iconColorHighlight=759fcf&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px -* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{zoom:1}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;zoom:1}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto;zoom:1}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}* html .ui-autocomplete{width:1px}.ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;cursor:pointer;text-align:center;zoom:1;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:1.4}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0em}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-cover{position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;width:300px;overflow:hidden}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 16px .1em 0}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto;zoom:1}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:.5em 0 0 0;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;width:100%}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;zoom:1;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em;zoom:1}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}* html .ui-tooltip{background-image:none}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#eee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #628db6;background:#759fcf url(images/ui-bg_gloss-wave_35_759fcf_500x100.png) 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #ccc;background:#f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#628db6}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#628db6;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #628db6;background:#eef5fd url(images/ui-bg_glass_100_eef5fd_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#628db6}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#628db6;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #628db6;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:bold;color:#628db6}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#628db6;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #628db6;background:#759fcf url(images/ui-bg_highlight-soft_75_759fcf_1x100.png) 50% top repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_ffffff_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_759fcf_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_759fcf_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_759fcf_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_759fcf_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_ffd27a_256x240.png)}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.ui-widget-overlay{background:#666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat;opacity:.5;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x;opacity:.2;filter:Alpha(Opacity=20);-moz-border-radius:5px;-khtml-border-radius:5px;-webkit-border-radius:5px;border-radius:5px} diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 7ffb39eb..bbb47fd1 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -26,10 +26,8 @@ cs: notice_file_locked: Soubor byl zamčen warning_file_not_locked: Soubor není zamčen notice_file_unlocked: Soubor byl odemčen - error_only_user_that_locked_file_can_unlock_it: Soubor může být odemčen pouze uživatelem, který ho zamkl - question_do_you_really_want_to_delete_this_entry: Chcete to skutečně smazat? - error_max_files_exceeded: "Limit pro %{number} najednou stažených souborů je překročen" - question_do_you_really_want_to_delete_this_revision: Chcete skutečně smazat tuto revizi? + error_only_user_that_locked_file_can_unlock_it: Soubor může být odemčen pouze uživatelem, který ho zamkl + error_max_files_exceeded: "Limit pro %{number} najednou stažených souborů je překročen" error_entry_project_does_not_match_current_project: Zadaný projekt neodpovídá aktuálnímu projektu notice_folder_created: Adresář byl vytvořen error_folder_creation_failed: Vytváření složky selhalo @@ -183,8 +181,8 @@ cs: comment_copied_from: "Zkopírováno z %{source}" notice_file_copied: Soubor zkopírován notice_file_moved: Soubor přesunut - label_target_project: Cílový projekt - label_target_folder: Cílový adresář + field_target_project: Cílový projekt + field_target_folder: Cílový adresář title_copy_or_move: Kopírovat/Přesunout label_dmsf_folder_plural: Dmsf složky comment_moved_from: "Přesunuto z %{source}" @@ -276,6 +274,13 @@ cs: text_email_to_see_history: Pro zobrazení historie schvalovacího procesu klikněte na status dokumentu v text_email_to_see_status: Pro zobrazení aktuálního stavu schvalovacího procesu klikněte na status dokumentu v + title_create_link: Vytvořit symbolický odkaz + label_create_link: Vytvořit odkaz + label_notifications_on: Zapnout notifikace + label_notifications_off: Vypnout notifikace + field_target_file: Cílový soubor + title_download_entries: Historie stahování + my: blocks: locked_documents: Zamčené dokumenty diff --git a/config/locales/de.yml b/config/locales/de.yml index b430fdba..ab1da9db 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -26,10 +26,8 @@ de: notice_file_locked: Datei gesperrt warning_file_not_locked: Datei nicht gesperrt notice_file_unlocked: Dateisperre gelöst - error_only_user_that_locked_file_can_unlock_it: Nur der Benutzer, der die Datei gesperrt hat, kann sie auch wieder freigeben - question_do_you_really_want_to_delete_this_entry: Willst du diesen Eintrag wirklich löschen? - error_max_files_exceeded: "Grenze für %{number} gleichzeitig heruntergeladene Dateien überschritten" - question_do_you_really_want_to_delete_this_revision: Möchtest du diese Dateiversion wirklich löschen? + error_only_user_that_locked_file_can_unlock_it: Nur der Benutzer, der die Datei gesperrt hat, kann sie auch wieder freigeben + error_max_files_exceeded: "Grenze für %{number} gleichzeitig heruntergeladene Dateien überschritten" error_entry_project_does_not_match_current_project: Entry Projekt entspricht nicht aktuellen Projekt notice_folder_created: Ordner erstellt error_folder_creation_failed: Ordnererstellung fehlgeschlagen @@ -182,8 +180,8 @@ de: comment_copied_from: "Kopiert aus %{source}" notice_file_copied: Datei kopiert notice_file_moved: Datei verschoben - label_target_project: Zielprojekte - label_target_folder: Zielordner + field_target_project: Zielprojekte + field_target_folder: Zielordner title_copy_or_move: Kopieren/Verschieben label_dmsf_folder_plural: Ordner comment_moved_from: "Verschoben aus %{source}" @@ -277,6 +275,13 @@ de: text_email_to_see_history: To see the approval history click on the workflow status of the document in text_email_to_see_status: To see the current status of the approval workflow click on the workflow status the document in + title_create_link: Create a symbolic link + label_create_link: Create link + label_notifications_on: Notifications on + label_notifications_off: Notifications off + field_target_file: Target file + title_download_entries: Download entries + my: blocks: locked_documents: Locked documents diff --git a/config/locales/en.yml b/config/locales/en.yml index 38490799..c03d1fa0 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -27,10 +27,8 @@ en: notice_file_locked: File locked warning_file_not_locked: File not locked notice_file_unlocked: File unlocked - error_only_user_that_locked_file_can_unlock_it: Only user that locked file can unlock it - question_do_you_really_want_to_delete_this_entry: Do you really want to delete this entry? - error_max_files_exceeded: "Limit for %{number} simultaneously downloaded files exceeded" - question_do_you_really_want_to_delete_this_revision: Do you really want to delete this revision? + error_only_user_that_locked_file_can_unlock_it: Only user that locked file can unlock it + error_max_files_exceeded: "Limit for %{number} simultaneously downloaded files exceeded" error_entry_project_does_not_match_current_project: "Entry project doesn't match current project" notice_folder_created: Folder created error_folder_creation_failed: Folder creation failed @@ -185,8 +183,8 @@ en: comment_copied_from: "Copied from %{source}" notice_file_copied: File copied notice_file_moved: File moved - label_target_project: Target project - label_target_folder: Target folder + field_target_project: Target project + field_target_folder: Target folder title_copy_or_move: Copy/Move label_dmsf_folder_plural: Dmsf folders comment_moved_from: "Moved from %{source}" @@ -280,6 +278,13 @@ en: label_my_open_approvals: My open approvals label_my_locked_documents: My locked documents + title_create_link: Create a symbolic link + label_create_link: Create link + label_notifications_on: Notifications on + label_notifications_off: Notifications off + field_target_file: Target file + title_download_entries: Download entries + my: blocks: locked_documents: Locked documents diff --git a/config/locales/es.yml b/config/locales/es.yml index 816b99d0..37ad0e6a 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -25,10 +25,8 @@ es: notice_file_locked: Archivo bloqueado warning_file_not_locked: Archivo no bloqueado notice_file_unlocked: Archivo desbloqueado - error_only_user_that_locked_file_can_unlock_it: Solo los usuarios que bloquearon previamente al archivo lo pueden desbloquear - question_do_you_really_want_to_delete_this_entry: ¿Está seguro de borrar el ítem seleccionado? - error_max_files_exceeded: "Se excedio el numero permitido de archivos bajados de manera simultánea:" - question_do_you_really_want_to_delete_this_revision: ¿Está seguro de borrar la revision seleccionada? + error_only_user_that_locked_file_can_unlock_it: Solo los usuarios que bloquearon previamente al archivo lo pueden desbloquear + error_max_files_exceeded: "Se excedio el numero permitido de archivos bajados de manera simultánea:" error_entry_project_does_not_match_current_project: Las entradas del proyecto no concuerdan con el proyecto seleccionado notice_folder_created: Carpeta creada satisfactoriamente error_folder_creation_failed: La creacion de la carpeta ha fallado @@ -184,8 +182,8 @@ es: comment_copied_from: "Copied from %{source}" notice_file_copied: File copied notice_file_moved: File moved - label_target_project: Target project - label_target_folder: Target folder + field_target_project: Target project + field_target_folder: Target folder title_copy_or_move: Copy/Move label_dmsf_folder_plural: Dmsf folders comment_moved_from: "Moved from %{source}" @@ -277,6 +275,13 @@ es: text_email_to_see_history: To see the approval history click on the workflow status of the document in text_email_to_see_status: To see the current status of the approval workflow click on the workflow status the document in + title_create_link: Create a symbolic link + label_create_link: Create link + label_notifications_on: Notifications on + label_notifications_off: Notifications off + field_target_file: Target file + title_download_entries: Download entries + my: blocks: locked_documents: Locked documents diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 215c69e2..111ed0ba 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -27,10 +27,8 @@ fr: notice_file_locked: Fichier verrouillé warning_file_not_locked: Fichier déverrouillé notice_file_unlocked: Fichier déverrouillé - error_only_user_that_locked_file_can_unlock_it: "Le fichier ne peut être déverrouillé que par celui qui l'a verrouillé" - question_do_you_really_want_to_delete_this_entry: Etes-vous sûr de vouloir supprimer cet élément ? - error_max_files_exceeded: Le nombre de fichiers pouvant être téléchargés simultanément est dépassé - question_do_you_really_want_to_delete_this_revision: Etes-vous sûr de vouloir supprimer cette révision ? + error_only_user_that_locked_file_can_unlock_it: "Le fichier ne peut être déverrouillé que par celui qui l'a verrouillé" + error_max_files_exceeded: Le nombre de fichiers pouvant être téléchargés simultanément est dépassé error_entry_project_does_not_match_current_project: "Le projet saisi ne correspond pas au projet courant" notice_folder_created: Dossier créé error_folder_creation_failed: Erreur de création du dossier @@ -185,8 +183,8 @@ fr: comment_copied_from: "Copie effectuée depuis %{source}" notice_file_copied: Fichier copié notice_file_moved: Fichier déplacé - label_target_project: Projet cible - label_target_folder: Dossier cible + field_target_project: Projet cible + field_target_folder: Dossier cible title_copy_or_move: Copie/Déplacement label_dmsf_folder_plural: Les dossiers de DMSF comment_moved_from: "Déplacé depuis %{source}" @@ -279,6 +277,13 @@ fr: text_email_to_see_status: Pour consulter le statut actuel du flux de validation, cliquez sur le statut du flux du document dans label_my_open_approvals: Mes approbations en attente label_my_locked_documents: Mes documents verrouillés + + title_create_link: Create a symbolic link + label_create_link: Create link + label_notifications_on: Notifications on + label_notifications_off: Notifications off + field_target_file: Target file + title_download_entries: Download entries my: blocks: diff --git a/config/locales/ja.yml b/config/locales/ja.yml index a0b06d63..d0c7b0d9 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -25,10 +25,8 @@ ja: notice_file_locked: ファイルをロックしました warning_file_not_locked: ファイルはロックされていません notice_file_unlocked: ファイルをロック解除しました - error_only_user_that_locked_file_can_unlock_it: ファイルをロックしたユーザだけがロック解除できます - question_do_you_really_want_to_delete_this_entry: 本当にこのエントリーを削除しますか? - error_max_files_exceeded: "同時にダウンロードできるファイル数の上限 %{number} を超えています" - question_do_you_really_want_to_delete_this_revision: 本当にこのリビジョンを削除しますか? + error_only_user_that_locked_file_can_unlock_it: ファイルをロックしたユーザだけがロック解除できます + error_max_files_exceeded: "同時にダウンロードできるファイル数の上限 %{number} を超えています" error_entry_project_does_not_match_current_project: 指定したプロジェクトは現在のプロジェクトと一致しません notice_folder_created: フォルダを作成しました error_folder_creation_failed: フォルダを作成できません @@ -182,8 +180,8 @@ ja: comment_copied_from: "%{source} からコピーしました" notice_file_copied: ファイルをコピーしました notice_file_moved: ファイルを移動しました - label_target_project: ターゲットプロジェクト - label_target_folder: ターゲットフォルダ + field_target_project: ターゲットプロジェクト + field_target_folder: ターゲットフォルダ title_copy_or_move: コピー/移動 label_dmsf_folder_plural: Dmsf フォルダ comment_moved_from: "%{source} から移動しました" @@ -276,6 +274,13 @@ ja: text_email_to_proceed: To proceed click on the check box icon next to the document in text_email_to_see_history: To see the approval history click on the workflow status of the document in text_email_to_see_status: To see the current status of the approval workflow click on the workflow status the document in + + title_create_link: Create a symbolic link + label_create_link: Create link + label_notifications_on: Notifications on + label_notifications_off: Notifications off + field_target_file: Target file + title_download_entries: Download entries my: blocks: diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 81bde9fd..b4c019ce 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -25,10 +25,8 @@ ru: notice_file_locked: Файл заблокирован warning_file_not_locked: Файл не заблокирован notice_file_unlocked: Файл разблокирован - error_only_user_that_locked_file_can_unlock_it: Только пользователь, который заблокировал файл, может его разблокировать - question_do_you_really_want_to_delete_this_entry: Вы действительно хотите удалить этот файл? - error_max_files_exceeded: "Ограничение для %{number} одновременно загружаемых файлов превышено" - question_do_you_really_want_to_delete_this_revision: Вы действительно хотите удалить эту редакцию? + error_only_user_that_locked_file_can_unlock_it: Только пользователь, который заблокировал файл, может его разблокировать + error_max_files_exceeded: "Ограничение для %{number} одновременно загружаемых файлов превышено" error_entry_project_does_not_match_current_project: Проект, которому принадлежит файл, не соответсвует текущему проекту notice_folder_created: Папка создана error_folder_creation_failed: Папку не удалось создать @@ -182,8 +180,8 @@ ru: comment_copied_from: "Скопировано из %{source}" notice_file_copied: Файл скопирован notice_file_moved: Файл перемещен - label_target_project: Целевой проект - label_target_folder: Целевая папка + field_target_project: Целевой проект + field_target_folder: Целевая папка title_copy_or_move: Копировать/Переместить label_dmsf_folder_plural: DMSF папки comment_moved_from: "Перемещен из %{source}" @@ -276,6 +274,13 @@ ru: text_email_to_proceed: To proceed click on the check box icon next to the document in text_email_to_see_history: To see the approval history click on the workflow status of the document in text_email_to_see_status: To see the current status of the approval workflow click on the workflow status the document in + + title_create_link: Create a symbolic link + label_create_link: Create link + label_notifications_on: Notifications on + label_notifications_off: Notifications off + field_target_file: Target file + title_download_entries: Download entries my: blocks: diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 6e7faa41..c1f6019a 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -25,10 +25,8 @@ sl: notice_file_locked: Datoteka zaklenjena warning_file_not_locked: Datoteka ni zaklenjena notice_file_unlocked: Datoteka odklenjena - error_only_user_that_locked_file_can_unlock_it: Samo oseba, ki je zaklenila datoteko, jo lahko odklene. - question_do_you_really_want_to_delete_this_entry: Ste prepričani, da želite izbrisati objekt? - error_max_files_exceeded: "Max %{number} datotek za istočasno nalaganje je preseženo." - question_do_you_really_want_to_delete_this_revision: Ste prepričani, da želite izbrisati verzijo datoteke? + error_only_user_that_locked_file_can_unlock_it: Samo oseba, ki je zaklenila datoteko, jo lahko odklene. + error_max_files_exceeded: "Max %{number} datotek za istočasno nalaganje je preseženo." error_entry_project_does_not_match_current_project: Projekt se ujema s trenutno nastavljenim projektom notice_folder_created: Mapa kreirana error_folder_creation_failed: Mape ne morem kreirati @@ -183,8 +181,8 @@ sl: comment_copied_from: "Skopirano iz %{source}" notice_file_copied: Datoteka skopirana notice_file_moved: Datoteka premaknjena - label_target_project: Ciljni projekt - label_target_folder: Ciljna mapa + field_target_project: Ciljni projekt + field_target_folder: Ciljna mapa title_copy_or_move: "Kopiraj/Premakni" label_dmsf_folder_plural: Arhivske mape comment_moved_from: "Premaknjeno iz %{source}" @@ -276,6 +274,13 @@ sl: text_email_to_proceed: To proceed click on the check box icon next to the document in text_email_to_see_history: To see the approval history click on the workflow status of the document in text_email_to_see_status: To see the current status of the approval workflow click on the workflow status the document in + + title_create_link: Create a symbolic link + label_create_link: Create link + label_notifications_on: Notifications on + label_notifications_off: Notifications off + field_target_file: Target file + title_download_entries: Download entries my: blocks: diff --git a/config/locales/zh.yml b/config/locales/zh.yml index c907664e..3041f241 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -25,10 +25,8 @@ zh: notice_file_locked: 文件锁定 warning_file_not_locked: 文件未锁定 notice_file_unlocked: 文件解锁 - error_only_user_that_locked_file_can_unlock_it: 只有锁定文件的用户才能解锁该文件 - question_do_you_really_want_to_delete_this_entry: 您确定删除此条目? - error_max_files_exceeded: "超出同时下载%{number}个文件数量限制" - question_do_you_really_want_to_delete_this_revision: 您确定删除此修订版本吗? + error_only_user_that_locked_file_can_unlock_it: 只有锁定文件的用户才能解锁该文件 + error_max_files_exceeded: "超出同时下载%{number}个文件数量限制" error_entry_project_does_not_match_current_project: 入口项目与当前项目不匹配 notice_folder_created: 文件夹创建完毕 error_folder_creation_failed: 文件夹创建失败 @@ -185,8 +183,8 @@ zh: comment_copied_from: "Copied from %{source}" notice_file_copied: File copied notice_file_moved: File moved - label_target_project: Target project - label_target_folder: Target folder + field_target_project: Target project + field_target_folder: Target folder title_copy_or_move: Copy/Move label_dmsf_folder_plural: Dmsf folders comment_moved_from: "Moved from %{source}" @@ -277,6 +275,13 @@ zh: text_email_to_proceed: To proceed click on the check box icon next to the document in text_email_to_see_history: To see the approval history click on the workflow status of the document in text_email_to_see_status: To see the current status of the approval workflow click on the workflow status the document in + + title_create_link: Create a symbolic link + label_create_link: Create link + label_notifications_on: Notifications on + label_notifications_off: Notifications off + field_target_file: Target file + title_download_entries: Download entries my: blocks: diff --git a/config/routes.rb b/config/routes.rb index cf2edc0a..d0b863df 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -26,20 +26,20 @@ RedmineApp::Application.routes.draw do # [As this controller also processes 'folders' it maybe better to branch into a folder route rather than leaving it as is] ## post '/projects/:id/dmsf/create', :controller => 'dmsf', :action => 'create' - post '/projects/:id/dmsf/notify/activate', :controller => 'dmsf', :action => 'notify_activate' - post '/projects/:id/dmsf/notify/deactivate', :controller => 'dmsf', :action => 'notify_deactivate' - post '/projects/:id/dmsf/delete', :controller => 'dmsf', :action => 'delete' + get '/projects/:id/dmsf/notify/activate', :controller => 'dmsf', :action => 'notify_activate', :as => 'notify_activate_dmsf' + get '/projects/:id/dmsf/notify/deactivate', :controller => 'dmsf', :action => 'notify_deactivate', :as => 'notify_deactivate_dmsf' + get '/projects/:id/dmsf/delete', :controller => 'dmsf', :action => 'delete', :as => 'delete_dmsf' post '/projects/:id/dmsf/save', :controller => 'dmsf', :action => 'save' post '/projects/:id/dmsf/save/root', :controller => 'dmsf', :action => 'save_root' post '/projects/:id/dmsf/entries', :controller => 'dmsf', :action => 'entries_operation' post '/projects/:id/dmsf/entries/delete', :controller => 'dmsf', :action => 'delete_entries' post '/projects/:id/dmsf/entries/email', :controller => 'dmsf', :action => 'entries_email' - post '/projects/:id/dmsf/lock', :controller => 'dmsf', :action => 'lock' - post '/projects/:id/dmsf/unlock', :controller => 'dmsf', :action => 'unlock' - get '/projects/:id/dmsf/', :controller => 'dmsf', :action => 'show', :as => 'dmsf' - get '/projects/:id/dmsf/new', :controller => 'dmsf', :action => 'new' - get '/projects/:id/dmsf/edit', :controller=> 'dmsf', :action => 'edit' - get '/projects/:id/dmsf/edit/root', :controller=> 'dmsf', :action => 'edit_root' + get '/projects/:id/dmsf/lock', :controller => 'dmsf', :action => 'lock', :as => 'lock_dmsf' + get '/projects/:id/dmsf/unlock', :controller => 'dmsf', :action => 'unlock', :as => 'unlock_dmsf' + get '/projects/:id/dmsf/', :controller => 'dmsf', :action => 'show', :as => 'dmsf_folder' + get '/projects/:id/dmsf/new', :controller => 'dmsf', :action => 'new', :as => 'new_dmsf' + get '/projects/:id/dmsf/edit', :controller=> 'dmsf', :action => 'edit', :as => 'edit_dmsf' + get '/projects/:id/dmsf/edit/root', :controller=> 'dmsf', :action => 'edit_root', :as => 'edit_root_dmsf' # # dmsf_state controller @@ -61,21 +61,17 @@ RedmineApp::Application.routes.draw do # dmsf_files controller # /dmsf/files/ ## - post '/dmsf/files/:id/notify/activate', :controller => 'dmsf_files', :action => 'notify_activate' - post '/dmsf/files/:id/notify/deactivate', :controller => 'dmsf_files', :action => 'notify_deactivate' - post '/dmsf/files/:id/lock', :controller => 'dmsf_files', :action => 'lock' - post '/dmsf/files/:id/unlock', :controller => 'dmsf_files', :action => 'unlock' - post '/dmsf/files/:id/delete', :controller => 'dmsf_files', :action => 'delete' + get '/dmsf/files/:id/notify/activate', :controller => 'dmsf_files', :action => 'notify_activate', :as => 'notify_activate_dmsf_files' + get '/dmsf/files/:id/notify/deactivate', :controller => 'dmsf_files', :action => 'notify_deactivate', :as => 'notify_deactivate_dmsf_files' + get '/dmsf/files/:id/lock', :controller => 'dmsf_files', :action => 'lock', :as => 'lock_dmsf_files' + get '/dmsf/files/:id/unlock', :controller => 'dmsf_files', :action => 'unlock', :as => 'unlock_dmsf_files' + post '/dmsf/files/:id/delete', :controller => 'dmsf_files', :action => 'delete', :as => 'delete_dmsf_files' post '/dmsf/files/:id/revision/create', :controller => 'dmsf_files', :action => 'create_revision' - post '/dmsf/files/:id/revision/delete', :controller => 'dmsf_files', :action => 'delete_revision' - get '/dmsf/files/:id/download', :controller => 'dmsf_files', :action => 'show', :download => '' #Otherwise will not route nil download param + get '/dmsf/files/:id/revision/delete', :controller => 'dmsf_files', :action => 'delete_revision', :as => 'delete_revision' + get '/dmsf/files/:id/download', :controller => 'dmsf_files', :action => 'show', :download => '' # Otherwise will not route nil download param get '/dmsf/files/:id/download/:download', :controller => 'dmsf_files', :action => 'show' - get '/dmsf/files/:id', :controller => 'dmsf_files', :action => 'show' - # Just to keep backward compatibility of external url links - get '/dmsf_files/:id', :controller => 'dmsf_files', :action => 'show' - - # Just to keep backward compatibility with old external direct links - get '/dmsf_files/:id', :controller => 'dmsf_files', :action => 'show' + get '/dmsf/files/:id', :controller => 'dmsf_files', :action => 'show', :as => 'dmsf_file' + delete '/dmsf/files/:id', :controller => 'dmsf_files', :action => 'delete' # # files_copy controller @@ -83,7 +79,7 @@ RedmineApp::Application.routes.draw do ## post '/dmsf/files/:id/copy/create', :controller => 'dmsf_files_copy', :action => 'create' post '/dmsf/files/:id/copy/move', :controller => 'dmsf_files_copy', :action => 'move' - get '/dmsf/files/:id/copy', :controller => 'dmsf_files_copy', :action => 'new' + get '/dmsf/files/:id/copy', :controller => 'dmsf_files_copy', :action => 'new', :as => 'copy_file' # # folders_copy controller @@ -91,7 +87,7 @@ RedmineApp::Application.routes.draw do ## #verify :method => :post, :only => [:copy_to], :render => { :nothing => true, :status => :method_not_allowed } post '/dmsf/folders/:id/copy/to', :controller => 'dmsf_folders_copy', :action => 'copy_to' - get '/dmsf/folders/:id/copy', :controller => 'dmsf_folders_copy', :action => 'new' + get '/dmsf/folders/:id/copy', :controller => 'dmsf_folders_copy', :action => 'new', :as => 'copy_folder' # # DAV4Rack implementation of Webdav [note: if changing path you'll need to update lib/redmine_dmsf/webdav/no_parse.rb also] @@ -110,7 +106,7 @@ RedmineApp::Application.routes.draw do get 'assign' get 'log' post 'new_action' - post 'start' + get 'start' post 'assignment' end end @@ -118,4 +114,11 @@ RedmineApp::Application.routes.draw do match 'dmsf_workflows/:id/edit', :controller => 'dmsf_workflows', :action => 'add_step', :id => /\d+/, :via => :post match 'dmsf_workflows/:id/edit', :controller => 'dmsf_workflows', :action => 'remove_step', :id => /\d+/, :via => :delete match 'dmsf_workflows/:id/edit', :controller => 'dmsf_workflows', :action => 'reorder_steps', :id => /\d+/, :via => :put + + # Links + resources :dmsf_links do + member do + end + end + end diff --git a/db/migrate/20131113141403_create_dmsf_links.rb b/db/migrate/20131113141403_create_dmsf_links.rb new file mode 100644 index 00000000..a53a47c4 --- /dev/null +++ b/db/migrate/20131113141403_create_dmsf_links.rb @@ -0,0 +1,38 @@ +# Redmine plugin for Document Management System "Features" +# +# Copyright (C) 2014 Karel Pičman +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +class CreateDmsfLinks < ActiveRecord::Migration + def change + create_table :dmsf_links do |t| + t.integer :target_project_id, :null => false + t.integer :target_id, :null => false + t.string :target_type, :limit => 10, :null => false + t.string :name, :null => false + t.references :project, :null => false + t.references :dmsf_folder + t.boolean :deleted, :default => false, :null => false + t.integer :deleted_by_user_id + t.timestamps + end + add_index :dmsf_links, :project_id + end + + def self.down + drop_table :dmsf_links + end +end diff --git a/init.rb b/init.rb index 02ef02bf..149580ce 100644 --- a/init.rb +++ b/init.rb @@ -67,7 +67,9 @@ Redmine::Plugin.register :redmine_dmsf do permission :file_manipulation, {:dmsf_files => [:create_revision, :delete, :lock, :unlock, :delete_revision, :notify_activate, :notify_deactivate], :dmsf_upload => [:upload_files, :upload_file, :commit_files], - :dmsf_workflows => [:action, :new_action, :autocomplete_for_user, :start, :assign, :assignment]} + :dmsf_workflows => [:action, :new_action, :autocomplete_for_user, :start, :assign, :assignment], + :dmsf_links => [:new, :create, :destroy] + } permission :manage_workflows, {:dmsf_workflows => [:index, :new, :create, :destroy, :edit, :add_step, :remove_step, :reorder_steps, :update]} permission :force_file_unlock, {} diff --git a/lib/redmine_dmsf/hooks/base_view_hooks.rb b/lib/redmine_dmsf/hooks/base_view_hooks.rb index 7ae2cf39..130972c2 100644 --- a/lib/redmine_dmsf/hooks/base_view_hooks.rb +++ b/lib/redmine_dmsf/hooks/base_view_hooks.rb @@ -23,9 +23,7 @@ module RedmineDmsf class DmsfViewListener < Redmine::Hook::ViewListener def view_layouts_base_html_head(context={}) - tags = "\n".html_safe + javascript_include_tag('redmine_dmsf', :plugin => :redmine_dmsf) - tags << "\n".html_safe + stylesheet_link_tag('dmsf', :plugin => :redmine_dmsf) - tags + "\n".html_safe + stylesheet_link_tag('dmsf', :plugin => :redmine_dmsf) end end diff --git a/lib/redmine_dmsf/patches/project_patch.rb b/lib/redmine_dmsf/patches/project_patch.rb index bd70a4c6..6113c020 100644 --- a/lib/redmine_dmsf/patches/project_patch.rb +++ b/lib/redmine_dmsf/patches/project_patch.rb @@ -31,9 +31,17 @@ module RedmineDmsf unloadable alias_method_chain :copy, :dmsf - has_many :dmsf_files, :class_name => 'DmsfFile', :foreign_key => 'project_id', :conditions => { :dmsf_folder_id => nil }, :dependent => :destroy - has_many :dmsf_folders, :class_name => 'DmsfFolder', :foreign_key => 'project_id', :conditions => {:dmsf_folder_id => nil}, :dependent => :destroy + has_many :dmsf_files, :class_name => 'DmsfFile', :foreign_key => 'project_id', + :conditions => { :dmsf_folder_id => nil }, :dependent => :destroy + has_many :dmsf_folders, :class_name => 'DmsfFolder', :foreign_key => 'project_id', + :conditions => {:dmsf_folder_id => nil}, :dependent => :destroy has_many :dmsf_workflows, :dependent => :destroy + has_many :folder_links, :class_name => 'DmsfLink', :foreign_key => 'project_id', + :conditions => { :dmsf_folder_id => nil, :target_type => DmsfFolder.model_name }, + :dependent => :destroy + has_many :file_links, :class_name => 'DmsfLink', :foreign_key => 'project_id', + :conditions => { :dmsf_folder_id => nil, :target_type => DmsfFile.model_name }, + :dependent => :destroy end end diff --git a/test/functional/dmsf_links_controller_test.rb b/test/functional/dmsf_links_controller_test.rb new file mode 100644 index 00000000..85e0404f --- /dev/null +++ b/test/functional/dmsf_links_controller_test.rb @@ -0,0 +1,8 @@ +require File.expand_path('../../test_helper', __FILE__) + +class DmsfLinksControllerTest < ActionController::TestCase + # Replace this with your real tests. + def test_truth + assert true + end +end diff --git a/test/unit/dmsf_links_test.rb b/test/unit/dmsf_links_test.rb new file mode 100644 index 00000000..fccbfef3 --- /dev/null +++ b/test/unit/dmsf_links_test.rb @@ -0,0 +1,27 @@ +# Redmine plugin for Document Management System "Features" +# +# Copyright (C) 2014 Karel Pičman +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +require File.expand_path('../../test_helper', __FILE__) + +class DmsfLinksTest < ActiveSupport::TestCase + + # Replace this with your real tests. + def test_truth + assert true + end +end