From 593f5df5031fee1921a3bdfc59e9fb016f4f5013 Mon Sep 17 00:00:00 2001 From: riking <rikingcoding@gmail.com> Date: Tue, 18 Mar 2014 18:19:20 -0700 Subject: [PATCH 1/8] Corrections to JSDoc --- .../admin/controllers/admin_api_controller.js | 4 ++-- app/assets/javascripts/admin/models/api_key.js | 2 +- .../javascripts/admin/routes/admin_backups_route.js | 4 ++-- .../javascripts/discourse/dialects/bbcode_dialect.js | 9 ++++++++- app/assets/javascripts/discourse/dialects/dialect.js | 6 +++--- app/assets/javascripts/discourse/lib/markdown.js | 9 ++++++--- app/assets/javascripts/discourse/lib/utilities.js | 2 +- .../javascripts/discourse/mixins/modal_functionality.js | 3 ++- app/assets/javascripts/discourse/models/post_stream.js | 5 ++--- app/assets/javascripts/discourse/models/topic_list.js | 6 +++--- app/assets/javascripts/discourse/models/user.js | 4 +++- app/assets/javascripts/discourse/views/container_view.js | 4 ++-- 12 files changed, 35 insertions(+), 23 deletions(-) diff --git a/app/assets/javascripts/admin/controllers/admin_api_controller.js b/app/assets/javascripts/admin/controllers/admin_api_controller.js index 8a0861c6e..856c39c3d 100644 --- a/app/assets/javascripts/admin/controllers/admin_api_controller.js +++ b/app/assets/javascripts/admin/controllers/admin_api_controller.js @@ -25,7 +25,7 @@ Discourse.AdminApiController = Ember.ArrayController.extend({ Creates an API key instance with internal user object @method regenerateKey - @param {Discourse.ApiKey} the key to regenerate + @param {Discourse.ApiKey} key the key to regenerate **/ regenerateKey: function(key) { bootbox.confirm(I18n.t("admin.api.confirm_regen"), I18n.t("no_value"), I18n.t("yes_value"), function(result) { @@ -39,7 +39,7 @@ Discourse.AdminApiController = Ember.ArrayController.extend({ Revokes an API key @method revokeKey - @param {Discourse.ApiKey} the key to revoke + @param {Discourse.ApiKey} key the key to revoke **/ revokeKey: function(key) { var self = this; diff --git a/app/assets/javascripts/admin/models/api_key.js b/app/assets/javascripts/admin/models/api_key.js index 4c21df9a5..409688558 100644 --- a/app/assets/javascripts/admin/models/api_key.js +++ b/app/assets/javascripts/admin/models/api_key.js @@ -40,7 +40,7 @@ Discourse.ApiKey.reopenClass({ Creates an API key instance with internal user object @method create - @param {Object} the properties to create + @param {...} var_args the properties to initialize this with @returns {Discourse.ApiKey} the ApiKey instance **/ create: function() { diff --git a/app/assets/javascripts/admin/routes/admin_backups_route.js b/app/assets/javascripts/admin/routes/admin_backups_route.js index 74cd765c6..deadc2407 100644 --- a/app/assets/javascripts/admin/routes/admin_backups_route.js +++ b/app/assets/javascripts/admin/routes/admin_backups_route.js @@ -69,7 +69,7 @@ Discourse.AdminBackupsRoute = Discourse.Route.extend({ Destroys a backup @method destroyBackup - @param {Discourse.Backup} the backup to destroy + @param {Discourse.Backup} backup the backup to destroy **/ destroyBackup: function(backup) { var self = this; @@ -91,7 +91,7 @@ Discourse.AdminBackupsRoute = Discourse.Route.extend({ Start a restore and redirect the user to the logs tab @method startRestore - @param {Discourse.Backup} the backup to restore + @param {Discourse.Backup} backup the backup to restore **/ startRestore: function(backup) { var self = this; diff --git a/app/assets/javascripts/discourse/dialects/bbcode_dialect.js b/app/assets/javascripts/discourse/dialects/bbcode_dialect.js index 51357be81..d47698d8b 100644 --- a/app/assets/javascripts/discourse/dialects/bbcode_dialect.js +++ b/app/assets/javascripts/discourse/dialects/bbcode_dialect.js @@ -4,7 +4,14 @@ @method replaceBBCode @param {tag} tag the tag we want to match @param {function} emitter the function that creates JsonML for the tag - @param {Object} hash of options to pass to `inlineBetween` + @param {Object} opts options to pass to Discourse.Dialect.inlineBetween + @param {Function} [opts.emitter] The function that will be called with the contents and returns JsonML. + @param {String} [opts.start] The starting token we want to find + @param {String} [opts.stop] The ending token we want to find + @param {String} [opts.between] A shortcut for when the `start` and `stop` are the same. + @param {Boolean} [opts.rawContents] If true, the contents between the tokens will not be parsed. + @param {Boolean} [opts.wordBoundary] If true, the match must be on a word boundary + @param {Boolean} [opts.spaceBoundary] If true, the match must be on a sppace boundary **/ function replaceBBCode(tag, emitter, opts) { opts = opts || {}; diff --git a/app/assets/javascripts/discourse/dialects/dialect.js b/app/assets/javascripts/discourse/dialects/dialect.js index cf12fc64d..d3d35b645 100644 --- a/app/assets/javascripts/discourse/dialects/dialect.js +++ b/app/assets/javascripts/discourse/dialects/dialect.js @@ -143,6 +143,7 @@ Discourse.Dialect = { @method cook @param {String} text the raw text to cook + @param {Object} opts hash of options @returns {String} the cooked text **/ cook: function(text, opts) { @@ -288,9 +289,8 @@ Discourse.Dialect = { the other helpers such as `replaceBlock` so consider using them first! @method registerBlock - @param {String} the name of the block handler - @param {Function} the handler - + @param {String} name the name of the block handler + @param {Function} handler the handler **/ registerBlock: function(name, handler) { dialect.block[name] = handler; diff --git a/app/assets/javascripts/discourse/lib/markdown.js b/app/assets/javascripts/discourse/lib/markdown.js index a2bdfde35..00748dfae 100644 --- a/app/assets/javascripts/discourse/lib/markdown.js +++ b/app/assets/javascripts/discourse/lib/markdown.js @@ -13,10 +13,10 @@ Discourse.Markdown = { validIframes: [], /** - Whitelists classes for sanitization + Whitelists more classes for sanitization. + @param {...String} var_args Classes to whitelist @method whiteListClass - @param {String} val The value to whitelist. Can supply more than one argument **/ whiteListClass: function() { var args = Array.prototype.slice.call(arguments), @@ -113,7 +113,10 @@ Discourse.Markdown = { Checks to see if a URL is allowed in the cooked content @method urlAllowed - @param {String} url Url to check + @param {String} uri Url to check + @param {Number} effect ignored + @param {Number} ltype ignored + @param {Object} hints an object with hints, used to check if this url is from an iframe @return {String} url to insert in the cooked content **/ urlAllowed: function (uri, effect, ltype, hints) { diff --git a/app/assets/javascripts/discourse/lib/utilities.js b/app/assets/javascripts/discourse/lib/utilities.js index 0e4e91352..71dbe1952 100644 --- a/app/assets/javascripts/discourse/lib/utilities.js +++ b/app/assets/javascripts/discourse/lib/utilities.js @@ -210,7 +210,7 @@ Discourse.Utilities = { Check the extension of the file against the list of authorized extensions @method isAuthorizedUpload - @param {File} files The file we want to upload + @param {File} file The file we want to upload **/ isAuthorizedUpload: function(file) { var extensions = Discourse.SiteSettings.authorized_extensions; diff --git a/app/assets/javascripts/discourse/mixins/modal_functionality.js b/app/assets/javascripts/discourse/mixins/modal_functionality.js index acb228204..8cb98fc86 100644 --- a/app/assets/javascripts/discourse/mixins/modal_functionality.js +++ b/app/assets/javascripts/discourse/mixins/modal_functionality.js @@ -13,7 +13,8 @@ Discourse.ModalFunctionality = Em.Mixin.create({ Flash a message at the top of the modal @method blank - @param {String} name the name of the property we want to check + @param {String} message I18n name of the message + @param {String} messageClass CSS class to apply @return {Boolean} **/ flash: function(message, messageClass) { diff --git a/app/assets/javascripts/discourse/models/post_stream.js b/app/assets/javascripts/discourse/models/post_stream.js index c66f1a82d..90e78859c 100644 --- a/app/assets/javascripts/discourse/models/post_stream.js +++ b/app/assets/javascripts/discourse/models/post_stream.js @@ -179,7 +179,6 @@ Discourse.PostStream = Em.Object.extend({ Cancel any active filters on the stream. @method cancelFilter - @returns {Ember.Deferred} a promise that resolves when the filter has been cancelled. **/ cancelFilter: function() { this.set('summary', false); @@ -373,8 +372,8 @@ Discourse.PostStream = Em.Object.extend({ `undoPost` when it fails. @method stagePost - @param {Discourse.Post} the post to stage in the stream - @param {Discourse.User} the user creating the post + @param {Discourse.Post} post the post to stage in the stream + @param {Discourse.User} user the user creating the post **/ stagePost: function(post, user) { diff --git a/app/assets/javascripts/discourse/models/topic_list.js b/app/assets/javascripts/discourse/models/topic_list.js index 7c8b2e07f..5c2d1b1cd 100644 --- a/app/assets/javascripts/discourse/models/topic_list.js +++ b/app/assets/javascripts/discourse/models/topic_list.js @@ -162,7 +162,7 @@ Discourse.TopicList.reopenClass({ Stitch together side loaded topic data @method topicsFrom - @param {Object} JSON object with topic data + @param {Object} result JSON object with topic data @returns {Array} the list of topics **/ topicsFrom: function(result) { @@ -204,8 +204,8 @@ Discourse.TopicList.reopenClass({ Lists topics on a given menu item @method list - @param {Object} The menu item to filter to - @param {Object} Any additional params + @param {Object} filter The menu item to filter to + @param {Object} params Any additional params to pass to TopicList.find() @returns {Promise} a promise that resolves to the list of topics **/ list: function(filter, params) { diff --git a/app/assets/javascripts/discourse/models/user.js b/app/assets/javascripts/discourse/models/user.js index c09e53feb..e253b0c47 100644 --- a/app/assets/javascripts/discourse/models/user.js +++ b/app/assets/javascripts/discourse/models/user.js @@ -461,6 +461,7 @@ Discourse.User.reopenClass(Discourse.Singleton, { @method checkUsername @param {String} username A username to check @param {String} email An email address to check + @param {Number} forUserId user id - provide when changing username **/ checkUsername: function(username, email, forUserId) { return Discourse.ajax('/users/check_username', { @@ -472,7 +473,7 @@ Discourse.User.reopenClass(Discourse.Singleton, { Groups the user's statistics @method groupStats - @param {Array} Given stats + @param {Array} stats Given stats @returns {Object} **/ groupStats: function(stats) { @@ -507,6 +508,7 @@ Discourse.User.reopenClass(Discourse.Singleton, { @param {String} name This user's name @param {String} email This user's email @param {String} password This user's password + @param {String} username This user's username @param {String} passwordConfirm This user's confirmed password @param {String} challenge @returns Result of ajax call diff --git a/app/assets/javascripts/discourse/views/container_view.js b/app/assets/javascripts/discourse/views/container_view.js index 580a690b7..65b3e70ae 100644 --- a/app/assets/javascripts/discourse/views/container_view.js +++ b/app/assets/javascripts/discourse/views/container_view.js @@ -14,7 +14,7 @@ Discourse.ContainerView = Ember.ContainerView.extend(Discourse.Presence, { @method attachViewWithArgs @param {Object} viewArgs The arguments to pass when creating the view - @param {Class} klass The view class we want to create + @param {Class} viewClass The view class we want to create **/ attachViewWithArgs: function(viewArgs, viewClass) { if (!viewClass) { viewClass = Ember.View.extend(); } @@ -26,7 +26,7 @@ Discourse.ContainerView = Ember.ContainerView.extend(Discourse.Presence, { Attaches a view with no arguments and wires up the container properly @method attachViewClass - @param {Class} klass The view class we want to create + @param {Class} viewClass The view class we want to add **/ attachViewClass: function(viewClass) { this.attachViewWithArgs(null, viewClass); From 3f35d1062e2d1f5a65505be1d15a5c3b76c2455b Mon Sep 17 00:00:00 2001 From: riking <rikingcoding@gmail.com> Date: Tue, 18 Mar 2014 18:21:10 -0700 Subject: [PATCH 2/8] Remove trailing commas, add trailing semicolons --- .../admin/controllers/admin_backups_controller.js | 2 +- .../admin/controllers/admin_backups_index_controller.js | 3 +-- .../admin/controllers/admin_backups_logs_controller.js | 2 +- .../admin/controllers/admin_email_logs_controllers.js | 6 ++---- app/assets/javascripts/admin/models/backup.js | 3 +-- app/assets/javascripts/admin/models/backup_status.js | 3 +-- app/assets/javascripts/admin/routes/admin_backups_route.js | 5 ++--- app/assets/javascripts/admin/views/admin_customize_view.js | 2 +- .../discourse/controllers/_discovery_controller.js | 2 +- .../javascripts/discourse/controllers/group_controller.js | 2 +- app/assets/javascripts/discourse/lib/computed.js | 2 +- app/assets/javascripts/discourse/mixins/scroll_top.js | 3 +-- app/assets/javascripts/discourse/models/category_list.js | 2 +- app/assets/javascripts/discourse/models/top_list.js | 2 +- .../discourse/routes/discovery_categories_route.js | 2 +- .../javascripts/discourse/routes/preferences_routes.js | 2 +- .../javascripts/discourse/views/composer/composer_view.js | 2 +- app/assets/javascripts/locales/cs.js.erb | 2 +- app/assets/javascripts/locales/ru.js.erb | 2 +- 19 files changed, 21 insertions(+), 28 deletions(-) diff --git a/app/assets/javascripts/admin/controllers/admin_backups_controller.js b/app/assets/javascripts/admin/controllers/admin_backups_controller.js index 600f02a78..ccfa5a8a0 100644 --- a/app/assets/javascripts/admin/controllers/admin_backups_controller.js +++ b/app/assets/javascripts/admin/controllers/admin_backups_controller.js @@ -1,5 +1,5 @@ Discourse.AdminBackupsController = Ember.ObjectController.extend({ noOperationIsRunning: Em.computed.not("isOperationRunning"), rollbackEnabled: Em.computed.and("canRollback", "restoreEnabled", "noOperationIsRunning"), - rollbackDisabled: Em.computed.not("rollbackEnabled"), + rollbackDisabled: Em.computed.not("rollbackEnabled") }); diff --git a/app/assets/javascripts/admin/controllers/admin_backups_index_controller.js b/app/assets/javascripts/admin/controllers/admin_backups_index_controller.js index c505e177e..1867b2527 100644 --- a/app/assets/javascripts/admin/controllers/admin_backups_index_controller.js +++ b/app/assets/javascripts/admin/controllers/admin_backups_index_controller.js @@ -71,6 +71,5 @@ Discourse.AdminBackupsIndexController = Ember.ArrayController.extend({ }).then(function() { Discourse.set("isReadOnly", enable); }); - }, - + } }); diff --git a/app/assets/javascripts/admin/controllers/admin_backups_logs_controller.js b/app/assets/javascripts/admin/controllers/admin_backups_logs_controller.js index 1a9f8e7cc..1e4fd13ae 100644 --- a/app/assets/javascripts/admin/controllers/admin_backups_logs_controller.js +++ b/app/assets/javascripts/admin/controllers/admin_backups_logs_controller.js @@ -1,4 +1,4 @@ Discourse.AdminBackupsLogsController = Ember.ArrayController.extend({ needs: ["adminBackups"], - status: Em.computed.alias("controllers.adminBackups"), + status: Em.computed.alias("controllers.adminBackups") }); diff --git a/app/assets/javascripts/admin/controllers/admin_email_logs_controllers.js b/app/assets/javascripts/admin/controllers/admin_email_logs_controllers.js index 356b25549..449104c05 100644 --- a/app/assets/javascripts/admin/controllers/admin_email_logs_controllers.js +++ b/app/assets/javascripts/admin/controllers/admin_email_logs_controllers.js @@ -13,8 +13,7 @@ Discourse.AdminEmailSentController = Discourse.Controller.extend({ Discourse.EmailLog.findAll(this.get("filter")).then(function(logs) { self.set("model", logs); }); - }, 250).observes("filter.user", "filter.address", "filter.type", "filter.reply_key"), - + }, 250).observes("filter.user", "filter.address", "filter.type", "filter.reply_key") }); /** @@ -32,8 +31,7 @@ Discourse.AdminEmailSkippedController = Discourse.Controller.extend({ Discourse.EmailLog.findAll(this.get("filter")).then(function(logs) { self.set("model", logs); }); - }, 250).observes("filter.user", "filter.address", "filter.type", "filter.skipped_reason"), - + }, 250).observes("filter.user", "filter.address", "filter.type", "filter.skipped_reason") }); diff --git a/app/assets/javascripts/admin/models/backup.js b/app/assets/javascripts/admin/models/backup.js index 48cbe0e9d..28a6115a8 100644 --- a/app/assets/javascripts/admin/models/backup.js +++ b/app/assets/javascripts/admin/models/backup.js @@ -85,6 +85,5 @@ Discourse.Backup.reopenClass({ window.location.pathname = Discourse.getURL("/"); } }); - }, - + } }); diff --git a/app/assets/javascripts/admin/models/backup_status.js b/app/assets/javascripts/admin/models/backup_status.js index 1127b5c86..c11c87581 100644 --- a/app/assets/javascripts/admin/models/backup_status.js +++ b/app/assets/javascripts/admin/models/backup_status.js @@ -12,6 +12,5 @@ Discourse.BackupStatus = Discourse.Model.extend({ restoreEnabled: function() { return Discourse.SiteSettings.allow_restore && !this.get("isOperationRunning"); - }.property("isOperationRunning"), - + }.property("isOperationRunning") }); diff --git a/app/assets/javascripts/admin/routes/admin_backups_route.js b/app/assets/javascripts/admin/routes/admin_backups_route.js index deadc2407..bed160c63 100644 --- a/app/assets/javascripts/admin/routes/admin_backups_route.js +++ b/app/assets/javascripts/admin/routes/admin_backups_route.js @@ -31,7 +31,7 @@ Discourse.AdminBackupsRoute = Discourse.Route.extend({ }).then(function (status) { return Discourse.BackupStatus.create({ isOperationRunning: status.is_operation_running, - canRollback: status.can_rollback, + canRollback: status.can_rollback }); }); }, @@ -160,7 +160,6 @@ Discourse.AdminBackupsRoute = Discourse.Route.extend({ uploadError: function(filename, message) { bootbox.alert(I18n.t("admin.backups.upload.error", { filename: filename, message: message })); - }, + } } - }); diff --git a/app/assets/javascripts/admin/views/admin_customize_view.js b/app/assets/javascripts/admin/views/admin_customize_view.js index 83fc6961e..767559bf7 100644 --- a/app/assets/javascripts/admin/views/admin_customize_view.js +++ b/app/assets/javascripts/admin/views/admin_customize_view.js @@ -22,7 +22,7 @@ Discourse.AdminCustomizeView = Discourse.View.extend({ selectStylesheet: function() { this.set('selected', 'stylesheet'); }, selectMobileHeader: function() { this.set('selected', 'mobileHeader'); }, - selectMobileStylesheet: function() { this.set('selected', 'mobileStylesheet'); }, + selectMobileStylesheet: function() { this.set('selected', 'mobileStylesheet'); } }, didInsertElement: function() { diff --git a/app/assets/javascripts/discourse/controllers/_discovery_controller.js b/app/assets/javascripts/discourse/controllers/_discovery_controller.js index 0613340ed..fe94813e5 100644 --- a/app/assets/javascripts/discourse/controllers/_discovery_controller.js +++ b/app/assets/javascripts/discourse/controllers/_discovery_controller.js @@ -20,5 +20,5 @@ Discourse.DiscoveryController = Discourse.ObjectController.extend({ showMoreDailyUrl: function() { return this.showMoreUrl('daily'); }.property('category', 'noSubcategories'), showMoreWeeklyUrl: function() { return this.showMoreUrl('weekly'); }.property('category', 'noSubcategories'), showMoreMonthlyUrl: function() { return this.showMoreUrl('monthly'); }.property('category', 'noSubcategories'), - showMoreYearlyUrl: function() { return this.showMoreUrl('yearly'); }.property('category', 'noSubcategories'), + showMoreYearlyUrl: function() { return this.showMoreUrl('yearly'); }.property('category', 'noSubcategories') }); diff --git a/app/assets/javascripts/discourse/controllers/group_controller.js b/app/assets/javascripts/discourse/controllers/group_controller.js index 8d7d193ec..2d7b0ff7d 100644 --- a/app/assets/javascripts/discourse/controllers/group_controller.js +++ b/app/assets/javascripts/discourse/controllers/group_controller.js @@ -12,6 +12,6 @@ Discourse.GroupController = Discourse.ObjectController.extend({ // It would be nice if bootstrap marked action lists as selected when their links // were 'active' not the `li` tags. showingIndex: Em.computed.equal('showing', 'index'), - showingMembers: Em.computed.equal('showing', 'members'), + showingMembers: Em.computed.equal('showing', 'members') }); diff --git a/app/assets/javascripts/discourse/lib/computed.js b/app/assets/javascripts/discourse/lib/computed.js index 5dab103d7..952a508dc 100644 --- a/app/assets/javascripts/discourse/lib/computed.js +++ b/app/assets/javascripts/discourse/lib/computed.js @@ -110,6 +110,6 @@ Discourse.computed = { }); }); return computed.property.apply(computed, args); - }, + } }; diff --git a/app/assets/javascripts/discourse/mixins/scroll_top.js b/app/assets/javascripts/discourse/mixins/scroll_top.js index b9c7c68cc..da92d81bf 100644 --- a/app/assets/javascripts/discourse/mixins/scroll_top.js +++ b/app/assets/javascripts/discourse/mixins/scroll_top.js @@ -12,7 +12,6 @@ Discourse.ScrollTop = Em.Mixin.create({ Em.run.schedule('afterRender', function() { $(document).scrollTop(0); }); - }.on('didInsertElement'), - + }.on('didInsertElement') }); diff --git a/app/assets/javascripts/discourse/models/category_list.js b/app/assets/javascripts/discourse/models/category_list.js index 69ac54451..5048316ed 100644 --- a/app/assets/javascripts/discourse/models/category_list.js +++ b/app/assets/javascripts/discourse/models/category_list.js @@ -66,7 +66,7 @@ Discourse.CategoryList.reopenClass({ can_create_category: result.category_list.can_create_category, can_create_topic: result.category_list.can_create_topic, draft_key: result.category_list.draft_key, - draft_sequence: result.category_list.draft_sequence, + draft_sequence: result.category_list.draft_sequence }); }); } diff --git a/app/assets/javascripts/discourse/models/top_list.js b/app/assets/javascripts/discourse/models/top_list.js index 3b05f67d1..a7a607862 100644 --- a/app/assets/javascripts/discourse/models/top_list.js +++ b/app/assets/javascripts/discourse/models/top_list.js @@ -19,7 +19,7 @@ Discourse.TopList.reopenClass({ can_create_topic: result.can_create_topic, draft: result.draft, draft_key: result.draft_key, - draft_sequence: result.draft_sequence, + draft_sequence: result.draft_sequence }); Discourse.Site.currentProp('periods').forEach(function(period) { diff --git a/app/assets/javascripts/discourse/routes/discovery_categories_route.js b/app/assets/javascripts/discourse/routes/discovery_categories_route.js index 369156330..42d2cfc78 100644 --- a/app/assets/javascripts/discourse/routes/discovery_categories_route.js +++ b/app/assets/javascripts/discourse/routes/discovery_categories_route.js @@ -45,5 +45,5 @@ Discourse.DiscoveryCategoriesRoute = Discourse.Route.extend({ })); this.controllerFor('editCategory').set('selectedTab', 'general'); } - }, + } }); diff --git a/app/assets/javascripts/discourse/routes/preferences_routes.js b/app/assets/javascripts/discourse/routes/preferences_routes.js index 8ec049e9d..fbf0d63b2 100644 --- a/app/assets/javascripts/discourse/routes/preferences_routes.js +++ b/app/assets/javascripts/discourse/routes/preferences_routes.js @@ -57,7 +57,7 @@ Discourse.PreferencesRoute = Discourse.RestrictedUserRoute.extend({ Discourse.PreferencesIndexRoute = Discourse.RestrictedUserRoute.extend({ renderTemplate: function() { this.render('preferences', { into: 'user', outlet: 'userOutlet', controller: 'preferences' }); - }, + } }); /** diff --git a/app/assets/javascripts/discourse/views/composer/composer_view.js b/app/assets/javascripts/discourse/views/composer/composer_view.js index 38259443b..ee4cb67b8 100644 --- a/app/assets/javascripts/discourse/views/composer/composer_view.js +++ b/app/assets/javascripts/discourse/views/composer/composer_view.js @@ -504,7 +504,7 @@ Discourse.ComposerView = Discourse.View.extend(Ember.Evented, { var $uploadTarget = $('#reply-control'); $uploadTarget.fileupload('destroy'); $uploadTarget.off(); - }, + } }); // not sure if this is the right way, keeping here for now, we could use a mixin perhaps diff --git a/app/assets/javascripts/locales/cs.js.erb b/app/assets/javascripts/locales/cs.js.erb index a251213ee..14a5e7623 100644 --- a/app/assets/javascripts/locales/cs.js.erb +++ b/app/assets/javascripts/locales/cs.js.erb @@ -7,4 +7,4 @@ I18n.pluralizationRules['cs'] = function (n) { if (n == 1) return "one"; if (n >= 2 && n <= 4) return "few"; return "other"; -} +}; diff --git a/app/assets/javascripts/locales/ru.js.erb b/app/assets/javascripts/locales/ru.js.erb index 465531e15..9653f1882 100644 --- a/app/assets/javascripts/locales/ru.js.erb +++ b/app/assets/javascripts/locales/ru.js.erb @@ -7,4 +7,4 @@ I18n.pluralizationRules['ru'] = function (n) { if (n % 10 == 1 && n % 100 != 11) return "one"; if (n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20)) return "few"; return "many"; -} +}; From 86774fa5c1a5bf822b47044e8c75a06fdf18c394 Mon Sep 17 00:00:00 2001 From: riking <rikingcoding@gmail.com> Date: Tue, 18 Mar 2014 18:23:15 -0700 Subject: [PATCH 3/8] Simplify return statements --- .../discourse/controllers/user_invited_controller.js | 3 +-- app/assets/javascripts/discourse/dialects/dialect.js | 9 ++++----- app/assets/javascripts/discourse/lib/formatter.js | 2 +- app/assets/javascripts/discourse/lib/mobile.js | 2 +- app/assets/javascripts/discourse/lib/user_search.js | 3 +-- app/assets/javascripts/discourse/models/composer.js | 8 ++------ app/assets/javascripts/discourse/models/post.js | 5 ++--- app/assets/javascripts/discourse/models/topic.js | 3 +-- 8 files changed, 13 insertions(+), 22 deletions(-) diff --git a/app/assets/javascripts/discourse/controllers/user_invited_controller.js b/app/assets/javascripts/discourse/controllers/user_invited_controller.js index db07e01ea..fac3c5be2 100644 --- a/app/assets/javascripts/discourse/controllers/user_invited_controller.js +++ b/app/assets/javascripts/discourse/controllers/user_invited_controller.js @@ -44,8 +44,7 @@ Discourse.UserInvitedController = Ember.ArrayController.extend({ @property showSearch **/ showSearch: function() { - if (Em.isNone(this.get('searchTerm')) && this.get('model.length') === 0) { return false; } - return true; + return !(Em.isNone(this.get('searchTerm')) && this.get('model.length') === 0); }.property('searchTerm', 'model.length'), /** diff --git a/app/assets/javascripts/discourse/dialects/dialect.js b/app/assets/javascripts/discourse/dialects/dialect.js index d3d35b645..6dfe71cfb 100644 --- a/app/assets/javascripts/discourse/dialects/dialect.js +++ b/app/assets/javascripts/discourse/dialects/dialect.js @@ -120,10 +120,10 @@ function parseTree(tree, path, insideCounts) { **/ function invalidBoundary(args, prev) { - if (!args.wordBoundary && !args.spaceBoundary) { return; } + if (!args.wordBoundary && !args.spaceBoundary) { return false; } var last = prev[prev.length - 1]; - if (typeof last !== "string") { return; } + if (typeof last !== "string") { return false; } if (args.wordBoundary && (last.match(/(\w|\/)$/))) { return true; } if (args.spaceBoundary && (!last.match(/\s$/))) { return true; } @@ -149,10 +149,9 @@ Discourse.Dialect = { cook: function(text, opts) { if (!initialized) { initializeDialects(); } dialect.options = opts; - var tree = parser.toHTMLTree(text, 'Discourse'), - html = parser.renderJsonML(parseTree(tree)); + var tree = parser.toHTMLTree(text, 'Discourse'); - return html; + return parser.renderJsonML(parseTree(tree)); }, /** diff --git a/app/assets/javascripts/discourse/lib/formatter.js b/app/assets/javascripts/discourse/lib/formatter.js index 946aebc3d..337a81f8d 100644 --- a/app/assets/javascripts/discourse/lib/formatter.js +++ b/app/assets/javascripts/discourse/lib/formatter.js @@ -237,7 +237,7 @@ relativeAgeMediumSpan = function(distance, leaveAgo) { relativeAgeMedium = function(date, options){ var displayDate, fiveDaysAgo, oneMinuteAgo, fullReadable, leaveAgo; - var wrapInSpan = options.wrapInSpan === false ? false : true; + var wrapInSpan = options.wrapInSpan !== false; leaveAgo = options.leaveAgo; var distance = Math.round((new Date() - date) / 1000); diff --git a/app/assets/javascripts/discourse/lib/mobile.js b/app/assets/javascripts/discourse/lib/mobile.js index c1b904970..902053b71 100644 --- a/app/assets/javascripts/discourse/lib/mobile.js +++ b/app/assets/javascripts/discourse/lib/mobile.js @@ -14,7 +14,7 @@ Discourse.Mobile = { this.mobileView = $html.hasClass('mobile-view'); if (localStorage && localStorage.mobileView) { - var savedValue = (localStorage.mobileView === 'true' ? true : false); + var savedValue = (localStorage.mobileView === 'true'); if (savedValue !== this.mobileView) { this.reloadPage(savedValue); } diff --git a/app/assets/javascripts/discourse/lib/user_search.js b/app/assets/javascripts/discourse/lib/user_search.js index c0a11c80f..c9756046c 100644 --- a/app/assets/javascripts/discourse/lib/user_search.js +++ b/app/assets/javascripts/discourse/lib/user_search.js @@ -54,8 +54,7 @@ Discourse.UserSearch = { users.push(u); results.push(u); } - if (results.length > limit) return false; - return true; + return results.length <= limit; }); _.each(r.groups,function(g) { diff --git a/app/assets/javascripts/discourse/models/composer.js b/app/assets/javascripts/discourse/models/composer.js index f05797533..4416bf5c0 100644 --- a/app/assets/javascripts/discourse/models/composer.js +++ b/app/assets/javascripts/discourse/models/composer.js @@ -126,14 +126,10 @@ Discourse.Composer = Discourse.Model.extend({ // reply is always required if (this.get('missingReplyCharacters') > 0) return true; - if (this.get('canCategorize') && + return this.get('canCategorize') && !Discourse.SiteSettings.allow_uncategorized_topics && !this.get('categoryId') && - !Discourse.User.currentProp('staff')) { - return true; - } - - return false; + !Discourse.User.currentProp('staff'); }.property('loading', 'canEditTitle', 'titleLength', 'targetUsernames', 'replyLength', 'categoryId', 'missingReplyCharacters'), /** diff --git a/app/assets/javascripts/discourse/models/post.js b/app/assets/javascripts/discourse/models/post.js index f681d1f47..a41377b15 100644 --- a/app/assets/javascripts/discourse/models/post.js +++ b/app/assets/javascripts/discourse/models/post.js @@ -103,11 +103,10 @@ Discourse.Post = Discourse.Model.extend({ }.property('updated_at'), flagsAvailable: function() { - var post = this, - flags = Discourse.Site.currentProp('flagTypes').filter(function(item) { + var post = this; + return Discourse.Site.currentProp('flagTypes').filter(function(item) { return post.get("actionByName." + (item.get('name_key')) + ".can_act"); }); - return flags; }.property('actions_summary.@each.can_act'), actionsHistory: function() { diff --git a/app/assets/javascripts/discourse/models/topic.js b/app/assets/javascripts/discourse/models/topic.js index ca4858cd4..bb7b60fe6 100644 --- a/app/assets/javascripts/discourse/models/topic.js +++ b/app/assets/javascripts/discourse/models/topic.js @@ -168,8 +168,7 @@ Discourse.Topic = Discourse.Model.extend({ if (!wordCount) return; // Avg for 500 words per minute when you account for skimming - var minutes = Math.floor(wordCount / 500.0); - return minutes; + return Math.floor(wordCount / 500.0); }.property('word_count'), toggleStar: function() { From 834a721bbe18e2e062b9cb01e1cc814c010b2f24 Mon Sep 17 00:00:00 2001 From: riking <rikingcoding@gmail.com> Date: Tue, 18 Mar 2014 18:24:36 -0700 Subject: [PATCH 4/8] Remove two noop backslashes in regexes --- .../discourse/components/auto_close_form_component.js | 2 +- app/assets/javascripts/discourse/lib/user_search.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/discourse/components/auto_close_form_component.js b/app/assets/javascripts/discourse/components/auto_close_form_component.js index 2d8e1bbe7..b760c7109 100644 --- a/app/assets/javascripts/discourse/components/auto_close_form_component.js +++ b/app/assets/javascripts/discourse/components/auto_close_form_component.js @@ -8,7 +8,7 @@ Discourse.AutoCloseFormComponent = Ember.Component.extend({ autoCloseChanged: function() { if( this.get('autoCloseTime') && this.get('autoCloseTime').length > 0 ) { - this.set('autoCloseTime', this.get('autoCloseTime').replace(/[^\d-\s\:]/g, '') ); + this.set('autoCloseTime', this.get('autoCloseTime').replace(/[^:\d-\s]/g, '') ); } this.set('autoCloseValid', this.isAutoCloseValid()); }.observes('autoCloseTime'), diff --git a/app/assets/javascripts/discourse/lib/user_search.js b/app/assets/javascripts/discourse/lib/user_search.js index c9756046c..9bf1989c9 100644 --- a/app/assets/javascripts/discourse/lib/user_search.js +++ b/app/assets/javascripts/discourse/lib/user_search.js @@ -35,7 +35,7 @@ Discourse.UserSearch = { var promise = Ember.Deferred.create(); // TODO site setting for allowed regex in username - if (term.match(/[^a-zA-Z0-9\_\.]/)) { + if (term.match(/[^a-zA-Z0-9_\.]/)) { promise.resolve([]); return promise; } From 2ade638d790e259ba21b7e52bc19a29fc98c2f7d Mon Sep 17 00:00:00 2001 From: riking <rikingcoding@gmail.com> Date: Tue, 18 Mar 2014 18:25:29 -0700 Subject: [PATCH 5/8] Remove unused variables --- app/assets/javascripts/discourse/lib/autocomplete.js | 3 +-- app/assets/javascripts/discourse/lib/caret_position.js | 2 -- app/assets/javascripts/discourse/lib/eyeline.js | 4 ---- .../javascripts/discourse/views/actions_history_view.js | 1 + app/jobs/scheduled/poll_mailbox.rb | 2 +- 5 files changed, 3 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/discourse/lib/autocomplete.js b/app/assets/javascripts/discourse/lib/autocomplete.js index f439626b5..fdb424c0e 100644 --- a/app/assets/javascripts/discourse/lib/autocomplete.js +++ b/app/assets/javascripts/discourse/lib/autocomplete.js @@ -271,7 +271,7 @@ $.fn.autocomplete = function(options) { }); return $(this).keydown(function(e) { - var c, caretPosition, i, initial, next, nextIsGood, prev, prevIsGood, stopFound, term, total, userToComplete; + var c, caretPosition, i, initial, next, prev, prevIsGood, stopFound, term, total, userToComplete; if(options.allowAny){ // saves us wiring up a change event as well, keypress is while its pressed @@ -298,7 +298,6 @@ $.fn.autocomplete = function(options) { if ((completeStart === null) && e.which === 8 && options.key) { c = Discourse.Utilities.caretPosition(me[0]); next = me[0].value[c]; - nextIsGood = next === void 0 || /\s/.test(next); c -= 1; initial = c; prevIsGood = true; diff --git a/app/assets/javascripts/discourse/lib/caret_position.js b/app/assets/javascripts/discourse/lib/caret_position.js index 8569d3b76..c08127728 100644 --- a/app/assets/javascripts/discourse/lib/caret_position.js +++ b/app/assets/javascripts/discourse/lib/caret_position.js @@ -71,8 +71,6 @@ $.fn.caretPosition = function(options) { "line-height": important("line-height") }); - before = void 0; - after = void 0; pos = options && (options.pos || options.pos === 0) ? options.pos : getCaret(textarea[0]); val = textarea.val().replace("\r", ""); if (options && options.key) { diff --git a/app/assets/javascripts/discourse/lib/eyeline.js b/app/assets/javascripts/discourse/lib/eyeline.js index 54a0434f5..ded17866e 100644 --- a/app/assets/javascripts/discourse/lib/eyeline.js +++ b/app/assets/javascripts/discourse/lib/eyeline.js @@ -21,7 +21,6 @@ Discourse.Eyeline.prototype.update = function() { docViewBottom = docViewTop + windowHeight, $elements = $(this.selector), atBottom = false, - foundElement = false, bottomOffset = $elements.last().offset(), self = this; @@ -29,9 +28,6 @@ Discourse.Eyeline.prototype.update = function() { atBottom = (bottomOffset.top <= docViewBottom) && (bottomOffset.top >= docViewTop); } - // Whether we've seen any elements in this search - foundElement = false; - return $elements.each(function(i, elem) { var $elem = $(elem), elemTop = $elem.offset().top, diff --git a/app/assets/javascripts/discourse/views/actions_history_view.js b/app/assets/javascripts/discourse/views/actions_history_view.js index 61bb81c01..06ec4b6ac 100644 --- a/app/assets/javascripts/discourse/views/actions_history_view.js +++ b/app/assets/javascripts/discourse/views/actions_history_view.js @@ -47,6 +47,7 @@ Discourse.ActionsHistoryComponent = Em.Component.extend({ var key = 'post.actions.people.' + c.get('actionType.name_key'); if (postUrl) { key = key + "_with_url"; } + // TODO postUrl might be uninitialized? pick a good default buffer.push(" " + I18n.t(key, { icons: iconsHtml, postUrl: postUrl}) + "."); } renderActionIf('usersCollapsed', 'who-acted', c.get('description')); diff --git a/app/jobs/scheduled/poll_mailbox.rb b/app/jobs/scheduled/poll_mailbox.rb index 581ab2193..0b70aa932 100644 --- a/app/jobs/scheduled/poll_mailbox.rb +++ b/app/jobs/scheduled/poll_mailbox.rb @@ -22,7 +22,7 @@ module Jobs begin mail_string = mail.pop Email::Receiver.new(mail_string).process - rescue Email::Receiver::UserNotSufficientTrustLevelError => e + rescue Email::Receiver::UserNotSufficientTrustLevelError # inform the user about the rejection @message = Mail::Message.new(mail_string) clientMessage = RejectionMailer.send_trust_level(@message.from, @message.body) From a871158c80bdebc17b9fea5d93b2667c925883af Mon Sep 17 00:00:00 2001 From: riking <rikingcoding@gmail.com> Date: Tue, 18 Mar 2014 18:26:23 -0700 Subject: [PATCH 6/8] Fix some bad HTML --- .../discourse/templates/choose_topic.js.handlebars | 1 + .../templates/components/category-drop.js.handlebars | 4 ++-- .../discourse/templates/composer/similar_topics.js.handlebars | 2 +- app/assets/javascripts/discourse/views/post_menu_view.js | 3 ++- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/discourse/templates/choose_topic.js.handlebars b/app/assets/javascripts/discourse/templates/choose_topic.js.handlebars index 9632519ea..7f9cbf879 100644 --- a/app/assets/javascripts/discourse/templates/choose_topic.js.handlebars +++ b/app/assets/javascripts/discourse/templates/choose_topic.js.handlebars @@ -12,6 +12,7 @@ <div class='controls'> <label class='radio'> <input type='radio' id="choose-topic-{{unbound id}}" name='choose_topic_id' {{action chooseTopic this target="view"}}>{{title}} + </label> </div> {{/each}} </ul> diff --git a/app/assets/javascripts/discourse/templates/components/category-drop.js.handlebars b/app/assets/javascripts/discourse/templates/components/category-drop.js.handlebars index b9efc8495..36bba0c22 100644 --- a/app/assets/javascripts/discourse/templates/components/category-drop.js.handlebars +++ b/app/assets/javascripts/discourse/templates/components/category-drop.js.handlebars @@ -7,9 +7,9 @@ </a> {{else}} {{#if noSubcategories}} - <a href='#' {{action expand}} class='badge-category home' {{bind-attr style="badgeStyle"}}>{{i18n categories.no_subcategory}}</i></a> + <a href='#' {{action expand}} class='badge-category home' {{bind-attr style="badgeStyle"}}>{{i18n categories.no_subcategory}}</a> {{else}} - <a href='#' {{action expand}} class='badge-category home' {{bind-attr style="badgeStyle"}}>{{allCategoriesLabel}}</i></a> + <a href='#' {{action expand}} class='badge-category home' {{bind-attr style="badgeStyle"}}>{{allCategoriesLabel}}</a> {{/if}} {{/if}} diff --git a/app/assets/javascripts/discourse/templates/composer/similar_topics.js.handlebars b/app/assets/javascripts/discourse/templates/composer/similar_topics.js.handlebars index f79ebc421..c2567e367 100644 --- a/app/assets/javascripts/discourse/templates/composer/similar_topics.js.handlebars +++ b/app/assets/javascripts/discourse/templates/composer/similar_topics.js.handlebars @@ -1,5 +1,5 @@ <a href='#' {{action closeMessage this}} class='close'><i class='fa fa-times-circle'></i></a> -<h3>{{i18n composer.similar_topics}}<h3> +<h3>{{i18n composer.similar_topics}}</h3> <ul class='topics'> {{#each similarTopics}} diff --git a/app/assets/javascripts/discourse/views/post_menu_view.js b/app/assets/javascripts/discourse/views/post_menu_view.js index 11bd20379..d402327bb 100644 --- a/app/assets/javascripts/discourse/views/post_menu_view.js +++ b/app/assets/javascripts/discourse/views/post_menu_view.js @@ -207,7 +207,8 @@ Discourse.PostMenuView = Discourse.View.extend({ } buffer.push("<button title=\"" + tooltip + - "\" data-action=\"bookmark\" class='bookmark'><div class='" + iconClass + + "\" data-action=\"bookmark\" class='" + buttonClass + + "'><div class='" + iconClass + "'></div></button>"); }, From 8136468ec75c93e23383391d0ee5ce861c858961 Mon Sep 17 00:00:00 2001 From: riking <rikingcoding@gmail.com> Date: Tue, 18 Mar 2014 18:27:15 -0700 Subject: [PATCH 7/8] Fix inefficent jQuery usage Some jQueries can be cached and reused. This commit does that. --- .../discourse/views/modal/modal_body_view.js | 5 ++-- .../javascripts/discourse/views/share_view.js | 25 +++++++++++-------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/app/assets/javascripts/discourse/views/modal/modal_body_view.js b/app/assets/javascripts/discourse/views/modal/modal_body_view.js index a1d58f9fb..21c1a84c5 100644 --- a/app/assets/javascripts/discourse/views/modal/modal_body_view.js +++ b/app/assets/javascripts/discourse/views/modal/modal_body_view.js @@ -12,9 +12,10 @@ Discourse.ModalBodyView = Discourse.View.extend({ didInsertElement: function() { var self = this; - $('#discourse-modal').modal('show'); + var $discourseModal = $('#discourse-modal'); - $('#discourse-modal').one("hide", function () { + $discourseModal.modal('show'); + $discourseModal.one("hide", function () { self.get("controller").send("closeModal"); }); diff --git a/app/assets/javascripts/discourse/views/share_view.js b/app/assets/javascripts/discourse/views/share_view.js index 4ca94bdf0..44f07fb1f 100644 --- a/app/assets/javascripts/discourse/views/share_view.js +++ b/app/assets/javascripts/discourse/views/share_view.js @@ -39,8 +39,9 @@ Discourse.ShareView = Discourse.View.extend({ }.observes('controller.link'), didInsertElement: function() { - var shareView = this; - $('html').on('mousedown.outside-share-link', function(e) { + var shareView = this, + $html = $('html'); + $html.on('mousedown.outside-share-link', function(e) { // Use mousedown instead of click so this event is handled before routing occurs when a // link is clicked (which is a click event) while the share dialog is showing. if (shareView.$().has(e.target).length !== 0) { return; } @@ -49,9 +50,10 @@ Discourse.ShareView = Discourse.View.extend({ return true; }); - $('html').on('click.discoure-share-link', '[data-share-url]', function(e) { + $html.on('click.discoure-share-link', '[data-share-url]', function(e) { e.preventDefault(); - var $currentTarget = $(e.currentTarget); + var $currentTarget = $(e.currentTarget), + $shareLink = $('#share-link'); var url = $currentTarget.data('share-url'); var postNumber = $currentTarget.data('post-number'); // Relative urls @@ -60,7 +62,7 @@ Discourse.ShareView = Discourse.View.extend({ url = window.location.protocol + "//" + window.location.host + url; } - var shareLinkWidth = $('#share-link').width(); + var shareLinkWidth = $shareLink.width(); var x = e.pageX - (shareLinkWidth / 2); if (x < 25) { x = 25; @@ -70,12 +72,12 @@ Discourse.ShareView = Discourse.View.extend({ } var header = $('.d-header'); - var y = e.pageY - ($('#share-link').height() + 20); + var y = e.pageY - ($shareLink.height() + 20); if (y < header.offset().top + header.height()) { y = e.pageY + 10; } - $('#share-link').css({ + $shareLink.css({ left: "" + x + "px", top: "" + y + "px" }); @@ -84,7 +86,7 @@ Discourse.ShareView = Discourse.View.extend({ return false; }); - $('html').on('keydown.share-view', function(e){ + $html.on('keydown.share-view', function(e){ if (e.keyCode === 27) { shareView.get('controller').send('close'); } @@ -92,9 +94,10 @@ Discourse.ShareView = Discourse.View.extend({ }, willDestroyElement: function() { - $('html').off('click.discoure-share-link'); - $('html').off('mousedown.outside-share-link'); - $('html').off('keydown.share-view'); + var $html = $('html'); + $html.off('click.discoure-share-link'); + $html.off('mousedown.outside-share-link'); + $html.off('keydown.share-view'); } }); From 4699136d83e52c4018abc9952b7dc1ba8a0fa102 Mon Sep 17 00:00:00 2001 From: riking <rikingcoding@gmail.com> Date: Tue, 18 Mar 2014 18:28:04 -0700 Subject: [PATCH 8/8] Fix this/self usage warning To clarify the intent of using 'this' inside the closure, it is first assigned to a variable. --- app/assets/javascripts/discourse/lib/page_tracker.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/lib/page_tracker.js b/app/assets/javascripts/discourse/lib/page_tracker.js index d8a74a148..cd581ee01 100644 --- a/app/assets/javascripts/discourse/lib/page_tracker.js +++ b/app/assets/javascripts/discourse/lib/page_tracker.js @@ -22,7 +22,8 @@ Discourse.PageTracker = Ember.Object.extend(Ember.Evented, { self = this; router.on('didTransition', function() { - self.trigger('change', this.get('url')); + var router = this; + self.trigger('change', router.get('url')); }); this.set('started', true); }