I upped the slack ratio for a few reasons 1. We render ucloaked anyway on first render, so cloaking really is not saving much 2. On mobile you don't get JS events so you need a lot more slack to minimize white screens 3. Vast majority of memory is used by object model, if we want to tame it we need to remove posts from stream ember cloaking now supports high slack ratios without going into a tail spin
159 lines
5.4 KiB
Handlebars
159 lines
5.4 KiB
Handlebars
<div class='container'>
|
|
{{customHTML "top"}}
|
|
{{Discourse.globalNotice}}
|
|
</div>
|
|
|
|
{{#if postStream.loaded}}
|
|
|
|
{{#if postStream.firstPostPresent}}
|
|
<div id='topic-title'>
|
|
<div class='container'>
|
|
<div class='inner'>
|
|
|
|
{{#if showStarButton}}
|
|
<a {{bind-attr class=":star starred:starred"}} {{action toggleStar}} href='#' {{bind-attr title="starTooltip"}}></a>
|
|
{{/if}}
|
|
|
|
{{#if editingTopic}}
|
|
{{#if isPrivateMessage}}
|
|
<span class="private-message-glyph"><i class='fa fa-envelope'></i></span>
|
|
{{else}}
|
|
{{categoryChooser valueAttribute="id" value=newCategoryId source=category_id}}
|
|
{{/if}}
|
|
{{textField id='edit-title' value=newTitle}}
|
|
|
|
<button class='btn btn-primary btn-small no-text' {{action finishedEditingTopic}}><i class='fa fa-check'></i></button>
|
|
<button class='btn btn-small no-text' {{action cancelEditingTopic}}><i class='fa fa-times'></i></button>
|
|
{{else}}
|
|
<h1>
|
|
<span class="private-message-glyph"><i class='fa fa-envelope'></i></span>
|
|
{{#if category.parentCategory}}
|
|
{{boundCategoryLink category.parentCategory}}
|
|
{{/if}}
|
|
{{boundCategoryLink category}}
|
|
{{#if details.loaded}}
|
|
{{topic-status topic=model}}
|
|
<a href='{{unbound url}}' {{action jumpTop}}>
|
|
{{#if topicSaving}}
|
|
{{fancy_title}}
|
|
{{else}}
|
|
{{{fancy_title}}}
|
|
{{/if}}
|
|
</a>
|
|
{{/if}}
|
|
|
|
|
|
{{#if details.can_edit}}
|
|
<a href='#' {{action editTopic}} class='edit-topic' title='{{i18n edit}}'><i class="fa fa-pencil"></i></a>
|
|
{{/if}}
|
|
</h1>
|
|
{{/if}}
|
|
{{plugin-outlet "topic-title"}}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{{/if}}
|
|
|
|
<div class="container posts">
|
|
|
|
{{view Discourse.SelectedPostsView}}
|
|
|
|
<div class="row">
|
|
<section class="topic-area" id='topic' data-topic-id='{{unbound id}}'>
|
|
<div class='posts-wrapper'>
|
|
|
|
<div id='topic-progress-wrapper' {{bind-attr class="dockedCounter:docked"}}>
|
|
<nav id='topic-progress' title="{{i18n topic.progress.title}}" {{bind-attr class="hideProgress:hidden"}}>
|
|
<button id='jump-top' title="{{i18n topic.progress.jump_top}}" {{bind-attr disabled="jumpTopDisabled"}} {{action jumpTop}}><i class="fa fa-arrow-circle-up"></i></button>
|
|
<div class='nums' {{bind-attr title="progressPositionTitle"}}>
|
|
<h4>{{progressPosition}}</h4><span {{bind-attr class="hugeNumberOfPosts:hidden"}}> <span>{{i18n of_value}}</span> <h4>{{postStream.filteredPostsCount}}</h4></span>
|
|
</div>
|
|
<button id='jump-bottom' {{bind-attr title="jumpToBottomTitle"}} {{bind-attr disabled="jumpBottomDisabled"}} {{action jumpBottom}}><i class="fa fa-arrow-circle-down"></i></button>
|
|
<div class='bg'> </div>
|
|
</nav>
|
|
</div>
|
|
|
|
{{#if postStream.loadingAbove}}
|
|
<div class='spinner'>{{i18n loading}}</div>
|
|
{{/if}}
|
|
|
|
{{#unless postStream.loadingFilter}}
|
|
{{cloaked-collection cloakView="post"
|
|
idProperty="post_number"
|
|
defaultHeight="200"
|
|
content=postStream.posts
|
|
slackRatio="15"
|
|
loadingHTML=controller.loadingHTML
|
|
preservesContext="true"
|
|
uncloakDefault="true"
|
|
offsetFixedTop="header"
|
|
offsetFixedBottom="#reply-control"}}
|
|
{{/unless}}
|
|
|
|
{{#if postStream.loadingBelow}}
|
|
<div class='spinner'>{{i18n loading}}</div>
|
|
{{/if}}
|
|
</div>
|
|
<div id='topic-bottom'></div>
|
|
|
|
{{#if postStream.loadingFilter}}
|
|
<div class='spinner small'>{{i18n loading}}</div>
|
|
{{else}}
|
|
{{#if postStream.loadedAllPosts}}
|
|
|
|
{{view Discourse.TopicClosingView topicBinding="model"}}
|
|
{{view Discourse.TopicFooterButtonsView topicBinding="model"}}
|
|
|
|
{{#if details.suggested_topics.length}}
|
|
<div id='suggested-topics'>
|
|
<h3>{{i18n suggested_topics.title}}</h3>
|
|
<div class='topics'>
|
|
{{basic-topic-list topics=details.suggested_topics}}
|
|
</div>
|
|
<br/>
|
|
<h3>{{{view.browseMoreMessage}}}</h3>
|
|
</div>
|
|
{{/if}}
|
|
{{/if}}
|
|
{{/if}}
|
|
|
|
|
|
</section>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{{else}}
|
|
{{#if hasError}}
|
|
<div class='container'>
|
|
{{#if errorBodyHtml}}
|
|
{{{errorBodyHtml}}}
|
|
{{/if}}
|
|
|
|
{{#if message}}
|
|
<div class="message">
|
|
<h2>{{message}}</h2>
|
|
{{#unless currentUser}}
|
|
<button {{action showLogin}} class='btn btn-primary btn-small'>{{i18n log_in}}</button>
|
|
{{/unless}}
|
|
</div>
|
|
{{/if}}
|
|
</div>
|
|
{{else}}
|
|
<div class='container'>
|
|
<div class='spinner'>{{i18n loading}}</div>
|
|
</div>
|
|
{{/if}}
|
|
{{/if}}
|
|
|
|
{{render "share"}}
|
|
{{render "posterExpansion"}}
|
|
|
|
{{#if currentUser.enable_quoting}}
|
|
{{render "quote-button"}}
|
|
{{/if}}
|
|
|
|
{{#if currentUser.canManageTopic}}
|
|
{{render "topicAdminMenu" content}}
|
|
{{/if}}
|