Projekt: Twitwiki

Ich interessiere mich für das Projekt

  • ja

    Stimmen: 13 76,5%
  • nein

    Stimmen: 4 23,5%

  • Anzahl der Umfrageteilnehmer
    17
Status
Für weitere Antworten geschlossen.

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Seit ein paar Wochen habe ich begonnen an einer Idee zu arbeiten. Ein Twitter-Server, den man wie ein Wiki benutzen kann.

Wie ihr ja alle wisst, twittere ich seit November ganz eifrig und diskutiere mit anderen Twitteren allerlei Themen, unter anderem auch, welche Use-Cases für Twitter bestehen. Neben der Kommunikation a la Chat kann man auch Selbstgespräche führen und sich so etwas mit ein Memo-Board damit anlegen. Da die Suchfunktionalität von Twitter diese Tweets (Messages) wieder auffinden kann und auch ein Tagging-Mechanismus vorhanden ist, kann man Notizen, Verweise, Links usw. damit speichern/archivieren.

Leider ist die Größe eines Tweed auf 140 Zeichen begrenzt, deshalb sind einige Informationen nicht wirklich gut speicherbar ... Daher habe ich mich kurzerhand dran gesetzt, ein kleines PHP-Skript zu schreiben, was den Twitter nachempfindet und die Tweet hinsichtlich der Länge zu vergrößern (32000 Zeichen). Das Ganze wird per MySQL-Datenbank verwaltet.

Nun habe ich für den ein oder anderen Use-Case (Anwendungsfall) begonnen, Kürzel und Ähnliches zu verwenden, um die Informationen besser in der Datenbank abzulegen. Dabei verwende ich Symbole ähnlich wie in einem Wiki, z. B. zur Einbettung einer URL mache ich "{www.google.de}", für die Textauszeichnung setze ich BB-Code ein usw.

So habe ich jetzt schon als Anwendungsfälle eine kleine Buchhaltung, eine Memo-Liste (für Adressen, Bücher, Links, usw) einen Termin-Kalender, eine ToDo-Liste mit Prioritäten angedacht und als Prototypen realisiert.

Im Moment teste ich gerade ein Interface aus, um von Twitwiki nach Twitter Tweet zu senden und umgekehrt von Twitter aus, Tweets nach Twitwiki einzulesen. Dann könnte man überall seine Tweed eingeben und auch abrufen, sofern man das eingerichtet haben will. Da man auch so etwas wie private Tweets in Twitter erhalten kann, wäre zumindest bis zu einem bestimmte Grad, auch Nicht-Öffentliche-Information-Haltung möglich. Das funktioniert auch schon recht ordentlich. Und Twitter kostet nichts. Es gibt auch Alternativen zu Twitter, aber ich möchte hier nicht zu ausführlich werden.

Soweit so gut. Wer sich noch ein wenig informieren möchte, kann hier auch noch ein wenig lesen (nicht irritieren lassen ... ich hatte mir mal den Namen Twaki dafür ausgedacht, dieser ist aber schon belegt ...)

Ich würde gerne den Code in der nächsten Zeit hier reinstellen (nicht zum automatischen Installieren, sondern eher etwas handwerklicher), wenn Interesse besteht. Der Code ist noch nicht richtig schön und elegant usw. da steckt noch Arbeit drin; auch ist noch nicht komplett die Robustheit gegen Falscheingaben gegeben ... und es gibt auch noch keine Skins zur Auswahl :D

Wer damit dann ein wenig spielen möchte, sollte sich vorab Twitter und mal ein Wiki (zum Beispiel unseres) anschauen ... wie man da so mit umgeht und wie da die Eingaben gedacht werden. Denn dann müsste ich weniger das User-Interface und das Verhalten erklären.

Also wieder einmal ein Projekt. Mal sehen, was dabei herauskommt. Ich hoffe, ich konnte ein wenig Neugier wecken.

Itari
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
So, ich denke, dass wir starten. Es gibt zwar noch eine Menge zu erledigen, aber vielleicht kommen durch die Diskussion auch neue Gedanken dazu.

Das Verzeichnis von Twitwiki hab ich direkt unter /volume1/web gelegt. Darunter sind noch die Verzeichnisse: bbeditor, images und archiv.

Rich (BBCode):
/volume1/web/twitwiki
/volume1/web/twitwiki/bbeditor
/volume1/web/twitwiki/images
/volume1/web/twitwiki/archiv

