]> git.gir.st - VimFx.git/blob - extension/packages/help.coffee
Closes 33. Now the container divs are appended directly to document.documentElement...
[VimFx.git] / extension / packages / help.coffee
1 utils = require 'utils'
2
3 CONTAINER_ID = 'VimFxHelpDialogContainer'
4
5 hideHelp = (document) ->
6 if div = document.getElementById CONTAINER_ID
7 div.parentNode.removeChild div
8
9 showHelp = (document, commandsHelp) ->
10 if document.documentElement
11 if div = document.getElementById CONTAINER_ID
12 div.parentNode.removeChild div
13 div = document.createElement 'div'
14 div.id = CONTAINER_ID
15 div.className = 'VimFxReset'
16
17 div.appendChild parseHTML(document, helpDialogHtml(commandsHelp))
18
19 document.documentElement.appendChild div
20
21 if button = document.getElementById('VimFxClose')
22 clickHandler = (event) ->
23 event.stopPropagation()
24 event.preventDefault()
25 hideHelp(document)
26 button.addEventListener 'click', clickHandler, false
27
28 parseHTML = (doc, html) ->
29 parser = Cc["@mozilla.org/parserutils;1"].getService(Ci.nsIParserUtils)
30 flags = parser.SanitizerAllowStyle
31 return parser.parseFragment(html, flags, false, null, doc.documentElement)
32
33 td = (text, klass='') ->
34 """<td class="VimFxReset #{ klass }">#{ text }</td>"""
35
36 tr = (key, text) ->
37 key = """#{ key } <span class="VimFxReset VimFxDot">&#8729;</span>"""
38 """<tr class="VimFxReset">#{ td(key, 'VimFxSequence') }#{ td(text) }</tr>"""
39
40 table = (commands) ->
41 """
42 <table class="VimFxReset">
43 #{ (tr(cmd, text) for cmd, text of commands).join('') }
44 </table>
45 """
46
47 section = (title, commands) ->
48 """
49 <div class="VimFxReset VimFxSectionTitle">#{ title }</div>
50 #{ table(commands) }
51 """
52
53 helpDialogHtml = (help) ->
54 return """
55
56 <div id="VimFxHelpDialog" class="VimFxReset">
57 <div class="VimFxReset VimFxHeader">
58 <div class="VimFxReset VimFxTitle">
59 <span class="VimFxReset VimFxTitleVim">Vim</span><span class="VimFxReset VimFxTitleFx">Fx</span>
60 <span class="VimFxReset">#{ _('help') }</span>
61 </div>
62 <span class="VimFxReset VimFxVersion">#{ _('help_version') } #{ utils.getVersion() }</span>
63 <a class="VimFxReset VimFxClose" id="VimFxClose" href="#">&#10006;</a>
64 <div class="VimFxReset VimFxClearFix"></div>
65 </div>
66
67 <div class="VimFxReset VimFxBody">
68 <div class="VimFxReset VimFxColumn">
69 #{ section(_('help_section_urls'), help['urls']) }
70 #{ section(_('help_section_nav'), help['nav']) }
71 </div>
72 <div class="VimFxReset VimFxColumn">
73 #{ section(_('help_section_tabs'), help['tabs']) }
74 #{ section(_('help_section_browse'), help['browse']) }
75 #{ section(_('help_section_misc'), help['misc']) }
76 </div>
77 <div class="VimFxReset VimFxClearFix"></div>
78 </div>
79
80 <div class="VimFxReset VimFxFooter">
81 <div class="VimFxReset VimFxSocial">
82 <p class="VimFxReset">
83 #{ _('help_found_bug') }
84 <a class="VimFxReset" target="_blank" href="https://github.com/akhodakivskiy/VimFx/issues">
85 #{ _('help_report_bug') }
86 </a>
87 </p>
88 <p class="VimFxReset">
89 #{ _('help_enjoying') }
90 <a class="VimFxReset" target="_blank" href="https://addons.mozilla.org/en-US/firefox/addon/vimfx/">
91 #{ _('help_feedback') }
92 </a>
93 </p>
94 </div>
95 </div>
96 </div>
97
98 """
99
100 exports.showHelp = showHelp
101 exports.hideHelp = hideHelp
Imprint / Impressum