narou 2.8.3.1 → 2.9.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of narou might be problematic. Click here for more details.

Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog.md +77 -0
  3. data/Gemfile +2 -1
  4. data/README.md +69 -86
  5. data/lib/command/convert.rb +10 -11
  6. data/lib/command/init.rb +2 -2
  7. data/lib/command/list.rb +12 -3
  8. data/lib/command/setting.rb +20 -5
  9. data/lib/command/update.rb +0 -3
  10. data/lib/command/version.rb +2 -3
  11. data/lib/command/web.rb +58 -7
  12. data/lib/converterbase.rb +7 -24
  13. data/lib/database.rb +7 -6
  14. data/lib/device.rb +15 -1
  15. data/lib/device/ibunko.rb +1 -2
  16. data/lib/device/library/mac.rb +7 -0
  17. data/lib/downloader.rb +44 -21
  18. data/lib/extension.rb +25 -0
  19. data/lib/helper.rb +4 -3
  20. data/lib/html.rb +18 -2
  21. data/lib/narou.rb +20 -0
  22. data/lib/novelconverter.rb +11 -35
  23. data/lib/novelinfo.rb +19 -8
  24. data/lib/novelsetting.rb +0 -6
  25. data/lib/version.rb +1 -1
  26. data/lib/web/appserver.rb +134 -15
  27. data/lib/web/public/favicon.ico +0 -0
  28. data/lib/web/public/resources/common.ui.js +2 -2
  29. data/lib/web/public/resources/narou.library.js +657 -91
  30. data/lib/web/public/resources/narou.queue.js +1 -1
  31. data/lib/web/public/resources/narou.ui.js +253 -102
  32. data/lib/web/public/resources/sprintf.js +245 -0
  33. data/lib/web/pushserver.rb +14 -3
  34. data/lib/web/views/_about.haml +188 -0
  35. data/lib/web/views/{diff_list.haml → _diff_list.haml} +0 -0
  36. data/lib/web/views/{edit_replace_txt.haml → _edit_replace_txt.haml} +4 -4
  37. data/lib/web/views/_rebooting.haml +18 -0
  38. data/lib/web/views/bookmarklet/download.js.erb +2 -2
  39. data/lib/web/views/bookmarklet/insert_button.js.erb +1 -1
  40. data/lib/web/views/edit_menu.haml +223 -0
  41. data/lib/web/views/help.haml +29 -12
  42. data/lib/web/views/index.haml +99 -88
  43. data/lib/web/views/layout.haml +5 -3
  44. data/lib/web/views/notepad.haml +39 -0
  45. data/lib/web/views/novels/setting.haml +15 -5
  46. data/lib/web/views/settings.haml +2 -2
  47. data/lib/web/views/style.scss +72 -21
  48. data/lib/web/views/widget/download.haml +3 -2
  49. data/lib/web/views/widget/drag_and_drop.haml +3 -2
  50. data/lib/web/views/widget/notepad.haml +44 -0
  51. data/narou.gemspec +75 -6
  52. data/narou.rb +8 -14
  53. data/preset/ncode.syosetu.com/n5115cq/converter.rb +30 -0
  54. data/preset/ncode.syosetu.com/n7594ct/converter.rb +37 -0
  55. data/preset/ncode.syosetu.com/n8725k/converter.rb +1 -1
  56. data/preset/vertical_font.css +0 -10
  57. data/spec/generator/convert_spec_gen.rb +2 -0
  58. data/template/novel.txt.erb +3 -0
  59. data/webnovel/https.syosetu.org.yaml +1 -1
  60. data/webnovel/kakuyomu.jp.yaml +82 -0
  61. data/webnovel/ncode.syosetu.com.yaml +1 -0
  62. data/webnovel/syosetu.org.yaml +1 -1
  63. metadata +89 -12
  64. data/lib/web/views/about.haml +0 -85
  65. data/preset/DMincho.ttf +0 -0
