diff options
| author | mo <mokha@cisco.com> | 2017-09-02 14:48:43 -0600 |
|---|---|---|
| committer | mo <mokha@cisco.com> | 2017-09-02 14:48:43 -0600 |
| commit | b8dfe131c6c5fe9d0e5b4ee2d271feeb5d411502 (patch) | |
| tree | 05b475a8b6442e2a43d9529c42362a3460df7d13 /app/assets/javascripts/views/tutorials | |
| parent | bba21d02643d632fee5fa4bdbc876d44832ccf4b (diff) | |
promote backbone subdirectory up to root.
Diffstat (limited to 'app/assets/javascripts/views/tutorials')
5 files changed, 101 insertions, 0 deletions
diff --git a/app/assets/javascripts/views/tutorials/index_view.js.coffee b/app/assets/javascripts/views/tutorials/index_view.js.coffee new file mode 100644 index 00000000..764611ed --- /dev/null +++ b/app/assets/javascripts/views/tutorials/index_view.js.coffee @@ -0,0 +1,10 @@ +#= require views/tutorials/no_tutorials_view +#= require views/tutorials/tutorial_view + +CakeSide.Views.Tutorials ||= {} + +class CakeSide.Views.Tutorials.IndexView extends Marionette.CollectionView + childView: CakeSide.Views.Tutorials.TutorialView + emptyView: CakeSide.Views.Tutorials.NoTutorialsView + className: '' + tagName: 'div' diff --git a/app/assets/javascripts/views/tutorials/new_view.js.coffee b/app/assets/javascripts/views/tutorials/new_view.js.coffee new file mode 100644 index 00000000..6aca51a7 --- /dev/null +++ b/app/assets/javascripts/views/tutorials/new_view.js.coffee @@ -0,0 +1,69 @@ +#= require service/embedly_service + +class CakeSide.Views.Tutorials.NewView extends Marionette.ItemView + template: JST['templates/tutorials/new'] + ui: + url: '#tutorial_url' + url_group: '#url-group' + save_button: '#save-button' + preview: '#preview-panel' + tags: '#tutorial_tags' + + modelEvents: + 'invalid': 'displayError' + 'change:url': 'render' + + events: + 'change #tutorial_url': 'loadUrl' + "submit #new-tutorial": "save" + + initialize: -> + @model = new @collection.model() + @service = new EmbedlyService() + + loadUrl: -> + if @model.isValidUrl(@ui.url.val()) + @service.retrieve_info_on(@ui.url.val(), @updateTutorial) + @validate() + + updateTutorial: (attributes) => + @model.set + url: attributes.url + heading: attributes.title + description: attributes.description + image_url: if _.any(attributes.images) then attributes.images[0].url else '' + author: attributes.provider_name + author_url: attributes.provider_url + + onRender: -> + @ui.tags.tagit({ availableTags: ALL_TAGS }) + + validate: -> + @model.isValid() + + displayError: (model, error) -> + @ui.save_button.attr('disabled', 'disabled') + @ui.preview.hide() + @ui.url_group.addClass("error") + errorTag = $('<span>').addClass('help-inline').text(error) + @ui.url_group.find('.controls').append(errorTag) + + save: (event) -> + event.preventDefault() + event.stopPropagation() + @model.set('tags', @ui.tags.val()) + @ui.save_button.attr('disabled', 'disabled') + @collection.create(@model, + success: @savedSuccessfully + error: @couldNotSave + ) + + savedSuccessfully: (cake) => + window.location.hash = "tutorials" + + couldNotSave: (cake, xhr) => + @ui.save_button.removeAttr('disabled') + error = new CakeSide.Views.ErrorView + el: @$('form#new-tutorial'), + attributesWithErrors: $.parseJSON(xhr.responseText) + error.render() diff --git a/app/assets/javascripts/views/tutorials/no_tutorials_view.js.coffee b/app/assets/javascripts/views/tutorials/no_tutorials_view.js.coffee new file mode 100644 index 00000000..979d52e9 --- /dev/null +++ b/app/assets/javascripts/views/tutorials/no_tutorials_view.js.coffee @@ -0,0 +1,5 @@ +CakeSide.Views.Tutorials ||= {} + +class CakeSide.Views.Tutorials.NoTutorialsView extends Marionette.ItemView + template: JST['templates/tutorials/no_tutorials'] + tagName: 'li' diff --git a/app/assets/javascripts/views/tutorials/show_view.js.coffee b/app/assets/javascripts/views/tutorials/show_view.js.coffee new file mode 100644 index 00000000..544338d6 --- /dev/null +++ b/app/assets/javascripts/views/tutorials/show_view.js.coffee @@ -0,0 +1,7 @@ +CakeSide.Views.Tutorials ||= {} + +class CakeSide.Views.Tutorials.ShowView extends Marionette.ItemView + template: JST["templates/tutorials/show"] + templateHelpers: + displayDate: (date) -> + date diff --git a/app/assets/javascripts/views/tutorials/tutorial_view.js.coffee b/app/assets/javascripts/views/tutorials/tutorial_view.js.coffee new file mode 100644 index 00000000..6ec82e06 --- /dev/null +++ b/app/assets/javascripts/views/tutorials/tutorial_view.js.coffee @@ -0,0 +1,10 @@ +CakeSide.Views.Tutorials ||= {} + +class CakeSide.Views.Tutorials.TutorialView extends Marionette.ItemView + template: JST['templates/tutorials/tutorial'] + tagName: 'div' + className: 'media' + + templateHelpers: + displayDate: (date) -> + new Date(date).toLocaleDateString() |
