codecombat/app/views/play/level/modal/docs_modal.coffee

52 lines
1.6 KiB
CoffeeScript
Raw Normal View History

2014-01-03 13:32:13 -05:00
View = require 'views/kinds/ModalView'
template = require 'templates/play/level/modal/docs'
Article = require 'models/Article'
# let's implement this once we have the docs database schema set up
module.exports = class DocsModal extends View
template: template
2014-02-26 18:44:46 -05:00
id: 'docs-modal'
2014-01-03 13:32:13 -05:00
shortcuts:
'enter': 'hide'
constructor: (options) ->
@docs = options?.docs
general = @docs.generalArticles or []
specific = @docs.specificArticles or []
articles = options.supermodel.getModels(Article)
articleMap = {}
articleMap[article.get('original')] = article for article in articles
general = (articleMap[ref.original] for ref in general)
general = (article.attributes for article in general when article)
@docs = specific.concat(general)
marked.setOptions {gfm: true, sanitize: false, smartLists: true, breaks: false}
@docs = _.cloneDeep(@docs)
2014-03-07 20:05:35 -05:00
doc.html = marked(doc.i18n?[me.lang()]?.body or doc.body) for doc in @docs
doc.name = (doc.i18n?[me.lang()]?.name or doc.name) for doc in @docs
2014-01-03 13:32:13 -05:00
doc.slug = _.string.slugify(doc.name) for doc in @docs
super()
getRenderData: ->
c = super()
c.docs = @docs
c
afterRender: ->
super()
if @docs.length is 1
@$el.find('.modal-body').html(@docs[0].html)
else
# incredible hackiness. Getting bootstrap tabs to work shouldn't be this complex
@$el.find('.nav-tabs li:first').addClass('active')
@$el.find('.tab-content .tab-pane:first').addClass('active')
@$el.find('.nav-tabs a').click(@clickTab)
clickTab: (e) =>
@$el.find('li.active').removeClass('active')
onHidden: ->
Backbone.Mediator.publish 'level:docs-hidden'