History

Fix various issues when switching from single doc to full app

Thibaut Courouble committed 9 years ago

Commit 4f62ccb1 parent 7947f2d4 files · +39 −35Browse files

Unified · Split

4 files
  1. assets/javascripts/app/router.coffee +22 −14
  2. assets/javascripts/lib/page.coffee +13 −11
  3. assets/javascripts/views/content/offline_page.coffee +2 −5
  4. assets/javascripts/views/content/settings_page.coffee +2 −5
assets/javascripts/app/router.coffee+22−14
@@ -34,19 +34,24 @@ class app.Router · 33 unmodified lines
34 return34 return
35 35
36 before: (context, next) ->36 before: (context, next) ->
37 previousContext = @context
37 @context = context38 @context = context
38 @trigger 'before', context39 @trigger 'before', context
39 next()40
40 return41 if res = next()
42 @context = previousContext
43 return res
44 else
45 return
41 46
42 doc: (context, next) ->47 doc: (context, next) ->
43 if doc = app.docs.findBySlug(context.params.doc) or app.disabledDocs.findBySlug(context.params.doc)48 if doc = app.docs.findBySlug(context.params.doc) or app.disabledDocs.findBySlug(context.params.doc)
44 context.doc = doc49 context.doc = doc
45 context.entry = doc.toEntry()50 context.entry = doc.toEntry()
46 @triggerRoute 'entry'51 @triggerRoute 'entry'
52 return
47 else53 else
48 next()54 return next()
49 return
50 55
51 type: (context, next) ->56 type: (context, next) ->
52 doc = app.docs.findBySlug(context.params.doc)57 doc = app.docs.findBySlug(context.params.doc)
@@ -55,9 +60,9 @@ class app.Router · 2 unmodified lines
55 context.doc = doc60 context.doc = doc
56 context.type = type61 context.type = type
57 @triggerRoute 'type'62 @triggerRoute 'type'
63 return
58 else64 else
59 next()65 return next()
60 return
61 66
62 entry: (context, next) ->67 entry: (context, next) ->
63 doc = app.docs.findBySlug(context.params.doc)68 doc = app.docs.findBySlug(context.params.doc)
@@ -66,36 +71,39 @@ class app.Router · 2 unmodified lines
66 context.doc = doc71 context.doc = doc
67 context.entry = entry72 context.entry = entry
68 @triggerRoute 'entry'73 @triggerRoute 'entry'
74 return
69 else75 else
70 next()76 return next()
71 return
72 77
73 root: ->78 root: ->
74 if app.isSingleDoc()79 return '/' if app.isSingleDoc()
75 setTimeout (-> window.location = '/'), 080 @triggerRoute 'root'
76 else
77 @triggerRoute 'root'
78 return81 return
79 82
80 settings: ->83 settings: (context) ->
84 return "/#/#{context.path}" if app.isSingleDoc()
81 @triggerRoute 'settings'85 @triggerRoute 'settings'
82 return86 return
83 87
84 offline: ->88 offline: (context)->
89 return "/#/#{context.path}" if app.isSingleDoc()
85 @triggerRoute 'offline'90 @triggerRoute 'offline'
86 return91 return
87 92
88 about: (context) ->93 about: (context) ->
94 return "/#/#{context.path}" if app.isSingleDoc()
89 context.page = 'about'95 context.page = 'about'
90 @triggerRoute 'page'96 @triggerRoute 'page'
91 return97 return
92 98
93 news: (context) ->99 news: (context) ->
100 return "/#/#{context.path}" if app.isSingleDoc()
94 context.page = 'news'101 context.page = 'news'
95 @triggerRoute 'page'102 @triggerRoute 'page'
96 return103 return
97 104
98 help: (context) ->105 help: (context) ->
106 return "/#/#{context.path}" if app.isSingleDoc()
99 context.page = 'help'107 context.page = 'help'
100 @triggerRoute 'page'108 @triggerRoute 'page'
101 return109 return
assets/javascripts/lib/page.coffee+13−11
@@ -38,11 +38,15 @@ page.stop = -> · 37 unmodified lines
38page.show = (path, state) ->38page.show = (path, state) ->
39 return if path is currentState?.path39 return if path is currentState?.path
40 context = new Context(path, state)40 context = new Context(path, state)
41 previousState = currentState
41 currentState = context.state42 currentState = context.state
42 page.dispatch(context)43 if res = page.dispatch(context)
43 context.pushState()44 currentState = previousState
44 updateCanonicalLink()45 location.assign(res)
45 track()46 else
47 context.pushState()
48 updateCanonicalLink()
49 track()
46 context50 context
47 51
48page.replace = (path, state, skipDispatch, init) ->52page.replace = (path, state, skipDispatch, init) ->
@@ -58,10 +62,9 @@ page.replace = (path, state, skipDispatch, init) -> · 9 unmodified lines
58page.dispatch = (context) ->62page.dispatch = (context) ->
59 i = 063 i = 0
60 next = ->64 next = ->
61 fn(context, next) if fn = callbacks[i++]65 res = fn(context, next) if fn = callbacks[i++]
62 return66 return res
63 next()67 return next()
64 return
65 68
66page.canGoBack = ->69page.canGoBack = ->
67 not Context.isIntialState(currentState)70 not Context.isIntialState(currentState)
@@ -116,10 +119,9 @@ class Route · 48 unmodified lines
116 (context, next) =>119 (context, next) =>
117 if @match context.pathname, params = []120 if @match context.pathname, params = []
118 context.params = params121 context.params = params
119 fn(context, next)122 return fn(context, next)
120 else123 else
121 next()124 return next()
122 return
123 125
124 match: (path, params) ->126 match: (path, params) ->
125 return unless matchData = @regexp.exec(path)127 return unless matchData = @regexp.exec(path)
assets/javascripts/views/content/offline_page.coffee+2−5
@@ -45,11 +45,8 @@ class app.views.OfflinePage extends app.View · 44 unmodified lines
45 docEl: (doc) ->45 docEl: (doc) ->
46 @find("[data-slug='#{doc.slug}']")46 @find("[data-slug='#{doc.slug}']")
47 47
48 onRoute: (route) ->48 onRoute: (context) ->
49 if app.isSingleDoc()49 @render()
50 window.location = "/#/#{route.path}"
51 else
52 @render()
53 return50 return
54 51
55 onClick: (event) =>52 onClick: (event) =>
assets/javascripts/views/content/settings_page.coffee+2−5
@@ -58,9 +58,6 @@ class app.views.SettingsPage extends app.View · 57 unmodified lines
58 @toggle input.name, input.checked58 @toggle input.name, input.checked
59 return59 return
60 60
61 onRoute: (route) =>61 onRoute: (context) ->
62 if app.isSingleDoc()62 @render()
63 window.location = "/#/#{route.path}"
64 else
65 @render()
66 return63 return