[BEZAHLTER AUFTRAG] Anforderungen für Discourse-Plugin für Topic View Serializer

Was möchten Sie umgesetzt haben?

RE: https://community.unix.com/

Wir haben die Migration zu Discourse gerade abgeschlossen, lassen unsere alten Foren jedoch bis 2021 weiterhin zugänglich, da wir zwei Jahrzehnte an Legacy-Code haben, auf den sich unsere Mitglieder stolz berufen (und in den sie viel Arbeit investiert haben).

Für unsere Mitarbeiter, die von Zeit zu Zeit die Integrität migrierten Codes überprüfen möchten, benötigen wir ein kleines Plugin, das den value aus topic_custom_fields extrahiert und nur die Ganzzahl (die ID des Legacy-Forum-Threads) zur TopicViewSerializer hinzufügt. Der JSON-Serializer soll dann das zusätzliche Schlüssel-Wert-Paar enthalten:

"import_id" : <thread_id_of_legacy_forum>

Siehe die Abfrage unten als Beispiel. Der Wert, der zum TopicViewSerializer hinzugefügt wird (für diese Discourse-topic_id), lautet:

"import_id": 284071
postgres=# \c discourse
You are now connected to database "discourse" as user "postgres".
discourse=# select * from topic_custom_fields where name like '%import_id%' and topic_id = 377947;
   id   | topic_id |   name    |     value     |         created_at         |         updated_at         
--------+----------+-----------+---------------+----------------------------+----------------------------
 239520 |   377947 | import_id | thread-284071 | 2020-04-22 03:20:03.968513 | 2020-04-22 03:20:03.968513
(1 row)

Wir möchten diese Eigenschaft in einer Template-Komponente wie folgt verwenden:

{{import_id}}

Da wir eine kleine <span>-Template-Komponente für den topic-category-plugin-outlet benötigen, die so aussehen soll (und nur für unsere festgelegte Vertrauensstufe sichtbar ist):

<span class='import-id'>Legacy Forum Thread <a class='import-id-link' href='https://www.unix.com/showthread.php?t={{import_id}}'>{{import_id}}</a></span>

Bis wann muss es erledigt sein?

Irgendwann in den nächsten paar Wochen ist in Ordnung. Kein großer Zeitdruck.

Was ist Ihr Budget in USD, das Sie für diese Aufgabe anbieten können?

Alle angemessenen Angebote für dieses kleine Plugin sind willkommen.

Zusätzliche Informationen

Wir planen, diesen Code allen, die eine ähnliche Migration durchgeführt haben, kostenlos zur Verfügung zu stellen. Es ist jedoch sehr möglich, dass andere Legacy-Foren nicht so starkes Interesse an der data integrity von Legacy-Code haben, sodass es sein könnte, dass unser Forum das einzige ist, das dieses Plugin nutzt.

Ich habe gestern eine „übermäßig komplexe

3 „Gefällt mir“

Update:

Die Arbeit an diesem Plugin schreitet voran, dank einiger sanfter Anleitung, Ermutigung und Unterstützung durch @spirobel.

Ich arbeite noch Schritt für Schritt am Code und werde ihn polieren, damit er Migratoren, die in Zukunft ähnliche Anforderungen haben könnten, zur Verfügung steht.

@spirobel war wirklich großartig in der Zusammenarbeit. Er ließ mir die meiste Arbeit und das Debugging selbst überlassen, gab mir aber Tipps, Code, Entwurfs-PRs und Hinweise, wenn ich an einer Sackgasse ankam.

Danke @spirobel!

6 „Gefällt mir“

Update:

Ich habe gerade (Alpha-Version) meinen ersten Plugin abgeschlossen und mit dem Live-Testing begonnen.

Status:

  • Live-Testing

TODO

  • Dies ist mein erstes Discourse-Plugin. Der Link zum Legacy-Forum ist fest in der Komponente codiert. Ich muss dies zu einer konfigurierbaren Einstellung machen.
  • Das Plugin im Laufe der Zeit verbessern, um den Code auf das „Discourse-Standard“-Niveau zu bringen, da er derzeit weit davon entfernt ist.
  • In der Kategorie Customization > Plugin posten, wenn das Testing abgeschlossen ist.

Danksagung

Ein besonderer Dank an @spirobel für die Coaching-Session gestern und die Hilfe beim Funktionieren des Serializers und der grundlegenden Komponentenstruktur.

Hinweis

Alle „nicht standardkonformen oder schlechten Codierungspraktiken“ liegen bei mir.

Anmerkungen

Diese Legacy-Forum-Informationen sind nur für Mitglieder mit Vertrauensstufe 4 auf unseren Foren sichtbar (konfigurierbar);

7 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.