Anzeigen von zuletzt bearbeiteten etherpads (man beachte, neuen 'Etherpad' Tag für Open Source Etherpad Code!)

StackOverflow https://stackoverflow.com/questions/2569194

Frage

Prescript: The amazing Etherpad vor kurzem bezogen offen war. Holen Sie sich hier: http://code.google.com/p/etherpad . Dies ist die erste Frage, die ich von Stackoverflow über den Etherpad Code kennen. Wenn Sie Teil der Etherpad Open-Source-Community, können Sie abonnieren möchten Tagged ‚Etherpad‘ auf den Fall der Fälle diese Fänge!

Meine eigentliche Frage, die Sie geht davon haben Etherpad auf Ihrem eigenen Server installiert ist:

Als erstes ist hier eine Abfrage zuletzt bearbeiteten Pads zu lesen:

SELECT id,lastWriteTime,creationTime,headRev 
  FROM PAD_SQLMETA ORDER BY lastWriteTime, headRev;

Oder, wenn Sie wollen, dass es von einem Unix-Prompt ausführen:

mysql -u root -pPASSWD etherpad -e "select id,lastWriteTime,creationTime,headRev 
  from PAD_SQLMETA order by lastWriteTime, headRev"

Das ist praktisch, aber lastWriteTime tatsächlich jedes Mal, wenn jemand aktualisiert wird so viel wie Ansichten, die ein Pad in ihrem Browser. Ich würde eher sortieren die Pads durch, wenn sie tatsächlich zuletzt bearbeitet wurden. Es ist wahrscheinlich eine Phantasie SQL Abfrage mit einem mit einer anderen Tabelle, dass die tatsächliche zuletzt Zeit zeigen würde. Weiß jemand, was das ist? Alternativ können Sie ein Skript, das bemerkt, wenn headRev ändert, aber das scheint nicht, wie der sauberste Weg, es zu tun.

War es hilfreich?

Lösung

Ich habe nicht ganz aus der Antwort auf meine ursprüngliche Frage dachte, aber ich schrieb ein Skript, das etwas Ähnliches erreicht. Es ist Hauptzweck ist, Klartext-Versionen aller meiner Pads und speichern sie auf meinem Laptop zu exportieren. Als Nebeneffekt zeigt es mir, welche Pads geändert haben und läßt mich ein Diff seit der letzten exportierte Version zu sehen. Es zeigt auch, welche sind neu erstellt wurden.

Erstellen Sie zunächst den folgende Skript, padlist.pl, auf dem Server, dass Hosts Ihr Etherpad Beispiel:

#!/usr/bin/env perl

$list = `mysql -u root -pPASSWD etherpad -e 
         "select id from PAD_SQLMETA order by lastWriteTime DESC, headRev DESC"`;

$list =~ s/^id\s*\n//s;  # get rid of the column header mysql adds.
print $list;

Führen Sie dann das folgende Skript, fetchall.pl, auf dem lokalen Computer. Es wird Schnappschüsse aller Ihre Pads saugen nach unten und sagen Ihnen, welche davon verändert haben und welche neu erschienen.

#!/usr/bin/env perl

use LWP::Simple qw(get);
$| = 1;  # autoflush.
$server = "server.com"; # the server that hosts your etherpad instance.

$pads = `ssh $server etherpad/padlist.pl`;
@padlist = split(/\s+/, $pads);

$neednewline = 0; # printing "." for each pad where nothing to be done.
for(@padlist) {
  $ep = $_;
  $localfile = "$ep.txt";
  if(-e $localfile) { 
    $localexists = 1; 
    $localcontent = do {local (@ARGV,$/) = $localfile; <>};
  } else { $localexists = 0; }
  $livecontent = get("http://$server/ep/pad/export/$ep/latest?format=txt");
  if($livecontent ne $localcontent) {
    if($neednewline) { print "\n";  $neednewline = 0; }
    if($localexists) { 
      print "CHANGED: $ep\n"; 
      open(F, ">prev/$localfile") or die "Probably need to create 'prev' dir.";
      print F $localcontent;
      close(F);
    } else { print "NEW:     $ep\n"; }
    open(F, ">$localfile") or die;
    print F $livecontent;
    close(F);
  } else {
    print ".";
    $neednewline = 1;
} }

Um eine diff von Pad foo seit dem letzten Mal sehe ich es geholt:

diff prev/foo.txt foo.txt
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top