~~SLIDESHOW~~ ====== MIW 2009 WIKI SYNC ====== === **Zrealizował: Sebastian Pracuch (4RI) === ===== Cel projektu ===== Celem projektu jest stworzenie pluginu do DokuWiki, który umożliwi synchronizację całego DokuWiki, wybranej przestrzeni nazw lub wybranego pliku. Zadaniem pluginu jest umożliwienie lokalnej pracy z DokuWiki, bez dostępu do internetu. Użytkownik powiniem posiadać możliwość: * pobrania DokuWiki na lokalny komputer, * edycji lokalnej kopii bez dostępu do internetu, * synchronizacji lokalnej kopii z aktualną wersją znajdującą się na serwerze. ===== Opis działania (krok 1/9) ===== Wstępne wybranie strony, która zostanie poddana synchronizacji: * przejście na wybraną stronę, * przejście do panelu administacyjnego, * wybranie pluginu odpowiedzialnego za synchronizację. ===== Opis działania (krok 2/9) ===== Sprawdzenie połączenia: * test połączenia z serwerem, * test ścieżki do DokuWiki na serwerze. ===== Opis działania (krok 3/9) ===== Wybranie przestrzeni nazw (pliku), która zostanie poddana synchronizacji: * wyświetlenie drzewa przestrzeni nazw (wstępnie wybrana strona zostaje zaznaczona), * ostateczny wybór przestrzeni nazw (strony), która zostanie zsynchronizowana. ===== Opis działania (krok 4/9) ===== Ponowne sprawdzenie połączenia: * test połączenia z serwerem, * test ścieżki do DokuWiki na serwerze. ===== Opis działania (krok 5/9) ===== Sprawdzenie, czy synchronizacja podanej ścieżki może zostać przeprowadzona. ===== Opis działania (krok 6/9) ===== Synchronizacja wybranej przestrzeni nazw (ścieżki): * wypisanie wszystkich zsynchronizowanych pomyślnie plików, * wypisanie wszystkich plików, których synchronizacja zakończyła się niepowodzeniem (wystąpiły konflikty). ===== Opis działania (krok 7/9) ===== Rozwiązanie wszystkich konfliktów (poniższe czynności są wykonywane dla każdego pliku, dla którego wystąpił konflikt): * zapisanie lokalnego pliku w REV, * zapisanie pliku znajdującego się na serwerze, jako pliku aktualnego na lokalnym komputerze, * porównanie aktualnej wersji pliku (plik z serwera) z poprzednią (plik z lokalnego komputera), * określenie w jaki sposób pliki zostaną połączone. ===== Opis działania (krok 8/9) ===== Ponowne sprawdzenie połączenia: * test połączenia z serwerem, * test ścieżki do DokuWiki na serwerze. ===== Opis działania (krok 9/9) ===== Ostateczne rozwiąznie konfliktów (poniższe czynności są wykonywane dla każdego pliku, dla którego wystąpił konflikt): * połączenie aktualnej wersji pliku z poprzednią, * przegranie pliku na serwer. ===== Ograniczenia ===== Plugin posiada następujące ograniczenia: * nie można synchronizować przestrzeni nazw (strony), która znajduje się w niezsynchronizowanej przestrzeni nazw, * synchronizowana są tylko aktualne wersje stron (katalog dokuwiki/data/pages), nie są synchronizowane żadne inne dane (rewizje, catch, itp.). ===== Instalacja lokalna (1/2) ===== Instalacja: * DokuWiki, * unisona, * expect. Przekopiowanie pluginu ''sync'' do katalogu z pluginami (''dokuwiki/lib/plugins''). Wprowadzenie danych dostępowych do serwera w pliku ''dokuwiki/lib/plugins/sync/conf/defult.php'', (użytkownik musi należeć do grupy www-data). ===== Instalacja lokalna (2/2) ===== Ustawienie grupy (www-data) oraz praw dostępu do katalogu (770), jeśli katalog nie istnieje należy go stworzyć: * ''dokuwiki/lib/plugins/sync/unison'', * ''dokuwiki/lib/plugins/sync/diff'', * ''/var/www/.ssh''. Użytkownik powinien posiadać dostęp do niektórych plików znajdujących się w powyższych katalogu. Aby mieć pewność, że użytkownik będzie posiadać wymagane prawa dostępu najlepiej usunąć zawartość katalogów (o ile istnieje). ===== Instalacja na serwerze ===== Instalacja unisona (w takiej samej wersji jak na lokalnym komputerze).