mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-02 12:05:57 +01:00
added a screening page for external links. removed forced target = _blank on external links for UX consideration
used http://www.deviantart.com/users/outgoing?http://www.nodebb.org/ for inspiration
This commit is contained in:
2
app.js
2
app.js
@@ -70,7 +70,7 @@ if (!nconf.get('setup') && nconf.get('base_url')) {
|
|||||||
config['ROOT_DIRECTORY'] = __dirname;
|
config['ROOT_DIRECTORY'] = __dirname;
|
||||||
|
|
||||||
templates.init([
|
templates.init([
|
||||||
'header', 'footer', 'logout', 'admin/header', 'admin/footer', 'admin/index',
|
'header', 'footer', 'logout', 'outgoing', 'admin/header', 'admin/footer', 'admin/index',
|
||||||
'emails/reset', 'emails/reset_plaintext', 'emails/email_confirm', 'emails/email_confirm_plaintext',
|
'emails/reset', 'emails/reset_plaintext', 'emails/email_confirm', 'emails/email_confirm_plaintext',
|
||||||
'emails/header', 'emails/footer', 'install/header', 'install/footer', 'install/redis',
|
'emails/header', 'emails/footer', 'install/header', 'install/footer', 'install/redis',
|
||||||
|
|
||||||
|
|||||||
11
public/templates/outgoing.tpl
Normal file
11
public/templates/outgoing.tpl
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<div class="hero-unit">
|
||||||
|
<h2 class="form-signin-heading">Now Leaving NodeBB</h2>
|
||||||
|
<p>
|
||||||
|
You are now leaving NodeBB.
|
||||||
|
</p>
|
||||||
|
<br />
|
||||||
|
<p>
|
||||||
|
<button class="btn btn-large" type="button" onclick="window.location='{url}'">Continue to {url}</button>
|
||||||
|
<button class="btn btn-large btn-inverse" type="button" onclick="history.go(-1); window.location='{home}'">Return to NodeBB</button>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
@@ -148,9 +148,19 @@ var RDB = require('./redis.js'),
|
|||||||
|
|
||||||
if (md.length > 0) {
|
if (md.length > 0) {
|
||||||
var parsedContentDOM = cheerio.load(marked(md));
|
var parsedContentDOM = cheerio.load(marked(md));
|
||||||
parsedContentDOM('a').attr('rel', 'nofollow').attr('target', '_blank');
|
parsedContentDOM('a').attr('rel', 'nofollow');
|
||||||
|
|
||||||
|
var href = parsedContentDOM('a').attr('href'),
|
||||||
|
domain = global.nconf.get('url');
|
||||||
|
|
||||||
|
if (href && !href.match(domain)) {
|
||||||
|
parsedContentDOM('a').attr('href', domain + 'outgoing?' + href);
|
||||||
|
}
|
||||||
|
|
||||||
html = parsedContentDOM.html();
|
html = parsedContentDOM.html();
|
||||||
} else html = '<p></p>';
|
} else {
|
||||||
|
html = '<p></p>';
|
||||||
|
}
|
||||||
|
|
||||||
return html;
|
return html;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -278,6 +278,20 @@ var express = require('express'),
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
app.get('/outgoing', function(req, res) {
|
||||||
|
var url = req.url.split('?');
|
||||||
|
|
||||||
|
if (url[1]) {
|
||||||
|
res.send(app.build_header(res) + templates['outgoing'].parse({
|
||||||
|
url: url[1],
|
||||||
|
home: global.nconf.get('url')
|
||||||
|
}) + templates['footer']);
|
||||||
|
} else {
|
||||||
|
res.status(404);
|
||||||
|
res.redirect(global.nconf.get('relative_path') + '/404');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// These functions are called via ajax once the initial page is loaded to populate templates with data
|
// These functions are called via ajax once the initial page is loaded to populate templates with data
|
||||||
|
|||||||
Reference in New Issue
Block a user