search.html 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. {% extends '../layout/admin.html' %}
  2. {% block html_title %}{{ customTitle(t('Full Text Search management')) }}{% endblock %}
  3. {% block content_header %}
  4. <div class="header-wrap">
  5. <header id="page-header">
  6. <h1 id="admin-title" class="title">{{ t('Full Text Search management') }}</h1>
  7. </header>
  8. </div>
  9. {% endblock %}
  10. {% block content_main %}
  11. <div class="content-main">
  12. <div class="row">
  13. <div class="col-md-3">
  14. {% include './widget/menu.html' with {current: 'search'} %}
  15. </div>
  16. <div class="col-md-9">
  17. {% if !searchConfigured() %}
  18. <div class="col-md-12">
  19. <div class="alert alert-warning">
  20. <strong><i class="icon-fw icon-exclamation"></i> Full Text Search is not configured</strong>
  21. </div>
  22. <p>Check whether the env var <code>ELASTICSEARCH_URI</code> is set.</p>
  23. </div>
  24. {% else %}
  25. {% set smessage = req.flash('successMessage') %}
  26. {% if smessage.length %}
  27. <div class="alert alert-success">
  28. {% for e in smessage %}
  29. {{ e }}<br>
  30. {% endfor %}
  31. </div>
  32. {% endif %}
  33. {% set emessage = req.flash('errorMessage') %}
  34. {% if emessage.length %}
  35. <div class="alert alert-danger">
  36. {% for e in emessage %}
  37. {{ e }}<br>
  38. {% endfor %}
  39. </div>
  40. {% endif %}
  41. <form action="/_api/admin/search/build" method="post" class="form-horizontal" id="buildIndexForm" role="form">
  42. <fieldset>
  43. <legend>Index Build</legend>
  44. <div class="form-group">
  45. <label for="" class="col-xs-3 control-label">Index Build</label>
  46. <div class="col-xs-6">
  47. <div id="admin-rebuild-search">
  48. </div>
  49. <button type="submit" class="btn btn-inverse">Build Now</button>
  50. <p class="help-block">
  51. Force rebuild index.<br>
  52. Click "Build Now" to delete and create mapping file and add all pages.<br>
  53. This may take a while.
  54. </p>
  55. </div>
  56. </div>
  57. </fieldset>
  58. <input type="hidden" name="_csrf" value="{{ csrf() }}">
  59. </form>
  60. {% endif %}
  61. </div>
  62. </div>
  63. </div>
  64. <script>
  65. /**
  66. * show flash message
  67. */
  68. function showMessage(formId, msg, status) {
  69. $('#' + formId + ' .alert').remove();
  70. if (!status) {
  71. status = 'success';
  72. }
  73. var $message = $('<p class="alert"></p>');
  74. $message.addClass('alert-' + status);
  75. $message.html(msg.replace('\n', '<br>'));
  76. $message.insertAfter('#' + formId + ' legend');
  77. if (status == 'success') {
  78. setTimeout(function()
  79. {
  80. $message.fadeOut({
  81. complete: function() {
  82. $message.remove();
  83. }
  84. });
  85. }, 5000);
  86. }
  87. }
  88. /**
  89. * Post form data and process UI
  90. */
  91. function postData(form, button, action) {
  92. var id = form.attr('id');
  93. button.attr('disabled', 'disabled');
  94. var jqxhr = $.post(action, form.serialize(), function(res)
  95. {
  96. if (!res.ok) {
  97. showMessage(id, `Error: ${res.message}`, 'danger');
  98. }
  99. else {
  100. showMessage(id, 'Building request is successfully posted.');
  101. }
  102. })
  103. .fail(function() {
  104. showMessage(id, "エラーが発生しました", 'danger');
  105. })
  106. .always(function() {
  107. button.prop('disabled', false);
  108. });
  109. return false;
  110. }
  111. /**
  112. * Handle submit button esa
  113. */
  114. $('#buildIndexForm').each(function() {
  115. var $form = $(this);
  116. var $button = $("#buildIndexForm" + $(this).attr('name') + " button[type='submit']");
  117. var $action = $form.attr('action');
  118. var $success_msg = $button.attr('data-success-message');
  119. var $error_msg = $button.attr('data-error-message');
  120. $form.submit(function() { return postData($form, $button, $action, $success_msg, $error_msg) });
  121. });
  122. </script>
  123. {% endblock content_main %}
  124. {% block content_footer %}
  125. {% endblock content_footer %}