Changes: 1. rename the sandstorm "manage" permission to "edit" (old permission names: view, add, manage; new permission names: view, add, edit). Rationale: "edit" best describes this permission's current powers, to users and to operators. If we ever added more manager-type features we'd want that to be a new permission, not a rename of the existing one (which would change the powers of existing users). 2. rename the sandstorm roles for consistency with permissions (old role names: viewer, editor, manager; new role names: viewer, adder, editor) Rationale: it's needed to avoid confusion. 3. add a new option: --allow=view|add|edit|sandstorm (default: add). 'sandstorm' sets permissions according to the X-Sandstorm-Permissions header. Drop the --capabilities and --capabilities-header options. Rationale: it's simpler and more intuitive. 4. replace "capability" with "permission" in ui/docs/code. Rationale: consistent with the above, more familiar.
37 lines
1.3 KiB
Haskell
37 lines
1.3 KiB
Haskell
-- | /journal handlers.
|
|
|
|
{-# LANGUAGE NamedFieldPuns #-}
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
{-# LANGUAGE QuasiQuotes #-}
|
|
{-# LANGUAGE TemplateHaskell #-}
|
|
|
|
module Hledger.Web.Handler.JournalR where
|
|
|
|
import Hledger
|
|
import Hledger.Cli.CliOptions
|
|
import Hledger.Web.Import
|
|
import Hledger.Web.WebOptions
|
|
import Hledger.Web.Widget.AddForm (addModal)
|
|
import Hledger.Web.Widget.Common
|
|
(accountQuery, mixedAmountAsHtml,
|
|
transactionFragment, replaceInacct)
|
|
|
|
-- | The formatted journal view, with sidebar.
|
|
getJournalR :: Handler Html
|
|
getJournalR = do
|
|
checkServerSideUiEnabled
|
|
VD{perms, j, q, opts, qparam, qopts, today} <- getViewData
|
|
when (ViewPermission `notElem` perms) (permissionDenied "Missing the 'view' permission")
|
|
let title = case inAccount qopts of
|
|
Nothing -> "General Journal"
|
|
Just (a, inclsubs) -> "Transactions in " <> a <> if inclsubs then "" else " (excluding subaccounts)"
|
|
title' = title <> if q /= Any then ", filtered" else ""
|
|
acctlink a = (RegisterR, [("q", replaceInacct qparam $ accountQuery a)])
|
|
rspec = (reportspec_ $ cliopts_ opts){_rsQuery = filterQuery (not . queryIsDepth) q}
|
|
items = reverse $ entriesReport rspec j
|
|
transactionFrag = transactionFragment j
|
|
|
|
defaultLayout $ do
|
|
setTitle "journal - hledger-web"
|
|
$(widgetFile "journal")
|