mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-11-28 18:15:52 -05:00
Merge branch 'master' into production
This commit is contained in:
commit
424c987fe3
28 changed files with 119 additions and 126 deletions
|
@ -1,6 +1,10 @@
|
|||
@import "bootstrap/variables"
|
||||
@import "bootstrap/mixins"
|
||||
|
||||
// https://github.com/twbs/bootstrap/issues/9237 -- need a version that's not !important
|
||||
.secret
|
||||
display: none
|
||||
|
||||
h1 h2 h3 h4
|
||||
letter-spacing: 2px
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ block content
|
|||
p(data-i18n="account_settings.not_logged_in") Log in or create an account to change your settings.
|
||||
|
||||
else
|
||||
button.btn#save-button.disabled.hide(data-i18n="account_settings.saveBackups") Changes Save Automatically
|
||||
button.btn#save-button.disabled.secret(data-i18n="account_settings.saveBackups") Changes Save Automatically
|
||||
|
||||
ul.nav.nav-pills#settings-tabs
|
||||
li
|
||||
|
|
|
@ -9,9 +9,9 @@ block content
|
|||
|
||||
button.btn.btn-warning#unsubscribe-button(data-i18n="account.unsubscribe_button") Do it
|
||||
|
||||
.progress.progress-striped.active.hide
|
||||
.progress.progress-striped.active.secret
|
||||
.progress-bar
|
||||
|
||||
p.hide#fail-alert(data-i18n="account.unsubscribe_failed").alert.alert-danger Failed
|
||||
p.secret#fail-alert(data-i18n="account.unsubscribe_failed").alert.alert-danger Failed
|
||||
|
||||
p.hide#success-alert(data-i18n="account.unsubscribe_success").alert.alert-success Success
|
||||
p.secret#success-alert(data-i18n="account.unsubscribe_success").alert.alert-success Success
|
||||
|
|
|
@ -3,13 +3,13 @@ div.well
|
|||
span#thang-props
|
||||
a#thang-name-link
|
||||
span= thang.id
|
||||
input.hide(value=thang.id)
|
||||
input.secret(value=thang.id)
|
||||
| (
|
||||
span(data-i18n="editor.level_components_type") Type
|
||||
| :
|
||||
a#thang-type-link
|
||||
span= thang.thangType
|
||||
input.hide(value=thang.thangType)
|
||||
input.secret(value=thang.thangType)
|
||||
| )
|
||||
|
||||
#thang-components-edit-view
|
|
@ -31,4 +31,4 @@
|
|||
- path = '/file/db/thang.type/'+thangType.original+'/portrait.png'
|
||||
img(title="Add " + thangType.name, src=path, alt="")
|
||||
div.clearfix
|
||||
#editor-level-thang-edit.hide
|
||||
#editor-level-thang-edit.secret
|
|
@ -1,6 +1,6 @@
|
|||
div#color-groups-treema
|
||||
|
||||
div#color-group-settings.hide
|
||||
div#color-group-settings.secret
|
||||
div#shape-buttons
|
||||
|
||||
canvas#tinting-display(width=400, height=400)
|
||||
|
|
|
@ -21,7 +21,7 @@ block content
|
|||
.modal-footer
|
||||
button.btn(data-dismiss="modal") Cancel
|
||||
button.btn.btn-primary.new-model-submit Create
|
||||
.modal-body.wait.hide
|
||||
.modal-body.wait.secret
|
||||
h3 Reticulating Splines...
|
||||
.progress.progress-striped.active
|
||||
.progress-bar
|
||||
|
|
|
@ -22,6 +22,6 @@ block modal-body-content
|
|||
textarea#contact-message.form-control(name="message", rows=8)
|
||||
|
||||
block modal-footer-content
|
||||
span.sending-indicator.pull-left.hide(data-i18n="common.sending") Sending...
|
||||
span.sending-indicator.pull-left.secret(data-i18n="common.sending") Sending...
|
||||
a(href='#', data-dismiss="modal", aria-hidden="true", data-i18n="common.cancel").btn Cancel
|
||||
button.btn.btn-primary#contact-submit-button(data-i18n="contact.send") Send Feedback
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
img(src="http://www.manbitesgod.com/images/picturecoupleb.jpg")
|
||||
img(src="http://www.manbitesgod.com/images/manrantb.jpg")
|
||||
|
||||
.modal-body.wait.hide
|
||||
.modal-body.wait.secret
|
||||
block modal-body-wait-content
|
||||
h3 Reticulating Splines...
|
||||
.progress.progress-striped.active
|
||||
|
|
|
@ -11,11 +11,11 @@
|
|||
#canvas-left-gradient.gradient
|
||||
#canvas-top-gradient.gradient
|
||||
|
||||
a.btn.btn-primary.banner.hide#level-done-button(data-i18n="play_level.done") Done
|
||||
a.btn.btn-primary.banner.secret#level-done-button(data-i18n="play_level.done") Done
|
||||
|
||||
#goals-view.hide
|
||||
#goals-view.secret
|
||||
|
||||
#gold-view.hide.expanded
|
||||
#gold-view.secret.expanded
|
||||
|
||||
#level-chat-view
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
table
|
||||
tbody
|
||||
|
||||
.open-chat-area.hide
|
||||
.open-chat-area.secret
|
||||
table
|
||||
tbody
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
button.btn.btn-success.sign-up-button.btn-large(data-toggle="coco-modal", data-target="modal/signup", data-i18n="play_level.victory_sign_up") Sign Up to Save Progress
|
||||
span(data-i18n="play_level.victory_sign_up_poke") Want to save your code? Create a free account!
|
||||
else
|
||||
div.rating.hide
|
||||
div.rating.secret
|
||||
span(data-i18n="play_level.victory_rate_the_level") Rate the level:
|
||||
i.icon-star-empty
|
||||
i.icon-star-empty
|
||||
|
@ -30,7 +30,7 @@
|
|||
else
|
||||
a.btn.btn-primary(href="/", data-dismiss="modal", data-i18n="play_level.victory_go_home") Go Home
|
||||
if !me.get('anonymous')
|
||||
div.review.hide
|
||||
div.review.secret
|
||||
span(data-i18n="play_level.victory_review") Tell us more!
|
||||
br
|
||||
textarea
|
||||
|
|
|
@ -11,7 +11,7 @@ button.btn.btn-xs.btn-inverse#music-button(title="Toggle Music")
|
|||
| ♫
|
||||
|
||||
.scrubber
|
||||
.progress.hide
|
||||
.progress.secret
|
||||
.progress-bar
|
||||
.scrubber-handle
|
||||
|
||||
|
@ -27,11 +27,11 @@ button.btn.btn-xs.btn-inverse#music-button(title="Toggle Music")
|
|||
li(title="Ctrl/Cmd + \\: Toggle debug display").selectable#debug-toggle
|
||||
i.icon-globe
|
||||
| Debug Mode
|
||||
i.icon-ok.hide
|
||||
i.icon-ok.secret
|
||||
li(title="Ctrl/Cmd + G: Toggle grid display").selectable#grid-toggle
|
||||
i.icon-th
|
||||
span(data-i18n="play_level.grid") Grid
|
||||
i.icon-ok.hide
|
||||
i.icon-ok.secret
|
||||
li.selectable#edit-wizard-settings
|
||||
i.icon-user
|
||||
span(data-i18n="play_level.customize_wizard") Customize Wizard
|
||||
|
|
|
@ -102,7 +102,7 @@ module.exports = class SettingsView extends View
|
|||
res = me.save()
|
||||
return unless res
|
||||
save = $('#save-button', @$el).text($.i18n.t('common.saving', defaultValue: 'Saving...'))
|
||||
.addClass('btn-info').removeClass('hide').removeClass('btn-danger')
|
||||
.addClass('btn-info').show().removeClass('btn-danger')
|
||||
|
||||
res.error ->
|
||||
errors = JSON.parse(res.responseText)
|
||||
|
|
|
@ -15,21 +15,21 @@ module.exports = class UnsubscribeView extends RootView
|
|||
context
|
||||
|
||||
onUnsubscribeButtonClicked: ->
|
||||
@$el.find('#unsubscribe-button').addClass 'hide'
|
||||
@$el.find('.progress').removeClass 'hide'
|
||||
@$el.find('.alert').addClass 'hide'
|
||||
@$el.find('#unsubscribe-button').hide()
|
||||
@$el.find('.progress').show()
|
||||
@$el.find('.alert').hide()
|
||||
|
||||
email = @getQueryVariable 'email'
|
||||
url = "/auth/unsubscribe?email=#{encodeURIComponent(email)}"
|
||||
|
||||
success = =>
|
||||
@$el.find('.progress').addClass 'hide'
|
||||
@$el.find('#success-alert').removeClass 'hide'
|
||||
@$el.find('.progress').hide()
|
||||
@$el.find('#success-alert').show()
|
||||
me.fetch()
|
||||
|
||||
error = =>
|
||||
@$el.find('.progress').addClass 'hide'
|
||||
@$el.find('#fail-alert').removeClass 'hide'
|
||||
@$el.find('#unsubscribe-button').removeClass 'hide'
|
||||
@$el.find('.progress').hide()
|
||||
@$el.find('#fail-alert').show()
|
||||
@$el.find('#unsubscribe-button').show()
|
||||
|
||||
$.ajax { url: url, success: success, error: error }
|
||||
|
|
|
@ -57,7 +57,7 @@ module.exports = class WizardSettingsTabView extends RootView
|
|||
|
||||
updateSliderVisibility: (colorGroup) ->
|
||||
enabled = colorGroup.find('.color-group-checkbox').prop('checked')
|
||||
colorGroup.find('.sliders').toggleClass 'hide', not enabled
|
||||
colorGroup.find('.sliders').toggle Boolean(enabled)
|
||||
|
||||
updateColorSettings: (colorGroup) ->
|
||||
wizardSettings = me.get('wizard') or {}
|
||||
|
|
|
@ -67,7 +67,7 @@ module.exports = class LevelThangEditView extends View
|
|||
span = link.find('span')
|
||||
input = link.find('input')
|
||||
if wasEditing then span.text(input.val()) else input.val(span.text())
|
||||
link.find('span, input').toggleClass('hide')
|
||||
link.find('span, input').toggle()
|
||||
input.select() unless wasEditing
|
||||
@thangData.id = span.text()
|
||||
@saveThang()
|
||||
|
@ -78,7 +78,7 @@ module.exports = class LevelThangEditView extends View
|
|||
span = link.find('span')
|
||||
input = link.find('input')
|
||||
span.text(input.val()) if wasEditing
|
||||
link.find('span, input').toggleClass('hide')
|
||||
link.find('span, input').toggle()
|
||||
input.select() unless wasEditing
|
||||
thangTypeName = input.val()
|
||||
thangType = _.find @supermodel.getModels(ThangType), (m) -> m.get('name') is thangTypeName
|
||||
|
|
|
@ -374,7 +374,7 @@ module.exports = class ThangsTabView extends View
|
|||
thangData = @thangsTreema.get "id=#{e.thangID}"
|
||||
@editThangView = new LevelThangEditView thangData: thangData, supermodel: @supermodel, level: @level, world: @world
|
||||
@insertSubView @editThangView
|
||||
@$el.find('.thangs-column').addClass('hide')
|
||||
@$el.find('.thangs-column').hide()
|
||||
Backbone.Mediator.publish 'level:view-switched', e
|
||||
|
||||
onLevelThangEdited: (e) ->
|
||||
|
@ -383,7 +383,7 @@ module.exports = class ThangsTabView extends View
|
|||
|
||||
onLevelThangDoneEditing: ->
|
||||
@removeSubView @editThangView
|
||||
@$el.find('.thangs-column').removeClass('hide')
|
||||
@$el.find('.thangs-column').show()
|
||||
|
||||
|
||||
class ThangsNode extends TreemaNode.nodeMap.array
|
||||
|
|
|
@ -130,7 +130,7 @@ module.exports = class ColorsTabView extends CocoView
|
|||
@thangType.set('colorGroups', @colorGroups.data)
|
||||
|
||||
onColorGroupSelected: (e, selected) =>
|
||||
@$el.find('#color-group-settings').toggleClass('hide', not selected.length)
|
||||
@$el.find('#color-group-settings').toggle selected.length > 0
|
||||
treema = @colorGroups.getLastSelectedTreema()
|
||||
return unless treema
|
||||
@currentColorGroupTreema = treema
|
||||
|
|
|
@ -115,7 +115,7 @@ module.exports = class CocoView extends Backbone.View
|
|||
visibleModal.willDisappear() if visibleModal
|
||||
visibleModal.destroy()
|
||||
visibleModal = null
|
||||
$('#modal-wrapper .modal').off 'hidden.bs.modal', @modalClosed
|
||||
#$('#modal-wrapper .modal').off 'hidden.bs.modal', @modalClosed
|
||||
if waitingModal
|
||||
wm = waitingModal
|
||||
waitingModal = null
|
||||
|
@ -127,7 +127,7 @@ module.exports = class CocoView extends Backbone.View
|
|||
# Loading RootViews
|
||||
|
||||
showLoading: ($el=@$el) ->
|
||||
$el.find('>').addClass('hide')
|
||||
$el.find('>').hide()
|
||||
$el.append($('<div class="loading-screen"></div>')
|
||||
.append('<h2>Loading</h2>')
|
||||
.append('<div class="progress progress-striped active loading"><div class="progress-bar"></div></div>'))
|
||||
|
@ -136,18 +136,18 @@ module.exports = class CocoView extends Backbone.View
|
|||
hideLoading: ->
|
||||
return unless @_lastLoading?
|
||||
@_lastLoading.find('.loading-screen').remove()
|
||||
@_lastLoading.find('>').removeClass('hide')
|
||||
@_lastLoading.find('>').show()
|
||||
@_lastLoading = null
|
||||
|
||||
# Loading ModalViews
|
||||
|
||||
enableModalInProgress: (modal) ->
|
||||
$('> div', modal).addClass('hide')
|
||||
$('.wait', modal).removeClass('hide')
|
||||
$('> div', modal).hide()
|
||||
$('.wait', modal).show()
|
||||
|
||||
disableModalInProgress: (modal) ->
|
||||
$('> div', modal).removeClass('hide')
|
||||
$('.wait', modal).addClass('hide')
|
||||
$('> div', modal).show()
|
||||
$('.wait', modal).hide()
|
||||
|
||||
# Subscriptions
|
||||
|
||||
|
|
|
@ -46,11 +46,11 @@ module.exports = class GoalsView extends View
|
|||
li.prepend($('<i></i>').addClass(stateIconMap[state.status]))
|
||||
list.append(li)
|
||||
goals.push goal
|
||||
if goals.length then @$el.removeClass('hide') else @$el.addClass('hide')
|
||||
@$el.toggle goals.length > 0
|
||||
|
||||
render: ->
|
||||
super()
|
||||
@$el.addClass('hide').addClass('expanded')
|
||||
|
||||
onSetLetterbox: (e) ->
|
||||
if e.on then @$el.hide() else @$el.show()
|
||||
@$el.toggle not e.on
|
||||
|
|
|
@ -19,4 +19,4 @@ module.exports = class GoldView extends View
|
|||
goldEl.text(e.gold)
|
||||
|
||||
onSetLetterbox: (e) ->
|
||||
if e.on then @$el.hide() else @$el.show()
|
||||
@$el.toggle not e.on
|
||||
|
|
|
@ -153,7 +153,7 @@ module.exports = class HUDView extends View
|
|||
@bubble.removeClass(@lastMood) if @lastMood
|
||||
@lastMood = mood
|
||||
@bubble.text('')
|
||||
group = $('<div class="enter hide"></div>')
|
||||
group = $('<div class="enter secret"></div>')
|
||||
@bubble.append(group)
|
||||
if responses
|
||||
@lastResponses = responses
|
||||
|
@ -176,7 +176,7 @@ module.exports = class HUDView extends View
|
|||
if @animator.done()
|
||||
clearInterval(@messageInterval)
|
||||
@messageInterval = null
|
||||
$('.enter', @bubble).removeClass("hide").css('opacity', 0.0).delay(500).animate({opacity:1.0}, 500, @animateEnterButton)
|
||||
$('.enter', @bubble).removeClass("secret").css('opacity', 0.0).delay(500).animate({opacity:1.0}, 500, @animateEnterButton)
|
||||
if @lastResponses
|
||||
buttons = $('.enter button')
|
||||
for response, i in @lastResponses
|
||||
|
@ -207,10 +207,10 @@ module.exports = class HUDView extends View
|
|||
|
||||
switchToDialogueElements: ->
|
||||
@dialogueMode = true
|
||||
$('.thang-elem', @$el).addClass('hide')
|
||||
@$el.find('.thang-canvas-wrapper').removeClass('hide')
|
||||
$('.thang-elem', @$el).addClass('secret')
|
||||
@$el.find('.thang-canvas-wrapper').removeClass('secret')
|
||||
$('.dialogue-area', @$el)
|
||||
.removeClass('hide')
|
||||
.removeClass('secret')
|
||||
.animate({opacity:1.0}, 200)
|
||||
$('.dialogue-bubble', @$el)
|
||||
.css('opacity', 0.0)
|
||||
|
@ -220,8 +220,8 @@ module.exports = class HUDView extends View
|
|||
|
||||
switchToThangElements: ->
|
||||
@dialogueMode = false
|
||||
$('.thang-elem', @$el).removeClass('hide')
|
||||
$('.dialogue-area', @$el).addClass('hide')
|
||||
$('.thang-elem', @$el).removeClass('secret')
|
||||
$('.dialogue-area', @$el).addClass('secret')
|
||||
|
||||
update: ->
|
||||
return unless @thang and not @speaker
|
||||
|
@ -321,7 +321,7 @@ module.exports = class HUDView extends View
|
|||
changed = true
|
||||
break
|
||||
return unless changed
|
||||
ael.toggleClass 'hidden', not timespans.length
|
||||
ael.toggleClass 'secret', not timespans.length
|
||||
@lastActionTimespans[action] = timespans
|
||||
timeline = ael.find('.action-timeline .timeline-wrapper').empty()
|
||||
lifespan = @thang.world.totalFrames / @thang.world.frameRate
|
||||
|
|
|
@ -27,10 +27,7 @@ module.exports = class LevelChatView extends View
|
|||
|
||||
updateMultiplayerVisibility: ->
|
||||
return unless @$el?
|
||||
if @session.get('multiplayer')
|
||||
@$el.removeClass('hide')
|
||||
else
|
||||
@$el.addClass('hide')
|
||||
@$el.toggle Boolean @session.get('multiplayer')
|
||||
|
||||
afterRender: ->
|
||||
@chatTables = $('table', @$el)
|
||||
|
@ -48,7 +45,7 @@ module.exports = class LevelChatView extends View
|
|||
row.fadeOut(1000, -> $(this).remove())
|
||||
|
||||
onNewMessage: (e) ->
|
||||
@$el.removeClass('hide') unless e.message.system
|
||||
@$el.show() unless e.message.system
|
||||
@addOne(e.message)
|
||||
@trimClosedPanel()
|
||||
@playNoise() if e.message.authorID isnt me.id
|
||||
|
@ -108,16 +105,10 @@ module.exports = class LevelChatView extends View
|
|||
return false
|
||||
|
||||
onIconClick: ->
|
||||
openPanel = $('.open-chat-area', @$el)
|
||||
closedPanel = $('.closed-chat-area', @$el)
|
||||
@open = not @open
|
||||
if @open
|
||||
closedPanel.addClass('hide')
|
||||
openPanel.removeClass('hide')
|
||||
@scrollDown()
|
||||
else
|
||||
openPanel.addClass('hide')
|
||||
closedPanel.removeClass('hide')
|
||||
openPanel = $('.open-chat-area', @$el).toggle @open
|
||||
closedPanel = $('.closed-chat-area', @$el).toggle not @open
|
||||
@scrollDown() if @open
|
||||
if window.getSelection?
|
||||
sel = window.getSelection()
|
||||
sel.empty?()
|
||||
|
|
|
@ -35,7 +35,7 @@ module.exports = class MultiplayerModal extends View
|
|||
updateLinkSection: ->
|
||||
multiplayer = @$el.find('#multiplayer').prop('checked')
|
||||
la = @$el.find('#link-area')
|
||||
if multiplayer then la.show() else la.hide()
|
||||
la.toggle Boolean(multiplayer)
|
||||
true
|
||||
|
||||
onHidden: ->
|
||||
|
|
|
@ -55,8 +55,8 @@ module.exports = class PlaybackView extends View
|
|||
@$el.find('#music-button').toggleClass('music-on', me.get('music'))
|
||||
|
||||
onSetLetterbox: (e) ->
|
||||
button = @$el.find '#play-button, .scrubber-handle'
|
||||
if e.on then button.css('visibility', 'hidden') else button.css('visibility', 'visible')
|
||||
buttons = @$el.find '#play-button, .scrubber-handle'
|
||||
buttons.css 'visibility', if e.on then 'hidden' else 'visible'
|
||||
@disabled = e.on
|
||||
|
||||
onWindowResize: (s...) =>
|
||||
|
@ -64,17 +64,17 @@ module.exports = class PlaybackView extends View
|
|||
|
||||
onNewWorld: (e) ->
|
||||
pct = parseInt(100 * e.world.totalFrames / e.world.maxTotalFrames) + '%'
|
||||
@barWidth = $('.progress', @$el).css('width', pct).removeClass('hide').width()
|
||||
@barWidth = $('.progress', @$el).css('width', pct).show().width()
|
||||
|
||||
onToggleDebug: ->
|
||||
return if @shouldIgnore()
|
||||
flag = $('#debug-toggle i.icon-ok')
|
||||
Backbone.Mediator.publish('level-set-debug', {debug: flag.hasClass('hide')})
|
||||
Backbone.Mediator.publish('level-set-debug', {debug: flag.hasClass('invisible')})
|
||||
|
||||
onToggleGrid: ->
|
||||
return if @shouldIgnore()
|
||||
flag = $('#grid-toggle i.icon-ok')
|
||||
Backbone.Mediator.publish('level-set-grid', {grid: flag.hasClass('hide')})
|
||||
Backbone.Mediator.publish('level-set-grid', {grid: flag.hasClass('invisible')})
|
||||
|
||||
onEditWizardSettings: ->
|
||||
Backbone.Mediator.publish 'edit-wizard-settings'
|
||||
|
@ -145,13 +145,11 @@ module.exports = class PlaybackView extends View
|
|||
|
||||
onSetDebug: (e) ->
|
||||
flag = $('#debug-toggle i.icon-ok')
|
||||
flag.removeClass('hide')
|
||||
flag.addClass('hide') unless e.debug
|
||||
flag.toggleClass 'invisible', not e.debug
|
||||
|
||||
onSetGrid: (e) ->
|
||||
flag = $('#grid-toggle i.icon-ok')
|
||||
flag.removeClass('hide')
|
||||
flag.addClass('hide') unless e.grid
|
||||
flag.toggleClass 'invisible', not e.grid
|
||||
|
||||
# to refactor
|
||||
|
||||
|
|
|
@ -64,7 +64,7 @@ module.exports = class SpellPaletteEntryView extends View
|
|||
content.replace /\#\{(.*?)\}/g, (s, properties) => @formatValue downTheChain(owner, properties.split('.'))
|
||||
|
||||
formatValue: (v) ->
|
||||
return '<Function>' if @doc.type is 'function'
|
||||
return '[Function]' if not v and @doc.type is 'function'
|
||||
unless v?
|
||||
if @doc.owner is 'this'
|
||||
v = @thang[@doc.name]
|
||||
|
|
|
@ -117,6 +117,7 @@ module.exports = class PlayLevelView extends View
|
|||
window.onPlayLevelViewLoaded? @ # still a hack
|
||||
@loadingScreen = new LoadingScreen(@$el.find('canvas')[0])
|
||||
@loadingScreen.show()
|
||||
@$el.find('#level-done-button').hide()
|
||||
super()
|
||||
|
||||
onLevelLoaderLoaded: =>
|
||||
|
@ -197,7 +198,6 @@ module.exports = class PlayLevelView extends View
|
|||
onDonePressed: -> @showVictory()
|
||||
|
||||
onShowVictory: (e) ->
|
||||
console.log 'show vict', e
|
||||
$('#level-done-button').show()
|
||||
@showVictory() if e.showModal
|
||||
setTimeout(@preloadNextLevel, 3000)
|
||||
|
|
Loading…
Reference in a new issue