PageSourceSearch

https://rekrutacja.pedagogium.pl/pdg-irk-app/content/script/irk/pages/wiadomosci/wiadomosciController.js

js pedagogium.pl collected 2026-10-04 13:35:12 UTC 16,699 bytes, 405 lines download raw bytes

1(function() {
2    'use strict';
3
4    angular    
5        .module("irk")
6        .controller("WiadomosciController", WiadomosciController)
7
8    function WiadomosciController($scope, $http, $location, toaster, $rootScope, $timeout, $modal, i18n, SIDEBAR_MENU_EVENTS) {
9       
10        $scope.skrzynka = undefined;
11        $scope.wiersz = undefined;
12        $scope.formData = {
13            search: '',
14            trescOdpowiedzi: '',
15            checkboxPrzeczytaniaWiadomosci: false,
16            tytulNowegoWatku: '',
17            trescNowegoWatku: '',
18            odbiorcaNowegoWatku: null
19        };
20        $scope.trwaPobieranieSkrzynki = true;
21        $scope.rozwinietaOdpowiedz = false;
22        $scope.listyPlikowOdpowiedzi = [];
23        $scope.odbiorcy = [];
24        $scope.listyPlikowNowegoWatku = [];
25        $scope.idSzablonuZglaszaniaProblemu = null;
26        $scope.naglowekWiadomosci = 'Tworzenie nowej wiadomości';
27
28        //zapamiętanie parametrów widoku wątków, w celu ustawienia ich przy powrocie 
29        var searchWidokuWatkow = null;
30        var offsetWidokuWatkow = null;
31        
32        var ustawParametryWidokuWatkow = function() {
33            if($scope.skrzynka.typWierszy == 'WATEK') { 
34                searchWidokuWatkow = $scope.formData.search;
35                offsetWidokuWatkow = $scope.skrzynka.offsetWyswietlanychWierszy;
36            }
37        }
38        
39        var rozwinNajnowszyWierszWidokuWiadomosci = function() {
40            if($scope.skrzynka.typWierszy != 'WIADOMOSC') {
41                return;
42            }
43            for(var i = 0; i < $scope.skrzynka.grupyWierszy.length; ++i) {
44                var grupa = $scope.skrzynka.grupyWierszy[i];
45                if(grupa.wiersze.length > 0) {
46                    grupa.wiersze[0].rozwiniety = true;
47                    return;
48                }
49            }
50        }
51        
52        var oznaczWiadomosciPrzeczytaneWidokuWiadomosci = function() {
53            if($scope.mozeDzialacNaWiadomosciach()) {
54                modyfikujDzialanieNaWszystkichWiadomosciach('WYSWIETLENIE', true, function() {
55                    $rootScope.$broadcast(SIDEBAR_MENU_EVENTS.zmianaLiczbyNieprzeczytanychWiadomosci);
56                });
57                modyfikujDzialanieNaWszystkichWiadomosciach('NOTYFIKACJA', true, function() {
58                    // celowo puste
59                });
60            }
61        }
62        
63        var getIdWiadomosci = function(wierszFilter) {
64            var idWiadomosciList = [];
65            angular.forEach($scope.skrzynka.grupyWierszy, function(grupa) {
66                angular.forEach(grupa.wiersze, function(wiersz) {
67                    if(wierszFilter(wiersz)) {
68                        angular.forEach(wiersz.idWszystkichWiadomosci, function(idWiadomosci) {
69                            idWiadomosciList.push(idWiadomosci);
70                        });
71                    }
72                });
73            });
74            return idWiadomosciList;
75        }
76        
77        var modyfikujDzialanieNaWiadomosciach = function(rodzajDzialania, wykonane, wierszFilter, callback) {
78            var idWiadomosci = getIdWiadomosci(wierszFilter);
79            return $http.post('REST/wiadomosci/modyfikujDzialanieNaWiadomosciach',
80                {
81                    idWiadomosci: idWiadomosci,
82                    rodzajDzialania: rodzajDzialania,
83                    wykonane: wykonane
84                }).then(callback);
85        }
86
87        var modyfikujDzialanieNaWszystkichWiadomosciach = function(rodzajDzialania, wykonane, callback) {
88            var zawszePrawdziwyFilter = function(wiersz) {
89                return true;
90            }
91            modyfikujDzialanieNaWiadomosciach(rodzajDzialania, wykonane, zawszePrawdziwyFilter, callback);
92        }
93        
94        var popToasterI18n = function(i18nKey, type) {
95            i18n.get(i18nKey).then(function(komunikat) {
96                toaster.pop(type, komunikat);
97            });
98        }
99        
100        var wynikWysylaniaWiadomosciI18nKeyMap = {
101            "WYSLANO": 'skrzynkaodbiorcza.Result.Wyslano',
102            "BLAD_PUSTA_TRESC": 'skrzynkaodbiorcza.Result.PustaTresc',
103            "BLAD_ZAKAZ_DODAWANIA_PLIKOW": 'skrzynkaodbiorcza.Result.ZakazDodawaniaPlikow',
104            "BLAD_NIEDOZWOLONY_ODBIORCA": 'skrzynkaodbiorcza.Result.NiedozwolonyOdbiorca',
105            "BLAD_NIEZNANY": 'skrzynkaodbiorcza.Result.NieznanyBladWysylania'
106        }
107        
108        $scope.canGoBack = function() {
109            return $scope.skrzynka.typWierszy != 'WATEK';
110        }
111        
112        $scope.showPagination = function() {
113            return $scope.showLeftPagination() || $scope.showRightPagination();
114        }
115        
116        $scope.showLeftPagination = function() {
117            return $scope.firstRow() > 1;
118        }
119        
120        $scope.showRightPagination = function() {
121            return $scope.lastRow() < $scope.skrzynka.liczbaWszystkichWierszy;
122        }
123        
124        $scope.firstRow = function() {
125            return $scope.skrzynka.offsetWyswietlanychWierszy + 1;
126        }
127        
128        $scope.lastRow = function() {
129            return $scope.skrzynka.offsetWyswietlanychWierszy + $scope.skrzynka.liczbaWyswietlanychWierszy;
130        }
131        
132        $scope.pobierzFormularzTworzeniaWatku = function() {
133            var httpParams = {
134                url: 'REST/wiadomosci/formularzInicjowania',
135                method: 'GET',
136                params: {}
137            }
138            var then = function(result) {
139                $scope.odbiorcy = result.data.odbiorcy;
140                $scope.listyPlikowNowegoWatku  = result.data.listyPlikow;
141                $scope.formData.tytulNowegoWatku = '';
142                $scope.formData.trescNowegoWatku = '';
143                $scope.formData.odbiorcaNowegoWatku = null;
144                $scope.pobierzIdSzablonuZglaszaniaProblemu();
145            }
146            return $http(httpParams).then(then);
147        }
148        
149        $scope.pobierzIdSzablonuZglaszaniaProblemu = function() {
150            var httpParams = {
151                url: 'REST/wiadomosci/idSzablonuZglaszaniaProblemu',
152                method: 'GET',
153                params: {}
154            }
155            var then = function(result) {
156                $scope.idSzablonuZglaszaniaProblemu = result.data;
157                zglosProblem();
158            }
159            return $http(httpParams).then(then);
160        }
161        
162        var zglosProblem = function() {
163            var path = $location.path();
164            if(path.includes("/Wiadomosci/Zglos") && $scope.idSzablonuZglaszaniaProblemu)
165            {
166                i18n.get("skrzynkaodbiorcza.TworzenieZgloszenia").then(function(tlumaczenie) {
167                    $scope.pokazDialogTworzeniaWatkuZglaszaniaProblemu(tlumaczenie);
168                });
169            }
170        }
171        
172        $scope.ustawNowaSkrzynke = function(idWatku, idSkrzynkiUczestnika, search, offset) {
173            $scope.trwaPobieranieSkrzynki = true;
174            var getParams = {
175                idWatku: idWatku,
176                idSkrzynkiUczestnika: idSkrzynkiUczestnika,
177                search: search,
178                offset: offset
179            }
180            var httpParams = {
181                url: 'REST/wiadomosci/skrzynka',
182                method: 'GET',
183                params: getParams
184            }
185            var then = function(result) {
186                var wrapper = result.data;
187                
188                $scope.trwaPobieranieSkrzynki = false;
189                $scope.skrzynka = wrapper.skrzynka;
190                $scope.listyPlikowOdpowiedzi = wrapper.listyPlikow;
191                $scope.formData.search = search;
192                $scope.formData.trescOdpowiedzi = '';
193                $scope.rozwinietaOdpowiedz = false;
194                oznaczWiadomosciPrzeczytaneWidokuWiadomosci();
195                rozwinNajnowszyWierszWidokuWiadomosci();
196                ustawParametryWidokuWatkow();
197            }
198            return $http(httpParams).then(then);
199        }
200        
201        $scope.niepustaGrupaFilter = function(grupa) {
202            return !grupa.pusta;
203        }
204        
205        $scope.zaznaczWiersze = function(grupa) {
206            for(var i = 0; i < grupa.wiersze.length; ++i) {
207                grupa.wiersze[i].zaznaczony = grupa.zaznaczona;
208            }
209        }
210
211        $scope.kliknietoNaglowek = function(wiersz) {
212            if(wiersz.typWiersza == 'WIADOMOSC') {
213                wiersz.rozwiniety = true;
214                $scope.wiersz = wiersz;
215            }
216            else if(wiersz.typWiersza == 'WATEK') {
217                $scope.ustawNowaSkrzynke(wiersz.idWatku, null, $scope.formData.search, null);
218                $scope.wiersz = wiersz;
219            }
220            else if(wiersz.typWiersza == 'KONWERSACJA') {
221                $scope.ustawNowaSkrzynke(wiersz.idWatku, wiersz.idSkrzynkiUczestnika, $scope.formData.search, null);
222                $scope.wiersz = wiersz;
223            }
224        }
225        
226        $scope.kliknietoZawartosc = function(wiersz) {
227            wiersz.rozwiniety = false;
228        }
229        
230        $scope.goBack = function() {
231            $scope.ustawNowaSkrzynke(null, null, searchWidokuWatkow, offsetWidokuWatkow);
232        }
233        
234        $scope.goLeftPage = function() {
235            var offset = $scope.skrzynka.offsetWyswietlanychWierszy - $scope.skrzynka.limitWierszyNaStrone;
236            $scope.ustawNowaSkrzynke($scope.skrzynka.idWatku, $scope.skrzynka.idSkrzynkiUczestnika, $scope.formData.search, offset);
237        }
238        
239        $scope.goRightPage = function() {
240            var offset = $scope.skrzynka.offsetWyswietlanychWierszy + $scope.skrzynka.limitWierszyNaStrone;
241            $scope.ustawNowaSkrzynke($scope.skrzynka.idWatku, $scope.skrzynka.idSkrzynkiUczestnika, $scope.formData.search, offset);
242        }
243        
244        $scope.szukaj = function() {
245            $scope.ustawNowaSkrzynke($scope.skrzynka.idWatku, $scope.skrzynka.idSkrzynkiUczestnika, $scope.formData.search, null);
246        }
247        
248        $scope.searchInputKeyUp = function(event) {
249            if(event.which == 13) {
250                $scope.szukaj();
251            } 
252        }
253        
254        $scope.mozeOdpowiedziec = function() {
255            return $scope.skrzynka
256                && $scope.skrzynka.mozliwoscOdpowiedzi;
257        }
258        
259        $scope.pokazOdpowiedz = function() {
260            $scope.rozwinietaOdpowiedz = true;
261        }
262        
263        $scope.zamknijOdpowiedz = function() {
264            $scope.rozwinietaOdpowiedz = false;
265        }
266
267        $scope.wyslijOdpowiedz = function() {
268            var updateDto = {
269                idWatku: $scope.skrzynka.idWatku,
270                idSkrzynkiUczestnika: $scope.skrzynka.idSkrzynkiUczestnika,
271                tresc: $scope.formData.trescOdpowiedzi,
272                listyPlikow: getListaPlikowRestDtoList($scope.listyPlikowOdpowiedzi)
273            };
274            $http.post('REST/wiadomosci/odpowiedz', updateDto).then(function(result) {
275                var wynik = result.data;
276                var sukces = wynik == 'WYSLANO';
277                var type = sukces ? 'success' : 'error';
278                var i18nKey = wynikWysylaniaWiadomosciI18nKeyMap[wynik];
279                if(!i18nKey) {
280                    i18nKey = 'skrzynkaodbiorcza.Result.NieznanyBladWysylania';
281                }
282                popToasterI18n(i18nKey, type);
283                if(sukces) {
284                    $scope.ustawNowaSkrzynke($scope.skrzynka.idWatku, $scope.skrzynka.idSkrzynkiUczestnika, null, $scope.skrzynka.liczbaWszystkichWierszy);
285                }
286            });
287        }
288
289        var getListaPlikowRestDtoList = function(listyPlikowInput) {
290            var listyPlikowRestDto = [];
291            for (var i = 0; i < listyPlikowInput.length; ++i) {
292                var listaPlikow = listyPlikowInput[i];
293                listyPlikowRestDto.push({
294                    idZestawu: listaPlikow.idZestawu,
295                    nrReguly: listaPlikow.nrReguly,
296                    pliki : listaPlikow.pliki
297                });
298            }
299            return listyPlikowRestDto;
300        };
301
302        $scope.mozeDzialacNaWiadomosciach = function() {
303            return $scope.skrzynka.typWierszy == 'WIADOMOSC';
304        }
305        
306        $scope.mozeDzialacNaWatkachLubKonwersacjach = function() {
307            var typWierszy = $scope.skrzynka.typWierszy;
308            return typWierszy == 'WATEK' || typWierszy == 'KONWERSACJA';
309        }
310
311        $scope.oznaczJakoNieprzeczytane = function() {
312            if($scope.mozeDzialacNaWiadomosciach()) {
313                modyfikujDzialanieNaWszystkichWiadomosciach('WYSWIETLENIE', false, function() {
314                    $rootScope.$broadcast(SIDEBAR_MENU_EVENTS.zmianaLiczbyNieprzeczytanychWiadomosci);
315                    popToasterI18n('skrzynkaodbiorcza.Dzialania.OznaczJakoNieprzeczytaneSukces', 'success');
316                    $scope.goBack();
317                });
318            }
319        }
320        
321        $scope.oznaczZaznaczoneJakoPrzeczytane = function() {
322            var callback = function() {
323                $rootScope.$broadcast(SIDEBAR_MENU_EVENTS.zmianaLiczbyNieprzeczytanychWiadomosci);
324                popToasterI18n('skrzynkaodbiorcza.Dzialania.OznaczJakoPrzeczytaneSukces', 'success');
325                $scope.ustawNowaSkrzynke(null, null, null, null);
326            };
327            var zaznaczonyWierszFilter = function(wiersz) {
328                return wiersz.zaznaczony;
329            }
330            modyfikujDzialanieNaWiadomosciach('WYSWIETLENIE', true,  zaznaczonyWierszFilter, callback);
331        }
332        
333        $scope.potwierdzPrzeczytanie = function() {
334            modyfikujDzialanieNaWszystkichWiadomosciach('POTWIERDZENIE', true, function() {
335                $scope.skrzynka.mozliwoscPotwierdzania = false;
336                $scope.kliknietoNaglowek($scope.wiersz);
337                popToasterI18n('skrzynkaodbiorcza.Dzialania.PotwierdzPrzeczytanieSukces', 'success');
338            });
339        }
340        
341        $scope.pokazDialogTworzeniaWatkuZglaszaniaProblemu = function(naglowekWiadomosci) {
342            $scope.pokazDialogTworzeniaWatku($scope.idSzablonuZglaszaniaProblemu, naglowekWiadomosci);
343        }
344        
345        $scope.pokazDialogTworzeniaWatku = function(idSzablonu, naglowekWiadomosci) {
346            if($scope.odbiorcy.length == 1) {
347                $scope.formData.odbiorcaNowegoWatku = $scope.odbiorcy[0]
348            }
349            $scope.naglowekWiadomosci = naglowekWiadomosci;
350            $modal.open({
351                animation: true,
352                templateUrl: 'utworzWatekDialog.html',
353                scope: $scope
354            }).result.finally(function(){
355                $location.url('/Wiadomosci');
356            }).then(function(){
357                inicjujWatek(idSzablonu);
358            });
359        }
360        
361        var inicjujWatek = function(idSzablonu) {
362            var updateDto = {
363                idSkrzynkiOdbiorcy: $scope.formData.odbiorcaNowegoWatku.idSkrzynki,
364                idSzablonu: idSzablonu,
365                tytul: $scope.formData.tytulNowegoWatku,
366                tresc: $scope.formData.trescNowegoWatku,
367                listyPlikow: getListaPlikowRestDtoList($scope.listyPlikowNowegoWatku)
368            };
369            $http.post('REST/wiadomosci/inicjuj', updateDto).then(function(result) {
370                var wynik = result.data;
371                var sukces = wynik == 'WYSLANO';
372                var type = sukces ? 'success' : 'error';
373                var i18nKey = wynikWysylaniaWiadomosciI18nKeyMap[wynik];
374                if(!i18nKey) {
375                    i18nKey = 'skrzynkaodbiorcza.Result.NieznanyBladWysylania';
376                }
377                popToasterI18n(i18nKey, type);
378                if(sukces) {
379                    $scope.ustawNowaSkrzynke(null, null, null, null);
380                    $scope.pobierzFormularzTworzeniaWatku();
381                }
382            });
383        }
384        
385        $scope.isBlokadaWyslijNowaWiadomosc = function() {
386            return !$scope.formData.tytulNowegoWatku
387                || !$scope.formData.trescNowegoWatku
388                || !$scope.formData.odbiorcaNowegoWatku;
389        }
390        
391        $scope.getUrl = function(downloadBaseLink, plik) {
392            if(plik.url) {
393                return plik.url;
394            }
395            return downloadBaseLink 
396                + "?idwiadomosci=" + plik.idWiadomosci 
397                + "&nrregulyuploadu=" + plik.nrRegulyUploadu
398                + "&nrelementulistyplikow=" + plik.nrElementuListyPlikow;
399        }
400        
401        $scope.ustawNowaSkrzynke(null, null, null, null);
402        $scope.pobierzFormularzTworzeniaWatku();
403        
404    }
405})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.