Commit c37f01bff040ba1ea95748935110553a28c61bfa
Merge branch 'externalConfirm'
mix irving committed on 1/12/2017, 8:47:17 AMParent: 735a21fa879fddd250e0fe6224dbb269061f32d6
Parent: 968dba2f62d9e537fe3cd9013e6faa8f753e38a2
Files changed
modules_basic/message-backlinks.js | changed |
modules_core/index.js | changed |
modules_core/tabs.js | changed |
modules_core/external-confirm.js | added |
modules_basic/message-backlinks.js | ||
---|---|---|
@@ -1,7 +1,11 @@ | ||
1 | 1 … | const fs = require('fs') |
2 | 2 … | const h = require('../h') |
3 | 3 … | |
4 … | +exports.needs = { | |
5 … | + message_name: 'first' | |
6 … | +} | |
7 … | + | |
4 | 8 … | exports.gives = { |
5 | 9 … | message_backlinks: true, |
6 | 10 … | mcss: true |
7 | 11 … | } |
@@ -26,14 +30,19 @@ | ||
26 | 30 … | } |
27 | 31 … | |
28 | 32 … | if (links.length === 0) return null |
29 | 33 … | |
34 … | + var hrefList = h('ul') | |
35 … | + links.forEach(link => { | |
36 … | + api.message_name(link, (err, name) => { | |
37 … | + if (err) throw err | |
38 … | + hrefList.appendChild(h('li', | |
39 … | + h('a -backlink', { href: `#${link}` }, name) | |
40 … | + )) | |
41 … | + }) | |
42 … | + }) | |
30 | 43 … | return h('MessageBacklinks', [ |
31 | 44 … | h('header', 'backlinks:'), |
32 | - h('ul', links.map(link => { | |
33 | - return h('li', [ | |
34 | - h('a -backlink', { href: `#${link}` }, link) | |
35 | - ]) | |
36 | - })) | |
45 … | + hrefList | |
37 | 46 … | ]) |
38 | 47 … | } |
39 | 48 … | } |
modules_core/index.js | ||
---|---|---|
@@ -2,8 +2,9 @@ | ||
2 | 2 … | // "_screen_view.js": require('./_screen_view.js'), |
3 | 3 … | "app.js": require('./app.js'), |
4 | 4 … | "blob-url.js": require('./blob-url.js'), |
5 | 5 … | "crypto.js": require('./crypto.js'), |
6 … | + "external-confirm.js": require('./external-confirm.js'), | |
6 | 7 … | "file-input.js": require('./file-input.js'), |
7 | 8 … | "menu.js": require('./menu.js'), |
8 | 9 … | "message-confirm.js": require('./message-confirm.js'), |
9 | 10 … | "tabs.js": require('./tabs.js'), |
modules_core/tabs.js | ||
---|---|---|
@@ -15,9 +15,9 @@ | ||
15 | 15 … | //var screen_view = plugs.first(exports._screen_view = []) |
16 | 16 … | //var search_box = plugs.first(exports.search_box = []) |
17 | 17 … | //var menu = plugs.first(exports.menu = []) |
18 | 18 … | |
19 | -exports.needs = {screen_view: 'first', search_box: 'first', menu: 'first'} | |
19 … | +exports.needs = {screen_view: 'first', search_box: 'first', menu: 'first', 'external_confirm':'first'} | |
20 | 20 … | |
21 | 21 … | exports.gives = 'screen_view' |
22 | 22 … | |
23 | 23 … | exports.create = function (api) { |
@@ -94,9 +94,9 @@ | ||
94 | 94 … | if (link.getAttribute('href') === '#') return |
95 | 95 … | |
96 | 96 … | //open external links. |
97 | 97 … | //this ought to be made into something more runcible |
98 | - if(open.isExternal(link.href)) return open(link.href) | |
98 … | + if(link.href && open.isExternal(link.href)) return api.external_confirm(link.href) | |
99 | 99 … | |
100 | 100 … | if(tabs.has(path)) |
101 | 101 … | return tabs.select(path, !ev.ctrlKey, !!ev.shiftKey) |
102 | 102 … |
modules_core/external-confirm.js | ||
---|---|---|
@@ -1,0 +1,37 @@ | ||
1 … | +var lightbox = require('hyperlightbox') | |
2 … | +var h = require('hyperscript') | |
3 … | +var open = require('open-external') | |
4 … | + | |
5 … | +exports.gives = 'external_confirm' | |
6 … | + | |
7 … | +exports.create = function (api) { | |
8 … | + return function (href) { | |
9 … | + var lb = lightbox() | |
10 … | + document.body.appendChild(lb) | |
11 … | + | |
12 … | + var okay = h('button', 'open', {onclick: function () { | |
13 … | + lb.remove() | |
14 … | + open(href) | |
15 … | + }}) | |
16 … | + | |
17 … | + var cancel = h('button', 'Cancel', {onclick: function () { | |
18 … | + lb.remove() | |
19 … | + }}) | |
20 … | + | |
21 … | + okay.addEventListener('keydown', function (ev) { | |
22 … | + if (ev.keyCode === 27) cancel.click() // escape | |
23 … | + }) | |
24 … | + | |
25 … | + lb.show(h('div.column.message-confirm', | |
26 … | + h('div.message', | |
27 … | + h('div.title.row', | |
28 … | + h('div.message_meta.row', h('strong', 'warning: '), 'please confirm opening the following link in your OSes browser:') | |
29 … | + ), | |
30 … | + h('div.message_content', h('pre', href)) | |
31 … | + ), | |
32 … | + h('div.row.message-confirm__controls', okay, cancel) | |
33 … | + )) | |
34 … | + | |
35 … | + okay.focus() | |
36 … | + } | |
37 … | +} |
Built with git-ssb-web