diff --git a/assets/javascripts/discourse/components/query-result.js.es6 b/assets/javascripts/discourse/components/query-result.js.es6 index e795133..116dd83 100644 --- a/assets/javascripts/discourse/components/query-result.js.es6 +++ b/assets/javascripts/discourse/components/query-result.js.es6 @@ -46,8 +46,8 @@ const QueryResultComponent = Ember.Component.extend({ columnHandlers: function() { const self = this; - if (!this.get('content')) { - return; + if (!this.get('columns')) { + return []; } if (self.get('opts.notransform')) { return this.get('columns').map(function(colName) { diff --git a/assets/javascripts/discourse/controllers/admin-plugins-explorer.js.es6 b/assets/javascripts/discourse/controllers/admin-plugins-explorer.js.es6 index 47ffd0c..f7085aa 100644 --- a/assets/javascripts/discourse/controllers/admin-plugins-explorer.js.es6 +++ b/assets/javascripts/discourse/controllers/admin-plugins-explorer.js.es6 @@ -35,6 +35,14 @@ export default Ember.ArrayController.extend({ this.set('results', null); }, + not_https: function() { + return !( + window.location.protocol === "https:" || + window.location.hostname === "localhost" || + window.location.hostname.endsWith(".local") + ); + }.property(), + actions: { dummy() {}, diff --git a/assets/javascripts/discourse/templates/admin/plugins-explorer.hbs b/assets/javascripts/discourse/templates/admin/plugins-explorer.hbs index 3d1396f..be3cee2 100644 --- a/assets/javascripts/discourse/templates/admin/plugins-explorer.hbs +++ b/assets/javascripts/discourse/templates/admin/plugins-explorer.hbs @@ -1,5 +1,12 @@ <h2>Queries</h2> +{{#if not_https}} + <div class="https-warning"> + {{fa-icon "warning"}} + {{i18n "explorer.https_warning"}} + </div> +{{/if}} + <div class="query-list"> {{combo-box valueAttribute="id" value=selectedQueryId nameProperty="listName" content=content castInteger="true" nameChanges="true"}} {{d-button action="showCreate" icon="plus" class="no-text"}} @@ -19,8 +26,6 @@ {{partial "admin/plugins-explorer-show" model=selectedItem}} </div> -{{conditional-loading-spinner condition=loading}} - <div class="query-run"> {{#if selectedItem.param_names}} <div class="query-params"> @@ -44,6 +49,8 @@ <hr> +{{conditional-loading-spinner condition=loading}} + {{#if results}} <div class="query-results"> {{#if showResults}} diff --git a/assets/stylesheets/explorer.scss b/assets/stylesheets/explorer.scss index 7b5c041..10bfef8 100644 --- a/assets/stylesheets/explorer.scss +++ b/assets/stylesheets/explorer.scss @@ -1,4 +1,6 @@ - +.https-warning { + color: $danger; +} .query-list { margin: 10px 0; } @@ -47,6 +49,6 @@ } } -.query-list, .query-edit, .query-results, .query-params { +.query-list, .query-edit, .query-results, .query-params, .https-warning { margin: 10px 0; } diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 1484ea8..6b747d4 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -40,3 +40,4 @@ en: explain_label: "Include query plan?" save_params: "Set Defaults" reset_params: "Reset" + https_warning: "Use of the Data Explorer on sites not protected by HTTPS is discouraged. Please be careful to not retrieve sensitive information over insecure links." diff --git a/plugin.rb b/plugin.rb index 876f4b7..6a2d610 100644 --- a/plugin.rb +++ b/plugin.rb @@ -80,11 +80,9 @@ after_initialize do query_args = (query.qopts[:defaults] || {}).with_indifferent_access.merge(params) # Rudimentary types - query_args.map! do |arg| + query_args.each do |k, arg| if arg =~ /\A\d+\z/ - arg.to_i - else - arg + query_args[k] = arg.to_i end end