Skip to content

Commit 236bc09

Browse files
Changes:
- Add slider alignment support. Now slider related to some widget zone displays with alignment. Plugin supports: left side, centered and right side alignments. Adds: - localization values for enums; - update method to install database changes;
1 parent 2aabdd7 commit 236bc09

File tree

14 files changed

+162
-14
lines changed

14 files changed

+162
-14
lines changed

BaseBaroquePlugin.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,15 @@ protected string GenerateLocalizationXmlFilePathByCulture(string culture = "en-U
7272
/// <summary>
7373
/// Install available plugin localizations
7474
/// </summary>
75-
protected virtual async Task InstallLocalizationAsync()
75+
/// <param name="updateExistingResources">A value indicating whether to update existing resources</param>
76+
protected virtual async Task InstallLocalizationAsync(bool updateExistingResources = true)
7677
{
7778
var allLanguages = await _languageService.GetAllLanguagesAsync();
7879
var language = allLanguages.FirstOrDefault();
7980

8081
//if shop have no available languages method generate exception
8182
if (language == null)
82-
throw new Exception("Your store have no available language.");
83+
throw new Exception("Your store has no available language.");
8384

8485
foreach (var l in allLanguages)
8586
{
@@ -95,7 +96,7 @@ protected virtual async Task InstallLocalizationAsync()
9596
{
9697
using (var sr = new StreamReader(stream, Encoding.UTF8))
9798
{
98-
await _localizationService.ImportResourcesFromXmlAsync(l, sr);
99+
await _localizationService.ImportResourcesFromXmlAsync(l, sr, updateExistingResources);
99100
}
100101
}
101102
}

Content/localization.en-US.xml

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,10 +203,16 @@
203203
</LocaleResource>
204204
<LocaleResource Name="Nop.Plugin.Baroque.Widgets.qBoSlider.Admin.WidgetZone.MaxSlideWidgetZoneWidth.MustBeGreaterThanMinimumValueOnXPixels">
205205
<Value>Maximum slider width must be greater then minimum slider width on {0} pixels</Value>
206-
</LocaleResource>
206+
</LocaleResource>
207207
<LocaleResource Name="nop.plugin.baroque.widgets.qboslider.admin.widgetzone.widgetzonealreadyreserved">
208208
<Value>This system name is already reserved by another widget zone.</Value>
209209
</LocaleResource>
210+
<LocaleResource Name="Nop.Plugin.Baroque.Widgets.qBoSlider.Admin.WidgetZone.Fields.SliderAlignment">
211+
<Value>Alignment</Value>
212+
</LocaleResource>
213+
<LocaleResource Name="Nop.Plugin.Baroque.Widgets.qBoSlider.Admin.WidgetZone.Fields.SliderAlignment.Hint">
214+
<Value>Slider alignment for selected widget zone.</Value>
215+
</LocaleResource>
210216
<!--WIDGET ZONE SLIDE-->
211217
<LocaleResource Name="Nop.Plugin.Baroque.Widgets.qBoSlider.Admin.WidgetZone.EditWidgetZoneSlidePopup">
212218
<Value>Edit widget zone slide</Value>
@@ -449,4 +455,50 @@
449455
<LocaleResource Name="Nop.Plugin.Baroque.Widgets.qBoSlider.Admin.SlideSearch.PublicationStateId.hint">
450456
<Value>Select searchable slide publication state.</Value>
451457
</LocaleResource>
458+
<!--ENUMS-->
459+
<LocaleResource Name="Enums.Nop.Plugin.Widgets.qBoSlider.SliderAlignment.Left">
460+
<Value>Left</Value>
461+
</LocaleResource>
462+
<LocaleResource Name="Enums.Nop.Plugin.Widgets.qBoSlider.SliderAlignment.Center">
463+
<Value>Center</Value>
464+
</LocaleResource>
465+
<LocaleResource Name="Enums.Nop.Plugin.Widgets.qBoSlider.SliderAlignment.Right">
466+
<Value>Right</Value>
467+
</LocaleResource>
468+
<LocaleResource Name="Enums.Nop.Plugin.Widgets.qBoSlider.PublicationState.All">
469+
<Value>All</Value>
470+
</LocaleResource>
471+
<LocaleResource Name="Enums.Nop.Plugin.Widgets.qBoSlider.PublicationState.Published">
472+
<Value>Published</Value>
473+
</LocaleResource>
474+
<LocaleResource Name="Enums.Nop.Plugin.Widgets.qBoSlider.PublicationState.Unpublished">
475+
<Value>Unpublished</Value>
476+
</LocaleResource>
477+
<LocaleResource Name="Enums.Nop.Plugin.Widgets.qBoSlider.NavigationType.None">
478+
<Value>None</Value>
479+
</LocaleResource>
480+
<LocaleResource Name="Enums.Nop.Plugin.Widgets.qBoSlider.NavigationType.OnMouseDrag">
481+
<Value>On mouse drag</Value>
482+
</LocaleResource>
483+
<LocaleResource Name="Enums.Nop.Plugin.Widgets.qBoSlider.NavigationType.Always">
484+
<Value>Always</Value>
485+
</LocaleResource>
486+
<LocaleResource Name="Enums.Nop.Plugin.Widgets.qBoSlider.TransitionPlay.Random">
487+
<Value>Random</Value>
488+
</LocaleResource>
489+
<LocaleResource Name="Enums.Nop.Plugin.Widgets.qBoSlider.TransitionPlay.Sequence">
490+
<Value>Sequence</Value>
491+
</LocaleResource>
492+
<LocaleResource Name="Enums.Nop.Plugin.Widgets.qBoSlider.DragOrientation.None">
493+
<Value>None</Value>
494+
</LocaleResource>
495+
<LocaleResource Name="Enums.Nop.Plugin.Widgets.qBoSlider.DragOrientation.Horizontal">
496+
<Value>Horizontal</Value>
497+
</LocaleResource>
498+
<LocaleResource Name="Enums.Nop.Plugin.Widgets.qBoSlider.DragOrientation.Vertical">
499+
<Value>Vertical</Value>
500+
</LocaleResource>
501+
<LocaleResource Name="Enums.Nop.Plugin.Widgets.qBoSlider.DragOrientation.Both">
502+
<Value>Both</Value>
503+
</LocaleResource>
452504
</Language>

Controllers/qBoWidgetZoneController.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,7 @@ public virtual async Task<IActionResult> Create(WidgetZoneModel model, bool cont
235235
MaxSlideWidgetZoneWidth = model.MaxSlideWidgetZoneWidth,
236236
SlideDuration = model.SlideDuration,
237237
SlideSpacing = model.SlideSpacing,
238+
SliderAlignmentId = model.SliderAlignmentId,
238239
//put widget zone properties
239240
Name = model.Name,
240241
SystemName = model.SystemName,
@@ -317,6 +318,7 @@ public virtual async Task<IActionResult> Edit(WidgetZoneModel model, bool contin
317318
//apply widget zone slider properties
318319
widgetZone.ArrowNavigationDisplayingTypeId = model.ArrowNavigationDisplayingTypeId;
319320
widgetZone.BulletNavigationDisplayingTypeId = model.BulletNavigationDisplayingTypeId;
321+
widgetZone.SliderAlignmentId = model.SliderAlignmentId;
320322
widgetZone.AutoPlay = model.AutoPlay;
321323
widgetZone.AutoPlayInterval = model.AutoPlayInterval;
322324
widgetZone.MinDragOffsetToSlide = model.MinDragOffsetToSlide;

Domain/WidgetZone.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@ public class WidgetZone : BaseEntity, IAclSupported, IStoreMappingSupported
5858
/// </summary>
5959
public int SlideSpacing { get; set; }
6060

61+
/// <summary>
62+
/// Gets or sets slider alignment type
63+
/// </summary>
64+
public int SliderAlignmentId { get; set; }
65+
6166
/// <summary>
6267
/// Gets or sets minimum slider width
6368
/// </summary>

Factories/Admin/WidgetZoneModelFactory.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@ public virtual async Task<WidgetZoneModel> PrepareWidgetZoneModelAsync(WidgetZon
115115
AvailableBulletNavigations = await NavigationType.Always.ToSelectListAsync(),
116116
Id = widgetZone.Id,
117117
MinDragOffsetToSlide = widgetZone.MinDragOffsetToSlide,
118+
SliderAlignmentId = widgetZone.SliderAlignmentId,
119+
AvailableSliderAlignments = await SliderAlignment.Center.ToSelectListAsync(),
118120
MinSlideWidgetZoneWidth = widgetZone.MinSlideWidgetZoneWidth,
119121
MaxSlideWidgetZoneWidth = widgetZone.MaxSlideWidgetZoneWidth,
120122
Name = widgetZone.Name,
@@ -129,9 +131,11 @@ public virtual async Task<WidgetZoneModel> PrepareWidgetZoneModelAsync(WidgetZon
129131
}
130132

131133
//prepare list of availbale navigation types
132-
var navigationTypes = await NavigationType.Always.ToSelectListAsync(false);
133-
model.AvailableArrowNavigations = navigationTypes;
134-
model.AvailableBulletNavigations = navigationTypes;
134+
//var navigationTypes = await NavigationType.Always.ToSelectListAsync(false);
135+
//var alignments = await SliderAlignment.Center.ToSelectListAsync();
136+
//model.AvailableArrowNavigations = navigationTypes;
137+
//model.AvailableBulletNavigations = navigationTypes;
138+
//model.AvailableSliderAlignments = alignments;
135139

136140
//prepare slide search model
137141
model.SlideSearchModel.SetGridPageSize();

Factories/Public/PublicModelFactory.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ protected virtual async Task<WidgetZoneModel> PrepareSliderModel(WidgetZone widg
122122
SlideSpacing = widgetZone.SlideSpacing,
123123
ArrowNavigation = widgetZone.ArrowNavigationDisplayingTypeId,
124124
BulletNavigation = widgetZone.BulletNavigationDisplayingTypeId,
125+
AlignmentId = widgetZone.SliderAlignmentId,
125126
MinSliderWidth = widgetZone.MinSlideWidgetZoneWidth,
126127
MaxSliderWidth = widgetZone.MaxSlideWidgetZoneWidth
127128
};
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using FluentMigrator;
2+
using Nop.Data.Migrations;
3+
using Nop.Plugin.Widgets.qBoSlider.Domain;
4+
5+
namespace Nop.Plugin.Widgets.qBoSlider.Migrations
6+
{
7+
[NopMigration("2023/09/12 15:33:23:6455432", "Baroque. qBoSlider. Add slider alignment property for widget zones", MigrationProcessType.Update)]
8+
public partial class AddSliderAlignmentMigration : AutoReversingMigration
9+
{
10+
public override void Up()
11+
{
12+
Create.Column(nameof(WidgetZone.SliderAlignmentId))
13+
.OnTable(nameof(WidgetZone))
14+
.AsInt32()
15+
.NotNullable()
16+
.WithDefaultValue(5);
17+
}
18+
}
19+
}

Models/Admin/WidgetZones/WidgetZoneModel.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,17 @@ public partial record WidgetZoneModel : BaseNopEntityModel
4646
[NopResourceDisplayName("Nop.Plugin.Baroque.Widgets.qBoSlider.Admin.WidgetZone.Fields.SlideSpacing")]
4747
public int SlideSpacing { get; set; }
4848

49+
/// <summary>
50+
/// Gets or sets slider alignment type
51+
/// </summary>
52+
[NopResourceDisplayName("Nop.Plugin.Baroque.Widgets.qBoSlider.Admin.WidgetZone.Fields.SliderAlignment")]
53+
public int SliderAlignmentId { get; set; }
54+
55+
/// <summary>
56+
/// Gets or sets list of available slider alignments
57+
/// </summary>
58+
public SelectList AvailableSliderAlignments { get; set; } = new SelectList(new List<SelectListItem>());
59+
4960
/// <summary>
5061
/// Gets or sets minimum slider width
5162
/// </summary>

Models/Public/WidgetZoneModel.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ public record WidgetZoneModel : BaseNopEntityModel
2323
/// </summary>
2424
public int AutoPlayInterval { get; set; }
2525

26+
/// <summary>
27+
/// Gets or sets slider alignment id number
28+
/// </summary>
29+
public int AlignmentId { get; set; }
30+
2631
/// <summary>
2732
/// Gets or sets slide duration
2833
/// </summary>

Views/Admin/WidgetZone/_CreateOrUpdate.Info.cshtml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,15 @@
3737
<span asp-validation-for="BulletNavigationDisplayingTypeId"></span>
3838
</div>
3939
</div>
40+
<div class="form-group row">
41+
<div class="col-md-3">
42+
<nop-label asp-for="SliderAlignmentId" />
43+
</div>
44+
<div class="col-md-9">
45+
<nop-select asp-for="SliderAlignmentId" asp-items="@Model.AvailableSliderAlignments" />
46+
<span asp-validation-for="SliderAlignmentId"></span>
47+
</div>
48+
</div>
4049
<div class="form-group row">
4150
<div class="col-md-3">
4251
<nop-label asp-for="AutoPlay" />

0 commit comments

Comments
 (0)