Fixed tests to reflect changes in API.
[redakcja.git] / redakcja / static / js / wiki / loader.js
1 if (!window.console) {
2     window.console = {
3         log: function(){
4         }
5     }
6 }
7
8 var DEFAULT_PERSPECTIVE = "#SummaryPerspective";
9
10 THEMES = [
11         'Alkohol', 'Ambicja', 'Anioł', 'Antysemityzm', 'Arkadia', 'Artysta', 'Bezdomność', 'Bezpieczeństwo', 'Bieda', 'Bijatyka', 'Błazen', 'Błądzenie', 'Błoto', 'Bogactwo', 'Bóg', 'Brat', 'Bunt', 'Buntownik', 'Burza', 'Car', 'Carpe diem', 'Ciemność', 'Cień', 'Cisza', 'Chciwość', 'Chleb', 'Chłop', 'Choroba', 'Chrystus', 'Chrzest', 'Ciało', 'Cierpienie', 'Cmentarz', 'Cnota', 'Córka', 'Cud', 'Czarownika', 'Czary', 'Czas', 'Czyn', 'Czyściec', 'Dama', 'Danse macabre', 'Deszcz', 'Diabeł', 'Dobro', 'Dom', 'Dorosłość', 'Drzewo', 'Duch', 'Dusza', 'Duma', 'Dworek', 'Dworzanin', 'Dwór', 'Dzieciństwo', 'Dziecko', 'Dziedzictwo', 'Dziewictwo', 'Dźwięk', 'Egzorcyzm', 'Elita', 'Emigrant', 'Fałsz', 'Filozof', 'Fircyk', 'Flirt', 'Głupiec', 'Głupota', 'Głód', 'Gospodarz', 'Gospodyni', 'Gość', 'Gotycyzm', 'Góra', 'Gra', 'Grób', 'Grzech', 'Grzeczność', 'Gwiazda', 'Handel', 'Hańba', 'Historia', 'Honor', 'Idealista', 'Imię', 'Interes', 'Jabłka', 'Jedzenie', 'Jesień', 'Kaleka', 'Kara', 'Karczma', 'Klęska', 'Kłamstwo', 'Kłótnia', 'Kobieta', 'Kobieta demoniczna', 'Kobieta "upadła"', 'Kochanek', 'Kochanek romantyczny', 'Kolonializm', 'Kondycja ludzka', 'Konflikt', 'Konflikt wewnętrzny', 'Koniec świata', 'Koń', 'Korzyść', 'Kot', 'Kradzież', 'Krew', 'Król', 'Krzywda', 'Ksiądz', 'Książka', 'Księżyc', 'Kuchnia', 'Kuszenie', 'Kwiaty', 'Labirynt', 'Las', 'Lato', 'Lekarz', 'Lenistwo', 'List', 'Liberat', 'Los', 'Lud', 'Lustro', 'Łzy', 'Małżeństwo', 'Marzenie', 'Maska', 'Maszyna', 'Matka', 'Matka Boska', 'Mądrość', 'Mąż', 'Melancholia', 'Mędrzec', 'Mężczyzna', 'Miasto', 'Mieszczanin', 'Miłosierdzie', 'Miłość', 'Miłość niespełniona', 'Miłość platoniczna', 'Miłość romantyczna', 'Miłość silniejsza niż śmierć', 'Miłość spełniona', 'Miłość tragiczna', 'Mizoginia', 'Młodość', 'Moda', 'Modlitwa', 'Morderstwo', 'Morze', 'Motyl', 'Mucha', 'Muzyka', 'Narodziny', 'Naród', 'Natura', 'Nauczyciel', 'Nauczycielka', 'Nauka', 'Niebezpieczeństwo', 'Niedziela', 'Niemiec', 'Nienawiść', 'Nieśmiertelność', 'Niewola', 'Noc', 'Nuda', 'Obcy', 'Obłok', 'Obowiązek', 'Obraz świata', 'Obrzędy', 'Obyczaje', 'Obywatel', 'Odrodzenie przez grób', 'Odwaga', 'Ofiara', 'Ogień', 'Ogród', 'Ojciec', 'Ojczyzna', 'Oko', 'Okręt', 'Okrucieństwo', 'Omen', 'Opieka', 'Organizm', 'Otchłań', 'Pająk', 'Pamięć', 'Pan', 'Panna młoda', 'Państwo', 'Patriota', 'Piekło', 'Pielgrzym', 'Pieniądz', 'Pies', 'Piętno', 'Pijaństwo', 'Piwnica', 'Plotka', 'Pobożność', 'Pocałunek', 'Pochlebstwo', 'Poeta', 'Poetka', 'Poezja', 'Podróż', 'Podstęp', 'Pogrzeb', 'Pojedynek', 'Pokora', 'Pokusa', 'Polak', 'Polityka', 'Polowanie', 'Polska', 'Portret', 'Porwanie', 'Poświęcenie', 'Potwór', 'Powstanie', 'Powstaniec', 'Pozory', 'Pozycja społeczna', 'Pożar', 'Pożądanie', 'Praca', 'Praca u podstaw', 'Praca organiczna', 'Prawda', 'Prawnik', 'Prometeusz', 'Proroctwo', 'Prorok', 'Próżność', 'Przebranie', 'Przeczucie', 'Przedmurze chrześcijaństwa', 'Przekleństwo', 'Przekupstwo', 'Przemiana', 'Przemijanie', 'Przemoc', 'Przestrzeń', 'Przyjaźń', 'Przyroda nieożywiona', 'Przysięga', 'Przywódca', 'Ptak', 'Pustynia', 'Pycha', 'Raj', 'Realista', 'Religia', 'Rewolucja', 'Robak', 'Robotnik', 'Rodzina', 'Rosja', 'Rosjanin', 'Rośliny', 'Rozczarowanie', 'Rozpacz', 'Rozstanie', 'Rozum', 'Ruiny', 'Rycerz', 'Rzeka', 'Salon', 'Samobójstwo', 'Samolubstwo', 'Samotnik', 'Samotność', 'Sarmata', 'Sąsiad', 'Sąd', 'Sąd Ostateczny', 'Sen', 'Serce', 'Sędzia', 'Sielanka', 'Sierota', 'Siła', 'Siostra', 'Sława', 'Słońce', 'Słowo', 'Sługa', 'Służalczość', 'Skąpiec', 'Sobowtór', 'Społecznik', 'Spowiedź', 'Sprawiedliwość', 'Starość', 'Strach', 'Strój', 'Stworzenie', 'Sumienie', 'Swaty', 'Syberia', 'Syn', 'Syn marnotrawny', 'Syzyf', 'Szaleniec', 'Szaleństwo', 'Szantaż', 'Szatan', 'Szczęście', 'Szkoła', 'Szlachcic', 'Szpieg', 'Sztuka', 'Ślub', 'Śmiech', 'Śmierć', 'Śmierć bohaterska', 'Śpiew', 'Światło', 'Świętoszek', 'Święty', 'Świt', 'Tajemnica', 'Taniec', 'Tchórzostwo', 'Teatr', 'Testament', 'Tęsknota', 'Theatrum mundi', 'Tłum', 'Trucizna', 'Trup', 'Twórczość', 'Uczeń', 'Uczta', 'Uroda', 'Umiarkowanie', 'Upadek', 'Upiór', 'Urzędnik', 'Vanitas', 'Walka', 'Walka klas', 'Wampir', 'Warszawa', 'Wąż', 'Wdowa', 'Wdowiec', 'Wesele', 'Wiatr', 'Wierność', 'Wierzenia', 'Wieś', 'Wiedza', 'Wieża Babel', 'Więzienie', 'Więzień', 'Wina', 'Wino', 'Wiosna', 'Wizja', 'Władza', 'Własność', 'Woda', 'Wojna', 'Wojna pokoleń', 'Wolność', 'Wróg', 'Wspomnienia', 'Współpraca', 'Wygnanie', 'Wyrzuty sumienia', 'Wyspa', 'Wzrok', 'Zabawa', 'Zabobony', 'Zamek', 'Zaręczyny', 'Zaświaty', 'Zazdrość', 'Zbawienie', 'Zbrodnia', 'Zbrodniarz', 'Zdrada', 'Zdrowie', 'Zemsta', 'Zesłaniec', 'Ziarno', 'Ziemia', 'Zima', 'Zło', 'Złodziej', 'Złoty wiek', 'Zmartwychwstanie', 'Zwątpienie', 'Zwierzęta', 'Zwycięstwo', 'Żałoba', 'Żebrak', 'Żołnierz', 'Żona', 'Życie jako wędrówka', 'Życie snem', 'Żyd', 'Żywioły', 'Oświadczyny'
12 ];
13
14 $(function()
15 {
16         var tabs = $('ol#tabs li');
17         var gallery = null;
18         CurrentDocument = new $.wikiapi.WikiDocument("document-meta");
19
20         $.blockUI.defaults.baseZ = 10000;
21
22     function initialize()
23         {
24                 gallery = new $.wiki.ScanGalleryPerspective({
25                         doc: CurrentDocument, id: "ScanGalleryPerspective"
26                 });
27
28                 $(document).keydown(function(event) {
29                         console.log("Received key:", event);
30                 });
31
32                 /* The save button */
33         $('#save-button').click(function(event){
34             event.preventDefault();
35                         $.wiki.showDialog('#save_dialog');
36         });
37
38                 $('.editor').hide();
39
40                 /*
41                  * TABS
42                  */
43         $('#tabs li').live('click', function(event, callback) {
44                         $.wiki.switchToTab(this);
45         });
46
47                 $('#tabs li > .tabclose').live('click', function(event, callback) {
48                         var $tab = $(this).parent();
49
50                         if($tab.is('.active'))
51                                 $.wiki.switchToTab(DEFAULT_PERSPECTIVE);
52
53                         var p = $.wiki.perspectiveForTab($tab);
54                         p.destroy();
55
56                         return false;
57         });
58
59
60         $(window).resize(function(){
61             $('iframe').height($(window).height() - $('#tabs').outerHeight() - $('#source-editor .toolbar').outerHeight());
62         });
63
64         $(window).resize();
65
66         $('.vsplitbar').toggle(
67                         function() {
68                                 $.wiki.state.perspectives.ScanGalleryPerspective.show = true;
69                                 $('#side-gallery').show();
70                                 $('.vsplitbar').css('right', 480).addClass('.active');
71                                 $('#editor .editor').css('right', 510);
72                                 $(window).resize();
73                                 gallery.onEnter();
74                         },
75                         function() {
76                                 $.wiki.state.perspectives.ScanGalleryPerspective.show = false;
77                                 $('#side-gallery').hide();
78                                 $('.vsplitbar').css('right', 0).removeClass('active');
79                                 $('#editor .editor').css('right', 30);
80                                 $(window).resize();
81                                 gallery.onExit();
82                         }
83                 );
84
85                 if($.wiki.state.perspectives.ScanGalleryPerspective.show)
86                         $('.vsplitbar').trigger('click');
87
88         window.onbeforeunload = function(e) {
89             if($.wiki.isDirty()) {
90                                 e.returnValue = "Na stronie mogą być nie zapisane zmiany.";
91                                 return "Na stronie mogą być nie zapisane zmiany.";
92                         };
93         };
94
95                 console.log("Fetching document's text");
96
97                 $(document).bind('wlapi_document_changed', function(event, doc) {
98                         try {
99                                 $('#document-revision').text(doc.revision);
100                         } catch(e) {
101                                 console.log("Failed handler", e);
102                         }
103                 });
104
105                 CurrentDocument.fetch({
106                         success: function(){
107                                 console.log("Fetch success");
108                                 $('#loading-overlay').fadeOut();
109                                 var active_tab = document.location.hash || DEFAULT_PERSPECTIVE;
110
111                                 if(active_tab == "#ScanGalleryPerspective")
112                                         active_tab = DEFAULT_PERSPECTIVE;
113
114                                 console.log("Initial tab is:", active_tab)
115                                 $.wiki.switchToTab(active_tab);
116                         },
117                         failure: function() {
118                                 $('#loading-overlay').fadeOut();
119                                 alert("FAILURE");
120                         }
121                 });
122     }; /* end of initialize() */
123
124
125         /* Load configuration */
126         $.wiki.loadConfig();
127
128         var initAll = function(a, f) {
129                 if (a.length == 0) return f();
130
131                 $.wiki.initTab({
132                         tab: a.pop(),
133                         doc: CurrentDocument,
134                         callback: function(){
135                                 initAll(a, f);
136                         }
137                 });
138         };
139
140
141         /*
142          * Initialize all perspectives
143          */
144         initAll( $.makeArray($('ol#tabs li')), initialize);
145         console.log(location.hash);
146 });