Giter VIP home page Giter VIP logo

redaxo_watson's Issues

Klick auf Treffer führt – scheinbar regellos – mal zu Edit, mal zur Strukturansicht

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.

$watsonSettings is not defined

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

Alternative für den Hotkey anbieten

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.

Diverse Einträge im Systemlog

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

Suche nach Produkt: Artikelnummer

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?

Kompatibilität zu YRewrite

Bei mir wird /domain.de/.../.../ ausgegeben. Vlt. wird die Artikel-ID nicht mit rex_getUrl() durchlaufen?

Darstellung kleine Bilder z-Index und Breite

Auf kleinen Bildschirmen wird die Eingabe abgeschnitten weil Watson zu breit ist oder die Eingabe wird vom Menü überdeckt.
Lösungsvorschlag: z-index erhöhen und Breite auf eine maximal und min-breite definieren.

Bildschirmfoto 2022-04-09 um 14 09 05

Bildschirmfoto 2022-04-09 um 14 08 50

RELEASE?

Da schon einige fixes eingeflossen sind würde ich ein release begrüßen.

Whooops unter PHP 5.5

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.

countable()-Warning in result.php

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.

ausgeschriebene Keywords

ggf. würde es sinnvoll sein, ausgeschriebene Keywords zuzulassen... also "module" oder "article" (kann man sich vllt besser merken)

Fehler Frontend

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

Warning wg. Count()

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

javascript:newPoolWindow() Fehler

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

Hilfe für: Eigene Workflows einbinden | inside

Eigene Workflows einbinden

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:

  • Das Query wird per $this->getDatabaseResults($sql_query); ausgelöst
  • $entry->setQuickLookUrl($url); definiert die URL die zur Vorschau im Quickview verwendet wird.
    In diesem Beispiel führt sie zur identischen URL wie das Suchergebnis. Alternativ kann man hier auch die URL zum Frontend hinterlegen.
  • $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); 

schließen des overlays

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.

User :: Watson-Darstellung / Konfiguration

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:

  • Neues Recht zur Benutzung von Watson?
  • Per User Setting anbieten? (Siehe QuickNavi)

Watson-Button in und ohne Quicknavi

Ohne Quicknavi: Aktuell schlecht erkennbar.
Bildschirmfoto 2022-07-29 um 14 08 25

Mit Quicknavi

Bildschirmfoto 2022-07-29 um 14 11 59

In Quicknavi wird das Symbol nicht mehr ausgegeben da das Symbol wohl nicht mehr per CSS eingefügt wird.

Request:
Bitte auch trigger class von styles trennen. Das ermöglicht mir auch eine einfachere Übernahme oder Gestaltung in Quicknavi.

Responsive

Der Button sollte mobil immer sichtbar sein, da keine Tastenkombinationen möglich.

Das Fenster sollte in der Breite begrenzt werden, vielleicht auf die Vorschau verzichten, da mobil eh nicht gut nutzbar.
Screenshot_2021-07-08-17-45-19-486_com android chrome

Verzeichnisname

Ein Hinweis, dass das Verzeichnis watson lauten muss und nicht redaxo_watson, wäre hilfreich, denke ich.

Suchergebnis: Hover > Vorschau

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.