/indico/modules/users/templates/favorites.html

https://repo.or.cz/cds-indico.git · HTML · 111 lines · 106 code · 5 blank · 0 comment · 0 complexity · c178f31bc0c4b0d3137c78c376ca5b55 MD5 · raw file

  1. {% extends 'users/base.html' %}
  2. {% from 'users/_favorites.html' import favorite_users_list %}
  3. {% from 'users/_category.html' import favorite_category %}
  4. {% block subtitle -%}
  5. {% trans %}Favourites{% endtrans %}
  6. {%- endblock %}
  7. {% block user_content %}
  8. <div class="layout-wrapper">
  9. <div class="row">
  10. <div class="column col-50">
  11. <div class="i-box titled">
  12. <div class="i-box-header">
  13. <div class="i-box-title">
  14. {%- trans %}Favorite Users{% endtrans -%}
  15. </div>
  16. </div>
  17. <div class="i-box-content">
  18. {% if user.favorite_users %}
  19. <ul class="group-list no-content-before" id="favorite-users">
  20. {{ favorite_users_list(user) }}
  21. </ul>
  22. {% else %}
  23. <span class="empty">{% trans %}You have not marked any user as favorite.{% endtrans %}</span>
  24. {% endif %}
  25. </div>
  26. </div>
  27. <button class="i-button highlight js-add-user" style="margin-top: 15px;">{% trans %}Add Indico user{% endtrans %}</button>
  28. </div>
  29. <div class="column col-50">
  30. <div class="i-box titled">
  31. <div class="i-box-header">
  32. <div class="i-box-title">
  33. {%- trans %}Favorite Categories{% endtrans -%}
  34. </div>
  35. </div>
  36. <div class="i-box-content">
  37. {% if favorite_categories %}
  38. <ul class="group-list no-content-before">
  39. {% for category, truncated_path in favorite_categories %}
  40. {{ favorite_category(category, truncated_path) }}
  41. {% endfor %}
  42. </ul>
  43. {% else %}
  44. <span class="empty">{% trans %}You have not marked any category as favorite.{% endtrans %}</span>
  45. {% endif %}
  46. </div>
  47. </div>
  48. </div>
  49. </div>
  50. </div>
  51. <script>
  52. (function() {
  53. $('#favorite-users').on('click', '.js-delete-user', function(e){
  54. e.preventDefault();
  55. var $this = $(this);
  56. $.ajax({
  57. url: $this.data('href'),
  58. method: 'DELETE',
  59. error: handleAjaxError,
  60. success: function() {
  61. $this.closest('.js-user-row').fadeOut(function() {
  62. $(this).remove();
  63. });
  64. }
  65. });
  66. });
  67. function addFavoriteUsers(list) {
  68. $.ajax({
  69. url: {{ url_for('.user_favorites_users_add') | tojson }},
  70. method: 'POST',
  71. dataType: 'json',
  72. data: {
  73. user_id: _.pluck(list, 'id')
  74. },
  75. traditional: true,
  76. error: handleAjaxError,
  77. success: function(data) {
  78. $.each(list, function(i, user) {
  79. Indico.User.favorite_users[user.id] = user;
  80. });
  81. $('#favorite-users').html(data.html);
  82. }
  83. });
  84. }
  85. $('.js-add-user').on('click', function(){
  86. var chooseUsersPopup = new ChooseUsersPopup($T('Search Users'), true, null, false, false, null, false, false, false, addFavoriteUsers, null, false);
  87. chooseUsersPopup.execute();
  88. });
  89. $('.js-delete-category').on('click', function(e){
  90. e.preventDefault();
  91. var $this = $(this);
  92. $.ajax({
  93. url: $this.data('href'),
  94. method: 'DELETE',
  95. error: handleAjaxError,
  96. success: function() {
  97. $this.closest('li.category-box').fadeOut(function() {
  98. $(this).remove();
  99. delete Indico.User.favorite_users[$(this).closest('li').data('user-id')];
  100. });
  101. }
  102. });
  103. });
  104. })();
  105. </script>
  106. {% endblock %}