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

View File

@ -18,6 +18,8 @@
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require "#{File.dirname(__FILE__)}/../../lib/redmine_dmsf/dmsf_zip"
# DMSF controller # DMSF controller
class DmsfController < ApplicationController class DmsfController < ApplicationController
include RedmineDmsf::DmsfZip include RedmineDmsf::DmsfZip
@ -751,7 +753,7 @@ class DmsfController < ApplicationController
def query def query
retrieve_default_query true retrieve_default_query true
@query = if Redmine::Plugin.installed?('easy_extensions') @query = if defined?(EasyExtensions)
retrieve_query_without_easy_extensions DmsfQuery, true retrieve_query_without_easy_extensions DmsfQuery, true
else else
retrieve_query DmsfQuery, true retrieve_query DmsfQuery, true

View File

@ -25,7 +25,7 @@ require 'csv'
module DmsfHelper module DmsfHelper
include Redmine::I18n 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) def late_javascript_tag(content_or_options_with_block = nil, html_options = {}, &block)
javascript_tag content_or_options_with_block, html_options, &block javascript_tag content_or_options_with_block, html_options, &block

View File

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

View File

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

View File

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

View File

@ -199,63 +199,69 @@ end
# DMSF libraries # DMSF libraries
# Validators def after_easy_init(&block)
require "#{File.dirname(__FILE__)}/../app/validators/dmsf_file_name_validator" if defined?(EasyExtensions)
require "#{File.dirname(__FILE__)}/../app/validators/dmsf_max_file_size_validator" Rails.application.config.after_initialize(&block)
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"
# 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"
# 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 else
require "#{File.dirname(__FILE__)}/redmine_dmsf/patches/notifiable_patch" yield
end end
end end
if defined?(EasyExtensions) # Validators
Rails.application.config.to_prepare { require_notifiable } after_easy_init do
else require "#{File.dirname(__FILE__)}/../app/validators/dmsf_file_name_validator"
require_notifiable 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 end
if defined?(EasyExtensions) # Patches
require "#{File.dirname(__FILE__)}/redmine_dmsf/patches/easy_crm_case_patch" unless defined?(EasyPatchManager)
require "#{File.dirname(__FILE__)}/redmine_dmsf/patches/attachable_patch" require "#{File.dirname(__FILE__)}/../patches/formatting_helper_patch"
require "#{File.dirname(__FILE__)}/redmine_dmsf/patches/easy_crm_cases_controller_patch.rb" 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
after_easy_init do
require "#{File.dirname(__FILE__)}/redmine_dmsf/plugin"
end end
# Load up classes that make up our WebDAV solution ontop of Dav4rack # Load up classes that make up our WebDAV solution ontop of Dav4rack
require "#{File.dirname(__FILE__)}/dav4rack" after_easy_init do
require "#{File.dirname(__FILE__)}/redmine_dmsf/webdav/custom_middleware" require "#{File.dirname(__FILE__)}/dav4rack"
require "#{File.dirname(__FILE__)}/redmine_dmsf/webdav/base_resource" require "#{File.dirname(__FILE__)}/redmine_dmsf/webdav/custom_middleware"
require "#{File.dirname(__FILE__)}/redmine_dmsf/webdav/dmsf_resource" require "#{File.dirname(__FILE__)}/redmine_dmsf/webdav/base_resource"
require "#{File.dirname(__FILE__)}/redmine_dmsf/webdav/index_resource" require "#{File.dirname(__FILE__)}/redmine_dmsf/webdav/dmsf_resource"
require "#{File.dirname(__FILE__)}/redmine_dmsf/webdav/project_resource" require "#{File.dirname(__FILE__)}/redmine_dmsf/webdav/index_resource"
require "#{File.dirname(__FILE__)}/redmine_dmsf/webdav/resource_proxy" require "#{File.dirname(__FILE__)}/redmine_dmsf/webdav/project_resource"
require "#{File.dirname(__FILE__)}/redmine_dmsf/webdav/resource_proxy"
end
# Errors # Errors
require "#{File.dirname(__FILE__)}/redmine_dmsf/errors/dmsf_access_error" after_easy_init do
require "#{File.dirname(__FILE__)}/redmine_dmsf/errors/dmsf_email_max_file_size_error" require "#{File.dirname(__FILE__)}/redmine_dmsf/errors/dmsf_access_error"
require "#{File.dirname(__FILE__)}/redmine_dmsf/errors/dmsf_file_not_found_error" require "#{File.dirname(__FILE__)}/redmine_dmsf/errors/dmsf_email_max_file_size_error"
require "#{File.dirname(__FILE__)}/redmine_dmsf/errors/dmsf_lock_error" require "#{File.dirname(__FILE__)}/redmine_dmsf/errors/dmsf_file_not_found_error"
require "#{File.dirname(__FILE__)}/redmine_dmsf/errors/dmsf_zip_max_files_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 # Hooks
def require_hooks def require_hooks
@ -274,14 +280,18 @@ def require_hooks
require "#{File.dirname(__FILE__)}/redmine_dmsf/hooks/helpers/project_helper_hooks" require "#{File.dirname(__FILE__)}/redmine_dmsf/hooks/helpers/project_helper_hooks"
end end
if defined?(EasyExtensions) after_easy_init do
Rails.application.config.to_prepare { require_hooks }
else
require_hooks require_hooks
end end
# Macros # Macros
require "#{File.dirname(__FILE__)}/redmine_dmsf/macros" after_easy_init do
require "#{File.dirname(__FILE__)}/redmine_dmsf/macros"
end
# Field formats # Field formats
require "#{File.dirname(__FILE__)}/redmine_dmsf/field_formats/dmsf_file_revision_format" 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 RedmineDmsf
module Patches module Patches
# AccessControll patch # AccessControl patch
module AccessControlPatch module AccessControlPatch
################################################################################################################## ##################################################################################################################
# Overridden methods # Overridden methods
def self.prepended(base) def self.prepended(base)
class << base base.singleton_class.prepend(ClassMethods)
prepend ClassMethods
end
end end
# Class methods # Class methods
@ -46,7 +44,7 @@ module RedmineDmsf
end end
# Apply the patch # Apply the patch
if Redmine::Plugin.installed?('easy_extensions') if defined?(EasyPatchManager)
EasyPatchManager.register_patch_to_be_first 'Redmine::Acts::Attachable::InstanceMethods', EasyPatchManager.register_patch_to_be_first 'Redmine::Acts::Attachable::InstanceMethods',
'RedmineDmsf::Patches::AccessControlPatch', prepend: true, first: true 'RedmineDmsf::Patches::AccessControlPatch', prepend: true, first: true
else else

View File

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

View File

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

View File

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

View File

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

View File

@ -23,9 +23,7 @@ module RedmineDmsf
# Notifiable # Notifiable
module NotifiablePatch module NotifiablePatch
def self.prepended(base) def self.prepended(base)
class << base base.singleton_class.prepend(ClassMethods)
prepend ClassMethods
end
end end
# Class methods # Class methods
@ -45,6 +43,6 @@ module RedmineDmsf
end end
# Apply the patch # 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 Redmine::Notifiable.prepend RedmineDmsf::Patches::NotifiablePatch
end end

View File

@ -48,6 +48,8 @@ module RedmineDmsf
end end
# Apply the patch # 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 Redmine::Notifiable.include RedmineDmsf::Patches::NotifiableRuPatch
end end

View File

@ -42,7 +42,7 @@ module RedmineDmsf
end end
# Apply the patch # 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', EasyPatchManager.register_patch_to_be_first 'Redmine::Export::PDF::ITCPDF', 'RedmineDmsf::Patches::PdfPatch',
prepend: true, first: true prepend: true, first: true
else else

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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