Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Описание функционирования веб-приложенияСодержание книги
Поиск на нашем сайте При запуске веб-приложения открывается стартовая страница как показано на рисунке 1. Где есть возможность просмотреть информацию о сайте, авторе. Также есть возможность поиска и комментирования опубликованных постов.
Рисунок 1. Стартовая страница После нажатия кнопки «Войти» открывается страница авторизации в соответствии с рисунком 2.
Рисунок 2. Страница авторизации
После нажатия кнопки «Войти» открывается стартовая страница с дополнительными возможностями модерирования как показано на рисунке 3.
Рисунок 3. Стартовая страница с после авторизации
После нажатия на функцию «записи» открывается соответствующая веб-форма где показаны все записи за последний период с возможностью из редактирования или удаления как показано на рисунке 4.
Рисунок 4. Страница редактирования записей в блоге.
После нажатия на вкладку «Настройки» в личном кабинете открывается соответствующая веб-форма с возможностью настройки внешнего вида сайта, описании, информации об авторе, а также выбора языка интерфейса в соответствии с рисунком 5.
Рисунок 5. Страница настроек блог платформы
Также на главной странице веб-приложения если щёлкнуть по названию какого-либо поста, то открывается полный текст статьи с возможностью комментирования как показано на рисунке 6.
Рисунок 6. Страница поста с возможностью комментирования
Для выхода из учетной записи следует нажать на функцию «Выйти». После чего дополнительный функционал сайта будет закрыт и останется лишь возможность просмотра и комментирования постов в блоге.
Входные данные Данные вводимые пользователями, а также XML данные, наход
Выходные данные Интерфейс сайта и изменения в XML данных
ЗАКЛЮЧЕНИЕ Практически каждый месяц, в казахстанском интернете появляется десятка два новых проектов в разных областях. И каждый из них – это качественный блог без намека на продажные ссылки, наполненный интересным и уникальным контентом. Выводы из всего этого можно сделать достаточно простые – блогосфера будет жить и развиваться. Да, она избавится от некоторого количества своих компонентов. Но если взять блогосферу в целом, то она на данный момент живее всех живых. И скорее всего, через 2-3 года начнется новый этап бурного развития блогов нового формата. А пока нас ждет плавный рост числа блогов и их качества. Кто-то будет наблюдать за процессом со стороны, а кто-то активно включится в процесс и будет создавать историю казахстанского интернета. Говоря о созданном мною веб-приложении хочется сказать, что я доволен проделанной работой и намереваюсь развивать данный проект т.к. он мне крайне интересен. В дальнейшем развитии я буду полгаться на среду разработки Visual Studio 2010. Возможности, которые она предлагает не сравнимы ни с одной IDE, с которой я имел дело.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 1 МакДональд Мэтью. Pro ASP.NET 4 in C# 2010, М. 2010 2 Материалы с URL http://allblog.ru/ 3 Материалы с URL http://ru.wikipedia.org/wiki/Блог 4 Материалы с URL http://www.microsoft.com/visualstudio/ru-ru/ 5 Общие требования к текстовым документам. ЕСКД. ГОСТ 2.105 – 95 – М.: Изд. стандартов, 1996. – 42 с. 6 Экспозито Дино. ASP.NET 2.0 Базовый курс, М.: Русская редакция, 2007. 7 Экспозито Дино. ASP.NET 2.0 Углубленное изучение, М.: Русская редакция, 2007.
Приложение А Исходный код стартовой станицы default.aspx.cs на C# #region Using using System; using System.Globalization; using System.Text.RegularExpressions; using System.Web; using System.Xml; using System.Collections.Generic; using BlogEngine.Core; using System.Web.UI;
#endregion
public partial class _default: BlogEngine.Core.Web.Controls.BlogBasePage { protected void Page_Load(object sender, EventArgs e) { if (Page.IsCallback) return;
if (Request.RawUrl.ToLowerInvariant().Contains("/category/")) { DisplayCategories(); } else if (Request.RawUrl.ToLowerInvariant().Contains("/author/")) { DisplayAuthors(); } else if (Request.RawUrl.ToLowerInvariant().Contains("?tag=")) { DisplayTags(); } else if (Request.QueryString["year"]!= null || Request.QueryString["date"]!= null || Request.QueryString["calendar"]!= null) { if (Request.RawUrl.Contains("year=")) Redirect(); else DisplayDateRange(); } else if (Request.QueryString["apml"]!= null) { DisplayApmlFiltering(); } else if (Request.QueryString.Count == 0 ||!string.IsNullOrEmpty(Request.QueryString["page"]) ||!string.IsNullOrEmpty(Request.QueryString["theme"]) ||!string.IsNullOrEmpty(Request.QueryString["blog"])) { PostList1.ContentBy = ServingContentBy.AllContent; PostList1.Posts = Post.Posts.ConvertAll(new Converter<Post, IPublishable>(delegate(Post p) { return p as IPublishable; })); if (!BlogSettings.Instance.UseBlogNameInPageTitles) Page.Title = BlogSettings.Instance.Name + " | ";
if (!string.IsNullOrEmpty(BlogSettings.Instance.Description)) Page.Title += Server.HtmlEncode(BlogSettings.Instance.Description); }
AddMetaKeywords(); base.AddMetaTag("description", Server.HtmlEncode(BlogSettings.Instance.Description)); base.AddMetaTag("author", Server.HtmlEncode(BlogSettings.Instance.AuthorName)); }
private void DisplayApmlFiltering() { Uri url = null; if (Uri.TryCreate(Request.QueryString["apml"], UriKind.Absolute, out url)) { Page.Title = "APML filtered list"; try { Dictionary<Uri, XmlDocument> docs = Utils.FindSemanticDocuments(url, "apml"); if (docs.Count > 0) { foreach (Uri key in docs.Keys) { PostList1.ContentBy = ServingContentBy.Apml; PostList1.Posts = Search.ApmlMatches(docs[key], 30).FindAll(delegate(IPublishable p) { return p is Post; }); PostList1.Posts.Sort(delegate(IPublishable ip1, IPublishable ip2) { return ip2.DateCreated.CompareTo(ip1.DateCreated); }); Page.Title += " for " + Server.HtmlEncode(key.Host); break; } } else { divError.InnerHtml = "<h1 style=\"text-align:center\">APML document could not be found</h1><br /><br />"; Page.Title = "APML not found"; } } catch (NotSupportedException) { divError.InnerHtml = "<h1 style=\"text-align:center\">The website entered doesn't contain any information about APML</h1><br /><br />"; Page.Title = "APML not found"; } catch (System.Net.WebException) { divError.InnerHtml = "<h1 style=\"text-align:center\">Sorry, I couldn't connect to your website</h1><br /><br />"; Page.Title = "APML address invalid"; } catch (XmlException) { divError.InnerHtml = "<h1 style=\"text-align:center\">The APML document is not valid XML</h1><br /><br />"; Page.Title = "APML document error"; } } else if (PostList1.Posts == null || PostList1.Posts.Count == 0) { divError.InnerHtml = "<h1 style=\"text-align:center\">The URL could not be resolved</h1><br /><br />"; Page.Title = "APML not found"; } }
private void InvalidateCache() { HttpResponse.RemoveOutputCacheItem(Utils.RelativeWebRoot + "default.aspx"); }
private void Redirect() { string year = Request.QueryString["year"]; string month = Request.QueryString["month"]; string date = Request.QueryString["date"]; string page = string.IsNullOrEmpty(Request.QueryString["page"])? string.Empty: "?page=" + Request.QueryString["page"]; string rewrite = null;
if (!string.IsNullOrEmpty(date)) { DateTime dateParsed = DateTime.Parse(date); rewrite = Utils.RelativeWebRoot + dateParsed.Year + "/" + dateParsed.Month + "/" + dateParsed.Day + "/default.aspx"; } else if (!string.IsNullOrEmpty(year) &&!string.IsNullOrEmpty(month)) { rewrite = Utils.RelativeWebRoot + year + "/" + month + "/default.aspx"; } else if (!string.IsNullOrEmpty(year)) { rewrite = Utils.RelativeWebRoot + year + "/default.aspx"; }
if (rewrite!= null) { Response.Clear(); Response.StatusCode = 301; Response.AppendHeader("location", rewrite + page); Response.End(); } }
private static readonly Regex YEAR_MONTH = new Regex("/([0-9][0-9][0-9][0-9])/([0-1][0-9])", RegexOptions.IgnoreCase | RegexOptions.Compiled); private static readonly Regex YEAR_MONTH_DAY = new Regex("/([0-9][0-9][0-9][0-9])/([0-1][0-9])/([0-3][0-9])", RegexOptions.IgnoreCase | RegexOptions.Compiled);
/// <summary> /// Adds the post's tags as meta keywords. /// </summary> private void AddMetaKeywords() { if (Category.Categories.Count > 0) { string[] categories = new string[Category.Categories.Count]; for (int i = 0; i < Category.Categories.Count; i++) { categories[i] = Category.Categories[i].Title; }
string metakeywords = Server.HtmlEncode(string.Join(",", categories)); System.Web.UI.HtmlControls.HtmlMeta tag = null; foreach (Control c in Page.Header.Controls) { if (c is System.Web.UI.HtmlControls.HtmlMeta && (c as System.Web.UI.HtmlControls.HtmlMeta).Name.ToLower() == "keywords") { tag = c as System.Web.UI.HtmlControls.HtmlMeta; tag.Content += ", " + metakeywords; break; } } if (tag == null) { base.AddMetaTag("keywords", metakeywords); } //base.AddMetaTag("keywords", Server.HtmlEncode(string.Join(",", categories))); } }
private void DisplayCategories() { if (!String.IsNullOrEmpty(Request.QueryString["id"])) { Guid categoryId = new Guid(Request.QueryString["id"]); PostList1.ContentBy = ServingContentBy.Category; PostList1.Posts = Post.GetPostsByCategory(categoryId).ConvertAll(new Converter<Post, IPublishable>(delegate(Post p) { return p as IPublishable; })); Page.Title = Category.GetCategory(categoryId).Title; } }
private void DisplayAuthors() { if (!string.IsNullOrEmpty(Request.QueryString["name"])) { string author = Server.UrlDecode(Request.QueryString["name"]); PostList1.ContentBy = ServingContentBy.Author; PostList1.Posts = Post.GetPostsByAuthor(author).ConvertAll(new Converter<Post, IPublishable>(delegate(Post p) { return p as IPublishable; })); Title = "All posts by " + Server.HtmlEncode(author); } }
private void DisplayTags() { if (!string.IsNullOrEmpty(Request.QueryString["tag"])) { PostList1.ContentBy = ServingContentBy.Tag; PostList1.Posts = Post.GetPostsByTag(Request.QueryString["tag"].Substring(1)).ConvertAll(new Converter<Post, IPublishable>(delegate(Post p) { return p as IPublishable; })); base.Title = " All posts tagged '" + Request.QueryString["tag"].Substring(1) + "'"; //base.AddMetaTag("description", Server.HtmlEncode(BlogSettings.Instance.Description)); } }
private void DisplayDateRange() { string year = Request.QueryString["year"]; string month = Request.QueryString["month"]; string specificDate = Request.QueryString["date"];
if (!string.IsNullOrEmpty(year) &&!string.IsNullOrEmpty(month)) { DateTime dateFrom = DateTime.Parse(year + "-" + month + "-01", CultureInfo.InvariantCulture); DateTime dateTo = dateFrom.AddMonths(1).AddMilliseconds(-1); PostList1.ContentBy = ServingContentBy.DateRange; PostList1.Posts = Post.GetPostsByDate(dateFrom, dateTo).ConvertAll(new Converter<Post, IPublishable>(delegate(Post p) { return p as IPublishable; })); Title = dateFrom.ToString("MMMM yyyy"); } else if (!string.IsNullOrEmpty(year)) { DateTime dateFrom = DateTime.Parse(year + "-01-01", CultureInfo.InvariantCulture); DateTime dateTo = dateFrom.AddYears(1).AddMilliseconds(-1); PostList1.ContentBy = ServingContentBy.DateRange; PostList1.Posts = Post.GetPostsByDate(dateFrom, dateTo).ConvertAll(new Converter<Post, IPublishable>(delegate(Post p) { return p as IPublishable; }));; Title = dateFrom.ToString("yyyy"); } else if (!string.IsNullOrEmpty(specificDate) && specificDate.Length == 10) { DateTime date = DateTime.Parse(specificDate, CultureInfo.InvariantCulture); PostList1.ContentBy = ServingContentBy.DateRange; PostList1.Posts = Post.GetPostsByDate(date, date).ConvertAll(new Converter<Post, IPublishable>(delegate(Post p) { return p as IPublishable; }));; Title = date.ToString("MMMM d. yyyy"); } else if (!string.IsNullOrEmpty(Request.QueryString["calendar"])) { calendar.Visible = true; PostList1.Visible = false; Title = Server.HtmlEncode(Resources.labels.calendar); } }
}
Приложение Б
Рисунок 7. Схема Visio структуры проекта
|
||
|
Последнее изменение этой страницы: 2016-09-05; просмотров: 399; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.5 (0.009 с.) |