milkode 1.7.1 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
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