Das Verzeichnis bbeditor wird eine abgespeckte Version eines BB-Editors für die Nachrichten-Eingabe aufnehmen.
Im Verzeichnis images kann man für User Avatar-Bildchen (16x16 Pixel) als .png-Datei ablegen. Der Dateiname heisst sinerweise genauso wie der jeweilige User.
Das Verzeichnis archiv ist nur aus arbeitstechnischen Gründen da. Wenn man Verweise/Links auf externe Dokumente in Twitwiki machen möchte, dann wäre das ein Ort, der zugänglich ist, also nicht besonders von der Rechten her für den Apache aufgemacht werden muss.

Ins Verzeichnis /volume1/web/twitwiki sollten die beiden angehängten Bild-Dateien einkopiert werden.

Die MySQL-Datenbank heisst auch twitwiki und enthält 2 Tabellen:

Die Tabelle auth ist für die Authentifizierung da und wird im ersten Druchgang die Kennworte ohne Verschlüsselung aufnehmen. Es gibt auch noch kein Benutzerfrontend, so dass hier erstmal der phpymadmin verwendet werden muss. Da Twitwiki aber wie Twitter funktionieren soll, ist eine strikte Privatisierung der Daten notwendig. Deshalb auch bereits im Anfangsstadium die entsprechende Tabelle. Sinnvoll ist es zwei Einträge vorzunehmen.

