Last active
September 6, 2020 05:34
-
-
Save sreekrishnan1993/1ab6781023cfdfac3021167ba4b0e94a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="VersionedMediaCreateLanguageVersion.aspx.cs" Inherits="MyProject.sitecore.Admin.VersionedMediaCreateLanguageVersion" %> | |
<!DOCTYPE html> | |
<html xmlns="http://www.w3.org/1999/xhtml"> | |
<head runat="server"> | |
<title></title> | |
</head> | |
<body> | |
<form id="form1" runat="server"> | |
<div> | |
<asp:Label ID="Label1" runat="server" Text="Enter the Media folder ID or Media ID"></asp:Label> | |
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> | |
<br /> | |
<asp:Label ID="Label2" runat="server" Text="Enter the Source Language"></asp:Label> | |
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> | |
<br /> | |
<asp:Label ID="Label3" runat="server" Text="Enter the Target Language"></asp:Label> | |
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox> | |
<br /> | |
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /> | |
</div> | |
</form> | |
</body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using DocumentFormat.OpenXml.Drawing.Diagrams; | |
using Sitecore.Data; | |
using Sitecore.Data.Items; | |
using Sitecore.Data.Managers; | |
using Sitecore.Globalization; | |
using Sitecore.Resources.Media; | |
using System; | |
using System.Collections.Generic; | |
using System.IO; | |
using System.Linq; | |
using System.Web; | |
using System.Web.UI; | |
using System.Web.UI.WebControls; | |
namespace MyProject.sitecore.Admin | |
{ | |
public partial class VersionedMediaCreateLanguageVersion : System.Web.UI.Page | |
{ | |
Database db = Sitecore.Configuration.Factory.GetDatabase("master"); | |
protected void Page_Load(object sender, EventArgs e) | |
{ | |
} | |
protected void Button1_Click(object sender, EventArgs e) | |
{ | |
var itemID = TextBox1.Text; //Either Specify the mparent media folder item ID or for single media item ID | |
var sourceLanguage = TextBox2.Text; // Source language in which langauge version is present | |
var targetLanguage = TextBox3.Text; //Target Language to which we need to create new langauge version if not exists | |
var item = db.GetItem(new Sitecore.Data.ID(itemID), Language.Parse(sourceLanguage)); | |
if (item.TemplateID.Equals(new ID("{FE5DD826-48C6-436D-B87A-7C4210C7413B}"))) //If template is media folder | |
{ | |
Sitecore.Diagnostics.Log.Info("If Loop", this); | |
var childItems = item.Axes.GetDescendants(); | |
foreach (Item childItem in childItems) | |
{ | |
if (!item.TemplateID.Equals(new ID("{FE5DD826-48C6-436D-B87A-7C4210C7413B}"))) //If template is versioned media item | |
{ | |
var mediaItem = new MediaItem(childItem); | |
Stream stream = ConvertMediaItemToByteArray(mediaItem); | |
AddMediaItem(stream, mediaItem, Language.Parse(targetLanguage)); | |
} | |
} | |
} | |
else | |
{ | |
var mediaItem = new MediaItem(item); | |
Stream stream = ConvertMediaItemToByteArray(mediaItem); | |
AddMediaItem(stream, mediaItem, Language.Parse(targetLanguage)); | |
} | |
} | |
public Stream ConvertMediaItemToByteArray(MediaItem mediaItem) | |
{ | |
var blobField = mediaItem.InnerItem.Fields["blob"]; | |
Stream stream = blobField.GetBlobStream(); | |
return stream; | |
} | |
public Item AddMediaItem(Stream stream, MediaItem mediaItem, Language language) | |
{ | |
try | |
{ | |
var mediaExtension = mediaItem.Extension; | |
var fullMediaPath = mediaItem.InnerItem.Paths.FullPath; | |
var title = !string.IsNullOrEmpty(mediaItem.Title) ? mediaItem.Title : mediaItem.Name; | |
var creator = new MediaCreator(); | |
var item = db.GetItem(mediaItem.ID, language); | |
if (!HasLanguageVersion(item, language)) | |
{ | |
var newItemVersion = item.Versions.AddVersion(); | |
var newMediaItem = new MediaItem(newItemVersion); | |
var media = MediaManager.GetMedia(newMediaItem); | |
media.SetStream(stream, mediaExtension); | |
newItemVersion.Editing.BeginEdit(); | |
newItemVersion.Fields["Title"].Value = title; | |
newItemVersion.Fields["Width"].Value = mediaItem.InnerItem["Width"]; | |
newItemVersion.Fields["Height"].Value = mediaItem.InnerItem["Height"]; | |
newItemVersion.Fields["Alt"].Value = mediaItem.InnerItem["Alt"]; | |
newItemVersion.Editing.EndEdit(); | |
return newItemVersion; | |
} | |
return null; | |
} | |
catch (Exception ex) | |
{ | |
return null; | |
} | |
} | |
private bool HasLanguageVersion(Item item, Language targetLanguage) | |
{ | |
var versionCount = ItemManager.GetVersions(item, targetLanguage).Count; | |
return versionCount > 0; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment