From 5eae2bb488ddde6d62dd0b5e96da51db8ffdfd55 Mon Sep 17 00:00:00 2001 From: Andrew Miner Date: Sat, 7 May 2016 08:12:39 -0700 Subject: [PATCH] Start editing after login needed for editing When a user isn't logged in, click the "Edit" button on an item description will initiate the login process. After it is complete, the user is placed back on the page where they started. However, the edit box remains closed. So, after all the activity which resulted in trying to edit, they user still has to click the edit button one more time to actually start editing. This change makes it so that the user returning from the login process is placed directly into edit mode without having to click the button a second time. fixes #237 --- .../markdown_section_controller.coffee | 19 ++++++++++--------- .../item_page/item_page_controller.coffee | 5 +++++ src/client/site/router.coffee | 7 +++++-- src/client/site/site_controller.coffee | 2 +- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/client/site/common/markdown_section/markdown_section_controller.coffee b/src/client/site/common/markdown_section/markdown_section_controller.coffee index 41c4786d0..8b2f1850c 100644 --- a/src/client/site/common/markdown_section/markdown_section_controller.coffee +++ b/src/client/site/common/markdown_section/markdown_section_controller.coffee @@ -60,16 +60,15 @@ module.exports = class MarkdownSectionController extends BaseController # Event Methods ################################################################################ onCancelClicked: (event)-> - event.preventDefault() @model = @_originalModel @resetToDefaultState() @_imageListController.reset() @_updatePreview() + return false onEditClicked: (event)-> - event.preventDefault() - return unless @editable + return false unless @editable @_originalModel = @model @state = @State.waiting @@ -81,22 +80,22 @@ module.exports = class MarkdownSectionController extends BaseController @state = @State.appologizing w(true).delay(@_confirmDuration).then => @resetToDefaultState() + return false + onQuestionClicked: (event)-> - event.preventDefault() @_enterFeedback '' + return false onPreviewClicked: (event)-> - event.preventDefault() @_updatePreview() @state = @State.previewing + return false onReturnClicked: (event)-> - event.preventDefault() @state = @State.editing + return false onSaveClicked: (event)-> - event.preventDefault() - @state = @State.waiting @_endEditing() .then => @@ -109,9 +108,11 @@ module.exports = class MarkdownSectionController extends BaseController .then => @state = @State.viewing + return false + onTextChanged: (event)-> - event.preventDefault() @model = @$textarea.val() + return false # Property Methods ############################################################################# diff --git a/src/client/site/item_page/item_page_controller.coffee b/src/client/site/item_page/item_page_controller.coffee index 37266d0d6..f2d996547 100644 --- a/src/client/site/item_page/item_page_controller.coffee +++ b/src/client/site/item_page/item_page_controller.coffee @@ -41,6 +41,7 @@ module.exports = class ItemPageController extends PageController @_itemSlug = options.itemSlug @_modPack = options.modPack @_router = options.router + @_triggerEditing = options.login @_modPack.on c.event.change, => @tryRefresh() @@ -138,6 +139,10 @@ module.exports = class ItemPageController extends PageController else @hide @$craftingPlanButton + if @_triggerEditing + @_triggerEditing = false + @_descriptionController.onEditClicked {} + @show() else @hide() diff --git a/src/client/site/router.coffee b/src/client/site/router.coffee index 7af9b39c3..cb04b7c76 100644 --- a/src/client/site/router.coffee +++ b/src/client/site/router.coffee @@ -98,12 +98,15 @@ module.exports = class Router extends Backbone.Router @_siteController.setPage 'browseMod', controller route__browseModItem: (modSlug, itemSlug)-> + params = new UrlParams login:{type:'boolean', default:false} slug = new ItemSlug modSlug, itemSlug - controller = new ItemPageController @_makeOptions {itemSlug:slug} + controller = new ItemPageController @_makeOptions {itemSlug:slug, login:params.login} @_siteController.setPage 'browseModItem', controller route__browseTutorial: (modSlug, tutorialSlug)-> - controller = new TutorialPageController @_makeOptions {modSlug:modSlug, tutorialSlug:tutorialSlug} + params = new UrlParams login:{type:'boolean', default:false} + controller = new TutorialPageController @_makeOptions + login:params.login, modSlug:modSlug, tutorialSlug:tutorialSlug @_siteController.setPage 'browseTutorial', controller route__configure: -> diff --git a/src/client/site/site_controller.coffee b/src/client/site/site_controller.coffee index 8969a014d..b845f8383 100644 --- a/src/client/site/site_controller.coffee +++ b/src/client/site/site_controller.coffee @@ -84,7 +84,7 @@ module.exports = class SiteController extends BaseController resumeAfterLogin: -> url = @storage.load 'post-login-url' - url = if (not url? or url is 'null') then null else url + url = if (not url? or url is 'null') then null else url + '?login=true' if url? then @router.navigate url, trigger:true @storage.store 'post-login-url', null