/// <summary> /// 指定作品的附件显示 /// </summary> /// <param name="worksId">作品ID</param> /// <param name="typeId">文件类型ID</param> /// <returns></returns> public static StringBuilder GenerateFileHtml(long worksId, int typeId) { StringBuilder htmlContent = new StringBuilder(); using (ChannelFactory <IServiceWorks> channelFactory = new ChannelFactory <IServiceWorks>("ServiceWorks")) { IServiceWorks proxy = channelFactory.CreateChannel(); //获取指定作品指定文件类型的附件列表 //switch (typeId) //{ // case 1://文档 // var files = proxy.GetWorksFile(worksId.ToString(), "1"); // htmlContent.AppendLine(proxy,worksId); // break; // case 2: // var files = proxy.GetWorksFile(worksId.ToString(), "2"); // htmlContent.AppendLine(ShowImages(files)); // break; // case 3: case 4: // htmlContent.AppendLine(ShowMedias(files)); // break; // default: // htmlContent.AppendLine(ShowOthers(files)); // break; //} } return(htmlContent); }
/// <summary> /// 图片文件的显示:相册 /// </summary> /// <param name="serviceWorks"></param> /// <param name="worksId"></param> /// <returns></returns> private void ShowImages(IServiceWorks serviceWorks, long worksId) { StringBuilder htmlContent = new StringBuilder(); List <VAWcfService.WorksFile> imagesList = serviceWorks.GetWorksFile(worksId.ToString(), "2"); if (imagesList.Count > 0) { VAWcfService.Works works = serviceWorks.GetWorksSubmitById(worksId.ToString()); string periodId = works.PeriodID.ToString(); Periods period = serviceWorks.GetPeriodsById(periodId).FirstOrDefault(); string courseId = period.CourseID.ToString(); Course course = serviceWorks.GetCourseById(courseId).FirstOrDefault(); string siteUrl = "http://va.neu.edu.cn"; if (course != null) { siteUrl += course.Url; } htmlContent.AppendLine("<fieldset><legend>作品图片</legend>"); htmlContent.AppendLine("<div class='box'>"); htmlContent.AppendLine("<div id ='imgs' class='imgs'>"); foreach (var file in imagesList) { htmlContent.AppendLine("<img src='" + siteUrl + file.FilePath + "' onClick='$(this).ImgZoomIn();' height='200'>"); } htmlContent.AppendLine("</div>"); htmlContent.AppendLine("</div>"); htmlContent.AppendLine("</fieldset>"); ImagesDiv.InnerHtml = htmlContent.ToString(); } else { ImagesDiv.Visible = false; } }
/// <summary> /// 删除指定作品 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void IBtnDel_Click(object sender, ImageClickEventArgs e) { ImageButton btn = (ImageButton)sender; string worksId = btn.CommandArgument; using (ChannelFactory <IServiceWorks> channelFactory = new ChannelFactory <IServiceWorks>("ServiceWorks")) { IServiceWorks serviceWorks = channelFactory.CreateChannel(); serviceWorks.Delete(worksId); } }
/// <summary> /// 获取作品类别 /// </summary> /// <returns></returns> private List <VAWcfService.WorksType> GetWorksTypes() { List <VAWcfService.WorksType> wTypes; using (ChannelFactory <IServiceWorks> channelFactory = new ChannelFactory <IServiceWorks>("ServiceWorks")) { IServiceWorks proxy = channelFactory.CreateChannel(); wTypes = proxy.GetWorksTypes(); } return(wTypes); }
/// <summary> /// 获取作品来源网站列表 /// </summary> /// <returns></returns> private List <Course> GetWebSites() { List <Course> wCurses; using (ChannelFactory <IServiceWorks> channelFactory = new ChannelFactory <IServiceWorks>("ServiceWorks")) { IServiceWorks proxy = channelFactory.CreateChannel(); wCurses = proxy.GetCourses(); } return(wCurses); }
/// <summary> /// 删除作品 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnDelete_Click(object sender, ImageClickEventArgs e) { string worksId = WorksId.ToString(); using (ChannelFactory <IServiceWorks> channelFactory = new ChannelFactory <IServiceWorks>("ServiceWorks")) { IServiceWorks serviceWorks = channelFactory.CreateChannel(); VAWcfService.Works wks = serviceWorks.GetWorksSubmitById(worksId); wks.Flag = 0; serviceWorks.Update(wks); } }
/// <summary> /// 多媒体文件(包括音视频)的显示:播放窗口 /// </summary> /// <param name="serviceWorks">数据服务层接口</param> /// <param name="worksId">作品ID</param> /// <param name="typeId"></param> /// <returns></returns> private void ShowMedias(IServiceWorks serviceWorks, long worksId, int typeId) { StringBuilder htmlContent = new StringBuilder(); List <VAWcfService.WorksFile> mediaFiles = serviceWorks.GetWorksFile(worksId.ToString(), typeId.ToString()); if (mediaFiles.Count > 0) { VAWcfService.WorksFile mediaFile = mediaFiles.OrderByDescending(wf => wf.WorksFileID).FirstOrDefault();//因为可能有多个文档重复上传,所以此处先处理成该作品最后一次上传的文档为作品文档。 VAWcfService.Works works = serviceWorks.GetWorksSubmitById(worksId.ToString()); string periodId = works.PeriodID.ToString(); Periods period = serviceWorks.GetPeriodsById(periodId).FirstOrDefault(); string siteUrl = "http://va.neu.edu.cn"; if (period != null) { string courseId = period.CourseID.ToString(); Course course = serviceWorks.GetCourseById(courseId).FirstOrDefault(); if (course != null) { siteUrl += course.Url; } } if (mediaFile != null) { MediaDiv.Visible = true; //string mediaHtml = "<iframe type='text/html' width='640' height='360'"; //mediaHtml += "src='"+ siteUrl + "/_layouts/15/videoembedplayer.aspx?site=" + mediaFile.FilePath + "title=1'></iframe>"; htmlContent.AppendLine("<div class='plist'>"); htmlContent.AppendLine("<a href='" + siteUrl + mediaFile.FilePath + "' name='" + mediaFile.FileName + "'"); htmlContent.AppendLine("<img class='listpic' src='images/start.jpg' alt='" + mediaFile.FileName + "' width='200' height='150'>"); string txtExtend = mediaFile.FileName.Substring(mediaFile.FileName.LastIndexOf(".", StringComparison.Ordinal) + 1).ToLower(); if (txtExtend == "mp3") { htmlContent.AppendLine("<span class='v_bq_hong'>讲解音频</span><span class='v_bg'></span>"); } else { htmlContent.AppendLine("<span class='v_bq_lan'>讲解视频</span><span class='v_bg'></span>"); } htmlContent.AppendLine("<span class='v_bq_vico'></span></a>"); htmlContent.AppendLine("<h2><a href='" + siteUrl + mediaFile.FilePath + "' name='" + mediaFile.FileName + "'>" + mediaFile.FileName + "</a></h2><p>" + mediaFile.Created + "</p>"); htmlContent.AppendLine("</div>"); } //} MediaList.InnerHtml = htmlContent.ToString(); } else { MediaDiv.Visible = false; } //return htmlContent; }
////师生点评 //private void GetComments(long worksId) //{ // divScore.Controls.Clear(); // List<CSWorksExpertUser> ds = GetDSWorksComments; // List<CSWorksExpertUser> dv = ds.Where(p => p.UserID == DAL.Common.LoginID).ToList(); // if (dv.Count > 0) // Page.ClientScript.RegisterStartupScript(this.GetType(), "message", "<script defer>YiComments();</script>"); // lblPersons.Text = ds.Count.ToString(); // gvComments.DataSource = dv; // gvComments.DataBind(); // float avg = 0; // int tCount = 0; // foreach (CSWorksExpertUser dr in ds) // { // if (dr.Score.HasValue && dr.Score > 0) // { // avg = avg + (float)dr.Score; // tCount = tCount + 1; // } // } // if (tCount > 0) // avg = avg / tCount; // int score = (int)avg; // string txt = ""; // for (int i = 0; i < score; i++) // { // txt += "<img src='images/star_red.gif'/>"; // } // int j = score; // if (avg > score) // { // j = j + 1; // txt += "<img src='images/star_red2.gif'/>"; // } // for (int i = j; i < 5; i++) // { // txt += "<img src='images/star_gray.gif'/>"; // } // divScore.Controls.Add(new LiteralControl(txt)); //} /// <summary> /// 初始化作品图片显示 /// </summary> /// <param name="worksId"></param> /// <returns></returns> public static string ImagesHtml(long worksId)// { string imageshtml = ""; using (ChannelFactory <IServiceWorks> channelFactory = new ChannelFactory <IServiceWorks>("ServiceWorks")) { IServiceWorks proxy = channelFactory.CreateChannel(); //getall List <VAWcfService.WorksFile> imageFiles = proxy.GetWorksFile(worksId.ToString(), "2"); foreach (var file in imageFiles) { } } return(imageshtml); }
/// <summary> /// 其它文件显示:下载列表 /// </summary> /// <param name="serviceWorks"></param> /// <param name="worksId"></param> /// <returns></returns> private void ShowOthers(IServiceWorks serviceWorks, long worksId) { StringBuilder htmlContent = new StringBuilder(); List <VAWcfService.WorksFile> otherFiles = serviceWorks.GetWorksFile(worksId.ToString(), "5"); if (otherFiles.Count > 0) { htmlContent.AppendLine("<fieldset><le其它附件: (点击文件名可下载)</span><br/>"); foreach (var file in otherFiles) { htmlContent.AppendLine("<a href='" + file.FilePath + "'>" + file.FileName + "</a>"); htmlContent.AppendLine("<br/>"); } OthersDiv.InnerHtml = htmlContent.ToString(); } else { OthersDiv.Visible = false; } }
/// <summary> /// 获取作品数据 /// </summary> /// <param name="userId">用户ID</param> /// <param name="worksTypeId">作品类别ID</param> /// <param name="courseId">课程ID</param> /// <returns></returns> private List <CSMyWorks> GetData(long userId, int worksTypeId, long courseId) { using (ChannelFactory <IServiceWorks> channelFactory = new ChannelFactory <IServiceWorks>("ServiceWorks")) { IServiceWorks serviceWorks = channelFactory.CreateChannel(); List <CSMyWorks> works = serviceWorks.GetMyWorks(); if (userId != 0) { works = works.Where(w => w.UserID == userId).ToList(); } if (worksTypeId != 0) { works = works.Where(w => w.WorksTypeID == worksTypeId).ToList(); } if (courseId != 0) { works = works.Where(w => w.CourseID == courseId).ToList(); } return(works); } }
/// <summary> /// 文档文件的显示:在线浏览 /// </summary> /// <param name="serviceWorks"></param> /// <param name="worksId"></param> /// <returns></returns> private void ShowDocuments(IServiceWorks serviceWorks, long worksId) { StringBuilder htmlContent = new StringBuilder(); List <VAWcfService.WorksFile> docFiles = serviceWorks.GetWorksFile(worksId.ToString(), "1"); if (docFiles.Count > 0) { SPSite spsite = SPContext.Current.Site; VAWcfService.Works works = serviceWorks.GetWorksSubmitById(worksId.ToString()); string periodId = works.PeriodID.ToString(); Periods period = serviceWorks.GetPeriodsById(periodId).FirstOrDefault(); if (period != null) { string courseId = period.CourseID.ToString(); Course course = serviceWorks.GetCourseById(courseId).FirstOrDefault(); string siteUrl = "http://va.neu.edu.cn"; string cUrl = ""; if (course != null) { cUrl = course.Url.Substring(0, course.Url.Length - 1); } siteUrl += cUrl; var docFile = docFiles.OrderByDescending(f => f.WorksFileID).FirstOrDefault();//因为可能有多个文档重复上传,所以此处先处理成该作品最后一次上传的文档为作品文档。 //if (docFiles.Count ==1) //{ //var file = docFiles[0]; if (docFile != null) { htmlContent.AppendLine("<fieldset><legend>作品文档:<a href='" + siteUrl + docFile.FilePath + "'>" + docFile.FileName + "</a></legend>"); htmlContent.AppendLine("<div style='width:100%;text-align:center'><iframe src='" + siteUrl + "/_layouts/15/WopiFrame.aspx?sourcedoc=" + cUrl + HttpUtility.UrlEncode(docFile.FilePath) + "&action=embedview' width='600px' height='400px' frameborder='0'></iframe></div>"); htmlContent.AppendLine("</fieldset>"); } //} //else //{ // htmlContent.AppendLine("<div>作品文档:</div>"); // htmlContent.AppendLine("<table style='border:1px solid #666666'>"); // htmlContent.AppendLine("<tr><td valign='top'>"); // htmlContent.AppendLine("<fieldset><legend>文档列表</legend>"); // foreach (var file in docFiles) // { // string url = siteUrl + "/_layouts/15/WopiFrame.aspx?sourcedoc= " + cUrl + HttpUtility.UrlEncode(docFiles[0].FilePath) + "&action=embedview"; // htmlContent.AppendLine("<dt onClick='return showframe('" + url + "')' style='cursor: pointer;'>"+ file.FileName+ "</dt>"); // } // htmlContent.AppendLine("</fieldset>"); // htmlContent.AppendLine("</td><td>"); // htmlContent.AppendLine("<fieldset style='border:1px solid #444444'><legend>文档预览</legend>"); // htmlContent.AppendLine("<iframe id='myIframe' src='"+ siteUrl + "/_layouts/15/WopiFrame.aspx?sourcedoc=" + cUrl + HttpUtility.UrlEncode(docFiles[0].FilePath) + "&action=embedview' width='400px' height='300px' frameborder='0'></iframe>"); // htmlContent.AppendLine("</fieldset>"); // htmlContent.AppendLine("</td></tr>"); // htmlContent.AppendLine("</table>"); //} } DocsDiv.InnerHtml = htmlContent.ToString(); } else { DocsDiv.Visible = false; } }
/// <summary> /// 初始化作品信息显示控件 /// </summary> /// <param name="userId">当前用户ID</param> /// <param name="worksId">当前作品ID</param> private void InitControl(long userId, long worksId) { if (worksId != 0) { using (ChannelFactory <IServiceWorks> channelFactory = new ChannelFactory <IServiceWorks>("ServiceWorks")) { IServiceWorks proxy = channelFactory.CreateChannel(); //getall VAWcfService.Works works = proxy.GetWorksSubmitById(worksId.ToString()); LbWorksName.Text = works.WorksName; LbWorksCode.Text = works.WorksCode; LbInstallationGuide.Text = works.InstallationGuide; LbComment.Text = works.Comment; LbSubmitProfile.Text = works.SubmitProfile; //LblDemoUrl.Text = works.DemoURL; //VAWcfService.WorksType worksType=proxy. DivDesignIdeas.Controls.Clear(); DivDesignIdeas.InnerText = works.DesignIdeas; DivKeyPoints.InnerText = works.KeyPoints; DivScore.InnerText = works.Score.ToString(); if (works.WorksTypeID != null) { VAWcfService.WorksType worksType = proxy.GetWorksTypeById(works.WorksTypeID.ToString()); LbWorksType.Text = worksType.WorksTypeName.ToString(); } //作品附件 ShowDocuments(proxy, worksId); //ShowMedias(proxy, worksId, 3); ShowMedias(proxy, worksId, 4); ShowImages(proxy, worksId); ShowOthers(proxy, worksId); //上下文导航 List <VAWcfService.Works> worksList = proxy.GetWorks(); int currentIndex = worksList.FindIndex(w => w.WorksID == worksId); //string worksNavhtml = ""; if (currentIndex == 0)//第一条 { LeftLayer.InnerHtml = "<a class='nvWorksLnk' href='WorksShow.aspx?wid=" + worksList[worksList.Count - 1].WorksID + "' title='上一作品:" + worksList[worksList.Count - 1].WorksName + "'><img src='images//Prev.png' alt=''/></a>"; RightLayer.InnerHtml = "<a class='nvWorksLnk' href='WorksShow.aspx?wid=" + worksList[currentIndex + 1].WorksID + "' title='下一作品:" + worksList[currentIndex + 1].WorksName + "'><img src='images/Next.png' alt=''/></a>"; lnkPre.Text = "上一作品:" + worksList[worksList.Count - 1].WorksName; lnkPre.NavigateUrl = "WorksShow.aspx?wid=" + worksList[worksList.Count - 1].WorksID; lnkNext.Text = "下一作品:" + worksList[currentIndex + 1].WorksName; lnkNext.NavigateUrl = "WorksShow.aspx?wid=" + worksList[currentIndex + 1].WorksID; } else if (currentIndex == worksList.Count - 1)// { LeftLayer.InnerHtml = "<a class='nvWorksLnk' href='WorksShow.aspx?wid=" + worksList[currentIndex - 1].WorksID + "' title='上一作品:" + worksList[currentIndex - 1].WorksName + "'><img src='images/Prev.png' alt=''/></a>"; RightLayer.InnerHtml = "<a class='nvWorksLnk' href='WorksShow.aspx?wid=" + worksList[0].WorksID + "' title='下一作品:" + worksList[0].WorksName + "'><img src='images/Next.png' alt=''/></a>"; lnkPre.Text = "上一作品:" + worksList[currentIndex - 1].WorksName; lnkPre.NavigateUrl = "WorksShow.aspx?wid=" + worksList[currentIndex - 1].WorksID; lnkNext.Text = "下一作品:" + worksList[0].WorksName; lnkNext.NavigateUrl = "WorksShow.aspx?wid=" + worksList[0].WorksID; } else// { LeftLayer.InnerHtml = "<a class='nvWorksLnk' href='WorksShow.aspx?wid=" + worksList[currentIndex - 1].WorksID + "' title='上一作品:" + worksList[currentIndex - 1].WorksName + "'><img src='images/Prev.png' alt=''/></a>"; RightLayer.InnerHtml = "<a class='nvWorksLnk' href='WorksShow.aspx?wid=" + worksList[currentIndex + 1].WorksID + "' title='下一作品:" + worksList[currentIndex + 1].WorksName + "'><img src='images/Next.png' alt=''/></a>"; lnkPre.Text = "上一作品:" + worksList[currentIndex - 1].WorksName; lnkPre.NavigateUrl = "WorksShow.aspx?wid=" + worksList[currentIndex - 1].WorksID; lnkNext.Text = "下一作品:" + worksList[currentIndex + 1].WorksName; lnkNext.NavigateUrl = "WorksShow.aspx?wid=" + worksList[currentIndex + 1].WorksID; } //WorksNavDiv.InnerHtml = worksNavhtml; //if (em.WorksTypeID != null) //{ // LbWorksType.Text = GetWorksTypeName((int)em.WorksTypeID); //} } if (userId != 0) { using (ChannelFactory <IServiceUser> cfUser = new ChannelFactory <IServiceUser>("ServiceUser")) { IServiceUser user = cfUser.CreateChannel(); if (user == null) { throw new ArgumentNullException(nameof(user)); } Favorites favWorks = user.GetUserFavorites(userId.ToString()) .FirstOrDefault(f => f.DomainID == 5 & f.ItemID == worksId); if (favWorks != null) { BtnFav.Visible = false; BtnUnFav.Visible = true; } else { BtnFav.Visible = true; BtnUnFav.Visible = false; } } } } else { LeftLayer.Visible = false; RightLayer.Visible = false; } }
/// <summary> /// 生成列表页面 /// </summary> /// <param name="worksList">作品列表数据源</param> /// <param name="pageSize">每页条目数</param> /// <param name="pageNum">当前页数</param> private void GenericList(List <CSMyWorks> worksList, long pageSize, long pageNum) { long worksCount = worksList.Count; if (worksCount > pageSize) { if (0 == pageNum)//最后一页 { pageSize = worksCount - pageSize * (pageNum - 1); } worksList = worksList.Skip((int)(pageSize * (pageNum - 1))).Take((int)pageSize).ToList(); } if (worksList.Count > 0) { HtmlContainerControl ulControl = new HtmlGenericControl("ul"); foreach (var works in worksList) { HtmlContainerControl liControl = new HtmlGenericControl("li"); //if () //{ //} //为具有删除权限的用户,添加删除作品按钮 //ImageButton iBtnDel = new ImageButton //{ // ImageUrl = "./images/delete.png", // ToolTip = "删除作品", // Width = 24, // CommandArgument = works.WorksID.ToString(), // CommandName = "ItemDel" + works.WorksID, // ID = "btnDel" + works.WorksID, // OnClientClick = "javascript:return confirm('确定删除本作品吗?');" //}; //iBtnDel.Click += IBtnDel_Click; ; //iBtnDel.Attributes.Add("class", "btnDel"); //liControl.Controls.Add(iBtnDel); StringBuilder liBuilder = new StringBuilder(); //填充作品信息 liBuilder.AppendLine("<a class='cbp-vm-image' href='WorksShow.aspx?wid=" + works.WorksID + "' target='_blank' title='" + works.WorksName + "'><img src='images/works.png'></a>"); liBuilder.AppendLine("<h3 class='cbp-vm-title'><a href='WorksShow.aspx?wid=" + works.WorksID + "' target='_blank'>" + works.WorksName + "</a></h3>"); using (ChannelFactory <IServiceWorks> channelFactory = new ChannelFactory <IServiceWorks>("ServiceWorks")) { IServiceWorks proxy = channelFactory.CreateChannel(); if (works.PeriodID != null) { Periods period = proxy.GetPeriodsById(works.PeriodID.ToString()).FirstOrDefault(); if (period?.CourseID != null) { liBuilder.AppendLine("<div class='cbp-vm-price'>" + period.PeriodTitle + "</div>");//作品所属期次 string courseId = period.CourseID.ToString(); Course course = proxy.GetCourseById(courseId).FirstOrDefault(); if (course != null) { string courseUrl = "http://va.neu.edu.cn" + course.Url; liBuilder.AppendLine("<div class='cbp-vm-price'><a href='" + courseUrl + "' target='_blank'>" + course.CourseName + "</a></div>");//作品所属网站 } } } if (works.WorksTypeID != null) { VAWcfService.WorksType worksType = proxy.GetWorksTypeById(works.WorksTypeID.ToString()); liBuilder.AppendLine("<div class='cbp-vm-price'>" + worksType.WorksTypeName + "</div>");//作品类别 } } liBuilder.AppendLine("<div class='cbp-vm-price'>" + $"{works.Created:d}" + "</div>"); string desc = Bll.Common.NoHtml(works.DesignIdeas); if (desc.Length > 45) { desc = desc.Substring(0, 45) + "..."; } liBuilder.AppendLine("<br/><div class='cbp-vm-details'><a href='WorksShow.aspx?wid=" + works.WorksID + "' target='_blank'>" + desc + "</a></div> ");//作品介绍 liControl.Controls.Add(new LiteralControl(liBuilder.ToString())); //liBuilder.AppendLine("</li>"); ulControl.Controls.Add(liControl); } //liBuilder.AppendLine("</ul>"); worksListDiv.Controls.Clear(); worksListDiv.Controls.Add(ulControl); } //worksListDiv.InnerHtml = liBuilder.ToString(); }