tbaddade / redaxo_watson Goto Github PK
View Code? Open in Web Editor NEWSuchagent für REDAXO 4.5 + 5
License: MIT License
Suchagent für REDAXO 4.5 + 5
License: MIT License
Der Fehler tritt auf mehreren Servern (Redaxo 5.4 und 5.5.1) auf, Umfang der Websites zwischen 20 und 1500 Artikeln. Die Suche selbst klappt in aller Regel zuverlässig und sehr schnell, mitunter wird aber unversehens nichts mehr gefunden – auch nicht das, was Sekunden zuvor noch da war.
Das eigentliche Symptom ist aber das folgende: Blättert man mit den Pfeiltasten durch die Trefferliste und öffnet den Link zum gefundenen Artikel mit Return, werden unterschiedliche Aktionen ausgeführt:
(1) Man landet beim Artikel-Edit des Treffer. Das würde ich als erwartbares Verhalten bezeichnen.
(2) Man landet in der Strukturansicht der Kategorie, in der sich der gefundene Artikel befindet. Diese Seltsamkeit mag noch angehen, wenn in der Kategorie nur wenige Artikel sind, bei einigen hundert wird es spätestens sinnlos.
Wann passiert (1) und wann (2)? Keine Ahnung. Wir versuchen seit einigen Tagen mit mehreren erfahrenen Leuten ein System zu erkennen, es will uns nicht gelingen. Mal (1), mal (2), egal ob die Artikel Inhalte enthalten oder nicht, online oder offline sind und unabhängig von der Kategorie-Ebene. In ein und derselben Trefferliste führt Klick auf Treffer a bis e zum Ziel (1) und Treffer f zu (2) – bei praktisch identisch aufgebauten Artikeln derselben Kategorie.
Ganz bizarr: Es ist mitunter sogar ein Unterschied, mit welchem Suchbegriff gefunden wurde. Bei Artikeln mit dem Muster-Titel 'Foo Bar' führt der Klick auf den Treffer zu (1), wenn man nach 'foo', und zu (2) wenn man nach 'bar' sucht. Derselbe Artikel wohlgemerkt, der in beiden Fällen der einzige Treffer ist.
Watson wäre eigentlich ein absoluter Heuler, wenn er sich auf Verhalten (1) beschränken würde – so wie er sich benimmt, ist er leider nicht zu gebrauchen, was wirklich extrem schade ist.
ReferenceError: $watsonSettings is not defined
/assets/addons/watson/watson.js?buster=1541757826:105
Auch nach Speichern der Einstellungen bleibt der Fehler, Watson öffnet sich nicht mehr.
REDAXO 5.8, alle Addons aktuell
bzw. in sked-Tabelle
Im Moment werden nur slices durchsucht, oder ?
Es kommen keine Eregebnisse
Erklärungen kann man nicht sehen
via E-Mail:
kann man / könntest Du in Watson auch einen anderen Shortcut zum Aktivieren anbieten?
Bei mit Ctrl + Space nämlich mit Alfred belegt.
Bei der einfachen Eingabe von Buchstaben, Zahlen, Texte.
02.04.2019 12:23:35 | rex_sql_exception | Error while executing statement " SELECT a.id, a.clang_id, CONCAT(a.id, " | ", a.clang_id) as bulldog FROM rex_article AS a WHERE () OR ( GROUP BY bulldog LIMIT 20"! SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') OR () GROUP BY bulldog LIMIT' at line 1 | redaxo/src/core/lib/sql/sql.php |
---|---|---|---|---|
02.04.2019 12:23:34 | Warning | count() [function.count]: Parameter must be an array or an object that implements Countable | redaxo/src/addons/watson/lib/Watson/Foundation/Result.php | 42 |
02.04.2019 12:23:34 | Warning | count() [function.count]: Parameter must be an array or an object that implements Countable | redaxo/src/addons/watson/lib/Watson/Foundation/Result.php | 42 |
02.04.2019 12:23:34 | Warning | count() [function.count]: Parameter must be an array or an object that implements Countable | redaxo/src/addons/watson/lib/Watson/Foundation/Result.php | 42 |
02.04.2019 12:23:34 | Warning | count() [function.count]: Parameter must be an array or an object that implements Countable | redaxo/src/addons/watson/lib/Watson/Foundation/Result.php | 42 |
02.04.2019 12:23:34 | Warning | count() [function.count]: Parameter must be an array or an object that implements Countable | redaxo/src/addons/watson/lib/Watson/Foundation/Result.php | 42 |
Es ist aktuell nicht möglich nach dem String "1351" zu suchen.
if (count($command_parts) == 1 && (int) $command_parts[0] >= 1) {
Diese Zeile sorgt dafür das anschließend die where Bedingung überschrieben wird und dann nach einer ArtikelID mit 1351 gesucht wird.
Dabei ist doch die Where Bedingung vorher (a.id LIKE "%1351%") OR (a.name LIKE "%1351%") richtig.
Könnte man dort eine andere Logik verbauen?
Bei mir wird /domain.de/.../.../
ausgegeben. Vlt. wird die Artikel-ID nicht mit rex_getUrl()
durchlaufen?
Line 16 in 5136b7b
Da schon einige fixes eingeflossen sind würde ich ein release begrüßen.
Eingabe:
m 15 inuse
Besser passt zur jetzigen Syntax
m:find 15
m:used 15
m:inuse 15
siehe auch Diskussion zu FriendsOfREDAXO/quick_navigation#81
Genaue Fehlermeldung kann ich nicht mehr geben, da das ein Live-System war und schnellstmöglich vom Hoster auf PHP7 umgestellt wurde.
Möglicher Workaround: Mindestanforderung für die PHP-Version bei der Installation erhöhen.
count() [function.count]: Parameter must be an array or an object that implements Countable | redaxo/src/addons/watson/lib/Watson/Foundation/Result.php
Im Systemlog. Wodurch es verursacht wird, kann ich nicht sagen.
ggf. würde es sinnvoll sein, ausgeschriebene Keywords zuzulassen... also "module" oder "article" (kann man sich vllt besser merken)
Notice: Undefined index: USER in /Users/..../addons/watson/config.inc.php on line 49
Notice: Undefined index: USER in /Users/..../addons/watson/plugins/watson_core/config.inc.php on line 29
PHP: 7.2.18
count() [function.count]: Parameter must be an array or an object that implements Countable
redaxo/src/addons/watson/lib/Watson/Foundation/Result.php | 42
Beim klicken auf einer Datei aus dem Medienpool im Watson Ergebniss erscheint kurz das Medienpool Popup Fenster und schließt sich sofort, da die Seite weitergeleitet wird auf: javascript:newPoolWindow('index.php?page=mediapool/media&file_id=1')
Steht dann in der Adresszeile.
Evtl. fehlt ein "return false" beim Aufruf von newPoolWindow()?
REDAXO 5.5.1
Wokflows erweitern Watson um zusätzliche Funktionen und Suchen.
Das nachfolgende Beispiel bindet eine Suche für eine Tabelle eines AddOns an.
Zunächst benötigt man einen Provider, diesen (hier StoreProvider.php
) legt man im Lib-Ordner des eigenen oder des project-AddOns an.
Hier der Provider für ein Store-AddOn
namespace Watson\Workflows\Store;
use Watson\Foundation\SupportProvider;
use Watson\Foundation\Workflow;
class StoreProvider extends SupportProvider
{
/**
* Register the directory to search a translation file.
*
* @return string
*/
public function i18n()
{
return __DIR__;
}
/**
* Register the service provider.
*
* @return Workflow|array
*/
public function register()
{
if (\rex_addon::get('store')->isAvailable()) {
return $this->registerStoreSearch();
}
return [];
}
/**
* Register store search.
*
* @return Workflow
*/
public function registerStoreSearch()
{
return new StoreSearch();
}
}
Die Suche für den Store wird in einer separaten Datei StoreSearch.php
angelegt.
<?php
namespace Watson\Workflows\Store;
use Watson\Foundation\Command;
use Watson\Foundation\Documentation;
use Watson\Foundation\Result;
use Watson\Foundation\ResultEntry;
use Watson\Foundation\Watson;
use Watson\Foundation\Workflow;
class StoreSearch extends Workflow
{
/**
* Provide the commands of the search.
*
* @return array
*/
public function commands()
{
return ['st'];
}
/**
* @return Documentation
*/
public function documentation()
{
$documentation = new Documentation();
$documentation->setDescription(Watson::translate('watson_store_documentation_description'));
$documentation->setUsage('st keyword');
$documentation->setExample('st Phrase');
return $documentation;
}
/**
* Return array of registered page params.
*
* @return array
*/
public function registerPageParams()
{
return [];
}
/**
* Execute the command for the given Command.
*
* @param Command $command
*
* @return Result
*/
public function fire(Command $command)
{
$result = new Result();
$fields = ['text_1', 'teaser_1', 'name_1', 'price', 'updatedate', ];
$sql_query = '
SELECT *
FROM ' . Watson::getTable('store_products') . '
WHERE ' . $command->getSqlWhere($fields) . '
ORDER BY name_1';
$items = $this->getDatabaseResults($sql_query);
if (count($items))
{
$counter = 0;
foreach ($items as $item)
{
$url = Watson::getUrl(['page' => 'store/list_form', 'base_path' => 'store/products/products', 'id' => $item['id'], 'func' => 'edit']);
++$counter;
$entry = new ResultEntry();
if ($counter == 1)
{
$entry->setLegend('Store');
}
if (isset($item['name_1']))
{
$entry->setValue($item['name_1'] . '', '(' . $item['id'] . ')');
}
else
{
$entry->setValue($item['id']);
}
$entry->setDescription($item['price'] . ' € | ' . $item['updatedate']);
$entry->setIcon('watson-icon-yform');
$entry->setUrl($url);
$entry->setQuickLookUrl($url);
$result->addEntry($entry);
}
}
return $result;
}
}
Tipps:
$this->getDatabaseResults($sql_query);
ausgelöst$entry->setQuickLookUrl($url);
definiert die URL die zur Vorschau im Quickview verwendet wird.$entry->setValue()
definiert den Ergebnistext. (HTML-Formatierung wird nicht unterstützt)$entry->setDescription
zeigt die (kleine graue( Beschreibung an.Um die Suche nun anmelden zu können, muss man den Provider registrieren. Das erfolgt in der boot.php des eigenen oder des project- AddOns über den Extenstionpoint WATSON_PROVIDER
function register_storesearch(rex_extension_point $ep)
{
$subject = $ep->getSubject();
$subject[] = 'Watson\Workflows\Store\StoreProvider';
return $subject;
}
rex_extension::register('WATSON_PROVIDER', 'register_storesearch', rex_extension::LATE);
aktuell kann die Such-Toolbar nur mit ESC geschlossen werden.
ggf. würde ein zusätzlicher Link zum schließen das ganze aus Usability-Sicht vereinfachen.
Alternativ/Ergänzend könnte man die Toolbar auch bei verlieren des Focuses oder Klick in den Background schließen.
Warten auf redaxo/redaxo#196
Gebe ich einem User das Recht Watson einzusetzen, kann dieser auch das Setup ändern und den Watson-Button für alle User wieder ausblenden / einblenden, die die Berechtigung haben.
Ideen:
Artikelpfad könnte angezeigt werden.
Wie bekommt Watson nur die Pfade zugespielt?
(Ich weiß, mein Wunschzettel ist groß, aber als Feature-Request kannst du es ja mal im Auge behalten.)
Redakteure scheinen das Symbol nicht zu verstehen.
Ein Hinweis, dass das Verzeichnis watson lauten muss und nicht redaxo_watson, wäre hilfreich, denke ich.
Da ein Klick direkt zum Artikel / Datensatz führt, kann man nur mit den Cursor-Tasten die Vorschau sehen. Hier wäre es schöner, zumindest mit der Maus hovern zu können, um die Vorschau zu triggern.
würde mich freuen wenn die Lösung auch als Frontendsuche realisiert werden könnte.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.