From 12a4f5ed77d120224da52afe14561547dadfed11 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Sat, 30 Dec 2023 21:31:06 +0900 Subject: [PATCH] Fix #2235 allow selecting searchable types in integration search module --- .../integration_search.admin.controller.php | 19 +++-- .../integration_search.view.php | 75 ++++++++++++++++--- modules/integration_search/lang/en.php | 4 +- modules/integration_search/lang/ko.php | 6 +- .../skins/default/header.html | 41 +++++++--- .../skins/default/index.html | 50 +++++++------ modules/integration_search/tpl/index.html | 31 ++++++-- 7 files changed, 170 insertions(+), 56 deletions(-) diff --git a/modules/integration_search/integration_search.admin.controller.php b/modules/integration_search/integration_search.admin.controller.php index 4ea0fcbd2..e68659c61 100644 --- a/modules/integration_search/integration_search.admin.controller.php +++ b/modules/integration_search/integration_search.admin.controller.php @@ -31,9 +31,18 @@ class integration_searchAdminController extends integration_search $config->skin = Context::get('skin'); $config->mskin = Context::get('mskin'); $config->block_robots = Context::get('block_robots') === 'N' ? false : true; + $config->target_types = []; + $target_types = Context::get('target_types') ?? []; + foreach (['document', 'comment', 'multimedia', 'file'] as $type) + { + $config->target_types[$type] = in_array($type, $target_types); + } $config->target = Context::get('target'); $config->target_module_srl = Context::get('target_module_srl'); - if(!$config->target_module_srl) $config->target_module_srl = ''; + if (!$config->target_module_srl) + { + $config->target_module_srl = ''; + } $oModuleController = getController('module'); $output = $oModuleController->insertModuleConfig('integration_search', $config); @@ -56,13 +65,13 @@ class integration_searchAdminController extends integration_search // Get skin information (to check extra_vars) $skin_info = $oModuleModel->loadSkinInfo($this->module_path, $config->skin); - + // Check received variables (delete the basic variables such as mo, act, module_srl, page) $obj = Context::getRequestVars(); unset($obj->act); unset($obj->module_srl); unset($obj->page); - + // Separately handle if the extra_vars is an image type in the original skin_info if($skin_info->extra_vars) { @@ -114,8 +123,8 @@ class integration_searchAdminController extends integration_search $obj->{$vars->name} = $filename; } } - - // Serialize and save + + // Serialize and save $config->skin_vars = serialize($obj); $oModuleController = getController('module'); diff --git a/modules/integration_search/integration_search.view.php b/modules/integration_search/integration_search.view.php index e2fef268a..8de0f1f36 100644 --- a/modules/integration_search/integration_search.view.php +++ b/modules/integration_search/integration_search.view.php @@ -146,6 +146,8 @@ class integration_searchView extends integration_search // Search by search tab $where = Context::get('where'); Context::set('where', $where); + $target_types = $config->target_types ?? ['document' => true, 'comment' => true, 'multimedia' => true, 'file' => true]; + Context::set('target_types', $target_types); // Create integration search model object if($is_keyword) @@ -159,31 +161,86 @@ class integration_searchView extends integration_search $search_target = Context::get('search_target'); if(!in_array($search_target, array('title','content','title_content','tag'))) $search_target = 'title_content'; Context::set('search_target', $search_target); - - $output = $oIS->getDocuments($target, $module_srl_list, $search_target, $is_keyword, $page, 10); + if ($target_types['document']) + { + $output = $oIS->getDocuments($target, $module_srl_list, $search_target, $is_keyword, $page, 10); + } + else + { + $output = new BaseObject; + } Context::set('output', $output); $this->setTemplateFile("document", $page); break; case 'comment' : - $output = $oIS->getComments($target, $module_srl_list, $is_keyword, $page, 10); + if ($target_types['comment']) + { + $output = $oIS->getComments($target, $module_srl_list, $is_keyword, $page, 10); + } + else + { + $output = new BaseObject; + } Context::set('output', $output); $this->setTemplateFile("comment", $page); break; case 'multimedia' : - $output = $oIS->getImages($target, $module_srl_list, $is_keyword, $page,20); + if ($target_types['multimedia']) + { + $output = $oIS->getImages($target, $module_srl_list, $is_keyword, $page,20); + } + else + { + $output = new BaseObject; + } Context::set('output', $output); $this->setTemplateFile("multimedia", $page); break; case 'file' : - $output = $oIS->getFiles($target, $module_srl_list, $is_keyword, $page, 20); + if ($target_types['file']) + { + $output = $oIS->getFiles($target, $module_srl_list, $is_keyword, $page, 20); + } + else + { + $output = new BaseObject; + } Context::set('output', $output); $this->setTemplateFile("file", $page); break; default : - $output['document'] = $oIS->getDocuments($target, $module_srl_list, 'title_content', $is_keyword, $page, 5); - $output['comment'] = $oIS->getComments($target, $module_srl_list, $is_keyword, $page, 5); - $output['multimedia'] = $oIS->getImages($target, $module_srl_list, $is_keyword, $page, 5); - $output['file'] = $oIS->getFiles($target, $module_srl_list, $is_keyword, $page, 5); + if ($target_types['document']) + { + $output['document'] = $oIS->getDocuments($target, $module_srl_list, 'title_content', $is_keyword, $page, 5); + } + else + { + $output['document'] = new BaseObject; + } + if ($target_types['comment']) + { + $output['comment'] = $oIS->getComments($target, $module_srl_list, $is_keyword, $page, 5); + } + else + { + $output['comment'] = new BaseObject; + } + if ($target_types['multimedia']) + { + $output['multimedia'] = $oIS->getImages($target, $module_srl_list, $is_keyword, $page, 5); + } + else + { + $output['multimedia'] = new BaseObject; + } + if ($target_types['file']) + { + $output['file'] = $oIS->getFiles($target, $module_srl_list, $is_keyword, $page, 5); + } + else + { + $output['file'] = new BaseObject; + } $output['trackback'] = new BaseObject; Context::set('search_result', $output); Context::set('search_target', 'title_content'); diff --git a/modules/integration_search/lang/en.php b/modules/integration_search/lang/en.php index ec3bb5809..a8021dffe 100644 --- a/modules/integration_search/lang/en.php +++ b/modules/integration_search/lang/en.php @@ -10,7 +10,9 @@ $lang->msg_admin_not_enabled = 'The integrated search is not available. Please s $lang->is_result_text = 'There are %d result(s) for \'%s\''; $lang->multimedia = 'Images/Video'; $lang->integration_search_block_robots = 'Block Robots'; -$lang->include_search_target = 'Search for selected modules'; +$lang->integration_search_target_types = 'Search Types'; +$lang->integration_search_target_modules = 'Search Modules'; +$lang->include_search_target = 'Search selected modules only'; $lang->exclude_search_target = 'Exclude selected modules from search'; $lang->is_search_option['document']['title_content'] = 'Subject+Content'; $lang->is_search_option['document']['title'] = 'Subject'; diff --git a/modules/integration_search/lang/ko.php b/modules/integration_search/lang/ko.php index 6ee6b149d..d36f92c45 100644 --- a/modules/integration_search/lang/ko.php +++ b/modules/integration_search/lang/ko.php @@ -10,8 +10,10 @@ $lang->msg_admin_not_enabled = '통합 검색을 사용할 수 없습니다. 통 $lang->is_result_text = '\'%s\'에 대한 검색결과 %d건'; $lang->multimedia = '이미지/동영상'; $lang->integration_search_block_robots = '로봇 접근 차단'; -$lang->include_search_target = '선택된 대상만 검색'; -$lang->exclude_search_target = '선택된 대상을 검색에서 제외'; +$lang->integration_search_target_types = '검색 대상 종류'; +$lang->integration_search_target_modules = '검색 대상 페이지'; +$lang->include_search_target = '선택한 모듈만 검색'; +$lang->exclude_search_target = '선택한 모듈을 검색에서 제외'; $lang->is_search_option['document']['title_content'] = '제목+내용'; $lang->is_search_option['document']['title'] = '제목'; $lang->is_search_option['document']['content'] = '내용'; diff --git a/modules/integration_search/skins/default/header.html b/modules/integration_search/skins/default/header.html index 1b65292a8..8b5fd087f 100644 --- a/modules/integration_search/skins/default/header.html +++ b/modules/integration_search/skins/default/header.html @@ -2,14 +2,14 @@ {@ $_loaded = true; } - - {@if(!is_object($module_info)) $module_info = new stdClass;} - {@$module_info->colorset = "white"} + + {@ $module_info = $module_info ?? new stdClass} + {@ $module_info->colorset = 'white'} - - + +
@@ -24,11 +24,28 @@
+
  • + {$lang->integration_search} +
  • + +
  • + {$lang->document} +
  • + + +
  • + {$lang->comment} +
  • + + +
  • + {$lang->multimedia} +
  • + + +
  • + {$lang->file} +
  • + + diff --git a/modules/integration_search/skins/default/index.html b/modules/integration_search/skins/default/index.html index 2643f6fa5..c6583ff72 100644 --- a/modules/integration_search/skins/default/index.html +++ b/modules/integration_search/skins/default/index.html @@ -1,25 +1,33 @@ - + -{@ $output = $search_result['document'] } - - - - + + {@ $output = $search_result['document']} + + + + + -{@ $output = $search_result['comment'] } - - - - + + {@ $output = $search_result['comment']} + + + + + -{@ $output = $search_result['multimedia'] } - - - - + + {@ $output = $search_result['multimedia']} + + + + + -{@ $output = $search_result['file'] } - - - - + + {@ $output = $search_result['file']} + + + + + diff --git a/modules/integration_search/tpl/index.html b/modules/integration_search/tpl/index.html index a1b254797..3749b59c2 100644 --- a/modules/integration_search/tpl/index.html +++ b/modules/integration_search/tpl/index.html @@ -34,16 +34,35 @@
    - +
    - + +
    - + +
    + + + + +
    +
    +
    +