importer.html 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  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="Import posts from esa failed.">
  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. <form action="/_api/admin/settings/importer" method="post" class="form-horizontal" id="importerSettingForm" role="form"
  76. data-success-messaage="更新しました">
  77. <fieldset>
  78. <!-- qiita:team importer -->
  79. <div class="form-group">
  80. <legend>{{ t('importer_management.qiita_settings.title') }}</legend>
  81. <div class="form-group">
  82. <label for="settingForm[importer:qiita:team_name]" class="col-xs-3 control-label">{{ t('importer_management.qiita_settings.team_name') }}</label>
  83. <div class="col-xs-6">
  84. <input class="form-control" type="text" name="settingForm[importer:qiita:team_name]" value="{{ settingForm['importer:qiita:team_name'] | default('') }}">
  85. </div>
  86. </div>
  87. <div class="form-group">
  88. <label for="settingForm[importer:qiita:access_token]" class="col-xs-3 control-label">{{ t('importer_management.qiita_settings.access_token') }}</label>
  89. <div class="col-xs-6">
  90. <input class="form-control" type="text" name="settingForm[importer:qiita:access_token]" value="{{ settingForm['importer:qiita:access_token'] | default('') }}">
  91. </div>
  92. </div>
  93. </div>
  94. <div class="form-group">
  95. <input type="hidden" name="_csrf" value="{{ csrf() }}" />
  96. <div class="col-xs-offset-3 col-xs-6">
  97. <button id="testConnectionToEsa" type="button" class="btn btn-primary" data-action="/_api/admin/import/qiita"
  98. data-success-message="Import posts from qiita:team success." data-error-message="Import posts from qiita:team failed.">
  99. {{ t("importer_management.import") }}
  100. </button>
  101. <button type="submit" class="btn btn-secondary">{# the first element is the default button to submit #}
  102. {{ t('Update') }}
  103. </button>
  104. <span class="col-xs-offset-1">
  105. <button id="importFromQiita" type="button" class="btn btn-default" data-action="/_api/admin/import/testQiitaAPI"
  106. data-success-message="Test connection to qiita:team success." data-error-message="Test connection to qiita:team failed.">
  107. {{ t("importer_management.test_connection") }}
  108. </button>
  109. </span>
  110. </div>
  111. </div>
  112. </fieldset>
  113. </form>
  114. </div>
  115. </div>
  116. </div>
  117. <script>
  118. /**
  119. * show flash message
  120. */
  121. function showMessage(formId, msg, status) {
  122. $('#' + formId + ' .alert').remove();
  123. if (!status) {
  124. status = 'success';
  125. }
  126. var $message = $('<p class="alert"></p>');
  127. $message.addClass('alert-' + status);
  128. $message.html(msg.replace('\n', '<br>'));
  129. $message.insertAfter('#' + formId + ' legend');
  130. if (status == 'success') {
  131. setTimeout(function()
  132. {
  133. $message.fadeOut({
  134. complete: function() {
  135. $message.remove();
  136. }
  137. });
  138. }, 5000);
  139. }
  140. }
  141. /**
  142. * Post form data and process UI
  143. */
  144. function postData(form, button, action, success_msg = "成功しました", error_msg = "エラーが発生しました") {
  145. var id = form.attr('id');
  146. button.attr('disabled', 'disabled');
  147. var jqxhr = $.post(action, form.serialize(), function(data)
  148. {
  149. if (!data.status) {
  150. showMessage(id, `${error_msg} ${data.message}`, 'danger');
  151. }
  152. else {
  153. showMessage(id, success_msg);
  154. }
  155. })
  156. .fail(function() {
  157. showMessage(id, "エラーが発生しました", 'danger');
  158. })
  159. .always(function() {
  160. button.prop('disabled', false);
  161. });
  162. return false;
  163. }
  164. /**
  165. * Handle button
  166. */
  167. $('#testConnectionToEsa, #importFromEsa').each(function() {
  168. var $form = $('#importerSettingForm');
  169. var $button = $(this);
  170. var $action = $button.attr('data-action');
  171. var $success_msg = $button.attr('data-success-message');
  172. var $error_msg = $button.attr('data-error-message');
  173. $button.click(function() { return postData($form, $button, $action, $success_msg, $error_msg) });
  174. });
  175. /**
  176. * Handle submit button
  177. */
  178. $('#importerSettingForm').each(function() {
  179. var $form = $(this);
  180. var $button = $("#importerSettingForm input[type='submit']");
  181. var $action = $form.attr('action');
  182. var $success_msg = $button.attr('data-success-message');
  183. var $error_msg = $button.attr('data-error-message');
  184. $form.submit(function() { return postData($form, $button, $action, $success_msg, $error_msg) });
  185. });
  186. </script>
  187. {% endblock content_main %}
  188. {% block content_footer %}
  189. {% endblock content_footer %}