/// <summary> /// Loads a picture from file /// </summary> /// <param name="pictureId">Picture identifier</param> /// <param name="mimeType">MIME type</param> /// <returns>Picture binary</returns> protected virtual byte[] LoadPictureFromFile(int pictureId, string mimeType) { var lastPart = GetFileExtensionFromMimeType(mimeType); var fileName = $"{pictureId:0000000}_0.{lastPart}"; var filePath = GetPictureLocalPath(fileName); return(_fileProvider.ReadAllBytes(filePath)); }
/// <summary> /// Install plugin /// </summary> public override void Install() { //pictures var sampleImagesPath = _fileProvider.MapPath("~/Plugins/Widgets.NivoSlider/Content/nivoslider/sample-images/"); //settings var settings = new NivoSliderSettings { Picture1Id = _pictureService.InsertPicture(_fileProvider.ReadAllBytes(_fileProvider.Combine(sampleImagesPath, "banner1.jpg")), MimeTypes.ImagePJpeg, "banner_1").Id, Text1 = "", Link1 = _webHelper.GetStoreLocation(false), MobilePic1Id = _pictureService.InsertPicture(_fileProvider.ReadAllBytes(_fileProvider.Combine(sampleImagesPath, "banner1-mobile.jpg")), MimeTypes.ImagePJpeg, "banner_1").Id, Picture2Id = _pictureService.InsertPicture(_fileProvider.ReadAllBytes(_fileProvider.Combine(sampleImagesPath, "banner2.jpg")), MimeTypes.ImagePJpeg, "banner_2").Id, Text2 = "", Link2 = _webHelper.GetStoreLocation(false), MobilePic2Id = _pictureService.InsertPicture(_fileProvider.ReadAllBytes(_fileProvider.Combine(sampleImagesPath, "banner2-mobile.jpg")), MimeTypes.ImagePJpeg, "banner_2").Id, //Picture3Id = _pictureService.InsertPicture(File.ReadAllBytes(_fileProvider.Combine(sampleImagesPath,"banner3.jpg")), MimeTypes.ImagePJpeg, "banner_3").Id, //Text3 = "", //Link3 = _webHelper.GetStoreLocation(false), }; _settingService.SaveSetting(settings); _localizationService.AddPluginLocaleResource(new Dictionary <string, string> { ["Plugins.Widgets.NivoSlider.Picture1"] = "Picture 1", ["Plugins.Widgets.NivoSlider.Picture2"] = "Picture 2", ["Plugins.Widgets.NivoSlider.Picture3"] = "Picture 3", ["Plugins.Widgets.NivoSlider.Picture4"] = "Picture 4", ["Plugins.Widgets.NivoSlider.Picture5"] = "Picture 5", ["Plugins.Widgets.NivoSlider.Picture"] = "Picture", ["Plugins.Widgets.NivoSlider.Picture.Hint"] = "Upload picture.", ["Plugins.Widgets.NivoSlider.Text"] = "Comment", ["Plugins.Widgets.NivoSlider.Text.Hint"] = "Enter comment for picture. Leave empty if you don't want to display any text.", ["Plugins.Widgets.NivoSlider.Link"] = "URL", ["Plugins.Widgets.NivoSlider.Link.Hint"] = "Enter URL. Leave empty if you don't want this picture to be clickable.", ["Plugins.Widgets.NivoSlider.AltText"] = "Image alternate text", ["Plugins.Widgets.NivoSlider.AltText.Hint"] = "Enter alternate text that will be added to image.", ["Plugins.Widgets.NivoSlider.MobilePicture"] = "Mobile Picture", ["Plugins.Widgets.NivoSlider.MobilePicture.Hint"] = "Upload the x*x squared picture for devices < 1000 width." }); base.Install(); }
/// <summary> /// Install plugin /// </summary> public override void Install() { //pictures var sampleImagesPath = _fileProvider.MapPath("~/Plugins/Widgets.NivoSlider/Content/nivoslider/sample-images/"); //settings var settings = new NivoSliderSettings { Picture1Id = _pictureService.InsertPicture(_fileProvider.ReadAllBytes(sampleImagesPath + "banner1.jpg"), MimeTypes.ImagePJpeg, "banner_1").Id, Text1 = "", Link1 = _webHelper.GetStoreLocation(false), Picture2Id = _pictureService.InsertPicture(_fileProvider.ReadAllBytes(sampleImagesPath + "banner2.jpg"), MimeTypes.ImagePJpeg, "banner_2").Id, Text2 = "", Link2 = _webHelper.GetStoreLocation(false) //Picture3Id = _pictureService.InsertPicture(File.ReadAllBytes(sampleImagesPath + "banner3.jpg"), MimeTypes.ImagePJpeg, "banner_3").Id, //Text3 = "", //Link3 = _webHelper.GetStoreLocation(false), }; _settingService.SaveSetting(settings); _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Widgets.NivoSlider.Picture1", "Picture 1"); _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Widgets.NivoSlider.Picture2", "Picture 2"); _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Widgets.NivoSlider.Picture3", "Picture 3"); _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Widgets.NivoSlider.Picture4", "Picture 4"); _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Widgets.NivoSlider.Picture5", "Picture 5"); _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Widgets.NivoSlider.Picture5", "Picture 6"); _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Widgets.NivoSlider.Picture5", "Picture 7"); _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Widgets.NivoSlider.Picture5", "Picture 8"); _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Widgets.NivoSlider.Picture5", "Picture 9"); _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Widgets.NivoSlider.Picture5", "Picture 10"); _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Widgets.NivoSlider.Picture", "Picture"); _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Widgets.NivoSlider.Picture.Hint", "Upload picture."); _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Widgets.NivoSlider.Text", "Comment"); _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Widgets.NivoSlider.Text.Hint", "Enter comment for picture. Leave empty if you don't want to display any text."); _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Widgets.NivoSlider.Link", "URL"); _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Widgets.NivoSlider.Link.Hint", "Enter URL. Leave empty if you don't want this picture to be clickable."); _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Widgets.NivoSlider.AltText", "Image alternate text"); _localizationService.AddOrUpdatePluginLocaleResource("Plugins.Widgets.NivoSlider.AltText.Hint", "Enter alternate text that will be added to image."); base.Install(); }
/// <summary> /// Install plugin /// </summary> public override void Install() { //install object context _context.Install(); //Insert language resource foreach (KeyValuePair <string, string> entry in GetLanguageResources()) { _localizationService.AddOrUpdatePluginLocaleResource(entry.Key, entry.Value); } //Check for the product attribute custom color. Insert only in case not found if (!_productPictureModifierService.GetProductAttributeByName(ProductPictureModifierDefault.ProductAttributeName) .Any()) { _productAttributeService.InsertProductAttribute(new ProductAttribute { Name = ProductPictureModifierDefault.ProductAttributeName, Description = ProductPictureModifierDefault.ProductAttributeDescription }); } //Check for the product attribute custom logo. Insert only in case not found if (!_productPictureModifierService.GetProductAttributeByName(ProductPictureModifierDefault.ProductAttributeNameForLogo) .Any()) { _productAttributeService.InsertProductAttribute(new ProductAttribute { Name = ProductPictureModifierDefault.ProductAttributeNameForLogo, Description = ProductPictureModifierDefault.ProductAttributeDescriptionForLogo }); } //Check for the product attribute custom logo Upload. Insert only in case not found if (!_productPictureModifierService.GetProductAttributeByName(ProductPictureModifierDefault.ProductAttributeNameForLogoUpload) .Any()) { _productAttributeService.InsertProductAttribute(new ProductAttribute { Name = ProductPictureModifierDefault.ProductAttributeNameForLogoUpload, Description = ProductPictureModifierDefault.ProductAttributeDescriptionForLogoUpload }); } //Upload icon for custom logo upload selector byte[] customUploadIcon = _fileProvider. ReadAllBytes(_fileProvider.MapPath("~/Plugins/Widgets.ProductPictureModifier/Content/Images/Upload.png")); Picture image = _pictureService.InsertPicture(customUploadIcon, "image/png", "custom_upload"); _settingService.SetSetting(ProductPictureModifierDefault.UploadIconPictureIdSetting, image.Id); base.Install(); }
/// <summary> /// Create an file attachment for the specific file path /// </summary> /// <param name="filePath">Attachment file path</param> /// <param name="attachmentFileName">Attachment file name</param> /// <returns>A leaf-node MIME part that contains an attachment.</returns> protected MimePart CreateMimeAttachment(string filePath, string attachmentFileName = null) { if (string.IsNullOrWhiteSpace(filePath)) { throw new ArgumentNullException(nameof(filePath)); } if (string.IsNullOrWhiteSpace(attachmentFileName)) { attachmentFileName = Path.GetFileName(filePath); } return(CreateMimeAttachment( attachmentFileName, _fileProvider.ReadAllBytes(filePath), _fileProvider.GetCreationTime(filePath), _fileProvider.GetLastWriteTime(filePath), _fileProvider.GetLastAccessTime(filePath))); }
/// <summary> /// Creates or loads the image /// </summary> /// <param name="picturePath">The path to the image file</param> /// <param name="name">The name of the object</param> /// <param name="picId">Image identifier, may be null</param> /// <returns>The image or null if the image has not changed</returns> protected virtual Picture LoadPicture(string picturePath, string name, int?picId = null) { if (string.IsNullOrEmpty(picturePath) || !_fileProvider.FileExists(picturePath)) { return(null); } var mimeType = GetMimeTypeFromFilePath(picturePath); var newPictureBinary = _fileProvider.ReadAllBytes(picturePath); var pictureAlreadyExists = false; if (picId != null) { //compare with existing product pictures var existingPicture = _pictureService.GetPictureById(picId.Value); if (existingPicture != null) { var existingBinary = _pictureService.LoadPictureBinary(existingPicture); //picture binary after validation (like in database) var validatedPictureBinary = _pictureService.ValidatePicture(newPictureBinary, mimeType); if (existingBinary.SequenceEqual(validatedPictureBinary) || existingBinary.SequenceEqual(newPictureBinary)) { pictureAlreadyExists = true; } } } if (pictureAlreadyExists) { return(null); } var newPicture = _pictureService.InsertPicture(newPictureBinary, mimeType, _pictureService.GetPictureSeName(name)); return(newPicture); }