web: Post -> AddForm; drop/comment more old stuff
This commit is contained in:
		
							parent
							
								
									a1aff10225
								
							
						
					
					
						commit
						55967e9192
					
				| @ -1,6 +1,6 @@ | ||||
| -- | POST helpers. | ||||
| 
 | ||||
| module Handler.Post where | ||||
| module Handler.AddForm where | ||||
| 
 | ||||
| import Import | ||||
| 
 | ||||
| @ -10,6 +10,7 @@ import Data.List (sort) | ||||
| import qualified Data.List as L (head) -- qualified keeps dev & prod builds warning-free | ||||
| import Data.Text (unpack) | ||||
| import qualified Data.Text as T | ||||
| import Data.Time.Calendar | ||||
| import Text.Parsec (digit, eof, many1, string, runParser) | ||||
| 
 | ||||
| import Hledger.Utils | ||||
| @ -18,20 +19,11 @@ import Hledger.Read | ||||
| import Hledger.Cli hiding (num) | ||||
| 
 | ||||
| 
 | ||||
| -- | Handle a post from any of the edit forms. | ||||
| handlePost :: Handler Html | ||||
| handlePost = do | ||||
|   action <- lookupPostParam  "action" | ||||
|   case action of Just "add"    -> handleAdd | ||||
|                  -- Just "edit"   -> handleEdit | ||||
|                  -- Just "import" -> handleImport | ||||
|                  _             -> invalidArgs ["invalid action"] | ||||
| 
 | ||||
| -- | Handle a post from the transaction add form. | ||||
| handleAdd :: Handler Html | ||||
| handleAdd = do | ||||
| postAddForm :: Handler Html | ||||
| postAddForm = do | ||||
|   VD{..} <- getViewData | ||||
|   -- XXX gruesome form handling, port to yesod-form later | ||||
|   -- XXX gruesome form handling, port to yesod-form. cf #234 | ||||
|   mjournalpath <- lookupPostParam  "journal" | ||||
|   mdate <- lookupPostParam  "date" | ||||
|   mdesc <- lookupPostParam  "description" | ||||
| @ -46,7 +38,9 @@ handleAdd = do | ||||
|                               ) | ||||
|                        mjournalpath | ||||
|       estrs = [edate, edesc, ejournalpath] | ||||
|       (errs1, [date,desc,journalpath]) = (lefts estrs, rights estrs) | ||||
|       (errs1, [date, desc, journalpath]) = case (lefts estrs, rights estrs) of | ||||
|         ([], [_,_,_]) -> ([], rights estrs) | ||||
|         _             -> (lefts estrs, [error "",error "",error ""]) -- RHS won't be used | ||||
|   (params,_) <- runRequestBody | ||||
|   -- mtrace params | ||||
|   let paramnamep s = do {string s; n <- many1 digit; eof; return (read n :: Int)} | ||||
| @ -97,37 +91,32 @@ handleAdd = do | ||||
| 
 | ||||
|   redirect (JournalR) -- , [("add","1")]) | ||||
| 
 | ||||
| -- personForm :: Html -> MForm Handler (FormResult Person, Widget) | ||||
| -- personForm extra = do | ||||
| --     (nameRes, nameView) <- mreq textField "this is not used" Nothing | ||||
| --     (ageRes, ageView) <- mreq intField "neither is this" Nothing | ||||
| --     let personRes = Person <$> nameRes <*> ageRes | ||||
| --     let widget = do | ||||
| --             toWidget | ||||
| --                 [lucius| | ||||
| --                     ##{fvId ageView} { | ||||
| --                         width: 3em; | ||||
| --                     } | ||||
| --                 |] | ||||
| --             [whamlet| | ||||
| --                 #{extra} | ||||
| --                 <p> | ||||
| --                     Hello, my name is # | ||||
| --                     ^{fvInput nameView} | ||||
| --                     \ and I am # | ||||
| --                     ^{fvInput ageView} | ||||
| --                     \ years old. # | ||||
| --                     <input type=submit value="Introduce myself"> | ||||
| --             |] | ||||
| --     return (personRes, widget) | ||||
| -- | ||||
| --     ((res, widget), enctype) <- runFormGet personForm | ||||
| --     defaultLayout | ||||
| --         [whamlet| | ||||
| --             <p>Result: #{show res} | ||||
| --             <form enctype=#{enctype}> | ||||
| --                 ^{widget} | ||||
| --         |] | ||||
| -- -- | Handle a post from the journal edit form. | ||||
| -- handleEdit :: Handler Html | ||||
| -- handleEdit = do | ||||
| --   VD{..} <- getViewData | ||||
| --   -- get form input values, or validation errors. | ||||
| --   -- getRequest >>= liftIO (reqRequestBody req) >>= mtrace | ||||
| --   mtext <- lookupPostParam "text" | ||||
| --   mtrace "--------------------------" | ||||
| --   mtrace (journalFilePaths j) | ||||
| --   mjournalpath <- lookupPostParam "journal" | ||||
| --   let etext = maybe (Left "No value provided") (Right . unpack) mtext | ||||
| --       ejournalpath = maybe | ||||
| --                        (Right $ journalFilePath j) | ||||
| --                        (\f -> let f' = unpack f in | ||||
| --                               if f' `elem` dbg0 "paths2" (journalFilePaths j) | ||||
| --                               then Right f' | ||||
| --                               else Left ("unrecognised journal file path"::String)) | ||||
| --                        mjournalpath | ||||
| --       estrs = [etext, ejournalpath] | ||||
| --       errs = lefts estrs | ||||
| --       [text,journalpath] = rights estrs | ||||
| --   -- display errors or perform edit | ||||
| --   if not $ null errs | ||||
| --    then do | ||||
| --     setMessage $ toHtml (intercalate "; " errs :: String) | ||||
| --     redirect JournalR | ||||
| 
 | ||||
| -- -- | Handle a post from the journal edit form. | ||||
| -- handleEdit :: Handler Html | ||||
| @ -120,51 +120,51 @@ searchform VD{..} = [hamlet| | ||||
|  where | ||||
|   filtering = not $ null q | ||||
| 
 | ||||
| -- | Edit journal form. | ||||
| editform :: ViewData -> HtmlUrl AppRoute | ||||
| editform VD{..} = [hamlet| | ||||
| <form#editform method=POST style=display:none;> | ||||
|  <h2#contenttitle>#{title}> | ||||
|  <table.form> | ||||
|   $if manyfiles | ||||
|    <tr> | ||||
|     <td colspan=2> | ||||
|      Editing ^{journalselect $ files j} | ||||
|   <tr> | ||||
|    <td colspan=2> | ||||
|     <!-- XXX textarea ids are unquoted journal file paths here, not valid html --> | ||||
|     $forall f <- files j | ||||
|      <textarea id=#{fst f}_textarea name=text rows=25 cols=80 style=display:none; disabled=disabled> | ||||
|       \#{snd f} | ||||
|   <tr#addbuttonrow> | ||||
|    <td> | ||||
|     <span.help>^{formathelp} | ||||
|    <td align=right> | ||||
|     <span.help> | ||||
|      Are you sure ? This will overwrite the journal. # | ||||
|     <input type=hidden name=action value=edit> | ||||
|     <input type=submit name=submit value="save journal"> | ||||
|     \ or # | ||||
|     <a href="#" onclick="return editformToggle(event)">cancel | ||||
| |] | ||||
|   where | ||||
|     title = "Edit journal" :: String | ||||
|     manyfiles = length (files j) > 1 | ||||
|     formathelp = helplink "file-format" "file format help" | ||||
| -- -- | Edit journal form. | ||||
| -- editform :: ViewData -> HtmlUrl AppRoute | ||||
| -- editform VD{..} = [hamlet| | ||||
| -- <form#editform method=POST style=display:none;> | ||||
| --  <h2#contenttitle>#{title}> | ||||
| --  <table.form> | ||||
| --   $if manyfiles | ||||
| --    <tr> | ||||
| --     <td colspan=2> | ||||
| --      Editing ^{journalselect $ files j} | ||||
| --   <tr> | ||||
| --    <td colspan=2> | ||||
| --     <!-- XXX textarea ids are unquoted journal file paths here, not valid html --> | ||||
| --     $forall f <- files j | ||||
| --      <textarea id=#{fst f}_textarea name=text rows=25 cols=80 style=display:none; disabled=disabled> | ||||
| --       \#{snd f} | ||||
| --   <tr#addbuttonrow> | ||||
| --    <td> | ||||
| --     <span.help>^{formathelp} | ||||
| --    <td align=right> | ||||
| --     <span.help> | ||||
| --      Are you sure ? This will overwrite the journal. # | ||||
| --     <input type=hidden name=action value=edit> | ||||
| --     <input type=submit name=submit value="save journal"> | ||||
| --     \ or # | ||||
| --     <a href="#" onclick="return editformToggle(event)">cancel | ||||
| -- |] | ||||
| --   where | ||||
| --     title = "Edit journal" :: String | ||||
| --     manyfiles = length (files j) > 1 | ||||
| --     formathelp = helplink "file-format" "file format help" | ||||
| 
 | ||||
| -- | Import journal form. | ||||
| importform :: HtmlUrl AppRoute | ||||
| importform = [hamlet| | ||||
| <form#importform method=POST style=display:none;> | ||||
|  <table.form> | ||||
|   <tr> | ||||
|    <td> | ||||
|     <input type=file name=file> | ||||
|     <input type=hidden name=action value=import> | ||||
|     <input type=submit name=submit value="import from file"> | ||||
|     \ or # | ||||
|     <a href="#" onclick="return importformToggle(event)">cancel | ||||
| |] | ||||
| -- -- | Import journal form. | ||||
| -- importform :: HtmlUrl AppRoute | ||||
| -- importform = [hamlet| | ||||
| -- <form#importform method=POST style=display:none;> | ||||
| --  <table.form> | ||||
| --   <tr> | ||||
| --    <td> | ||||
| --     <input type=file name=file> | ||||
| --     <input type=hidden name=action value=import> | ||||
| --     <input type=submit name=submit value="import from file"> | ||||
| --     \ or # | ||||
| --     <a href="#" onclick="return importformToggle(event)">cancel | ||||
| -- |] | ||||
| 
 | ||||
| -- | Link to a topic in the manual. | ||||
| helplink :: String -> String -> HtmlUrl AppRoute | ||||
|  | ||||
| @ -1,20 +0,0 @@ | ||||
| -- | /journal/edit handlers. | ||||
| 
 | ||||
| module Handler.JournalEditR where | ||||
| 
 | ||||
| import Import | ||||
| 
 | ||||
| import Handler.Common | ||||
| import Handler.Post | ||||
| 
 | ||||
| 
 | ||||
| -- | The journal editform, no sidebar. | ||||
| getJournalEditR :: Handler Html | ||||
| getJournalEditR = do | ||||
|   vd <- getViewData | ||||
|   defaultLayout $ do | ||||
|       setTitle "hledger-web journal edit form" | ||||
|       toWidget $ editform vd | ||||
| 
 | ||||
| postJournalEditR :: Handler Html | ||||
| postJournalEditR = handlePost | ||||
| @ -4,8 +4,8 @@ module Handler.JournalR where | ||||
| 
 | ||||
| import Import | ||||
| 
 | ||||
| import Handler.AddForm | ||||
| import Handler.Common | ||||
| import Handler.Post | ||||
| 
 | ||||
| import Hledger.Data | ||||
| import Hledger.Query | ||||
| @ -38,7 +38,7 @@ getJournalR = do | ||||
|      |] | ||||
| 
 | ||||
| postJournalR :: Handler Html | ||||
| postJournalR = handlePost | ||||
| postJournalR = postAddForm | ||||
| 
 | ||||
| -- | Render a "TransactionsReport" as html for the formatted journal view. | ||||
| journalTransactionsReportAsHtml :: WebOpts -> ViewData -> TransactionsReport -> HtmlUrl AppRoute | ||||
|  | ||||
| @ -8,8 +8,8 @@ import Data.List | ||||
| import Data.Maybe | ||||
| import Safe | ||||
| 
 | ||||
| import Handler.AddForm | ||||
| import Handler.Common | ||||
| import Handler.Post | ||||
| import Handler.Utils | ||||
| 
 | ||||
| import Hledger.Data | ||||
| @ -40,7 +40,7 @@ getRegisterR = do | ||||
|      |] | ||||
| 
 | ||||
| postRegisterR :: Handler Html | ||||
| postRegisterR = handlePost | ||||
| postRegisterR = postAddForm | ||||
| 
 | ||||
| -- Generate html for an account register, including a balance chart and transaction list. | ||||
| registerReportHtml :: WebOpts -> ViewData -> TransactionsReport -> HtmlUrl AppRoute | ||||
|  | ||||
| @ -5,7 +5,6 @@ | ||||
| /journal         JournalR        GET POST | ||||
| /register        RegisterR       GET POST | ||||
| /sidebar         SidebarR        GET | ||||
| -- /journal/edit    JournalEditR    GET POST | ||||
| -- | ||||
| 
 | ||||
| -- /accounts        AccountsR       GET | ||||
| -- /api/accounts    AccountsJsonR   GET | ||||
|  | ||||
| @ -141,10 +141,9 @@ library | ||||
|                      Settings | ||||
|                      Settings.StaticFiles | ||||
|                      Settings.Development | ||||
|                      Handler.AddForm | ||||
|                      Handler.Common | ||||
|                      Handler.JournalEditR | ||||
|                      Handler.JournalR | ||||
|                      Handler.Post | ||||
|                      Handler.RegisterR | ||||
|                      Handler.RootR | ||||
|                      Handler.SidebarR | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user