This commit is contained in:
Karel Pičman 2024-12-17 13:24:42 +01:00
parent 163d809ce7
commit d6103681e7
25 changed files with 105 additions and 92 deletions

View File

@ -39,7 +39,7 @@ def dmsf_init
param: :id,
html: { class: 'icon icon-dmsf' }
# New menu extension
next if Redmine::Plugin.installed?('easy_extensions')
next if defined?(EasyExtensions)
menu.push :dmsf_file, { controller: 'dmsf_upload', action: 'multi_upload' },
caption: :label_dmsf_new_top_level_document, parent: :new_object
@ -112,7 +112,7 @@ def dmsf_init
Token.add_action :dmsf_webdav_digest, max_instances: 1, validity_time: nil
end
if Redmine::Plugin.installed?('easy_extensions')
if defined?(EasyExtensions)
Rails.application.config.after_initialize do
dmsf_init
@ -130,20 +130,26 @@ Rails.application.configure do
Zip.unicode_names = true
# DMS custom fields
after_easy_init do
CustomFieldsHelper::CUSTOM_FIELDS_TABS << { name: 'DmsfFileRevisionCustomField', partial: 'custom_fields/index',
label: :dmsf }
end
# Searchable modules
after_easy_init do
Redmine::Search.map do |search|
search.register :dmsf_files
search.register :dmsf_folders
end
end
# Activities
after_easy_init do
Redmine::Activity.register :dmsf_file_revision_accesses, default: false
Redmine::Activity.register :dmsf_file_revisions
end
if Redmine::Plugin.installed?('easy_extensions')
if defined?(EasyExtensions)
require "#{File.dirname(__FILE__)}/lib/redmine_dmsf/webdav/custom_middleware"
config.middleware.insert_before ActionDispatch::Cookies, RedmineDmsf::Webdav::CustomMiddleware
end

View File

@ -18,6 +18,8 @@
# 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.dirname(__FILE__)}/../../lib/redmine_dmsf/dmsf_zip"
# DMSF controller
class DmsfController < ApplicationController
include RedmineDmsf::DmsfZip
@ -751,7 +753,7 @@ class DmsfController < ApplicationController
def query
retrieve_default_query true
@query = if Redmine::Plugin.installed?('easy_extensions')
@query = if defined?(EasyExtensions)
retrieve_query_without_easy_extensions DmsfQuery, true
else
retrieve_query DmsfQuery, true

View File

@ -25,7 +25,7 @@ require 'csv'
module DmsfHelper
include Redmine::I18n
unless Redmine::Plugin.installed?('easy_extensions')
unless defined?(EasyExtensions)
def late_javascript_tag(content_or_options_with_block = nil, html_options = {}, &block)
javascript_tag content_or_options_with_block, html_options, &block

View File

