importer.html 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. {% extends '../layout/admin.html' %}
  2. {% block html_title %}{{ customTitle(t('Importer management')) }}{% endblock %}
  3. {% block content_header %}
  4. <div class="header-wrap">
  5. <header id="page-header">
  6. <h1 class="title" id="">{{ t('Importer 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: 'importer'} %}
  15. </div>
  16. <div class="col-md-9">
  17. <!-- Flash message for success -->
  18. {% set smessage = req.flash('successMessage') %}
  19. {% if smessage.length %}
  20. <div class="alert alert-success">
  21. {% for e in smessage %}
  22. {{ e }}<br>
  23. {% endfor %}
  24. </div>
  25. {% endif %}
  26. <!-- Flash message for error -->
  27. {% set emessage = req.flash('errorMessage') %}
  28. {% if emessage.length %}
  29. <div class="alert alert-danger">
  30. {% for e in emessage %}
  31. {{ e }}<br>
  32. {% endfor %}
  33. </div>
  34. {% endif %}
  35. <!-- Importer management forms -->
  36. <form action="/_api/admin/settings/importer" method="post" class="form-horizontal" id="importerSettingForm" role="form"
  37. data-success-messaage="更新しました">
  38. <fieldset>
  39. <!-- esa importer -->
  40. <div class="form-group">
  41. <legend>{{ t('importer_management.esa_settings.title') }}</legend>
  42. <div class="form-group">
  43. <label for="settingForm[importer:esa:team_name]" class="col-xs-3 control-label">{{ t('importer_management.esa_settings.team_name') }}</label>
  44. <div class="col-xs-6">
  45. <input class="form-control" type="text" name="settingForm[importer:esa:team_name]" value="{{ settingForm['importer:esa:team_name'] | default('') }}">
  46. </div>
  47. </div>
  48. <div class="form-group">
  49. <label for="settingForm[importer:esa:access_token]" class="col-xs-3 control-label">{{ t('importer_management.esa_settings.access_token') }}</label>
  50. <div class="col-xs-6">
  51. <input class="form-control" type="text" name="settingForm[importer:esa:access_token]" value="{{ settingForm['importer:esa:access_token'] | default('') }}">
  52. </div>
  53. </div>
  54. </div>
  55. <div class="form-group">
  56. <input type="hidden" name="_csrf" value="{{ csrf() }}" />
  57. <div class="col-xs-offset-3 col-xs-6">
  58. <button id="testConnectionToEsa" type="button" class="btn btn-primary" data-action="/_api/admin/import/esa"
  59. data-success-message="Import posts from esa success." data-error-message="Error occurred in importing pages from esa.io">
  60. {{ t("importer_management.import") }}
  61. </button>
  62. <button type="submit" class="btn btn-secondary">{# the first element is the default button to submit #}
  63. {{ t('Update') }}
  64. </button>
  65. <span class="col-xs-offset-1">
  66. <button id="importFromEsa" type="button" class="btn btn-default" data-action="/_api/admin/import/testEsaAPI"
  67. data-success-message="Test connection to esa success." data-error-message="Test connection to esa failed.">
  68. {{ t("importer_management.test_connection") }}
  69. </button>
  70. </span>
  71. </div>
  72. </div>
  73. </fieldset>
  74. </form>
  75. </div>
  76. </div>
  77. </div>
  78. <script>
  79. /**
  80. * show flash message
  81. */
  82. function showMessage(formId, msg, status) {
  83. $('#' + formId + ' .alert').remove();
  84. if (!status) {
  85. status = 'success';
  86. }
  87. var $message = $('<p class="alert"></p>');
  88. $message.addClass('alert-' + status);
  89. $message.html(msg.replace('\n', '<br>'));
  90. $message.insertAfter('#' + formId + ' legend');
  91. if (status == 'success') {
  92. setTimeout(function()
  93. {
  94. $message.fadeOut({
  95. complete: function() {
  96. $message.remove();
  97. }
  98. });
  99. }, 5000);
  100. }
  101. }
  102. /**
  103. * Post form data and process UI
  104. */
  105. function postData(form, button, action, success_msg = "成功しました", error_msg = "エラーが発生しました") {
  106. var id = form.attr('id');
  107. button.attr('disabled', 'disabled');
  108. var jqxhr = $.post(action, form.serialize(), function(data)
  109. {
  110. if (!data.status) {
  111. showMessage(id, `${error_msg} ${data.message}`, 'danger');
  112. }
  113. else {
  114. showMessage(id, success_msg);
  115. }
  116. })
  117. .fail(function() {
  118. showMessage(id, "エラーが発生しました", 'danger');
  119. })
  120. .always(function() {
  121. button.prop('disabled', false);
  122. });
  123. return false;
  124. }
  125. /**
  126. * Handle button
  127. */
  128. $('#testConnectionToEsa, #importFromEsa').each(function() {
  129. var $form = $('#importerSettingForm');
  130. var $button = $(this);
  131. var $action = $button.attr('data-action');
  132. var $success_msg = $button.attr('data-success-message');
  133. var $error_msg = $button.attr('data-error-message');
  134. $button.click(function() { return postData($form, $button, $action, $success_msg, $error_msg) });
  135. });
  136. /**
  137. * Handle submit button
  138. */
  139. $('#importerSettingForm').each(function() {
  140. var $form = $(this);
  141. var $button = $("#importerSettingForm input[type='submit']");
  142. var $action = $form.attr('action');
  143. var $success_msg = $button.attr('data-success-message');
  144. var $error_msg = $button.attr('data-error-message');
  145. $form.submit(function() { return postData($form, $button, $action, $success_msg, $error_msg) });
  146. });
  147. </script>
  148. {% endblock content_main %}
  149. {% block content_footer %}
  150. {% endblock content_footer %}