Use MarkdownSectionController on item page

This commit is contained in:
Andrew Miner
2015-04-03 18:01:38 -07:00
parent 8f7f513880
commit 0b043b9677
3 changed files with 22 additions and 46 deletions
@@ -5,19 +5,20 @@ Copyright (c) 2015 by Redwood Labs
All rights reserved. All rights reserved.
### ###
AdsenseController = require './adsense_controller' AdsenseController = require './adsense_controller'
FullRecipeController = require './full_recipe_controller' FullRecipeController = require './full_recipe_controller'
ImageLoader = require './image_loader' ImageLoader = require './image_loader'
Item = require '../models/item' Item = require '../models/item'
ItemGroupController = require './item_group_controller' ItemGroupController = require './item_group_controller'
ItemPage = require '../models/item_page' ItemPage = require '../models/item_page'
ItemSlug = require '../models/item_slug' ItemSlug = require '../models/item_slug'
PageController = require './page_controller' MarkdownSectionController = require './markdown_section_controller'
VideoController = require './video_controller' PageController = require './page_controller'
{Duration} = require '../constants' VideoController = require './video_controller'
{Event} = require '../constants' {Duration} = require '../constants'
{Text} = require '../constants' {Event} = require '../constants'
{Url} = require '../constants' {Text} = require '../constants'
{Url} = require '../constants'
######################################################################################################################## ########################################################################################################################
@@ -57,13 +58,13 @@ module.exports = class ItemPageController extends PageController
@adsenseController = @addChild AdsenseController, '.view__adsense', model:'sidebar_skyscraper' @adsenseController = @addChild AdsenseController, '.view__adsense', model:'sidebar_skyscraper'
options = imageLoader:@imageLoader, modPack:@modPack, show:false options = imageLoader:@imageLoader, modPack:@modPack, show:false
@_descriptionController = @addChild MarkdownSectionController, '.section.description', options
@_similarItemsController = @addChild ItemGroupController, '.view__item_group.similar', options @_similarItemsController = @addChild ItemGroupController, '.view__item_group.similar', options
@_usedAsToolToMakeController = @addChild ItemGroupController, '.view__item_group.usedAsToolToMake', options @_usedAsToolToMakeController = @addChild ItemGroupController, '.view__item_group.usedAsToolToMake', options
@_usedToMakeController = @addChild ItemGroupController, '.view__item_group.usedToMake', options @_usedToMakeController = @addChild ItemGroupController, '.view__item_group.usedToMake', options
@$byline = @$('.byline') @$byline = @$('.byline')
@$bylineLink = @$('.byline a') @$bylineLink = @$('.byline a')
@$descriptionPanel = @$('.description .panel')
@$descriptionSection = @$('.description') @$descriptionSection = @$('.description')
@$name = @$('h1.name') @$name = @$('h1.name')
@$officialPageLink = @$('a.officialPage') @$officialPageLink = @$('a.officialPage')
@@ -129,9 +130,8 @@ module.exports = class ItemPageController extends PageController
@hide @$byline @hide @$byline
_refreshDescription: -> _refreshDescription: ->
description = @model.compileDescription() if @model.item?.description?.length > 0
if description? @_descriptionController.model = @model.item.description
@$descriptionPanel.html description
@show @$descriptionSection @show @$descriptionSection
else else
@hide @$descriptionSection @hide @$descriptionSection
@@ -48,13 +48,14 @@ module.exports = class MarkdownSectionController extends BaseController
return '' unless @model return '' unless @model
tree = markdown.parse @model, 'Maruku' tree = markdown.parse @model, 'Maruku'
refs = tree[1].references
findLinkRefs = (node)=> findLinkRefs = (node)=>
logger.verbose "inspecting a #{node[0]}"
if node[0] is 'link_ref' if node[0] is 'link_ref'
name = node[2] logger.verbose "looking for item named: #{node[2]}"
item = @modPack.findItemByName node[2] item = @modPack.findItemByName node[2]
if item? if item?
logger.verbose "found item #{item.slug}, updating link"
node[0] = 'link' node[0] = 'link'
node[1].href = Url.item itemSlug:item.slug.item, modSlug:item.slug.mod node[1].href = Url.item itemSlug:item.slug.item, modSlug:item.slug.mod
delete node[1].ref delete node[1].ref
@@ -65,7 +66,9 @@ module.exports = class MarkdownSectionController extends BaseController
findLinkRefs node[index] findLinkRefs node[index]
logger.outdent() logger.outdent()
logger.verbose "replacing wiki-style links"
findLinkRefs tree findLinkRefs tree
logger.verbose "finished"
html = markdown.renderJsonML markdown.toHTMLTree tree html = markdown.renderJsonML markdown.toHTMLTree tree
return html return html
-27
View File
@@ -21,33 +21,6 @@ module.exports = class ItemPage extends BaseModel
# Property Methods ############################################################################# # Property Methods #############################################################################
compileDescription: ->
return null unless @item?.description?
tree = markdown.parse @item.description, 'Maruku'
refs = tree[1].references
findLinkRefs = (node)=>
if node[0] is 'link_ref'
name = node[2]
item = @modPack.findItemByName node[2]
if item?
node[0] = 'link'
node[1].href = Url.item itemSlug:item.slug.item, modSlug:item.slug.mod
delete node[1].ref
else
for index in [1...node.length]
if _.isArray node[index]
for child in node[index]
logger.indent()
findLinkRefs child
logger.outdent()
findLinkRefs tree
html = markdown.renderJsonML markdown.toHTMLTree tree
return html
findComponentInItems: -> findComponentInItems: ->
return @_findRecipesMatching (recipe)=> recipe.requires @item.slug return @_findRecipesMatching (recipe)=> recipe.requires @item.slug