@ -104,7 +104,7 @@
<% end %>
<% end %>
<% if Redmine::Plugin.installed?('easy_extensions') %>
<% if defined?(EasyExtensions) %>
<%= late_javascript_tag do %>
$(function() {
$("p.buttons").addClass("filter-buttons form-actions");

View File

@ -42,7 +42,7 @@
<%= render partial: 'dmsf/sidebar' %>
<% end %>
<% if Redmine::Plugin.installed?('easy_extensions') %>
<% if defined?(EasyExtensions) %>
<%= late_javascript_tag do %>
$(function() {
$("p.buttons").addClass("filter-buttons form-actions");

View File

@ -169,7 +169,7 @@ if Redmine::Plugin.installed? 'redmine_dmsf'
end
# WebDAV workaround for clients checking WebDAV availability in the root
unless Redmine::Plugin.installed?('easy_extensions')
unless defined?(EasyExtensions)
match '/',
to: ->(env) { [405, {}, ["#{env['REQUEST_METHOD']} method is not allowed"]] },
via: %i[propfind options]

View File

@ -199,49 +199,52 @@ end
# DMSF libraries
def after_easy_init(&block)
if defined?(EasyExtensions)
Rails.application.config.after_initialize(&block)
else
yield
end
end
# Validators
after_easy_init do
require "#{File.dirname(__FILE__)}/../app/validators/dmsf_file_name_validator"
require "#{File.dirname(__FILE__)}/../app/validators/dmsf_max_file_size_validator"
require "#{File.dirname(__FILE__)}/../app/validators/dmsf_workflow_name_validator"
require "#{File.dirname(__FILE__)}/../app/validators/dmsf_url_validator"
require "#{File.dirname(__FILE__)}/../app/validators/dmsf_folder_parent_validator"
end
# Plugin's patches
require "#{File.dirname(__FILE__)}/redmine_dmsf/patches/formatting_helper_patch"
require "#{File.dirname(__FILE__)}/redmine_dmsf/patches/projects_helper_patch"
require "#{File.dirname(__FILE__)}/redmine_dmsf/patches/project_patch"
require "#{File.dirname(__FILE__)}/redmine_dmsf/patches/user_preference_patch"
require "#{File.dirname(__FILE__)}/redmine_dmsf/patches/user_patch"
require "#{File.dirname(__FILE__)}/redmine_dmsf/patches/issue_patch"
require "#{File.dirname(__FILE__)}/redmine_dmsf/patches/role_patch"
require "#{File.dirname(__FILE__)}/redmine_dmsf/patches/queries_controller_patch"
require "#{File.dirname(__FILE__)}/redmine_dmsf/patches/pdf_patch"
require "#{File.dirname(__FILE__)}/redmine_dmsf/patches/access_control_patch"
require "#{File.dirname(__FILE__)}/redmine_dmsf/patches/search_patch"
require "#{File.dirname(__FILE__)}/redmine_dmsf/patches/custom_field_patch"
# Patches
unless defined?(EasyPatchManager)
require "#{File.dirname(__FILE__)}/../patches/formatting_helper_patch"
require "#{File.dirname(__FILE__)}/../patches/projects_helper_patch"
require "#{File.dirname(__FILE__)}/../patches/project_patch"
require "#{File.dirname(__FILE__)}/../patches/user_preference_patch"
require "#{File.dirname(__FILE__)}/../patches/user_patch"
require "#{File.dirname(__FILE__)}/../patches/issue_patch"
require "#{File.dirname(__FILE__)}/../patches/role_patch"
require "#{File.dirname(__FILE__)}/../patches/queries_controller_patch"
require "#{File.dirname(__FILE__)}/../patches/pdf_patch"
require "#{File.dirname(__FILE__)}/../patches/access_control_patch"
require "#{File.dirname(__FILE__)}/../patches/search_patch"
require "#{File.dirname(__FILE__)}/../patches/custom_field_patch"
# A workaround for obsolete 'alias_method' usage in RedmineUp's plugins
if RedmineDmsf::Plugin.an_obsolete_plugin_present?
require "#{File.dirname(__FILE__)}/../patches/notifiable_ru_patch"
else
require "#{File.dirname(__FILE__)}/../patches/notifiable_patch"
end
end
# A workaround for obsolete 'alias_method' usage in RedmineUp's plugins
def require_notifiable
if defined?(EasyExtensions) || RedmineDmsf::Plugin.an_obsolete_plugin_present?
require "#{File.dirname(__FILE__)}/redmine_dmsf/patches/notifiable_ru_patch"
else
require "#{File.dirname(__FILE__)}/redmine_dmsf/patches/notifiable_patch"
end
end
if defined?(EasyExtensions)
Rails.application.config.to_prepare { require_notifiable }
else
require_notifiable
end
if defined?(EasyExtensions)
require "#{File.dirname(__FILE__)}/redmine_dmsf/patches/easy_crm_case_patch"
require "#{File.dirname(__FILE__)}/redmine_dmsf/patches/attachable_patch"
require "#{File.dirname(__FILE__)}/redmine_dmsf/patches/easy_crm_cases_controller_patch.rb"
after_easy_init do
require "#{File.dirname(__FILE__)}/redmine_dmsf/plugin"
end
# Load up classes that make up our WebDAV solution ontop of Dav4rack
after_easy_init do
require "#{File.dirname(__FILE__)}/dav4rack"
require "#{File.dirname(__FILE__)}/redmine_dmsf/webdav/custom_middleware"
require "#{File.dirname(__FILE__)}/redmine_dmsf/webdav/base_resource"
@ -249,13 +252,16 @@ require "#{File.dirname(__FILE__)}/redmine_dmsf/webdav/dmsf_resource"
require "#{File.dirname(__FILE__)}/redmine_dmsf/webdav/index_resource"
require "#{File.dirname(__FILE__)}/redmine_dmsf/webdav/project_resource"
require "#{File.dirname(__FILE__)}/redmine_dmsf/webdav/resource_proxy"
end
# Errors
after_easy_init do
require "#{File.dirname(__FILE__)}/redmine_dmsf/errors/dmsf_access_error"
require "#{File.dirname(__FILE__)}/redmine_dmsf/errors/dmsf_email_max_file_size_error"
require "#{File.dirname(__FILE__)}/redmine_dmsf/errors/dmsf_file_not_found_error"
require "#{File.dirname(__FILE__)}/redmine_dmsf/errors/dmsf_lock_error"
require "#{File.dirname(__FILE__)}/redmine_dmsf/errors/dmsf_zip_max_files_error"
end
# Hooks
def require_hooks
@ -274,14 +280,18 @@ def require_hooks
require "#{File.dirname(__FILE__)}/redmine_dmsf/hooks/helpers/project_helper_hooks"
end
if defined?(EasyExtensions)
Rails.application.config.to_prepare { require_hooks }
else
after_easy_init do
require_hooks
end
# Macros
after_easy_init do
require "#{File.dirname(__FILE__)}/redmine_dmsf/macros"
end
# Field formats
after_easy_init do
require "#{File.dirname(__FILE__)}/redmine_dmsf/field_formats/dmsf_file_revision_format"
end
require "#{File.dirname(__FILE__)}/easy_page_module" unless defined?(EasyExtensions)

View File

@ -20,14 +20,12 @@
module RedmineDmsf
module Patches
# AccessControll patch
# AccessControl patch
module AccessControlPatch
##################################################################################################################
# Overridden methods
def self.prepended(base)
class << base
prepend ClassMethods
end
base.singleton_class.prepend(ClassMethods)
end
# Class methods
@ -46,7 +44,7 @@ module RedmineDmsf
end
# Apply the patch
if Redmine::Plugin.installed?('easy_extensions')
if defined?(EasyPatchManager)
EasyPatchManager.register_patch_to_be_first 'Redmine::Acts::Attachable::InstanceMethods',
'RedmineDmsf::Patches::AccessControlPatch', prepend: true, first: true
else

View File

@ -33,7 +33,7 @@ module RedmineDmsf
end
# Apply the patch
if Redmine::Plugin.installed?('easy_extensions')
if defined?(EasyPatchManager)
EasyPatchManager.register_patch_to_be_first 'Redmine::Acts::Attachable::InstanceMethods',
'RedmineDmsf::Patches::AttachablePatch', prepend: true, first: true
else

View File

@ -32,7 +32,7 @@ module RedmineDmsf
end
# Apply patch
if Redmine::Plugin.installed?('easy_extensions')
if defined?(EasyPatchManager)
EasyPatchManager.register_model_patch 'CustomField', 'RedmineDmsf::Patches::CustomFieldPatch'
else
CustomField.include RedmineDmsf::Patches::CustomFieldPatch

View File

@ -32,6 +32,7 @@ module RedmineDmsf
easy_crm_cases.each do |easy_crm_case|
# Attach DMS documents
uploaded_files = params[:dmsf_attachments]
details = params[:committed_files]
if uploaded_files
system_folder = easy_crm_case.system_folder(create: true)
uploaded_files.each do |key, uploaded_file|

View File

@ -163,7 +163,7 @@ module RedmineDmsf
end
# Apply patch
if Redmine::Plugin.installed?('easy_extensions')
if defined?(EasyPatchManager)
EasyPatchManager.register_model_patch 'Issue', 'RedmineDmsf::Patches::IssuePatch'
else
Issue.prepend RedmineDmsf::Patches::IssuePatch

View File

@ -23,9 +23,7 @@ module RedmineDmsf
# Notifiable
module NotifiablePatch
def self.prepended(base)
class << base
prepend ClassMethods
end
base.singleton_class.prepend(ClassMethods)
end
# Class methods
@ -45,6 +43,6 @@ module RedmineDmsf
end
# Apply the patch
unless defined?(EasyExtensions) || RedmineDmsf::Plugin.an_obsolete_plugin_present?
unless defined?(EasyPatchManager) || RedmineDmsf::Plugin.an_obsolete_plugin_present?
Redmine::Notifiable.prepend RedmineDmsf::Patches::NotifiablePatch
end

View File

@ -48,6 +48,8 @@ module RedmineDmsf
end
# Apply the patch
if defined?(EasyExtensions) || RedmineDmsf::Plugin.an_obsolete_plugin_present?
if defined?(EasyPatchManager)
EasyPatchManager.register_other_patch 'Redmine::Notifiable', 'RedmineDmsf::Patches::NotifiableRuPatch'
elsif RedmineDmsf::Plugin.an_obsolete_plugin_present?
Redmine::Notifiable.include RedmineDmsf::Patches::NotifiableRuPatch
end

View File

@ -42,7 +42,7 @@ module RedmineDmsf
end
# Apply the patch
if Redmine::Plugin.installed?('easy_extensions')
if defined?(EasyPatchManager)
EasyPatchManager.register_patch_to_be_first 'Redmine::Export::PDF::ITCPDF', 'RedmineDmsf::Patches::PdfPatch',
prepend: true, first: true
else

View File

@ -133,7 +133,7 @@ module RedmineDmsf
end
# Apply the patch
if Redmine::Plugin.installed?('easy_extensions')
if defined?(EasyPatchManager)
EasyPatchManager.register_model_patch 'Project', 'RedmineDmsf::Patches::ProjectPatch', prepend: true
else
Project.prepend RedmineDmsf::Patches::ProjectPatch

View File

@ -50,6 +50,4 @@ module RedmineDmsf
end
# Apply the patch
unless Redmine::Plugin.installed?('easy_extensions')
ProjectsController.send :helper, RedmineDmsf::Patches::ProjectsHelperPatch
end
ProjectsController.send(:helper, RedmineDmsf::Patches::ProjectsHelperPatch) unless defined?(EasyPatchManager)

View File

@ -39,7 +39,7 @@ module RedmineDmsf
end
# Apply the patch
if Redmine::Plugin.installed?('easy_extensions')
if defined?(EasyPatchManager)
EasyPatchManager.register_controller_patch 'QueriesController', 'RedmineDmsf::Patches::QueriesControllerPatch',
prepend: true
else

View File

@ -42,7 +42,7 @@ module RedmineDmsf
end
# Apply the patch
if Redmine::Plugin.installed?('easy_extensions')
if defined?(EasyPatchManager)
EasyPatchManager.register_model_patch 'Role', 'RedmineDmsf::Patches::RolePatch', prepend: true
else
Role.prepend RedmineDmsf::Patches::RolePatch

View File

@ -25,9 +25,7 @@ module RedmineDmsf
##################################################################################################################
# Overridden methods
def self.prepended(base)
class << base
prepend ClassMethods
end
base.singleton_class.prepend(ClassMethods)
end
# Class methods
@ -46,7 +44,7 @@ module RedmineDmsf
end
# Apply the patch
if Redmine::Plugin.installed?('easy_extensions')
if defined?(EasyPatchManager)
EasyPatchManager.register_patch_to_be_first 'Redmine::Acts::Attachable::InstanceMethods',
'RedmineDmsf::Patches::SearchPatch', prepend: true, first: true
else

View File

@ -63,7 +63,7 @@ module RedmineDmsf
end
# Apply the patch
if Redmine::Plugin.installed?('easy_extensions')
if defined?(EasyPatchManager)
EasyPatchManager.register_model_patch 'User', 'RedmineDmsf::Patches::UserPatch'
else
User.prepend RedmineDmsf::Patches::UserPatch

View File

@ -59,7 +59,7 @@ module RedmineDmsf
end
# Apply the patch
if Redmine::Plugin.installed?('easy_extensions')
if defined?(EasyPatchManager)
EasyPatchManager.register_model_patch 'UserPreference', 'RedmineDmsf::Patches::UserPreferencePatch'
else
UserPreference.prepend RedmineDmsf::Patches::UserPreferencePatch