Advertisement
Guest User

Untitled

a guest
Aug 19th, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.07 KB | None | 0 0
  1. @model IQueryable<MmoPortal.Models.TopicItem>
  2. @{
  3. Layout = "~/Views/Shared/Item/_PageLayout.cshtml";
  4. ViewBag.PageTitle = ViewBag.CategoryTitle;
  5.  
  6. int ajaxLastUpdate = 0; // forum last post date
  7. int categoryId = ViewBag.CategoryId; // id to ajax request
  8. }
  9. @section PageContent {
  10. <div id="forum-item">
  11. <div id="topic-item">
  12. <div class="item-col col1 col-header">
  13. Название темы
  14. </div>
  15. <div class="item-col col2 col-header">
  16. Статистика
  17. </div>
  18. <div class="item-col col3 col-header">
  19. Последнее сообщение
  20. </div>
  21. </div>
  22. </div>
  23. <div class="clear">
  24. </div>
  25. <div class="forum-items-container">
  26. @foreach (MmoPortal.Models.TopicItem t in Model)
  27. {
  28. @Html.Raw( MmoPortal.Models.MyHelper.RenderTopic(t, Url.Action("Topic")) )
  29.  
  30. if (ajaxLastUpdate == 0)
  31. {
  32. ajaxLastUpdate = t.LastPostDate;
  33. }
  34. }
  35. </div>
  36.  
  37. <br />
  38. @if (Request.IsAuthenticated && !User.IsInRole("Banned"))
  39. {
  40. <div class="forum-new-item">@Html.ActionLink("Создать новую тему", "AddTopic", new { id = ViewBag.CategoryId })</div>
  41. }
  42. else if (User.IsInRole("Banned"))
  43. {
  44. <div>Администратор запретил вам создавать новые темы</div>
  45. }
  46. else
  47. {
  48. string returnUrl = Url.Action("Category", "Forum", new { id = ViewBag.CategoryId });
  49. <div class="forum-new-item"> Пожалуйста, <a href="@Url.Action("LogOn", "Account").ToString()?returnUrl=@returnUrl"> войдите</a>, чтобы создать тему</div>
  50. }
  51.  
  52.  
  53.  
  54.  
  55.  
  56. <script type="text/javascript">
  57. var ajaxLastUpdate = @ajaxLastUpdate; // @ajaxLastUpdate
  58. var newColor = '#CCFFCC';
  59.  
  60. $(document).ready(function () {
  61. // dynamic update
  62. DynamicUpdate();
  63.  
  64. // on mouse move remove background on item (set item as read)
  65. $(".new").live('mousemove', function(event) {
  66. $(this).css("background", "#F8F8F8");
  67. });
  68. });
  69.  
  70.  
  71. // запрашивать обновление постов в теме каждые 5 сек
  72. function DynamicUpdate(topicId) {
  73. $.ajax({
  74. url: '@Url.Action("GetNewTopics", new { id = categoryId })/?dateFrom=' + ajaxLastUpdate,
  75. dataType: "json", // тип загружаемых данных
  76. success: function (data) { // вешаем свой обработчик на функцию success
  77.  
  78. $.each(data, function (i, item) { // обрабатываем полученные данные
  79.  
  80. // если топик уже существует
  81. if ( $("#topic" + item.Id).is('*') )
  82. {
  83. var parent = $("#topic" + item.Id).parent().parent();
  84. $(parent).find(".post-count span").html(item.PostCount);
  85. $(parent).find(".last-date span").html(item.LastPostDateString);
  86. $(parent).find(".last-author span").html(item.LastPostUserName).parent().parent().addClass("new").css("background", newColor);
  87. }
  88. // иначе добавить новый пост
  89. else
  90. {
  91. $(".forum-items-container").prepend(item.Html)
  92. $(".forum-items-container .flagNew").hide(0).slideDown().removeClass("flagNew");
  93.  
  94. $("#topic" + item.Id).parent().addClass("new").css("background", newColor);
  95. }
  96. // обновить дату последнего сообщения
  97. ajaxLastUpdate = item.LastPostDate;
  98. });
  99. }
  100. });
  101.  
  102. setTimeout("DynamicUpdate()", 5000);
  103. }
  104.  
  105. </script>
  106.  
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement