Merge f1101a18a2 into fadac0776a
This commit is contained in:
commit
ad153137ae
|
|
@ -1,2 +1,2 @@
|
||||||
(()=>{var a={n:e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},d:(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o:(a,e)=>Object.prototype.hasOwnProperty.call(a,e),r:a=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})}},e={};(()=>{"use strict";a.r(e);const t=flarum.core.compat["admin/app"];var r=a.n(t);r().initializers.add("blomstra-search",(function(){var a=new Map;["arabic","armenian","basque","bengali","brazilian","bulgarian","catalan","cjk","czech","danish","dutch","english","estonian","finnish","french","galician","german","greek","hindi","hungarian","indonesian","irish","italian","latvian","lithuanian","norwegian","persian","portuguese","romanian","russian","sorani","spanish","swedish","turkish","thai"].forEach((function(e){a.set(e,e)})),r().extensionData.for("blomstra-search").registerSetting({setting:"blomstra-search.elastic-endpoint",label:r().translator.trans("blomstra-search.admin.elastic-endpoint"),type:"input"}).registerSetting({setting:"blomstra-search.elastic-username",label:r().translator.trans("blomstra-search.admin.elastic-username"),type:"input"}).registerSetting({setting:"blomstra-search.elastic-password",label:r().translator.trans("blomstra-search.admin.elastic-password"),type:"password"}).registerSetting({setting:"blomstra-search.elastic-index",label:r().translator.trans("blomstra-search.admin.elastic-index"),default:"flarum",type:"input"}).registerSetting({setting:"blomstra-search.analyzer-language",label:r().translator.trans("blomstra-search.admin.analyzer.label"),help:r().translator.trans("blomstra-search.admin.analyzer.help"),type:"select",options:Object.fromEntries(a.entries()),default:"english"}).registerSetting({setting:"blomstra-search.elastic-index",label:r().translator.trans("blomstra-search.admin.elastic-index"),default:"flarum",type:"input"}).registerSetting({setting:"blomstra-search.search-discussion-subjects",label:r().translator.trans("blomstra-search.admin.search-discussion-subjects"),type:"switch"}).registerSetting({setting:"blomstra-search.search-post-bodies",label:r().translator.trans("blomstra-search.admin.search-post-bodies"),type:"switch"})}))})(),module.exports=e})();
|
(()=>{var t={n:e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return t.d(a,{a}),a},d:(e,a)=>{for(var s in a)t.o(a,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:a[s]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};(()=>{"use strict";t.r(e);const a=flarum.core.compat["admin/app"];var s=t.n(a);const n=flarum.core.compat["common/extend"],r=flarum.core.compat["admin/components/AdminPage"];var i=t.n(r);function o(t,e){if(null==t)return{};var a,s,n={},r=Object.keys(t);for(s=0;s<r.length;s++)a=r[s],e.indexOf(a)>=0||(n[a]=t[a]);return n}const l=flarum.core.compat["common/utils/Stream"];var c=t.n(l);const u=flarum.core.compat["common/utils/classList"];var p=t.n(u);const d=flarum.core.compat["common/utils/withAttr"];var b=t.n(d);const g=flarum.core.compat["common/components/Select"];var h=t.n(g);const f=flarum.core.compat["admin/utils/generateElementId"];var y=t.n(f),v=["setting","help","label"],S=["default","options","inputDescription","className"];function x(t,e,a){return e()||t()}function j(t){var e=t,a=[y()(),y()(),y()()],s=a[0],n=a[1],r=a[2],i=e.setting,l=e.help,u=e.label,d=o(e,v),g=d.default,f=d.options,j=d.inputDescription,O=d.className,w=o(d,S),z=this.settings[i];if(!z.upstreams){var N=z()||g,k=c()(),P=c()(),D=[k,P];(z=c().combine(x,D)).upstreams=D,Object.keys(f).indexOf(N)>-1?(k(N),P("")):(k(g),P(N)),this.settings[i]=z}var M=z.upstreams,_=M[0],E=M[1],T=m(h(),Object.assign({className:O,id:s,"aria-describedby":r,value:_(),options:f,onchange:_},w)),A=m("input",Object.assign({className:p()("FormControl",O),id:n,type:"text",onchange:b()("value",E),value:E()},w));return m("div",{className:"Form-group"},u&&m("label",{for:s},u),m("div",{id:r,className:"helpText"},l),T,j&&m("label",{style:{"padding-top":"10px"},for:n},j),A)}function O(){(0,n.extend)(i().prototype,"customSettingComponents",(function(t){t.add("select-or-input",j.bind(this))}))}s().initializers.add("blomstra-search",(function(){O();var t=new Map;["arabic","armenian","basque","bengali","brazilian","bulgarian","catalan","cjk","czech","danish","dutch","english","estonian","finnish","french","galician","german","greek","hindi","hungarian","indonesian","irish","italian","latvian","lithuanian","norwegian","persian","portuguese","romanian","russian","sorani","spanish","swedish","turkish","thai"].forEach((function(e){t.set(e,e)})),s().extensionData.for("blomstra-search").registerSetting({setting:"blomstra-search.elastic-endpoint",label:s().translator.trans("blomstra-search.admin.elastic-endpoint"),type:"input"}).registerSetting({setting:"blomstra-search.elastic-username",label:s().translator.trans("blomstra-search.admin.elastic-username"),type:"input"}).registerSetting({setting:"blomstra-search.elastic-password",label:s().translator.trans("blomstra-search.admin.elastic-password"),type:"password"}).registerSetting({setting:"blomstra-search.elastic-index",label:s().translator.trans("blomstra-search.admin.elastic-index"),default:"flarum",type:"input"}).registerSetting({setting:"blomstra-search.analyzer-language",label:s().translator.trans("blomstra-search.admin.analyzer.label"),help:s().translator.trans("blomstra-search.admin.analyzer.help"),type:"select-or-input",options:Object.fromEntries(t.entries()),inputDescription:s().translator.trans("blomstra-search.admin.analyzer.custom"),default:"english"}).registerSetting({setting:"blomstra-search.elastic-index",label:s().translator.trans("blomstra-search.admin.elastic-index"),default:"flarum",type:"input"}).registerSetting({setting:"blomstra-search.search-discussion-subjects",label:s().translator.trans("blomstra-search.admin.search-discussion-subjects"),type:"switch"}).registerSetting({setting:"blomstra-search.search-post-bodies",label:s().translator.trans("blomstra-search.admin.search-post-bodies"),type:"switch"})}))})(),module.exports=e})();
|
||||||
//# sourceMappingURL=admin.js.map
|
//# sourceMappingURL=admin.js.map
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,92 @@
|
||||||
|
import type Mithril from 'mithril';
|
||||||
|
import Stream from 'flarum/common/utils/Stream';
|
||||||
|
import classList from 'flarum/common/utils/classList';
|
||||||
|
import withAttr from 'flarum/common/utils/withAttr';
|
||||||
|
import AdminPage, { CommonSettingsItemOptions } from 'flarum/admin/components/AdminPage';
|
||||||
|
import Select from 'flarum/common/components/Select';
|
||||||
|
import generateElementId from 'flarum/admin/utils/generateElementId';
|
||||||
|
|
||||||
|
// forgive me, but this interface is just what its name implies
|
||||||
|
interface SelectOrInputSettingComponentOptionsWithoutType extends CommonSettingsItemOptions {
|
||||||
|
options: { [value: string]: Mithril.Children };
|
||||||
|
inputDescription: string;
|
||||||
|
default: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface SelectOrInputSettingComponentOptions extends SelectOrInputSettingComponentOptionsWithoutType {
|
||||||
|
type: 'select-or-input';
|
||||||
|
}
|
||||||
|
|
||||||
|
interface StreamWithUpstream<T> extends Stream<T> {
|
||||||
|
upstreams?: Array<Stream<unknown>>;
|
||||||
|
}
|
||||||
|
|
||||||
|
function mergeSelectOrInput(
|
||||||
|
selectStream: Stream<string>, inputStream: Stream<string>,
|
||||||
|
changed: Array<Stream<unknown>>
|
||||||
|
) {
|
||||||
|
return inputStream() || selectStream();
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function (this: AdminPage, _entry: CommonSettingsItemOptions) {
|
||||||
|
// do this cast because function signature is restricted
|
||||||
|
const entry = _entry as SelectOrInputSettingComponentOptionsWithoutType;
|
||||||
|
const [selectId, inputId, helpTextId] = [generateElementId(), generateElementId(), generateElementId()];
|
||||||
|
const { setting, help, label, ...componentAttrs } = entry;
|
||||||
|
const { default: defaultValue, options, inputDescription, className, ...otherAttrs } = componentAttrs;
|
||||||
|
|
||||||
|
let settingStream = this.settings[setting] as StreamWithUpstream<string>;
|
||||||
|
|
||||||
|
if (!settingStream.upstreams) {
|
||||||
|
let value = settingStream() || defaultValue;
|
||||||
|
let selectStream = Stream();
|
||||||
|
let inputStream = Stream();
|
||||||
|
let upstreams = [selectStream, inputStream]
|
||||||
|
settingStream = Stream.combine(mergeSelectOrInput, upstreams);
|
||||||
|
settingStream.upstreams = upstreams;
|
||||||
|
let useSelect = Object.keys(options).indexOf(value) > -1;
|
||||||
|
if (useSelect) {
|
||||||
|
selectStream(value);
|
||||||
|
inputStream('');
|
||||||
|
} else {
|
||||||
|
selectStream(defaultValue);
|
||||||
|
inputStream(value);
|
||||||
|
}
|
||||||
|
this.settings[setting] = settingStream;
|
||||||
|
}
|
||||||
|
|
||||||
|
let [selectStream, inputStream] = settingStream.upstreams!;
|
||||||
|
|
||||||
|
let selectElement = (
|
||||||
|
<Select
|
||||||
|
className={className}
|
||||||
|
id={selectId}
|
||||||
|
aria-describedby={helpTextId}
|
||||||
|
value={selectStream()}
|
||||||
|
options={options}
|
||||||
|
onchange={selectStream}
|
||||||
|
{...otherAttrs}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
|
||||||
|
let inputElement = (
|
||||||
|
<input
|
||||||
|
className={classList('FormControl', className)}
|
||||||
|
id={inputId}
|
||||||
|
type='text'
|
||||||
|
onchange={withAttr('value', inputStream)}
|
||||||
|
value={inputStream()}
|
||||||
|
{...otherAttrs}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="Form-group">
|
||||||
|
{label && <label for={selectId}>{label}</label>}
|
||||||
|
<div id={helpTextId} className="helpText">{help}</div>
|
||||||
|
{selectElement}
|
||||||
|
{inputDescription && <label style={{'padding-top': '10px'}} for={inputId}>{inputDescription}</label>}
|
||||||
|
{inputElement}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
import { extend } from 'flarum/common/extend';
|
||||||
|
import AdminPage, { CommonSettingsItemOptions } from 'flarum/admin/components/AdminPage';
|
||||||
|
import buildSelectOrInput from './ConfigToComponents/buildSelectOrInput';
|
||||||
|
|
||||||
|
export default function() {
|
||||||
|
extend(AdminPage.prototype, 'customSettingComponents', function (items) {
|
||||||
|
items.add('select-or-input', buildSelectOrInput.bind(this));
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,9 @@
|
||||||
import app from 'flarum/admin/app';
|
import app from 'flarum/admin/app';
|
||||||
|
import extendCustomSettingComponents from './extendCustomSettingComponents';
|
||||||
|
|
||||||
app.initializers.add('blomstra-search', () => {
|
app.initializers.add('blomstra-search', () => {
|
||||||
|
extendCustomSettingComponents();
|
||||||
|
|
||||||
const languages = new Map();
|
const languages = new Map();
|
||||||
[
|
[
|
||||||
'arabic',
|
'arabic',
|
||||||
|
|
@ -69,8 +72,9 @@ app.initializers.add('blomstra-search', () => {
|
||||||
setting: 'blomstra-search.analyzer-language',
|
setting: 'blomstra-search.analyzer-language',
|
||||||
label: app.translator.trans('blomstra-search.admin.analyzer.label'),
|
label: app.translator.trans('blomstra-search.admin.analyzer.label'),
|
||||||
help: app.translator.trans('blomstra-search.admin.analyzer.help'),
|
help: app.translator.trans('blomstra-search.admin.analyzer.help'),
|
||||||
type: 'select',
|
type: 'select-or-input',
|
||||||
options: Object.fromEntries(languages.entries()),
|
options: Object.fromEntries(languages.entries()),
|
||||||
|
inputDescription: app.translator.trans('blomstra-search.admin.analyzer.custom'),
|
||||||
default: 'english',
|
default: 'english',
|
||||||
})
|
})
|
||||||
.registerSetting({
|
.registerSetting({
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ blomstra-search:
|
||||||
help: |
|
help: |
|
||||||
The analyzer makes search understand stop words and undertakes language
|
The analyzer makes search understand stop words and undertakes language
|
||||||
specific improvements for indexing.
|
specific improvements for indexing.
|
||||||
|
custom: Use custom analyzer
|
||||||
search-discussion-subjects: Search inside discussion titles
|
search-discussion-subjects: Search inside discussion titles
|
||||||
search-post-bodies: Search inside comments
|
search-post-bodies: Search inside comments
|
||||||
match-sentences: Match search term against full sentence
|
match-sentences: Match search term against full sentence
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue