Moved editors from PUT to POST so that version saving behavior is preserved and admins can PUT without saving new versions.
This commit is contained in:
parent
d85bf8d59a
commit
c54fd5ab4b
9 changed files with 35 additions and 36 deletions
|
@ -33,7 +33,7 @@ module.exports = class ForkModal extends ModalView
|
|||
if @model.schema().properties.permissions
|
||||
newModel.set 'permissions', [access: 'owner', target: me.id]
|
||||
newPathPrefix = "editor/#{@editorPath}/"
|
||||
res = newModel.save()
|
||||
res = newModel.save(null, {type: 'POST'}) # Override PUT so we can trigger postFirstVersion logic
|
||||
return unless res
|
||||
res.error =>
|
||||
@hideLoading()
|
||||
|
|
|
@ -83,7 +83,7 @@ module.exports = class ArticleEditView extends RootView
|
|||
|
||||
newArticle = if e.major then @article.cloneNewMajorVersion() else @article.cloneNewMinorVersion()
|
||||
newArticle.set('commitMessage', e.commitMessage)
|
||||
res = newArticle.save()
|
||||
res = newArticle.save(null, {type: 'POST'}) # Override PUT so we can trigger postNewVersion logic
|
||||
return unless res
|
||||
modal = @$el.find('#save-version-modal')
|
||||
@enableModalInProgress(modal)
|
||||
|
|
|
@ -28,7 +28,7 @@ module.exports = class NewLevelComponentModal extends ModalView
|
|||
component.set 'name', name
|
||||
component.set 'code', component.get('code', true).replace(/AttacksSelf/g, name)
|
||||
component.set 'permissions', [{access: 'owner', target: me.id}] # Private until saved in a published Level
|
||||
res = component.save()
|
||||
res = component.save(null, {type: 'POST'}) # Override PUT so we can trigger postFirstVersion logic
|
||||
return unless res
|
||||
|
||||
@showLoading()
|
||||
|
|
|
@ -97,7 +97,7 @@ module.exports = class SaveLevelModal extends SaveVersionModal
|
|||
tuples = _.zip(modelsToSave, formsToSave)
|
||||
for [newModel, form] in tuples
|
||||
newModel.updateI18NCoverage() if newModel.get('i18nCoverage')
|
||||
res = newModel.save()
|
||||
res = newModel.save(null, {type: 'POST'}) # Override PUT so we can trigger postNewVersion logic
|
||||
do (newModel, form) =>
|
||||
res.error =>
|
||||
@hideLoading()
|
||||
|
|
|
@ -22,7 +22,7 @@ module.exports = class NewLevelSystemModal extends ModalView
|
|||
system.set 'name', name
|
||||
system.set 'code', system.get('code').replace(/Jitter/g, name)
|
||||
system.set 'permissions', [{access: 'owner', target: me.id}] # Private until saved in a published Level
|
||||
res = system.save()
|
||||
res = system.save(null, {type: 'POST'}) # Override PUT so we can trigger postFirstVersion logic
|
||||
return unless res
|
||||
|
||||
@showLoading()
|
||||
|
|
|
@ -36,7 +36,7 @@ module.exports = class NewModelModal extends ModalView
|
|||
onModelSubmitted: (e) ->
|
||||
e.preventDefault()
|
||||
model = @makeNewModel()
|
||||
res = model.save()
|
||||
res = model.save(null, {type: 'POST'}) # Override PUT so we can trigger postFirstVersion logic if needed
|
||||
return unless res
|
||||
|
||||
forms.clearFormAlerts @$el
|
||||
|
|
|
@ -367,7 +367,7 @@ module.exports = class ThangTypeEditView extends RootView
|
|||
newThangType.set('commitMessage', e.commitMessage)
|
||||
newThangType.updateI18NCoverage() if newThangType.get('i18nCoverage')
|
||||
|
||||
res = newThangType.save()
|
||||
res = newThangType.save(null, {type: 'POST'}) # Override PUT so we can trigger postNewVersion logic
|
||||
return unless res
|
||||
modal = $('#save-version-modal')
|
||||
@enableModalInProgress(modal)
|
||||
|
|
|
@ -160,7 +160,7 @@ module.exports = class I18NEditModelView extends RootView
|
|||
button = $(e.target)
|
||||
button.attr('disabled', 'disabled')
|
||||
return button.text('Failed to Submit Changes') if errors
|
||||
res = modelToSave.save()
|
||||
res = modelToSave.save(null, {type: 'POST'}) # Override PUT so we can trigger postNewVersion logic
|
||||
return button.text('Failed to Submit Changes') unless res
|
||||
res.error => button.text('Error Submitting Changes')
|
||||
res.success => button.text('Submit Changes')
|
||||
|
|
|
@ -34,7 +34,7 @@ module.exports = class Handler
|
|||
hasAccessToDocument: (req, document, method=null) ->
|
||||
return true if req.user?.isAdmin()
|
||||
|
||||
if @modelClass.schema.uses_coco_translation_coverage and (method or req.method).toLowerCase() is 'put'
|
||||
if @modelClass.schema.uses_coco_translation_coverage and (method or req.method).toLowerCase() is 'post'
|
||||
return true if @isJustFillingTranslations(req, document)
|
||||
|
||||
if @modelClass.schema.uses_coco_permissions
|
||||
|
@ -335,8 +335,7 @@ module.exports = class Handler
|
|||
put: (req, res, id) ->
|
||||
# Client expects PATCH behavior for PUTs
|
||||
# Real PATCHs return incorrect HTTP responses in some environments (e.g. Browserstack, schools)
|
||||
return @postNewVersion(req, res) if @modelClass.schema.uses_coco_versions # Old logic - https://github.com/codecombat/codecombat/commit/0bdec68cfc2997a1d03458e516ecedd7c7f389a9#diff-859d2856438fffa609001ae3b7b74c27R331
|
||||
#return @sendForbiddenError(res) if @modelClass.schema.uses_coco_versions and not req.user.isAdmin() # New logic (from campaign editor) that breaks saving versioned documents, like in the level editor.
|
||||
return @sendForbiddenError(res) if @modelClass.schema.uses_coco_versions and not req.user.isAdmin() # Campaign editor just saves over things.
|
||||
return @sendBadInputError(res, 'No input.') if _.isEmpty(req.body)
|
||||
return @sendForbiddenError(res) unless @hasAccess(req)
|
||||
@getDocumentForIdOrSlug req.body._id or id, (err, document) =>
|
||||
|
|
Reference in a new issue