History

Add links to enable docs without reloading the app

Thibaut committed 11 years ago

Commit 200dd0b1 parent e97b8d45 files · +56 −13Browse files

Unified · Split

5 files
  1. assets/javascripts/app/app.coffee +20 −5
  2. assets/javascripts/collections/collection.coffee +4 −0
  3. assets/javascripts/templates/sidebar_tmpl.coffee +4 −1
  4. assets/javascripts/views/sidebar/doc_list.coffee +11 −4
  5. assets/stylesheets/components/_sidebar.scss +17 −3
assets/javascripts/app/app.coffee+20−5
@@ -77,11 +77,7 @@ · 76 unmodified lines
7777 return
7878
7979 start: ->
80− for doc in @docs.all()
81− @entries.add doc.toEntry()
82− @entries.add type.toEntry() for type in doc.types.all()
83− @entries.add doc.entries.all()
84−
80+ @initDoc(doc) for doc in @docs.all()
8581 @db = new app.DB()
8682 @trigger 'ready'
8783 @router.start()
@@ -90,6 +86,25 @@ · 2 unmodified lines
9086 @removeEvent 'ready bootError'
9187 return
9288
89+ initDoc: (doc) ->
90+ @entries.add doc.toEntry()
91+ @entries.add type.toEntry() for type in doc.types.all()
92+ @entries.add doc.entries.all()
93+ return
94+
95+ enableDoc: (doc, _onSuccess, onError) ->
96+ onSuccess = =>
97+ @disabledDocs.remove(doc)
98+ @docs.add(doc)
99+ @docs.sort()
100+ @initDoc(doc)
101+ @settings.setDocs(doc.slug for doc in @docs.all())
102+ _onSuccess()
103+ return
104+
105+ doc.load onSuccess, onError, writeCache: true
106+ return
107+
93108 welcomeBack: ->
94109 visitCount = @settings.get('count')
95110 @settings.set 'count', ++visitCount
assets/javascripts/collections/collection.coffee+4−0
@@ -21,6 +21,10 @@ class app.Collection · 20 unmodified lines
2121 @models.push new (@model())(object)
2222 return
2323
24+ remove: (model) ->
25+ @models.splice @models.indexOf(model), 1
26+ return
27+
2428 size: ->
2529 @models.length
2630
assets/javascripts/templates/sidebar_tmpl.coffee+4−1
@@ -4,7 +4,10 @@ templates.sidebarDoc = (doc, options = {}) -> · 3 unmodified lines
44 link = """<a href="#{doc.fullPath()}" class="_list-item _icon-#{doc.slug} """
55 link += if options.disabled then '_list-disabled' else '_list-dir'
66 link += """" data-slug="#{doc.slug}">"""
7− link += """<span class="_list-arrow"></span>""" unless options.disabled
7+ if options.disabled
8+ link += """<span class="_list-enable" data-enable="#{doc.slug}">Enable</span>"""
9+ else
10+ link += """<span class="_list-arrow"></span>"""
811 link += """<span class="_list-count">#{doc.version}</span>""" if doc.version
912 link + "#{doc.name}</a>"
1013
assets/javascripts/views/sidebar/doc_list.coffee+11−4
@@ -123,17 +123,24 @@ class app.views.DocList extends app.View · 122 unmodified lines
123123 $.scrollTo @find("a[href='#{model.fullPath()}']"), null, 'top', margin: 0
124124 return
125125
126− onClick: (event) =>
127− return unless @disabledTitle and $.hasChild @disabledTitle, event.target
128− $.stopEvent(event)
129−
126+ toggleDisabled: ->
130127 if @disabledTitle.classList.contains('open-title')
131128 @removeDisabledList()
132129 app.settings.set 'hideDisabled', true
133130 else
134131 @appendDisabledList()
135132 app.settings.set 'hideDisabled', false
133+ return
136134
135+ onClick: (event) =>
136+ if @disabledTitle and $.hasChild(@disabledTitle, event.target)
137+ $.stopEvent(event)
138+ @toggleDisabled()
139+ else if slug = event.target.getAttribute('data-enable')
140+ $.stopEvent(event)
141+ doc = app.disabledDocs.findBy('slug', slug)
142+ app.enableDoc(doc, @render, @render)
143+ return
137144
138145 afterRoute: (route, context) =>
139146 if context.init
assets/stylesheets/components/_sidebar.scss+17−3
@@ -109,11 +109,9 @@ · 108 unmodified lines
109109 }
110110 }
111111
112−._list-count {
112+._list-count, ._list-enable {
113113 float: right;
114114 font-size: .75rem;
115− color: $textColorLighter;
116− pointer-events: none;
117115
118116 .focus > &,
119117 .active > & {
@@ -121,6 +119,22 @@ · 1 unmodified line
121119 }
122120 }
123121
122+._list-count {
123+ color: $textColorLighter;
124+ pointer-events: none;
125+
126+ ._list-disabled:hover > & { display: none; }
127+}
128+
129+._list-enable {
130+ display: none;
131+ color: $linkColor;
132+ cursor: pointer;
133+
134+ &:hover { text-decoration: underline; }
135+ ._list-disabled:hover > & { display: block; }
136+}
137+
124138 //
125139 // List hierarchy
126140 //