From 5ae77070009a61e0a6bd2c1218a599e955d429ea Mon Sep 17 00:00:00 2001 From: Robin Ward <robin.ward@gmail.com> Date: Wed, 29 May 2013 15:14:31 -0400 Subject: [PATCH] Refactor: Convert repeated {{view Discourse.xyz}} to registered view helpers --- .../admin/views/ace_editor_view.js | 2 +- .../discourse/components/utilities.js | 13 ------- .../topic_summary/info.js.handlebars | 4 +- .../templates/user/activity.js.handlebars | 6 +-- .../templates/user/preferences.js.handlebars | 6 +-- .../user/private_messages.js.handlebars | 5 ++- .../discourse/views/auto_close_form_view.js | 2 +- .../discourse/views/category_chooser_view.js | 2 +- .../discourse/views/combobox_view.js | 2 +- .../discourse/views/discourse_text_field.js | 2 +- .../discourse/views/input_tip_view.js | 2 +- .../views/modal/color_picker_view.js | 2 +- .../discourse/views/pagedown_editor.js | 2 +- .../discourse/views/participant_view.js | 1 + .../discourse/views/popup_input_tip_view.js | 2 +- .../discourse/views/topic_status_view.js | 2 +- .../views/user/activity_filter_view.js | 2 +- .../discourse/views/user/user_stream_view.js | 1 + .../discourse/views/user_selector_view.js | 2 +- .../javascripts/discourse/views/view.js | 38 +++++++++++++++---- 20 files changed, 55 insertions(+), 43 deletions(-) diff --git a/app/assets/javascripts/admin/views/ace_editor_view.js b/app/assets/javascripts/admin/views/ace_editor_view.js index b5642d46e..023f0e3a8 100644 --- a/app/assets/javascripts/admin/views/ace_editor_view.js +++ b/app/assets/javascripts/admin/views/ace_editor_view.js @@ -58,4 +58,4 @@ Discourse.AceEditorView = Discourse.View.extend({ }); -Discourse.Utilities.registerViewHelper('aceEditor', Discourse.AceEditorView); \ No newline at end of file +Discourse.View.registerHelper('aceEditor', Discourse.AceEditorView); \ No newline at end of file diff --git a/app/assets/javascripts/discourse/components/utilities.js b/app/assets/javascripts/discourse/components/utilities.js index 5fd0e9733..60719fe0e 100644 --- a/app/assets/javascripts/discourse/components/utilities.js +++ b/app/assets/javascripts/discourse/components/utilities.js @@ -29,19 +29,6 @@ Discourse.Utilities = { } }, - /* - Register a view class as a helper - */ - registerViewHelper: function(helperName, helperClass) { - Ember.Handlebars.registerHelper(helperName, function(options) { - var hash = options.hash, - types = options.hashTypes; - - Discourse.Utilities.normalizeHash(hash, types); - return Ember.Handlebars.helpers.view.call(this, helperClass, options); - }); - }, - // Create a badge like category link categoryLink: function(category) { if (!category) return ""; diff --git a/app/assets/javascripts/discourse/templates/topic_summary/info.js.handlebars b/app/assets/javascripts/discourse/templates/topic_summary/info.js.handlebars index 51b833a8f..8832153e4 100644 --- a/app/assets/javascripts/discourse/templates/topic_summary/info.js.handlebars +++ b/app/assets/javascripts/discourse/templates/topic_summary/info.js.handlebars @@ -42,7 +42,7 @@ </li> {{#if view.topic.fewParticipants}} <li class='avatars'> - {{#each view.topic.fewParticipants}}{{view Discourse.ParticipantView participantBinding="this"}}{{/each}} + {{#each view.topic.fewParticipants}}{{participant participant=this}}{{/each}} </li> {{/if}} </ul> @@ -74,7 +74,7 @@ {{#if view.topic.participants}} <section class='avatars clearfix'> - {{#each view.topic.participants}}{{view Discourse.ParticipantView participantBinding="this"}}{{/each}} + {{#each view.topic.participants}}{{participant participant=this}}{{/each}} </section> {{/if}} diff --git a/app/assets/javascripts/discourse/templates/user/activity.js.handlebars b/app/assets/javascripts/discourse/templates/user/activity.js.handlebars index 345879a0f..310790838 100644 --- a/app/assets/javascripts/discourse/templates/user/activity.js.handlebars +++ b/app/assets/javascripts/discourse/templates/user/activity.js.handlebars @@ -15,9 +15,9 @@ <div class='clearfix'></div> <ul class='action-list nav-stacked side-nav'> - {{view Discourse.ActivityFilterView countBinding="statsCountNonPM"}} + {{activityFilter count=statsCountNonPM}} {{#each statsExcludingPms}} - {{view Discourse.ActivityFilterView contentBinding="this"}} + {{activityFilter content=this}} {{/each}} </ul> <div class='show'> @@ -51,4 +51,4 @@ </div> {{/with}} -{{view Discourse.UserStreamView streamBinding="model"}} +{{userStream stream=model}} diff --git a/app/assets/javascripts/discourse/templates/user/preferences.js.handlebars b/app/assets/javascripts/discourse/templates/user/preferences.js.handlebars index fc8b8cd96..90a2f087d 100644 --- a/app/assets/javascripts/discourse/templates/user/preferences.js.handlebars +++ b/app/assets/javascripts/discourse/templates/user/preferences.js.handlebars @@ -71,7 +71,7 @@ {{#if email_digests}} <div class='control-indent'> - {{view Discourse.ComboboxView valueAttribute="value" contentBinding="digestFrequencies" valueBinding="digest_after_days"}} + {{combobox valueAttribute="value" content=digestFrequencies value="digest_after_days"}} </div> {{/if}} <label>{{view Ember.Checkbox checkedBinding="email_private_messages"}} @@ -88,12 +88,12 @@ <label class="control-label">{{i18n user.other_settings}}</label> <div class="controls"> <label>{{i18n user.auto_track_topics}}</label> - {{view Discourse.ComboboxView valueAttribute="value" contentBinding="autoTrackDurations" valueBinding="auto_track_topics_after_msecs"}} + {{combobox valueAttribute="value" content=autoTrackDurations value="auto_track_topics_after_msecs"}} </div> <div class="controls"> <label>{{i18n user.new_topic_duration.label}}</label> - {{view Discourse.ComboboxView valueAttribute="value" contentBinding="considerNewTopicOptions" valueBinding="new_topic_duration_minutes"}} + {{combobox valueAttribute="value" content=considerNewTopicOptions value="new_topic_duration_minutes"}} </div> <div class="controls"> diff --git a/app/assets/javascripts/discourse/templates/user/private_messages.js.handlebars b/app/assets/javascripts/discourse/templates/user/private_messages.js.handlebars index 27c99cf9c..cace498d1 100644 --- a/app/assets/javascripts/discourse/templates/user/private_messages.js.handlebars +++ b/app/assets/javascripts/discourse/templates/user/private_messages.js.handlebars @@ -16,9 +16,10 @@ <ul class='action-list nav-stacked side-nav'> {{#each statsPmsOnly}} - {{view Discourse.ActivityFilterView contentBinding="this"}} + {{activityFilter content=this}} {{/each}} </ul> {{/with}} </div> -{{view Discourse.UserStreamView streamBinding="model"}} +{{userStream stream=model}} + diff --git a/app/assets/javascripts/discourse/views/auto_close_form_view.js b/app/assets/javascripts/discourse/views/auto_close_form_view.js index 417b2c55f..465186c76 100644 --- a/app/assets/javascripts/discourse/views/auto_close_form_view.js +++ b/app/assets/javascripts/discourse/views/auto_close_form_view.js @@ -20,4 +20,4 @@ Discourse.AutoCloseFormView = Ember.View.extend({ }.observes('autoCloseDays') }); -Discourse.Utilities.registerViewHelper('autoCloseForm', Discourse.AutoCloseFormView); \ No newline at end of file +Discourse.View.registerHelper('autoCloseForm', Discourse.AutoCloseFormView); \ No newline at end of file diff --git a/app/assets/javascripts/discourse/views/category_chooser_view.js b/app/assets/javascripts/discourse/views/category_chooser_view.js index 7214fd39c..ce3abd2e9 100644 --- a/app/assets/javascripts/discourse/views/category_chooser_view.js +++ b/app/assets/javascripts/discourse/views/category_chooser_view.js @@ -34,4 +34,4 @@ Discourse.CategoryChooserView = Discourse.ComboboxView.extend({ }); -Discourse.Utilities.registerViewHelper('categoryChooser', Discourse.CategoryChooserView); \ No newline at end of file +Discourse.View.registerHelper('categoryChooser', Discourse.CategoryChooserView); \ No newline at end of file diff --git a/app/assets/javascripts/discourse/views/combobox_view.js b/app/assets/javascripts/discourse/views/combobox_view.js index fc98864bd..f1f5fc695 100644 --- a/app/assets/javascripts/discourse/views/combobox_view.js +++ b/app/assets/javascripts/discourse/views/combobox_view.js @@ -75,4 +75,4 @@ Discourse.ComboboxView = Discourse.View.extend({ }); - +Discourse.View.registerHelper('combobox', Discourse.ComboboxView); \ No newline at end of file diff --git a/app/assets/javascripts/discourse/views/discourse_text_field.js b/app/assets/javascripts/discourse/views/discourse_text_field.js index f12c069ad..1225c3188 100644 --- a/app/assets/javascripts/discourse/views/discourse_text_field.js +++ b/app/assets/javascripts/discourse/views/discourse_text_field.js @@ -19,4 +19,4 @@ Discourse.TextField = Ember.TextField.extend({ }); -Discourse.Utilities.registerViewHelper('textField', Discourse.TextField); \ No newline at end of file +Discourse.View.registerHelper('textField', Discourse.TextField); \ No newline at end of file diff --git a/app/assets/javascripts/discourse/views/input_tip_view.js b/app/assets/javascripts/discourse/views/input_tip_view.js index 76a02210e..5c5fdf501 100644 --- a/app/assets/javascripts/discourse/views/input_tip_view.js +++ b/app/assets/javascripts/discourse/views/input_tip_view.js @@ -30,4 +30,4 @@ Discourse.InputTipView = Discourse.View.extend({ } }); -Discourse.Utilities.registerViewHelper('inputTip', Discourse.InputTipView); \ No newline at end of file +Discourse.View.registerHelper('inputTip', Discourse.InputTipView); \ No newline at end of file diff --git a/app/assets/javascripts/discourse/views/modal/color_picker_view.js b/app/assets/javascripts/discourse/views/modal/color_picker_view.js index 3685a27aa..f204d92bc 100644 --- a/app/assets/javascripts/discourse/views/modal/color_picker_view.js +++ b/app/assets/javascripts/discourse/views/modal/color_picker_view.js @@ -36,4 +36,4 @@ Discourse.ColorPickerView = Ember.ContainerView.extend({ } }); -Discourse.Utilities.registerViewHelper('colorPicker', Discourse.ColorPickerView); \ No newline at end of file +Discourse.View.registerHelper('colorPicker', Discourse.ColorPickerView); \ No newline at end of file diff --git a/app/assets/javascripts/discourse/views/pagedown_editor.js b/app/assets/javascripts/discourse/views/pagedown_editor.js index 7627a6acb..4c7b62f4c 100644 --- a/app/assets/javascripts/discourse/views/pagedown_editor.js +++ b/app/assets/javascripts/discourse/views/pagedown_editor.js @@ -44,4 +44,4 @@ Discourse.PagedownEditor = Ember.ContainerView.extend({ }); -Discourse.Utilities.registerViewHelper('pagedown', Discourse.PagedownEditor); \ No newline at end of file +Discourse.View.registerHelper('pagedown', Discourse.PagedownEditor); \ No newline at end of file diff --git a/app/assets/javascripts/discourse/views/participant_view.js b/app/assets/javascripts/discourse/views/participant_view.js index cf906684c..93d9979ce 100644 --- a/app/assets/javascripts/discourse/views/participant_view.js +++ b/app/assets/javascripts/discourse/views/participant_view.js @@ -16,3 +16,4 @@ Discourse.ParticipantView = Discourse.View.extend({ }); +Discourse.View.registerHelper('participant', Discourse.ParticipantView); \ No newline at end of file diff --git a/app/assets/javascripts/discourse/views/popup_input_tip_view.js b/app/assets/javascripts/discourse/views/popup_input_tip_view.js index 96e98da75..29b969c8b 100644 --- a/app/assets/javascripts/discourse/views/popup_input_tip_view.js +++ b/app/assets/javascripts/discourse/views/popup_input_tip_view.js @@ -56,4 +56,4 @@ Discourse.PopupInputTipView = Discourse.View.extend({ } }); -Discourse.Utilities.registerViewHelper('popupInputTip', Discourse.PopupInputTipView); \ No newline at end of file +Discourse.View.registerHelper('popupInputTip', Discourse.PopupInputTipView); \ No newline at end of file diff --git a/app/assets/javascripts/discourse/views/topic_status_view.js b/app/assets/javascripts/discourse/views/topic_status_view.js index 71ec385c0..77dfc9182 100644 --- a/app/assets/javascripts/discourse/views/topic_status_view.js +++ b/app/assets/javascripts/discourse/views/topic_status_view.js @@ -48,4 +48,4 @@ Discourse.TopicStatusView = Discourse.View.extend({ }); -Discourse.Utilities.registerViewHelper('topicStatus', Discourse.TopicStatusView); \ No newline at end of file +Discourse.View.registerHelper('topicStatus', Discourse.TopicStatusView); \ No newline at end of file diff --git a/app/assets/javascripts/discourse/views/user/activity_filter_view.js b/app/assets/javascripts/discourse/views/user/activity_filter_view.js index fc5dd0dd2..8656ab5a2 100644 --- a/app/assets/javascripts/discourse/views/user/activity_filter_view.js +++ b/app/assets/javascripts/discourse/views/user/activity_filter_view.js @@ -47,4 +47,4 @@ Discourse.ActivityFilterView = Discourse.View.extend({ } }); - +Discourse.View.registerHelper('activityFilter', Discourse.ActivityFilterView); \ No newline at end of file diff --git a/app/assets/javascripts/discourse/views/user/user_stream_view.js b/app/assets/javascripts/discourse/views/user/user_stream_view.js index c2f4c5130..09faac697 100644 --- a/app/assets/javascripts/discourse/views/user/user_stream_view.js +++ b/app/assets/javascripts/discourse/views/user/user_stream_view.js @@ -50,3 +50,4 @@ Discourse.UserStreamView = Discourse.View.extend(Discourse.Scrolling, { }); +Discourse.View.registerHelper('userStream', Discourse.UserStreamView); \ No newline at end of file diff --git a/app/assets/javascripts/discourse/views/user_selector_view.js b/app/assets/javascripts/discourse/views/user_selector_view.js index 47c78e0a8..bc1609181 100644 --- a/app/assets/javascripts/discourse/views/user_selector_view.js +++ b/app/assets/javascripts/discourse/views/user_selector_view.js @@ -64,4 +64,4 @@ Discourse.UserSelector.reopenClass({ } }); -Discourse.Utilities.registerViewHelper('userSelector', Discourse.UserSelector); \ No newline at end of file +Discourse.View.registerHelper('userSelector', Discourse.UserSelector); \ No newline at end of file diff --git a/app/assets/javascripts/discourse/views/view.js b/app/assets/javascripts/discourse/views/view.js index 682e875f8..de0aefc39 100644 --- a/app/assets/javascripts/discourse/views/view.js +++ b/app/assets/javascripts/discourse/views/view.js @@ -1,10 +1,32 @@ - /** - A base view that gives us common functionality, for example `present` and `blank` +/** + A base view that gives us common functionality, for example `present` and `blank` - @class View - @extends Ember.View - @uses Discourse.Presence - @namespace Discourse - @module Discourse + @class View + @extends Ember.View + @uses Discourse.Presence + @namespace Discourse + @module Discourse +**/ +Discourse.View = Ember.View.extend(Discourse.Presence, {}); + + +Discourse.View.reopenClass({ + + /** + Register a view helper for ease of use + + @method registerHElper + @param {String} helperName the name of the helper + @param {Ember.View} helperClass the view that will be inserted by the helper **/ - Discourse.View = Ember.View.extend(Discourse.Presence, {}); + registerHelper: function(helperName, helperClass) { + Ember.Handlebars.registerHelper(helperName, function(options) { + var hash = options.hash, + types = options.hashTypes; + + Discourse.Utilities.normalizeHash(hash, types); + return Ember.Handlebars.helpers.view.call(this, helperClass, options); + }); + } + +})