importer.html 8.2 KB

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