Rich (BBCode):
CREATE TABLE IF NOT EXISTS `auth` (
  `ID` int(11) NOT NULL auto_increment,
  `name` varchar(20) collate latin1_general_ci NOT NULL,
  `password` varchar(20) collate latin1_general_ci NOT NULL,
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;

Die Tabelle pico enthält die eigentlichen Messages.
TS markiert den letzten Änderungszeitpunkt (ist später für die Synchronisation wichtig),
to ist der Empfänger,
date ist für Kalender oder todo das Fälligkeitsdatum,
alarm kann als Wecker-Schalter irgendwann eingesetzt werden,
prio ist die Priorität der todo-Einträge,
kto1, kto2, brutto, tax, netto sind die Buchhaltungsfelder,
from ist der obligatorische Absender/Ersteller der Nachricht,
keyword ist das Schlüsselwort bei Listen,
category dient zum Kategorisieren/Typisieren der Nachrichten und
text enthält die eigentliche Nachricht mit allen anderen Feldern.

Im Laufe der Zeit werden sicherlich noch weitere Felder/Spalten dazu kommen.

Rich (BBCode):
CREATE TABLE IF NOT EXISTS `pico` (
  `ID` int(11) NOT NULL auto_increment,
  `TS` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `to` char(32) collate latin1_general_ci default NULL,
  `date` datetime default NULL,
  `alarm` char(1) collate latin1_general_ci NOT NULL default '0',
  `prio` tinyint(4) default NULL,
  `kto1` varchar(32) collate latin1_general_ci default NULL,
  `kto2` varchar(32) collate latin1_general_ci default NULL,
  `brutto` decimal(15,2) default NULL,
  `netto` decimal(15,2) default NULL,
  `tax` decimal(15,2) default NULL,
  `from` char(32) collate latin1_general_ci default NULL,
  `keyword` varchar(64) collate latin1_general_ci default NULL,
  `category` varchar(256) collate latin1_general_ci default NULL,
  `text` varchar(32000) collate latin1_general_ci default NULL,
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci ROW_FORMAT=DYNAMIC AUTO_INCREMENT=1

Da eine ganze Reihe von Spaltennamen aus reservierten Worten bestehen, müssen sie in solche eigenwilligen Hochkommata.
 

Anhänge

  • delete.png
    delete.png
    892 Bytes · Aufrufe: 186
  • edit.png
    edit.png
    946 Bytes · Aufrufe: 184
Zuletzt bearbeitet:

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Die zentralen Twitwiki-Dateien sind:

index.php
twitwiki.css
twitwiki.js
twitwiki.php.inc


In der index.php wird zunächst die Authentifizierung vorgenommen, dann der Suchstring für die Datenbank aufgebaut. Da die Suche und Anzeige eines der zentralsten Punkte sind, wird der Suchstring an verschiedenen Stellen zusammengestellt.

Die eigentliche Ausgabe besteht aus etwas statischem HTML und viel dynmischen PHP-generierten Ausgaben. Teilweise sind die style-Formate nicht ganz weg zu bekommen, die dynamische Anzeige nicht ganz ohne inplace CSS auskommt. Damit man auch je keine neuen Meldungen verpasst, wird alle 30 Sekunden ein Refresh gemacht. Da das für die Eingabe nicht gerade vorteilhaft ist, kann man das auch ausschalten, in dem man mit der Maus auf das Eingabefeld geht. Anmachen geht dann wieder mit Doppelklick.

In der Datei twitwiki.php.inc werden einige PHP-Funktionen definiert, das selbe gilt auch für die JavaScript-Funktionen in der twitwiki.js.

Ein Hilfe-Seite ist als einfaches HTML (help.html) beigelegt und auch integriert.

Die Dateien sind gezipped angehängt ... bitte die Endung .pdf entfernen.
 

Anhänge

  • twitwiki.zip.pdf
    33,4 KB · Aufrufe: 10

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Anwendungs-Beispiele

Wenn man sich angemeldet hat (mein Anmeldename ist hier im Beispiel 'wolf') und dann das folgende ins Eingabefenster eingibt:

Rich (BBCode):
#Auszeichnungen ?Test_verschiedener_Auszeichnungen °ddccff das ist [ b]fett[/b] und das [ i]kursiv[/i] und das [ u]unterstrichen[/u] und das durchgestrichen und das [sup]hochgestellt[/sup] und das [sub]tiefgestellt[/sub] und das [tt]dicktengleich[/tt] fett ~wolf

wird die folgende Ausgabe produziert (Avatar-Bildchen hab ich natürlich vorher angelegt gehabt).

Hee ist ja blöd, dass mein Beispiel oben nicht ganz richtig angezeigt wird (grrr); da hab ich nun Leerstellen eingesetzt bei [b [i und [u
 

Anhänge

  • twitwiki1.jpg
    twitwiki1.jpg
    15,9 KB · Aufrufe: 183
Zuletzt bearbeitet:

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
weitere Beispiele

Jeweils oben steht der Eingabetext. Dann die jeweiligen Selektions-Auswahlfelder und dann die dazugehörige Ausgabe-Liste:
 

Anhänge

  • twitwiki2.jpg
    twitwiki2.jpg
    28,7 KB · Aufrufe: 179
  • twitwiki3.jpg
    twitwiki3.jpg
    33,2 KB · Aufrufe: 179
  • twitwiki4.jpg
    twitwiki4.jpg
    38,5 KB · Aufrufe: 180
  • twitwiki5.jpg
    twitwiki5.jpg
    26,5 KB · Aufrufe: 181

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Die Memo-Ansicht ist eine Listen-Ansicht, mit der man so ziemlich alles organisieren kann: Adressen, Notizen, Archive usw. Könnte also als Rolodex verwendet werden. Die senkrechten Striche werden in dieser Ansicht zu Zeilenvorschüben, so dass es hübsch aussieht. Selbstverstädnlich könnten man den E-Mail-Eintrag auch als Link reinsetzen und noch zusetzlich einen Link auf die Web-Seite machen. Ein Beispiel mal mit einer Adresse in gefalteter und offener Ansicht:
 

Anhänge

  • twitwiki6.jpg
    twitwiki6.jpg
    23,1 KB · Aufrufe: 184
  • twitwiki7.jpg
    twitwiki7.jpg
    33,1 KB · Aufrufe: 180
Zuletzt bearbeitet:

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Die Zeile mit der SQL-Where-Klausel hab ich aus Testgründen drin gelassen, damit man beim Suchen sehen kann, wie sich der Begriff zusammensetzt. Kann man natürlich auch später mal entfernen.

Gesucht werden kann also - besser selektiert werden kann also mit den Auswahlfelder. Aber man kann auch direkt etwas in das Eingabefenster als Suchbegriff schreiben - allerdings sind die Auswahlfeld-Restriktionen trotzdem aktiv. Gesucht werden kann auch nach der ID eines Eintrag: einfach die Nummer ins Eingabefenster schreiben.

Die Verlinkungen per { ... } sind ähnlich derer eines Wikis. Man kann aber auch per BB-Tag () verlinken. Relative Links (also o...n). Das Urheberrecht bleibt bei mir ;) Itari
 
Zuletzt bearbeitet:

-007-ß

Benutzer
Mitglied seit
27. Apr 2009
Beiträge
103
Punkte für Reaktionen
0
Punkte
0
Hab alles gemacht wie beschrieben, Ordnerstruktur erstellt, datenbank auch, und die Zip-Datei entpackt und wollte dann testen. Das erscheinende war relativ wenig:
 

Anhänge

  • Nichts geht.jpg
    Nichts geht.jpg
    26,2 KB · Aufrufe: 115

-007-ß

Benutzer
Mitglied seit
27. Apr 2009
Beiträge
103
Punkte für Reaktionen
0
Punkte
0
Wo liegt hier die Lösung des Problems?
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat