diff --git a/extra/xapian_indexer.rb b/extra/xapian_indexer.rb index 542a8f03..7e632a07 100644 --- a/extra/xapian_indexer.rb +++ b/extra/xapian_indexer.rb @@ -41,7 +41,7 @@ OMINDEX = '/usr/bin/omindex' # OMINDEX += " --filter=image/jpeg:'tesseract -l chi_sim+chi_tra %f -'" # Directory containing Xapian databases for omindex (Attachments indexing) -DBROOTPATH = File.expand_path('dmsf_index', REDMINE_ROOT) +db_root_path = File.expand_path('dmsf_index', REDMINE_ROOT) # Verbose output, false/true verbose = false @@ -72,6 +72,9 @@ optparse = OptionParser.new do |opts| opts.separator('') opts.separator('') opts.separator('Options:') + opts.on('-d', '--index_db DB_PATH', 'Absolute path to index database according plugin settings in UI') do |db| + db_root_path = db + end opts.on('-s', '--stemming_lang a,b,c', Array, 'Comma separated list of stemming languages for indexing') do |s| stem_langs = s end @@ -104,6 +107,7 @@ optparse = OptionParser.new do |opts| opts.separator('') opts.separator('Examples:') opts.separator(' xapian_indexer.rb -s english,italian -v') + opts.separator(' xapian_indexer.rb -d $HOME/index_db -s english,italian -v') opts.separator('') opts.summary_width = 25 end @@ -142,7 +146,7 @@ begin warn "'#{filespath}' doesn't exist." exit 1 end - databasepath = File.join(DBROOTPATH, lang) + databasepath = File.join(db_root_path, lang) unless File.directory?(databasepath) log "#{databasepath} does not exist, creating ...", verbose FileUtils.mkdir_p databasepath diff --git a/lib/redmine_dmsf.rb b/lib/redmine_dmsf.rb index 5029e38b..ab807695 100644 --- a/lib/redmine_dmsf.rb +++ b/lib/redmine_dmsf.rb @@ -40,6 +40,7 @@ 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/search_controller_patch" +require "#{File.dirname(__FILE__)}/redmine_dmsf/patches/custom_field_patch" # A workaround for obsolete 'alias_method' usage in RedmineUp's plugins if RedmineDmsf::Plugin.an_obsolete_plugin_present? diff --git a/lib/redmine_dmsf/patches/custom_field_patch.rb b/lib/redmine_dmsf/patches/custom_field_patch.rb new file mode 100644 index 00000000..aef6c39c --- /dev/null +++ b/lib/redmine_dmsf/patches/custom_field_patch.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +# Redmine plugin for Document Management System "Features" +# +# 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 RedmineDmsf + module Patches + # CustomField patch + module CustomFieldPatch + def self.included(base) + base.class_eval do + safe_attributes :dmsf_not_inheritable + end + end + end + end +end + +# Apply patch +if Redmine::Plugin.installed?('easy_extensions') + RedmineExtensions::PatchManager.register_model_patch 'CustomField', 'RedmineDmsf::Patches::CustomFieldPatch' +else + CustomField.include RedmineDmsf::Patches::CustomFieldPatch +end diff --git a/test/unit/custom_field_path_test.rb b/test/unit/custom_field_path_test.rb new file mode 100644 index 00000000..3110b678 --- /dev/null +++ b/test/unit/custom_field_path_test.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +# Redmine plugin for Document Management System "Features" +# +# 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__) + +# CustomField patch test +class CustomFieldTest < RedmineDmsf::Test::UnitTest + def test_should_have_dmsf_not_inheritable_listed_as_safe_attribute + assert CustomField.new.safe_attribute_names.include?('dmsf_not_inheritable') + end +end