Merge branch 'dev' into MissingRes-3.0.1
This commit is contained in:
		| @ -10,100 +10,32 @@ | ||||
| @inject IStringLocalizer<SharedResources> SharedLocalizer | ||||
|  | ||||
|     <div class="container"> | ||||
|         <div class="row mb-1 align-items-center"> | ||||
|  | ||||
|             <div class="col-sm-9"> | ||||
|  | ||||
|             </div> | ||||
|         </div> | ||||
|         <div class="row mb-1 align-items-center"> | ||||
|  | ||||
|             <div class="col-sm-9"> | ||||
|  | ||||
|             </div> | ||||
|         </div> | ||||
|         <div class="row mb-1 align-items-center"> | ||||
|  | ||||
|             <div class="col-sm-9"> | ||||
|  | ||||
|             </div> | ||||
|         </div> | ||||
|         <div class="row mb-1 align-items-center"> | ||||
|  | ||||
|             <div class="col-sm-9"> | ||||
|  | ||||
|             </div> | ||||
|         </div> | ||||
|         <div class="row mb-1 align-items-center"> | ||||
|  | ||||
|             <div class="col-sm-9"> | ||||
|  | ||||
|             </div> | ||||
|         </div> | ||||
|         <div class="row mb-1 align-items-center"> | ||||
|  | ||||
|             <div class="col-sm-9"> | ||||
|  | ||||
|             </div> | ||||
|         </div> | ||||
|         <div class="row mb-1 align-items-center"> | ||||
|  | ||||
|             <div class="col-sm-9"> | ||||
|  | ||||
|             </div> | ||||
|         </div> | ||||
|         <div class="row mb-1 align-items-center"> | ||||
|  | ||||
|             <div class="col-sm-9"> | ||||
|  | ||||
|             </div> | ||||
|         </div> | ||||
|         <div class="row mb-1 align-items-center"> | ||||
|  | ||||
|             <div class="col-sm-9"> | ||||
|  | ||||
|             </div> | ||||
|         </div> | ||||
|         <div class="row mb-1 align-items-center"> | ||||
|  | ||||
|             <div class="col-sm-9"> | ||||
|  | ||||
|             </div> | ||||
|         </div> | ||||
|         <div class="row mb-1 align-items-center"> | ||||
|  | ||||
|             <div class="col-sm-9"> | ||||
|  | ||||
|             </div> | ||||
|         </div> | ||||
|  | ||||
|     </div> | ||||
|        <div class="row mb-1 align-items-center"> | ||||
|                 <Label Class="col-sm-3" For="dateTime" HelpText="The date and time of this log" ResourceKey="DateTime">Date/Time: </Label> | ||||
|             <Label Class="col-sm-3" For="dateTime" HelpText="The date and time of this log" ResourceKey="DateTime">Date/Time: </Label> | ||||
|             <div class="col-sm-9"> | ||||
|                 <input id="dateTime" class="form-control" @bind="@_logDate" readonly /> | ||||
|             </div> | ||||
|        </div> | ||||
|        <div class="row mb-1 align-items-center"> | ||||
|                 <Label Class="col-sm-3" For="level" HelpText="The level of this log" ResourceKey="Level">Level: </Label> | ||||
|             <Label Class="col-sm-3" For="level" HelpText="The level of this log" ResourceKey="Level">Level: </Label> | ||||
|             <div class="col-sm-9"> | ||||
|                 <input id="level" class="form-control" @bind="@_level" readonly /> | ||||
|             </div> | ||||
|        </div> | ||||
|        <div class="row mb-1 align-items-center"> | ||||
|                 <Label Class="col-sm-3" For="feature" HelpText="The feature that was affected" ResourceKey="Feature">Feature: </Label> | ||||
|             <Label Class="col-sm-3" For="feature" HelpText="The feature that was affected" ResourceKey="Feature">Feature: </Label> | ||||
|             <div class="col-sm-9"> | ||||
|                 <input id="feature" class="form-control" @bind="@_feature" readonly /> | ||||
|             </div> | ||||
|        </div> | ||||
|        <div class="row mb-1 align-items-center"> | ||||
|                  <Label Class="col-sm-3" For="function" HelpText="The function that was performed" ResourceKey="Function">Function: </Label> | ||||
|             <Label Class="col-sm-3" For="function" HelpText="The function that was performed" ResourceKey="Function">Function: </Label> | ||||
|             <div class="col-sm-9"> | ||||
|                 <input id="function" class="form-control" @bind="@_function" readonly /> | ||||
|             </div> | ||||
|        </div> | ||||
|        <div class="row mb-1 align-items-center"> | ||||
|                <Label Class="col-sm-3" For="category" HelpText="The categories that were affected" ResourceKey="Category">Category: </Label> | ||||
|             <Label Class="col-sm-3" For="category" HelpText="The categories that were affected" ResourceKey="Category">Category: </Label> | ||||
|             <div class="col-sm-9"> | ||||
|                 <input id="category" class="form-control" @bind="@_category" readonly /> | ||||
|             </div> | ||||
| @ -111,7 +43,7 @@ | ||||
|         @if (_pageName != string.Empty) | ||||
|         { | ||||
|            <div class="row mb-1 align-items-center"> | ||||
|                    <Label Class="col-sm-3" For="page" HelpText="The page that was affected" ResourceKey="Page">Page: </Label> | ||||
|                 <Label Class="col-sm-3" For="page" HelpText="The page that was affected" ResourceKey="Page">Page: </Label> | ||||
|                 <div class="col-sm-9"> | ||||
|                     <input id="page" class="form-control" @bind="@_pageName" readonly /> | ||||
|                 </div> | ||||
| @ -120,7 +52,7 @@ | ||||
|         @if (_moduleTitle != string.Empty) | ||||
|         { | ||||
|            <div class="row mb-1 align-items-center"> | ||||
|                     <Label Class="col-sm-3" For="module" HelpText="The module that was affected" ResourceKey="Module">Module: </Label> | ||||
|                 <Label Class="col-sm-3" For="module" HelpText="The module that was affected" ResourceKey="Module">Module: </Label> | ||||
|                 <div class="col-sm-9"> | ||||
|                     <input id="module" class="form-control" @bind="@_moduleTitle" readonly /> | ||||
|                 </div> | ||||
| @ -129,26 +61,26 @@ | ||||
|         @if (_username != string.Empty) | ||||
|         { | ||||
|            <div class="row mb-1 align-items-center"> | ||||
|                    <Label Class="col-sm-3" For="user" HelpText="The user that caused this log" ResourceKey="User">User: </Label> | ||||
|                 <Label Class="col-sm-3" For="user" HelpText="The user that caused this log" ResourceKey="User">User: </Label> | ||||
|                  <div class="col-sm-9"> | ||||
|                     <input id="user" class="form-control" @bind="@_username" readonly /> | ||||
|                 </div> | ||||
|            </div> | ||||
|         } | ||||
|        <div class="row mb-1 align-items-center"> | ||||
|                <Label Class="col-sm-3" For="url" HelpText="The url the log comes from" ResourceKey="Url">Url: </Label> | ||||
|             <Label Class="col-sm-3" For="url" HelpText="The url the log comes from" ResourceKey="Url">Url: </Label> | ||||
|             <div class="col-sm-9"> | ||||
|                 <input id="url" class="form-control" @bind="@_url" readonly /> | ||||
|             </div> | ||||
|        </div> | ||||
|        <div class="row mb-1 align-items-center"> | ||||
|                <Label Class="col-sm-3" For="template" HelpText="What the log is about" ResourceKey="Template">Template: </Label> | ||||
|             <Label Class="col-sm-3" For="template" HelpText="What the log is about" ResourceKey="Template">Template: </Label> | ||||
|             <div class="col-sm-9"> | ||||
|                 <input id="template" class="form-control" @bind="@_template" readonly /> | ||||
|             </div> | ||||
|        </div> | ||||
|        <div class="row mb-1 align-items-center"> | ||||
|                  <Label Class="col-sm-3" For="message" HelpText="The message that the system generated" ResourceKey="Message">Message: </Label> | ||||
|             <Label Class="col-sm-3" For="message" HelpText="The message that the system generated" ResourceKey="Message">Message: </Label> | ||||
|             <div class="col-sm-9"> | ||||
|                 <textarea id="message" class="form-control" @bind="@_message" rows="5" readonly></textarea> | ||||
|             </div> | ||||
| @ -156,24 +88,25 @@ | ||||
|         @if (!string.IsNullOrEmpty(_exception)) | ||||
|         { | ||||
|            <div class="row mb-1 align-items-center"> | ||||
|                     <Label Class="col-sm-3" For="exception" HelpText="The exceptions generated by the system" ResourceKey="Exception">Exception: </Label> | ||||
|                <div class="col-sm-9"> | ||||
|                 <Label Class="col-sm-3" For="exception" HelpText="The exceptions generated by the system" ResourceKey="Exception">Exception: </Label> | ||||
| 				<div class="col-sm-9"> | ||||
|                     <textarea id="exception" class="form-control" @bind="@_exception" rows="5" readonly></textarea> | ||||
|                 </div> | ||||
|            </div> | ||||
|         } | ||||
|        <div class="row mb-1 align-items-center"> | ||||
|                 <Label Class="col-sm-3" For="properties" HelpText="The properties that were affected" ResourceKey="Properties">Properties: </Label> | ||||
|             <Label Class="col-sm-3" For="properties" HelpText="The properties that were affected" ResourceKey="Properties">Properties: </Label> | ||||
|             <div class="col-sm-9"> | ||||
|                 <textarea id="properties" class="form-control" @bind="@_properties" rows="5" readonly></textarea> | ||||
|             </div> | ||||
|        </div> | ||||
|        <div class="row mb-1 align-items-center"> | ||||
|                 <Label Class="col-sm-3" For="server" HelpText="The server that was affected" ResourceKey="Server">Server: </Label> | ||||
|            <div class="col-sm-9"> | ||||
|             <Label Class="col-sm-3" For="server" HelpText="The server that was affected" ResourceKey="Server">Server: </Label> | ||||
| 			<div class="col-sm-9"> | ||||
|                 <input id="server" class="form-control" @bind="@_server" readonly /> | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
|  | ||||
|     <NavLink class="btn btn-secondary" href="@NavigateUrl()">@SharedLocalizer["Cancel"]</NavLink> | ||||
|  | ||||
|  | ||||
| @ -51,11 +51,11 @@ else | ||||
|     { | ||||
|         <Pager Items="@_logs"> | ||||
|             <Header> | ||||
|             <th style="width: 1px;"> </th> | ||||
|             <th>@Localizer["Date"]</th> | ||||
|             <th>@Localizer["Level"]</th> | ||||
|             <th>@Localizer["Feature"]</th> | ||||
|             <th>@Localizer["Function"]</th> | ||||
| 				<th style="width: 1px;"> </th> | ||||
| 				<th>@Localizer["Date"]</th> | ||||
| 				<th>@Localizer["Level"]</th> | ||||
| 				<th>@Localizer["Feature"]</th> | ||||
| 				<th>@Localizer["Function"]</th> | ||||
|             </Header> | ||||
|             <Row> | ||||
|                 <td class="@GetClass(context.Function)"><ActionLink Action="Detail" Parameters="@($"id=" + context.LogId.ToString())" ResourceKey="LogDetails" /></td> | ||||
|  | ||||
							
								
								
									
										123
									
								
								Oqtane.Client/Modules/Admin/Visitors/Detail.razor
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										123
									
								
								Oqtane.Client/Modules/Admin/Visitors/Detail.razor
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,123 @@ | ||||
| @namespace Oqtane.Modules.Admin.Visitors | ||||
| @using System.Globalization | ||||
| @inherits ModuleBase | ||||
| @inject NavigationManager NavigationManager | ||||
| @inject IVisitorService VisitorService | ||||
| @inject IUserService UserService | ||||
| @inject IStringLocalizer<Detail> Localizer | ||||
| @inject IStringLocalizer<SharedResources> SharedLocalizer | ||||
|  | ||||
|     <div class="container"> | ||||
|        <div class="row mb-1 align-items-center"> | ||||
|             <Label Class="col-sm-3" For="ip" HelpText="The last recorded IP address for this visitor" ResourceKey="IP">IP Address: </Label> | ||||
|             <div class="col-sm-9"> | ||||
|                 <input id="ip" class="form-control" @bind="@_ip" readonly /> | ||||
|             </div> | ||||
|        </div> | ||||
|        <div class="row mb-1 align-items-center"> | ||||
|             <Label Class="col-sm-3" For="language" HelpText="The last recorded language for this visitor" ResourceKey="Language">Language: </Label> | ||||
|             <div class="col-sm-9"> | ||||
|                 <input id="language" class="form-control" @bind="@_language" readonly /> | ||||
|             </div> | ||||
|        </div> | ||||
|        <div class="row mb-1 align-items-center"> | ||||
|             <Label Class="col-sm-3" For="useragent" HelpText="The last recorded user agent for this visitor" ResourceKey="UserAgent">User Agent: </Label> | ||||
|             <div class="col-sm-9"> | ||||
|                 <input id="useragent" class="form-control" @bind="@_useragent" readonly /> | ||||
|             </div> | ||||
|        </div> | ||||
|        <div class="row mb-1 align-items-center"> | ||||
|             <Label Class="col-sm-3" For="url" HelpText="The last recorded url for this visitor" ResourceKey="Url">Url: </Label> | ||||
|             <div class="col-sm-9"> | ||||
|                 <input id="url" class="form-control" @bind="@_url" readonly /> | ||||
|             </div> | ||||
|        </div> | ||||
|        <div class="row mb-1 align-items-center"> | ||||
|             <Label Class="col-sm-3" For="referrer" HelpText="The last recorded referrer for this visitor" ResourceKey="Referrer">Referrer: </Label> | ||||
|             <div class="col-sm-9"> | ||||
|                 <input id="referrer" class="form-control" @bind="@_referrer" readonly /> | ||||
|             </div> | ||||
|        </div> | ||||
|         @if (_user != string.Empty) | ||||
|         { | ||||
|            <div class="row mb-1 align-items-center"> | ||||
|                 <Label Class="col-sm-3" For="user" HelpText="The last recorded user associated with this visitor" ResourceKey="User">User: </Label> | ||||
|                 <div class="col-sm-9"> | ||||
|                     <input id="user" class="form-control" @bind="@_user" readonly /> | ||||
|                 </div> | ||||
|            </div> | ||||
|         } | ||||
|         <div class="row mb-1 align-items-center"> | ||||
|             <Label Class="col-sm-3" For="visits" HelpText="The total number of visits by this visitor all time" ResourceKey="Visits">Visits: </Label> | ||||
|             <div class="col-sm-9"> | ||||
|                 <input id="visits" class="form-control" @bind="@_visits" readonly /> | ||||
|             </div> | ||||
|         </div> | ||||
|         <div class="row mb-1 align-items-center"> | ||||
|             <Label Class="col-sm-3" For="visited" HelpText="The last recorded date/time when the visitor visited the site" ResourceKey="Visited">Visited: </Label> | ||||
|                 <div class="col-sm-9"> | ||||
|                 <input id="visited" class="form-control" @bind="@_visited" readonly /> | ||||
|             </div> | ||||
|         </div> | ||||
|        <div class="row mb-1 align-items-center"> | ||||
|             <Label Class="col-sm-3" For="created" HelpText="The first recorded date/time when this visitor visited the site" ResourceKey="Created">Created: </Label> | ||||
|             <div class="col-sm-9"> | ||||
|                 <input id="created" class="form-control" @bind="@_created" readonly /> | ||||
|             </div> | ||||
|        </div> | ||||
| 	</div> | ||||
|  | ||||
|     <NavLink class="btn btn-secondary" href="@NavigateUrl()">@SharedLocalizer["Cancel"]</NavLink> | ||||
|  | ||||
| @code { | ||||
| 	private int _visitorId; | ||||
| 	private string _ip = string.Empty; | ||||
| 	private string _language = string.Empty; | ||||
| 	private string _useragent = string.Empty; | ||||
| 	private string _url = string.Empty; | ||||
| 	private string _referrer = string.Empty; | ||||
| 	private string _user = string.Empty; | ||||
| 	private string _visits = string.Empty; | ||||
| 	private string _visited = string.Empty; | ||||
| 	private string _created = string.Empty; | ||||
|  | ||||
| 	public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; | ||||
|  | ||||
| 	protected override async Task OnInitializedAsync() | ||||
| 	{ | ||||
| 		try | ||||
| 		{ | ||||
| 			_visitorId = Int32.Parse(PageState.QueryString["id"]); | ||||
| 			var visitor = await VisitorService.GetVisitorAsync(_visitorId); | ||||
| 			if (visitor != null) | ||||
| 			{ | ||||
| 				_ip = visitor.IPAddress; | ||||
| 				_language = visitor.Language; | ||||
| 				_useragent = visitor.UserAgent; | ||||
| 				_url = visitor.Url; | ||||
| 				_referrer = visitor.Referrer; | ||||
| 				_visits = visitor.Visits.ToString(); | ||||
| 				_visited = visitor.VisitedOn.ToString(CultureInfo.CurrentCulture); | ||||
| 				_created = visitor.CreatedOn.ToString(CultureInfo.CurrentCulture); | ||||
|  | ||||
| 				if (visitor.UserId != null) | ||||
| 				{ | ||||
| 					var user = await UserService.GetUserAsync(visitor.UserId.Value, PageState.Site.SiteId); | ||||
| 					if (user != null) | ||||
| 					{ | ||||
| 						_user = user.DisplayName; | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				AddModuleMessage(Localizer["Error.LoadVisitor"], MessageType.Error); | ||||
| 			} | ||||
| 		} | ||||
| 		catch (Exception ex) | ||||
| 		{ | ||||
| 			await logger.LogError(ex, "Error Loading Visitor {VisitorId} {Error}", _visitorId, ex.Message); | ||||
| 			AddModuleMessage(Localizer["Error.LoadVisitor"], MessageType.Error); | ||||
| 		} | ||||
| 	} | ||||
|     } | ||||
| @ -33,13 +33,16 @@ else | ||||
| 			<br/> | ||||
| 			<Pager Items="@_visitors"> | ||||
| 				<Header> | ||||
| 					<th style="width: 1px;"> </th> | ||||
| 					<th>@Localizer["IP"]</th> | ||||
| 					<th>@Localizer["User"]</th> | ||||
| 					<th>@Localizer["Language"]</th> | ||||
| 					<th>@Localizer["Visits"]</th> | ||||
| 					<th>@Localizer["Visited"]</th> | ||||
| 					<th>@Localizer["Created"]</th> | ||||
| 				</Header> | ||||
| 				<Row> | ||||
| 					<td><ActionLink Action="Detail" Parameters="@($"id=" + context.VisitorId.ToString())" ResourceKey="Details" /></td> | ||||
| 					<td>@context.IPAddress</td> | ||||
| 					<td> | ||||
| 						@if (context.UserId != null) | ||||
| @ -50,6 +53,7 @@ else | ||||
| 					<td>@context.Language</td> | ||||
| 					<td>@context.Visits</td> | ||||
| 					<td>@context.VisitedOn</td> | ||||
| 					<td>@context.CreatedOn</td> | ||||
| 				</Row> | ||||
| 			</Pager> | ||||
| 	</TabPanel> | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Shaun Walker
					Shaun Walker