diff --git a/Gemfile_rails_master.lock b/Gemfile_rails_master.lock index 950e1a98513..5917d56c1c1 100644 --- a/Gemfile_rails_master.lock +++ b/Gemfile_rails_master.lock @@ -1,3 +1,15 @@ +GIT + remote: https://github.com/dysania/onebox.git + revision: 6a2f6e6a08f183a4df52f9a51187f566b8ae3a00 + specs: + onebox (1.1.0) + hexpress (~> 1.2) + moneta (~> 0.7) + multi_json (~> 1.7) + mustache (~> 0.99) + nokogiri (~> 1.6.1) + opengraph_parser (~> 0.2.3) + GIT remote: https://github.com/rails/actionpack-action_caching.git revision: a45e97298f6a77a4d74662521715d5656b821f24 @@ -7,47 +19,47 @@ GIT GIT remote: https://github.com/rails/rails.git - revision: 4aae538d9ffff3a00a81f3da52fa70f7fd79ac74 + revision: 3a428f38b2f9a1e995070a4a049645b622c7094a specs: - actionmailer (4.1.0.beta) - actionpack (= 4.1.0.beta) - actionview (= 4.1.0.beta) + actionmailer (4.1.0.beta1) + actionpack (= 4.1.0.beta1) + actionview (= 4.1.0.beta1) mail (~> 2.5.4) - actionpack (4.1.0.beta) - actionview (= 4.1.0.beta) - activesupport (= 4.1.0.beta) + actionpack (4.1.0.beta1) + actionview (= 4.1.0.beta1) + activesupport (= 4.1.0.beta1) rack (~> 1.5.2) rack-test (~> 0.6.2) - actionview (4.1.0.beta) - activesupport (= 4.1.0.beta) - builder (~> 3.1.0) + actionview (4.1.0.beta1) + activesupport (= 4.1.0.beta1) + builder (~> 3.1) erubis (~> 2.7.0) - activemodel (4.1.0.beta) - activesupport (= 4.1.0.beta) - builder (~> 3.1.0) - activerecord (4.1.0.beta) - activemodel (= 4.1.0.beta) - activesupport (= 4.1.0.beta) + activemodel (4.1.0.beta1) + activesupport (= 4.1.0.beta1) + builder (~> 3.1) + activerecord (4.1.0.beta1) + activemodel (= 4.1.0.beta1) + activesupport (= 4.1.0.beta1) arel (~> 5.0.0) - activesupport (4.1.0.beta) - i18n (~> 0.6, >= 0.6.4) + activesupport (4.1.0.beta1) + i18n (~> 0.6, >= 0.6.9) json (~> 1.7, >= 1.7.7) minitest (~> 5.1) thread_safe (~> 0.1) tzinfo (~> 1.1) - rails (4.1.0.beta) - actionmailer (= 4.1.0.beta) - actionpack (= 4.1.0.beta) - actionview (= 4.1.0.beta) - activemodel (= 4.1.0.beta) - activerecord (= 4.1.0.beta) - activesupport (= 4.1.0.beta) + rails (4.1.0.beta1) + actionmailer (= 4.1.0.beta1) + actionpack (= 4.1.0.beta1) + actionview (= 4.1.0.beta1) + activemodel (= 4.1.0.beta1) + activerecord (= 4.1.0.beta1) + activesupport (= 4.1.0.beta1) bundler (>= 1.3.0, < 2.0) - railties (= 4.1.0.beta) + railties (= 4.1.0.beta1) sprockets-rails (~> 2.0.0) - railties (4.1.0.beta) - actionpack (= 4.1.0.beta) - activesupport (= 4.1.0.beta) + railties (4.1.0.beta1) + actionpack (= 4.1.0.beta1) + activesupport (= 4.1.0.beta1) rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) @@ -84,7 +96,7 @@ GEM erubis (>= 2.6.6) binding_of_caller (0.7.2) debug_inspector (>= 0.0.1) - builder (3.1.4) + builder (3.2.2) celluloid (0.15.2) timers (~> 1.1.0) certified (0.1.1) @@ -144,16 +156,15 @@ GEM fspath (2.0.5) given_core (3.1.1) sorcerer (>= 0.3.7) + guess_html_encoding (0.0.9) handlebars-source (1.1.2) hashie (2.0.5) + hexpress (1.2.0) highline (1.6.20) hike (1.2.3) hiredis (0.4.5) - html_truncator (0.3.1) - nokogiri (~> 1.5) httpauth (0.2.0) i18n (0.6.9) - ice_cube (0.11.1) image_optim (0.9.1) exifr (~> 1.1.3) fspath (~> 2.0.5) @@ -186,19 +197,20 @@ GEM metaclass (0.0.1) method_source (0.8.2) mime-types (1.25.1) - mini_portile (0.5.1) - minitest (5.1.0) + mini_portile (0.5.2) + minitest (5.2.2) mocha (0.14.0) metaclass (~> 0.0.1) mock_redis (0.9.0) + moneta (0.7.20) msgpack (0.5.7) - multi_json (1.8.2) + multi_json (1.8.4) multipart-post (1.2.0) mustache (0.99.4) net-scp (1.1.2) net-ssh (>= 2.6.5) net-ssh (2.7.0) - nokogiri (1.6.0) + nokogiri (1.6.1) mini_portile (~> 0.5.0) oauth (0.4.7) oauth2 (0.8.1) @@ -236,6 +248,9 @@ GEM omniauth-twitter (1.0.1) multi_json (~> 1.3) omniauth-oauth (~> 1.0) + opengraph_parser (0.2.3) + addressable + nokogiri openid-redis-store (0.0.2) redis ruby-openid @@ -269,7 +284,7 @@ GEM rails-observers (0.1.2) activemodel (~> 4.0) raindrops (0.12.0) - rake (10.1.0) + rake (10.1.1) rake-compiler (0.9.2) rake rb-fsevent (0.9.3) @@ -281,24 +296,8 @@ GEM trollop (>= 1.16.2) redcarpet (3.0.0) redis (3.0.6) - redis-actionpack (4.0.0) - actionpack (~> 4) - redis-rack (~> 1.5.0) - redis-store (~> 1.1.0) - redis-activesupport (4.0.0) - activesupport (~> 4) - redis-store (~> 1.1.0) redis-namespace (1.3.2) redis (~> 3.0.4) - redis-rack (1.5.0) - rack (~> 1.5) - redis-store (~> 1.1.0) - redis-rails (4.0.0) - redis-actionpack (~> 4) - redis-activesupport (~> 4) - redis-store (~> 1.1.0) - redis-store (1.1.4) - redis (>= 2.2) ref (1.0.5) rest-client (1.6.7) mime-types (>= 1.16) @@ -323,6 +322,9 @@ GEM rspec-mocks (~> 2.14.0) ruby-hmac (0.4.0) ruby-openid (2.3.0) + ruby-readability (0.6.0) + guess_html_encoding (>= 0.0.4) + nokogiri (>= 1.4.2) sanitize (2.0.6) nokogiri (>= 1.4.4) sass (3.2.12) @@ -347,10 +349,7 @@ GEM redis-namespace (>= 1.3.1) sidekiq-failures (0.2.2) sidekiq (>= 2.9.0) - sidetiq (0.4.3) - celluloid (>= 0.14.1) - ice_cube (~> 0.11.0) - sidekiq (~> 2.15.0) + simple-rss (1.3.1) simplecov (0.7.1) multi_json (~> 1.0) simplecov-html (~> 0.7.1) @@ -378,7 +377,7 @@ GEM activesupport (>= 3.0) sprockets (~> 2.8) temple (0.6.7) - therubyracer-discourse (0.12.0) + therubyracer (0.12.1) libv8 (~> 3.16.14.0) ref thin (1.6.1) @@ -436,7 +435,6 @@ DEPENDENCIES handlebars-source (~> 1.1.2) highline hiredis - html_truncator image_optim image_sorcery librarian (>= 0.0.25) @@ -458,6 +456,7 @@ DEPENDENCIES omniauth-oauth2 omniauth-openid omniauth-twitter + onebox! openid-redis-store pg (= 0.15.1) pry-nav @@ -465,7 +464,7 @@ DEPENDENCIES puma qunit-rails rack-cors - rack-mini-profiler (= 0.9.0.pre) + rack-mini-profiler rack-protection rails! rails-observers @@ -476,11 +475,11 @@ DEPENDENCIES rbtrace redcarpet redis - redis-rails rest-client rinku rspec-given rspec-rails + ruby-readability sanitize sass sass-rails @@ -488,12 +487,12 @@ DEPENDENCIES shoulda sidekiq (= 2.15.1) sidekiq-failures - sidetiq (>= 0.3.6) + simple-rss simplecov sinatra slim spork-rails - therubyracer-discourse + therubyracer thin timecop uglifier diff --git a/app/assets/javascripts/admin/controllers/admin_user_controller.js b/app/assets/javascripts/admin/controllers/admin_user_controller.js index c90516fc4fd..c0674fd6d04 100644 --- a/app/assets/javascripts/admin/controllers/admin_user_controller.js +++ b/app/assets/javascripts/admin/controllers/admin_user_controller.js @@ -24,6 +24,8 @@ Discourse.AdminUserIndexController = Discourse.ObjectController.extend({ return Discourse.SiteSettings.must_approve_users; }.property(), + primaryGroupDirty: Discourse.computed.propertyNotEqual('originalPrimaryGroupId', 'primary_group_id'), + actions: { toggleTitleEdit: function() { this.toggleProperty('editingTitle'); @@ -44,6 +46,22 @@ Discourse.AdminUserIndexController = Discourse.ObjectController.extend({ this.get('model').generateApiKey(); }, + savePrimaryGroup: function() { + var self = this; + Discourse.ajax("/admin/users/" + this.get('id') + "/primary_group", { + type: 'PUT', + data: {primary_group_id: this.get('primary_group_id')} + }).then(function () { + self.set('originalPrimaryGroupId', self.get('primary_group_id')); + }).catch(function() { + bootbox.alert(I18n.t('generic_error')); + }); + }, + + resetPrimaryGroup: function() { + this.set('primary_group_id', this.get('originalPrimaryGroupId')); + }, + regenerateApiKey: function() { var self = this; bootbox.confirm(I18n.t("admin.api.confirm_regen"), I18n.t("no_value"), I18n.t("yes_value"), function(result) { diff --git a/app/assets/javascripts/admin/models/admin_dashboard.js b/app/assets/javascripts/admin/models/admin_dashboard.js index 14b03e8494d..4aaf0984687 100644 --- a/app/assets/javascripts/admin/models/admin_dashboard.js +++ b/app/assets/javascripts/admin/models/admin_dashboard.js @@ -19,7 +19,7 @@ Discourse.AdminDashboard.reopenClass({ @return {jqXHR} a jQuery Promise object **/ find: function() { - return Discourse.ajax("/admin/dashboard").then(function(json) { + return Discourse.ajax("/admin/dashboard.json").then(function(json) { var model = Discourse.AdminDashboard.create(json); model.set('loaded', true); return model; @@ -34,7 +34,7 @@ Discourse.AdminDashboard.reopenClass({ @return {jqXHR} a jQuery Promise object **/ fetchProblems: function() { - return Discourse.ajax("/admin/dashboard/problems", { + return Discourse.ajax("/admin/dashboard/problems.json", { type: 'GET', dataType: 'json' }).then(function(json) { diff --git a/app/assets/javascripts/admin/models/admin_user.js b/app/assets/javascripts/admin/models/admin_user.js index a55873a619e..068eec8aa18 100644 --- a/app/assets/javascripts/admin/models/admin_user.js +++ b/app/assets/javascripts/admin/models/admin_user.js @@ -388,7 +388,7 @@ Discourse.AdminUser.reopenClass({ }, find: function(username) { - return Discourse.ajax("/admin/users/" + username).then(function (result) { + return Discourse.ajax("/admin/users/" + username + ".json").then(function (result) { result.loadedDetails = true; return Discourse.AdminUser.create(result); }); diff --git a/app/assets/javascripts/admin/routes/admin_user_route.js b/app/assets/javascripts/admin/routes/admin_user_route.js index 4a2086c7db4..f3e74174c03 100644 --- a/app/assets/javascripts/admin/routes/admin_user_route.js +++ b/app/assets/javascripts/admin/routes/admin_user_route.js @@ -23,10 +23,16 @@ Discourse.AdminUserRoute = Discourse.Route.extend({ afterModel: function(adminUser) { var controller = this.controllerFor('adminUser'); - adminUser.loadDetails().then(function () { + return adminUser.loadDetails().then(function () { adminUser.setOriginalTrustLevel(); controller.set('model', adminUser); - window.scrollTo(0, 0); + }); + }, + + setupController: function(controller, model) { + controller.setProperties({ + originalPrimaryGroupId: model.get('primary_group_id'), + model: model }); }, diff --git a/app/assets/javascripts/admin/templates/user_index.js.handlebars b/app/assets/javascripts/admin/templates/user_index.js.handlebars index a764d4cf322..37383757ec9 100644 --- a/app/assets/javascripts/admin/templates/user_index.js.handlebars +++ b/app/assets/javascripts/admin/templates/user_index.js.handlebars @@ -46,6 +46,25 @@ +