@@ -24,11 +24,11 @@
24
24
  $("[data-toggle=remove-tooltip]").tooltip(tooltip_opt);
25
25
  });
26
26
 
27
- #replace-panel.panel.panel-settings{ class: @replace_panel_var[:panel_class] }
27
+ #replace-panel.panel.panel-settings{ class: replace_panel_var[:panel_class] }
28
28
  .panel-heading
29
- = @replace_panel_var[:title]
30
- .panel-body{ class: @replace_panel_var[:body_class] }
31
- = @replace_panel_var[:body].join("<br>")
29
+ = replace_panel_var[:title]
30
+ .panel-body{ class: replace_panel_var[:body_class] }
31
+ = replace_panel_var[:body].join("<br>")
32
32
  .list-group
33
33
  .list-group-item.form-group
34
34
  .list-group-item-text
@@ -0,0 +1,18 @@
1
+ :javascript
2
+ var busy = $("#rebooting-busy");
3
+ busy.text(".");
4
+ setInterval(function() {
5
+ busy.text(busy.text() + ".");
6
+ if (busy.text().length == 6) {
7
+ busy.text(".");
8
+ }
9
+ }, 500);
10
+
11
+ %p
12
+ サーバを再起動しています<span id="rebooting-busy"></span>
13
+ %p
14
+ 再起動が完了したら自動的にページがリロードされます。
15
+ %p
16
+ しばらく待ってもリロードされない場合は
17
+ %a(href="/") こちら
18
+ をクリックするかブラウザのリロードボタンを押してみてください。
@@ -24,7 +24,7 @@
24
24
  }
25
25
  }
26
26
  if (guard) {
27
- alert("対応サイトではありません");
27
+ alert("対応ページではありません");
28
28
  return;
29
29
  }
30
30
  if (document.getElementById("narourb-console")) return;
@@ -38,7 +38,7 @@
38
38
  // IE の場合、iframe は親のドキュメントモードが汚染して動かない可能性があるので対処
39
39
  var docmode = document.documentMode || 10;
40
40
  if (docmode < 10) {
41
- window.open(url, "widget_window", "width=400,height=250,menubar=no,toolbar=no,scrollbars=no,resizable=yes");
41
+ window.open(url, "dl_window", "width=400,height=250,menubar=no,toolbar=no,scrollbars=no,resizable=yes");
42
42
  return;
43
43
  }
44
44
 
@@ -7,6 +7,7 @@
7
7
  // 対応小説投稿サイトに関する情報
