You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2016/01/15 19:49:01 UTC
[7/8] allura git commit: [#8039] parse inline JS from html too
(jslint did this); .eslintrc file with safe basics; fix some errors
[#8039] parse inline JS from html too (jslint did this); .eslintrc file with safe basics; fix some errors
Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/9dd662c1
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/9dd662c1
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/9dd662c1
Branch: refs/heads/db/8039
Commit: 9dd662c1515c470a0c0521db8b1b7aceb46b41ea
Parents: b5a1bc9
Author: Dave Brondsema <da...@brondsema.net>
Authored: Thu Jan 14 22:05:22 2016 -0500
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Fri Jan 15 13:41:11 2016 -0500
----------------------------------------------------------------------
.eslintrc | 42 ++++++++++++++++++++
Allura/allura/lib/widgets/discuss.py | 8 ++--
.../templates/app_admin_webhooks_list.html | 4 +-
.../allura/templates/jinja_master/master.html | 6 +--
.../allura/templates/jinja_master/top_nav.html | 3 +-
Allura/docs/getting_started/installation.rst | 2 +-
AlluraTest/alluratest/validation.py | 25 ++++++++----
Dockerfile | 2 +-
ForgeWiki/forgewiki/nf/wiki/js/browse.js | 2 -
ForgeWiki/forgewiki/templates/wiki/master.html | 5 ++-
ForgeWiki/forgewiki/wiki_main.py | 8 ++--
11 files changed, 76 insertions(+), 31 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/allura/blob/9dd662c1/.eslintrc
----------------------------------------------------------------------
diff --git a/.eslintrc b/.eslintrc
new file mode 100644
index 0000000..493b774
--- /dev/null
+++ b/.eslintrc
@@ -0,0 +1,42 @@
+{
+ "rules": {
+ "indent": [2, 4],
+ "no-unused-vars": [2, {"vars": "all", "args": "none"}],
+ "no-console": 0,
+ "semi": [2, "always"],
+ "eqeqeq": 2,
+ "block-scoped-var": 2,
+ "consistent-return": 2,
+ // specify curly brace conventions for all control statements
+ "curly": [2, "all"],
+ // require default case in switch statements
+ "default-case": 2,
+ // disallow use of eval()
+ "no-eval": 2,
+ // disallow adding to native types
+ "no-extend-native": 2,
+ // disallow use of eval()-like methods
+ "no-implied-eval": 2,
+ // disallow this keywords outside of classes or class-like objects
+ "no-invalid-this": 2,
+ // disallow creation of functions within loops
+ "no-loop-func": 2,
+ // disallow declaring the same variable more then once
+ "no-redeclare": 2,
+ // disallow use of the with statement
+ "no-with": 2,
+ // require use of the second argument for parseInt()
+ "radix": 2
+ },
+ "globals": {
+
+ },
+ "parser": "esprima-fb",
+ "env": {
+ "browser": true,
+ "jquery": true
+ },
+ "extends": "eslint:recommended",
+ "plugins": [
+ ]
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/allura/blob/9dd662c1/Allura/allura/lib/widgets/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/discuss.py b/Allura/allura/lib/widgets/discuss.py
index 1e3d632..e5ab85c 100644
--- a/Allura/allura/lib/widgets/discuss.py
+++ b/Allura/allura/lib/widgets/discuss.py
@@ -325,20 +325,19 @@ class Post(HierWidget):
if (mod === 'Delete' && !confirm('Really delete this post?')) {
return;
}
- var id_post = $(post).attr('id');
$.ajax({
type: 'POST',
url: this.parentNode.action,
data: jQuery(this.parentNode).serialize(),
success: function() {
- if (mod == 'Delete'){
+ if (mod === 'Delete'){
$(post).remove();
}
- else if (mod == 'Approve'){
+ else if (mod === 'Approve'){
$('a.reply_post, a.shortlink, form.moderate_spam, form.moderate_approve', post).toggle();
$('div.moderate', post).removeClass('moderate');
}
- else if (mod == 'Spam'){
+ else if (mod === 'Spam'){
$(post).remove();
}
}
@@ -484,7 +483,6 @@ class Thread(HierWidget):
}
if (thread_spam.length) {
if (allow_moderate.length) {
- var cval = $.cookie('_session_id');
thread_spam[0].style.display='block';
}
}
http://git-wip-us.apache.org/repos/asf/allura/blob/9dd662c1/Allura/allura/templates/app_admin_webhooks_list.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/app_admin_webhooks_list.html b/Allura/allura/templates/app_admin_webhooks_list.html
index f61feec..494d720 100644
--- a/Allura/allura/templates/app_admin_webhooks_list.html
+++ b/Allura/allura/templates/app_admin_webhooks_list.html
@@ -55,9 +55,9 @@ $(function() {
var csrf = $.cookie('_session_id');
var data = {'webhook': id, '_session_id': csrf};
var url = $(this).attr('href');
- var $tr = $(this).parents('tr')
+ var $tr = $(this).parents('tr');
$.post(url, data, function(data) {
- if (data['status'] == 'ok') {
+ if (data['status'] === 'ok') {
$tr.remove();
} else {
console.log(data);
http://git-wip-us.apache.org/repos/asf/allura/blob/9dd662c1/Allura/allura/templates/jinja_master/master.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/jinja_master/master.html b/Allura/allura/templates/jinja_master/master.html
index 52160a8..dbb6dae 100644
--- a/Allura/allura/templates/jinja_master/master.html
+++ b/Allura/allura/templates/jinja_master/master.html
@@ -52,10 +52,6 @@
<meta content="text/html; charset=UTF-8" http-equiv="content-type"/>
<title>{% block title %}Your title goes here{% endblock %}</title>
{{ theme_macros.extra_header(g.theme_href('')) }}
- <script type="text/javascript">
- /*jslint onevar: false, nomen: false, evil: true, css: true, plusplus: false, white: false, forin: true, on: true, immed: false */
- /*global confirm, alert, unescape, window, jQuery, $, net, COMSCORE */
- </script>
{% for blob in g.resource_manager.emit('head_css') %}
{{ blob }}
{% endfor %}
@@ -184,7 +180,7 @@
}).blur(function () {
$(this).tooltipster('hide');
});
- })
+ });
</script>
</body>
</html>
http://git-wip-us.apache.org/repos/asf/allura/blob/9dd662c1/Allura/allura/templates/jinja_master/top_nav.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/jinja_master/top_nav.html b/Allura/allura/templates/jinja_master/top_nav.html
index c103280..adb5b85 100644
--- a/Allura/allura/templates/jinja_master/top_nav.html
+++ b/Allura/allura/templates/jinja_master/top_nav.html
@@ -52,6 +52,7 @@
{% do g.register_forge_js('js/build/transpiled.js') %} {# if we do more es6, we'll need to register this in other places, or maybe even global #}
<script>
'use strict';
+ /*global ReactDOM, React, Main, ToggleAddNewTool */
var _data = {{ h.escape_json(c.project.nav_data(admin_options=True))|safe }};
$(document).ready(function () {
$('#toggle-admin-btn').click(function () {
@@ -77,7 +78,7 @@
delay: 200,
theme: 'tooltipster-light',
position: 'top'
- })
+ });
});
</script>
{% endif %}
http://git-wip-us.apache.org/repos/asf/allura/blob/9dd662c1/Allura/docs/getting_started/installation.rst
----------------------------------------------------------------------
diff --git a/Allura/docs/getting_started/installation.rst b/Allura/docs/getting_started/installation.rst
index bedd9c0..f552e37 100644
--- a/Allura/docs/getting_started/installation.rst
+++ b/Allura/docs/getting_started/installation.rst
@@ -191,7 +191,7 @@ For non-Ubuntu installations see https://nodejs.org/en/download/package-manager/
(env-allura)~$ curl --silent --location https://deb.nodesource.com/setup_4.x | sudo bash -
(env-allura)~$ sudo apt-get install nodejs
(env-allura)~$ cd ~/src/allura
- (env-allura)~$ sudo npm install -g broccoli-cli eslint
+ (env-allura)~$ sudo npm install -g broccoli-cli eslint eslint-plugin-html
(env-allura)~$ npm install
(env-allura)~$ npm run build
http://git-wip-us.apache.org/repos/asf/allura/blob/9dd662c1/AlluraTest/alluratest/validation.py
----------------------------------------------------------------------
diff --git a/AlluraTest/alluratest/validation.py b/AlluraTest/alluratest/validation.py
index f1a235b..803f489 100644
--- a/AlluraTest/alluratest/validation.py
+++ b/AlluraTest/alluratest/validation.py
@@ -29,6 +29,7 @@ import subprocess
import json
import urllib2
import re
+import pkg_resources
import webtest
from webtest import TestApp
@@ -187,17 +188,25 @@ def validate_html5_chunk(html):
return validate_html5(html)
-def validate_js(html_or_response):
+def validate_js(html_or_response, within_html=False):
if hasattr(html_or_response, 'body'):
if html_or_response.status_int != 200:
return
- js = html_or_response.body
+ text = html_or_response.body
else:
- js = html_or_response
- fname = dump_to_file('eslint-', js, suffix='.js')
- p = subprocess.Popen(['eslint', '--no-ignore', fname],
- stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
- stdout, stderr = p.communicate(js)
+ text = html_or_response
+ fname = dump_to_file('eslint-', text, suffix='.html' if within_html else '.js')
+ eslintrc = os.path.join(pkg_resources.get_distribution('allura').location, '../.eslintrc')
+ cmd = ['eslint',
+ '-c', eslintrc, # since we're in a tmp dir
+ '--no-ignore', # tmp dirs ignored by default
+ ]
+ if within_html:
+ cmd += ['--rule', 'indent: 0'] # inline HTML always has indentation wrong
+ cmd += ['--plugin', 'html']
+ cmd += [fname]
+ p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ stdout, stderr = p.communicate()
if p.returncode == 0:
os.unlink(fname)
else:
@@ -209,7 +218,7 @@ def validate_page(html_or_response):
if Config.instance().validation_enabled('html5'):
validate_html(html_or_response)
if Config.instance().validation_enabled('inlinejs'):
- validate_js(html_or_response)
+ validate_js(html_or_response, within_html=True)
class AntiSpamTestApp(TestApp):
http://git-wip-us.apache.org/repos/asf/allura/blob/9dd662c1/Dockerfile
----------------------------------------------------------------------
diff --git a/Dockerfile b/Dockerfile
index 546731d..6c6c036 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -36,7 +36,7 @@ RUN curl --silent --location https://deb.nodesource.com/setup_4.x | sudo bash -
apt-get install --yes nodejs
# only do the global installation here. All local packages are installed in init-docker-dev.sh, since they need the shared mount
-RUN npm install -g broccoli-cli eslint
+RUN npm install -g broccoli-cli eslint eslint-plugin-html
# Snapshot generation for SVN (and maybe other SCMs) might fail without this
RUN locale-gen en_US.UTF-8
http://git-wip-us.apache.org/repos/asf/allura/blob/9dd662c1/ForgeWiki/forgewiki/nf/wiki/js/browse.js
----------------------------------------------------------------------
diff --git a/ForgeWiki/forgewiki/nf/wiki/js/browse.js b/ForgeWiki/forgewiki/nf/wiki/js/browse.js
index 70a5b76..81c0028 100644
--- a/ForgeWiki/forgewiki/nf/wiki/js/browse.js
+++ b/ForgeWiki/forgewiki/nf/wiki/js/browse.js
@@ -17,8 +17,6 @@
under the License.
*/
-/*jslint onevar: false, nomen: false, evil: true, css: true, plusplus: false, white: false, forin: true */
-/*global alert, unescape, window, jQuery, $, net, COMSCORE */
var show_deleted, can_delete;
function toggle_deleted(show) {
http://git-wip-us.apache.org/repos/asf/allura/blob/9dd662c1/ForgeWiki/forgewiki/templates/wiki/master.html
----------------------------------------------------------------------
diff --git a/ForgeWiki/forgewiki/templates/wiki/master.html b/ForgeWiki/forgewiki/templates/wiki/master.html
index 9f0ada1..ad03778 100644
--- a/ForgeWiki/forgewiki/templates/wiki/master.html
+++ b/ForgeWiki/forgewiki/templates/wiki/master.html
@@ -36,11 +36,12 @@
{% block extra_js %}
<script type="text/javascript">
$('.post-link').click(function () {
+ var dialog_text;
var version = $(this).data("dialog-id");
if (version) {
- var dialog_text = $(".confirmation_dialog_" + version);
+ dialog_text = $(".confirmation_dialog_" + version);
} else {
- var dialog_text = $(".confirmation_dialog");
+ dialog_text = $(".confirmation_dialog");
}
var modal = $('#lightbox_confirm');
http://git-wip-us.apache.org/repos/asf/allura/blob/9dd662c1/ForgeWiki/forgewiki/wiki_main.py
----------------------------------------------------------------------
diff --git a/ForgeWiki/forgewiki/wiki_main.py b/ForgeWiki/forgewiki/wiki_main.py
index 339f3b8..aa18d58 100644
--- a/ForgeWiki/forgewiki/wiki_main.py
+++ b/ForgeWiki/forgewiki/wiki_main.py
@@ -273,8 +273,8 @@ The wiki uses [Markdown](%s) syntax.
var link = this;
var data = {
_session_id: $.cookie('_session_id'),
- subscribe: '1',
- }
+ subscribe: '1'
+ };
$.post(this.href, data, function(){
$('#messages').notify('Subscribed to wiki.');
$('span', link).text('Unsubscribe');
@@ -286,8 +286,8 @@ The wiki uses [Markdown](%s) syntax.
var link = this;
var data = {
_session_id: $.cookie('_session_id'),
- unsubscribe: '1',
- }
+ unsubscribe: '1'
+ };
$.post(this.href, data, function(){
$('#messages').notify('Unsubscribed.');
$('span', link).text('Subscribe to wiki');