importer.html 8.4 KB

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