@namespace Oqtane.Modules.Controls @using Radzen @using Radzen.Blazor @using System.Text @inject DialogService DialogService @inject IStringLocalizer Localizer @if (_linkAttributes != null) { @if (!string.IsNullOrWhiteSpace(_message)) {
}
@if (_linkType == 0) {
} else {
} @if (_linkTextEditable) {
}
}
@code { class LinkAttributes { public string InnerText { get; set; } public string InnerHtml { get; set; } public string Href { get; set; } public string Target { get; set; } } [Parameter] public RadzenHtmlEditor Editor { get; set; } private IDictionary _linkTypes; private IDictionary _linkTargets; private LinkAttributes _linkAttributes; private bool _blank; private int _linkType; private string _message; private bool _linkTextEditable; private FileManager _fileManager; private File _previousFile; protected override async Task OnInitializedAsync() { await base.OnInitializedAsync(); _linkAttributes = await Editor.GetSelectionAttributes("a", new[] { "innerText", "href", "target" }); if (_linkAttributes.Target == "_blank") { _blank = true; } _linkTextEditable = string.IsNullOrWhiteSpace(_linkAttributes.InnerHtml) || _linkAttributes.InnerHtml == "
"; _linkTypes = new Dictionary { { 0, Localizer["WebLink"] }, { 1, Localizer["FileLink"] } }; _linkTargets = new Dictionary { { false, Localizer["OpenInExistingWindow"] }, { true, Localizer["OpenInNewWindow"] } }; } private void SelectFile() { var file = _fileManager.GetFile(); if(file != null) { _linkAttributes.Href = file.Url; if ((string.IsNullOrWhiteSpace(_linkAttributes.InnerText) || _linkAttributes.InnerText == _previousFile?.Name) && _linkTextEditable) { _linkAttributes.InnerText = file.Name; } } else { _linkAttributes.Href = string.Empty; if (_linkAttributes.InnerText == _previousFile?.Name) { _linkAttributes.InnerText = string.Empty; } } _previousFile = file; StateHasChanged(); } private void InsertLink() { _message = string.Empty; if (string.IsNullOrWhiteSpace(_linkAttributes.Href)) { _message = _linkType == 1 ? Localizer["Message.Require.File"] : Localizer["Message.Require.WebAddress"]; } else if (string.IsNullOrWhiteSpace(_linkAttributes.InnerText) && _linkTextEditable) { _message = Localizer["Message.Require.LinkText"]; } if (string.IsNullOrWhiteSpace(_message)) { var html = new StringBuilder(); html.AppendFormat("{0}", string.IsNullOrWhiteSpace(_linkAttributes.InnerText) ? _linkAttributes.InnerHtml : _linkAttributes.InnerText); DialogService.Close(html.ToString()); } else { StateHasChanged(); } } }