Просмотр недавно отредактированных Etherpads (обратите внимание на новый тег 'etherpad' для открытого кода etherpad!) - PullRequest
3 голосов
/ 03 апреля 2010

Рецепт: удивительный etherpad был недавно открыт. Получите это здесь: http://code.google.com/p/etherpad. Это первый вопрос, который я знаю о StackOverflow о коде etherpad. Если вы являетесь частью сообщества открытых источников etherpad, вы можете подписаться на RSS-канал для вопросов, помеченных как 'etherpad' , на случай, если это зацепит!

Мой фактический вопрос, который предполагает, что у вас установлен etherpad на вашем собственном сервере:

Во-первых, вот запрос для просмотра недавно отредактированных пэдов:

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

Или, если вы хотите запустить его из командной строки Unix:

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

Это удобно, однако lastWriteTime фактически обновляется каждый раз, когда кто-то просматривает планшет в своем браузере. Я бы предпочел отсортировать пэды по факту их последнего редактирования. Вероятно, есть причудливый SQL-запрос, включающий объединение с другой таблицей, в котором было бы показано фактическое время последнего редактирования. Кто-нибудь знает, что это? В качестве альтернативы у вас может быть скрипт, который замечает, когда изменяется headRev, но это не самый чистый способ сделать это.

1 Ответ

1 голос
/ 28 мая 2010

Я не совсем понял ответ на свой первоначальный вопрос, но я написал сценарий, который достигает чего-то подобного. Его основная цель - экспортировать текстовые версии всех моих планшетов и сохранять их на моем ноутбуке. В качестве побочного эффекта он показывает, какие пэды были изменены, и позволяет мне видеть различия с последней экспортированной версии. Он также показывает, какие из них были недавно созданы.

Сначала создайте следующий сценарий padlist.pl на сервере, на котором размещен ваш экземпляр etherpad:

#!/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;

Затем запустите следующий скрипт fetchall.pl на своем локальном компьютере. Он высосет снимки всех ваших пэдов и скажет вам, какие из них изменились, а какие появились недавно.

#!/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;
} }

Чтобы увидеть различие pad foo с момента последнего извлечения:

diff prev/foo.txt foo.txt
...