mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-04-27 14:33:59 -04:00
Fixed the watch buttons for levels and components.
This commit is contained in:
parent
731726dcd3
commit
02a7381fa9
6 changed files with 105 additions and 83 deletions
app
models
templates/editor/level
views/editor/level
server/commons
|
@ -229,8 +229,9 @@ class CocoModel extends Backbone.Model
|
|||
|
||||
watch: (doWatch=true) ->
|
||||
$.ajax("#{@urlRoot}/#{@id}/watch", {type:'PUT', data:{on:doWatch}})
|
||||
@watching = -> doWatch
|
||||
|
||||
watching: ->
|
||||
return me.id in @get('watchers') or []
|
||||
return me.id in (@get('watchers') or [])
|
||||
|
||||
module.exports = CocoModel
|
||||
|
|
|
@ -20,6 +20,13 @@ nav.navbar.navbar-default(role='navigation')
|
|||
li(data-i18n="general.version_history").btn.btn-primary.navbar-btn#history-button Version History
|
||||
li(data-i18n="editor.level_component_btn_new").btn.btn-primary.navbar-btn#create-new-component-button Create New Component
|
||||
li.btn.btn-primary.navbar-btn#patch-component-button Patch
|
||||
li#watch-component-button.btn.btn-primary.navbar-btn
|
||||
span.watch
|
||||
span.spr Watch
|
||||
span.glyphicon.glyphicon-eye-open
|
||||
span.unwatch.secret
|
||||
span.spr Unwatch
|
||||
span.glyphicon.glyphicon-eye-close
|
||||
|
||||
.tab-content
|
||||
.tab-pane.active#component-code
|
||||
|
|
|
@ -2,82 +2,90 @@ extends /templates/base
|
|||
|
||||
block outer_content
|
||||
.outer-content
|
||||
|
||||
nav.navbar.navbar-default(role='navigation')#level-editor-top-nav
|
||||
.container-fluid
|
||||
ul.nav.navbar-nav
|
||||
li
|
||||
a(href="/editor/level", data-i18n="editor.back") Back
|
||||
.navbar-header
|
||||
span.navbar-brand
|
||||
span(data-i18n="editor.level_title") Level Editor
|
||||
span :
|
||||
span.level-title #{level.attributes.name}
|
||||
.collapse.navbar-collapse
|
||||
ul.nav.navbar-nav.nav-tabs
|
||||
|
||||
li.active
|
||||
a(href="#editor-level-thangs-tab-view", data-toggle="tab", data-i18n="editor.level_tab_thangs") Thangs
|
||||
|
||||
if level.loading
|
||||
nav.navbar.navbar-default(role='navigation')#level-editor-top-nav
|
||||
.container-fluid
|
||||
ul.nav.navbar-nav
|
||||
li
|
||||
a(href="#editor-level-scripts-tab-view", data-toggle="tab", data-i18n="editor.level_tab_scripts") Scripts
|
||||
a(href="/editor/level", data-i18n="editor.back") Back
|
||||
|
||||
else
|
||||
nav.navbar.navbar-default(role='navigation')#level-editor-top-nav
|
||||
.container-fluid
|
||||
ul.nav.navbar-nav
|
||||
li
|
||||
a(href="#editor-level-settings-tab-view", data-toggle="tab", data-i18n="editor.level_tab_settings") Settings
|
||||
li
|
||||
a(href="#editor-level-components-tab-view", data-toggle="tab", data-i18n="editor.level_tab_components") Components
|
||||
li
|
||||
a(href="#editor-level-systems-tab-view", data-toggle="tab", data-i18n="editor.level_tab_systems") Systems
|
||||
li
|
||||
a(href="#editor-level-patches", data-toggle="tab")#patches-tab
|
||||
span(data-i18n="resources.patches").spr Patches
|
||||
- var patches = level.get('patches')
|
||||
if patches && patches.length
|
||||
span.badge= patches.length
|
||||
|
||||
ul.nav.navbar-nav.navbar-right
|
||||
li#watch-button.btn.btn-primary.navbar-btn
|
||||
span.watch
|
||||
span.spr Watch
|
||||
span.glyphicon.glyphicon-eye-open
|
||||
span.unwatch.secret
|
||||
span.spr Unwatch
|
||||
span.glyphicon.glyphicon-eye-close
|
||||
li(data-toggle="coco-modal", data-target="modal/revert", data-i18n="editor.revert", disabled=anonymous ? "true": undefined).btn.btn-primary.navbar-btn#revert-button Revert
|
||||
if authorized
|
||||
li(data-i18n="common.save").btn.btn-primary.navbar-btn#commit-level-start-button Save
|
||||
else
|
||||
li(data-i18n="common.patch").btn.btn-primary.navbar-btn#commit-level-patch-button Patch
|
||||
li(data-i18n="common.fork", disabled=anonymous ? "true": undefined).btn.btn-primary.navbar-btn#fork-level-start-button Fork
|
||||
li(title="⌃↩ or ⌘↩: Play preview of current level", data-i18n="common.play")#play-button.btn.btn-inverse.banner.navbar-btn Play!
|
||||
|
||||
li.divider
|
||||
|
||||
li.dropdown
|
||||
a.dropdown-toggle(href='#', data-toggle='dropdown', data-i18n="editor.more")
|
||||
| More
|
||||
b.caret
|
||||
ul.dropdown-menu
|
||||
li#history-button
|
||||
a(href='#', data-i18n="general.version_history") Version History
|
||||
li
|
||||
a(href='https://github.com/codecombat/codecombat/wiki/Artisan-Home', data-i18n="editor.wiki") Wiki
|
||||
li
|
||||
a(href='http://www.hipchat.com/g3plnOKqa', data-i18n="editor.live_chat") Live Chat
|
||||
li
|
||||
a(href='http://discourse.codecombat.com/category/artisan', data-i18n="nav.forum") Forum
|
||||
li
|
||||
a(data-toggle="coco-modal", data-target="modal/contact", data-i18n="nav.contact") Email
|
||||
|
||||
|
||||
|
||||
ul.dropdown-menu
|
||||
li
|
||||
span(data-i18n="editor.level_some_options").dropdown-menu-header Some Options?
|
||||
li.divider
|
||||
li
|
||||
a(data-delay="1000", href="#", data-i18n="common.delay_1_sec") 1 second
|
||||
a(data-delay="3000", href="#", data-i18n="common.delay_3_sec") 3 seconds
|
||||
a(data-delay="5000", href="#", data-i18n="common.delay_5_sec") 5 seconds
|
||||
a(data-delay="90019001", href="#", data-i18n="common.manual") Manual
|
||||
a(href="/editor/level", data-i18n="editor.back") Back
|
||||
.navbar-header
|
||||
span.navbar-brand
|
||||
span(data-i18n="editor.level_title") Level Editor
|
||||
span :
|
||||
span.level-title #{level.attributes.name}
|
||||
.collapse.navbar-collapse
|
||||
ul.nav.navbar-nav.nav-tabs
|
||||
|
||||
li.active
|
||||
a(href="#editor-level-thangs-tab-view", data-toggle="tab", data-i18n="editor.level_tab_thangs") Thangs
|
||||
li
|
||||
a(href="#editor-level-scripts-tab-view", data-toggle="tab", data-i18n="editor.level_tab_scripts") Scripts
|
||||
li
|
||||
a(href="#editor-level-settings-tab-view", data-toggle="tab", data-i18n="editor.level_tab_settings") Settings
|
||||
li
|
||||
a(href="#editor-level-components-tab-view", data-toggle="tab", data-i18n="editor.level_tab_components") Components
|
||||
li
|
||||
a(href="#editor-level-systems-tab-view", data-toggle="tab", data-i18n="editor.level_tab_systems") Systems
|
||||
li
|
||||
a(href="#editor-level-patches", data-toggle="tab")#patches-tab
|
||||
span(data-i18n="resources.patches").spr Patches
|
||||
- var patches = level.get('patches')
|
||||
if patches && patches.length
|
||||
span.badge= patches.length
|
||||
|
||||
ul.nav.navbar-nav.navbar-right
|
||||
li#watch-button.btn.btn-primary.navbar-btn
|
||||
span.watch
|
||||
span.spr Watch
|
||||
span.glyphicon.glyphicon-eye-open
|
||||
span.unwatch.secret
|
||||
span.spr Unwatch
|
||||
span.glyphicon.glyphicon-eye-close
|
||||
li(data-toggle="coco-modal", data-target="modal/revert", data-i18n="editor.revert", disabled=anonymous ? "true": undefined).btn.btn-primary.navbar-btn#revert-button Revert
|
||||
if authorized
|
||||
li(data-i18n="common.save").btn.btn-primary.navbar-btn#commit-level-start-button Save
|
||||
else
|
||||
li(data-i18n="common.patch").btn.btn-primary.navbar-btn#commit-level-patch-button Patch
|
||||
li(data-i18n="common.fork", disabled=anonymous ? "true": undefined).btn.btn-primary.navbar-btn#fork-level-start-button Fork
|
||||
li(title="⌃↩ or ⌘↩: Play preview of current level", data-i18n="common.play")#play-button.btn.btn-inverse.banner.navbar-btn Play!
|
||||
|
||||
li.divider
|
||||
|
||||
li.dropdown
|
||||
a.dropdown-toggle(href='#', data-toggle='dropdown', data-i18n="editor.more")
|
||||
| More
|
||||
b.caret
|
||||
ul.dropdown-menu
|
||||
li#history-button
|
||||
a(href='#', data-i18n="general.version_history") Version History
|
||||
li
|
||||
a(href='https://github.com/codecombat/codecombat/wiki/Artisan-Home', data-i18n="editor.wiki") Wiki
|
||||
li
|
||||
a(href='http://www.hipchat.com/g3plnOKqa', data-i18n="editor.live_chat") Live Chat
|
||||
li
|
||||
a(href='http://discourse.codecombat.com/category/artisan', data-i18n="nav.forum") Forum
|
||||
li
|
||||
a(data-toggle="coco-modal", data-target="modal/contact", data-i18n="nav.contact") Email
|
||||
|
||||
|
||||
|
||||
ul.dropdown-menu
|
||||
li
|
||||
span(data-i18n="editor.level_some_options").dropdown-menu-header Some Options?
|
||||
li.divider
|
||||
li
|
||||
a(data-delay="1000", href="#", data-i18n="common.delay_1_sec") 1 second
|
||||
a(data-delay="3000", href="#", data-i18n="common.delay_3_sec") 3 seconds
|
||||
a(data-delay="5000", href="#", data-i18n="common.delay_5_sec") 5 seconds
|
||||
a(data-delay="90019001", href="#", data-i18n="common.manual") Manual
|
||||
|
||||
div.tab-content#level-editor-tabs
|
||||
div.tab-pane.active#editor-level-thangs-tab-view
|
||||
|
|
|
@ -16,6 +16,7 @@ module.exports = class LevelComponentEditView extends View
|
|||
'click .nav a': (e) -> $(e.target).tab('show')
|
||||
'click #component-patches-tab': -> @patchesView.load()
|
||||
'click #patch-component-button': 'startPatchingComponent'
|
||||
'click #watch-component-button': 'toggleWatchComponent'
|
||||
|
||||
constructor: (options) ->
|
||||
super options
|
||||
|
@ -34,6 +35,7 @@ module.exports = class LevelComponentEditView extends View
|
|||
@buildConfigSchemaTreema()
|
||||
@buildCodeEditor()
|
||||
@patchesView = @insertSubView(new PatchesView(@levelComponent), @$el.find('.patches-view'))
|
||||
@$el.find('#watch-component-button').find('> span').toggleClass('secret') if @levelComponent.watching()
|
||||
|
||||
buildSettingsTreema: ->
|
||||
data = _.pick @levelComponent.attributes, (value, key) => key in @editableSettings
|
||||
|
@ -93,10 +95,6 @@ module.exports = class LevelComponentEditView extends View
|
|||
Backbone.Mediator.publish 'level-component-editing-ended', levelComponent: @levelComponent
|
||||
null
|
||||
|
||||
destroy: ->
|
||||
@editor?.destroy()
|
||||
super()
|
||||
|
||||
showVersionHistory: (e) ->
|
||||
versionHistoryView = new VersionHistoryView component:@levelComponent, @levelComponent.id
|
||||
@openModalView versionHistoryView
|
||||
|
@ -104,4 +102,14 @@ module.exports = class LevelComponentEditView extends View
|
|||
|
||||
startPatchingComponent: (e) ->
|
||||
@openModalView new SaveVersionModal({model:@levelComponent})
|
||||
Backbone.Mediator.publish 'level:view-switched', e
|
||||
Backbone.Mediator.publish 'level:view-switched', e
|
||||
|
||||
toggleWatchComponent: ->
|
||||
button = @$el.find('#watch-component-button')
|
||||
@levelComponent.watch(button.find('.watch').is(':visible'))
|
||||
button.find('> span').toggleClass('secret')
|
||||
|
||||
destroy: ->
|
||||
@editor?.destroy()
|
||||
super()
|
||||
|
||||
|
|
|
@ -94,6 +94,7 @@ module.exports = class EditorLevelView extends View
|
|||
Backbone.Mediator.publish 'level-loaded', level: @level
|
||||
@showReadOnly() if me.get('anonymous')
|
||||
@patchesView = @insertSubView(new PatchesView(@level), @$el.find('.patches-view'))
|
||||
@$el.find('#watch-button').find('> span').toggleClass('secret') if @level.watching()
|
||||
|
||||
onPlayLevel: (e) ->
|
||||
sendLevel = =>
|
||||
|
|
|
@ -112,11 +112,8 @@ module.exports = class Handler
|
|||
return @sendNotFoundError(res) unless document?
|
||||
watchers = document.get('watchers') or []
|
||||
me = req.user.get('_id')
|
||||
console.log 'watchers?', me, watchers
|
||||
watchers = (l for l in watchers when not l.equals(me))
|
||||
console.log 'new watchers is', watchers, req.body.on, req.body
|
||||
watchers.push me if req.body.on and req.body.on isnt 'false'
|
||||
console.log 'watchers is actually now', watchers
|
||||
document.set 'watchers', watchers
|
||||
document.save (err, document) =>
|
||||
return @sendDatabaseError(res, err) if err
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue