private void processRDL(SSRS2006.ReportingService2006 SSRS, SPWeb web, SPListItem folder, SSRS2006.DataSourceReference dsr, SPDocumentLibrary list) { foreach (SPListItem li in list.GetItemsInFolder(list.DefaultView, folder.Folder)) { if (li.FileSystemObjectType == SPFileSystemObjectType.Folder) { processRDL(SSRS, web, li, dsr, list); } else { try { SSRS2006.DataSource[] dsstl = SSRS.GetItemDataSources(web.Url + "/" + li.Url); for (int i = 0; i < dsstl.Length; i++) { if (dsstl[i].Name == "EPMLiveReportDB") { dsstl[i].Item = dsr; } } SSRS.SetItemDataSources(web.Url + "/" + li.Url, dsstl); } catch { } } } }
public static void ProcessReportDataSources(SPWeb web, string FileList) { XmlDocument docFiles = new XmlDocument(); docFiles.LoadXml("<Files/>"); try { docFiles.LoadXml(FileList); } catch { } string ssrsurl = EPMLiveCore.CoreFunctions.getWebAppSetting(web.Site.WebApplication.Id, "ReportingServicesURL"); SSRS2006.ReportingService2006 SSRS = new SSRS2006.ReportingService2006(); SSRS.Url = ssrsurl + "/ReportService2006.asmx"; SSRS.UseDefaultCredentials = true; SPList tList = web.Lists.TryGetList("Report Library"); if (tList != null) { SPDocumentLibrary list = (SPDocumentLibrary)tList; SPListItemCollection folders = list.GetItemsInFolder(list.DefaultView, list.RootFolder); SSRS2006.DataSourceReference dsr = new SSRS2006.DataSourceReference(); dsr.Reference = web.Url + "/Report Library/Data Sources/EPMLiveReportDB.rsds"; foreach (SPListItem li in folders) { processRDL(SSRS, web, li, dsr, list, docFiles); } } }
protected TreeNode CreateTreeNode(SPListItem item, SPDocumentLibrary doc) { if (item == null) { throw new ArgumentNullException("item"); } if (doc == null) { throw new ArgumentNullException("doc"); } var node = new TreeNode(item.Name, item.UniqueId.ToString()); var spListItem = doc.GetItemByUniqueId(item.UniqueId); if (!string.IsNullOrWhiteSpace(spListItem.Title)) { node.Text = spListItem.Title; } if (item.FileSystemObjectType == SPFileSystemObjectType.Folder) { node.Text = string.Format(BoldTextTemplate, node.Text); node.SelectAction = TreeNodeSelectAction.None; node.ImageUrl = TreeNodeFolderImage; var folderItems = doc.GetItemsInFolder(doc.DefaultView, item.Folder); if (folderItems.Count > 0) { PopulateTree(folderItems, doc, node); } } else if (item.FileSystemObjectType == SPFileSystemObjectType.File && item.File.Name.EndsWith(RdlFileExtension, StringComparison.OrdinalIgnoreCase)) { if (node.Text.EndsWith(RdlFileExtension, StringComparison.OrdinalIgnoreCase)) { node.Text = node.Text.Substring(0, node.Text.Length - FileExtensionLength); } node.ImageUrl = TreeNodeFileImage; try { node.NavigateUrl = GetFileNodeNavigationUrl(item); } catch (Exception ex) { node.Text = GetFileNodeErrorText(item, ex); Trace.TraceError(ex.ToString()); } } return(node); }
public SPListItemCollectionInstance GetItemsInFolder(SPViewInstance view, SPFolderInstance folder) { if (view == null) { throw new JavaScriptException(this.Engine, "Error", "A SPView must be specified as the first argument."); } if (folder == null) { throw new JavaScriptException(this.Engine, "Error", "A SPFolder must be specified as the second argument."); } var items = m_documentLibrary.GetItemsInFolder(view.View, folder.Folder); return(items == null ? null : new SPListItemCollectionInstance(this.Engine.Object.InstancePrototype, items)); }
private void BuildReportTree(SPFolder spFolder, SPDocumentLibrary spDocumentLibrary, ref XElement parentElement) { var xElement = new XElement("Folder", new XAttribute("Name", spFolder.Name)); foreach (SPListItem spListItem in spDocumentLibrary.GetItemsInFolder(spDocumentLibrary.DefaultView, spFolder)) { if (spListItem.FileSystemObjectType == SPFileSystemObjectType.Folder) { BuildReportTree(spListItem.Folder, spDocumentLibrary, ref xElement); } else if (spListItem.FileSystemObjectType == SPFileSystemObjectType.File && spListItem.File.Name.ToLower().EndsWith(".rdl")) { SPFile spFile = spListItem.File; string name = spFile.Name; string url = string.Empty; string hasResourcesParam = string.Empty; try { var web = SPContext.Current.Web.Site.RootWeb; var sServerReelativeUrl = (web.ServerRelativeUrl == "/") ? "" : web.ServerRelativeUrl; url = sServerReelativeUrl + "/_layouts/epmlive/SSRSReportRedirect.aspx?weburl=" + HttpUtility.UrlEncode(Web.Site.RootWeb.Url) + "&itemurl=" + HttpUtility.UrlEncode(spListItem.Url); } catch (Exception ex) { } var element = new XElement("Report", new XAttribute("Name", name.Substring(0, name.Length - 4)), new XAttribute("Url", url), new XAttribute("HasResourcesParam", hasResourcesParam)); xElement.Add(element); } } parentElement.Add(xElement); }
private void processReports(SPWeb web) { SPSecurity.RunWithElevatedPrivileges(delegate() { string username = ""; string password = ""; EPMLiveCore.ReportAuth _chrono = SPContext.Current.Site.WebApplication.GetChild <EPMLiveCore.ReportAuth>("ReportAuth"); if (_chrono != null) { username = _chrono.Username; password = EPMLiveCore.CoreFunctions.Decrypt(_chrono.Password, "KgtH(@C*&@Dhflosdf9f#&f"); } bool reportingIntegratedMode = true; bool.TryParse(EPMLiveCore.CoreFunctions.getWebAppSetting(SPContext.Current.Site.WebApplication.Id, "ReportsUseIntegrated"), out reportingIntegratedMode); if (!reportingIntegratedMode) { Guid fieldsFeature = new Guid("acdb86be-bfa5-41c7-91a8-7682d7edffa5"); if (web.Features[fieldsFeature] == null) { web.Features.Add(fieldsFeature); } Guid receiversFeature = new Guid("a8ebe311-83e1-48a4-ab31-50f237398f44"); if (web.Features[receiversFeature] == null) { web.Features.Add(receiversFeature); } string dataSourceString = String.Format(@"<?xml version=""1.0"" encoding=""utf-8""?> <DataSourceDefinition xmlns=""http://schemas.microsoft.com/sqlserver/reporting/2006/03/reportdatasource""> <Extension>SQL</Extension> <ConnectString>Data Source={0};Initial Catalog={1};</ConnectString> <CredentialRetrieval>Store</CredentialRetrieval> <WindowsCredentials>{2}</WindowsCredentials> <ImpersonateUser>False</ImpersonateUser> <Enabled>True</Enabled> </DataSourceDefinition>", txtReportServer.Text, txtReportDatabase.Text, chkWindows.Checked); SPDocumentLibrary doclib = web.Lists["Report Library"] as SPDocumentLibrary; web.AllowUnsafeUpdates = true; SPFile file = doclib.RootFolder.Files.Add(doclib.RootFolder.Url + "/Data Sources/EPMLiveReportDB.rsds", Encoding.ASCII.GetBytes(dataSourceString), new Hashtable { { "Datasource Credentials", String.Format("{0}:{1}", txtReportUsername.Text, hdnReportPassword.Value == "" ? hdnSaveReportPassword.Value : hdnReportPassword.Value) } }, true); web.AllowUnsafeUpdates = false; } else { SSRS2006.ReportingService2006 SSRS = new SSRS2006.ReportingService2006(); SSRS.Url = ssrsurl + "/ReportService2006.asmx"; SSRS.UseDefaultCredentials = true; if (password != "") { SSRS.UseDefaultCredentials = false; if (username.Contains("\\")) { SSRS.Credentials = new System.Net.NetworkCredential(username.Substring(username.IndexOf("\\") + 1), password, username.Substring(0, username.IndexOf("\\"))); } else { SSRS.Credentials = new System.Net.NetworkCredential(username, password); } } /*System.Web.HttpCookie tCookie = System.Web.HttpContext.Current.Response.Cookies["WSS_KeepSessionAuthenticated"]; * * System.Net.Cookie oC = new System.Net.Cookie(); * * // Convert between the System.Net.Cookie to a System.Web.HttpCookie... * oC.Domain = System.Web.HttpContext.Current.Request.Url.Host; * oC.Expires = tCookie.Expires; * oC.Name = tCookie.Name; * oC.Path = tCookie.Path; * oC.Secure = tCookie.Secure; * oC.Value = tCookie.Value; * * SSRS.CookieContainer = new System.Net.CookieContainer(); * * SSRS.CookieContainer.Add(oC); */ try { var authCookie = HttpContext.Current.Request.Cookies["FedAuth"]; var fedAuth = new Cookie(authCookie.Name, authCookie.Value, authCookie.Path, string.IsNullOrEmpty(authCookie.Domain) ? HttpContext.Current.Request.Url.Host : authCookie.Domain); SSRS.CookieContainer = new CookieContainer(); SSRS.CookieContainer.Add(fedAuth); } catch { } SPDocumentLibrary list = (SPDocumentLibrary)web.Lists["Report Library"]; SPListItemCollection folders = list.GetItemsInFolder(list.DefaultView, list.RootFolder); try { foreach (SPListItem li in folders) { if (li.FileSystemObjectType == SPFileSystemObjectType.Folder && li.Name == "Data Sources") { SSRS2006.DataSourceDefinition dsd = new SSRS2006.DataSourceDefinition(); dsd.ConnectString = "Data Source=" + txtReportServer.Text + ";Initial Catalog=" + txtReportDatabase.Text + ";"; dsd.CredentialRetrieval = SSRS2006.CredentialRetrievalEnum.Store; dsd.UserName = txtReportUsername.Text; if (hdnReportPassword.Value == "") { dsd.Password = hdnSaveReportPassword.Value; } else { dsd.Password = hdnReportPassword.Value; } if (chkWindows.Checked) { dsd.WindowsCredentials = chkWindows.Checked; } dsd.Enabled = true; dsd.Extension = "SQL"; SSRS.CreateDataSource("EPMLiveReportDB.rsds", web.Url + "/" + li.Url, true, dsd, null); } } SSRS2006.DataSourceReference dsr = new SSRS2006.DataSourceReference(); dsr.Reference = web.Url + "/Report Library/Data Sources/EPMLiveReportDB.rsds"; foreach (SPListItem li in folders) { processRDL(SSRS, web, li, dsr, list); } } catch { pnlMessage.Visible = true; } } }); }
/// <summary> /// Builds the report tree. /// </summary> /// <param name="parentFolder">The parent folder.</param> /// <param name="spFolders">The sp folders.</param> /// <param name="spDocumentLibrary">The sp document library.</param> /// <param name="parentElement">The parent element.</param> private void BuildReportTree(SPFolder parentFolder, IEnumerable <SPFolder> spFolders, SPDocumentLibrary spDocumentLibrary, ref XElement parentElement) { var xElement = new XElement("Folder", new XAttribute("Name", parentFolder.Name)); foreach (SPListItem spListItem in spDocumentLibrary.GetItemsInFolder(spDocumentLibrary.DefaultView, parentFolder)) { if (spListItem.FileSystemObjectType != SPFileSystemObjectType.File || !spListItem.File.Name.ToLower().EndsWith(".rdl")) { continue; } SPFile spFile = spListItem.File; string name = spFile.Name; string safeServerRelativeUrl = Web.SafeServerRelativeUrl(); string url = string.Empty; string hasResourcesParam = string.Empty; string error = string.Empty; try { //string reportUrl = BuildReportQueryString(SPUrlUtility.CombineUrl(Web.Url, spListItem.Url)); //string[] reportUrlParts = reportUrl.Split('|'); /*url = * string.Format( * @"{0}/_layouts/ReportServer/RSViewerPage.aspx?rv:RelativeReportUrl={1}{2}&rv:HeaderArea=none", * safeServerRelativeUrl, * HttpUtility.UrlEncode(string.Format(@"{0}/{1}", safeServerRelativeUrl, spListItem.Url)), * reportUrlParts[0]); * * hasResourcesParam = reportUrlParts[1]; * */ //sites/dev4/_layouts/epmlive/SSRSReportRedirect.aspx?weburl=http%3a%2f%2fcontosos1%2fsites%2fdev4&itemurl=Report+Library%2fepmlivetl%2fResources%2fCapacity+Planning%2fResource+Requirements.rdl url = spDocumentLibrary.ParentWeb.ServerRelativeUrl + "/_layouts/15/epmlive/SSRSReportRedirect.aspx?weburl=" + System.Web.HttpUtility.UrlEncode(spDocumentLibrary.ParentWeb.Url) + "&itemurl=" + System.Web.HttpUtility.UrlEncode(spListItem.Url); } catch (Exception ex) { error = ex.Message; } var element = new XElement("Report", new XAttribute("Name", name.Substring(0, name.Length - 4)), new XAttribute("Url", url), new XAttribute("HasResourcesParam", hasResourcesParam)); if (!string.IsNullOrEmpty(error)) { element.Add(new XElement("Error", new XCData(error))); } xElement.Add(element); } foreach ( SPFolder spFolder in spFolders.Where(f => f.ParentFolder.Name.Equals(parentFolder.Name)).Where( spFolder => !spFolder.Name.Equals("Data Sources"))) { BuildReportTree(spFolder, spFolders, spDocumentLibrary, ref xElement); } parentElement.Add(xElement); }