Commit fdf70ac4 by Prem Sichanugrist

Implement viewStack to support nested view

parent 1cc027cc
...@@ -2,9 +2,28 @@ ...@@ -2,9 +2,28 @@
Models: {} Models: {}
Views: {} Views: {}
viewStack: []
start: -> start: ->
new CMS.Views.Course el: $('section.main-container') new CMS.Views.Course el: $('section.main-container')
replaceView: (view) ->
@viewStack = [view]
CMS.trigger('content.show', view)
pushView: (view) ->
@viewStack.push(view)
CMS.trigger('content.show', view)
popView: ->
@viewStack.pop()
if _.isEmpty(@viewStack)
CMS.trigger('content.hide')
else
view = _.last(@viewStack)
CMS.trigger('content.show', view)
view.delegateEvents()
_.extend CMS, Backbone.Events _.extend CMS, Backbone.Events
$ -> $ ->
......
...@@ -3,8 +3,8 @@ class CMS.Views.Course extends Backbone.View ...@@ -3,8 +3,8 @@ class CMS.Views.Course extends Backbone.View
@$('#weeks > li').each (index, week) => @$('#weeks > li').each (index, week) =>
new CMS.Views.Week el: week, height: @maxWeekHeight() new CMS.Views.Week el: week, height: @maxWeekHeight()
CMS.on('showContent', @showContent) CMS.on('content.show', @showContent)
CMS.on('hideContent', @hideContent) CMS.on('content.hide', @hideContent)
showContent: (subview) => showContent: (subview) =>
$('body').addClass('content') $('body').addClass('content')
......
...@@ -6,4 +6,4 @@ class CMS.Views.Module extends Backbone.View ...@@ -6,4 +6,4 @@ class CMS.Views.Module extends Backbone.View
@model = new CMS.Models.Module(id: @$el.data('id'), type: @$el.data('type')) @model = new CMS.Models.Module(id: @$el.data('id'), type: @$el.data('type'))
edit: => edit: =>
CMS.trigger('showContent', new CMS.Views.ModuleEdit(model: @model)) CMS.replaceView(new CMS.Views.ModuleEdit(model: @model))
...@@ -4,10 +4,10 @@ class CMS.Views.ModuleEdit extends Backbone.View ...@@ -4,10 +4,10 @@ class CMS.Views.ModuleEdit extends Backbone.View
events: events:
'click .cancel': 'cancel' 'click .cancel': 'cancel'
# 'click .module-edit', 'edit'
initialize: -> initialize: ->
CMS.trigger 'module.edit'
@$el.append($("""<div id="#{@model.get('id')}">""").load(@model.editUrl())) @$el.append($("""<div id="#{@model.get('id')}">""").load(@model.editUrl()))
cancel: -> cancel: ->
CMS.trigger 'hideContent' CMS.popView()
...@@ -11,11 +11,11 @@ class CMS.Views.Week extends Backbone.View ...@@ -11,11 +11,11 @@ class CMS.Views.Week extends Backbone.View
@$('.modules .module').each -> @$('.modules .module').each ->
new CMS.Views.Module el: this new CMS.Views.Module el: this
CMS.on('showContent', @resetHeight) CMS.on('content.show', @resetHeight)
CMS.on('hideContent', @setHeight) CMS.on('content.hide', @setHeight)
edit: => edit: =>
CMS.trigger('showContent', new CMS.Views.WeekEdit(model: @model)) CMS.replaceView(new CMS.Views.WeekEdit(model: @model))
setHeight: => setHeight: =>
@$el.height(@options.height) @$el.height(@options.height)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment