Posts by ilou

    Nein, bisher nicht. Ich glaube dafür ist sowas einfach zu sehr ein Nischenprodukt als dass sich die Entwicklung dafür lohnt. Die meisten Vereine setzen sonst wahrscheinlich auch eher auf ihre eigene Software, die sie bereits seit Jahren haben.


    Ich hatte jetzt schon mal provisorisch geschaut, wie ein Export unserer Daten möglich wäre aus unserer Software, deren Database Engine seit 2001 nicht mehr weiterentwickelt wird, aber ich schaffe es nicht, die Daten halbwegs vernünftig zu exportieren (Export zu Microsoft Word in Tabellenform ist jetzt nicht wirklich vorteilhaft für einen Import in eine andere Software)

    Wird ein Bild z.B. in Artikeln als Artikel-Bild eingesetzt, werden Aufrufe auf das Bild nicht gezählt, weil beim Aufruf des Artikels hinten ein ?thumbnail=large angehängt wird, um die kleinere Datei auszuliefern.


    Schaue ich dann aber im ACP in die Medien-Übersicht sehe ich nicht, dass das Bild aufgerufen wurde. Das Bild an dem mir das aufgefallen ist, wurde vor wenigen Wochen hochgeladen und ist sowohl als Artikel-Bild im Artikel als auch auf unserer Startseite eingebettet, allerdings immer mit dem thumbnail-Parameter:

    Der Artikel wurde bereits über 80 Mal gelesen und die Startseite noch wesentlich öfter aufgerufen (schätzungsweise etwa zwischen 1000 und 1500 Mal).


    Um das ganze selbst zu überprüfen:

    1. Datei in der Medienübersicht hochladen
    2. Medien-Datei aufrufen mit ?thumbnail=large angehängt -> Download zählt nicht
    3. ?thumbnail=large entfernen -> Download zählt

    Versuche ich einen Datenabgleich meines Projekts zu machen, erhalte ich folgenden Fehler dabei:

    Code
    Expected one 'content' element without a 'language' attribute for box 'me.ilou.test.TestList'

    welche mittels folgender xml-File angelegt werden soll:

    Füge ich noch ein

    XML
                <content language="en">
                    <title>Testliste</title>
                </content>

    ein, funktioniert der Datenabgleich. Ich denke aber der Abgleich sollte auch funktionieren, wenn man den englischsprachigen Inhalt nicht angibt, insb. auch dann nicht, wenn die Webseite nur einsprachig (Deutsch) ist.


    Abgesehen davon: Füge ich jetzt (wie in der Fehlermeldung gewünscht) ein content-Element ohne language-Atrribut ein, gibt es folgenden Fehler:

    Code
    Cannot mix 'content' elements with and without 'language' attribute for box 'me.ilou.test.TestList'

    Und meine KnowledgeEntryAttachmentObjectType erweitert AbstractAttachmentObjectType und beinhaltet lediglich die Überprüfungen für die Rechte für canDownload, canUpload und canDelete. Habe mich da grob an https://github.com/WoltLab/WCF…hmentObjectType.class.php orientiert.

    Hab meinen Fehler gefunden. Ich habe bei der Überprüfung der Rechte immer anhand der objectID geprüft, ob der Nutzer lesenden, bzw. schreibenden Zugriff auf die Elternkategorie hat. Beim Erstellen ist die objectID allerdings 0 und dementsprechend wird dann zurückgegeben, dass er das Recht nicht hat, weil es für die objectID keine Elternkategorie gibt, und damit insbesondere auch keine, für die der Nutzer die Rechte hat.


    Nachtrag:

    Hallo,


    kann ich so nicht reproduzieren. Es funktioniert bei mir lokal (als auch hier auf WoltLab.com produktiv) wie erwartet. Ausschnitte wie oben bringen uns aber nicht wirklich weiter. Kannst du also mal das komplette Plugin anhängen (alternativ gerne auch per Mail an ruesweg@woltlab.com), damit ich da mal drüber schauen kann?

    Das hatte ich nämlich vor, ist aber blöd, weil das Plugin 3 Dependencies hat und dann müsste ich alle anhängen. Wollte deswegen dann eine abgespeckte Version davon zusammenbasteln und auch damit testen und da funktionierte es dann. Der einzige Unterschied war zu dem Zeitpunkt, dass bei dem einen im AttachmentObjectType immer true zurückgegeben wurde.

    Ich habe gerade ein Projekt in den DevTools hinzufügen wollen und habe dazu in den Projekten die Option Pfad durchsuchen genutzt. Ich habe dann meinen Pfad zu den Projektordnern angegeben und auf Absenden geklickt. Entgegen der Beschreibung "Alle Ordner, die sich direkt in dem angegebenen Pfad befinden, werden überprüft, ob sie ein Paket enthalten." und dem erwarteten Verhalten von "durchsuchen" werden alle gefundenen Projekte aber direkt erstellt. Dadurch habe ich gerade 3 Projekte - davon 2 Karteileichen - erstellt.


    Daher würde ich vorschlagen, dass neue gefundene Projekte lediglich aufgelistet werden und man dann darin selber aussuchen kann, welche man davon erstellen möchte.

    Meine DBOAction sieht derzeit so aus, bzw. genauer die create-Funktion:

    Wenn ich versuche das ganze wie ihr mit $attachmentHandler->updateObjectID($object->objectID); zu machen (was soweit ich das sehe äquivalent zu der foreach sein sollte bei mir), funktioniert es ebenfalls nicht. In meiner Datenbank bleiben durchgehend die Hashes gespeichert und die Dateianhänge keiner objectID zugewiesen:


    Der Datenbankeintrag mit attachmentID 29 ist beim Bearbeiten von einem meiner Einträge über das Bearbeiten-Formular entstanden. Das kann man für den Fall gerade ignorieren.


    An dem erzeugen des FormContainer habe ich nichts geändert. Das ist nach wie vor:

    PHP
                WysiwygFormContainer::create("message")
                    ->messageObjectType("mein.object.entry")
                    ->supportSmilies(false)
                    ->attachmentData("mein.object.entry", $this->parentID)
                    ->required()

    Wie bereits oben erwähnt, stimmen der Hash, der im Formular steht (und für die attachments dann auch in der Datenbank gesetzt wird), und der Hash, der in $this->parameters["message_attachmentHandler"] steht nicht überein, was mich halt entsprechend verwundert, weil sie aus der gleichen Anfrage kommen (sollten) und dementsprechend identisch sein müssten - soweit zumindest mein Verständnis.


    EDIT: Wenn ich mal ein wcfDebug($this->parameters["message_attachmentHandler"]); einfüge, erhalte ich folgendes:

    Und meine KnowledgeEntryAttachmentObjectType erweitert AbstractAttachmentObjectType und beinhaltet lediglich die Überprüfungen für die Rechte für canDownload, canUpload und canDelete. Habe mich da grob an https://github.com/WoltLab/WCF…hmentObjectType.class.php orientiert.

    Ich habe mich gerade nochmal damit genauer beschäftigt und folgendes Herausgefunden:

    Beim Aktivieren der Attachments wird für den File-Upload ein tmpHash angelegt. Schaue ich in die Devtools sehe ich diesen. Lade ich Bilder hoch, werden diese mit dem entsprechenden tmpHash in der Datenbank-Tabelle wcf1_attachments gespeichert.


    Sende ich das Formular ab, speichere also den Eintrag, wird allerdings ein neuer tmpHash generiert, der nicht mehr dem in dem versteckten input-Feld (und den Anhängen in der Datenbank) entspricht. Jetzt kann ich also nicht mehr herausfinden, welche Attachments entsprechend zu meinem Eintrag gehören:

    Aber wcfDebug($attachmentHandler->getTmpHashes()); gibt beim Speichern folgendes aus:

    Code
    Array
    (
        [0] => 093e1a5833debec8328ba335b10cc6ef45225e1a
    )

    Woran liegt das? Ist das ein Fehler im WSC?

    Ich versuche gerade im FormBuilder ein Wysiwyg-Container einzufügen, der auch mit Dateianhängen umgehen kann (speziell Bilder).


    Dazu habe ich mir im FormBuilder entsprechend einen WysiwygFormContainer erstellt:

    PHP
    WysiwygFormContainer::create("message")
                    ->messageObjectType("mein.object.entry")
                    ->supportSmilies(false)
                    ->attachmentData("mein.object.entry", $this->parentID)
                    ->required()

    Wenn ich jetzt einen Eintrag bearbeite, sprich mit der objectAction edit statt create arbeite, kann ich die Dateianhänge entsprechend einfügen und speichern. Dazu maßgeblich ist die entsprechende update-Methode in meiner Action-Klasse:

    PHP
            $htmlInputProcessor = $this->parameters["message_htmlInputProcessor"];
            $message = $htmlInputProcessor->getHtml();
            $this->parameters["data"]["message"] = $message;
    
            parent::update();
    
            $htmlInputProcessor->setObjectID($this->getObjectIDs()[0]);
            MessageEmbeddedObjectManager::getInstance()->registerObjects($htmlInputProcessor);
    
            return new Entry($this->getObjectIDs()[0]);

    Erstelle ich aber einen Eintrag, kann ich zwar die Dateianhänge hochladen und im WyiswygFormField einfügen, aber diese werden beim Absenden des Formulars nicht dem Eintrag zugeordnet. Analog zur update-Methode habe ich auch eine create-Methode, die eigentlich gleich funktionieren sollte:

    PHP
            $htmlInputProcessor = $this->parameters["message_htmlInputProcessor"];
            $message = $htmlInputProcessor->getHtml();
            $this->parameters["data"]["message"] = $message;
    
            $entry = parent::create();
    
            $htmlInputProcessor->setObjectID($entry->getObjectID());
            MessageEmbeddedObjectManager::getInstance()->registerObjects($htmlInputProcessor);
    
            return $entry;

    Der einzige Unterschied, den ich erkennen kann, ist dass beim Erstellen des Eintrages noch keine ObjectID vorhanden ist (bis diese durch parent::create() erzeugt wird), beim Bearbeiten hingegen schon. Das deckt sich auch mit den Einträgen in wcf1_attachment.


    Beim Erstellen sieht das ganze dann so aus:

    und nach dem Absenden des Formulars so:

    Es ist dann nur noch der BB Code für das Attachment vorhanden, aber es wird nicht eingebunden.

    Bearbeite ich den Eintrag und lade die Datei erneut hoch, wird sie ordnungsgemäß dem Eintrag zugeordnet und anschließend auch entsprechend in dem Eintrag eingebunden.


    Was muss ich beim Erstellen des Eintrags beachten, damit der Dateianhang korrekt dem Eintrag zugeordnet wird?

    Ich wollte gerade im ACP einen Artikel erstellen und in diesem Artikel auf einen anderen verweisen. Dazu wollte ich dann den wsa-BB-Code verwenden und mir davon eine Vorschau anzeigen lassen.


    Leider kommt es dann zu dem Fehler, dass er das Template articleBBCode nicht finden kann. Ich vermute das Template fehlt einfach in der ACP-Umgebung, weil in github finde ich es nicht bei den acptemplates.

    Eine Integration in den Kalender ist bisher nicht geplant. Einerseits habe ich den Kalender nicht, andererseits brauchen wir den Kalender nicht.


    Ich würde mich schon eher an dem orientieren, was wir derzeit haben. Sprich einfach einen täglichen Zeitplan, in den man sich halbstündig mit seinen Mitspielern einbuchen kann.


    Allerdings schließt es ja nicht aus, dass wenn Buchungen (genauer Veranstaltungen) angelegt werden, diese mittels Eventlistener oder Ähnlichem auch an den Kalender übergeben und dort anlegen zu können.


    Ergänzung:

    Wir haben uns nun gegen eine Umstellung unseres Buchungssystem zum Jahr 2022 entschieden. Es gibt da einfach andere wichtigere Baustellen. Wir behalten bei uns im Verein also das bisherige Buchunggsystem bei. Für mich gibt es also keinen Grund ein solches Plugin zu realisieren.

    Bisher hat sich nicht viel weiteres ergeben, weil es andere Projekte gibt, die im Vordergrund stehen.

    Dazu kommt: Aktuell nutzen wir bereits ein anderes Buchungssystem, sind also nicht zwingend auf ein neues angewiesen - die Integration ins WSC wäre nur nice2have (unter Anderem dafür, dass Cronjobs öfter/regelmäßiger ausgeführt werden). Andererseits müsste man die Mitglieder dann auch auf das neue System umgewöhnen. Es hat also alles sein Für und Wider.


    Wenn ich meine Klausur morgen durch habe, kann ich vielleicht dann auch schon mehr dazu sagen, wie es weiter geht. Ich wollte mich die kommende Woche etwas spezieller mit meinen Überlegungen auseinander setzen. Ich schaue mal, was ich schaffe.


    Ob der Viecode Shop in unserem Fall die richtige Wahl wäre (Buchung von Tennisplätzen) wage ich zu bezweifeln - bei Campingplätzen könnte der schon eher helfen.

    Stimmt. Das Übernehmen einige Erweiterungen, die sich dann nur mühselig wieder entfernen lassen.

    Pakete können doch einfach über die Paketverwaltung deinstalliert werden. Das geht schnell und im Normalfall restlos.


    Ich kann dir zwar gerade nicht genau sagen, wie die Deinstallation von Paketen genau funktioniert, aber soweit ich weiß, werden von dem Paket bereitgestellte Files, Templates, Datenbank-Tabellen, und alle möglichen Inhalte aus den xml-Dateien wieder entfernt.

    Ich habe das Problem auch schon gehabt. Ich rufe eine Seite auf, schreibe meinen Inhalt in das Formular und sende das Formular 2 Minuten später ab. Dann erscheint bei mir teilweise erst die Fehlermeldung, dass die Sitzung abgelaufen ist. Sende ich das Formular dann direkt wieder ab, funktioniert es.


    Vielleicht kann man das Thema hier mal teilen und in ein extra Thema auslagern.

    Möchte man einen templateListener wieder löschen, kann man laut Beispiel in der Dokumentation einfach ein

    Code
        <delete>
            <templatelistener name="oldTemplateListenerName" />
        </delete>

    verwenden. Tut man das, beschwert sich IntelliJ aber darüber:


    Da mit dem im Beispiel genannten Code ein Fehler beim Datenabgleich auftritt, dass er (min.) den Index environment nicht finden kann, gehe ich davon aus, dass hier in der Dokumentation ein falsches Beispiel für das templateListener-PIP genutzt wird.

    Normale Menüpunkte im Hauptmenü unterstützen standardmäßig keine Zugangsbeschränkungen.

    Für ein Projekt möchte ich aber einen Menüpunkt im Hauptmenü anlegen, da dieser an der Stelle von den Nutzerinnen und Nutzern am ehesten gefunden wird. Jetzt soll der Menüpunkt aber nicht immer angezeigt werden, sondern nur Personen mit Zugangsberechtigung.


    Aus dem Grund habe ich einen Template-Listener angelegt, der im Template __menu im event menuAfter meinen Menüpunkt hinzufügt, wenn der Nutzer die entsprechenden Rechte hat.


    Problematisch daran ist, dass jetzt aber auch dieser Menüpunkt im Footer-Menü angezeigt wird. Wie kann ich den Menüpunkt nur im Hauptmenü hinzufügen?

    Oder gibt es sogar eine schönere Umsetzung meines Vorhabens? Wie aber bereits gesagt, halte ich eine Unterbringung im Usermenü für nicht vorteilhaft, da ich denke, dass der Menüpunkt da schnell untergeht.

    So wie ich das sehe, hast du die Linkumschreibung in deinem Forum nicht aktiviert.


    Ein Ähnliches Problem gab es wohl schon vor einigen Monaten hier und da war die Lösung soweit ich weiß, die Linkumschreibung im WSC zu aktivieren. Den Thread findest du hier: Problem mit dem Sharer zu Facebook

    und einen (auf Anhieb gefunden) Beitrag zur Lösung hier:


    Ist also soweit ich weiß kein Fehler auf Seiten von WoltLab.

    Heißt also, wäre zuerst die Version gelabelt worden, und dann das Fehler-Label geändert, stände auch nach wie vor da, dass der Fehler bestätigt ist, dann die Version und dann, dass das Fehler-Label von "Bestätigt" auf "Behoben" geändert wurde?