index.twig 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. {% if is_git_revision %}
  2. <div id="is_git_revision"></div>
  3. {% endif %}
  4. {{ message|raw }}
  5. {{ partial_logout|raw }}
  6. <div id="maincontainer">
  7. {{ sync_favorite_tables|raw }}
  8. <div class="container-fluid">
  9. <div class="row mb-3">
  10. <div class="col-lg-7 col-12">
  11. {% if has_server %}
  12. {% if is_demo %}
  13. <div class="card mt-4">
  14. <div class="card-header">
  15. {% trans 'phpMyAdmin Demo Server' %}
  16. </div>
  17. <div class="card-body">
  18. {% apply format('<a href="url.php?url=https://demo.phpmyadmin.net/" target="_blank" rel="noopener noreferrer">demo.phpmyadmin.net</a>')|raw %}
  19. {% trans %}
  20. You are using the demo server. You can do anything here, but please do not change root, debian-sys-maint and pma users. More information is available at %s.
  21. {% endtrans %}
  22. {% endapply %}
  23. </div>
  24. </div>
  25. {% endif %}
  26. <div class="card mt-4">
  27. <div class="card-header">
  28. {% trans 'General settings' %}
  29. </div>
  30. <ul class="list-group list-group-flush">
  31. {% if has_server_selection %}
  32. <li id="li_select_server" class="list-group-item">
  33. {{ get_image('s_host') }}
  34. {{ server_selection|raw }}
  35. </li>
  36. {% endif %}
  37. {% if server > 0 %}
  38. {% if has_change_password_link %}
  39. <li id="li_change_password" class="list-group-item">
  40. <a href="{{ url('/user-password') }}" id="change_password_anchor" class="ajax">
  41. {{ get_icon('s_passwd', 'Change password'|trans, true) }}
  42. </a>
  43. </li>
  44. {% endif %}
  45. <li id="li_select_mysql_collation" class="list-group-item">
  46. <form method="post" action="{{ url('/collation-connection') }}" class="row row-cols-lg-auto align-items-center disableAjax">
  47. {{ get_hidden_inputs(null, null, 4, 'collation_connection') }}
  48. <div class="col-12">
  49. <label for="collationConnectionSelect" class="col-form-label">
  50. {{ get_image('s_asci') }}
  51. {% trans 'Server connection collation:' %}
  52. {{ show_mysql_docu('charset-connection') }}
  53. </label>
  54. </div>
  55. {% if charsets is not empty %}
  56. <div class="col-12">
  57. <select lang="en" dir="ltr" name="collation_connection" id="collationConnectionSelect" class="form-select autosubmit">
  58. <option value="">{% trans 'Collation' %}</option>
  59. <option value=""></option>
  60. {% for charset in charsets %}
  61. <optgroup label="{{ charset.name }}" title="{{ charset.description }}">
  62. {% for collation in charset.collations %}
  63. <option value="{{ collation.name }}" title="{{ collation.description }}"{{ collation.is_selected ? ' selected' }}>
  64. {{- collation.name -}}
  65. </option>
  66. {% endfor %}
  67. </optgroup>
  68. {% endfor %}
  69. </select>
  70. </div>
  71. {% endif %}
  72. </form>
  73. </li>
  74. <li id="li_user_preferences" class="list-group-item">
  75. <a href="{{ url('/preferences/manage') }}">
  76. {{ get_icon('b_tblops', 'More settings'|trans, true) }}
  77. </a>
  78. </li>
  79. {% endif %}
  80. </ul>
  81. </div>
  82. {% endif %}
  83. {% if available_languages is not empty or has_theme_manager %}
  84. <div class="card mt-4">
  85. <div class="card-header">
  86. {% trans 'Appearance settings' %}
  87. </div>
  88. <ul class="list-group list-group-flush">
  89. {% if available_languages is not empty %}
  90. <li id="li_select_lang" class="list-group-item">
  91. <form method="get" action="{{ url('/') }}" class="row row-cols-lg-auto align-items-center disableAjax">
  92. {{ get_hidden_inputs({'db': db, 'table': table}) }}
  93. <div class="col-12">
  94. <label for="languageSelect" class="col-form-label text-nowrap">
  95. {{ get_image('s_lang') }}
  96. {% trans 'Language' %}
  97. {% if 'Language'|trans != 'Language' %}
  98. {# For non-English, display "Language" with emphasis because it's not a proper word
  99. in the current language; we show it to help people recognize the dialog #}
  100. <i lang="en" dir="ltr">(Language)</i>
  101. {% endif %}
  102. {{ show_docu('faq', 'faq7-2') }}
  103. </label>
  104. </div>
  105. <div class="col-12">
  106. <select name="lang" class="form-select autosubmit w-auto" lang="en" dir="ltr" id="languageSelect">
  107. {% for language in available_languages %}
  108. <option value="{{ language.getCode()|lower }}"{{ language.isActive() ? ' selected' }}>
  109. {{- language.getName()|raw -}}
  110. </option>
  111. {% endfor %}
  112. </select>
  113. </div>
  114. </form>
  115. </li>
  116. {% endif %}
  117. {% if has_theme_manager %}
  118. <li id="li_select_theme" class="list-group-item">
  119. <form method="post" action="{{ url('/themes/set') }}" class="row row-cols-lg-auto align-items-center disableAjax">
  120. {{ get_hidden_inputs() }}
  121. <div class="col-12">
  122. <label for="themeSelect" class="col-form-label">
  123. {{ get_icon('s_theme', 'Theme'|trans) }}
  124. </label>
  125. </div>
  126. <div class="col-12">
  127. <div class="input-group">
  128. <select name="set_theme" class="form-select autosubmit" lang="en" dir="ltr" id="themeSelect">
  129. {% for theme in themes %}
  130. <option value="{{ theme.id }}"{{ theme.is_active ? ' selected' }}>{{ theme.name }}</option>
  131. {% endfor %}
  132. </select>
  133. <button type="button" class="btn btn-outline-secondary" data-bs-toggle="modal" data-bs-target="#themesModal">
  134. {% trans %}View all{% context %}View all themes{% endtrans %}
  135. </button>
  136. </div>
  137. </div>
  138. </form>
  139. </li>
  140. {% endif %}
  141. </ul>
  142. </div>
  143. {% endif %}
  144. </div>
  145. <div class="col-lg-5 col-12">
  146. {% if database_server is not empty %}
  147. <div class="card mt-4">
  148. <div class="card-header">
  149. {% trans 'Database server' %}
  150. </div>
  151. <ul class="list-group list-group-flush">
  152. <li class="list-group-item">
  153. {% trans 'Server:' %}
  154. {{ database_server.host }}
  155. </li>
  156. <li class="list-group-item">
  157. {% trans 'Server type:' %}
  158. {{ database_server.type }}
  159. </li>
  160. <li class="list-group-item">
  161. {% trans 'Server connection:' %}
  162. {{ database_server.connection|raw }}
  163. </li>
  164. <li class="list-group-item">
  165. {% trans 'Server version:' %}
  166. {{ database_server.version }}
  167. </li>
  168. <li class="list-group-item">
  169. {% trans 'Protocol version:' %}
  170. {{ database_server.protocol }}
  171. </li>
  172. <li class="list-group-item">
  173. {% trans 'User:' %}
  174. {{ database_server.user }}
  175. </li>
  176. <li class="list-group-item">
  177. {% trans 'Server charset:' %}
  178. <span lang="en" dir="ltr">
  179. {{ database_server.charset }}
  180. </span>
  181. </li>
  182. </ul>
  183. </div>
  184. {% endif %}
  185. {% if web_server is not empty or show_php_info %}
  186. <div class="card mt-4">
  187. <div class="card-header">
  188. {% trans 'Web server' %}
  189. </div>
  190. <ul class="list-group list-group-flush">
  191. {% if web_server is not empty %}
  192. {% if web_server.software is not null %}
  193. <li class="list-group-item">
  194. {{ web_server.software }}
  195. </li>
  196. {% endif %}
  197. <li class="list-group-item" id="li_mysql_client_version">
  198. {% trans 'Database client version:' %}
  199. {{ web_server.database }}
  200. </li>
  201. <li class="list-group-item">
  202. {% trans 'PHP extension:' %}
  203. {% for extension in web_server.php_extensions %}
  204. {{ extension }}
  205. {{ show_php_docu('book.' ~ extension ~ '.php') }}
  206. {% endfor %}
  207. </li>
  208. <li class="list-group-item">
  209. {% trans 'PHP version:' %}
  210. {{ web_server.php_version }}
  211. </li>
  212. {% endif %}
  213. {% if show_php_info %}
  214. <li class="list-group-item">
  215. <a href="{{ url('/phpinfo') }}" target="_blank" rel="noopener noreferrer">
  216. {% trans 'Show PHP information' %}
  217. </a>
  218. </li>
  219. {% endif %}
  220. </ul>
  221. </div>
  222. {% endif %}
  223. <div class="card mt-4">
  224. <div class="card-header">
  225. phpMyAdmin
  226. </div>
  227. <ul class="list-group list-group-flush">
  228. <li id="li_pma_version" class="list-group-item{{ is_version_checked ? ' jsversioncheck' }}">
  229. {% trans 'Version information:' %}
  230. <span class="version">{{ phpmyadmin_version }}</span>
  231. </li>
  232. <li class="list-group-item">
  233. <a href="{{ get_docu_link('index') }}" target="_blank" rel="noopener noreferrer">
  234. {% trans 'Documentation' %}
  235. </a>
  236. </li>
  237. <li class="list-group-item">
  238. <a href="{{ 'https://www.phpmyadmin.net/'|link }}" target="_blank" rel="noopener noreferrer">
  239. {% trans 'Official Homepage' %}
  240. </a>
  241. </li>
  242. <li class="list-group-item">
  243. <a href="{{ 'https://www.phpmyadmin.net/contribute/'|link }}" target="_blank" rel="noopener noreferrer">
  244. {% trans 'Contribute' %}
  245. </a>
  246. </li>
  247. <li class="list-group-item">
  248. <a href="{{ 'https://www.phpmyadmin.net/support/'|link }}" target="_blank" rel="noopener noreferrer">
  249. {% trans 'Get support' %}
  250. </a>
  251. </li>
  252. <li class="list-group-item">
  253. <a href="{{ url('/changelog') }}" target="_blank">
  254. {% trans 'List of changes' %}
  255. </a>
  256. </li>
  257. <li class="list-group-item">
  258. <a href="{{ url('/license') }}" target="_blank">
  259. {% trans 'License' %}
  260. </a>
  261. </li>
  262. </ul>
  263. </div>
  264. </div>
  265. </div>
  266. {% for error in errors %}
  267. <div class="alert {{ error.severity == 'warning' ? 'alert-warning' : 'alert-info' }}" role="alert">
  268. {% if error.severity == 'warning' %}
  269. {{ get_image('s_attention', 'Warning'|trans) }}
  270. {% else %}
  271. {{ get_image('s_notice', 'Notice'|trans) }}
  272. {% endif %}
  273. {{ error.message|sanitize }}
  274. </div>
  275. {% endfor %}
  276. </div>
  277. </div>
  278. {% if has_theme_manager %}
  279. <div class="modal fade" id="themesModal" tabindex="-1" aria-labelledby="themesModalLabel" aria-hidden="true">
  280. <div class="modal-dialog modal-xl">
  281. <div class="modal-content">
  282. <div class="modal-header">
  283. <h5 class="modal-title" id="themesModalLabel">{% trans 'phpMyAdmin Themes' %}</h5>
  284. <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{% trans 'Close' %}"></button>
  285. </div>
  286. <div class="modal-body">
  287. <div class="spinner-border" role="status">
  288. <span class="visually-hidden">{% trans 'Loading…' %}</span>
  289. </div>
  290. </div>
  291. <div class="modal-footer">
  292. <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{% trans 'Close' %}</button>
  293. <a href="{{ 'https://www.phpmyadmin.net/themes/'|link }}#pma_{{ phpmyadmin_major_version|replace({'.': '_'}) }}" class="btn btn-primary" rel="noopener noreferrer" target="_blank">
  294. {% trans 'Get more themes!' %}
  295. </a>
  296. </div>
  297. </div>
  298. </div>
  299. </div>
  300. {% endif %}
  301. {{ config_storage_message|raw }}