user_info.html 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. {% extends "master.html" %}
  2. {% block title %}User {{username}}{% endblock %}
  3. {% set tag = "users" %}
  4. {% from "_browseheader.html" import browse_header %}
  5. {% block header %}
  6. <link type="text/css" rel="stylesheet" nonce="{{ g.nonce }}" href="{{
  7. url_for('static', filename='vendor/selectize/selectize.bootstrap3.css') }}?version={{ g.version}}"/>
  8. {% endblock %}
  9. {% from "_render_repo.html" import render_repos_as_card, render_activity_graph %}
  10. {% from "_projectstring.html" import projectstring, projecticon %}
  11. {% block content %}
  12. <div class="bg-light border border-top-0 pt-2">
  13. <div class="container">
  14. {{browse_header(select=tag)}}
  15. </div>
  16. </div>
  17. <div class="p-t-2">
  18. <div class="container">
  19. <div class="media my-4">
  20. {{ user.default_email | avatar(64, css_class="align-self-center mr-3") | safe }}
  21. <div class="media-body align-self-center">
  22. <h3 class="mb-0 font-weight-bold">{{ username }}</h3>
  23. <div title="{{ user.created.strftime('%Y-%m-%d') }}">
  24. {{user.fullname}} &bull; <span class="text-muted">Joined {{ user.created | humanize }}</span>
  25. </div>
  26. </div>
  27. </div>
  28. <div class="row">
  29. <div class="col-md-8">
  30. {{ render_activity_graph(username) }}
  31. {{ render_repos_as_card(repos, repos_length, projectstring()+'s', 'repopage', repopage, total_page_repos) }}
  32. {{ render_repos_as_card(forks, forks_length,'Forks', 'forkpage', forkpage, total_page_forks) }}
  33. </div>
  34. <div class="col-md-4">
  35. <div class="card" id="group_list">
  36. <div class="card-header">
  37. Groups <span class="badge badge-secondary">{{ user.groups | length }}</span>
  38. </div>
  39. {% for group in user.groups %}
  40. <div class="list-group">
  41. <a class="list-group-item" href="{{ url_for(
  42. 'ui_ns.view_group', group=group)}}">
  43. <div class=""><strong><span class="fa fa-users">
  44. </span> &nbsp;{{ group }}</strong>
  45. </div>
  46. </a>
  47. </div>
  48. {% else %}
  49. <div class="card-block">
  50. <p>No group found</p>
  51. </div>
  52. {% endfor %}
  53. </div>
  54. </div>
  55. </div>
  56. </div>
  57. </div>
  58. {% endblock %}
  59. {% block jscripts %}
  60. {{ super() }}
  61. <script type="text/javascript" nonce="{{ g.nonce }}" src="{{
  62. url_for('static', filename='vendor/selectize/selectize.min.js') }}?version={{ g.version}}"></script>
  63. <script type="text/javascript" nonce="{{ g.nonce }}">
  64. $(document).ready(function() {
  65. $('.show_parts input[type="checkbox"]').change(function(){
  66. $('#' + $(this).attr('name')).toggle();
  67. });
  68. $('#headerSearch').on('keypress keydown keyup', function(e) {
  69. if (e.which == 13) {
  70. e.preventDefault();
  71. return false;
  72. }
  73. });
  74. $('#term').selectize({
  75. valueField: 'user',
  76. labelField: 'user',
  77. searchField: 'user',
  78. onType: function(value){
  79. if (value == ""){
  80. this.close();
  81. }
  82. },
  83. onChange: function(value){
  84. if (value != ""){
  85. $('#headerSearch').submit();
  86. }
  87. },
  88. maxItems: 1,
  89. create: false,
  90. load: function(query, callback) {
  91. if (!query.length) return callback();
  92. $.getJSON(
  93. "{{ url_for('api_ns.api_users') }}", {
  94. pattern: query
  95. },
  96. function( data ) {
  97. callback( data.users.map(function(x) { return { user: x }; }) );
  98. }
  99. );
  100. },
  101. render: {
  102. option: function(item, escape) {
  103. return '<div>' +
  104. '<div class="projecticon-search pull-xs-left"><span class="fa fa-user"></span></div>'+
  105. '<div class="title">' +
  106. '<span class="name"><strong>' + escape(item.user) + '</strong></span>' +
  107. '</div>' +
  108. '<div class="description"><small>' + escape(item.user) + '</small></div>' +
  109. '</div>';
  110. }
  111. },
  112. });
  113. });
  114. </script>
  115. {% endblock %}