layout.html.twig 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>{% block title %}Packagist{% endblock %}</title>
  6. <meta name="description" content="{% block description %}The PHP Package Repository{% endblock %}" />
  7. <meta name="author" content="Jordi Boggiano" />
  8. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  9. <link rel="shortcut icon" href="{{ asset('favicon.ico') }}" />
  10. <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" type="text/css" />
  11. <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css">
  12. <link rel="stylesheet" href="{{ asset('bundles/packagistweb/css/main.css?v=16') }}" />
  13. <link rel="stylesheet" href="{{ asset('css/humane/jackedup.css?v=4') }}" />
  14. {% block head_feeds %}
  15. <link rel="alternate" type="application/rss+xml" title="Newly Submitted Packages - Packagist" href="{{ url('feed_packages', {_format: 'rss'}) }}" />
  16. <link rel="alternate" type="application/rss+xml" title="New Releases - Packagist" href="{{ url('feed_releases', {_format: 'rss'}) }}" />
  17. {% endblock %}
  18. <link rel="search" type="application/opensearchdescription+xml" href="{{ asset('search.osd') }}" title="Packagist" />
  19. {% block head_additions %}{% endblock %}
  20. </head>
  21. <body>
  22. <section class="wrap">
  23. <header class="navbar-wrapper navbar-fixed-top">
  24. <nav class="container">
  25. <div class="navbar" role="navigation">
  26. <div class="navbar-header">
  27. <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
  28. <span class="sr-only">Toggle navigation</span>
  29. <span class="icon-bar"></span>
  30. <span class="icon-bar"></span>
  31. <span class="icon-bar"></span>
  32. </button>
  33. <h1 class="navbar-brand"><a href="{{ path('home') }}">Packagist</a> <em class="hidden-sm hidden-xs">The PHP Package Repository</em></h1>
  34. </div>
  35. <div class="collapse navbar-collapse">
  36. <ul class="nav navbar-nav">
  37. {%- if app.user %}
  38. <li class="nav-user">
  39. <section>
  40. <a href="{{ path('fos_user_profile_show') }}">{{ app.user.username }}</a>
  41. <section class="nav-user-menu">
  42. {{ knp_menu_render('user_menu', {'allow_safe_labels': true}) }}
  43. </section>
  44. </section>
  45. </li>
  46. {%- else %}
  47. <li>
  48. <a href="{{ path('fos_user_registration_register') }}">Create account</a>
  49. </li>
  50. <li class="nav-user">
  51. <section class="nav-user-signin">
  52. <a href="{{ path('hwi_oauth_connect') }}">Sign in</a>
  53. <section class="signin-box">
  54. <form action="{{ path('login_check') }}" method="POST">
  55. <div class="input-group">
  56. <input class="form-control" type="text" id="_username" name="_username" placeholder="{{ 'security.login.username'|trans({}, 'FOSUserBundle') }}">
  57. <span class="input-group-addon"><span class="icon-user"></span></span>
  58. </div>
  59. <div class="input-group">
  60. <input class="form-control" type="password" id="_password" name="_password" placeholder="{{ 'security.login.password'|trans({}, 'FOSUserBundle') }}">
  61. <span class="input-group-addon"><span class="icon-lock"></span></span>
  62. </div>
  63. <div class="checkbox">
  64. <label for="_remember_me">
  65. <input type="checkbox" id="_remember_me" name="_remember_me" value="on" checked="checked" />
  66. {{- 'security.login.remember_me'|trans({}, 'FOSUserBundle') }}
  67. </label>
  68. </div>
  69. {%- if packagist_host and packagist_host in app.request.headers.get('Referer') %}
  70. <input type="hidden" name="_target_path" value="{{ app.request.headers.get('Referer') }}" />
  71. {%- endif %}
  72. <div class="signin-box-buttons">
  73. <a href="{{ hwi_oauth_login_url('github') }}" class="pull-right btn btn-primary btn-github"><span class="icon-github"></span>Use Github</a>
  74. <button type="submit" class="btn btn-success" id="_submit" name="_submit">{{ 'security.login.submit'|trans({}, 'FOSUserBundle') }}</button>
  75. </div>
  76. </form>
  77. <div class="signin-box-register">
  78. <a href="{{ path('fos_user_registration_register') }}">No account yet? Create one now!</a>
  79. </div>
  80. </section>
  81. </section>
  82. </li>
  83. {%- endif %}
  84. <li>
  85. <a href="{{ path('browse') }}">Browse</a>
  86. </li>
  87. <li>
  88. <a href="{{ path('submit') }}">Submit</a>
  89. </li>
  90. </ul>
  91. </div>
  92. </div>
  93. </nav>
  94. </header>
  95. {{ include("PackagistWebBundle:Web:searchSection.html.twig", {showSearchDesc: showSearchDesc|default('show')}) }}
  96. {% block flashMessages %}
  97. {%- if app.session.flashbag.peekAll()|length > 0 %}
  98. <section class="wrapper wrapper-white">
  99. <div class="container flash-container">
  100. {%- for type, flashMessages in app.session.flashbag.all() %}
  101. {%- for flashMessage in flashMessages %}
  102. {%- if 'fos_user_' in type %}
  103. <div class="alert alert-{{ type|replace({'fos_user_': ''}) }}">
  104. <p>{{ flashMessage|trans({}, 'FOSUserBundle') }}</p>
  105. </div>
  106. {%- else %}
  107. <div class="alert alert-{{ type }}">
  108. <p>{{ flashMessage|trans }}</p>
  109. </div>
  110. {%- endif %}
  111. {%- endfor %}
  112. {%- endfor %}
  113. </div>
  114. </section>
  115. {%- endif %}
  116. {% endblock %}
  117. {% block content_header %}{% endblock %}
  118. <section class="wrapper">
  119. <section class="container content" role="main">
  120. {% block search_results %}
  121. <div class="row hidden">
  122. <div class="search-list col-md-12"></div>
  123. </div>
  124. {% endblock %}
  125. {% block content %}{% endblock %}
  126. </section>
  127. </section>
  128. </section>
  129. <footer class="wrapper-footer">
  130. <nav class="container">
  131. <div class="row">
  132. <ul class="social col-xs-7 col-sm-4 col-md-2 pull-right">
  133. <li><a href="http://github.com/composer/packagist" title="{{ 'menu.github'|trans }}"><span class="icon-github"></span></a></li>
  134. <li><a href="https://twitter.com/packagist" title="{{ 'menu.twitter'|trans }}"><span class="icon-twitter"></span></a></li>
  135. <li><a href="mailto:contact@packagist.org" title="{{ 'menu.contact'|trans }}"><span class="icon-mail"></span></a></li>
  136. </ul>
  137. <ul class="col-xs-4 col-md-2">
  138. <li><a href="{{ path('about') }}">{{ 'menu.about_packagist'|trans }}</a></li>
  139. <li><a href="{{ path('feeds') }}">{{ 'menu.rss_feeds'|trans }}</a></li>
  140. </ul>
  141. <div class="clearfix visible-xs-block"></div>
  142. <ul class="col-xs-3 col-md-2">
  143. <li><a href="{{ path('stats') }}">{{ 'menu.stats'|trans }}</a></li>
  144. <li><a href="{{ path('browse') }}">{{ 'menu.browse_packages'|trans }}</a></li>
  145. </ul>
  146. </div>
  147. <div class="row">
  148. <p class="toran col-xs-12">Packagist maintenance and hosting is supported by <a href="https://toranproxy.com/">Toran Proxy</a></p>
  149. </div>
  150. </nav>
  151. </footer>
  152. <script src="//code.jquery.com/jquery-2.1.0.min.js"></script>
  153. <script src="{{ asset('js/libs/humane.min.js?v=2') }}"></script>
  154. <script src="{{ asset('js/libs/ZeroClipboard.min.js') }}"></script>
  155. <script src="{{ asset('bundles/packagistweb/js/layout.js?v=3') }}"></script>
  156. <script src="{{ asset('bundles/packagistweb/js/search.js?v=7')}}"></script>
  157. <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
  158. {%- if not app.debug and google_analytics.ga_key %}
  159. <script>
  160. var _gaq=[['_setAccount','{{ google_analytics.ga_key }}'],['_trackPageview']];
  161. (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.async=1;
  162. g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
  163. s.parentNode.insertBefore(g,s)}(document,'script'));
  164. </script>
  165. {%- endif %}
  166. {% block scripts %}{% endblock %}
  167. </body>
  168. </html>