8
8
  var site_settings = {
9
9
  <%- Downloader.load_settings.each.with_index do |setting, i| -%>
10
+ <%- next if setting["top_url"] == "http://novel.syosetu.org" -%>
10
11
  "<%= setting["domain"] %>": {
11
12
  <%- case setting["domain"] -%>
12
13
  <%- when "www.mai-net.net" -%>
@@ -122,7 +123,6 @@
122
123
 
123
124
  var links = document.getElementsByTagName("a");
124
125
  for (var i = 0; i < links.length; i++) {
125
- //for (var i = 0; i < 3; i++) {
126
126
  var link = links[i];
127
127
  var setting = site_settings[link.hostname];
128
128
  if (setting && link.href.toLowerCase().match(setting.url)) {
@@ -0,0 +1,223 @@
1
+ :javascript
2
+ local_initialize_functions.push(function($) {
3
+ $("[data-toggle=tooltip]").tooltip({
4
+ animation: false,
5
+ container: "body",
6
+ });
7
+
8
+ Narou.Notepad.replace("notepad", { rows: 7 });
9
+
10
+ var menu = new Narou.ContextMenu;
11
+ Narou.Template.replaceAll({ menu: menu });
12
+ var menu_items = $("#menu_items tr");
13
+ var input_box = $("#input_box");
14
+ var preview = $("#preview");
15
+
16
+ preview.append(menu.object);
17
+ menu.object.show();
18
+
19
+ var clearActiveColumns = function() {
20
+ menu_items.removeClass("active");
21
+ };
22
+
23
+ var appendLineToTextbox = function() {
24
+ menu_items.each(function() {
25
+ if (!$(this).is(".active")) return;
26
+ var label = $(this).data("menuLabel");
27
+ var command = $(this).data("menuCommand");
28
+ var line = sprintf("\n%s<>%s", label, command);
29
+ input_box.val((input_box.val() + line).trim());
30
+ });
31
+ };
32
+
33
+ var refreshPreview = function() {
34
+ menu.object.remove();
35
+ menu.initializeMenuObject(input_box.val());
36
+ menu.initializeMenuEvents();
37
+ preview.append(menu.object);
38
+ menu.object.show();
39
+ };
40
+
41
+ var attachChangeEvents = function(textarea) {
42
+ var timer_id = null;
43
+
44
+ textarea
45
+ .on("focus", function() {
46
+ this._old_value = this.value;
47
+ })
48
+ .on("blur", function() {
49
+ if (this.value !== this._old_value) {
50
+ refreshPreview();
51
+ this._old_value = this.value;
52
+ }
53
+ })
54
+ .on("keyup paste cut", function() {
55
+ setTimeout(function() {
56
+ clearTimeout(timer_id);
57
+ timer_id = setTimeout(function(value, old_value) {
58
+ if (value !== old_value) {
59
+ refreshPreview();
60
+ this._old_value = this.value;
61
+ }
62
+ }.bind(this), 300, this.value, this._old_value);
63
+ }.bind(this), 10);
64
+ });
65
+ };
66
+
67
+ menu_items.on("click", function(e) {
68
+ $(this).toggleClass("active");
69
+ });
70
+
71
+ $("#button_move").on("click", function(e) {
72
+ appendLineToTextbox();
73
+ clearActiveColumns();
74
+ refreshPreview();
75
+ });
76
+
77
+ $("#button_clear_active").on("click", function(e) {
78
+ clearActiveColumns();
79
+ });
80
+
81
+ $("#button_save").on("click", function(e) {
82
+ menu.save(input_box.val().trim());
83
+ refreshPreview();
84
+ Narou.Flash.show("保存が完了しました", "success");
85
+ });
86
+
87
+ $("#button_clear").on("click", function(e) {
88
+ input_box.val("");
89
+ });
90
+
91
+ $("#button_reset_to_default").on("click", function(e) {
92
+ input_box.val(menu.createDefaultMenuText());
93
+ refreshPreview();
94
+ });
95
+
96
+ attachChangeEvents(input_box);
97
+ });
98
+
99
+ :scss
100
+ $height: 430px;
101
+
102
+ #menu_items {
103
+ height: $height;
104
+ max-height: $height;
105
+ overflow-y: auto;
106
+ cursor: pointer;
107
+ box-shadow: 2px 2px 1px rgba(0,0,0,0.1);;
108
+ }
109
+
110
+ #button_move {
111
+ position: relative;
112
+ @media (min-width:768px) {
113
+ height: $height;
114
+ }
115
+ @media (max-width:767px) {
116
+ height: 70px;
117
+ }
118
+ button {
119
+ position: absolute;
120
+ top: 50%;
121
+ left: 25%;
122
+ margin-top: -0.5em;
123
+ }
124
+ }
125
+
126
+ #input_box {
127
+ height: $height;
128
+ }
129
+
130
+ #preview .dropdown-menu {
131
+ position: relative;
132
+ }
133
+
134
+ %script#edit_menu_template(type="text/template")
135
+
136
+ .navbar.navbar-default.navbar-fixed-top(role="navigation")
137
+ .container
138
+ .navbar-header
139
+ %button.navbar-toggle(type="button")
140
+ %span.sr-only Toggle navigation
141
+ %span.icon-bar
142
+ %span.icon-bar
143
+ %span.icon-bar
144
+ %a.navbar-brand(href="#" data-move-to="top") Narou.rb WEB UI
145
+ #bs-navbar-collapse-1.collapse.navbar-collapse
146
+ %ul.nav.navbar-nav
147
+ %li
148
+ %a(href="/settings") 環境設定
149
+ %li
150
+ %a(href="/help") ヘルプ
151
+ %li
152
+ %a(href="/") 戻る
153
+ %p#queue-text.navbar-text.navbar-right(data-toggle="tooltip" title="キューに積まれた処理の数" data-placement="bottom")
154
+ %span.glyphicon.glyphicon-inbox
155
+ %span#queue 0
156
+
157
+ .container.theme-showcase(role="main")
158
+ %h1 個別メニューの編集
159
+ %ul.text-muted
160
+ %li
161
+ 編集内容はブラウザに保存されます。他のPCのブラウザでも同じ内容にしたい場合は
162
+ 下部にあるメモ帳を使ってコピペして下さい。
163
+ %li
164
+ 書式は「ラベル&lt;&gt;コマンド」になっています。空行や不正な書式の場合は無視されます。
165
+ また、ラベル部分は自由に設定出来ます。
166
+ #edit_menu_container
167
+ .row
168
+ .col-sm-4
169
+ %span.label.label-default
170
+ 項目一覧
171
+ #menu_items
172
+ %table.table.table-hover.table-bordered
173
+ %tbody
174
+ %script(type="text/plain" role="template")
175
+ :plain
176
+ <% _.each(menu.items, function(item) { %>
177
+ <tr data-menu-label="<%- item.label %>" data-menu-command="<%- item.command %>">
178
+ <td>
179
+ <%- item.label %>
180
+ <span class="label label-white pull-right"><%= item.command %></span>
181
+ </td>
182
+ </tr>
183
+ <% }) %>
184
+ .col-sm-1
185
+ #button_move
186
+ %button.btn.btn-default
187
+ %span.glyphicon.glyphicon-arrow-right
188
+ .col-sm-4
189
+ %span.label.label-default
190
+ 編集欄
191
+ %script(type="text/plain" role="template")
192
+ %textarea#input_box.form-control
193
+ <%- menu.text %>
194
+ .col-sm-2
195
+ %div
196
+ %span.label.label-default
197
+ プレビュー
198
+ #preview
199
+ .row
200
+ &nbsp;
201
+ .row
202
+ .col-sm-4.text-center
203
+ %button#button_clear_active.btn.btn-default
204
+ 選択を解除
205
+ .col-sm-1
206
+ .col-sm-4.text-center
207
+ %button#button_save.btn.btn-info
208
+ 保存
209
+ %button#button_clear.btn.btn-default
210
+ 消去
211
+ %button#button_reset_to_default.btn.btn-default
212
+ デフォに戻す
213
+ .row
214
+ &nbsp;
215
+ .row
216
+ .col-sm-4
217
+ %div
218
+ %span.label.label-default
219
+ メモ帳
220
+ &nbsp;
221
+ %span.text-muted
222
+ %small ※自動でサーバに保存されます
223
+ #notepad
@@ -5,24 +5,37 @@
5
5
  container: "body",
6
6
  });
7
7
 
8
- var bookmarklet = function(d,e,u,o,s) {
9
- o=d.createElement("div");
10
- o.innerHTML="WEB UI Server: OFFLINE";
11
- o.id="narourb-offline";
8
+ var bookmarklet = function(d,l,e,u,o,s,m,ssl) {
9
+ org='#{request.scheme}://#{env["SERVER_NAME"]}:#{env["SERVER_PORT"]}/';
10
+ u=org+'js/widget.js?mode=%MODE%&_='+Date.now();
11
+ u2=org+'widget/download?from='+l.hostname+'&target='+encodeURIComponent(l.href)+'&_='+Date.now();
12
+ ssl=l.protocol.match(/^https/);
13
+ if('%MODE%'==='download'&&ssl){
14
+ window.open(u2,'dl_window','width=400,height=300,menubar=no,toolbar=no,scrollbars=no,resizable=yes');
15
+ return
16
+ }
17
+ o=d.createElement('div');
18
+ m='WEB UI Server: ';
19
+ if(ssl){
20
+ m+='このサイト上では実行出来ません';
21
+ }
22
+ else{
23
+ m+='OFFLINE';
24
+ }
25
+ o.innerHTML=m;
26
+ o.id='narourb-offline';
12
27
  s=o.style;
13
- s.position="fixed";
28
+ s.position='fixed';
14
29
  s.top=-1000;
15
30
  s.left=0;
16
31
  s.zIndex=9998;
17
- s.color="white";
18
- s.background="red";
32
+ s.color='white';
33
+ s.background='red';
19
34
  d.body.appendChild(o);
20
35
  setTimeout(function(){
21
36
  s.top=0
22
37
  },1000);
23
38
 
24
- u='#{request.scheme}://#{env["SERVER_NAME"]}:#{env["SERVER_PORT"]}'+
25
- '/js/widget.js?mode=%MODE%&t='+Date.now();
26
39
  e=d.createElement('script');
27
40
  e.charset='utf-8';
28
41
  e.src=u;
@@ -30,8 +43,8 @@
30
43
  };
31
44
 
32
45
  function createBookmarkletStrings(proc, mode) {
33
- var proc_string = proc.toString().replace("%MODE%", mode);
34
- return ("javascript:(" + proc_string + ")(document)").replace(/ {2,}|\n/g, "");
46
+ var proc_string = proc.toString().replace(/%MODE%/g, mode);
47
+ return ("javascript:(" + proc_string + ")(document,location)").replace(/ {2,}|\n/g, "");
35
48
  }
36
49
 
37
50
  $("#bookmarklet-download").attr("href", createBookmarkletStrings(bookmarklet, "download"));
@@ -66,6 +79,8 @@
66
79
  %p 小説掲載サイトを表示したまま直接ダウンロード出来るブックマークレットです。
67
80
  %p 下記のリンクをブックマークに登録して、ダウンロードしたい小説のページで実行して下さい。(WEB UIサーバ起動中に限ります)
68
81
  %p ブックマークバーにドラッグ&ドロップしたり、右クリックからブックマークにいれると簡単です。
82
+ %p DLが始まればウィンドウは閉じても問題ありません。
83
+ %p.text-muted ※httpsなサイトの場合はウィンドウがポップアップします。
69
84
  %p
70
85
  %span.glyphicon.glyphicon-bookmark
71
86
  %big
@@ -77,6 +92,7 @@
77
92
  %img#ss-bookmarklet2(src="/resources/help/bookmarklet2.png" class="img-thumbnail")
78
93
  %p 小説投稿サイト内の、各小説へのリンクの横にダウンロード用のボタンを埋め込みます。
79
94
  %p ランキングページや一覧ページなどで実行するとダウンロードが一発で出来るようになったり、どれがダウンロード済みなのかが一目瞭然になります。
95
+ %p.text-muted ※httpsなサイト内では動きません。
80
96
  %p
81
97
  %span.glyphicon.glyphicon-bookmark
82
98
  %big
@@ -119,7 +135,8 @@
119
135
  %h4 タグ
120
136
  %div
121
137
  %img#ss-tag(src="/resources/help/tag.png" class="img-thumbnail")
122
- %p 小説にタグが設定されている場合、タグ欄に表示されます。そのタグをクリックすることで絞込ができるようになっています。タグを絞り込んだ状態で、さらに検索ボックスから検索することも可能です。
138
+ %p 小説にタグが設定されている場合、タグ欄に表示されます。そのタグをクリックすることで絞込ができるようになっています。タグで絞り込んだ状態で更に別のタグをクリックすると、複数のタグでの絞込が可能です。
139
+ %p タグをAltキーを押しながらクリックすることで、除外タグ検索になります。
123
140
  %p タグの絞込状態を解除するにはメニューのタグから解除ボタンを押すか、タグの右側にある小さな空白ラベルをクリックすることでも解除することが出来ます。
124
141
 
125
142
  %h4 シングル選択モード
@@ -1,4 +1,4 @@
1
- .navbar.navbar-default.navbar-fixed-top(role="navigation")
1
+ %nav#header-navbar.navbar.navbar-default.navbar-fixed-top(role="navigation")
2
2
  .container
3
3
  .navbar-header
4
4
  %button.navbar-toggle(type="button")
@@ -30,6 +30,23 @@
30
30
  %span.active-ok.glyphicon.glyphicon-ok
31
31
  凍結中を表示
32
32
  %li.divider
33
+ %li#action-view-toggle-setting-page-open-new-tab
34
+ %a(href="#")
35
+ %span
36
+ %span.active-ok.glyphicon.glyphicon-ok
37
+ 変換設定ページは新規タブで開く
38
+ %li.divider
39
+ %li#action-view-toggle-buttons-fix-footer
40
+ %a(href="#")
41
+ %span
42
+ %span.active-ok.glyphicon.glyphicon-ok
43
+ ボタンを画面下部に固定
44
+ %li.divider
45
+ %li#action-view-link-to-edit-menu
46
+ %a(href="/edit_menu")
47
+ %span
48
+ 個別メニューを編集...
49
+ %li.divider
33
50
  %li#action-view-reset
34
51
  %a(href="/") 表示設定を全てリセット
35
52
  %li.dropdown
@@ -99,6 +116,15 @@
99
116
  %a(href="#")
100
117
  %span
101
118
  CSVファイルからインポート
119
+ %li.divider
120
+ %li#action-tool-notepad
121
+ %a(href="/notepad")
122
+ %span
123
+ メモ帳(別ページ)
124
+ %li#action-tool-notepad-window
125
+ %a(href="#")
126
+ %span
127
+ メモ帳(ポップアップ)
102
128
  %ul.nav.navbar-nav.navbar-right
103
129
  %li.dropdown
104
130
  %a.dropdown-toggle(data-toggle="dropdown" href="#")
@@ -111,19 +137,24 @@
111
137
  %a(href="/settings")
112
138
  %span
113
139
  %span.glyphicon.glyphicon-wrench
114
- 環境設定
140
+ 環境設定...
115
141
  %li.divider
116
142
  %li#action-option-help
117
143
  %a(href="/help")
118
144
  %span
119
145
  %span.glyphicon.glyphicon-question-sign
120
- ヘルプ
146
+ ヘルプ...
121
147
  %li#action-option-about
122
148
  %a(href="#")
123
149
  %span
124
150
  %span.glyphicon.glyphicon-info-sign
125
151
  Narou.rb について
126
152
  %li.divider
153
+ %li#action-option-server-reboot
154
+ %a(href="#")
155
+ %span
156
+ %span.glyphicon.glyphicon-refresh
157
+ サーバを再起動
127
158
  %li#action-option-server-shutdown
128
159
  %a(href="#")
129
160
  %span
@@ -139,6 +170,9 @@
139
170
  %input#myFilter.form-control(placeholder="Filter" type="text")/
140
171
  %span#myFilter-clear.glyphicon.glyphicon-remove-circle
141
172
 
173
+ %nav#footer-navbar.navbar.navbar-default.navbar-fixed-bottom.hide
174
+ .container
175
+
142
176
  .container.container-main.theme-showcase(role="main")
143
177
  -# 初めて表示した時のメッセージ
144
178
  - if @is_first_access
@@ -163,70 +197,72 @@
163
197
 
164
198
  -# 操作パネル
165
199
  #control-panel
166
- .btn-group
167
- %button#button-download.btn.btn-primary(type="button" data-toggle="tooltip" |
168
- title="新規ダウンロード") Download |
169
- %button.btn.btn-primary.dropdown-toggle(type="button" data-toggle="dropdown")
170
- %span.caret
171
- %span.sr-only Toggle Dropdown
172
- %ul.dropdown-menu(role="menu")
173
- %li
174
- %a#button-download-force(href="#") 選択した小説を強制再ダウンロード
175
- .btn-group
176
- %button#button-update.btn.btn-success(type="button") Update
177
- %button.btn.btn-success.dropdown-toggle(type="button" data-toggle="dropdown")
178
- %span.caret
179
- %span.sr-only Toggle Dropdown
180
- %ul.dropdown-menu(role="menu")
181
- %li
182
- %a#button-update-view(href="#") 表示されている小説を更新
183
- %li
184
- %a#button-update-general-lastup(href="#") 最新話掲載日を更新
185
- %li
186
- %a#button-update-force(href="#") 凍結済みでも更新
187
- .btn-group
188
- %button#button-send.btn.btn-warning(type="button") Send
189
- - if Inventory.load("local_setting")["hotentry"]
190
- %button.btn.btn-warning.dropdown-toggle(type="button" data-toggle="dropdown")
200
+ .control-panel-inner
201
+ .btn-group
202
+ %button#button-download.btn.btn-primary(type="button" data-toggle="tooltip" |
203
+ title="新規ダウンロード") Download |
204
+ %button.btn.btn-primary.dropdown-toggle(type="button" data-toggle="dropdown")
191
205
  %span.caret
192
206
  %span.sr-only Toggle Dropdown
193
207
  %ul.dropdown-menu(role="menu")
194
208
  %li
195
- %a#button-send-hotentry(href="#") hotentry を送信
196
- .btn-group
197
- %button.btn.btn-info.dropdown-toggle.enable-selected(type="button" data-toggle="dropdown")
198
- Freeze
199
- %span.caret
200
- %span.sr-only Toggle Dropdown
201
- %ul.dropdown-menu(role="menu")
202
- %li
203
- %a#button-freeze-on(href="#") 選択した小説を凍結
204
- %li
205
- %a#button-freeze-off(href="#") 選択した小説の凍結を解除
206
- .btn-group
207
- %button#button-remove.btn.btn-danger.enable-selected(type="button" data-toggle="tooltip" |
208
- title="選択した小説を削除") Remove |
209
- .btn-group
210
- %button#button-convert.btn.btn-default.enable-selected(type="button" data-toggle="tooltip" |
211
- title="選択した小説を変換") Convert |
212
- .btn-group
213
- %button.btn.btn-default.dropdown-toggle.enable-selected(type="button" data-toggle="dropdown")
214
- Other
215
- %span.caret
216
- %span.sr-only Toggle Dropdown
217
- %ul.dropdown-menu(role="menu")
218
- %li
219
- %a#button-diff(href="#") 選択した小説の最新の差分を表示
220
- %li
221
- %a#button-inspect(href="#") 選択した小説の調査状況ログを表示
222
- %li
223
- %a#button-folder(href="#") 選択した小説の保存フォルダを開く
224
- %li
225
- %a#button-backup(href="#") 選択した小説のバックアップを作成
226
- %li
227
- %a#button-setting-burn(href="#") 選択した小説の設定の未設定項目に共通設定を焼付ける
228
-
229
- %input#tag-search(type="text")
209
+ %a#button-download-force(href="#") 選択した小説を強制再ダウンロード
210
+ .btn-group
211
+ %button#button-update.btn.btn-success(type="button" data-toggle="tooltip") Update
212
+ %button.btn.btn-success.dropdown-toggle(type="button" data-toggle="dropdown")
213
+ %span.caret
214
+ %span.sr-only Toggle Dropdown
215
+ %ul.dropdown-menu(role="menu")
216
+ %li
217
+ %a#button-update-view(href="#") 表示されている小説を更新
218
+ %li
219
+ %a#button-update-force(href="#") 凍結済みでも更新
220
+ %li
221
+ %a#button-update-general-lastup(href="#") 最新話掲載日を更新
222
+ .btn-group
223
+ %button#button-send.btn.btn-warning(type="button" data-toggle="tooltip") Send
224
+ - if Inventory.load("local_setting")["hotentry"]
225
+ %button.btn.btn-warning.dropdown-toggle(type="button" data-toggle="dropdown")
226
+ %span.caret
227
+ %span.sr-only Toggle Dropdown
228
+ %ul.dropdown-menu(role="menu")
229
+ %li
230
+ %a#button-send-hotentry(href="#") hotentry を送信
231
+ .btn-group
232
+ %button.btn.btn-info.dropdown-toggle.enable-selected(type="button" data-toggle="dropdown")
233
+ Freeze
234
+ %span.caret
235
+ %span.sr-only Toggle Dropdown
236
+ %ul.dropdown-menu(role="menu")
237
+ %li
238
+ %a#button-freeze-on(href="#") 選択した小説を凍結
239
+ %li
240
+ %a#button-freeze-off(href="#") 選択した小説の凍結を解除
241
+ .btn-group
242
+ %button#button-remove.btn.btn-danger.enable-selected(type="button" data-toggle="tooltip" |
243
+ title="選択した小説を削除") Remove |
244
+ .btn-group
245
+ %button#button-convert.btn.btn-default.enable-selected(type="button" data-toggle="tooltip" |
246
+ title="選択した小説を変換") Convert |
247
+ .btn-group
248
+ %button.btn.btn-default.dropdown-toggle.enable-selected(type="button" data-toggle="dropdown")
249
+ Other
250
+ %span.caret
251
+ %span.sr-only Toggle Dropdown
252
+ %ul.dropdown-menu(role="menu")
253
+ %li
254
+ %a#button-diff(href="#") 選択した小説の最新の差分を表示
255
+ %li
256
+ %a#button-inspect(href="#") 選択した小説の調査状況ログを表示
257
+ %li
258
+ %a#button-folder(href="#") 選択した小説の保存フォルダを開く
259
+ %li
260
+ %a#button-backup(href="#") 選択した小説のバックアップを作成
261
+ %li
262
+ %a#button-setting-burn(href="#") 選択した小説の設定の未設定項目に共通設定を焼付ける
263
+ .btn-group
264
+ %button#button-eject.hide.btn.btn-default(type="button" data-toggle="tooltip" title="端末を取り出す")
265
+ Eject
230
266
 
231
267
  -# 小説の一覧テーブル
232
268
  %div
@@ -244,31 +280,6 @@
244
280
  %li#rect-select-menu-cancel
245
281
  %a(href="#") キャンセル
246
282
 
247
- -# 個別メニュー
248
- %ul#context-menu.dropdown-menu(role="menu")
249
- %li#context-menu-setting
250
- %a(href="#") 小説の変換設定
251
- %li#context-menu-diff
252
- %a(href="#" data-move-to="top") 差分を表示
253
- %li#context-menu-edit-tag
254
- %a(href="#") タグを編集
255
- %li#context-menu-freeze-toggle
256
- %a(href="#") 凍結 or 解凍
257
- %li#context-menu-update
258
- %a(href="#") 更新
259
- %li#context-menu-send
260
- %a(href="#") 送信
261
- %li#context-menu-remove
262
- %a(href="#") 削除
263
- %li#context-menu-convert
264
- %a(href="#") 変換
265
- %li#context-menu-inspect
266
- %a(href="#") 調査状況ログを表示
267
- %li#context-menu-folder
268
- %a(href="#") 保存フォルダを開く
269
- %li#context-menu-backup
270
- %a(href="#") バックアップを作成
271
-
272
283
  -# 個別表示用コンソール
273
284
  #console-dialog.modal.fade(tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true")
274
285
  .modal-dialog