layout.html.twig 11 KB

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