using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
using Nop.Web.Framework;
using Nop.Web.Framework.Mvc;
using Nop.Web.Framework.Localization;
using System.Collections.Generic;
namespace Nop.Plugin.Widgets.NivoSlider.Models
{
public class ConfigurationModel : BaseNopModel, ILocalizedModel<ConfigurationModel.ConfigurationLocalizedModel>
{
public ConfigurationModel()
{
Locales = new List<ConfigurationLocalizedModel>();
}
public int ActiveStoreScopeConfiguration { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Picture")]
[UIHint("Picture")]
public int Picture1Id { get; set; }
public bool Picture1Id_OverrideForStore { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Text")]
[AllowHtml]
public string Text1 { get; set; }
public bool Text1_OverrideForStore { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Link")]
[AllowHtml]
public string Link1 { get; set; }
public bool Link1_OverrideForStore { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Picture")]
[UIHint("Picture")]
public int Picture2Id { get; set; }
public bool Picture2Id_OverrideForStore { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Text")]
[AllowHtml]
public string Text2 { get; set; }
public bool Text2_OverrideForStore { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Link")]
[AllowHtml]
public string Link2 { get; set; }
public bool Link2_OverrideForStore { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Picture")]
[UIHint("Picture")]
public int Picture3Id { get; set; }
public bool Picture3Id_OverrideForStore { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Text")]
[AllowHtml]
public string Text3 { get; set; }
public bool Text3_OverrideForStore { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Link")]
[AllowHtml]
public string Link3 { get; set; }
public bool Link3_OverrideForStore { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Picture")]
[UIHint("Picture")]
public int Picture4Id { get; set; }
public bool Picture4Id_OverrideForStore { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Text")]
[AllowHtml]
public string Text4 { get; set; }
public bool Text4_OverrideForStore { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Link")]
[AllowHtml]
public string Link4 { get; set; }
public bool Link4_OverrideForStore { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Picture")]
[UIHint("Picture")]
public int Picture5Id { get; set; }
public bool Picture5Id_OverrideForStore { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Text")]
[AllowHtml]
public string Text5 { get; set; }
public bool Text5_OverrideForStore { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Link")]
[AllowHtml]
public string Link5 { get; set; }
public bool Link5_OverrideForStore { get; set; }
public IList<ConfigurationLocalizedModel> Locales { get; set; }
#region Nested class
public partial class ConfigurationLocalizedModel : ILocalizedModelLocal
{
public int LanguageId { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Picture")]
[UIHint("Picture")]
public int Picture1Id { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Text")]
[AllowHtml]
public string Text1 { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Link")]
[AllowHtml]
public string Link1 { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Picture")]
[UIHint("Picture")]
public int Picture2Id { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Text")]
[AllowHtml]
public string Text2 { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Link")]
[AllowHtml]
public string Link2 { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Picture")]
[UIHint("Picture")]
public int Picture3Id { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Text")]
[AllowHtml]
public string Text3 { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Link")]
[AllowHtml]
public string Link3 { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Picture")]
[UIHint("Picture")]
public int Picture4Id { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Text")]
[AllowHtml]
public string Text4 { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Link")]
[AllowHtml]
public string Link4 { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Picture")]
[UIHint("Picture")]
public int Picture5Id { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Text")]
[AllowHtml]
public string Text5 { get; set; }
[NopResourceDisplayName("Plugins.Widgets.NivoSlider.Link")]
[AllowHtml]
public string Link5 { get; set; }
}
#endregion
}
}
[AdminAuthorize]
[ChildActionOnly]
public ActionResult Configure()
{
//load settings for a chosen store scope
var storeScope = this.GetActiveStoreScopeConfiguration(_storeService, _workContext);
var nivoSliderSettings = _settingService.LoadSetting<NivoSliderSettings>(storeScope);
var model = new ConfigurationModel();
int pic1Id = 0;
int pic2Id = 0;
int pic3Id = 0;
int pic4Id = 0;
int pic5Id = 0;
int.TryParse(nivoSliderSettings.Picture1Id, out pic1Id);
int.TryParse(nivoSliderSettings.Picture2Id, out pic2Id);
int.TryParse(nivoSliderSettings.Picture3Id, out pic3Id);
int.TryParse(nivoSliderSettings.Picture4Id, out pic4Id);
int.TryParse(nivoSliderSettings.Picture5Id, out pic5Id);
model.Picture1Id = pic1Id;
model.Text1 = nivoSliderSettings.Text1;
model.Link1 = nivoSliderSettings.Link1;
model.Picture2Id = pic2Id;
model.Text2 = nivoSliderSettings.Text2;
model.Link2 = nivoSliderSettings.Link2;
model.Picture3Id = pic3Id;
model.Text3 = nivoSliderSettings.Text3;
model.Link3 = nivoSliderSettings.Link3;
model.Picture4Id = pic4Id;
model.Text4 = nivoSliderSettings.Text4;
model.Link4 = nivoSliderSettings.Link4;
model.Picture5Id = pic5Id;
model.Text5 = nivoSliderSettings.Text5;
model.Link5 = nivoSliderSettings.Link5;
//locales
AddLocales(_languageService, model.Locales, (locale, languageId) =>
{
int.TryParse(nivoSliderSettings.GetLocalizedSetting(x => x.Picture1Id, languageId, false, false), out pic1Id);
int.TryParse(nivoSliderSettings.GetLocalizedSetting(x => x.Picture2Id, languageId, false, false), out pic2Id);
int.TryParse(nivoSliderSettings.GetLocalizedSetting(x => x.Picture3Id, languageId, false, false), out pic3Id);
int.TryParse(nivoSliderSettings.GetLocalizedSetting(x => x.Picture4Id, languageId, false, false), out pic4Id);
int.TryParse(nivoSliderSettings.GetLocalizedSetting(x => x.Picture5Id, languageId, false, false), out pic5Id);
locale.Picture1Id = pic1Id;
locale.Text1 = nivoSliderSettings.GetLocalizedSetting(x => x.Text1, languageId, false, false);
locale.Link1 = nivoSliderSettings.GetLocalizedSetting(x => x.Link1, languageId, false, false);
locale.Picture2Id = pic2Id;
locale.Text2 = nivoSliderSettings.GetLocalizedSetting(x => x.Text2, languageId, false, false);
locale.Link2 = nivoSliderSettings.GetLocalizedSetting(x => x.Link2, languageId, false, false);
locale.Picture3Id = pic3Id;
locale.Text3 = nivoSliderSettings.GetLocalizedSetting(x => x.Text3, languageId, false, false);
locale.Link3 = nivoSliderSettings.GetLocalizedSetting(x => x.Link3, languageId, false, false);
locale.Picture4Id = pic4Id;
locale.Text4 = nivoSliderSettings.GetLocalizedSetting(x => x.Text4, languageId, false, false);
locale.Link4 = nivoSliderSettings.GetLocalizedSetting(x => x.Link4, languageId, false, false);
locale.Picture5Id = pic5Id;
locale.Text5 = nivoSliderSettings.GetLocalizedSetting(x => x.Text5, languageId, false, false);
locale.Link5 = nivoSliderSettings.GetLocalizedSetting(x => x.Link5, languageId, false, false);
});
model.ActiveStoreScopeConfiguration = storeScope;
if (storeScope > 0)
{
model.Picture1Id_OverrideForStore = _settingService.SettingExists(nivoSliderSettings, x => x.Picture1Id, storeScope);
model.Text1_OverrideForStore = _settingService.SettingExists(nivoSliderSettings, x => x.Text1, storeScope);
model.Link1_OverrideForStore = _settingService.SettingExists(nivoSliderSettings, x => x.Link1, storeScope);
model.Picture2Id_OverrideForStore = _settingService.SettingExists(nivoSliderSettings, x => x.Picture2Id, storeScope);
model.Text2_OverrideForStore = _settingService.SettingExists(nivoSliderSettings, x => x.Text2, storeScope);
model.Link2_OverrideForStore = _settingService.SettingExists(nivoSliderSettings, x => x.Link2, storeScope);
model.Picture3Id_OverrideForStore = _settingService.SettingExists(nivoSliderSettings, x => x.Picture3Id, storeScope);
model.Text3_OverrideForStore = _settingService.SettingExists(nivoSliderSettings, x => x.Text3, storeScope);
model.Link3_OverrideForStore = _settingService.SettingExists(nivoSliderSettings, x => x.Link3, storeScope);
model.Picture4Id_OverrideForStore = _settingService.SettingExists(nivoSliderSettings, x => x.Picture4Id, storeScope);
model.Text4_OverrideForStore = _settingService.SettingExists(nivoSliderSettings, x => x.Text4, storeScope);
model.Link4_OverrideForStore = _settingService.SettingExists(nivoSliderSettings, x => x.Link4, storeScope);
model.Picture5Id_OverrideForStore = _settingService.SettingExists(nivoSliderSettings, x => x.Picture5Id, storeScope);
model.Text5_OverrideForStore = _settingService.SettingExists(nivoSliderSettings, x => x.Text5, storeScope);
model.Link5_OverrideForStore = _settingService.SettingExists(nivoSliderSettings, x => x.Link5, storeScope);
}
return View("~/Plugins/Widgets.NivoSlider/Views/WidgetsNivoSlider/Configure.cshtml", model);
}
[HttpPost]
[AdminAuthorize]
[ChildActionOnly]
public ActionResult Configure(ConfigurationModel model)
{
//load settings for a chosen store scope
var storeScope = this.GetActiveStoreScopeConfiguration(_storeService, _workContext);
var nivoSliderSettings = _settingService.LoadSetting<NivoSliderSettings>(storeScope);
nivoSliderSettings.Picture1Id = model.Picture1Id.ToString();
nivoSliderSettings.Text1 = model.Text1;
nivoSliderSettings.Link1 = model.Link1;
nivoSliderSettings.Picture2Id = model.Picture2Id.ToString();
nivoSliderSettings.Text2 = model.Text2;
nivoSliderSettings.Link2 = model.Link2;
nivoSliderSettings.Picture3Id = model.Picture3Id.ToString();
nivoSliderSettings.Text3 = model.Text3;
nivoSliderSettings.Link3 = model.Link3;
nivoSliderSettings.Picture4Id = model.Picture4Id.ToString();
nivoSliderSettings.Text4 = model.Text4;
nivoSliderSettings.Link4 = model.Link4;
nivoSliderSettings.Picture5Id = model.Picture5Id.ToString();
nivoSliderSettings.Text5 = model.Text5;
nivoSliderSettings.Link5 = model.Link5;
/* We do not clear cache after each setting update.
* This behavior can increase performance because cached settings will not be cleared
* and loaded from database after each update */
if (model.Picture1Id_OverrideForStore || storeScope == 0)
_settingService.SaveSetting(nivoSliderSettings, x => x.Picture1Id, storeScope, false);
else if (storeScope > 0)
_settingService.DeleteSetting(nivoSliderSettings, x => x.Picture1Id, storeScope);
if (model.Text1_OverrideForStore || storeScope == 0)
_settingService.SaveSetting(nivoSliderSettings, x => x.Text1, storeScope, false);
else if (storeScope > 0)
_settingService.DeleteSetting(nivoSliderSettings, x => x.Text1, storeScope);
if (model.Link1_OverrideForStore || storeScope == 0)
_settingService.SaveSetting(nivoSliderSettings, x => x.Link1, storeScope, false);
else if (storeScope > 0)
_settingService.DeleteSetting(nivoSliderSettings, x => x.Link1, storeScope);
if (model.Picture2Id_OverrideForStore || storeScope == 0)
_settingService.SaveSetting(nivoSliderSettings, x => x.Picture2Id, storeScope, false);
else if (storeScope > 0)
_settingService.DeleteSetting(nivoSliderSettings, x => x.Picture2Id, storeScope);
if (model.Text2_OverrideForStore || storeScope == 0)
_settingService.SaveSetting(nivoSliderSettings, x => x.Text2, storeScope, false);
else if (storeScope > 0)
_settingService.DeleteSetting(nivoSliderSettings, x => x.Text2, storeScope);
if (model.Link2_OverrideForStore || storeScope == 0)
_settingService.SaveSetting(nivoSliderSettings, x => x.Link2, storeScope, false);
else if (storeScope > 0)
_settingService.DeleteSetting(nivoSliderSettings, x => x.Link2, storeScope);
if (model.Picture3Id_OverrideForStore || storeScope == 0)
_settingService.SaveSetting(nivoSliderSettings, x => x.Picture3Id, storeScope, false);
else if (storeScope > 0)
_settingService.DeleteSetting(nivoSliderSettings, x => x.Picture3Id, storeScope);
if (model.Text3_OverrideForStore || storeScope == 0)
_settingService.SaveSetting(nivoSliderSettings, x => x.Text3, storeScope, false);
else if (storeScope > 0)
_settingService.DeleteSetting(nivoSliderSettings, x => x.Text3, storeScope);
if (model.Link3_OverrideForStore || storeScope == 0)
_settingService.SaveSetting(nivoSliderSettings, x => x.Link3, storeScope, false);
else if (storeScope > 0)
_settingService.DeleteSetting(nivoSliderSettings, x => x.Link3, storeScope);
if (model.Picture4Id_OverrideForStore || storeScope == 0)
_settingService.SaveSetting(nivoSliderSettings, x => x.Picture4Id, storeScope, false);
else if (storeScope > 0)
_settingService.DeleteSetting(nivoSliderSettings, x => x.Picture4Id, storeScope);
if (model.Text4_OverrideForStore || storeScope == 0)
_settingService.SaveSetting(nivoSliderSettings, x => x.Text4, storeScope, false);
else if (storeScope > 0)
_settingService.DeleteSetting(nivoSliderSettings, x => x.Text4, storeScope);
if (model.Link4_OverrideForStore || storeScope == 0)
_settingService.SaveSetting(nivoSliderSettings, x => x.Link4, storeScope, false);
else if (storeScope > 0)
_settingService.DeleteSetting(nivoSliderSettings, x => x.Link4, storeScope);
if (model.Picture5Id_OverrideForStore || storeScope == 0)
_settingService.SaveSetting(nivoSliderSettings, x => x.Picture5Id, storeScope, false);
else if (storeScope > 0)
_settingService.DeleteSetting(nivoSliderSettings, x => x.Picture5Id, storeScope);
if (model.Text5_OverrideForStore || storeScope == 0)
_settingService.SaveSetting(nivoSliderSettings, x => x.Text5, storeScope, false);
else if (storeScope > 0)
_settingService.DeleteSetting(nivoSliderSettings, x => x.Text5, storeScope);
if (model.Link5_OverrideForStore || storeScope == 0)
_settingService.SaveSetting(nivoSliderSettings, x => x.Link5, storeScope, false);
else if (storeScope > 0)
_settingService.DeleteSetting(nivoSliderSettings, x => x.Link5, storeScope);
//now clear settings cache
_settingService.ClearCache();
//localization. no multi-store support for localization yet.
foreach (var localized in model.Locales)
{
nivoSliderSettings.SaveLocalizedSetting(x => x.Picture1Id,
localized.LanguageId,
localized.Picture1Id.ToString());
nivoSliderSettings.SaveLocalizedSetting(x => x.Text1,
localized.LanguageId,
localized.Text1);
nivoSliderSettings.SaveLocalizedSetting(x => x.Link1,
localized.LanguageId,
localized.Link1);
nivoSliderSettings.SaveLocalizedSetting(x => x.Picture2Id,
localized.LanguageId,
localized.Picture2Id.ToString());
nivoSliderSettings.SaveLocalizedSetting(x => x.Text2,
localized.LanguageId,
localized.Text2);
nivoSliderSettings.SaveLocalizedSetting(x => x.Link2,
localized.LanguageId,
localized.Link2);
nivoSliderSettings.SaveLocalizedSetting(x => x.Picture3Id,
localized.LanguageId,
localized.Picture3Id.ToString());
nivoSliderSettings.SaveLocalizedSetting(x => x.Text3,
localized.LanguageId,
localized.Text3);
nivoSliderSettings.SaveLocalizedSetting(x => x.Link3,
localized.LanguageId,
localized.Link3);
nivoSliderSettings.SaveLocalizedSetting(x => x.Picture4Id,
localized.LanguageId,
localized.Picture4Id.ToString());
nivoSliderSettings.SaveLocalizedSetting(x => x.Text4,
localized.LanguageId,
localized.Text4);
nivoSliderSettings.SaveLocalizedSetting(x => x.Link4,
localized.LanguageId,
localized.Link4);
nivoSliderSettings.SaveLocalizedSetting(x => x.Picture5Id,
localized.LanguageId,
localized.Picture5Id.ToString());
nivoSliderSettings.SaveLocalizedSetting(x => x.Text5,
localized.LanguageId,
localized.Text5);
nivoSliderSettings.SaveLocalizedSetting(x => x.Link5,
localized.LanguageId,
localized.Link5);
}
SuccessNotification(_localizationService.GetResource("Admin.Plugins.Saved"));
return Configure();
}
[ChildActionOnly]
public ActionResult PublicInfo(string widgetZone, object additionalData = null)
{
var nivoSliderSettings = _settingService.LoadSetting<NivoSliderSettings>(_storeContext.CurrentStore.Id);
var model = new PublicInfoModel();
int pic1Id = 0;
int pic2Id = 0;
int pic3Id = 0;
int pic4Id = 0;
int pic5Id = 0;
int.TryParse(nivoSliderSettings.Picture1Id, out pic1Id);
int.TryParse(nivoSliderSettings.Picture2Id, out pic2Id);
int.TryParse(nivoSliderSettings.Picture3Id, out pic3Id);
int.TryParse(nivoSliderSettings.Picture4Id, out pic4Id);
int.TryParse(nivoSliderSettings.Picture5Id, out pic5Id);
pic1Id = int.Parse(nivoSliderSettings.GetLocalizedSetting(x => x.Picture1Id, _workContext.WorkingLanguage.Id));
pic2Id = int.Parse(nivoSliderSettings.GetLocalizedSetting(x => x.Picture2Id, _workContext.WorkingLanguage.Id));
pic3Id = int.Parse(nivoSliderSettings.GetLocalizedSetting(x => x.Picture3Id, _workContext.WorkingLanguage.Id));
pic4Id = int.Parse(nivoSliderSettings.GetLocalizedSetting(x => x.Picture4Id, _workContext.WorkingLanguage.Id));
pic5Id = int.Parse(nivoSliderSettings.GetLocalizedSetting(x => x.Picture5Id, _workContext.WorkingLanguage.Id));
pic1Id = pic1Id == 0 ? int.Parse(nivoSliderSettings.Picture1Id) : pic1Id;
pic2Id = pic2Id == 0 ? int.Parse(nivoSliderSettings.Picture2Id) : pic2Id;
pic3Id = pic3Id == 0 ? int.Parse(nivoSliderSettings.Picture3Id) : pic3Id;
pic4Id = pic4Id == 0 ? int.Parse(nivoSliderSettings.Picture4Id) : pic4Id;
pic5Id = pic5Id == 0 ? int.Parse(nivoSliderSettings.Picture5Id) : pic5Id;
model.Picture1Url = GetPictureUrl(pic1Id);
model.Text1 = nivoSliderSettings.GetLocalizedSetting(x => x.Text1, _workContext.WorkingLanguage.Id);
model.Link1 = nivoSliderSettings.GetLocalizedSetting(x => x.Link1, _workContext.WorkingLanguage.Id);
model.Picture2Url = GetPictureUrl(pic2Id);
model.Text2 = nivoSliderSettings.GetLocalizedSetting(x => x.Text2, _workContext.WorkingLanguage.Id);
model.Link2 = nivoSliderSettings.GetLocalizedSetting(x => x.Link2, _workContext.WorkingLanguage.Id);
model.Picture3Url = GetPictureUrl(pic3Id);
model.Text3 = nivoSliderSettings.GetLocalizedSetting(x => x.Text3, _workContext.WorkingLanguage.Id);
model.Link3 = nivoSliderSettings.GetLocalizedSetting(x => x.Link3, _workContext.WorkingLanguage.Id);
model.Picture4Url = GetPictureUrl(pic4Id);
model.Text4 = nivoSliderSettings.GetLocalizedSetting(x => x.Text4, _workContext.WorkingLanguage.Id);
model.Link4 = nivoSliderSettings.GetLocalizedSetting(x => x.Link4, _workContext.WorkingLanguage.Id);
model.Picture5Url = GetPictureUrl(pic5Id);
model.Text5 = nivoSliderSettings.GetLocalizedSetting(x => x.Text5, _workContext.WorkingLanguage.Id);
model.Link5 = nivoSliderSettings.GetLocalizedSetting(x => x.Link5, _workContext.WorkingLanguage.Id);
if (string.IsNullOrEmpty(model.Picture1Url) && string.IsNullOrEmpty(model.Picture2Url) &&
string.IsNullOrEmpty(model.Picture3Url) && string.IsNullOrEmpty(model.Picture4Url) &&
string.IsNullOrEmpty(model.Picture5Url))
//no pictures uploaded
return Content("");
return View("~/Plugins/Widgets.NivoSlider/Views/WidgetsNivoSlider/PublicInfo.cshtml", model);
}
[code]@{
Layout = "";
}
@model ConfigurationModel
@using Nop.Plugin.Widgets.NivoSlider.Models
@using Nop.Web.Framewor