ab9f2fbe
Schwirg László
Add project files.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
|
# Vrh.Web.Common.Lib
Általános célú ASP.NET MVC fejlesztéssel kapcsolatos
és fordításra kerülő összetevők gyűjteménye.
> Fejlesztve és tesztelve **4.5** .NET framework alatt.
> Teljes funkcionalitás és hatékonyság kihasználásához szükséges legalacsonyabb framework verzió: **4.5**
> #TODO: Véglegesítendő a komponens dokumentációja!!!
## Főbb összetevők
* **[BaseController osztály](##BaseController-osztaly)**: MVC-s kontroller alaposztály, hasznos és nélkülözhetetlen szolgáltatásokkal.
> * [ParameterSeparating metódus](###ParameterSeparating-metodus): MVC-s akciók Request.QueryString-jének szétválasztása a kért és egyéb paraméterekre.
* **CookieWebClient**: MVC-s WebClient osztály kiterjesztése, mely a Cookie-kat is kezeli.
* **[WebCommon](##WebCommon-osztaly)**: Egy statikus osztály hasznos segédeszközökkel.
* **[DataTables támogatás](##DataTables-tamogatas)**: DataTables-et támogató osztályok, eszközök.
* **[Redis támogatás](##Redis-tamogatas)**: Redis műveleteket támogató eszközök. Egyelőre csak a RedisConnection osztály.
***
## BaseController osztály
MVC-s alkalmázokhoz használható kontroller alaposztály, hasznos és nélkülözhetetlen szolgáltatásokkal. Főbb szolgáltatások:
- Dispose megvalósítása
- DataTable-hez kapcsolódó hasznos szolgáltatások
- ThrEx: Egy nyelvi fordítóval kiegészített ApplicationException-t dobó metódus.
- Mlmgt: MultiLanguageManager.GetTranslation meghívása a ForcedLanguageCode nyelvi kóddal.
Használati minta:
```javascript
public class XXXXController : BaseController
```
Ahol XXXX az általunk készítendő controller neve.
### Állandók
Alábbi értékek eléréséhez egy minta az általunk készített kontrollerben:
```MODELSTATE``` vagy ```BaseController.MODELSTATE```.
Állandó|Típus|Érték|Leírás
:----|:----|:----
MODELSTATE|```string```|ModelState|A TempData szótár ModelState kulcsának megnevezése.
### Tulajdonságok
Név|Hatáskör|Leírás
:----|:----
BaseFolder|```protected```|Az alkalmazás alap mappája, ez alatt van az App_Data mappa. A HttpContext.Server.MapPath("~") hívás értéke.
BaseDateFormat|```public```|A megjelenítéskor és szűréskor használatos dátum formátum. Alapértelmezett értéke: Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern
ForcedLanguageCode|```protected```|A ThrEx és az Mlmgt protected metódusok ezzel az értékkel hívják a MultiLanguageManager.GetTranslation-t, azért hogy az ne kérdezze le állandóan a RelevantLanguageCode-t. A BaseController példányosítása során az alapértelmezett értéke: MultiLanguageManager.RelevantLanguageCode. Ha ettől eltérő nyelvet szeretnénk használni, akkor a példányosítás után át kell állítani.
RequestedParameters|```protected```|Azoknak a paramétereknek a gyűjteménye, melyeket megjelöltünk a példányosításkor. Ha nem jelölünk meg ilyen paramétert vagy üres az átadott típus, akkor NULL marad. Értékét a [ParameterSeparating metódus](###ParameterSeparating-metodus) álltja be.
OtherParameters|```protected```|Azoknak a paramétereknek a gyűjteménye, melyeket nem jelöltünk meg a példányosításkor. Ha nincs feldolgozandó gyűjtemény vagy üres, akkor NULL marad. Értékét a [ParameterSeparating metódus](###ParameterSeparating-metodus) álltja be.
### ParameterSeparating metódus
Az MVC-s akciók Request.QueryString és Request.Form tulajdonségénak szétválasztása a kért (elvárt) és egyéb paraméterekre.
A megadott tulajdonságokban szereplő paramétereket két részre osztja. Egy RequestedParameters és egy
OtherParameters szótárra. Hogy mi kerüljön a RequestedParameters szótárba azt egy statikus
osztályban kell beállítani, melynek segítségével aztán hivatkozhatunk a szótár elemeire.
Az összes túlterhelés:
```javascript
void ParameterSeparating(Type requestedParametersType, bool isAddUserName = true, bool ignoreCase = true)
void ParameterSeparating(SeparatingSource source, Type requestedParametersType, bool isAddUserName = true, bool ignoreCase = true)
void ParameterSeparating(NameValueCollection collection, Type requestedParametersType, bool isAddUserName = true, bool ignoreCase = true)
void ParameterSeparating(string[][] paramlist, Type requestedParametersType, bool isAddUserName = true, bool ignoreCase = true)
```
Paraméter|Leírás
:----|:----
requestedParametersType|Az elvárt paramétereket tartalmazó osztály.
isAddUserName|Hozzáadja-e automatikusan az ```OtherParameters``` szótárhoz az aktuális felhasználó nevét (User.Identity.Name) a ```SystemVariableNames.UserName``` kulccsal. Alapértelmezett értéke: true.
ignoreCase|Betű méret figyelmen kívül hagyása az összehasonlítás során. Alapértelmezett értéke: true.
source|Egy ```SeparatingSource``` enum érték, mely a szeparáció forrását és sorrendjét határozza meg.
collection|Egy ```NameValueCollection``` típus, amelynek az elemeit kell szétválogatni.
paramlist|Egy ```string[][]``` típus, amelynek az elemeit kell szétválogatni.
#### A kért (elvárt) paramétereket tartalmazó osztály
Az alábbi minta a Vrh.Web.FileManager Index akciójának lehetséges paraméterei:
```javascript
/// <summary>
/// Az akciók által átvehető url paraméterek nevei.
/// </summary>
public static class QParams
{
/// <summary>
/// XmlParser kapcsolati sztring (connection string).
/// </summary>
public const string Xml = "xml";
/// <summary>
/// A FileManager definíció azonosítója, amely alapján a keresés és megjelenítés megtörténik.
/// </summary>
public const string Id = "id";
/// <summary>
/// A hívó által kért nyelv kódja, ha üres, akkor a releváns nyelvi kód lesz.
/// </summary>
public const string LCID = "lcid";
/// <summary>
/// A definícióban megadott gyökér mappa alatti mappa útvonal.
/// </summary>
public const string Folder = "folder";
/// <summary>
/// A definícióban megadott gyökér mappa alatti mappa útvonal.
/// </summary>
public const string File = "filename";
}
```
#### Felhasználási minták
A ```base.ParameterSeparating``` metódus létrehozza és feltölti a
```base.RequestedParameters``` szótárat, melynek pont annyi eleme van,
ahány mezője a ```QParams``` statikus osztálynak, és a szótárban a kulcsok
megegyeznek az osztály tulajdonságainak értékével. A szótárban az értékek az
ugyanolyan nevű URL paraméterekben érkezett értéket kapják.
```javascript
public ActionResult Index()
{
base.ParameterSeparating(typeof(QParams));
if (String.IsNullOrWhiteSpace(base.RequestedParameters[QParams.LCID]))
{ // A ForcedLanguageCode a BaseController konstruktorában megkapja a MultiLanguageManager.RelevantLanguageCode-ot
base.RequestedParameters[QParams.LCID] = base.ForcedLanguageCode;
}
else
{
base.ForcedLanguageCode = base.RequestedParameters[QParams.LCID];
}
if (String.IsNullOrWhiteSpace(base.RequestedParameters[QParams.Folder]))
{
base.RequestedParameters[QParams.Folder] = WebCommon.SIGN_BACKSLASH;
}
return View(ACTION_INDEX, model);
}
```
Amennyiben nem az alapértelmezett ```Request.QueryString``` ```NameValueCollection```-t
kell feldolgozni, akkor létezik olyan túlterhelése a metódusnak, amelyben megadható a
feldolgozandó ```NameValueCollection```. Példaként egy POST metódust van itt,
melyben a ```Request.Form``` kollekciót kell feldolgozni:
```javascript
[HttpPost]
public ActionResult SetValami()
{
base.ParameterSeparating(Request.Form,typeof(QParams));
}
```
Létezik egy olyan túlterhelés is, melyben mind a ```Request.QueryString``` és a ```Request.Form```
feldolgozása is megtörténik. Ebben az esetben az első paraméter az, amelyik meghatározza a szeparáció forrását és sorrendjét.
```javascript
/// <summary>
/// ParameterSeparating metódus gyűjtemény nélküli túlterhelésében
/// a szeparáció forrását és sorrendjét határozza meg.
/// </summary>
protected enum SeparatingSource
{
/// <summary>
/// A szeparációban csak a Request.QueryString vesz részt.
/// Ez az alapértelmezés.
/// </summary>
OnlyQueryString,
/// <summary>
/// A szeparációban csak a Request.Form vesz részt.
/// </summary>
OnlyForm,
/// <summary>
/// A szeparációban elsőként Request.QueryString, majd
/// a Request.Form feldolgozása történik meg.
/// </summary>
FirstQueryString,
/// <summary>
/// A szeparációban elsőként Request.Form, majd
/// a Request.QueryString feldolgozása történik meg.
FirstForm,
}
```
A hívási minta:
```javascript
[HttpPost]
public ActionResult SetValami()
{
base.ParameterSeparating(SeparatingSource.FirstForm,typeof(QParams));
}
```
A fenti mintában elsőként a ```Request.Form``` szeparálása történik meg, majd a
```Request.QueryString``` feldolgozása. A későbben elvégzett szeparáció során a
már a szótárakban létező elemek felülíródhatnak, ha ugyanolyan nevű paramétert talál.
***
## WebCommon osztály
Egy statikus osztály hasznos segédeszközökkel.
### Állandók
Alábbi értékek eléréséhez egy minta: ```Vrh.Web.Common.Lib.WebCommon.HTML_NEWLINE```.
Állandó|Értéke|Leírás
:----|:----|:----
HTML_NEWLINE|```<br />```|A html-ben használatos új sor karaktersorozat.
SIGN_RELATIVE|```~```|A relatív hivatkozás jele az útvonalakban.
SIGN_SLASH|```/```|A "/" jel állandója.
SIGN_BACKSLASH|```\```|A "\" jel állandója.
#### EditModeLetters osztály alatti állandók
Szerkesztési mód betűjelek lehetséges értékei.
Alábbi értékek eléréséhez egy minta: ```Vrh.Web.Common.Lib.WebCommon.EditModes.SELECT```.
Állandó|Értéke|Leírás
:----|:----|:----
SELECT|```s```|A csak lekédezést lehetővé tévő szerkesztési mód betű jele.
ADD|```a```|Létrehozás és módosítást engedő szerkesztési mód betű jele.
DELETE|```d```|A fentiek mellett a törlést is engedő szerkesztési mód betű jele.
MANAGE|```m```|Általános kezelést engedő szerkesztési mód betű jele.
És létezik egy metódus is, amely visszaadja az értékeket egy stringben vesszővel elválasztva.
All() = "s,a,d,m"
### Tulajdonságok
Név|Leírás
:----|:----
Layout|Az alkalmazás számára érvényes általános layout. Alapértelmezés: "~/Views/Shared/_Layout.cshtml"
DefaultViewMode|ViewMode alapértelmezett értéke. Futás közen módosítható. Alapértelmezés: ```ViewModes.Desktop```
### Metódusok
#### Base10ToBase
Egy decimális számot átalakít a megadott számrendszer szerinti számra,
amelyet string formában ad vissza. A számrendszer 2 és 36 között lehet, beleértve a határokat is.
Visszatérő értéke a megadott számrendszerbeli szám egy stringben.
```javascript
static string Base10ToBase(long decNumber, int radix = 36)
```
Paraméter|Leírás
:----|:----
decNumber|A konvertálandó decimális szám.
radix|A számrendszer alapja. Alapértelmezés: 36.
#### ErrorListBuilder
Egy kivételből összeszedi a keletkezett InnerException-öket, és abból egy listát képez.
A DbEntityValidationException-t, és a Data dictionary-t is kifejti.
```javascript
static List<string> ErrorListBuilder(Exception ex, string innerExceptionLabel = null)
```
Paraméter|Leírás
:----|:----
ex|Exception, melyet ki kell fejteni.
innerExceptionLabel|InnerException üzenet kiírásakor ezzel vezeti be az üzenetet. Alapértelmezés: "Inner exception: ".
#### RealPath
Ha a megadott fájl név relatív útvonal, akkor elé illeszti az első paraméterben megadott
mappát, ami a relatív hivatkozás feloldása. Ha fájlnév relatív, akkor az összefűzött útvonal,
ha nem relatív, akkor maga a fájl név a visszatérő érték. Csak útvonal sztring műveletek,
nem ellenőriz létezést vagy érvényességet.
```javascript
string RealPath(string appPath, string fileName)
```
Paraméter|Leírás
:----|:----
appPath|A relatív értéket feloldó fizikai mappa.
fileName|A relatív (vagy teljes) fájlnév.
#### SqlLikeToRegex
SQL like mintát fordít át egy reguláris kifejezés mintájává.
```javascript
string SqlLikeToRegex(string like)
```
Paraméter|Leírás
:----|:----
like|A relatív értéket feloldó fizikai mappa.
#### ViewModeParser
A ViewMode beállítása egy megadott string alapján.
```javascript
static ViewModes ViewModeParser(string viewMode, bool isThrowException = false)
```
Paraméter|Leírás
:----|:----
viewMode|A view mode sztring értéke. Ha null vagy üres, akkor az ApplicationCookie.DefaultViewMode lesz beállítva.
isThrowException|Ha igaz, akkor rossz érték esetén hibát dob, egyébként a DefaultViewMode-dal tér vissza.
***
## DataTables támogatás
### DataTables statikus osztály
Egyelőre egy statikus osztályt tartalmaz, ami konstansokat tartalmaz a DataTables rendezésének
segítéséhez.
```javascript
/// <summary>
/// A DataTables működését támogató statikus osztály,
/// mely hasznos tagokat és metódusokat tartalmaz a
/// szerver oldali működés támogatására.
/// </summary>
public static class DataTables
{
/// <summary>
/// A DataTables támogatásában hasznos állandók gyűjtőhelye.
/// </summary>
public static class Constants
{
/// <summary>
/// Növekvő rendezés jelzése a DataTables-ben.
/// </summary>
public const string ORDER_ASC = "asc";
/// <summary>
/// Csökkenő rendezés jelzése a DataTables-ben.
/// </summary>
public const string ORDER_DESC = "desc";
}
}
```
### DataTablesIn osztály
```javascript
/// <summary>
/// Egy osztály, amely a dataTables plugin által küldött
/// paramétereket tartalmazza. (Json class sent from dataTables)
/// </summary>
public class DataTablesIn
{
/// <summary>
/// Rajz számláló.
/// Annak biztosítására, hogy az ajax aszinkronitása ellenére is
/// a kirajzolás megfelelő sorrendben történjen.
/// </summary>
public int Draw { get; set; }
/// <summary>
/// A kirajzolt első rekord indexe.
/// </summary>
public int Start { get; set; }
/// <summary>
/// A rekordok száma, amit a tábla megjelenít.
/// </summary>
public int Length { get; set; }
/// <summary>
/// Az oszlopok listája.
/// </summary>
public List<DTColumn> Columns { get; set; }
/// <summary>
/// A teljes táblázatra érvényes kereső objektum.
/// </summary>
public DTSearch Search { get; set; }
/// <summary>
/// A rendezettség listája. (Több oszlopot is tartalmazhat a rendezés.)
/// </summary>
public List<DTOrder> Order { get; set; }
#region DTColumn class
/// <summary>
/// Egy oszlopot leíró osztály.
/// </summary>
public class DTColumn
{
/// <summary>
/// Az oszlop tartalma.
/// </summary>
public string Data { get; set; }
/// <summary>
/// Az oszlop neve (azonosítója).
/// </summary>
public string Name { get; set; }
/// <summary>
/// Az oszlop kereshető-e.
/// </summary>
public bool Searchable { get; set; }
/// <summary>
/// Az oszlop rendezése engedélyezve van-e.
/// </summary>
public bool Orderable { get; set; }
/// <summary>
/// Az oszlopra vonatkozó kereső objektum.
/// </summary>
public DTSearch Search { get; set; }
}
#endregion DTColumn class
#region DTSearch class
/// <summary>
/// Egy keresést leíró osztály.
/// </summary>
public class DTSearch
{
/// <summary>
/// Egy string kereső érték.
/// </summary>
public string Value { get; set; }
/// <summary>
/// Igaz, ha a kereső érték egy reguláris kifejezés.
/// </summary>
public bool Regex { get; set; }
}
#endregion DTSearch class
#region DTOrder class
/// <summary>
/// Egy rendezést leíró osztály.
/// </summary>
public class DTOrder
{
/// <summary>
/// Melyik indexű oszlop tartozik a rendezésbe.
/// </summary>
public int Column { get; set; }
/// <summary>
/// A rendezettség iránya.
/// </summary>
public string Dir { get; set; }
}
#endregion DTOrder class
}
```
***
## Redis támogatás
### RedisConnection osztály
Ha egy Redis adatszolgáltatót kell elérni, akkor a kiszolgálót és a használni kívánt pool-t is
meg kell adni. Ezt egy redis kapcsolati sztringben kell megadni.
Az osztály egy példánya létrehozható úgy is, ha egy ilyen kapcsolati sztringet adunk meg a
konstruktorban. A konstruktor elvégzi a kapcsolati sztring feldolgozását és ellenőrzését, majd
az értékeket elhelyezi a megfelelő tulajdonságokba:
```javascript
string connectionString = "server:192.168.77.50;pool=ALM;port=6739;";
RedisConnection redisConnection = new RedisConnection(connectionString);
```
Tulajdonság|Típus|Leírás
:----|:----|:----
Server|```string```|Redis server neve vagy IP címe.
Pool|```string```|Redis instance neve.
Port|```int```|Redis portszáma. Alapértelmezés 0.
A konstruktor pontos definíciója:
```javascript
/// <summary>
/// A megadott kapcsolati string feldolgozásával áll elő egy redis kapcsolati példány.
/// </summary>
/// <param name="redisConnectionString">A Redis kapcsolati sztringje.</param>
/// <param name="isRequired">
/// Ha igaz, és <paramref name="redisConnectionString"/> null vagy üres,
/// akkor hibát dob. Egyébként a példány létrejön üres értékekkel.
/// </param>
/// <exception cref="ArgumentNullException">
/// Ha null vagy üres a <paramref name="redisConnectionString"/> és
/// <paramref name="isRequired"/> igaz.
/// </exception>
/// <exception cref="ApplicationException">Ha a sztring egyéb ok miatt nem helyes.</exception>
public RedisConnection(string redisConnectionString, bool isRequired = true)
```
***
### Version History:
|
ab9f2fbe
Schwirg László
Add project files.
|
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
|
#### 2.19.2 (2023.03.17) Patches:
- BaseController.ForcedLanguageCode mostantól csak a MultiLanguageManager.ActiveLanguageCodes
lista egy elemét fogadja el beállításként, egyébként nem változik az értéke.
#### 2.19.1 (2023.03.03) Patches:
- DataTables.Filter metódus módosítása. Mostantól a nullozható értéktípusok esetében is működik a szűrés.
#### 2.19.0 CompatibleChange (nuget)
- Áttérés a VRH.Common 3.0 változatára
#### 2.18.1-2 Patches:
- Az új Mlmgt metódusok megszüntetése. "params object[]" paraméter esetén, nem jók ezek a túlterhelések. A korábbi működéssel nem volt kompatibilis. A BaseController.ForcedLanguageCode beállításával el lehet érni a kívánt fordítást.
#### 2.18.1 Patches:
- Az új Mlmgt metódusok megszüntetése. "params object[]" paraméter esetén, nem jók ezek a túlterhelések.
A korábbi működéssel nem volt kompatibilis. A BaseController.ForcedLanguageCode beállításával el lehet érni a kívánt fordítást.
#### 2.18.0 (2022.10.26) Compatible changes:
- DataTables.FilterTable és DataTables.FilterColumn navigációs tulajdonságok esestében
is elvégzik a keresést.
- DataTablesIn.DTColumn osztály kibővült egy SearchField nevű tulajdonsággal.
- DataTables.Constants osztályra való hivatkozás mostantól fordítási hibát fog eredményezni.
Már legalább 2 éve "Obsolete".
- Frissítés a VRH.Common 2.25.0 változatára.
- Frissítés a VRH.Log4Pro.MultiLanguageManager 3.21.2 változatára.
- Frissítés a Vrh.XmlProcessing 1.30.3 változatára.
#### 2.17.0 Compatible change (2022.10.24 nuget):
- BaseController-ből a nemrég betett Log4ProCheckUser metódusok és összes vonzatuk törlése (és áthelyezésük a WebTools modulba)
#### 2.16.0 Compatible change (2022.10.21 nuget):
- új AddModelError metódusok hozzáadása
#### 2.15.0 Compatible change (2022.10.20 nuget):
- új Mlmgt metódusok hozzáadásaModel
#### 2.14.0 Compatible change (2022.10.20 nuget):
- ModelErrorMessageListBuilder hozzáadása
#### 2.13.1-2 Patches:
#### 2.13.0 Compatible change (2022.10.20 nuget):
- BaseController funkcionális bővítése Log4ProCheckUser metódussal, a RunningControllerName és RunningActionName mezőkkel
#### 2.12.2 (2022.10.10) Patches:
- PagedList nuget csomag eltávolítása a projektből.
- VRH.Web.Providers csomag eltávolítása a projektből.
- Microsoft.AspNet.Providers csomag eltávolítása a projektből.
- Microsoft.AspNet.Providers.Core csomag eltávolítása a projektből.
#### 2.12.1 (2022.10.07) Patches:
- Vrh.Membership nuget csomag eltávolítása a projektből.
- Target framework mostantól 4.5.1. !!Ha "Target framework" megváltozik, akkor azért azt legalább jelezni kéne a history-ban!!
#### 2.12.0 Compatible change (2022.10.05 nuget):
- 2.11.0 módosítások visszavonása; 2.11 nuget csomag törlésre került a nuget szerverről
#### 2.11.0 Compatible change (2022.10.04 nuget):
- BaseController/Log4ProCheckUser metódusok beillesztése
#### 2.10.2 (2022.09.14) Patches:
- DataTables.FilterColumn() metódus mostantól nem dob hibát, ha Boolean mezők szűrését
kell elvégeznie. Nem volt megvalósítva.
- Frissítés a Microsoft.AspNet.Mvc 5.2.9 változatára.
- Frissítés a Microsoft.Web.Infrastructure 2.0.0 változatára.
- Frissítés a VRH.Common 2.23.1 változatára.
- Frissítés a VRH.Log4Pro.MultiLanguageManager 3.20.2 változatára.
- Frissítés a Vrh.XmlProcessing 1.30.2 változatára.
#### 2.10.1 (2022.08.19) Patches:
- DataTables.Filter() és DataTables.FilterTable() metódus NULL érték lekezelése.
- DataTables.Response() nem jól adta vissza a recordsTotal értéket.
#### 2.10.0 (2021.09.12) Compatible change:
- HtmlHelper megoldások átkerültek a VRH.Log4Pro.WebTools projektbe.
#### 2.9.0 (2021.08.29) Compatible change:
- Frissítés a Vrh.XmlProcessing 1.29.0 változatára, a ResponseTargets enum áthelyezése miatt.
- Frissítés a Newtonsoft.Json 13.0.1 változatára.
#### 2.8.0 (2021.07.22) Compatible change:
- WebCommon.LayoutNoMenu konstans bevezetése, amely egy minimalizált, praktikusan egy menü nélküli layout elérési útját tartalmazza
#### 2.7.1 (2021.03.11) Patch Extension:
- VrhHtmlHelper-ben a common actions kezelő egység a html.action link-et nem jól állította össze
#### 2.7.0 (2021.02.17) Compatible Extension:
- RefreshButtons osztály hozzáadása a VrhHtmlHelper eszközök közé
#### 2.6.3 (2021.02.15) Patches:
- A BaseController.ParameterSeparating javítása, hogy a paraméter osztály mezőit akkor is megtalálja, ha azok származtatott osztályokon keresztül épülnek fel.
#### 2.6.2 (2021.02.10) Compatible changes:
- VrhHtmlHelper.ActionPanel és VrhHtmlHelper.HelpPanel osztályok és egyéb kiegészítő helperek hozzáadása
#### 2.6.1 (2021.01.26) Patches:
- Verzió beállítása merge után.
#### 2.6.0 (2021.01.24) Compatible changes:
- Belekerült a BaseController-be a SetMLMCookie metódus, mely beállítja a controller session-re érvényes nyelvi cookie-t.
- ActionButtonPanel osztály és HtmlHelper hozzáadása
#### 2.5.8 (2021.01.20) Patches:
- Frissítés a VRH.Common 2.20.1 változatára.
- Frissítés a Vrh.XmlProcessing 1.24.0 változatára.
#### 2.5.7 (2020.11.24) Patches:
- Frissítés a Vrh.XmlProcessing 1.19.1 változatára.
#### 2.5.7 (2020.11.12) Patches:
- Frissítés a VRH.Common 2.19.0 változatára.
- Frissítés a VRH.Log4Pro.MultiLanguageManager 3.17.6 változatára.
- Frissítés a Vrh.XmlProcessing 1.18.5 változatára.
#### 2.5.6 (2020.03.28) Patches:
- NuGet csomag módosítása úgy, hogy a modul ReadMe.md "Build Action" tulajdonsága "None" legyen a telepítés után. Install.ps1 hozzáadása.
- Frissítés a VRH.Log4Pro.MultiLanguageManager 3.10.1 változatára.
#### 2.5.5 (2020.03.26) Patches:
- Frissítés a VRH.Common 2.13.1 változatára.
- XML dokumentáció pontosítása.
- Frissítés az MSTest.TestAdapter 2.1.0 változatára. (Ez csak a Test projektet érinti!)
- Frissítés az MSTest.TestFramework 2.1.0 változatára. (Ez csak a Test projektet érinti!)
#### 2.5.3-4 (2020.03.19) Patches:
- WebCommon néhány metódusa és állandója átkerült a VRH.Common-ba. WebCommon osztály hívásai nem változtak, a VRH.Common-ba hívnak bele.
- CookieWebClient osztály is átkerült a VRH.Common-ba.
#### 2.5.2 (2020.03.06) Patches:
- A DataTables.Response metódus 1. túlterhelése: Ha IQueryable az átadott lekérdezés, akkor elvégzi előbb rajta a szűrést és rendezést, és utána adja vissza a választ.
- A DataTables.Response metódus 2. túlterhelése: Ha IOrderedQueryable az átadott lekérdezés, akkor csak a választ adja vissza.
- A DataTables.Order metódusban az összefűzött (több oszlopra vonatkozó) rendezésben lévő hiba javítása.
#### 2.5.1 (2020.03.03) Patches:
- A DataTables.FilterTable metódus második paramétere DataTablesIn típusra változott. Csak a táblázatban kereshetőnek jelölt oszlopokot veszi figyelembe a tábla szintű szűrésnél.
#### 2.5.0 (2020.02.22) Compatible changes:
- Új DataTables.FilterTable metódus, mely megvalósít egy tábla szintű szűrést (a teljes oszlopkészleten tartalmazás vizsgálattal).
- Új DataTables.FilterColumn metódus, mely megvalósít egy oszlop szintű szűrést.
- Új DatTables.Filter metódus, mely végrehajtja a FilterTable metódust, és az összes oszlopra a FilterColumn metódust.
- Dátum szűréskor, ha használjuk a vezérlő karaktereket, és mögöttük érvényes integer szám van, azt évszámnak (ÉÉÉÉ) tekinti e verziótól. "Before" esetén ÉÉÉÉ.01.01 00:00:00, "After" esetén ÉÉÉÉ.12.31 23:59:59 értéket képez az összehasonlításhoz. A "Between"-ben értelemszerűen a bal oldalon az előbbi, a jobb oldalon az utóbbi érték képződik.
- A korábbi szűrésre vonatkozó megoldások megmaradtak a BaseController-ben, de hamarosan Obsolete jelölést kapnak.
- Új DataTables.Order metódus, mely végrehajtja az igényelt rendezéseket.
- Új DataTables.Response metódus, mely végrehajtja a szűrést, a rendezést, és előállítja a jquery.datatables számára szükséges választ.
- WebCommon kibővült egy ```bool IsNumericType(Type)``` metódussal. Igazzal tér vissza, ha a típus numerikus.
- Az objektum osztálynak is lett egy új bővítése. Pl. int a= 1; a.IsNumericType() igazzal jelzi, ha numerikus.
- Frissítés a VRH.Common 2.12.1 változatára.
- Frissítés a VRH.Log4Pro.MultiLanguageManager 3.10.0 változatára.
- Frissítés a Vrh.XmlProcessing 1.17.0 változatára.
#### 2.4.1 (2020.01.27) Patches - release:
- A HtmlHelperExtensions osztály névtere helytelen volt, javítás után a névtér helyesen: "Vrh.Web.Common.Lib".
- Frissítés a VRH.Log4Pro.MultiLanguageManager 3.9.2 változatára.
- Frissítés a Vrh.XmlProcessing 1.15.2 változatára.
#### 2.4.0 (2019.09.28) Compatible changes - release:
- A BaseController automatikusan előállít egy ViewBag.ValidationSummaryMessage tulajdonságot üres sztring értékkel.
A BaseController az OnActionExecuted eseményben a ModelState objektumból feltölti ebbe a változóba az üres sztring ("") kulcsú üzeneteket.
A cshtml-ben egy egyszerű "vrhct.bootbox.alert('@ViewBag.ValidationSummaryMessage');" javascript sorral megoldhatjuk az üzenet kiírását.
A "ValidationExtension" osztály megmaradt, továbbra is használható, de ez az új megoldás sokkal kisebb erőforrással elvégzi ugyanazt,
mint az egész "ValidationExtension" osztály és a "ValidationSummary.cshtml" partial együttvéve.
- A BaseController "DataTableSelector" tulajdonsága "Obsolete" jelölést kapott, meg fog szűnni a jövőben.
- HtmlHelper kiterjesztésre került a VrhTextBox és VrhTextBoxFor metódusokkal, melyek ugyanazt tudják, mint a TextBox és TextBoxFor csak kapnak automatikusan egy "form-control" osztály jelölést.
- Frissítés a VRH.Log4Pro.MultiLanguageManager 3.8.3 változatára.
- Frissítés a Vrh.XmlProcessing 1.5.6 változatára.
#### 2.3.1 (2019.09.12) Patches - release:
- A BaseController-ben lett egy protected állandó MODELSTATE néven és "ModelState" értékkel a TempData szótár használatához.
- A BaseController-nek lett egy csak olvasható protected tulajdonsága a BaseFolder, mely a HttpContext.Server.MapPath("~") hívás értékét tartalmazza. XmlParser-hez mindig kell, és így könnyebben elérhető.
- Dokumentáció bővítése.
- Frissítés a Vrh.XmlProcessing 1.5.2 változatára.
#### 2.3.0 (2019.08.26) Compatible changes - debug:
- BaseController.ParameterSeparating(string[][], type, bool, bool) metódus hozzzáadása.
- BaseController.ParameterSeparating(SeparatingSource, type, bool, bool) metódus hozzáadása.
- Frissítés a VRH.Log4Pro.MultiLanguageManager 3.8.1 változatára.
- Frissítés a Vrh.XmlProcessing 1.5.0 változatára.
#### 2.1.1 (2019.06.19) Patches - debug:
- Frissítés a VRH.Log4Pro.MultiLanguageManager 3.5.2 változatára.
- Frissítés a Vrh.XmlProcessing 1.3.0 változatára.
#### 2.1.0 (2019.06.14) Compatible changes - debug:
- Frissítés a VRH.Log4Pro.MultiLanguageManager 3.5.0 változatára.
- VRH.ConnectionStringStore függőség megszűnt.
#### 2.0.0 (2019.05.14) Incompatible changes - debug:
- E verziótól az XmlParser, és minden XML feldolgozással kapcsolatos dolog már nem elérhető. Új hely: Vrh.XmlProcessing.
- A standard JSON struktúrák és az IManage interfész át lett helyezve a Vrh.Common-ba.
- Az ITransalation interfész és a TranslationBase osztály át lett helyezve a VRH.Log4Pro.MultiLanguageManager-be.
- Minden "depricated" és "obsolete" jelölésű eszköz véglegesen megszűnt.
- Frissítés a VRH.Log4Pro.MultiLanguageManager 3.4.0 változatára.
- Vrh.XmlProcessing 1.0.0 hozzáadása.
- Dokumentáció a változásoknak megfelelően frissítve.
- ReadMe.md-ből a "csharp" jelölések cseréje "javascript"-re.
#### 1.18.1 (2019.04.04) Patches - debug:
- Frissítés a Microsoft.AspNet.Mvc 5.2.7 változatára.
#### 1.18.0 (2019.03.01) Compatible changes - debug:
- A CommonModel osztályba bekerült egy GetBoolList nevű metódus, mely bool mezők
feletti szűréshez állít elő "","Igen","Nem" tartalmú SelectList-et nyelvhelyesen.
- IManage interface létrehozása, mely meghatározza egy karbantartást biztosító
osztály elvárt tulajdonságait és módszereit.
- ITranslation interface létrehozása, mely meghatározza egy fordítási
szolgáltatásokat biztosító osztály elvárt tulajdonságait és módszereit.
- TranslationBase absztrakt osztály létrehozása egyéb osztályok alapozásához.
- Frissítés a Microsoft.AspNet.Mvc 5.2.7 változatára.
- Frissítés a Newtonsoft.Json 12.0.1 változatára.
- Frissítés a VRH.Log4Pro.MultiLanguageManager 3.1.0 változatára.
#### 1.17.0 (2018.12.17) Compatible changes - debug:
- XmlConnection konstruktora levágja az elején és végén található white space és '/' karaktereket,
a kapcsolati sztringben megadott 'element' össztevőről.
- Kikerült a debug verzióból pár diagnosztikai célú üzenet kiírás.
- VariableDictionary-ben elérhető a szeparátorok listája 'Separators' néven.
- VariableDictionary.FindVariables visszatér egy listával, mely egy szövegben megtalált változók
neveit tartalmazza.
- XmlParser felépít egy XmlVarsInfo és egy ConectionStringsInfo szótárat. A szótár elemei VariableInfo
típusúak, mely elmondja egy változóról, melyik fájlban található, milyen XPath kereső
kifejezéssel érhető el, és honnan származik.
#### 1.16.1 (2018.11.15) Patches - debug:
- WebCommon.ErrorListBuilder már nem teszi be a '(0)'-kat a hibaüzenetbe.
#### 1.16.0 (2018.10.26) Compatible changes - debug:
- RedisConnection osztály beépítése. A WebMonitor és RedisManager számára hasznos, hogy
egységes és következetes legyen.
- CommonModel osztály beépítése rendszeresen használt tulajdonságokkal és metódusokkal.
#### 1.15.1 (2018.10.20) Patches - debug:
- A Microsoft.AspNet.Mvc 5.2.6 függőség beállítása. Frissítés már megvolt korábban.
#### 1.15.0 (2018.10.11) Compatible changes - debug:
- WebCommon.Base10ToBase() függvény beépítése, ami egy 10-es számrendszerbeli számot alakít át 2-36
számrendszer beli számmá.
- XmlLinqBase.GetXElement metódusán kellett módosítani.
#### 1.14.0 (2018.09.27) Compatible API changes - debug:
- CookieApplicationSettings-ben EntryPointName lett a ReferenceName.
#### 1.13.0 (2018.09.25) Compatible API changes - debug:
- Lehet több XmlParser elem egy xml paraméterfájlban illetve egy konfigurációs elem alatt.
- XmlParser elem tartalmazhat egy hivatkozást egy külső fájlra az Include attribútummal.
#### 1.12.0 (2018.08.24) Compatible API changes - debug:
- Frissítés a VRH.Log4Pro.MultilanguageManager 3.0.0-ás változatára.
- DataTables támogatás: DataTables és DataTablesIn osztályok bevezetése.
- CRUD támogatás: MasterData statikus osztály bevezetése.
#### 1.11.0 (2018.08.13) Compatible API changes - debug:
- ```CookieApplicationSettings``` osztály kiegészült a "WelcomeUrl" tulajdonsággal,
hogy a Layout be tudja állítani a logo, és login/logout link értékét.
#### 1.10.1 (2018.08.10) Patches - debug:
- Az XmlParser hibakezelésén kellet javítani. Hibát dob, ha a konfigurációban megadott elem
nem létezik.
#### 1.10.0 (2018.08.10) Compatible API changes - debug:
- ```CookieApplicationSettings``` osztály kiegészült a "ConfigurationName" és a
"ReferenceName" tulajdonságokkal, hogy ez is megőrződjön az alkalmazás cookie-ban.
#### 1.9.2 (2018.08.08) Patches - debug:
- Az ```UrlElement.GetUrl()``` ```StringBuilder```-t használ, és a paraméterek nevében
vagy értékében előforduló "?&=" jeleket a szabványos URL encode értékre cseréli.
- A ```ParameterSeparating``` metódus kapott egy túlterhelést (overload),
amelyben megadható a feldolgozandó ```NameValueCollection```.
#### 1.9.1 (2018.08.01) Patches - debug:
- A WebCommon.RealPath metódust kellet pontosítani.
#### 1.9.0 (2018.07.27) Compatible API changes - debug:
- ```VariableDictionary``` osztály bevezetése. A ```VariableCollection``` a 2.0-ás
változattól már nem lesz használható.
- ```ParameterQuery``` osztály megszűnt. A szolgáltatások a ```BaseController``` osztály
```ParameterSeparating``` metódusába vándoroltak.
- 'USERNAME' rendszerváltozó automatikusan hozzáadódik az ```OtherParameters```szótárhoz.
#### 1.8.3 (2018.07.26) Patches - debug:
- URL paraméterek azonnal hozzáadódnak az XmlVars gyűjteményhez, és ezeknek az értékét nem
módosíthatja, ha van ilyen változó az xml paraméterfájlokban.
#### 1.8.2 (2018.07.25) Patches - debug:
- XmlParser és BaseController osztályokban történtek javítások.
- A VariableCollection csak olyan változókat tartalmazhat, amelyek neve
megfelel a "[a-zA-Z_]\w*" reguláris kifejezésnek.
- XmlLinqBase az IDisposable osztályból származtatva
#### 1.8.1 (2018.07.24) Patches - debug:
- XmlConnection konstruktorában történt javítás. Alapértelmezett fájl és
konfigurációnév megadással kapcsolatban.
#### 1.8.0 (2018.07.16) Compatible API changes - debug:
- ParameterQuery osztály bevezetése. A .NET-es akciók Request.QueryString-jének szétválasztása
a kért és egyéb paraméterekre.
- XmlConnection osztály bevezetése. XmlParser connection string feldolgozásához.
- XmlParser új konstruktorokkal bővült, melyek alkalmasak az XmlConnection,
ParameterQuery osztályok és az XmlParser connection string fogadására a példányosításkor.
#### 1.7.1 (2018.06.30) Patches - debug:
- A CookieApplicationSettings osztályban a Set metódusban a ProductName és CopyRight
UrlEncode után kerül mentésre, és visszaolvasáskor UrlDecode történik. (A cookie nem
tud letárolni UNICODE-ot.)
#### 1.7.0 (2018.05.30) Compatible API changes - debug:
- Elkészült egy újabb XmlParser konstruktor, mely nem konfigurációs nevet vár, hanem
egy létező xml fájl nevét. Ez a konstruktor feldolgozza a gyökér XmlParser változóit,
de nem foglalkozik annak Configuration elemével.
#### 1.6.0 (2018.05.11) Compatible API changes:
- ValidationExtension static osztály hozzáadása (a régi DataTables.dll-ből átemelve)
#### 1.5.0 (2018.04.13) Compatible API changes:
- CookieApplicationSettings osztály létrehozása.
- A WebCommon static osztály létrehozása, a VRH web alkalmazásokban alapvetően
vagy sokszor használt tulajdonságok és metódusok eléréséhez.
- ViewModes enum létrehozása (Desktop, Mobile, Touch) értékekkel.
#### 1.4.3 (2018.03.21) Patches:
- VariableCollection.Substitution nem dob hibát, ha null értékű sztringet kap a behelyettesítéshez. Null-t add vissza ilyenkor.
#### 1.4.2 (2018.03.19) Patches:
- XmlParser újra abstract.
#### 1.4.1 (2018.03.07) Compatible API changes:
- XmlParser az érték nélküli változókat is létrehozza üres string értékkel.
- Rendszerváltozó nevű XmlVar esetén hiba keletkezik.
- Dokumentácó bővítése, javítása.
#### 1.4.0 (2018.03.03) Compatible API changes:
- XmlLinqBase, XmlCondition, XmlVariable és XmlParser osztály létrehozása, az XML
feldolgozás egységesítéséhez.
- Dokumentácó bővítése, javítása.
#### 1.3.2 (2018.01.19) Patches:
- UrlElement osztályban javítás és módosítás (konstruktor).
#### 1.3.1 (2017.12.19) Patches:
- Dokumentáció bővítése, pontosítása.
- Új név került be a rendszerváltozók közé, a "USERNAME".
#### 1.3.0 (2017.12.08) Compatibility API changes::
- VariableCollection osztály létrehozása, az XML feldolgozáskor alkalmazott változók behelyettesítésére, és egységben tartására.
- SystemVariableNames statikus osztály létrehozása a rendszerváltozók egységes kezelése céljából.
- Dokumentációk bővítése és pontosítása.
#### 1.2.3 (2017.11.30) Patches:
- Dokumentáció bővítése, pontosítása.
- BaseController.ErrorMessageBuilder már magától levágja az utolsó soremelést.
#### 1.2.2 (2017.11.07) Patches:
- A Vrh.Common.Serialization.Structures Lib kimozgatása az iScheduler alól ebbe az önálló solutionbe, és átnevezése Vrh.Web.Common.Lib-re
- Nuget csomaggá alakítás
|