<%@ Page Language="C#" AutoEventWireup="true" %> <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> <%@ Import Namespace="Sitecore" %> <%@ Import Namespace="Sitecore.Data" %> <%@ Import Namespace="Sitecore.Data.Archiving" %> <%@ Import Namespace="Sitecore.Data.Items" %> <%@ Import Namespace="Sitecore.Globalization" %> <%@ Import Namespace="Sitecore.Links" %> <%@ Import Namespace="System" %> <%@ Import Namespace="System.Collections" %> <%@ Import Namespace="System.Collections.Generic" %> <%@ Import Namespace="System.Linq" %> <%@ Import Namespace="System.Web" %> <%@ Import Namespace="System.Web.UI" %> <%@ Import Namespace="System.Web.UI.HtmlControls" %> <%@ Import Namespace="System.Web.UI.WebControls" %> <%@ Import Namespace="System.Data.SqlClient" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.ComponentModel" %> <!DOCTYPE html> <script language="C#" runat="server"> Database currentDB = null; private static String selectedDB = String.Empty; protected void Page_Init(object sender, EventArgs e) { //Space for custom logic } Item ContentRootItem = null; protected void Page_Load(object sender, EventArgs e) { //This condition allows only Administrator to access this page. if (!Sitecore.Context.User.IsAdministrator) { Response.Redirect("http://" + HttpContext.Current.Request.Url.Host + "/sitecore/login?returnUrl=%2fsitecore%2fadmin%GetKeywordReferenceItems.aspx"); } lblTotalCount.Attributes.Add("display", "none"); if (!Page.IsPostBack) { foreach (string dbname in Sitecore.Configuration.Factory.GetDatabaseNames()) { if (dbname.ToLower() != "core" && dbname.ToLower() != "filesystem") { ddDb.Items.Add(new ListItem(dbname)); } } } } public DataTable GetDataTable(string query, string strConnectionString) { String ConnString = ConfigurationManager.ConnectionStrings[strConnectionString].ConnectionString; SqlDataAdapter adapter = new SqlDataAdapter(); DataTable genericTable = new DataTable(); using (SqlConnection conn = new SqlConnection(ConnString)) { adapter.SelectCommand = new SqlCommand(query, conn); adapter.SelectCommand.CommandTimeout = 300; adapter.Fill(genericTable); } return genericTable; } private void GetReferencedItems() { var strKeyword = txtKeyword.Text; //List<String> lstItemsId = new List<String>(); DataTable dtItemList = new DataTable(); dtItemList.Columns.Add("Id"); dtItemList.Columns.Add("Name"); var strSelectVersionedFieldsQuery = @"Select [ID], [Name] FROM [dbo].[Items] Where [ID] in (Select DISTINCT [ItemId] From [dbo].[VersionedFields] Where [FieldId] in (SELECT [ID] FROM [Items] Where Name NOT LIKE '\_\_%' ESCAPE '\') AND Value like '%" + strKeyword + "%')"; var VersionedFieldsData = GetDataTable(strSelectVersionedFieldsQuery, ddDb.SelectedValue); if (VersionedFieldsData.Rows.Count > 0) { foreach (DataRow currentItem in VersionedFieldsData.Rows) { // lstItemsId.Add(currentItem[0].ToString()); DataRow dr = dtItemList.NewRow(); dr["Id"] = currentItem[0].ToString(); dr["Name"] = currentItem[1].ToString(); dtItemList.Rows.Add(dr); } } var strSelectSharedFieldsQuery = @"Select [ID], [Name] FROM [dbo].[Items] Where [ID] in (Select DISTINCT [ItemId] From [dbo].[SharedFields] Where [FieldId] in (SELECT [ID] FROM [Items] Where Name NOT LIKE '\_\_%' ESCAPE '\') AND Value like '%" + strKeyword + "%')"; var SharedFieldsData = GetDataTable(strSelectSharedFieldsQuery, ddDb.SelectedValue); if (SharedFieldsData.Rows.Count > 0) { foreach (DataRow currentItem in SharedFieldsData.Rows) { DataRow dr = dtItemList.NewRow(); dr["Id"] = currentItem[0].ToString(); dr["Name"] = currentItem[1].ToString(); dtItemList.Rows.Add(dr); } } var strSelectUnversionedFieldsQuery = @"Select [ID], [Name] FROM [dbo].[Items] Where [ID] in (Select DISTINCT [ItemId] From [dbo].[UnversionedFields] Where [FieldId] in (SELECT [ID] FROM [Items] Where Name NOT LIKE '\_\_%' ESCAPE '\') AND Value like '%" + strKeyword + "%')"; var UnversionedFieldsData = GetDataTable(strSelectUnversionedFieldsQuery, ddDb.SelectedValue); if (UnversionedFieldsData.Rows.Count > 0) { foreach (DataRow currentItem in UnversionedFieldsData.Rows) { DataRow dr = dtItemList.NewRow(); dr["Id"] = currentItem[0].ToString(); dr["Name"] = currentItem[1].ToString(); dtItemList.Rows.Add(dr); } } lblTotalCount.Text = "Total item count:" + dtItemList.Rows.Count; if (dtItemList.Rows.Count > 0) { pnlmedias.Visible = true; gvMediaItems.DataSource = dtItemList.DefaultView.ToTable(true, "Id", "Name"); gvMediaItems.DataBind(); gvMediaItems.Visible = true; } } protected void btnGo_Click(object sender, EventArgs e) { try { DateTime dtStartDateTime = DateTime.Now; lblStartTime.Text = "Start DateTime:" + dtStartDateTime.ToString("dd-MM-yyyy hh:mm:ss"); if (!string.IsNullOrEmpty(txtKeyword.Text)) GetReferencedItems(); //selectedDB = ddDb.SelectedValue; DateTime dtEndDateTime = DateTime.Now; lblEndTime.Text = "End DateTime:" + dtEndDateTime.ToString("dd-MM-yyyy hh:mm:ss"); TimeSpan duration = dtEndDateTime - dtStartDateTime; lblDiff.Text = "Duration (minutes) :" + duration.TotalMinutes.ToString("#.##"); } catch (Exception excp) { Sitecore.Diagnostics.Log.Error("Error while loading the list of unreferenced media items:" + excp.StackTrace, excp); } } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script src="https://code.jquery.com/jquery-1.11.3.min.js"></script> <script src="http://cdn.datatables.net/1.10.10/js/jquery.dataTables.min.js"></script> <script src="https://cdn.datatables.net/colreorder/1.3.0/js/dataTables.colReorder.min.js"></script> <script src="https://cdn.datatables.net/fixedcolumns/3.2.0/js/dataTables.fixedColumns.min.js"></script> <link href='https://fonts.googleapis.com/css?family=Roboto:400,900' rel='stylesheet' type='text/css' /> <link rel="stylesheet" href="http://cdn.datatables.net/1.10.10/css/jquery.dataTables.min.css" type="text/css" /> <style> #meditmTbl { width: 100%; } thead .itmnm { max-width: 35%; } thead .itmpath { max-width: 35%; } thead .itmid { max-width: 20%; } </style> <!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css"> <!-- Optional theme --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap-theme.min.css"> <!-- Latest compiled and minified JavaScript --> <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script> <title>Refernced Keyword Items</title> <style> .jumbotron, .footer { display: none; } .jumbotron .h1, .jumbotron h1 { font-size: 48px; } .jumbotron p { font-size: 16px; } .aspNetDisabled { -webkit-appearance: button; cursor: pointer; text-shadow: 0 1px 0 #fff; background-image: -webkit-linear-gradient(top,#fff 0,#e0e0e0 100%); background-image: -o-linear-gradient(top,#fff 0,#e0e0e0 100%); background-image: -webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0)); background-image: linear-gradient(to bottom,#fff 0,#e0e0e0 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); background-repeat: repeat-x; border-color: #dbdbdb; border-color: #ccc; display: inline-block; padding: 6px 12px; margin-bottom: 0; font-size: 14px; font-weight: 400; line-height: 1.42857143; text-align: center; white-space: nowrap; vertical-align: middle; -ms-touch-action: manipulation; touch-action: manipulation; -webkit-user-select: none; box-shadow: inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075); background-image: linear-gradient(to bottom,#fff 0,#e0e0e0 100%); text-shadow: 0 1px 0 #fff; -webkit-appearance: button; color: #333; border-color: #adadad; } input[type=checkbox], input[type=radio] { height: 16px; width: 16px; } </style> <style> img { border: none; max-width: 400px; width: 100%; height: auto; } /* */ #screenshot { position: absolute; border: 1px solid #ccc; /*background: #333;*/ padding: 5px; display: none; color: #fff; } /* */ </style> </head> <body> <form id="form1" runat="server"> <div class="container"> <div class="form-group"> <div class="row"> <div class="col-sm-4"> <label for="ddDb" title="Please select database">Please select database:</label> </div> <div class="col-sm-8"> <asp:DropDownList ID="ddDb" runat="server" AutoPostBack="true"></asp:DropDownList> </div> </div> <div class="row"> <div class="col-sm-4"> <label for="chkIncludeSystem" title="Keyword">Keyword</label> </div> <div class="col-sm-8"> <asp:TextBox ID="txtKeyword" Text="" Width="500" runat="server"></asp:TextBox> </div> </div> </div> <div class="form-group"> <asp:Button class="btn btn-default" ID="btnGo" runat="server" OnClick="btnGo_Click" Text="Get reference list" /> </div> <asp:Label ID="lblMessage" runat="server"></asp:Label> <br /> <asp:Panel ID="pnlmedias" runat="server"> <div class="form-group"> <asp:Label ID="lblTotalCount" runat="server"></asp:Label> <br /> <asp:Label ID="lblStartTime" runat="server"></asp:Label> <br /> <asp:Label ID="lblEndTime" runat="server"></asp:Label> <br /> <asp:Label ID="lblDiff" runat="server"></asp:Label> </div> <asp:ScriptManager ID="MainScriptManager" runat="server" /> <div class="form-group" id="unusedItems"> <telerik:RadGrid ID="gvMediaItems" runat="server" GridLines="Both" Skin="Metro" Visible="false" Width="1200px" CssClass="gridViewLayout" MasterTableView-Caption="Refernced Keyword Items List"> <clientsettings> <Resizing AllowColumnResize="false" AllowRowResize="false" ResizeGridOnColumnResize="false" ClipCellContentOnResize="true" EnableRealTimeResize="false" AllowResizeToFit="true" ShowRowIndicatorColumn="true" /> </clientsettings> <exportsettings hidestructurecolumns="true" exportonlydata="true" filename="UserSignups" csv-columndelimiter="comma" csv-rowdelimiter="NewLine" csv-enclosedatawithquotes="False"> <Pdf PageTitle="Referenced Keyword Information" PaperSize="A4" DefaultFontFamily="Arial Unicode MS" /> </exportsettings> <mastertableview width="100%" commanditemdisplay="Top"> <CommandItemSettings ShowExportToWordButton="false" ShowExportToCsvButton="true" ShowExportToExcelButton="true" ShowExportToPdfButton="true" ShowAddNewRecordButton="false" ShowRefreshButton="false" /> </mastertableview> <clientsettings allowdragtogroup="false" allowcolumnsreorder="false" reordercolumnsonclient="True"> <Scrolling AllowScroll="false" UseStaticHeaders="false" /> </clientsettings> </telerik:RadGrid> </div> </asp:Panel> </div> </form> </body> </html>