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.