Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Описание функционирования веб-приложения↑ ⇐ ПредыдущаяСтр 5 из 5 Содержание книги
Поиск на нашем сайте
При запуске веб-приложения открывается стартовая страница как показано на рисунке 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; просмотров: 287; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.97.9.168 (0.014 с.) |