minor: integrate invoices

This commit is contained in:
Jean-Baptiste Pasquier 2021-04-15 15:57:17 +02:00
parent b6ca0c85ed
commit f1cf8b41fd
4 changed files with 61 additions and 9 deletions

View File

@ -424,6 +424,36 @@ Where:
Setting custom langs will not allow user to choose their own lang. Setting custom langs will not allow user to choose their own lang.
### Invoices
Invoices allow your Projects to manage invoices
Project is mandatory.
You'll need:
On Server: `djangoldp_invoice` packages
Module declaration, on `config.json`:
```json
{
"type": "projects",
"extensions": [
{
"type": "invoices",
"endpoints": {
"uploads": "http://server.url/upload/"
}
}
]
}
```
Where:
* `xmpp` is your [Prosody](https://prosody.im/) with [appropriate modules](https://git.startinblox.com/infra/prosody-modules/) configured on.
### Job Offers ### Job Offers
Job Offers includes a job board with conversation. To activate them Job Offers includes a job board with conversation. To activate them

View File

@ -18,25 +18,25 @@
for extension of component.extensions for extension of component.extensions
if extension.type == 'events' if extension.type == 'events'
div( div(
id=`${component.route}-events` id=`${extension.route}-events`
hidden hidden
data-view=`${component.route}-events` data-view=`${extension.route}-events`
no-render no-render
) )
include partials/circle/page-circle-events.pug include partials/circle/page-circle-events.pug
if extension.type == 'resources' if extension.type == 'resources'
div( div(
id=`${component.route}-resources` id=`${extension.route}-resources`
hidden hidden
data-view=`${component.route}-resources` data-view=`${extension.route}-resources`
no-render no-render
) )
include partials/circle/page-circle-resources.pug include partials/circle/page-circle-resources.pug
if extension.type == 'polls' if extension.type == 'polls'
div( div(
id=`${component.route}-polls` id=`${extension.route}-polls`
hidden hidden
data-view=`${component.route}-polls` data-view=`${extension.route}-polls`
no-render no-render
) )
include partials/circle/page-circle-polls.pug include partials/circle/page-circle-polls.pug
@ -60,17 +60,17 @@ nav.jsRightMenu.text-disable-selection.sidebar.whitespace-normal(role='navigatio
if component.extensions if component.extensions
for extension of component.extensions for extension of component.extensions
if extension.type == 'resources' if extension.type == 'resources'
solid-route.segment.full(name=`${component.route}-resources` use-id) solid-route.segment.full(name=`${extension.route}-resources` use-id)
li.segment.full.padding-medium li.segment.full.padding-medium
span.icon.ci-file.icon-xlarge.margin-right-medium span.icon.ci-file.icon-xlarge.margin-right-medium
a(data-trans='circle.menuRight.resources') a(data-trans='circle.menuRight.resources')
if extension.type == 'events' if extension.type == 'events'
solid-route.segment.full(name=`${component.route}-events` use-id) solid-route.segment.full(name=`${extension.route}-events` use-id)
li.segment.full.padding-medium li.segment.full.padding-medium
span.icon.ci-appointment.icon-xlarge.margin-right-medium span.icon.ci-appointment.icon-xlarge.margin-right-medium
a(data-trans='circle.menuRight.events') a(data-trans='circle.menuRight.events')
if extension.type == 'polls' if extension.type == 'polls'
solid-route.segment.full(name=`${component.route}-polls` use-id) solid-route.segment.full(name=`${extension.route}-polls` use-id)
li.segment.full.padding-medium li.segment.full.padding-medium
span.icon.ci-list.icon-xlarge.margin-right-medium span.icon.ci-list.icon-xlarge.margin-right-medium
a(data-trans='circle.menuRight.polls') a(data-trans='circle.menuRight.polls')

View File

@ -21,6 +21,16 @@
no-render no-render
) )
include partials/project/page-project-picture.pug include partials/project/page-project-picture.pug
if component.extensions
for extension of component.extensions
if extension.type == 'invoices'
div(
id=`${extension.route}-invoices`
hidden
data-view=`${extension.route}-invoices`
no-render
)
include partials/project/page-project-invoices.pug
nav.jsRightMenu.text-disable-selection.sidebar.whitespace-normal(role='navigation') nav.jsRightMenu.text-disable-selection.sidebar.whitespace-normal(role='navigation')
solid-router.segment.whitespace-normal.text-color-heading.text-bold(default-route=`${component.route}-chat`) solid-router.segment.whitespace-normal.text-color-heading.text-bold(default-route=`${component.route}-chat`)
@ -39,3 +49,10 @@ nav.jsRightMenu.text-disable-selection.sidebar.whitespace-normal(role='navigatio
span.icon.ci-information.icon-xlarge.margin-right-medium span.icon.ci-information.icon-xlarge.margin-right-medium
a(data-trans='project.menuRight.information') a(data-trans='project.menuRight.information')
solid-route(name=`${component.route}-picture` use-id) solid-route(name=`${component.route}-picture` use-id)
if component.extensions
for extension of component.extensions
if extension.type == 'invoices'
solid-route.segment.full(name=`${extension.route}-invoices` use-id)
li.segment.full.padding-medium
span.icon.ci-list.icon-xlarge.margin-right-medium
a(data-trans='circle.menuRight.invoices')

View File

@ -0,0 +1,5 @@
solid-invoicing(
bind-resources
upload-dir=`${extension.endpoints.uploads}`
uniq=extension.uniq
)