mirror of https://github.com/abpframework/abp.git
46 changed files with 1189 additions and 117 deletions
@ -0,0 +1,71 @@ |
|||||
|
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.Shared.Demos.NavbarsDemo |
||||
|
|
||||
|
<abp-component-demo-section title="Example" view-path="@NavbarsDemoViewComponent.ViewPath"> |
||||
|
<abp-nav-bar size="Lg" navbar-style="Dark_Dark"> |
||||
|
<a abp-navbar-brand href="#">Navbar</a> |
||||
|
<abp-navbar-toggle> |
||||
|
<abp-navbar-nav> |
||||
|
<abp-nav-item active="true"> |
||||
|
<a abp-nav-link href="#">Home <span class="sr-only">(current)</span></a> |
||||
|
</abp-nav-item> |
||||
|
<abp-nav-item> |
||||
|
<a abp-nav-link href="#">Link</a> |
||||
|
</abp-nav-item> |
||||
|
<abp-nav-item dropdown="true"> |
||||
|
<abp-dropdown> |
||||
|
<abp-dropdown-button nav-link="true" text="Dropdown" /> |
||||
|
<abp-dropdown-menu> |
||||
|
<abp-dropdown-header>Dropdown header</abp-dropdown-header> |
||||
|
<abp-dropdown-item href="#" active="true">Action</abp-dropdown-item> |
||||
|
<abp-dropdown-item href="#" disabled="true">Another disabled action</abp-dropdown-item> |
||||
|
<abp-dropdown-item href="#">Something else here</abp-dropdown-item> |
||||
|
<abp-dropdown-divider /> |
||||
|
<abp-dropdown-item href="#">Separated link</abp-dropdown-item> |
||||
|
</abp-dropdown-menu> |
||||
|
</abp-dropdown> |
||||
|
</abp-nav-item> |
||||
|
<abp-nav-item> |
||||
|
<a abp-nav-link disabled="true" href="#">Disabled</a> |
||||
|
</abp-nav-item> |
||||
|
</abp-navbar-nav> |
||||
|
<span abp-navbar-text> |
||||
|
Sample Text |
||||
|
</span> |
||||
|
</abp-navbar-toggle> |
||||
|
</abp-nav-bar> |
||||
|
</abp-component-demo-section> |
||||
|
|
||||
|
<abp-component-demo-section title="Example" view-path="@NavbarsDemoViewComponent.ViewPath"> |
||||
|
<abp-nav-bar size="Lg" navbar-style="Dark_Primary"> |
||||
|
<a abp-navbar-brand href="#">Navbar</a> |
||||
|
<abp-navbar-toggle> |
||||
|
<abp-navbar-nav> |
||||
|
<abp-nav-item active="true"> |
||||
|
<a abp-nav-link href="#">Home <span class="sr-only">(current)</span></a> |
||||
|
</abp-nav-item> |
||||
|
<abp-nav-item> |
||||
|
<a abp-nav-link href="#">Link</a> |
||||
|
</abp-nav-item> |
||||
|
<abp-nav-item dropdown="true"> |
||||
|
<abp-dropdown> |
||||
|
<abp-dropdown-button nav-link="true" text="Dropdown" /> |
||||
|
<abp-dropdown-menu> |
||||
|
<abp-dropdown-header>Dropdown header</abp-dropdown-header> |
||||
|
<abp-dropdown-item href="#" active="true">Action</abp-dropdown-item> |
||||
|
<abp-dropdown-item href="#" disabled="true">Another disabled action</abp-dropdown-item> |
||||
|
<abp-dropdown-item href="#">Something else here</abp-dropdown-item> |
||||
|
<abp-dropdown-divider /> |
||||
|
<abp-dropdown-item href="#">Separated link</abp-dropdown-item> |
||||
|
</abp-dropdown-menu> |
||||
|
</abp-dropdown> |
||||
|
</abp-nav-item> |
||||
|
<abp-nav-item> |
||||
|
<a abp-nav-link disabled="true" href="#">Disabled</a> |
||||
|
</abp-nav-item> |
||||
|
</abp-navbar-nav> |
||||
|
<span abp-navbar-text> |
||||
|
Sample Text |
||||
|
</span> |
||||
|
</abp-navbar-toggle> |
||||
|
</abp-nav-bar> |
||||
|
</abp-component-demo-section> |
||||
@ -0,0 +1,16 @@ |
|||||
|
using Microsoft.AspNetCore.Mvc; |
||||
|
using Volo.Abp.AspNetCore.Mvc.UI.Widgets; |
||||
|
|
||||
|
namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.Shared.Demos.NavbarsDemo |
||||
|
{ |
||||
|
[Widget] |
||||
|
public class NavbarsDemoViewComponent : AbpViewComponent |
||||
|
{ |
||||
|
public const string ViewPath = "/Views/Components/Themes/Shared/Demos/NavbarsDemo/Default.cshtml"; |
||||
|
|
||||
|
public IViewComponentResult Invoke() |
||||
|
{ |
||||
|
return View(ViewPath); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -1,16 +1,16 @@ |
|||||
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.Shared.Demos.PopoversDemo |
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.Shared.Demos.PopoversDemo |
||||
|
|
||||
<abp-component-demo-section title="Example" view-path="@PopoversDemoViewComponent.ViewPath"> |
<abp-component-demo-section title="Example" view-path="@PopoversDemoViewComponent.ViewPath"> |
||||
<abp-button abp-popover="Hi, i'm popover content!"> |
<abp-button button-type="Outline_Secondary" abp-popover="Hi, i'm popover content!"> |
||||
Popover Default |
Popover Default |
||||
</abp-button> |
</abp-button> |
||||
<abp-button abp-popover-top="Hi, i'm popover content!" title="Popover Title"> |
<abp-button button-type="Outline_Secondary" abp-popover-top="Hi, i'm popover content!" title="Popover Title"> |
||||
Popover With Title |
Popover With Title |
||||
</abp-button> |
</abp-button> |
||||
<abp-button abp-popover-right="Hi, i'm popover content!" title="Popover Title" dismissible="true"> |
<abp-button button-type="Outline_Secondary" abp-popover-right="Hi, i'm popover content!" title="Popover Title" dismissible="true"> |
||||
Dismissible Popover |
Dismissible Popover |
||||
</abp-button> |
</abp-button> |
||||
<abp-button abp-popover-left="Hi, i'm popover content!" title="Popover Title" disabled="true"> |
<abp-button button-type="Outline_Danger" abp-popover-left="Hi, i'm popover content!" title="Popover Title" disabled="true"> |
||||
Disabled Popover |
Disabled Popover |
||||
</abp-button> |
</abp-button> |
||||
</abp-component-demo-section> |
</abp-component-demo-section> |
||||
|
|||||
@ -0,0 +1,44 @@ |
|||||
|
using System.Text; |
||||
|
using System.Threading.Tasks; |
||||
|
using Volo.Abp.Cli.Args; |
||||
|
using Volo.Abp.Cli.ProjectModification; |
||||
|
using Volo.Abp.DependencyInjection; |
||||
|
|
||||
|
namespace Volo.Abp.Cli.Commands |
||||
|
{ |
||||
|
public class SwitchNightlyPreviewCommand : IConsoleCommand, ITransientDependency |
||||
|
{ |
||||
|
private readonly PackageSourceSwitcher _packageSourceSwitcher; |
||||
|
|
||||
|
public SwitchNightlyPreviewCommand(PackageSourceSwitcher packageSourceSwitcher) |
||||
|
{ |
||||
|
_packageSourceSwitcher = packageSourceSwitcher; |
||||
|
} |
||||
|
|
||||
|
public async Task ExecuteAsync(CommandLineArgs commandLineArgs) |
||||
|
{ |
||||
|
await _packageSourceSwitcher.SwitchToPreview(commandLineArgs); |
||||
|
} |
||||
|
|
||||
|
public string GetUsageInfo() |
||||
|
{ |
||||
|
var sb = new StringBuilder(); |
||||
|
|
||||
|
sb.AppendLine(""); |
||||
|
sb.AppendLine("Usage:"); |
||||
|
sb.AppendLine(" abp switch-to-preview [options]"); |
||||
|
sb.AppendLine(""); |
||||
|
sb.AppendLine("Options:"); |
||||
|
sb.AppendLine("-sp|--solution-path"); |
||||
|
sb.AppendLine(""); |
||||
|
sb.AppendLine("See the documentation for more info: https://docs.abp.io/en/abp/latest/CLI"); |
||||
|
|
||||
|
return sb.ToString(); |
||||
|
} |
||||
|
|
||||
|
public string GetShortDescription() |
||||
|
{ |
||||
|
return "Switches packages to nightly preview ABP version."; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,44 @@ |
|||||
|
using System.Text; |
||||
|
using System.Threading.Tasks; |
||||
|
using Volo.Abp.Cli.Args; |
||||
|
using Volo.Abp.Cli.ProjectModification; |
||||
|
using Volo.Abp.DependencyInjection; |
||||
|
|
||||
|
namespace Volo.Abp.Cli.Commands |
||||
|
{ |
||||
|
public class SwitchStableCommand : IConsoleCommand, ITransientDependency |
||||
|
{ |
||||
|
private readonly PackageSourceSwitcher _packageSourceSwitcher; |
||||
|
|
||||
|
public SwitchStableCommand(PackageSourceSwitcher packageSourceSwitcher) |
||||
|
{ |
||||
|
_packageSourceSwitcher = packageSourceSwitcher; |
||||
|
} |
||||
|
|
||||
|
public async Task ExecuteAsync(CommandLineArgs commandLineArgs) |
||||
|
{ |
||||
|
await _packageSourceSwitcher.SwitchToStable(commandLineArgs); |
||||
|
} |
||||
|
|
||||
|
public string GetUsageInfo() |
||||
|
{ |
||||
|
var sb = new StringBuilder(); |
||||
|
|
||||
|
sb.AppendLine(""); |
||||
|
sb.AppendLine("Usage:"); |
||||
|
sb.AppendLine(" abp switch-to-stable [options]"); |
||||
|
sb.AppendLine(""); |
||||
|
sb.AppendLine("Options:"); |
||||
|
sb.AppendLine("-sp|--solution-path"); |
||||
|
sb.AppendLine(""); |
||||
|
sb.AppendLine("See the documentation for more info: https://docs.abp.io/en/abp/latest/CLI"); |
||||
|
|
||||
|
return sb.ToString(); |
||||
|
} |
||||
|
|
||||
|
public string GetShortDescription() |
||||
|
{ |
||||
|
return "Switches packages to stable ABP version from preview version."; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,11 @@ |
|||||
|
using System.Collections.Generic; |
||||
|
|
||||
|
namespace Volo.Abp.Cli.ProjectModification |
||||
|
{ |
||||
|
public class MyGetApiResponse |
||||
|
{ |
||||
|
public string _date { get; set; } |
||||
|
|
||||
|
public List<MyGetPackage> Packages { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,15 @@ |
|||||
|
using System.Collections.Generic; |
||||
|
|
||||
|
namespace Volo.Abp.Cli.ProjectModification |
||||
|
{ |
||||
|
public class MyGetPackage |
||||
|
{ |
||||
|
public string PackageType { get; set; } |
||||
|
|
||||
|
public string Id { get; set; } |
||||
|
|
||||
|
public List<string> Versions { get; set; } |
||||
|
|
||||
|
public List<string> Dates { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,51 @@ |
|||||
|
using System; |
||||
|
using System.Text; |
||||
|
using System.Threading.Tasks; |
||||
|
using Microsoft.Extensions.Logging; |
||||
|
using Microsoft.Extensions.Logging.Abstractions; |
||||
|
using Newtonsoft.Json; |
||||
|
using Volo.Abp.Cli.Http; |
||||
|
using Volo.Abp.DependencyInjection; |
||||
|
|
||||
|
namespace Volo.Abp.Cli.ProjectModification |
||||
|
{ |
||||
|
public class MyGetPackageListFinder : ISingletonDependency |
||||
|
{ |
||||
|
private MyGetApiResponse _response; |
||||
|
|
||||
|
public ILogger<MyGetPackageListFinder> Logger { get; set; } |
||||
|
|
||||
|
public MyGetPackageListFinder() |
||||
|
{ |
||||
|
Logger = NullLogger<MyGetPackageListFinder>.Instance; |
||||
|
} |
||||
|
|
||||
|
public async Task<MyGetApiResponse> GetPackages() |
||||
|
{ |
||||
|
if (_response != null) |
||||
|
{ |
||||
|
return _response; |
||||
|
} |
||||
|
|
||||
|
try |
||||
|
{ |
||||
|
using (var client = new CliHttpClient(TimeSpan.FromMinutes(10))) |
||||
|
{ |
||||
|
var responseMessage = await client.GetAsync( |
||||
|
$"{CliUrls.WwwAbpIo}api/myget/packages/" |
||||
|
); |
||||
|
|
||||
|
_response = JsonConvert.DeserializeObject<MyGetApiResponse>(Encoding.Default.GetString(await responseMessage.Content.ReadAsByteArrayAsync())); |
||||
|
} |
||||
|
} |
||||
|
catch (Exception) |
||||
|
{ |
||||
|
Logger.LogError("Unable to get latest preview version."); |
||||
|
throw; |
||||
|
} |
||||
|
|
||||
|
return _response; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,76 @@ |
|||||
|
using System; |
||||
|
using System.IO; |
||||
|
using System.Xml; |
||||
|
using Microsoft.Extensions.Logging; |
||||
|
using Microsoft.Extensions.Logging.Abstractions; |
||||
|
using Volo.Abp.DependencyInjection; |
||||
|
|
||||
|
namespace Volo.Abp.Cli.ProjectModification |
||||
|
{ |
||||
|
public class PackageSourceAdder: ITransientDependency |
||||
|
{ |
||||
|
public ILogger<PackageSourceAdder> Logger { get; set; } |
||||
|
|
||||
|
public PackageSourceAdder() |
||||
|
{ |
||||
|
Logger = NullLogger<PackageSourceAdder>.Instance; |
||||
|
} |
||||
|
|
||||
|
public void Add(string sourceKey, string sourceValue) |
||||
|
{ |
||||
|
var nugetConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), |
||||
|
"NuGet", "NuGet.Config"); |
||||
|
|
||||
|
if (!File.Exists(nugetConfigPath)) |
||||
|
{ |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
var fileContent = File.ReadAllText(nugetConfigPath); |
||||
|
|
||||
|
if (fileContent.Contains($"\"{sourceValue}\"")) |
||||
|
{ |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
Logger.LogInformation($"Adding \"{sourceValue}\" ({sourceKey}) to nuget sources..."); |
||||
|
|
||||
|
try |
||||
|
{ |
||||
|
var doc = new XmlDocument() { PreserveWhitespace = true }; |
||||
|
|
||||
|
doc.Load(GenerateStreamFromString(fileContent)); |
||||
|
|
||||
|
var sourceNodes = doc.SelectNodes("/configuration/packageSources"); |
||||
|
|
||||
|
var newNode = doc.CreateElement("add"); |
||||
|
|
||||
|
var includeAttr = doc.CreateAttribute("key"); |
||||
|
includeAttr.Value = sourceKey; |
||||
|
newNode.Attributes.Append(includeAttr); |
||||
|
|
||||
|
var versionAttr = doc.CreateAttribute("value"); |
||||
|
versionAttr.Value = sourceValue; |
||||
|
newNode.Attributes.Append(versionAttr); |
||||
|
|
||||
|
sourceNodes?[0]?.AppendChild(newNode); |
||||
|
|
||||
|
File.WriteAllText(nugetConfigPath, doc.OuterXml); |
||||
|
} |
||||
|
catch |
||||
|
{ |
||||
|
Logger.LogWarning($"Adding \"{sourceValue}\" ({sourceKey}) to nuget sources FAILED."); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
private static Stream GenerateStreamFromString(string s) |
||||
|
{ |
||||
|
var stream = new MemoryStream(); |
||||
|
var writer = new StreamWriter(stream); |
||||
|
writer.Write(s); |
||||
|
writer.Flush(); |
||||
|
stream.Position = 0; |
||||
|
return stream; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,86 @@ |
|||||
|
using System; |
||||
|
using System.IO; |
||||
|
using System.Linq; |
||||
|
using System.Threading.Tasks; |
||||
|
using Microsoft.Extensions.Logging; |
||||
|
using Microsoft.Extensions.Logging.Abstractions; |
||||
|
using Volo.Abp.Cli.Args; |
||||
|
using Volo.Abp.DependencyInjection; |
||||
|
|
||||
|
namespace Volo.Abp.Cli.ProjectModification |
||||
|
{ |
||||
|
public class PackageSourceSwitcher : ITransientDependency |
||||
|
{ |
||||
|
private readonly PackageSourceAdder _packageSourceAdder; |
||||
|
private readonly NpmPackagesUpdater _npmPackagesUpdater; |
||||
|
private readonly VoloNugetPackagesVersionUpdater _nugetPackagesVersionUpdater; |
||||
|
|
||||
|
public ILogger<PackageSourceSwitcher> Logger { get; set; } |
||||
|
|
||||
|
public PackageSourceSwitcher(PackageSourceAdder packageSourceAdder, |
||||
|
NpmPackagesUpdater npmPackagesUpdater, |
||||
|
VoloNugetPackagesVersionUpdater nugetPackagesVersionUpdater) |
||||
|
{ |
||||
|
_packageSourceAdder = packageSourceAdder; |
||||
|
_npmPackagesUpdater = npmPackagesUpdater; |
||||
|
_nugetPackagesVersionUpdater = nugetPackagesVersionUpdater; |
||||
|
Logger = NullLogger<PackageSourceSwitcher>.Instance; |
||||
|
} |
||||
|
|
||||
|
public async Task SwitchToPreview(CommandLineArgs commandLineArgs) |
||||
|
{ |
||||
|
_packageSourceAdder.Add("ABP Nightly", "https://www.myget.org/F/abp-nightly/api/v3/index.json"); |
||||
|
|
||||
|
await _nugetPackagesVersionUpdater.UpdateSolutionAsync( |
||||
|
GetSolutionPath(commandLineArgs), |
||||
|
true); |
||||
|
|
||||
|
await _npmPackagesUpdater.Update( |
||||
|
Path.GetFileName(GetSolutionPath(commandLineArgs)), |
||||
|
true); |
||||
|
} |
||||
|
|
||||
|
public async Task SwitchToStable(CommandLineArgs commandLineArgs) |
||||
|
{ |
||||
|
await _nugetPackagesVersionUpdater.UpdateSolutionAsync( |
||||
|
GetSolutionPath(commandLineArgs), |
||||
|
false, |
||||
|
true); |
||||
|
|
||||
|
await _npmPackagesUpdater.Update( |
||||
|
Path.GetFileName(GetSolutionPath(commandLineArgs)), |
||||
|
false, |
||||
|
true); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
private string GetSolutionPath(CommandLineArgs commandLineArgs) |
||||
|
{ |
||||
|
var solutionPath = commandLineArgs.Options.GetOrNull(Options.SolutionPath.Short, Options.SolutionPath.Long); |
||||
|
|
||||
|
if (solutionPath == null) |
||||
|
{ |
||||
|
try |
||||
|
{ |
||||
|
solutionPath = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.sln").Single(); |
||||
|
} |
||||
|
catch (Exception) |
||||
|
{ |
||||
|
Logger.LogError("There is no solution or more that one solution in current directory."); |
||||
|
throw; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return solutionPath; |
||||
|
} |
||||
|
|
||||
|
public static class Options |
||||
|
{ |
||||
|
public static class SolutionPath |
||||
|
{ |
||||
|
public const string Short = "sp"; |
||||
|
public const string Long = "solution-path"; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -1,7 +1,6 @@ |
|||||
@page |
@page |
||||
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.Shared.Demos.AlertsDemo |
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.Shared.Demos.AlertsDemo |
||||
@model Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.Pages.Components.Alerts.IndexModel |
@model Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.Pages.Components.Alerts.IndexModel |
||||
|
|
||||
<h2>Alerts</h2> |
<h2>Alerts</h2> |
||||
<p>Based on <a href="https://getbootstrap.com/docs/4.1/components/alerts/" target="_blank"> Bootstrap Alert</a>.</p> |
<p>Based on <a href="https://getbootstrap.com/docs/4.1/components/alerts/" target="_blank"> Bootstrap Alert</a>.</p> |
||||
|
|
||||
|
|||||
@ -1,7 +1,6 @@ |
|||||
@page |
@page |
||||
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.Shared.Demos.BadgesDemo |
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.Shared.Demos.BadgesDemo |
||||
@model Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.Pages.Components.Badges.IndexModel |
@model Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.Pages.Components.Badges.IndexModel |
||||
|
|
||||
<h2>Badges</h2> |
<h2>Badges</h2> |
||||
<p>Based on <a href="https://getbootstrap.com/docs/4.1/components/badge/" target="_blank"> Bootstrap Badge</a>.</p> |
<p>Based on <a href="https://getbootstrap.com/docs/4.1/components/badge/" target="_blank"> Bootstrap Badge</a>.</p> |
||||
|
|
||||
|
|||||
@ -0,0 +1,7 @@ |
|||||
|
@page |
||||
|
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.Shared.Demos.NavbarsDemo |
||||
|
@model Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.Pages.Components.Modals.IndexModel |
||||
|
<h2>Navbars</h2> |
||||
|
<p>Based on <a href="https://getbootstrap.com/docs/4.1/components/navbar/" target="_blank"> Bootstrap Navbar</a>.</p> |
||||
|
|
||||
|
@await Component.InvokeAsync(typeof(NavbarsDemoViewComponent)) |
||||
@ -0,0 +1,17 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Threading.Tasks; |
||||
|
using Microsoft.AspNetCore.Mvc; |
||||
|
using Microsoft.AspNetCore.Mvc.RazorPages; |
||||
|
|
||||
|
namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo |
||||
|
{ |
||||
|
public class IndexModel : PageModel |
||||
|
{ |
||||
|
public void OnGet() |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,45 @@ |
|||||
|
{ |
||||
|
"culture": "sl", |
||||
|
"texts": { |
||||
|
"UserName": "Uporabniško ime", |
||||
|
"EmailAddress": "E-poštni naslov", |
||||
|
"UserNameOrEmailAddress": "Uporabniško ime ali e-poštni naslov", |
||||
|
"Password": "Geslo", |
||||
|
"RememberMe": "Zapomni si me", |
||||
|
"UseAnotherServiceToLogin": "Uporabi drugo storitev za prijavo", |
||||
|
"UserLockedOutMessage": "Uporabniški račun je bil zaklenjen zaradi neveljavnih poskusov prijave. Počakajte nekaj časa in poskusite znova.", |
||||
|
"InvalidUserNameOrPassword": "Napačno uporabniško ime ali geslo!", |
||||
|
"LoginIsNotAllowed": "Nimate dovoljenja za prijavo! Potrditi morate e-poštni naslov/telefonsko številko.", |
||||
|
"SelfRegistrationDisabledMessage": "Možnost lastne registracije uporabnika je onemogočena za to aplikacijo. Kontaktirajte skrbnika aplikacije, da registrirate novega uporabnika.", |
||||
|
"LocalLoginDisabledMessage": "Lokalna prijava za to aplikacijo je onemogočena.", |
||||
|
"Login": "Prijava", |
||||
|
"Cancel": "Prekliči", |
||||
|
"Register": "Registracija", |
||||
|
"AreYouANewUser": "Ste nov uporabnik?", |
||||
|
"AlreadyRegistered": "Ste že registrirani?", |
||||
|
"InvalidLoginRequest": "Nepravilna zahteva za prijavo", |
||||
|
"ThereAreNoLoginSchemesConfiguredForThisClient": "Za to stranko ni konfiguriranih prijavnih shem.", |
||||
|
"LogInUsingYourProviderAccount": "Prijavite se z uporabo vašega {0} računa", |
||||
|
"DisplayName:CurrentPassword": "Trenutno geslo", |
||||
|
"DisplayName:NewPassword": "Novo geslo", |
||||
|
"DisplayName:NewPasswordConfirm": "Potrdite novo geslo", |
||||
|
"PasswordChangedMessage": "Vaše geslo je bilo uspešno spremenjeno.", |
||||
|
"DisplayName:UserName": "Uporabniško ime", |
||||
|
"DisplayName:Email": "E-poštni naslov", |
||||
|
"DisplayName:Name": "Ime", |
||||
|
"DisplayName:Surname": "Priimek", |
||||
|
"DisplayName:Password": "Password", |
||||
|
"DisplayName:EmailAddress": "E-poštni naslov", |
||||
|
"DisplayName:PhoneNumber": "Telefonska številka", |
||||
|
"PersonalSettings": "Osebne nastavitve", |
||||
|
"PersonalSettingsSaved": "Osebne nastavitve so shranjene", |
||||
|
"PasswordChanged": "Geslo je spremenjeno", |
||||
|
"NewPasswordConfirmFailed": "Prosimo potrdite novo geslo.", |
||||
|
"Manage": "Upravljaj", |
||||
|
"ManageYourProfile": "Upravljaj svoj profil", |
||||
|
"DisplayName:Abp.Account.IsSelfRegistrationEnabled": "Je lastna registracija uporabnika omogočena", |
||||
|
"Description:Abp.Account.IsSelfRegistrationEnabled": "Ali lahko uporabnik sam registrira račun.", |
||||
|
"DisplayName:Abp.Account.EnableLocalLogin": "Avtenticirajte se z lokalnim računom", |
||||
|
"Description:Abp.Account.EnableLocalLogin": "Označuje, ali bo strežnik uporabnikom omogočil avtentikacijo z lokalnim računom." |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,14 @@ |
|||||
|
{ |
||||
|
"culture": "sl", |
||||
|
"texts": { |
||||
|
"Permission:Blogging": "Blog", |
||||
|
"Permission:Blogs": "Blogi", |
||||
|
"Permission:Posts": "Objave", |
||||
|
"Permission:Tags": "Oznake", |
||||
|
"Permission:Comments": "Komentarji", |
||||
|
"Permission:Management": "Upravljanje", |
||||
|
"Permission:Edit": "Urejanje", |
||||
|
"Permission:Create": "Ustvarjanje", |
||||
|
"Permission:Delete": "Brisanje" |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,47 @@ |
|||||
|
{ |
||||
|
"culture": "sl", |
||||
|
"texts": { |
||||
|
"Menu:Blogs": "Blogi", |
||||
|
"Menu:BlogManagement": "Upravljanje bloga", |
||||
|
"Title": "Naslov", |
||||
|
"Delete": "Izbriši", |
||||
|
"Reply": "Odgovori", |
||||
|
"ReplyTo": "Odgovori {0}", |
||||
|
"ContinueReading": "Nadaljuj z branjem", |
||||
|
"DaysAgo": "{0} dni nazaj", |
||||
|
"YearsAgo": "{0} let nazaj", |
||||
|
"MonthsAgo": "{0} mesecev nazaj", |
||||
|
"WeeksAgo": "{0} tednov nazaj", |
||||
|
"MinutesAgo": "{0} minut nazaj", |
||||
|
"SecondsAgo": "{0} sekund nazaj", |
||||
|
"HoursAgo": "{0} ur nazaj", |
||||
|
"Now": "zdaj", |
||||
|
"Content": "Vsebina", |
||||
|
"SeeAll": "Poglej vse", |
||||
|
"PopularTags": "Priljubljene oznake", |
||||
|
"WiewsWithCount": "{0} ogledov", |
||||
|
"LastPosts": "Zadnje objave", |
||||
|
"LeaveComment": "Pusti komentar", |
||||
|
"TagsInThisArticle": "Oznake v tem članku", |
||||
|
"Posts": "Objave", |
||||
|
"Edit": "Uredi", |
||||
|
"BLOG": "BLOG", |
||||
|
"CommentDeletionWarningMessage": "Komentar bo izbrisan.", |
||||
|
"PostDeletionWarningMessage": "Objava bo izbrisana.", |
||||
|
"BlogDeletionWarningMessage": "Blog bo izbrisan.", |
||||
|
"AreYouSure": "Ali ste prepričani?", |
||||
|
"CommentWithCount": "{0} komentarjev", |
||||
|
"Comment": "Komentiraj", |
||||
|
"ShareOnTwitter": "Deli na Twitterju", |
||||
|
"CoverImage": "Naslovna slika", |
||||
|
"CreateANewPost": "Ustvari novo objavo", |
||||
|
"CreateANewBlog": "Ustvari nov blog", |
||||
|
"WhatIsNew": "Kaj je novega?", |
||||
|
"Name": "Naziv", |
||||
|
"ShortName": "Kratek naziv", |
||||
|
"CreationTime": "Čas nastanka", |
||||
|
"Description": "Opis", |
||||
|
"Blogs": "Blogi", |
||||
|
"Tags": "Oznake" |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,10 @@ |
|||||
|
{ |
||||
|
"culture": "sl", |
||||
|
"texts": { |
||||
|
"DocsTitle": "VoloDocs", |
||||
|
"WelcomeVoloDocs": "Dobrodošli na VoloDocs!", |
||||
|
"NoProjectWarning": "Ni še definiranega nobenega projekta!", |
||||
|
"CreateYourFirstProject": "Kliknite tukaj, da začnete svoj prvi projekt", |
||||
|
"NoProject": "Ni projekta!" |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,37 @@ |
|||||
|
{ |
||||
|
"culture": "sl", |
||||
|
"texts": { |
||||
|
"Permission:DocumentManagement": "Upravljanje dokumentov", |
||||
|
"Permission:Projects": "Projekti", |
||||
|
"Permission:Edit": "Urejanje", |
||||
|
"Permission:Delete": "Brisanje", |
||||
|
"Permission:Create": "Ustvarjanje", |
||||
|
"Permission:Documents": "Dokumenti", |
||||
|
"Menu:DocumentManagement": "Dokumenti", |
||||
|
"Menu:ProjectManagement": "Projekti", |
||||
|
"CreateANewProject": "Ustvari nov projekt", |
||||
|
"Edit": "Uredi", |
||||
|
"Create": "Ustvari", |
||||
|
"Pull": "Prenesi", |
||||
|
"Projects": "Projekti", |
||||
|
"Name": "Name", |
||||
|
"ShortName": "ShortName", |
||||
|
"DocumentStoreType": "DocumentStoreType", |
||||
|
"Format": "Format", |
||||
|
"ShortNameInfoText": "Bo uporabljen za unikaten URL.", |
||||
|
"DisplayName:Name": "Naziv", |
||||
|
"DisplayName:ShortName": "Kratek naziv", |
||||
|
"DisplayName:Format": "Format", |
||||
|
"DisplayName:DefaultDocumentName": "Privzeti naziv dokumenta", |
||||
|
"DisplayName:NavigationDocumentName": "Naziv dokumenta za navigacijo", |
||||
|
"DisplayName:MinimumVersion": "Najnižja verzija", |
||||
|
"DisplayName:MainWebsiteUrl": "URL glavne strani", |
||||
|
"DisplayName:LatestVersionBranchName": "Naziv veje zadnje verzije", |
||||
|
"DisplayName:GitHubRootUrl": "Korenski URL na GitHub", |
||||
|
"DisplayName:GitHubAccessToken": "GitHub access token", |
||||
|
"DisplayName:GitHubUserAgent": "GitHub user agent", |
||||
|
"DisplayName:All": "Prenesi vse", |
||||
|
"DisplayName:LanguageCode": "Koda jezika", |
||||
|
"DisplayName:Version": "Verzija" |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,26 @@ |
|||||
|
{ |
||||
|
"culture": "sl", |
||||
|
"texts": { |
||||
|
"Documents": "Dokumenti", |
||||
|
"BackToWebsite": "Nazaj na spletno stran", |
||||
|
"Contributors": "Sodelujoči", |
||||
|
"ShareOn": "Deli na", |
||||
|
"Version": "Verzija", |
||||
|
"Edit": "Uredi", |
||||
|
"LastEditTime": "Zadnje urejanje", |
||||
|
"Delete": "Izbriši", |
||||
|
"InThisDocument": "V tem dokumentu", |
||||
|
"GoToTop": "Pojdi na vrh", |
||||
|
"Projects": "Projekt(i)", |
||||
|
"NoProjectWarning": "Ni še nobenega projekta!", |
||||
|
"DocumentNotFound": "Ups, zahtevanega dokumenta ni bilo mogoče najti!", |
||||
|
"NavigationDocumentNotFound": "Ta verzija nima navigacijskega dokumenta!", |
||||
|
"DocumentNotFoundInSelectedLanguage": "Dokumenta v želenem jeziku ni mogoče najti. Prikazan je dokument v privzetem jeziku.", |
||||
|
"FilterTopics": "Filtriraj teme", |
||||
|
"MultipleVersionDocumentInfo": "Ta dokument ima več verzij. Izberite možnosti, ki so najprimernejše.", |
||||
|
"New": "Nov", |
||||
|
"Upd": "Posod.", |
||||
|
"NewExplanation": "Ustvarjeno v zadnjih dveh tednih.", |
||||
|
"UpdatedExplanation": "Posodobljeno v zadnjih dveh tednih." |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,7 @@ |
|||||
|
{ |
||||
|
"culture": "sl", |
||||
|
"texts": { |
||||
|
"Features": "Funkcionalnosti", |
||||
|
"NoFeatureFoundMessage": "Na voljo ni nobene funkcionalnosti." |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,102 @@ |
|||||
|
{ |
||||
|
"culture": "sl", |
||||
|
"texts": { |
||||
|
"Menu:IdentityManagement": "Upravljanje identitet", |
||||
|
"Users": "Uporabniki", |
||||
|
"NewUser": "Nov uporabnik", |
||||
|
"UserName": "Uporabniško ime", |
||||
|
"EmailAddress": "E-poštni naslov", |
||||
|
"PhoneNumber": "Telefonska številka", |
||||
|
"UserInformations": "Informacije o uporabniku", |
||||
|
"DisplayName:IsDefault": "Privzeto", |
||||
|
"DisplayName:IsStatic": "Statično", |
||||
|
"DisplayName:IsPublic": "Javno", |
||||
|
"Roles": "Vloge", |
||||
|
"Password": "Geslo", |
||||
|
"PersonalInfo": "Moj profil", |
||||
|
"PersonalSettings": "Osebne nastavitve", |
||||
|
"UserDeletionConfirmationMessage": "Uporabnik '{0}' bo izbrisan. Ali to potrjujete?", |
||||
|
"RoleDeletionConfirmationMessage": "Vloga '{0}' bo izbrisana. Ali to potrjujete?", |
||||
|
"DisplayName:RoleName": "Naziv vloge", |
||||
|
"DisplayName:UserName": "Uporabniško ime", |
||||
|
"DisplayName:Name": "Ime", |
||||
|
"DisplayName:Surname": "Priimek", |
||||
|
"DisplayName:Password": "Geslo", |
||||
|
"DisplayName:Email": "E-poštni naslov", |
||||
|
"DisplayName:PhoneNumber": "Telefonska številka", |
||||
|
"DisplayName:TwoFactorEnabled": "Dvostopenjsko preverjanje", |
||||
|
"DisplayName:LockoutEnabled": "Zaklepanje računa po neuspelih poskusih prijave", |
||||
|
"NewRole": "Nova vloga", |
||||
|
"RoleName": "Naziv vloge", |
||||
|
"CreationTime": "Čas nastanka", |
||||
|
"Permissions": "Dovoljenja", |
||||
|
"DisplayName:CurrentPassword": "Trenutno geslo", |
||||
|
"DisplayName:NewPassword": "Novo geslo", |
||||
|
"DisplayName:NewPasswordConfirm": "Potrdite novo geslo", |
||||
|
"PasswordChangedMessage": "Vaše geslo je bilo uspešno spremenjeno.", |
||||
|
"PersonalSettingsSavedMessage": "Vaše osebne nastavitve so bile uspešno shranjene.", |
||||
|
"Identity.DefaultError": "Zgodila se je neznana napaka.", |
||||
|
"Identity.ConcurrencyFailure": "Napaka pri optimistični sočasnosti, objekt je bil spremenjen.", |
||||
|
"Identity.DuplicateEmail": "E-poštni naslov '{0}' je že zaseden.", |
||||
|
"Identity.DuplicateRoleName": "Naziv vloge '{0}' je že zasedeno.", |
||||
|
"Identity.DuplicateUserName": "Uporabniško ime '{0}' je že zasedeno.", |
||||
|
"Identity.InvalidEmail": "E-poštni naslov '{0}' ni veljaven.", |
||||
|
"Identity.InvalidPasswordHasherCompatibilityMode": "Navedeni PasswordHasherCompatibilityMode ni veljaven.", |
||||
|
"Identity.InvalidPasswordHasherIterationCount": "Število iteracij mora biti pozitivno celo število.", |
||||
|
"Identity.InvalidRoleName": "Naziv vloge '{0}' ni veljaven.", |
||||
|
"Identity.InvalidToken": "Neveljaven žeton.", |
||||
|
"Identity.InvalidUserName": "Uporabniško ime '{0}' ni veljavno, vsebuje lahko le črke in številke.", |
||||
|
"Identity.LoginAlreadyAssociated": "Uporabnik s to prijavo že obstaja.", |
||||
|
"Identity.PasswordMismatch": "Nepravilno geslo.", |
||||
|
"Identity.PasswordRequiresDigit": "Gesla morajo imeti vsaj eno številko ('0'-'9').", |
||||
|
"Identity.PasswordRequiresLower": "Gesla morajo imeti vsaj eno malo črko ('a'-'z').", |
||||
|
"Identity.PasswordRequiresNonAlphanumeric": "Gesla morajo imeti vsaj en ne-alfanumerični znak.", |
||||
|
"Identity.PasswordRequiresUpper": "Gesla morajo imeti vsaj eno veliko črko ('A'-'Z').", |
||||
|
"Identity.PasswordTooShort": "Gesla morajo biti dolga vsaj {0} znakov.", |
||||
|
"Identity.RoleNotFound": "Vloga {0} ne obstaja.", |
||||
|
"Identity.UserAlreadyHasPassword": "Uporabnik že ima nastavljeno geslo.", |
||||
|
"Identity.UserAlreadyInRole": "Uporabnik že ima dodeljeno vlogo '{0}'.", |
||||
|
"Identity.UserLockedOut": "Uporabnik je zaklenjen.", |
||||
|
"Identity.UserLockoutNotEnabled": "Zaklepanje za tega uporabnika ni omogočeno.", |
||||
|
"Identity.UserNameNotFound": "Uporabnik {0} ne obstaja.", |
||||
|
"Identity.UserNotInRole": "Uporabnik nima dodeljene vloge '{0}'.", |
||||
|
"Identity.PasswordConfirmationFailed": "Geslo se ne ujema s potrditvenim geslom.", |
||||
|
"Identity.StaticRoleRenamingErrorMessage": "Statičnih vlog ni mogoče preimenovati.", |
||||
|
"Identity.StaticRoleDeletionErrorMessage": "Statičnih vlog ni mogoče izbrisati.", |
||||
|
"Volo.Abp.Identity:010001": "Ne morete izbrisati svojega lastnega računa!", |
||||
|
"Permission:IdentityManagement": "Upravljanje identitet", |
||||
|
"Permission:RoleManagement": "Upravljanje vlog", |
||||
|
"Permission:Create": "Ustvarjanje", |
||||
|
"Permission:Edit": "Urejanje", |
||||
|
"Permission:Delete": "Brisanje", |
||||
|
"Permission:ChangePermissions": "Spreminjanje dovoljenj", |
||||
|
"Permission:UserManagement": "Upravljanje uporabnikov", |
||||
|
"Permission:UserLookup": "Iskanje uporabnikov", |
||||
|
"DisplayName:Abp.Identity.Password.RequiredLength": "Zahtevana dolžina", |
||||
|
"DisplayName:Abp.Identity.Password.RequiredUniqueChars": "Zahtevano število unikatnih znakov", |
||||
|
"DisplayName:Abp.Identity.Password.RequireNonAlphanumeric": "Zahtevan ne-alfanumeričen znak", |
||||
|
"DisplayName:Abp.Identity.Password.RequireLowercase": "Zahtevana mala črka", |
||||
|
"DisplayName:Abp.Identity.Password.RequireUppercase": "Zahtevana velika črka", |
||||
|
"DisplayName:Abp.Identity.Password.RequireDigit": "Zahtevana številka", |
||||
|
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Omogočeno za nove uporabnike", |
||||
|
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "Trajanje zaklepa(sekund)", |
||||
|
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Največje število neuspešnih poskusov dostopa", |
||||
|
"DisplayName:Abp.Identity.SignIn.RequireConfirmedEmail": "Zahtevan potrjen e-poštni naslov", |
||||
|
"DisplayName:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "Zahtevana potrjena telefonska številka", |
||||
|
"DisplayName:Abp.Identity.User.IsUserNameUpdateEnabled": "Omogočena posodobitev uporabniškega imena", |
||||
|
"DisplayName:Abp.Identity.User.IsEmailUpdateEnabled": "Omogočena posodobitev e-poštnega naslova", |
||||
|
"Description:Abp.Identity.Password.RequiredLength": "Najkrajša dolžina gesla mora biti.", |
||||
|
"Description:Abp.Identity.Password.RequiredUniqueChars": "Najmanjše število unikatnih znakov, ki jih mora vsebovati geslo.", |
||||
|
"Description:Abp.Identity.Password.RequireNonAlphanumeric": "Ali morajo gesla vsebovati ne-alfanumerični znak.", |
||||
|
"Description:Abp.Identity.Password.RequireLowercase": "Ali morajo gesla vsebovati mali ASCII znak.", |
||||
|
"Description:Abp.Identity.Password.RequireUppercase": "Ali morajo gesla vsebovati veliki ASCII znak.", |
||||
|
"Description:Abp.Identity.Password.RequireDigit": "Ali morajo gesla vsebovati številko.", |
||||
|
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "Ali se nov uporabnik lahko zaklene.", |
||||
|
"Description:Abp.Identity.Lockout.LockoutDuration": "Trajanje zaklepa uporabnika, ko pride do zaklepa.", |
||||
|
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Število neuspelih poskusov dostopa ki so dovoljeni, preden se uporabnik zaklene, ob predpostavki, da je zaklepanje omogočeno.", |
||||
|
"Description:Abp.Identity.SignIn.RequireConfirmedEmail": "Ali je za prijavo potreben potrjeni e-poštni naslov.", |
||||
|
"Description:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "Ali je za prijavo potrebna potrjena telefonska številka.", |
||||
|
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Ali lahko uporabnik posodobi uporabniško ime.", |
||||
|
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "Ali lahko uporabnik posodobi e-poštni naslov." |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,12 @@ |
|||||
|
{ |
||||
|
"culture": "sl", |
||||
|
"texts": { |
||||
|
"Volo.IdentityServer:DuplicateIdentityResourceName": "Naziv vira identitete že obstaja: {Name}", |
||||
|
"Volo.IdentityServer:DuplicateApiResourceName": "Naziv vira Api že obstaja: {Name}", |
||||
|
"Volo.IdentityServer:DuplicateClientId": "ClientId že obstaja: {ClientId}", |
||||
|
"UserLockedOut": "Uporabniški račun je bil blokiran zaradi neveljavnih poskusov prijave. Počakajte nekaj časa in poskusite znova.", |
||||
|
"InvalidUserNameOrPassword": "Napačno uporabniško ime ali geslo!", |
||||
|
"LoginIsNotAllowed": "Nimate dovoljenja za prijavo! Potrditi morate svojo e-pošto / telefonsko številko.", |
||||
|
"InvalidUsername": "Napačno uporabniško ime ali geslo!" |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,10 @@ |
|||||
|
{ |
||||
|
"culture": "sl", |
||||
|
"texts": { |
||||
|
"Permissions": "Dovoljenja", |
||||
|
"OnlyProviderPermissons": "Samo ta ponudnik", |
||||
|
"All": "Vse", |
||||
|
"SelectAllInAllTabs": "Dodeli vsa dovoljenja", |
||||
|
"SelectAllInThisTab": "Izberi vse" |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,7 @@ |
|||||
|
{ |
||||
|
"culture": "sl", |
||||
|
"texts": { |
||||
|
"Settings": "Nastavitve", |
||||
|
"SuccessfullySaved": "Uspešno shranjeno" |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,20 @@ |
|||||
|
{ |
||||
|
"culture": "sl", |
||||
|
"texts": { |
||||
|
"Menu:TenantManagement": "Upravljanje najemnikov", |
||||
|
"Tenants": "Najemniki", |
||||
|
"NewTenant": "Nov najemnik", |
||||
|
"TenantName": "Naziv najemnika", |
||||
|
"DisplayName:TenantName": "Naziv najemnika", |
||||
|
"TenantDeletionConfirmationMessage": "Najemnik '{0}' bo izbrisan. Ali to potrjujete?", |
||||
|
"ConnectionStrings": "Connection Strings", |
||||
|
"DisplayName:DefaultConnectionString": "Privzeti Connection String", |
||||
|
"DisplayName:UseSharedDatabase": "Uporabi skupno bazo", |
||||
|
"Permission:TenantManagement": "Upravljanje najemnikov", |
||||
|
"Permission:Create": "Ustvarjanje", |
||||
|
"Permission:Edit": "Urejanje", |
||||
|
"Permission:Delete": "Brisanje", |
||||
|
"Permission:ManageConnectionStrings": "Upravljanje connection string-ov", |
||||
|
"Permission:ManageFeatures": "Upravljanje funkcionalnosti" |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue