milkode 1.7.1 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c43bd763ab7bdc781d2595fc9df76149db756f20
4
- data.tar.gz: f2b515cd14b815fa9af6f4c720d3b120463b57c3
3
+ metadata.gz: 1caa99b674c764b9cb78ecdfc5688a43fb8f86c5
4
+ data.tar.gz: ec040b50c181f412068d76de6bfa1620fee18d62
5
5
  SHA512:
6
- metadata.gz: 0a8611e756835e2c49917d48d5466a4add6139e112f1609d07728953626d929f4be91d2a0d8ab9cbf128bc8985b116f5a2db7a4ce92c95395301ca6e4360cb75
7
- data.tar.gz: 86a7f32926e796b0866f8a45dee61bc4f403d5331109dfa369cbca8854486bc8d6243bbcd43bda8d401074b5d0ac284cb9fc6e58b25bb983a4610158ae39cb6f
6
+ metadata.gz: 5d968bba17caf2f486dcd0a1e02f90eb8a4bd95f765cd87701130410a577461f88c8f28bfe15ed63ce1d9f28fe15190bceee275ef2377cb8f04ef52917452b3a
7
+ data.tar.gz: 8adfee92b44ef759fd07357f46c747bd7a8d82f928df341d80882a6f0128656ffbabc943ae39a1807ec2b4fc24726422825c612307c156faa898228e70ba04cd
@@ -1,3 +1,14 @@
1
+ === 1.8.0 2014/06/26
2
+
3
+ * milk web
4
+ * Keyboard shortcuts
5
+ * 's' .. Focus search bar
6
+ * 'S' (Select text) .. Search using a selected text with new tab
7
+ * Add help of keyboard shortcut
8
+ * Hide the favorite list if it is empty
9
+ * Support for filtering by package name in 'f:*' search
10
+ * Support :home_font_size attribute in milkweb.yaml
11
+
1
12
  === 1.7.1 2014/06/17
2
13
 
3
14
  * milk web
@@ -1,3 +1,14 @@
1
+ === 1.8.0 2014/06/26
2
+
3
+ * milk web
4
+ * Keyboard shortcuts
5
+ * 's' .. Focus search bar
6
+ * 'S' (Select text) .. Search using a selected text with new tab
7
+ * Add help of keyboard shortcut
8
+ * Hide the favorite list if it is empty
9
+ * Support for filtering by package name in 'f:*' search
10
+ * Support :home_font_size attribute in milkweb.yaml
11
+
1
12
  === 1.7.1 2014/06/17
2
13
 
3
14
  * milk web
@@ -19,6 +19,7 @@ require 'milkode/cdweb/lib/web_setting'
19
19
  require 'milkode/cdweb/lib/package_list'
20
20
  require 'milkode/cdweb/lib/info_home'
21
21
  require 'milkode/cdweb/lib/info_package'
22
+ require 'milkode/version'
22
23
  require 'sinatra/url_for'
23
24
 
24
25
  I18n.load_path += Dir[File.join(File.dirname(__FILE__), 'locales', '*.yml').to_s]
@@ -303,6 +304,8 @@ EOF
303
304
  end
304
305
 
305
306
  def create_favorite_list(package_list)
307
+ return "" if package_list.favorite_list_size == 0
308
+
306
309
  <<EOF
307
310
  <div class="favorite_list">
308
311
  #{t(:favorite)}:
@@ -78,8 +78,9 @@ EOF
78
78
  File.open(fname, "w") do |f|
79
79
  f.write <<EOF
80
80
  ---
81
- :home_title : "Milkode"
82
- :home_icon : "/images/MilkodeIcon135.png"
81
+ :home_title : "Milkode"
82
+ :home_icon : "/images/MilkodeIcon135.png"
83
+ :home_font_size : "100%"
83
84
 
84
85
  :header_title: "Milkode"
85
86
  :header_icon : "/images/MilkodeIcon135.png"
@@ -113,8 +113,55 @@ module Milkode
113
113
  return records.map{|r| DocumentRecord.new(r)}, total_records, result
114
114
  end
115
115
 
116
- def selectAll(offset, limit)
117
- @documents.select_all_sort_by_shortpath(offset, limit)
116
+ def selectAll(current_path, offset, limit)
117
+ if current_path == ''
118
+ return @documents.select_all_sort_by_shortpath(offset, limit)
119
+ end
120
+
121
+ paths = []
122
+ strict_packages = []
123
+ is_not_search = false
124
+
125
+ package, restpath = Util.divide_shortpath(current_path)
126
+
127
+ grn_package = @grndb.packages[package]
128
+ if grn_package
129
+ # package name
130
+ strict_packages << package
131
+
132
+ # file path
133
+ directory = grn_package.directory
134
+ if restpath
135
+ paths << File.join(directory, restpath)
136
+ else
137
+ paths << directory
138
+ end
139
+ else
140
+ is_not_search = true
141
+ end
142
+
143
+ # search
144
+ records, total_records, result = [], 0, nil
145
+
146
+ begin
147
+ unless is_not_search
148
+ records, total_records, result = @documents.search_with_match(
149
+ :paths => paths,
150
+ :strict_packages => strict_packages,
151
+ :offset => offset,
152
+ :limit => limit
153
+ )
154
+ end
155
+ rescue Groonga::TooLargeOffset
156
+ end
157
+
158
+ if (limit != -1)
159
+ records = records.sort_by{|record| DocumentRecord::shortpath(record).downcase }
160
+ else
161
+ records = records.sort_by{|record| DocumentRecord::shortpath(record).downcase }
162
+ end
163
+
164
+ return records, result.size
118
165
  end
119
166
 
120
167
  # レコード数を得る
@@ -47,6 +47,10 @@ module Milkode
47
47
  top_list(a[0...FAV_NUM], 'favtime')
48
48
  end
49
49
 
50
+ def favorite_list_size
51
+ @grndb.packages.favs.size
52
+ end
53
+
50
54
  def favorite_list(params)
51
55
  names = @grndb.packages.favs.map{|r| r.name}[0..FAVORITE_LIST_NUM-1]
52
56
 
@@ -27,7 +27,7 @@ module Milkode
27
27
  @offset = params[:offset].to_i
28
28
 
29
29
  if (@q.fpaths.include?("*"))
30
- @records, @total_records = Database.instance.selectAll(@offset, DISP_NUM)
30
+ @records, @total_records = Database.instance.selectAll(path, @offset, DISP_NUM)
31
31
  else
32
32
  @records, @total_records = Database.instance.search(@q.keywords, @q.multi_match_keywords, @q.packages, path, @q.fpaths, @q.suffixs, @q.fpath_or_packages, @offset, DISP_NUM)
33
33
  end
@@ -14,6 +14,7 @@ module Milkode
14
14
  DEFAULT_SETTING = {
15
15
  :home_title => "Milkode",
16
16
  :home_icon => "/images/MilkodeIcon135.png",
17
+ :home_font_size => "100%",
17
18
 
18
19
  :header_title => "Milkode",
19
20
  :header_icon => "/images/MilkodeIcon135.png",
@@ -47,6 +48,7 @@ module Milkode
47
48
 
48
49
  hash_method :home_title
49
50
  hash_method :home_icon
51
+ hash_method :home_font_size
50
52
 
51
53
  hash_method :header_title
52
54
  hash_method :header_icon
@@ -56,5 +56,9 @@ en:
56
56
  help_directpath_comment_03: You can pass more than one value if you separate them by blank
57
57
  help_directpath_gif: Get by clicking the line number
58
58
  help_emacs_milkode: Direct Path can work with <a href="https://github.com/ongaeshi/emacs-milkode">emacs-milkode</a>.
59
+ keyboard_shortcut: Keyboard Shortcut
60
+ keyboard_shortcut_s: Focus search bar
61
+ keyboard_shortcut_S: Search using a selected text with new tab
62
+ select_text: Select text
59
63
 
60
64
 
@@ -56,5 +56,9 @@ ja:
56
56
  help_directpath_comment_03: 空白で区切れば複数個渡せる
57
57
  help_directpath_gif: ファイルモードで行番号をクリックすると取得可能
58
58
  help_emacs_milkode: <a href="https://github.com/ongaeshi/emacs-milkode">emacs-milkode</a>との連携にも使う
59
+ keyboard_shortcut: キーボードショートカット
60
+ keyboard_shortcut_s: 検索バーに移動
61
+ keyboard_shortcut_S: 選択したテキストを使って新しいタブで検索
62
+ select_text: テキスト選択
59
63
 
60
64
 
@@ -7,6 +7,7 @@
7
7
  %ol
8
8
  %li <a href="#search">#{t(:help_search_by_keyword)}</a>
9
9
  %li <a href="#refine">#{t(:filter_options)}</a>
10
+ %li <a href="#keyboard_shortcut">#{t(:keyboard_shortcut)}</a>
10
11
  %li <a href="#directpath">#{t(:help_directpath)}</a>
11
12
 
12
13
  %h2#search #{t(:help_search_by_keyword)}
@@ -58,6 +59,11 @@
58
59
  w:7 read write <span class="comment"># #{t(:help_wide_search_comment_01)}</span>
59
60
  w:0 read write <span class="comment"># #{t(:help_wide_search_comment_02)}</span>
60
61
 
62
+ %h2#keyboard_shortcut #{t(:keyboard_shortcut)}
63
+ %ul
64
+ %li <b>s</b> .. #{t(:keyboard_shortcut_s)}
65
+ %li <b>S</b> (#{t(:select_text)}) .. #{t(:keyboard_shortcut_S)}
66
+
61
67
  %h2#directpath #{t(:help_directpath)}
62
68
  %p
63
69
  #{t(:help_directpath_description)}
@@ -18,13 +18,13 @@
18
18
  .container#toppage
19
19
  .row
20
20
  .span12.text-center
21
- %h1 <a href="#{url_for '/'}"><img src=#{url_for @setting.home_icon} alt="milkode-icon" border="0" height="135px" /></a> #{@setting.home_title} <font class="version">#{@version}</font>
21
+ %h1 <a href="#{url_for '/'}"><img src=#{url_for @setting.home_icon} alt="milkode-icon" border="0" height="135px" /></a> <span style="font-size: #{@setting.home_font_size}">#{@setting.home_title}</span> <font class="version">#{@version}</font>
22
22
 
23
23
  .row
24
24
  .span12.text-center
25
25
  .form
26
26
  %form(method="post" action="#{url_for '/search'}")
27
- %input(name="query" type="text" style="width: 419px;")
27
+ %input#query(name="query" type="text" style="width: 419px;")
28
28
  %input(type="submit" value="#{t(:search)}")
29
29
  %input(name='pathname' type='hidden' value='#{url_for '/home'}')
30
30
  &nbsp;&nbsp;<a href="#{url_for '/help'}">#{t(:help)}</a>
@@ -7,6 +7,19 @@ function escapeHTML(str) {
7
7
  return str.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
8
8
  }
9
9
 
10
+ function divideURL(url) {
11
+ var found = url.match(/^(.+?):\/\/([A-Za-z\d\-.]+?):?(\d+)?(\/.*)?$/);
12
+
13
+ var head = found[1] + "://" + found[2];
14
+ if (found[3]) {
15
+ head += ":" + found[3];
16
+ }
17
+
18
+ var path = found[4];
19
+
20
+ return [head, path];
21
+ }
22
+
10
23
  function replace_query_param(url, value) {
11
24
  var url_s = url.split("?");
12
25
 
@@ -40,7 +53,7 @@ function topic_path(id) {
40
53
  document.getElementById(id).href = url;
41
54
  }
42
55
 
43
- function repalce_package_name(url, package_name) {
56
+ function replace_package_name(url, package_name) {
44
57
  var url_s = url.split("?");
45
58
  url = url_s[0].replace(/\/home(\/.*)?/, "/home/" + package_name); // home以下をパッケージ名に置き換え
46
59
  return url;
@@ -53,7 +66,7 @@ function select_package() {
53
66
  if (name == '---')
54
67
  name = "";
55
68
 
56
- url = repalce_package_name(url, name);
69
+ url = replace_package_name(url, name);
57
70
  url = replace_query_param(url, document.searchform.query.value);
58
71
  document.location = url;
59
72
  }
@@ -146,6 +159,20 @@ function open_newtab() {
146
159
  window.open(replace_query_param(document.URL, document.searchform.query.value));
147
160
  }
148
161
 
162
+ function open_newtab_query(query) {
163
+ var dividedURL = divideURL(document.URL);
164
+ var url = dividedURL[0];
165
+
166
+ var paths = dividedURL[1].split("/"); // /home/pacakge_name/path/to/..
167
+ url += "/home"; // Support root
168
+
169
+ if (paths[2]) {
170
+ url += "/" + paths[2];
171
+ }
172
+
173
+ window.open(replace_query_param(url, query));
174
+ }
175
+
149
176
  $(document).ready(function() {
150
177
  $("select#package").multiselect({
151
178
  multiple: false,
@@ -170,12 +197,13 @@ $(document).ready(function() {
170
197
  if ( match ) {
171
198
  $(match[1]).addClass("select-line");
172
199
  } else {
173
- $("#query").select();
200
+ $("#query").focus();
201
+ // $("#query").select();
174
202
  }
175
203
 
176
- $('#query').click(function(){
177
- $(this).select();
178
- });
204
+ // $('#query').click(function(){
205
+ // $(this).select();
206
+ // });
179
207
 
180
208
  $('#shead').change(function(){
181
209
  $('#search').click();
@@ -203,4 +231,24 @@ $(document).ready(function() {
203
231
  }
204
232
  );
205
233
  });
234
+
235
+ $('body').keypress(function (e) {
236
+ var k = e.which;
237
+ var isFocused = $('#query').is(':focus');
238
+
239
+ // s .. Focus search bar
240
+ if (!isFocused && k == 115) {
241
+ $("#query").focus();
242
+ e.preventDefault();
243
+ }
244
+
245
+ // S .. Search using a selected text (New tab)
246
+ var selectText = window.getSelection().toString(); // @todo Support IE
247
+ if (!isFocused && k == 83 && selectText != '') { // S .. 83, d .. 100
248
+ open_newtab_query(selectText);
249
+ e.preventDefault();
250
+ }
251
+
252
+ // $('body').html(k);
253
+ });
206
254
  });
@@ -1,3 +1,3 @@
1
1
  module Milkode
2
- VERSION = "1.7.1"
2
+ VERSION = "1.8.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: milkode
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.1
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ongaeshi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-16 00:00:00.000000000 Z
11
+ date: 2014-06-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler