# 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 /// /// Az akciók által átvehető url paraméterek nevei. /// public static class QParams { /// /// XmlParser kapcsolati sztring (connection string). /// public const string Xml = "xml"; /// /// A FileManager definíció azonosítója, amely alapján a keresés és megjelenítés megtörténik. /// public const string Id = "id"; /// /// A hívó által kért nyelv kódja, ha üres, akkor a releváns nyelvi kód lesz. /// public const string LCID = "lcid"; /// /// A definícióban megadott gyökér mappa alatti mappa útvonal. /// public const string Folder = "folder"; /// /// A definícióban megadott gyökér mappa alatti mappa útvonal. /// 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 /// /// 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. /// protected enum SeparatingSource { /// /// A szeparációban csak a Request.QueryString vesz részt. /// Ez az alapértelmezés. /// OnlyQueryString, /// /// A szeparációban csak a Request.Form vesz részt. /// OnlyForm, /// /// A szeparációban elsőként Request.QueryString, majd /// a Request.Form feldolgozása történik meg. /// FirstQueryString, /// /// 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|```
```|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 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 /// /// 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. /// public static class DataTables { /// /// A DataTables támogatásában hasznos állandók gyűjtőhelye. /// public static class Constants { /// /// Növekvő rendezés jelzése a DataTables-ben. /// public const string ORDER_ASC = "asc"; /// /// Csökkenő rendezés jelzése a DataTables-ben. /// public const string ORDER_DESC = "desc"; } } ``` ### DataTablesIn osztály ```javascript /// /// Egy osztály, amely a dataTables plugin által küldött /// paramétereket tartalmazza. (Json class sent from dataTables) /// public class DataTablesIn { /// /// 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. /// public int Draw { get; set; } /// /// A kirajzolt első rekord indexe. /// public int Start { get; set; } /// /// A rekordok száma, amit a tábla megjelenít. /// public int Length { get; set; } /// /// Az oszlopok listája. /// public List Columns { get; set; } /// /// A teljes táblázatra érvényes kereső objektum. /// public DTSearch Search { get; set; } /// /// A rendezettség listája. (Több oszlopot is tartalmazhat a rendezés.) /// public List Order { get; set; } #region DTColumn class /// /// Egy oszlopot leíró osztály. /// public class DTColumn { /// /// Az oszlop tartalma. /// public string Data { get; set; } /// /// Az oszlop neve (azonosítója). /// public string Name { get; set; } /// /// Az oszlop kereshető-e. /// public bool Searchable { get; set; } /// /// Az oszlop rendezése engedélyezve van-e. /// public bool Orderable { get; set; } /// /// Az oszlopra vonatkozó kereső objektum. /// public DTSearch Search { get; set; } } #endregion DTColumn class #region DTSearch class /// /// Egy keresést leíró osztály. /// public class DTSearch { /// /// Egy string kereső érték. /// public string Value { get; set; } /// /// Igaz, ha a kereső érték egy reguláris kifejezés. /// public bool Regex { get; set; } } #endregion DTSearch class #region DTOrder class /// /// Egy rendezést leíró osztály. /// public class DTOrder { /// /// Melyik indexű oszlop tartozik a rendezésbe. /// public int Column { get; set; } /// /// A rendezettség iránya. /// 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 /// /// A megadott kapcsolati string feldolgozásával áll elő egy redis kapcsolati példány. /// /// A Redis kapcsolati sztringje. /// /// Ha igaz, és null vagy üres, /// akkor hibát dob. Egyébként a példány létrejön üres értékekkel. /// /// /// Ha null vagy üres a és /// igaz. /// /// Ha a sztring egyéb ok miatt nem helyes. public RedisConnection(string redisConnectionString, bool isRequired = true) ``` *** ### Version History: #### 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