rails-footnotes 4.0.0 → 4.0.1
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 +7 -0
- data/CHANGELOG +5 -0
- data/README.rdoc +17 -8
- data/lib/generators/templates/rails_footnotes.rb +7 -1
- data/lib/rails-footnotes.rb +6 -0
- data/lib/rails-footnotes/filter.rb +33 -7
- data/lib/rails-footnotes/notes/log_note.rb +7 -3
- data/lib/rails-footnotes/notes/queries_note.rb +12 -5
- data/lib/rails-footnotes/version.rb +1 -1
- metadata +14 -21
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 2cef699250d373d045cef743a70b3f49c46fc82c
|
4
|
+
data.tar.gz: e6143856c34a3ae3201a9f0e2ba503b8caecade8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: afb6c7f76465de26af156ee3bce87b54942fd499b3c8c5615b9029406cc517e27385e428bda91784e75eac6fb35029fa4bd9ea3c3ad9be5d15252eda82df5249
|
7
|
+
data.tar.gz: ee1985e69b29e36833dce2dfa455334ff8a981ea9f171a54c2ff5f81de52a8f07616a9fa59c38919ba7e6d23b2a10129ce23c2bffa1cdb90668f3e4fdda3d79c
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
== Footnotes v4.0.1
|
2
|
+
* Fix bad count for log note
|
3
|
+
* More robust initializer (thanks kayhide)
|
4
|
+
* Ability to lock the notes on the top right instead of the footer (thanks joshuapaling)
|
5
|
+
* More readable notes (thanks joshuapaling)
|
1
6
|
== Footnotes v4.0.0
|
2
7
|
* Drop support for ruby 1.8
|
3
8
|
* Drop support for rails < 3.2
|
data/README.rdoc
CHANGED
@@ -10,7 +10,7 @@ your backtrace lines.
|
|
10
10
|
|
11
11
|
== Installation
|
12
12
|
|
13
|
-
NOTE: Since this branch aims Rails 3.2+ support, if you want to use footnotes with Rails 2.3 you should use this branch:
|
13
|
+
NOTE: Since this branch aims for Rails 3.2+ support, if you want to use footnotes with Rails 2.3 you should use this branch:
|
14
14
|
|
15
15
|
https://github.com/josevalim/rails-footnotes/tree/rails2
|
16
16
|
|
@@ -36,9 +36,9 @@ This will create an initializer with default config and some examples.
|
|
36
36
|
controller.action_name == 'edit' }
|
37
37
|
end
|
38
38
|
|
39
|
-
===
|
39
|
+
=== Editor links
|
40
40
|
|
41
|
-
|
41
|
+
Textmate, MacVim and Sublime Text 2 are compatible.
|
42
42
|
|
43
43
|
*MacVim*
|
44
44
|
|
@@ -46,9 +46,9 @@ In the rails-footnotes initializer do :
|
|
46
46
|
|
47
47
|
f.prefix = 'mvim://open?url=file://%s&line=%d&column=%d'
|
48
48
|
|
49
|
-
|
49
|
+
Here you need to choose a prefix compatible with your text editor. The %s is
|
50
50
|
replaced by the name of the file, the first %d is replaced by the line number and
|
51
|
-
the second %d is replaced by the column.
|
51
|
+
the second %d is replaced by the column number.
|
52
52
|
|
53
53
|
Take note that the order in which the file name (%s), line number (%d) and column number (%d) appears is important.
|
54
54
|
We assume that they appear in that order. "foo://line=%d&file=%s" (%d precedes %s) would throw out an error.
|
@@ -74,6 +74,15 @@ by turning footnotes stylesheet off:
|
|
74
74
|
|
75
75
|
f.no_style = true
|
76
76
|
|
77
|
+
You can also lock the footnotes to the top of the window, hidden by default, and accessible
|
78
|
+
via a small button fixed to the top-right of your browser:
|
79
|
+
|
80
|
+
f.lock_top_right = true
|
81
|
+
|
82
|
+
To set the font-size for the footnotes:
|
83
|
+
|
84
|
+
f.font_size = '13px'
|
85
|
+
|
77
86
|
Another option is to allow multiple notes to be opened at the same time:
|
78
87
|
|
79
88
|
f.multiple_notes = true
|
@@ -87,7 +96,7 @@ Finally, you can control which notes you want to show. The default are:
|
|
87
96
|
Creating your notes to integrate with Footnotes is easy.
|
88
97
|
|
89
98
|
1. Create a Footnotes::Notes::YourExampleNote class
|
90
|
-
2. Implement the necessary methods (check abstract_note.rb file in lib/
|
99
|
+
2. Implement the necessary methods (check abstract_note.rb[link:lib/rails-footnotes/abstract_note.rb] file in lib/rails-footnotes)
|
91
100
|
3. Append your example note in Footnotes::Filter.notes array (usually at the end of your environment file or in the initializer):
|
92
101
|
|
93
102
|
For example, to create a note that shows info about the user logged in your application you just have to do:
|
@@ -127,10 +136,10 @@ Then put in your environment, add in your initializer:
|
|
127
136
|
|
128
137
|
f.notes += [:current_user]
|
129
138
|
|
130
|
-
==
|
139
|
+
== Footnote position
|
131
140
|
|
132
141
|
By default the notes will be showed at the bottom of your page (appended just before </body>).
|
133
|
-
If you'd like
|
142
|
+
If you'd like the footnote, to be at a different place (perhaps for aesthetical reasons) you can edit one of your views and add:
|
134
143
|
<div id="footnotes_holder"></div>
|
135
144
|
at an appropriate place, your notes will now appear inside div#footnotes_holder
|
136
145
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
Footnotes.setup do |f|
|
1
|
+
defined?(Footnotes) && Footnotes.setup do |f|
|
2
2
|
# Wether or not to enable footnotes
|
3
3
|
f.enabled = Rails.env.development?
|
4
4
|
# You can also use a lambda / proc to conditionally toggle footnotes
|
@@ -16,6 +16,12 @@ Footnotes.setup do |f|
|
|
16
16
|
# Disable style :
|
17
17
|
# f.no_style = true
|
18
18
|
|
19
|
+
# Lock notes to top right :
|
20
|
+
# f.lock_top_right = true
|
21
|
+
|
22
|
+
# Change font size :
|
23
|
+
# f.font_size = '11px'
|
24
|
+
|
19
25
|
# Allow to open multiple notes :
|
20
26
|
# f.multiple_notes = true
|
21
27
|
end
|
data/lib/rails-footnotes.rb
CHANGED
@@ -29,6 +29,12 @@ module Footnotes
|
|
29
29
|
|
30
30
|
delegate :multiple_notes, :to => Filter
|
31
31
|
delegate :multiple_notes=, :to => Filter
|
32
|
+
|
33
|
+
delegate :lock_top_right, :to => Filter
|
34
|
+
delegate :lock_top_right=, :to => Filter
|
35
|
+
|
36
|
+
delegate :font_size, :to => Filter
|
37
|
+
delegate :font_size=, :to => Filter
|
32
38
|
end
|
33
39
|
|
34
40
|
def self.run!
|
@@ -3,6 +3,8 @@ module Footnotes
|
|
3
3
|
@@no_style = false
|
4
4
|
@@multiple_notes = false
|
5
5
|
@@klasses = []
|
6
|
+
@@lock_top_right = false
|
7
|
+
@@font_size = '11px'
|
6
8
|
|
7
9
|
# Default link prefix is textmate
|
8
10
|
@@prefix = 'txmt://open?url=file://%s&line=%d&column=%d'
|
@@ -16,7 +18,9 @@ module Footnotes
|
|
16
18
|
# :notes => Class variable that holds the notes to be processed
|
17
19
|
# :prefix => Prefix appended to FootnotesLinks
|
18
20
|
# :multiple_notes => Set to true if you want to open several notes at the same time
|
19
|
-
|
21
|
+
# :lock_top_right => Lock a btn to toggle notes to the top right of the browser
|
22
|
+
# :font_size => CSS font-size property
|
23
|
+
cattr_accessor :no_style, :notes, :prefix, :multiple_notes, :lock_top_right, :font_size
|
20
24
|
|
21
25
|
class << self
|
22
26
|
include Footnotes::EachWithRescue
|
@@ -136,18 +140,34 @@ module Footnotes
|
|
136
140
|
|
137
141
|
def insert_styles
|
138
142
|
#TODO More customizable(reset.css, from file etc.)
|
143
|
+
if @@lock_top_right
|
144
|
+
extra_styles = <<-STYLES
|
145
|
+
#footnotes_debug {position: fixed; top: 0px; right: 0px; width: 100%; z-index: 10000; margin-top: 0;}
|
146
|
+
#footnotes_debug #toggle_footnotes {position: absolute; right: 0; top: 0; background: #fff; border: 1px solid #ccc; color: #9b1b1b; font-size: 20px; text-align: center; padding: 8px; opacity: 0.9;}
|
147
|
+
#footnotes_debug #toggle_footnotes:hover {opacity: 1;}
|
148
|
+
#footnotes_debug #all_footnotes {display: none; padding: 15px; background: #fff; box-shadow: 0 0 5px rgba(0,0,0,0.4);}
|
149
|
+
#footnotes_debug fieldset > div {max-height: 500px; overflow: scroll;}
|
150
|
+
STYLES
|
151
|
+
else
|
152
|
+
extra_styles = <<-STYLES
|
153
|
+
#footnotes_debug #toggle_footnotes {display: none;}
|
154
|
+
STYLES
|
155
|
+
end
|
139
156
|
insert_text :before, /<\/head>/i, <<-HTML
|
140
157
|
<!-- Footnotes Style -->
|
141
158
|
<style type="text/css">
|
142
|
-
#footnotes_debug {font-size:
|
159
|
+
#footnotes_debug {font-size: #{@@font_size}; font-family: Consolas, monaco, monospace; font-weight: normal; margin: 2em 0 1em 0; text-align: center; color: #444; line-height: 16px; background: #fff;}
|
143
160
|
#footnotes_debug th, #footnotes_debug td {color: #444; line-height: 18px;}
|
144
161
|
#footnotes_debug a {color: #9b1b1b; font-weight: inherit; text-decoration: none; line-height: 18px;}
|
145
|
-
#footnotes_debug table {text-align:
|
146
|
-
#footnotes_debug table td {padding:
|
162
|
+
#footnotes_debug table {text-align: left; width: 100%;table-layout: fixed;}
|
163
|
+
#footnotes_debug table td {padding: 5px; border-bottom: 1px solid #ccc;}
|
164
|
+
#footnotes_debug table th {padding: 5px; border-bottom: 1px solid #ccc;}
|
165
|
+
#footnotes_debug table tr:nth-child(2n) td {background: #eee;}
|
147
166
|
#footnotes_debug tbody {text-align: left;}
|
148
167
|
#footnotes_debug .name_values td {vertical-align: top;}
|
149
168
|
#footnotes_debug legend {background-color: #fff;}
|
150
169
|
#footnotes_debug fieldset {text-align: left; border: 1px dashed #aaa; padding: 0.5em 1em 1em 1em; margin: 1em 2em; color: #444; background-color: #FFF;}
|
170
|
+
#{extra_styles}
|
151
171
|
/* Aditional Stylesheets */
|
152
172
|
#{@notes.map(&:stylesheet).compact.join("\n")}
|
153
173
|
</style>
|
@@ -158,13 +178,19 @@ module Footnotes
|
|
158
178
|
def insert_footnotes
|
159
179
|
# Fieldsets method should be called first
|
160
180
|
content = fieldsets
|
161
|
-
|
181
|
+
element_style = ''
|
182
|
+
if @@lock_top_right
|
183
|
+
element_style = 'style="display: none;"'
|
184
|
+
end
|
162
185
|
footnotes_html = <<-HTML
|
163
186
|
<!-- Footnotes -->
|
164
187
|
<div style="clear:both"></div>
|
165
188
|
<div id="footnotes_debug">
|
166
|
-
#
|
167
|
-
#{
|
189
|
+
<a id="toggle_footnotes" href="#" onclick="Footnotes.toggle('all_footnotes'); return false;">fn</a>
|
190
|
+
<div id="all_footnotes" #{element_style}>
|
191
|
+
#{links}
|
192
|
+
#{content}
|
193
|
+
</div>
|
168
194
|
<script type="text/javascript">
|
169
195
|
var Footnotes = function() {
|
170
196
|
|
@@ -19,18 +19,22 @@ module Footnotes
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def title
|
22
|
-
"Log (#{log.count
|
22
|
+
"Log (#{log.count})"
|
23
23
|
end
|
24
24
|
|
25
25
|
def content
|
26
|
-
result =
|
26
|
+
result = '<table>'
|
27
|
+
log.each do |l|
|
28
|
+
result << "<tr><td>#{l.gsub(/\e\[.+?m/, '')}</td></tr>"
|
29
|
+
end
|
30
|
+
result << '</table>'
|
27
31
|
# Restore formatter
|
28
32
|
Rails.logger = self.class.original_logger
|
29
33
|
result
|
30
34
|
end
|
31
35
|
|
32
36
|
def log
|
33
|
-
self.class.logs
|
37
|
+
self.class.logs
|
34
38
|
end
|
35
39
|
|
36
40
|
end
|
@@ -33,18 +33,25 @@ module Footnotes
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def content
|
36
|
-
html = ''
|
36
|
+
html = '<table>'
|
37
37
|
self.events.each_with_index do |event, index|
|
38
38
|
sql_links = []
|
39
39
|
sql_links << "<a href=\"javascript:Footnotes.toggle('qtrace_#{index}')\" style=\"color:#00A;\">trace</a>"
|
40
40
|
|
41
41
|
html << <<-HTML
|
42
|
-
|
43
|
-
<
|
44
|
-
|
45
|
-
|
42
|
+
<tr>
|
43
|
+
<td>
|
44
|
+
<b id="qtitle_#{index}">#{escape(event.type.to_s.upcase)}</b> (#{sql_links.join(' | ')})
|
45
|
+
<p id="qtrace_#{index}" style="display:none;">#{parse_trace(event.trace)}</p><br />
|
46
|
+
</td>
|
47
|
+
<td>
|
48
|
+
<span id="sql_#{index}">#{print_query(event.payload[:sql])}</span>
|
49
|
+
</td>
|
50
|
+
<td>#{print_name_and_time(event.payload[:name], event.duration / 1000.0)}</td>
|
51
|
+
</tr>
|
46
52
|
HTML
|
47
53
|
end
|
54
|
+
html << '</table>'
|
48
55
|
return html
|
49
56
|
end
|
50
57
|
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails-footnotes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
5
|
-
prerelease:
|
4
|
+
version: 4.0.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Roman V. Babenko
|
@@ -13,54 +12,48 @@ authors:
|
|
13
12
|
autorequire:
|
14
13
|
bindir: bin
|
15
14
|
cert_chain: []
|
16
|
-
date: 2014-
|
15
|
+
date: 2014-05-13 00:00:00.000000000 Z
|
17
16
|
dependencies:
|
18
17
|
- !ruby/object:Gem::Dependency
|
19
18
|
name: rails
|
20
19
|
requirement: !ruby/object:Gem::Requirement
|
21
|
-
none: false
|
22
20
|
requirements:
|
23
|
-
- -
|
21
|
+
- - '>='
|
24
22
|
- !ruby/object:Gem::Version
|
25
23
|
version: '3.2'
|
26
24
|
type: :runtime
|
27
25
|
prerelease: false
|
28
26
|
version_requirements: !ruby/object:Gem::Requirement
|
29
|
-
none: false
|
30
27
|
requirements:
|
31
|
-
- -
|
28
|
+
- - '>='
|
32
29
|
- !ruby/object:Gem::Version
|
33
30
|
version: '3.2'
|
34
31
|
- !ruby/object:Gem::Dependency
|
35
32
|
name: rspec-rails
|
36
33
|
requirement: !ruby/object:Gem::Requirement
|
37
|
-
none: false
|
38
34
|
requirements:
|
39
|
-
- -
|
35
|
+
- - '>='
|
40
36
|
- !ruby/object:Gem::Version
|
41
37
|
version: '0'
|
42
38
|
type: :development
|
43
39
|
prerelease: false
|
44
40
|
version_requirements: !ruby/object:Gem::Requirement
|
45
|
-
none: false
|
46
41
|
requirements:
|
47
|
-
- -
|
42
|
+
- - '>='
|
48
43
|
- !ruby/object:Gem::Version
|
49
44
|
version: '0'
|
50
45
|
- !ruby/object:Gem::Dependency
|
51
46
|
name: capybara
|
52
47
|
requirement: !ruby/object:Gem::Requirement
|
53
|
-
none: false
|
54
48
|
requirements:
|
55
|
-
- -
|
49
|
+
- - '>='
|
56
50
|
- !ruby/object:Gem::Version
|
57
51
|
version: '0'
|
58
52
|
type: :development
|
59
53
|
prerelease: false
|
60
54
|
version_requirements: !ruby/object:Gem::Requirement
|
61
|
-
none: false
|
62
55
|
requirements:
|
63
|
-
- -
|
56
|
+
- - '>='
|
64
57
|
- !ruby/object:Gem::Version
|
65
58
|
version: '0'
|
66
59
|
description: Every Rails page has footnotes that gives information about your application
|
@@ -127,27 +120,26 @@ files:
|
|
127
120
|
- spec/views/partials/index.html.erb
|
128
121
|
homepage: http://github.com/josevalim/rails-footnotes
|
129
122
|
licenses: []
|
123
|
+
metadata: {}
|
130
124
|
post_install_message:
|
131
125
|
rdoc_options: []
|
132
126
|
require_paths:
|
133
127
|
- lib
|
134
128
|
required_ruby_version: !ruby/object:Gem::Requirement
|
135
|
-
none: false
|
136
129
|
requirements:
|
137
|
-
- -
|
130
|
+
- - '>='
|
138
131
|
- !ruby/object:Gem::Version
|
139
132
|
version: '0'
|
140
133
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
141
|
-
none: false
|
142
134
|
requirements:
|
143
|
-
- -
|
135
|
+
- - '>='
|
144
136
|
- !ruby/object:Gem::Version
|
145
137
|
version: '0'
|
146
138
|
requirements: []
|
147
139
|
rubyforge_project: rails-footnotes
|
148
|
-
rubygems_version:
|
140
|
+
rubygems_version: 2.2.2
|
149
141
|
signing_key:
|
150
|
-
specification_version:
|
142
|
+
specification_version: 4
|
151
143
|
summary: Every Rails page has footnotes that gives information about your application
|
152
144
|
and links back to your editor.
|
153
145
|
test_files:
|
@@ -165,3 +157,4 @@ test_files:
|
|
165
157
|
- spec/spec_helper.rb
|
166
158
|
- spec/views/partials/_foo.html.erb
|
167
159
|
- spec/views/partials/index.html.erb
|
160
|
+
has_rdoc:
|