openrat-cms

OpenRat Content Management System
git clone http://git.code.weiherhei.de/openrat-cms.git
Log | Files | Refs | README

commit 78faeba727b41884680b96b35d55e77521849a8c
parent 65a196fb3113e2dbaf4f70176e267916cd292d86
Author: Jan Dankert <develop@jandankert.de>
Date:   Thu,  1 Apr 2021 22:53:24 +0200

Fix: Search

Diffstat:
Mmodules/cms/ui/themes/default/script/Oquery.js | 18++++++++++--------
Mmodules/cms/ui/themes/default/script/jquery-global.js | 10+++++-----
Mmodules/cms/ui/themes/default/script/openrat/workbench.js | 2+-
Mmodules/cms/ui/themes/default/script/plugin/jquery-plugin-orSearch.js | 92+++++++++++++++++++++++++++++++++++++++++--------------------------------------
4 files changed, 64 insertions(+), 58 deletions(-)

diff --git a/modules/cms/ui/themes/default/script/Oquery.js b/modules/cms/ui/themes/default/script/Oquery.js @@ -160,6 +160,16 @@ export class OQuery { this.on( 'submit',handler ); return this; } + change( handler ) { + this.on( 'change',handler ) + return this; + } + input( handler ) { + this.on( 'input',handler ) + return this; + } + + on ( event,handler ) { if ( typeof handler !== 'undefined') @@ -243,14 +253,6 @@ export class OQuery { return this; } - change() { - this.nodes.forEach(node => { - //node.fireEvent("onchange"); - } ); - return this; - } - - is( selector ) { for( let node of this.nodes ) if ( node.matches(selector) ) diff --git a/modules/cms/ui/themes/default/script/jquery-global.js b/modules/cms/ui/themes/default/script/jquery-global.js @@ -30,23 +30,23 @@ class CMSQuery extends OQuery { } orAutoheight() { - return autoheight.call(this); + return autoheight.apply(this,arguments); }; orButton() { - return button.call(this); + return button.apply(this,arguments); }; orLinkify() { - return linkify.call(this); + return linkify.apply(this,arguments); }; orSearch() { - return search.call(this); + return search.apply(this,arguments); }; orTree() { - return tree.call(this); + return tree.apply(this,arguments); }; toggleAttr() { diff --git a/modules/cms/ui/themes/default/script/openrat/workbench.js b/modules/cms/ui/themes/default/script/openrat/workbench.js @@ -562,7 +562,7 @@ export default class Workbench { } } ); $('.or-search .or-act-search-delete').click( function() { - $('.or-search .or-title-input').val('').change(); + $('.or-search .or-title-input').val('').input(); } ); }; registerGlobalSearch(); diff --git a/modules/cms/ui/themes/default/script/plugin/jquery-plugin-orSearch.js b/modules/cms/ui/themes/default/script/plugin/jquery-plugin-orSearch.js @@ -7,7 +7,7 @@ import WorkbenchNavigator from "../openrat/navigator.js"; export default function( options ) { // Create some defaults, extending them with any options that were provided - var settings = $.extend( { + let settings = $.extend( { 'dropdown': $(), // empty element 'select' : function( obj ) {}, 'afterSelect' : function() {}, @@ -16,11 +16,11 @@ export default function( options ) 'openDropdown' : true, 'action': 'search', 'method': 'quicksearch', - 'resultEntryClass': 'or-dropdown-entry', + 'resultEntryClass': 'dropdown-entry', }, options); - return $(this).on('input change', function() + return $(this).input(async function() { let searchInput = $(this) let searchArgument = searchInput.val(); @@ -33,57 +33,61 @@ export default function( options ) dropdownEl.addClass('search-result--is-active'); let url = './api/?action='+settings.action+'&subaction='+settings.method+'&output=json&search='+searchArgument; - let load = fetch( url, { + let response = await fetch( url, { method: 'GET', headers: { 'Content-Type': 'application/json', } } ); - load.then( response => { - if ( ! response.ok ) - throw "Search request getting an error"; - return response.json(); - } - ).then( data => { - $(dropdownEl).empty(); // Leeren. - - for (let id in data.output.result) { - let result = data.output.result[id]; + if ( ! response.ok ) + throw "Search request getting an error"; + let data = await response.json(); + $(dropdownEl).empty(); // Leeren. - // Suchergebnis-Zeile in das Ergebnis schreiben. + for (let id in data.output.result) { + let result = data.output.result[id]; - let div = $('<div class="' + settings.resultEntryClass + ' ' + settings.resultEntryClass + '--active" title="' + result.desc + '"></div>'); - div.data('object', { - 'name': result.name, - 'action': result.type, - 'id': result.id - }); - let link = $('<a class="or-link"/>').attr('href', WorkbenchNavigator.createShortUrl(result.type, result.id)); - link.click(function (e) { - e.preventDefault(); - }); - $(link).append('<i class="or-image-icon or-image-icon--action-' + result.type + '" />'); - $(link).append('<span class="or-dropdown-text">' + result.name + '</span>'); + // Suchergebnis-Zeile in das Ergebnis schreiben. - $(div).append(link); - $(dropdownEl).append(div); - } + let div = $.create('div') + .addClass( settings.resultEntryClass ) + .addClass( settings.resultEntryClass + '--active' ) + .attr('title',result.desc); + div.data('object', { + 'name': result.name, + 'action': result.type, + 'id': result.id + }); + let link = $.create('a') + .addClass('link') + .attr('href', WorkbenchNavigator.createShortUrl(result.type, result.id)); + link.click(function (e) { + e.preventDefault(); + }); + $(link).append( + $.create('i').addClass('image-icon').addClass('image-icon--action-' + result.type) + ); + $(link).append( + $.create('span').addClass('dropdown-text').text(result.name) + ); - if (data.output.result && settings.openDropdown) { - // Open the menu - //$(dropdownEl).closest('.or-menu').addClass('menu--is-open'); - $(dropdownEl).addClass('dropdown--is-open'); - } else { - $(dropdownEl).removeClass('dropdown--is-open'); - } + $(div ).append(link); + $(dropdownEl).append(div); + } - // Register clickhandler for search results. - $(dropdownEl).find('.or-search-result-entry').click(function (e) { - settings.select($(this).data('object')); - settings.afterSelect(); - searchInput.val(''); - }); + if (data.output.result && settings.openDropdown) { + // Open the menu + //$(dropdownEl).closest('.or-menu').addClass('menu--is-open'); + $(dropdownEl).addClass('dropdown--is-open'); + } else { + $(dropdownEl).removeClass('dropdown--is-open'); + } - } ); + // Register clickhandler for search results. + $(dropdownEl).find('.or-search-result-entry').click(function (e) { + settings.select($(this).data('object')); + settings.afterSelect(); + searchInput.val(''); + }); } else {