rename to cannery

This commit is contained in:
shibao 2023-02-25 15:47:37 -05:00
parent bc034c0361
commit a778f5a61f
128 changed files with 999 additions and 998 deletions

View File

@ -1,6 +1,6 @@
kind: pipeline kind: pipeline
type: docker type: docker
name: lokal name: cannery
steps: steps:
- name: restore-cache - name: restore-cache
@ -19,7 +19,7 @@ steps:
- name: test - name: test
image: elixir:1.14.1-alpine image: elixir:1.14.1-alpine
environment: environment:
TEST_DATABASE_URL: ecto://postgres:postgres@database/lokal_test TEST_DATABASE_URL: ecto://postgres:postgres@database/cannery_test
HOST: testing.example.tld HOST: testing.example.tld
MIX_HOME: /drone/src/.mix MIX_HOME: /drone/src/.mix
MIX_ARCHIVES: /drone/src/.mix/archives MIX_ARCHIVES: /drone/src/.mix/archives
@ -39,7 +39,7 @@ steps:
image: thegeeklab/drone-docker-buildx image: thegeeklab/drone-docker-buildx
privileged: true privileged: true
settings: settings:
repo: shibaobun/lokal repo: shibaobun/cannery
purge: true purge: true
compress: true compress: true
platforms: linux/amd64,linux/arm/v7 platforms: linux/amd64,linux/arm/v7
@ -56,7 +56,7 @@ steps:
image: thegeeklab/drone-docker-buildx image: thegeeklab/drone-docker-buildx
privileged: true privileged: true
settings: settings:
repo: shibaobun/lokal repo: shibaobun/cannery
purge: true purge: true
compress: true compress: true
platforms: linux/amd64,linux/arm/v7 platforms: linux/amd64,linux/arm/v7

2
.gitignore vendored
View File

@ -20,7 +20,7 @@ erl_crash.dump
*.ez *.ez
# Ignore package tarball (built via "mix hex.build"). # Ignore package tarball (built via "mix hex.build").
lokal-*.tar cannery-*.tar
# If NPM crashes, it generates a log, let's ignore it too. # If NPM crashes, it generates a log, let's ignore it too.
npm-debug.log npm-debug.log

View File

@ -77,21 +77,21 @@ Check them out!
For development, I recommend setting environment variables with For development, I recommend setting environment variables with
[direnv](https://direnv.net). [direnv](https://direnv.net).
By default, Lokal will always bind to all external IPv4 and IPv6 addresses in By default, Cannery will always bind to all external IPv4 and IPv6 addresses in
`dev` and `prod` mode, respectively. If you would like to use different values, `dev` and `prod` mode, respectively. If you would like to use different values,
they will need to be overridden in `config/dev.exs` and `config/runtime.exs` for they will need to be overridden in `config/dev.exs` and `config/runtime.exs` for
`dev` and `prod` modes, respectively. `dev` and `prod` modes, respectively.
## `MIX_ENV=dev` ## `MIX_ENV=dev`
In `dev` mode, Lokal will listen for these environment variables at runtime. In `dev` mode, Cannery will listen for these environment variables at runtime.
- `HOST`: External url to generate links with. Set this especially if you're - `HOST`: External url to generate links with. Set this especially if you're
behind a reverse proxy. Defaults to `localhost`. External URLs will always be behind a reverse proxy. Defaults to `localhost`. External URLs will always be
generated with `https://` and port `443`. generated with `https://` and port `443`.
- `PORT`: Internal port to bind to. Defaults to `4000`. - `PORT`: Internal port to bind to. Defaults to `4000`.
- `DATABASE_URL`: Controls the database url to connect to. Defaults to - `DATABASE_URL`: Controls the database url to connect to. Defaults to
`ecto://postgres:postgres@localhost/lokal_dev`. `ecto://postgres:postgres@localhost/cannery_dev`.
- `ECTO_IPV6`: Controls if Ecto should use IPv6 to connect to PostgreSQL. - `ECTO_IPV6`: Controls if Ecto should use IPv6 to connect to PostgreSQL.
Defaults to `false`. Defaults to `false`.
- `POOL_SIZE`: Controls the pool size to use with PostgreSQL. Defaults to `10`. - `POOL_SIZE`: Controls the pool size to use with PostgreSQL. Defaults to `10`.
@ -100,20 +100,20 @@ In `dev` mode, Lokal will listen for these environment variables at runtime.
## `MIX_ENV=test` ## `MIX_ENV=test`
In `test` mode (or in the Docker container), Lokal will listen for the same environment variables as dev mode, but also include the following at runtime: In `test` mode (or in the Docker container), Cannery will listen for the same environment variables as dev mode, but also include the following at runtime:
- `TEST_DATABASE_URL`: REPLACES `DATABASE_URL`. Controls the database url to - `TEST_DATABASE_URL`: REPLACES `DATABASE_URL`. Controls the database url to
connect to. Defaults to `ecto://postgres:postgres@localhost/lokal_test`. connect to. Defaults to `ecto://postgres:postgres@localhost/cannery_test`.
- `MIX_TEST_PARTITION`: Only used if `TEST_DATABASE_URL` is not specified. - `MIX_TEST_PARTITION`: Only used if `TEST_DATABASE_URL` is not specified.
Appended to the default database url if you would like to partition your test Appended to the default database url if you would like to partition your test
databases. Defaults to not set. databases. Defaults to not set.
## `MIX_ENV=prod` ## `MIX_ENV=prod`
In `prod` mode (or in the Docker container), Lokal will listen for the same environment variables as dev mode, but also include the following at runtime: In `prod` mode (or in the Docker container), Cannery will listen for the same environment variables as dev mode, but also include the following at runtime:
- `SECRET_KEY_BASE`: Secret key base used to sign cookies. Must be generated - `SECRET_KEY_BASE`: Secret key base used to sign cookies. Must be generated
with `docker run -it shibaobun/lokal mix phx.gen.secret` and set for server to start. with `docker run -it shibaobun/cannery mix phx.gen.secret` and set for server to start.
- `SMTP_HOST`: The url for your SMTP email provider. Must be set - `SMTP_HOST`: The url for your SMTP email provider. Must be set
- `SMTP_PORT`: The port for your SMTP relay. Defaults to `587`. - `SMTP_PORT`: The port for your SMTP relay. Defaults to `587`.
- `SMTP_USERNAME`: The username for your SMTP relay. Must be set! - `SMTP_USERNAME`: The username for your SMTP relay. Must be set!
@ -121,4 +121,4 @@ In `prod` mode (or in the Docker container), Lokal will listen for the same envi
- `SMTP_SSL`: Set to `true` to enable SSL for emails. Defaults to `false`. - `SMTP_SSL`: Set to `true` to enable SSL for emails. Defaults to `false`.
- `EMAIL_FROM`: Sets the sender email in sent emails. Defaults to - `EMAIL_FROM`: Sets the sender email in sent emails. Defaults to
`no-reply@HOST` where `HOST` was previously defined. `no-reply@HOST` where `HOST` was previously defined.
- `EMAIL_NAME`: Sets the sender name in sent emails. Defaults to "Lokal". - `EMAIL_NAME`: Sets the sender name in sent emails. Defaults to "Cannery".

View File

@ -45,10 +45,10 @@ RUN chown nobody:nobody /app
USER nobody:nobody USER nobody:nobody
COPY --from=build --chown=nobody:nobody /app/_build/prod/rel/lokal ./ COPY --from=build --chown=nobody:nobody /app/_build/prod/rel/cannery ./
COPY --from=build --chown=nobody:nobody /app/priv /app/priv COPY --from=build --chown=nobody:nobody /app/priv /app/priv
RUN chmod +x /app/priv/random.sh RUN chmod +x /app/priv/random.sh
ENV HOME=/app ENV HOME=/app
CMD ["bin/lokal", "start"] CMD ["bin/cannery", "start"]

View File

@ -1,6 +1,6 @@
# Lokal # Cannery
Lokal is a local business aggregation site helping you to shop locally by Cannery is a local business aggregation site helping you to shop locally by
providing a one-stop-shop for your local community. Set your profile and start providing a one-stop-shop for your local community. Set your profile and start
shopping today! shopping today!
@ -15,10 +15,10 @@ shopping today!
# Installation # Installation
1. Install [Docker Compose](https://docs.docker.com/compose/install/) or alternatively [Docker Desktop](https://docs.docker.com/desktop/) on your machine. 1. Install [Docker Compose](https://docs.docker.com/compose/install/) or alternatively [Docker Desktop](https://docs.docker.com/desktop/) on your machine.
1. Copy the example [docker-compose.yml](https://gitea.bubbletea.dev/shibao/lokal/src/branch/stable/docker-compose.yml). into your local machine where you want. 1. Copy the example [docker-compose.yml](https://gitea.bubbletea.dev/shibao/cannery/src/branch/stable/docker-compose.yml). into your local machine where you want.
Bind mounts are created in the same directory by default. Bind mounts are created in the same directory by default.
1. Set the configuration variables in `docker-compose.yml`. You'll need to run 1. Set the configuration variables in `docker-compose.yml`. You'll need to run
`docker run -it shibaobun/lokal /app/priv/random.sh` to generate a new `docker run -it shibaobun/cannery /app/priv/random.sh` to generate a new
secret key base. secret key base.
1. Use `docker-compose up` or `docker-compose up -d` to start the container! 1. Use `docker-compose up` or `docker-compose up -d` to start the container!
@ -26,19 +26,19 @@ The first created user will be created as an admin.
# Configuration # Configuration
You can use the following environment variables to configure Lokal in You can use the following environment variables to configure Cannery in
[docker-compose.yml](https://gitea.bubbletea.dev/shibao/lokal/src/branch/stable/docker-compose.yml). [docker-compose.yml](https://gitea.bubbletea.dev/shibao/cannery/src/branch/stable/docker-compose.yml).
- `HOST`: External url to generate links with. Must be set with your hosted - `HOST`: External url to generate links with. Must be set with your hosted
domain name! I.e. `lokal.mywebsite.tld` domain name! I.e. `cannery.mywebsite.tld`
- `PORT`: Internal port to bind to. Defaults to `4000`. Must be reverse proxied! - `PORT`: Internal port to bind to. Defaults to `4000`. Must be reverse proxied!
- `DATABASE_URL`: Controls the database url to connect to. Defaults to - `DATABASE_URL`: Controls the database url to connect to. Defaults to
`ecto://postgres:postgres@lokal-db/lokal`. `ecto://postgres:postgres@cannery-db/cannery`.
- `ECTO_IPV6`: If set to `true`, Ecto should use ipv6 to connect to PostgreSQL. - `ECTO_IPV6`: If set to `true`, Ecto should use ipv6 to connect to PostgreSQL.
Defaults to `false`. Defaults to `false`.
- `POOL_SIZE`: Controls the pool size to use with PostgreSQL. Defaults to `10`. - `POOL_SIZE`: Controls the pool size to use with PostgreSQL. Defaults to `10`.
- `SECRET_KEY_BASE`: Secret key base used to sign cookies. Must be generated - `SECRET_KEY_BASE`: Secret key base used to sign cookies. Must be generated
with `docker run -it shibaobun/lokal mix phx.gen.secret` and set for server to start. with `docker run -it shibaobun/cannery mix phx.gen.secret` and set for server to start.
- `REGISTRATION`: Controls if user sign-up should be invite only or set to - `REGISTRATION`: Controls if user sign-up should be invite only or set to
public. Set to `public` to enable public registration. Defaults to `invite`. public. Set to `public` to enable public registration. Defaults to `invite`.
- `LOCALE`: Sets a custom default locale. Defaults to `en_US`. - `LOCALE`: Sets a custom default locale. Defaults to `en_US`.
@ -49,9 +49,9 @@ You can use the following environment variables to configure Lokal in
- `SMTP_SSL`: Set to `true` to enable SSL for emails. Defaults to `false`. - `SMTP_SSL`: Set to `true` to enable SSL for emails. Defaults to `false`.
- `EMAIL_FROM`: Sets the sender email in sent emails. Defaults to - `EMAIL_FROM`: Sets the sender email in sent emails. Defaults to
`no-reply@HOST` where `HOST` was previously defined. `no-reply@HOST` where `HOST` was previously defined.
- `EMAIL_NAME`: Sets the sender name in sent emails. Defaults to "Lokal". - `EMAIL_NAME`: Sets the sender name in sent emails. Defaults to "Cannery".
--- ---
[![Build [![Build
Status](https://drone.bubbletea.dev/api/badges/shibao/lokal/status.svg?ref=refs/heads/dev)](https://drone.bubbletea.dev/shibao/lokal) Status](https://drone.bubbletea.dev/api/badges/shibao/cannery/status.svg?ref=refs/heads/dev)](https://drone.bubbletea.dev/shibao/cannery)

View File

@ -60,7 +60,7 @@ liveSocket.connect()
window.liveSocket = liveSocket window.liveSocket = liveSocket
// Copy to clipboard // Copy to clipboard
window.addEventListener('lokal:clipcopy', (event) => { window.addEventListener('cannery:clipcopy', (event) => {
if ('clipboard' in navigator) { if ('clipboard' in navigator) {
const text = event.target.textContent const text = event.target.textContent
navigator.clipboard.writeText(text) navigator.clipboard.writeText(text)

View File

@ -7,24 +7,24 @@
# General application configuration # General application configuration
import Config import Config
config :lokal, config :cannery,
ecto_repos: [Lokal.Repo], ecto_repos: [Cannery.Repo],
generators: [binary_id: true] generators: [binary_id: true]
config :lokal, Lokal.Accounts, registration: System.get_env("REGISTRATION", "invite") config :cannery, Cannery.Accounts, registration: System.get_env("REGISTRATION", "invite")
# Configures the endpoint # Configures the endpoint
config :lokal, LokalWeb.Endpoint, config :cannery, CanneryWeb.Endpoint,
url: [scheme: "https", host: System.get_env("HOST") || "localhost", port: "443"], url: [scheme: "https", host: System.get_env("HOST") || "localhost", port: "443"],
http: [port: String.to_integer(System.get_env("PORT") || "4000")], http: [port: String.to_integer(System.get_env("PORT") || "4000")],
secret_key_base: "KH59P0iZixX5gP/u+zkxxG8vAAj6vgt0YqnwEB5JP5K+E567SsqkCz69uWShjE7I", secret_key_base: "KH59P0iZixX5gP/u+zkxxG8vAAj6vgt0YqnwEB5JP5K+E567SsqkCz69uWShjE7I",
render_errors: [view: LokalWeb.ErrorView, accepts: ~w(html json), layout: false], render_errors: [view: CanneryWeb.ErrorView, accepts: ~w(html json), layout: false],
pubsub_server: Lokal.PubSub, pubsub_server: Cannery.PubSub,
live_view: [signing_salt: "zOLgd3lr"] live_view: [signing_salt: "zOLgd3lr"]
config :lokal, Lokal.Application, automigrate: false config :cannery, Cannery.Application, automigrate: false
config :lokal, :generators, config :cannery, :generators,
migration: true, migration: true,
binary_id: true, binary_id: true,
sample_binary_id: "11111111-1111-1111-1111-111111111111" sample_binary_id: "11111111-1111-1111-1111-111111111111"
@ -36,7 +36,7 @@ config :lokal, :generators,
# #
# For production it's recommended to configure a different adapter # For production it's recommended to configure a different adapter
# at the `config/runtime.exs`. # at the `config/runtime.exs`.
config :lokal, Lokal.Mailer, adapter: Swoosh.Adapters.Local config :cannery, Cannery.Mailer, adapter: Swoosh.Adapters.Local
# Swoosh API client is needed for adapters other than SMTP. # Swoosh API client is needed for adapters other than SMTP.
config :swoosh, :api_client, false config :swoosh, :api_client, false
@ -45,8 +45,8 @@ config :swoosh, :api_client, false
config :gettext, :default_locale, "en_US" config :gettext, :default_locale, "en_US"
# Configure Oban # Configure Oban
config :lokal, Oban, config :cannery, Oban,
repo: Lokal.Repo, repo: Cannery.Repo,
plugins: [Oban.Plugins.Pruner], plugins: [Oban.Plugins.Pruner],
queues: [default: 10, mailers: 20] queues: [default: 10, mailers: 20]

View File

@ -1,7 +1,7 @@
import Config import Config
# Configure your database # Configure your database
config :lokal, Lokal.Repo, config :cannery, Cannery.Repo,
show_sensitive_data_on_connection_error: true, show_sensitive_data_on_connection_error: true,
pool_size: 10 pool_size: 10
@ -11,7 +11,7 @@ config :lokal, Lokal.Repo,
# The watchers configuration can be used to run external # The watchers configuration can be used to run external
# watchers to your application. For example, we use it # watchers to your application. For example, we use it
# with esbuild to bundle .js and .css sources. # with esbuild to bundle .js and .css sources.
config :lokal, LokalWeb.Endpoint, config :cannery, CanneryWeb.Endpoint,
check_origin: false, check_origin: false,
code_reloader: true, code_reloader: true,
debug_errors: true, debug_errors: true,
@ -54,13 +54,13 @@ config :lokal, LokalWeb.Endpoint,
# different ports. # different ports.
# Watch static and templates for browser reloading. # Watch static and templates for browser reloading.
config :lokal, LokalWeb.Endpoint, config :cannery, CanneryWeb.Endpoint,
live_reload: [ live_reload: [
patterns: [ patterns: [
~r"priv/static/.*(js|css|png|jpeg|jpg|gif|svg)$", ~r"priv/static/.*(js|css|png|jpeg|jpg|gif|svg)$",
~r"priv/gettext/.*(po)$", ~r"priv/gettext/.*(po)$",
~r"lib/lokal_web/(live|views)/.*(ex)$", ~r"lib/cannery_web/(live|views)/.*(ex)$",
~r"lib/lokal_web/templates/.*(eex)$" ~r"lib/cannery_web/templates/.*(eex)$"
] ]
] ]

View File

@ -9,7 +9,7 @@ import Config
# manifest is generated by the `mix phx.digest` task, # manifest is generated by the `mix phx.digest` task,
# which you should run after static files are built and # which you should run after static files are built and
# before starting your production server. # before starting your production server.
config :lokal, LokalWeb.Endpoint, cache_static_manifest: "priv/static/cache_manifest.json" config :cannery, CanneryWeb.Endpoint, cache_static_manifest: "priv/static/cache_manifest.json"
# Do not print debug messages in production # Do not print debug messages in production
config :logger, level: :info config :logger, level: :info
@ -19,7 +19,7 @@ config :logger, level: :info
# To get SSL working, you will need to add the `https` key # To get SSL working, you will need to add the `https` key
# to the previous section and set your `:url` port to 443: # to the previous section and set your `:url` port to 443:
# #
# config :lokal, LokalWeb.Endpoint, # config :cannery, CanneryWeb.Endpoint,
# ..., # ...,
# url: [host: "example.com", port: 443], # url: [host: "example.com", port: 443],
# https: [ # https: [
@ -43,7 +43,7 @@ config :logger, level: :info
# We also recommend setting `force_ssl` in your endpoint, ensuring # We also recommend setting `force_ssl` in your endpoint, ensuring
# no data is ever sent via http, always redirecting to https: # no data is ever sent via http, always redirecting to https:
# #
# config :lokal, LokalWeb.Endpoint, # config :cannery, CanneryWeb.Endpoint,
# force_ssl: [hsts: true] # force_ssl: [hsts: true]
# #
# Check `Plug.SSL` for all available options in `force_ssl`. # Check `Plug.SSL` for all available options in `force_ssl`.

View File

@ -9,7 +9,7 @@ import Config
# Start the phoenix server if environment is set and running in a release # Start the phoenix server if environment is set and running in a release
if System.get_env("PHX_SERVER") && System.get_env("RELEASE_NAME") do if System.get_env("PHX_SERVER") && System.get_env("RELEASE_NAME") do
config :lokal, LokalWeb.Endpoint, server: true config :cannery, CanneryWeb.Endpoint, server: true
end end
# Set default locale # Set default locale
@ -21,28 +21,28 @@ database_url =
if config_env() == :test do if config_env() == :test do
System.get_env( System.get_env(
"TEST_DATABASE_URL", "TEST_DATABASE_URL",
"ecto://postgres:postgres@localhost/lokal_test#{System.get_env("MIX_TEST_PARTITION")}" "ecto://postgres:postgres@localhost/cannery_test#{System.get_env("MIX_TEST_PARTITION")}"
) )
else else
System.get_env("DATABASE_URL", "ecto://postgres:postgres@lokal-db/lokal") System.get_env("DATABASE_URL", "ecto://postgres:postgres@cannery-db/cannery")
end end
host = host =
System.get_env("HOST") || System.get_env("HOST") ||
raise "No hostname set! Must be the domain and tld like `lokal.bubbletea.dev`." raise "No hostname set! Must be the domain and tld like `cannery.bubbletea.dev`."
interface = interface =
if config_env() in [:dev, :test], if config_env() in [:dev, :test],
do: {0, 0, 0, 0}, do: {0, 0, 0, 0},
else: {0, 0, 0, 0, 0, 0, 0, 0} else: {0, 0, 0, 0, 0, 0, 0, 0}
config :lokal, Lokal.Repo, config :cannery, Cannery.Repo,
# ssl: true, # ssl: true,
url: database_url, url: database_url,
pool_size: String.to_integer(System.get_env("POOL_SIZE", "10")), pool_size: String.to_integer(System.get_env("POOL_SIZE", "10")),
socket_options: maybe_ipv6 socket_options: maybe_ipv6
config :lokal, LokalWeb.Endpoint, config :cannery, CanneryWeb.Endpoint,
url: [scheme: "https", host: host, port: 443], url: [scheme: "https", host: host, port: 443],
http: [ http: [
# See the documentation on https://hexdocs.pm/plug_cowboy/Plug.Cowboy.html # See the documentation on https://hexdocs.pm/plug_cowboy/Plug.Cowboy.html
@ -53,7 +53,7 @@ config :lokal, LokalWeb.Endpoint,
server: true server: true
if config_env() in [:dev, :prod] do if config_env() in [:dev, :prod] do
config :lokal, Lokal.Accounts, registration: System.get_env("REGISTRATION", "invite") config :cannery, Cannery.Accounts, registration: System.get_env("REGISTRATION", "invite")
end end
if config_env() == :prod do if config_env() == :prod do
@ -69,13 +69,13 @@ if config_env() == :prod do
You can generate one by calling: mix phx.gen.secret You can generate one by calling: mix phx.gen.secret
""" """
config :lokal, LokalWeb.Endpoint, secret_key_base: secret_key_base config :cannery, CanneryWeb.Endpoint, secret_key_base: secret_key_base
# Automatically apply migrations # Automatically apply migrations
config :lokal, Lokal.Application, automigrate: true config :cannery, Cannery.Application, automigrate: true
# Set up SMTP settings # Set up SMTP settings
config :lokal, Lokal.Mailer, config :cannery, Cannery.Mailer,
adapter: Swoosh.Adapters.SMTP, adapter: Swoosh.Adapters.SMTP,
relay: System.get_env("SMTP_HOST") || raise("No SMTP_HOST set!"), relay: System.get_env("SMTP_HOST") || raise("No SMTP_HOST set!"),
port: System.get_env("SMTP_PORT", "587"), port: System.get_env("SMTP_PORT", "587"),
@ -83,14 +83,14 @@ if config_env() == :prod do
password: System.get_env("SMTP_PASSWORD") || raise("No SMTP_PASSWORD set!"), password: System.get_env("SMTP_PASSWORD") || raise("No SMTP_PASSWORD set!"),
ssl: System.get_env("SMTP_SSL") == "true", ssl: System.get_env("SMTP_SSL") == "true",
email_from: System.get_env("EMAIL_FROM", "no-reply@#{System.get_env("HOST")}"), email_from: System.get_env("EMAIL_FROM", "no-reply@#{System.get_env("HOST")}"),
email_name: System.get_env("EMAIL_NAME", "Lokal") email_name: System.get_env("EMAIL_NAME", "Cannery")
# ## Using releases # ## Using releases
# #
# If you are doing OTP releases, you need to instruct Phoenix # If you are doing OTP releases, you need to instruct Phoenix
# to start each relevant endpoint: # to start each relevant endpoint:
# #
# config :lokal, LokalWeb.Endpoint, server: true # config :cannery, CanneryWeb.Endpoint, server: true
# #
# Then you can assemble a release by calling `mix release`. # Then you can assemble a release by calling `mix release`.
# See `mix help release` for more information. # See `mix help release` for more information.

View File

@ -8,22 +8,22 @@ config :bcrypt_elixir, :log_rounds, 1
# The MIX_TEST_PARTITION environment variable can be used # The MIX_TEST_PARTITION environment variable can be used
# to provide built-in test partitioning in CI environment. # to provide built-in test partitioning in CI environment.
# Run `mix help test` for more information. # Run `mix help test` for more information.
config :lokal, Lokal.Repo, config :cannery, Cannery.Repo,
pool: Ecto.Adapters.SQL.Sandbox, pool: Ecto.Adapters.SQL.Sandbox,
pool_size: 10 pool_size: 10
# We don't run a server during test. If one is required, # We don't run a server during test. If one is required,
# you can enable the server option below. # you can enable the server option below.
config :lokal, LokalWeb.Endpoint, config :cannery, CanneryWeb.Endpoint,
http: [ip: {0, 0, 0, 0}, port: 4002], http: [ip: {0, 0, 0, 0}, port: 4002],
secret_key_base: "S3qq9QtUdsFtlYej+HTjAVN95uP5i5tf2sPYINWSQfCKJghFj2B1+wTAoljZyHOK", secret_key_base: "S3qq9QtUdsFtlYej+HTjAVN95uP5i5tf2sPYINWSQfCKJghFj2B1+wTAoljZyHOK",
server: false server: false
# In test we don't send emails. # In test we don't send emails.
config :lokal, Lokal.Mailer, adapter: Swoosh.Adapters.Test config :cannery, Cannery.Mailer, adapter: Swoosh.Adapters.Test
# Don't require invites for signups # Don't require invites for signups
config :lokal, Lokal.Accounts, registration: "public" config :cannery, Cannery.Accounts, registration: "public"
# Print only warnings and errors during test # Print only warnings and errors during test
config :logger, level: :warn config :logger, level: :warn
@ -32,4 +32,4 @@ config :logger, level: :warn
config :phoenix, :plug_init_mode, :runtime config :phoenix, :plug_init_mode, :runtime
# Disable Oban # Disable Oban
config :lokal, Oban, queues: false, plugins: false config :cannery, Oban, queues: false, plugins: false

View File

@ -1,16 +1,16 @@
version: '3' version: '3'
services: services:
lokal: cannery:
build: build:
context: . context: .
container_name: lokal container_name: cannery
restart: always restart: always
environment: environment:
# HOST must be set! # HOST must be set!
# - HOST=your.domain.com # - HOST=your.domain.com
- DATABASE_URL=ecto://postgres:postgres@lokal-db/lokal - DATABASE_URL=ecto://postgres:postgres@cannery-db/cannery
# Use `docker run -it shibaobun/lokal /app/priv/random.sh` to generate a secret key base # Use `docker run -it shibaobun/cannery /app/priv/random.sh` to generate a secret key base
# - SECRET_KEY_BASE=change-me-this-is-really-important-seriously-change-it # - SECRET_KEY_BASE=change-me-this-is-really-important-seriously-change-it
# uncomment to enable public sign ups, not recommended # uncomment to enable public sign ups, not recommended
# - REGISTRATION=public # - REGISTRATION=public
@ -24,21 +24,21 @@ services:
# optional, default is false # optional, default is false
# - SMTP_SSL=false # - SMTP_SSL=false
# optional, default is format below # optional, default is format below
# - EMAIL_FROM=no-reply@lokal.example.tld # - EMAIL_FROM=no-reply@cannery.example.tld
# optional, default is "Lokal" # optional, default is "Cannery"
# - EMAIL_NAME=Lokal # - EMAIL_NAME=Cannery
expose: expose:
- "4000" - "4000"
depends_on: depends_on:
- lokal-db - cannery-db
lokal-db: cannery-db:
image: postgres:13 image: postgres:13
container_name: lokal-db container_name: cannery-db
environment: environment:
- POSTGRES_USER="postgres" - POSTGRES_USER="postgres"
- POSTGRES_PASSWORD="postgres" - POSTGRES_PASSWORD="postgres"
- POSTGRES_DB="lokal" - POSTGRES_DB="cannery"
restart: always restart: always
volumes: volumes:
- ./data:/var/lib/postgresql/data - ./data:/var/lib/postgresql/data

View File

@ -1,6 +1,6 @@
defmodule Lokal do defmodule Cannery do
@moduledoc """ @moduledoc """
Lokal keeps the contexts that define your domain Cannery keeps the contexts that define your domain
and business logic. and business logic.
Contexts are also responsible for managing your data, regardless Contexts are also responsible for managing your data, regardless

View File

@ -1,11 +1,11 @@
defmodule Lokal.Accounts do defmodule Cannery.Accounts do
@moduledoc """ @moduledoc """
The Accounts context. The Accounts context.
""" """
import Ecto.Query, warn: false import Ecto.Query, warn: false
alias Lokal.{Mailer, Repo} alias Cannery.{Mailer, Repo}
alias Lokal.Accounts.{Invite, Invites, User, UserToken} alias Cannery.Accounts.{Invite, Invites, User, UserToken}
alias Ecto.{Changeset, Multi} alias Ecto.{Changeset, Multi}
alias Oban.Job alias Oban.Job
@ -385,7 +385,7 @@ defmodule Lokal.Accounts do
""" """
@spec allow_registration?() :: boolean() @spec allow_registration?() :: boolean()
def allow_registration? do def allow_registration? do
Application.get_env(:lokal, Lokal.Accounts)[:registration] == "public" or Application.get_env(:cannery, Cannery.Accounts)[:registration] == "public" or
list_users_by_role(:admin) |> Enum.empty?() list_users_by_role(:admin) |> Enum.empty?()
end end

View File

@ -1,16 +1,16 @@
defmodule Lokal.Email do defmodule Cannery.Email do
@moduledoc """ @moduledoc """
Emails that can be sent using Swoosh. Emails that can be sent using Swoosh.
You can find the base email templates at You can find the base email templates at
`lib/Lokal_web/templates/layout/email.html.heex` for html emails and `lib/Cannery_web/templates/layout/email.html.heex` for html emails and
`lib/Lokal_web/templates/layout/email.txt.heex` for text emails. `lib/Cannery_web/templates/layout/email.txt.heex` for text emails.
""" """
use Phoenix.Swoosh, view: LokalWeb.EmailView, layout: {LokalWeb.LayoutView, :email} use Phoenix.Swoosh, view: CanneryWeb.EmailView, layout: {CanneryWeb.LayoutView, :email}
import LokalWeb.Gettext import CanneryWeb.Gettext
alias Lokal.Accounts.User alias Cannery.Accounts.User
alias LokalWeb.EmailView alias CanneryWeb.EmailView
@typedoc """ @typedoc """
Represents an HTML and text body email that can be sent Represents an HTML and text body email that can be sent
@ -19,29 +19,29 @@ defmodule Lokal.Email do
@spec base_email(User.t(), String.t()) :: t() @spec base_email(User.t(), String.t()) :: t()
defp base_email(%User{email: email}, subject) do defp base_email(%User{email: email}, subject) do
from = Application.get_env(:Lokal, Lokal.Mailer)[:email_from] || "noreply@localhost" from = Application.get_env(:Cannery, Cannery.Mailer)[:email_from] || "noreply@localhost"
name = Application.get_env(:Lokal, Lokal.Mailer)[:email_name] name = Application.get_env(:Cannery, Cannery.Mailer)[:email_name]
new() |> to(email) |> from({name, from}) |> subject(subject) new() |> to(email) |> from({name, from}) |> subject(subject)
end end
@spec generate_email(key :: String.t(), User.t(), attrs :: map()) :: t() @spec generate_email(key :: String.t(), User.t(), attrs :: map()) :: t()
def generate_email("welcome", user, %{"url" => url}) do def generate_email("welcome", user, %{"url" => url}) do
user user
|> base_email(dgettext("emails", "Confirm your Lokal account")) |> base_email(dgettext("emails", "Confirm your Cannery account"))
|> render_body("confirm_email.html", %{user: user, url: url}) |> render_body("confirm_email.html", %{user: user, url: url})
|> text_body(EmailView.render("confirm_email.txt", %{user: user, url: url})) |> text_body(EmailView.render("confirm_email.txt", %{user: user, url: url}))
end end
def generate_email("reset_password", user, %{"url" => url}) do def generate_email("reset_password", user, %{"url" => url}) do
user user
|> base_email(dgettext("emails", "Reset your Lokal password")) |> base_email(dgettext("emails", "Reset your Cannery password"))
|> render_body("reset_password.html", %{user: user, url: url}) |> render_body("reset_password.html", %{user: user, url: url})
|> text_body(EmailView.render("reset_password.txt", %{user: user, url: url})) |> text_body(EmailView.render("reset_password.txt", %{user: user, url: url}))
end end
def generate_email("update_email", user, %{"url" => url}) do def generate_email("update_email", user, %{"url" => url}) do
user user
|> base_email(dgettext("emails", "Update your Lokal email")) |> base_email(dgettext("emails", "Update your Cannery email"))
|> render_body("update_email.html", %{user: user, url: url}) |> render_body("update_email.html", %{user: user, url: url})
|> text_body(EmailView.render("update_email.txt", %{user: user, url: url})) |> text_body(EmailView.render("update_email.txt", %{user: user, url: url}))
end end

View File

@ -1,10 +1,10 @@
defmodule Lokal.EmailWorker do defmodule Cannery.EmailWorker do
@moduledoc """ @moduledoc """
Oban worker that dispatches emails Oban worker that dispatches emails
""" """
use Oban.Worker, queue: :mailers, tags: ["email"] use Oban.Worker, queue: :mailers, tags: ["email"]
alias Lokal.{Accounts, Email, Mailer} alias Cannery.{Accounts, Email, Mailer}
@impl Oban.Worker @impl Oban.Worker
def perform(%Oban.Job{args: %{"email" => email, "user_id" => user_id, "attrs" => attrs}}) do def perform(%Oban.Job{args: %{"email" => email, "user_id" => user_id, "attrs" => attrs}}) do

View File

@ -1,4 +1,4 @@
defmodule Lokal.Accounts.Invite do defmodule Cannery.Accounts.Invite do
@moduledoc """ @moduledoc """
An invite, created by an admin to allow someone to join their instance. An An invite, created by an admin to allow someone to join their instance. An
invite can be enabled or disabled, and can have an optional number of uses if invite can be enabled or disabled, and can have an optional number of uses if
@ -7,8 +7,8 @@ defmodule Lokal.Accounts.Invite do
use Ecto.Schema use Ecto.Schema
import Ecto.Changeset import Ecto.Changeset
alias Cannery.Accounts.User
alias Ecto.{Association, Changeset, UUID} alias Ecto.{Association, Changeset, UUID}
alias Lokal.Accounts.User
@primary_key {:id, :binary_id, autogenerate: true} @primary_key {:id, :binary_id, autogenerate: true}
@foreign_key_type :binary_id @foreign_key_type :binary_id

View File

@ -1,12 +1,12 @@
defmodule Lokal.Accounts.Invites do defmodule Cannery.Accounts.Invites do
@moduledoc """ @moduledoc """
The Invites context. The Invites context.
""" """
import Ecto.Query, warn: false import Ecto.Query, warn: false
alias Ecto.Multi alias Ecto.Multi
alias Lokal.Accounts.{Invite, User} alias Cannery.Accounts.{Invite, User}
alias Lokal.Repo alias Cannery.Repo
@invite_token_length 20 @invite_token_length 20

View File

@ -1,13 +1,13 @@
defmodule Lokal.Accounts.User do defmodule Cannery.Accounts.User do
@moduledoc """ @moduledoc """
A Lokal user A Cannery user
""" """
use Ecto.Schema use Ecto.Schema
import Ecto.Changeset import Ecto.Changeset
import LokalWeb.Gettext import CanneryWeb.Gettext
alias Ecto.{Association, Changeset, UUID} alias Ecto.{Association, Changeset, UUID}
alias Lokal.Accounts.{Invite, User} alias Cannery.Accounts.{Invite, User}
@derive {Jason.Encoder, @derive {Jason.Encoder,
only: [ only: [
@ -99,7 +99,7 @@ defmodule Lokal.Accounts.User do
message: dgettext("errors", "must have the @ sign and no spaces") message: dgettext("errors", "must have the @ sign and no spaces")
) )
|> validate_length(:email, max: 160) |> validate_length(:email, max: 160)
|> unsafe_validate_unique(:email, Lokal.Repo) |> unsafe_validate_unique(:email, Cannery.Repo)
|> unique_constraint(:email) |> unique_constraint(:email)
end end

View File

@ -1,4 +1,4 @@
defmodule Lokal.Accounts.UserNotifier do defmodule Cannery.Accounts.UserNotifier do
@moduledoc """ @moduledoc """
Contains templates and messages for user messages Contains templates and messages for user messages
""" """

View File

@ -1,12 +1,12 @@
defmodule Lokal.Accounts.UserToken do defmodule Cannery.Accounts.UserToken do
@moduledoc """ @moduledoc """
Schema for a user's session token Schema for a user's session token
""" """
use Ecto.Schema use Ecto.Schema
import Ecto.Query import Ecto.Query
alias Cannery.Accounts.User
alias Ecto.{Association, UUID} alias Ecto.{Association, UUID}
alias Lokal.Accounts.User
@hash_algorithm :sha256 @hash_algorithm :sha256
@rand_size 32 @rand_size 32

View File

@ -1,27 +1,27 @@
defmodule Lokal.Application do defmodule Cannery.Application do
# See https://hexdocs.pm/elixir/Application.html # See https://hexdocs.pm/elixir/Application.html
# for more information on OTP Applications # for more information on OTP Applications
@moduledoc false @moduledoc false
use Application use Application
alias Lokal.Logger alias Cannery.Logger
@impl true @impl true
def start(_type, _args) do def start(_type, _args) do
children = [ children = [
# Start the Ecto repository # Start the Ecto repository
Lokal.Repo, Cannery.Repo,
# Start the Telemetry supervisor # Start the Telemetry supervisor
LokalWeb.Telemetry, CanneryWeb.Telemetry,
# Start the PubSub system # Start the PubSub system
{Phoenix.PubSub, name: Lokal.PubSub}, {Phoenix.PubSub, name: Cannery.PubSub},
# Start the Endpoint (http/https) # Start the Endpoint (http/https)
LokalWeb.Endpoint, CanneryWeb.Endpoint,
# Add Oban # Add Oban
{Oban, oban_config()}, {Oban, oban_config()},
Lokal.Repo.Migrator Cannery.Repo.Migrator
# Start a worker by calling: Lokal.Worker.start_link(arg) # Start a worker by calling: Cannery.Worker.start_link(arg)
# {Lokal.Worker, arg} # {Cannery.Worker, arg}
] ]
# Oban events logging https://hexdocs.pm/oban/Oban.html#module-reporting-errors # Oban events logging https://hexdocs.pm/oban/Oban.html#module-reporting-errors
@ -39,7 +39,7 @@ defmodule Lokal.Application do
# See https://hexdocs.pm/elixir/Supervisor.html # See https://hexdocs.pm/elixir/Supervisor.html
# for other strategies and supported options # for other strategies and supported options
opts = [strategy: :one_for_one, name: Lokal.Supervisor] opts = [strategy: :one_for_one, name: Cannery.Supervisor]
Supervisor.start_link(children, opts) Supervisor.start_link(children, opts)
end end
@ -47,11 +47,11 @@ defmodule Lokal.Application do
# whenever the application is updated. # whenever the application is updated.
@impl true @impl true
def config_change(changed, _new, removed) do def config_change(changed, _new, removed) do
LokalWeb.Endpoint.config_change(changed, removed) CanneryWeb.Endpoint.config_change(changed, removed)
:ok :ok
end end
defp oban_config do defp oban_config do
Application.fetch_env!(:lokal, Oban) Application.fetch_env!(:cannery, Oban)
end end
end end

View File

@ -1,4 +1,4 @@
defmodule Lokal.Logger do defmodule Cannery.Logger do
@moduledoc """ @moduledoc """
Custom logger for telemetry events Custom logger for telemetry events

View File

@ -1,4 +1,4 @@
defmodule Lokal.Mailer do defmodule Cannery.Mailer do
@moduledoc """ @moduledoc """
Mailer adapter for emails Mailer adapter for emails
@ -6,8 +6,8 @@ defmodule Lokal.Mailer do
json with Jason, which restricts the use of structs. json with Jason, which restricts the use of structs.
""" """
use Swoosh.Mailer, otp_app: :lokal use Swoosh.Mailer, otp_app: :cannery
alias Lokal.{Accounts.User, EmailWorker} alias Cannery.{Accounts.User, EmailWorker}
alias Oban.Job alias Oban.Job
@doc """ @doc """

View File

@ -1,9 +1,9 @@
defmodule Lokal.Release do defmodule Cannery.Release do
@moduledoc """ @moduledoc """
Contains mix tasks that can used in generated releases Contains mix tasks that can used in generated releases
""" """
@app :lokal @app :cannery
def rollback(repo, version) do def rollback(repo, version) do
load_app() load_app()

View File

@ -1,5 +1,5 @@
defmodule Lokal.Repo do defmodule Cannery.Repo do
use Ecto.Repo, use Ecto.Repo,
otp_app: :lokal, otp_app: :cannery,
adapter: Ecto.Adapters.Postgres adapter: Ecto.Adapters.Postgres
end end

View File

@ -1,4 +1,4 @@
defmodule Lokal.Repo.Migrator do defmodule Cannery.Repo.Migrator do
@moduledoc """ @moduledoc """
Genserver to automatically perform all migration on app start Genserver to automatically perform all migration on app start
""" """
@ -15,11 +15,11 @@ defmodule Lokal.Repo.Migrator do
end end
def migrate! do def migrate! do
path = Application.app_dir(:lokal, "priv/repo/migrations") path = Application.app_dir(:cannery, "priv/repo/migrations")
Ecto.Migrator.run(Lokal.Repo, path, :up, all: true) Ecto.Migrator.run(Cannery.Repo, path, :up, all: true)
end end
defp automigrate_enabled? do defp automigrate_enabled? do
Application.get_env(:lokal, Lokal.Application, automigrate: false)[:automigrate] Application.get_env(:cannery, Cannery.Application, automigrate: false)[:automigrate]
end end
end end

View File

@ -1,12 +1,12 @@
defmodule LokalWeb do defmodule CanneryWeb do
@moduledoc """ @moduledoc """
The entrypoint for defining your web interface, such The entrypoint for defining your web interface, such
as controllers, views, channels and so on. as controllers, views, channels and so on.
This can be used in your application as: This can be used in your application as:
use LokalWeb, :controller use CanneryWeb, :controller
use LokalWeb, :view use CanneryWeb, :view
The definitions below will be executed for every view, The definitions below will be executed for every view,
controller, etc, so keep them short and clean, focused controller, etc, so keep them short and clean, focused
@ -19,19 +19,19 @@ defmodule LokalWeb do
def controller do def controller do
quote do quote do
use Phoenix.Controller, namespace: LokalWeb use Phoenix.Controller, namespace: CanneryWeb
import Plug.Conn import Plug.Conn
import LokalWeb.Gettext import CanneryWeb.Gettext
alias LokalWeb.Router.Helpers, as: Routes alias CanneryWeb.Router.Helpers, as: Routes
end end
end end
def view do def view do
quote do quote do
use Phoenix.View, use Phoenix.View,
root: "lib/lokal_web/templates", root: "lib/cannery_web/templates",
namespace: LokalWeb namespace: CanneryWeb
# Import convenience functions from controllers # Import convenience functions from controllers
import Phoenix.Controller, import Phoenix.Controller,
@ -45,9 +45,9 @@ defmodule LokalWeb do
def live_view do def live_view do
quote do quote do
use Phoenix.LiveView, use Phoenix.LiveView,
layout: {LokalWeb.LayoutView, "live.html"} layout: {CanneryWeb.LayoutView, "live.html"}
on_mount LokalWeb.InitAssigns on_mount CanneryWeb.InitAssigns
unquote(view_helpers()) unquote(view_helpers())
end end
end end
@ -82,7 +82,7 @@ defmodule LokalWeb do
quote do quote do
use Phoenix.Channel use Phoenix.Channel
# credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse # credo:disable-for-next-line Credo.Check.Consistency.MultiAliasImportRequireUse
import LokalWeb.Gettext import CanneryWeb.Gettext
end end
end end
@ -95,9 +95,9 @@ defmodule LokalWeb do
# Import LiveView and .heex helpers (live_render, link, <.form>, etc) # Import LiveView and .heex helpers (live_render, link, <.form>, etc)
# Import basic rendering functionality (render, render_layout, etc) # Import basic rendering functionality (render, render_layout, etc)
import Phoenix.{Component, View} import Phoenix.{Component, View}
import LokalWeb.{ErrorHelpers, Gettext, LiveHelpers, ViewHelpers} import CanneryWeb.{ErrorHelpers, Gettext, LiveHelpers, ViewHelpers}
alias LokalWeb.Router.Helpers, as: Routes alias CanneryWeb.Router.Helpers, as: Routes
end end
end end

View File

@ -1,11 +1,11 @@
defmodule LokalWeb.Components.InviteCard do defmodule CanneryWeb.Components.InviteCard do
@moduledoc """ @moduledoc """
Display card for an invite Display card for an invite
""" """
use LokalWeb, :component use CanneryWeb, :component
alias Lokal.Accounts.{Invite, Invites, User} alias Cannery.Accounts.{Invite, Invites, User}
alias LokalWeb.Endpoint alias CanneryWeb.Endpoint
attr :invite, Invite, required: true attr :invite, Invite, required: true
attr :current_user, User, required: true attr :current_user, User, required: true

View File

@ -1,4 +1,4 @@
defmodule LokalWeb.Components.TableComponent do defmodule CanneryWeb.Components.TableComponent do
@moduledoc """ @moduledoc """
Livecomponent that presents a resortable table Livecomponent that presents a resortable table
@ -19,7 +19,7 @@ defmodule LokalWeb.Components.TableComponent do
content. content.
""" """
use LokalWeb, :live_component use CanneryWeb, :live_component
alias Phoenix.LiveView.Socket alias Phoenix.LiveView.Socket
@impl true @impl true

View File

@ -1,12 +1,12 @@
defmodule LokalWeb.Components.Topbar do defmodule CanneryWeb.Components.Topbar do
@moduledoc """ @moduledoc """
Component that renders a topbar with user functions/links Component that renders a topbar with user functions/links
""" """
use LokalWeb, :component use CanneryWeb, :component
alias Lokal.Accounts alias Cannery.Accounts
alias LokalWeb.{Endpoint, HomeLive} alias CanneryWeb.{Endpoint, HomeLive}
def topbar(assigns) do def topbar(assigns) do
assigns = assigns =
@ -20,7 +20,7 @@ defmodule LokalWeb.Components.Topbar do
navigate={Routes.live_path(Endpoint, HomeLive)} navigate={Routes.live_path(Endpoint, HomeLive)}
class="mx-2 my-1 leading-5 text-xl text-white hover:underline" class="mx-2 my-1 leading-5 text-xl text-white hover:underline"
> >
<%= gettext("Lokal") %> <%= gettext("Cannery") %>
</.link> </.link>
<%= if @title_content do %> <%= if @title_content do %>

View File

@ -1,9 +1,9 @@
defmodule LokalWeb.Components.UserCard do defmodule CanneryWeb.Components.UserCard do
@moduledoc """ @moduledoc """
Display card for a user Display card for a user
""" """
use LokalWeb, :component use CanneryWeb, :component
def user_card(assigns) do def user_card(assigns) do
~H""" ~H"""

View File

@ -1,16 +1,16 @@
defmodule LokalWeb.EmailController do defmodule CanneryWeb.EmailController do
@moduledoc """ @moduledoc """
A dev controller used to develop on emails A dev controller used to develop on emails
""" """
use LokalWeb, :controller use CanneryWeb, :controller
alias Lokal.Accounts.User alias Cannery.Accounts.User
plug :put_layout, {LokalWeb.LayoutView, :email} plug :put_layout, {CanneryWeb.LayoutView, :email}
@sample_assigns %{ @sample_assigns %{
email: %{subject: "Example subject"}, email: %{subject: "Example subject"},
url: "https://lokal.bubbletea.dev/sample_url", url: "https://cannery.bubbletea.dev/sample_url",
user: %User{email: "sample@email.com"} user: %User{email: "sample@email.com"}
} }

View File

@ -1,9 +1,9 @@
defmodule LokalWeb.HomeController do defmodule CanneryWeb.HomeController do
@moduledoc """ @moduledoc """
Controller for home page Controller for home page
""" """
use LokalWeb, :controller use CanneryWeb, :controller
def index(conn, _params) do def index(conn, _params) do
render(conn, "index.html") render(conn, "index.html")

View File

@ -1,20 +1,20 @@
defmodule LokalWeb.UserAuth do defmodule CanneryWeb.UserAuth do
@moduledoc """ @moduledoc """
Functions for user session and authentication Functions for user session and authentication
""" """
import Plug.Conn import Plug.Conn
import Phoenix.Controller import Phoenix.Controller
import LokalWeb.Gettext import CanneryWeb.Gettext
alias Lokal.{Accounts, Accounts.User} alias Cannery.{Accounts, Accounts.User}
alias LokalWeb.HomeLive alias CanneryWeb.HomeLive
alias LokalWeb.Router.Helpers, as: Routes alias CanneryWeb.Router.Helpers, as: Routes
# Make the remember me cookie valid for 60 days. # Make the remember me cookie valid for 60 days.
# If you want bump or reduce this value, also change # If you want bump or reduce this value, also change
# the token expiry itself in UserToken. # the token expiry itself in UserToken.
@max_age 60 * 60 * 24 * 60 @max_age 60 * 60 * 24 * 60
@remember_me_cookie "_lokal_web_user_remember_me" @remember_me_cookie "_cannery_web_user_remember_me"
@remember_me_options [sign: true, max_age: @max_age, same_site: "Lax"] @remember_me_options [sign: true, max_age: @max_age, same_site: "Lax"]
@doc """ @doc """
@ -99,7 +99,7 @@ defmodule LokalWeb.UserAuth do
user_token && Accounts.delete_session_token(user_token) user_token && Accounts.delete_session_token(user_token)
if live_socket_id = get_session(conn, :live_socket_id) do if live_socket_id = get_session(conn, :live_socket_id) do
LokalWeb.Endpoint.broadcast(live_socket_id, "disconnect", %{}) CanneryWeb.Endpoint.broadcast(live_socket_id, "disconnect", %{})
end end
conn conn

View File

@ -1,8 +1,8 @@
defmodule LokalWeb.UserConfirmationController do defmodule CanneryWeb.UserConfirmationController do
use LokalWeb, :controller use CanneryWeb, :controller
import LokalWeb.Gettext import CanneryWeb.Gettext
alias Lokal.Accounts alias Cannery.Accounts
def new(conn, _params) do def new(conn, _params) do
render(conn, "new.html", page_title: gettext("Confirm your account")) render(conn, "new.html", page_title: gettext("Confirm your account"))

View File

@ -1,8 +1,8 @@
defmodule LokalWeb.UserRegistrationController do defmodule CanneryWeb.UserRegistrationController do
use LokalWeb, :controller use CanneryWeb, :controller
import LokalWeb.Gettext import CanneryWeb.Gettext
alias Lokal.{Accounts, Accounts.Invites} alias Cannery.{Accounts, Accounts.Invites}
alias LokalWeb.{Endpoint, HomeLive} alias CanneryWeb.{Endpoint, HomeLive}
def new(conn, %{"invite" => invite_token}) do def new(conn, %{"invite" => invite_token}) do
if Invites.valid_invite_token?(invite_token) do if Invites.valid_invite_token?(invite_token) do

View File

@ -1,7 +1,7 @@
defmodule LokalWeb.UserResetPasswordController do defmodule CanneryWeb.UserResetPasswordController do
use LokalWeb, :controller use CanneryWeb, :controller
alias Lokal.Accounts alias Cannery.Accounts
plug :get_user_by_reset_password_token when action in [:edit, :update] plug :get_user_by_reset_password_token when action in [:edit, :update]

View File

@ -1,8 +1,8 @@
defmodule LokalWeb.UserSessionController do defmodule CanneryWeb.UserSessionController do
use LokalWeb, :controller use CanneryWeb, :controller
alias Lokal.Accounts alias Cannery.Accounts
alias LokalWeb.UserAuth alias CanneryWeb.UserAuth
def new(conn, _params) do def new(conn, _params) do
render(conn, "new.html", error_message: nil, page_title: gettext("Log in")) render(conn, "new.html", error_message: nil, page_title: gettext("Log in"))

View File

@ -1,8 +1,8 @@
defmodule LokalWeb.UserSettingsController do defmodule CanneryWeb.UserSettingsController do
use LokalWeb, :controller use CanneryWeb, :controller
import LokalWeb.Gettext import CanneryWeb.Gettext
alias Lokal.Accounts alias Cannery.Accounts
alias LokalWeb.{HomeLive, UserAuth} alias CanneryWeb.{HomeLive, UserAuth}
plug :assign_email_and_password_changesets plug :assign_email_and_password_changesets

View File

@ -1,12 +1,12 @@
defmodule LokalWeb.Endpoint do defmodule CanneryWeb.Endpoint do
use Phoenix.Endpoint, otp_app: :lokal use Phoenix.Endpoint, otp_app: :cannery
# The session will be stored in the cookie and signed, # The session will be stored in the cookie and signed,
# this means its contents can be read but not tampered with. # this means its contents can be read but not tampered with.
# Set :encryption_salt if you would also like to encrypt it. # Set :encryption_salt if you would also like to encrypt it.
@session_options [ @session_options [
store: :cookie, store: :cookie,
key: "_lokal_key", key: "_cannery_key",
signing_salt: "fxAnJltS" signing_salt: "fxAnJltS"
] ]
@ -18,7 +18,7 @@ defmodule LokalWeb.Endpoint do
# when deploying your static files in production. # when deploying your static files in production.
plug Plug.Static, plug Plug.Static,
at: "/", at: "/",
from: :lokal, from: :cannery,
gzip: false, gzip: false,
only: ~w(css fonts images js favicon.ico robots.txt) only: ~w(css fonts images js favicon.ico robots.txt)
@ -28,7 +28,7 @@ defmodule LokalWeb.Endpoint do
socket "/phoenix/live_reload/socket", Phoenix.LiveReloader.Socket socket "/phoenix/live_reload/socket", Phoenix.LiveReloader.Socket
plug Phoenix.LiveReloader plug Phoenix.LiveReloader
plug Phoenix.CodeReloader plug Phoenix.CodeReloader
plug Phoenix.Ecto.CheckRepoStatus, otp_app: :lokal plug Phoenix.Ecto.CheckRepoStatus, otp_app: :cannery
end end
plug Phoenix.LiveDashboard.RequestLogger, plug Phoenix.LiveDashboard.RequestLogger,
@ -46,5 +46,5 @@ defmodule LokalWeb.Endpoint do
plug Plug.MethodOverride plug Plug.MethodOverride
plug Plug.Head plug Plug.Head
plug Plug.Session, @session_options plug Plug.Session, @session_options
plug LokalWeb.Router plug CanneryWeb.Router
end end

View File

@ -1,11 +1,11 @@
defmodule LokalWeb.Gettext do defmodule CanneryWeb.Gettext do
@moduledoc """ @moduledoc """
A module providing Internationalization with a gettext-based API. A module providing Internationalization with a gettext-based API.
By using [Gettext](https://hexdocs.pm/gettext), By using [Gettext](https://hexdocs.pm/gettext),
your module gains a set of macros for translations, for example: your module gains a set of macros for translations, for example:
import LokalWeb.Gettext import CanneryWeb.Gettext
# Simple translation # Simple translation
gettext("Here is the string to translate") gettext("Here is the string to translate")
@ -20,5 +20,5 @@ defmodule LokalWeb.Gettext do
See the [Gettext Docs](https://hexdocs.pm/gettext) for detailed usage. See the [Gettext Docs](https://hexdocs.pm/gettext) for detailed usage.
""" """
use Gettext, otp_app: :lokal use Gettext, otp_app: :cannery
end end

View File

@ -1,11 +1,11 @@
defmodule LokalWeb.HomeLive do defmodule CanneryWeb.HomeLive do
@moduledoc """ @moduledoc """
Liveview for the home page Liveview for the home page
""" """
use LokalWeb, :live_view use CanneryWeb, :live_view
alias Lokal.Accounts alias Cannery.Accounts
alias LokalWeb.Endpoint alias CanneryWeb.Endpoint
@version Mix.Project.config()[:version] @version Mix.Project.config()[:version]

View File

@ -1,6 +1,6 @@
<div class="mx-auto px-8 sm:px-16 flex flex-col justify-center items-center text-center space-y-4 max-w-3xl"> <div class="mx-auto px-8 sm:px-16 flex flex-col justify-center items-center text-center space-y-4 max-w-3xl">
<h1 class="title text-primary-600 text-2xl"> <h1 class="title text-primary-600 text-2xl">
<%= gettext("Welcome to Lokal") %> <%= gettext("Welcome to Cannery") %>
</h1> </h1>
<h2 class="title text-primary-600 text-lg"> <h2 class="title text-primary-600 text-lg">
@ -16,7 +16,7 @@
<%= gettext("Easy to Use:") %> <%= gettext("Easy to Use:") %>
</b> </b>
<p> <p>
<%= gettext("Lokal lets you easily shop from your local community") %> <%= gettext("Cannery lets you easily shop from your local community") %>
</p> </p>
</li> </li>
<li class="flex flex-col justify-center items-center space-y-2"> <li class="flex flex-col justify-center items-center space-y-2">
@ -53,7 +53,7 @@
<p> <p>
<%= if @admins |> Enum.empty?() do %> <%= if @admins |> Enum.empty?() do %>
<.link href={Routes.user_registration_path(Endpoint, :new)} class="hover:underline"> <.link href={Routes.user_registration_path(Endpoint, :new)} class="hover:underline">
<%= dgettext("prompts", "Register to setup Lokal") %> <%= dgettext("prompts", "Register to setup Cannery") %>
</.link> </.link>
<% else %> <% else %>
<div class="flex flex-wrap justify-center space-x-2"> <div class="flex flex-wrap justify-center space-x-2">
@ -68,7 +68,7 @@
<li class="flex flex-row justify-center space-x-2"> <li class="flex flex-row justify-center space-x-2">
<b><%= gettext("Registration:") %></b> <b><%= gettext("Registration:") %></b>
<p> <p>
<%= case Application.get_env(:lokal, Lokal.Accounts)[:registration] do <%= case Application.get_env(:cannery, Cannery.Accounts)[:registration] do
"public" -> gettext("Public Signups") "public" -> gettext("Public Signups")
_ -> gettext("Invite Only") _ -> gettext("Invite Only")
end %> end %>
@ -78,7 +78,7 @@
<li class="flex flex-row justify-center items-center space-x-2"> <li class="flex flex-row justify-center items-center space-x-2">
<b><%= gettext("Version:") %></b> <b><%= gettext("Version:") %></b>
<.link <.link
href="https://gitea.bubbletea.dev/shibao/lokal/src/branch/stable/CHANGELOG.md" href="https://gitea.bubbletea.dev/shibao/cannery/src/branch/stable/CHANGELOG.md"
class="flex flex-row justify-center items-center space-x-2 hover:underline" class="flex flex-row justify-center items-center space-x-2 hover:underline"
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
@ -101,7 +101,7 @@
<li class="flex flex-col justify-center space-x-2"> <li class="flex flex-col justify-center space-x-2">
<.link <.link
class="flex flex-row justify-center items-center space-x-2 hover:underline" class="flex flex-row justify-center items-center space-x-2 hover:underline"
href="https://gitea.bubbletea.dev/shibao/lokal" href="https://gitea.bubbletea.dev/shibao/cannery"
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
> >
@ -112,7 +112,7 @@
<li class="flex flex-col justify-center space-x-2"> <li class="flex flex-col justify-center space-x-2">
<.link <.link
class="flex flex-row justify-center items-center space-x-2 hover:underline" class="flex flex-row justify-center items-center space-x-2 hover:underline"
href="https://weblate.bubbletea.dev/engage/lokal" href="https://weblate.bubbletea.dev/engage/cannery"
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
> >
@ -123,7 +123,7 @@
<li class="flex flex-col justify-center space-x-2"> <li class="flex flex-col justify-center space-x-2">
<.link <.link
class="flex flex-row justify-center items-center space-x-2 hover:underline" class="flex flex-row justify-center items-center space-x-2 hover:underline"
href="https://gitea.bubbletea.dev/shibao/lokal/issues/new" href="https://gitea.bubbletea.dev/shibao/cannery/issues/new"
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
> >

View File

@ -1,9 +1,9 @@
defmodule LokalWeb.InitAssigns do defmodule CanneryWeb.InitAssigns do
@moduledoc """ @moduledoc """
Ensures common `assigns` are applied to all LiveViews attaching this hook. Ensures common `assigns` are applied to all LiveViews attaching this hook.
""" """
import Phoenix.Component import Phoenix.Component
alias Lokal.Accounts alias Cannery.Accounts
def on_mount(:default, _params, %{"locale" => locale, "user_token" => user_token}, socket) do def on_mount(:default, _params, %{"locale" => locale, "user_token" => user_token}, socket) do
Gettext.put_locale(locale) Gettext.put_locale(locale)

View File

@ -1,11 +1,11 @@
defmodule LokalWeb.InviteLive.FormComponent do defmodule CanneryWeb.InviteLive.FormComponent do
@moduledoc """ @moduledoc """
Livecomponent that can update or create an Lokal.Accounts.Invite Livecomponent that can update or create an Cannery.Accounts.Invite
""" """
use LokalWeb, :live_component use CanneryWeb, :live_component
alias Ecto.Changeset alias Ecto.Changeset
alias Lokal.Accounts.{Invite, Invites, User} alias Cannery.Accounts.{Invite, Invites, User}
alias Phoenix.LiveView.Socket alias Phoenix.LiveView.Socket
@impl true @impl true

View File

@ -1,13 +1,13 @@
defmodule LokalWeb.InviteLive.Index do defmodule CanneryWeb.InviteLive.Index do
@moduledoc """ @moduledoc """
Liveview to show a Lokal.Accounts.Invite index Liveview to show a Cannery.Accounts.Invite index
""" """
use LokalWeb, :live_view use CanneryWeb, :live_view
import LokalWeb.Components.{InviteCard, UserCard} import CanneryWeb.Components.{InviteCard, UserCard}
alias Lokal.Accounts alias Cannery.Accounts
alias Lokal.Accounts.{Invite, Invites} alias Cannery.Accounts.{Invite, Invites}
alias LokalWeb.{Endpoint, HomeLive} alias CanneryWeb.{Endpoint, HomeLive}
alias Phoenix.LiveView.JS alias Phoenix.LiveView.JS
@impl true @impl true

View File

@ -24,7 +24,7 @@
<button <button
type="submit" type="submit"
class="mx-2 my-1 btn btn-primary" class="mx-2 my-1 btn btn-primary"
phx-click={JS.dispatch("lokal:clipcopy", to: "#code-#{invite.id}")} phx-click={JS.dispatch("cannery:clipcopy", to: "#code-#{invite.id}")}
> >
<%= dgettext("actions", "Copy to clipboard") %> <%= dgettext("actions", "Copy to clipboard") %>
</button> </button>
@ -138,7 +138,7 @@
<.modal :if={@live_action in [:new, :edit]} return_to={Routes.invite_index_path(Endpoint, :index)}> <.modal :if={@live_action in [:new, :edit]} return_to={Routes.invite_index_path(Endpoint, :index)}>
<.live_component <.live_component
module={LokalWeb.InviteLive.FormComponent} module={CanneryWeb.InviteLive.FormComponent}
id={@invite.id || :new} id={@invite.id || :new}
title={@page_title} title={@page_title}
action={@live_action} action={@live_action}

View File

@ -1,4 +1,4 @@
defmodule LokalWeb.LiveHelpers do defmodule CanneryWeb.LiveHelpers do
@moduledoc """ @moduledoc """
Contains resuable methods for all liveviews Contains resuable methods for all liveviews
""" """

View File

@ -1,13 +1,13 @@
defmodule LokalWeb.Router do defmodule CanneryWeb.Router do
use LokalWeb, :router use CanneryWeb, :router
import Phoenix.LiveDashboard.Router import Phoenix.LiveDashboard.Router
import LokalWeb.UserAuth import CanneryWeb.UserAuth
pipeline :browser do pipeline :browser do
plug :accepts, ["html"] plug :accepts, ["html"]
plug :fetch_session plug :fetch_session
plug :fetch_live_flash plug :fetch_live_flash
plug :put_root_layout, {LokalWeb.LayoutView, :root} plug :put_root_layout, {CanneryWeb.LayoutView, :root}
plug :protect_from_forgery plug :protect_from_forgery
plug :put_secure_browser_headers plug :put_secure_browser_headers
plug :fetch_current_user plug :fetch_current_user
@ -34,7 +34,7 @@ defmodule LokalWeb.Router do
plug :accepts, ["json"] plug :accepts, ["json"]
end end
scope "/", LokalWeb do scope "/", CanneryWeb do
pipe_through :browser pipe_through :browser
live "/", HomeLive live "/", HomeLive
@ -42,7 +42,7 @@ defmodule LokalWeb.Router do
## Authentication routes ## Authentication routes
scope "/", LokalWeb do scope "/", CanneryWeb do
pipe_through [:browser, :redirect_if_user_is_authenticated] pipe_through [:browser, :redirect_if_user_is_authenticated]
get "/users/register", UserRegistrationController, :new get "/users/register", UserRegistrationController, :new
@ -55,7 +55,7 @@ defmodule LokalWeb.Router do
put "/users/reset_password/:token", UserResetPasswordController, :update put "/users/reset_password/:token", UserResetPasswordController, :update
end end
scope "/", LokalWeb do scope "/", CanneryWeb do
pipe_through [:browser, :require_authenticated_user] pipe_through [:browser, :require_authenticated_user]
get "/users/settings", UserSettingsController, :edit get "/users/settings", UserSettingsController, :edit
@ -64,17 +64,17 @@ defmodule LokalWeb.Router do
get "/users/settings/confirm_email/:token", UserSettingsController, :confirm_email get "/users/settings/confirm_email/:token", UserSettingsController, :confirm_email
end end
scope "/", LokalWeb do scope "/", CanneryWeb do
pipe_through [:browser, :require_authenticated_user, :require_admin] pipe_through [:browser, :require_authenticated_user, :require_admin]
live_dashboard "/dashboard", metrics: LokalWeb.Telemetry, ecto_repos: [Lokal.Repo] live_dashboard "/dashboard", metrics: CanneryWeb.Telemetry, ecto_repos: [Cannery.Repo]
live "/invites", InviteLive.Index, :index live "/invites", InviteLive.Index, :index
live "/invites/new", InviteLive.Index, :new live "/invites/new", InviteLive.Index, :new
live "/invites/:id/edit", InviteLive.Index, :edit live "/invites/:id/edit", InviteLive.Index, :edit
end end
scope "/", LokalWeb do scope "/", CanneryWeb do
pipe_through [:browser] pipe_through [:browser]
delete "/users/log_out", UserSessionController, :delete delete "/users/log_out", UserSessionController, :delete
@ -95,7 +95,7 @@ defmodule LokalWeb.Router do
end end
scope "/dev" do scope "/dev" do
get "/preview/:id", LokalWeb.EmailController, :preview get "/preview/:id", CanneryWeb.EmailController, :preview
end end
end end
end end

View File

@ -1,4 +1,4 @@
defmodule LokalWeb.Telemetry do defmodule CanneryWeb.Telemetry do
@moduledoc """ @moduledoc """
Collects telemetry Collects telemetry
""" """
@ -35,23 +35,23 @@ defmodule LokalWeb.Telemetry do
), ),
# Database Metrics # Database Metrics
summary("lokal.repo.query.total_time", summary("cannery.repo.query.total_time",
unit: {:native, :millisecond}, unit: {:native, :millisecond},
description: "The sum of the other measurements" description: "The sum of the other measurements"
), ),
summary("lokal.repo.query.decode_time", summary("cannery.repo.query.decode_time",
unit: {:native, :millisecond}, unit: {:native, :millisecond},
description: "The time spent decoding the data received from the database" description: "The time spent decoding the data received from the database"
), ),
summary("lokal.repo.query.query_time", summary("cannery.repo.query.query_time",
unit: {:native, :millisecond}, unit: {:native, :millisecond},
description: "The time spent executing the query" description: "The time spent executing the query"
), ),
summary("lokal.repo.query.queue_time", summary("cannery.repo.query.queue_time",
unit: {:native, :millisecond}, unit: {:native, :millisecond},
description: "The time spent waiting for a database connection" description: "The time spent waiting for a database connection"
), ),
summary("lokal.repo.query.idle_time", summary("cannery.repo.query.idle_time",
unit: {:native, :millisecond}, unit: {:native, :millisecond},
description: description:
"The time the connection spent waiting before being checked out for the query" "The time the connection spent waiting before being checked out for the query"
@ -93,7 +93,7 @@ defmodule LokalWeb.Telemetry do
[ [
# A module, function and arguments to be invoked periodically. # A module, function and arguments to be invoked periodically.
# This function must call :telemetry.execute/3 and a metric must be added above. # This function must call :telemetry.execute/3 and a metric must be added above.
# {LokalWeb, :count_users, []} # {CanneryWeb, :count_users, []}
] ]
end end
end end

View File

@ -6,7 +6,7 @@
<br /> <br />
<span style="margin-bottom: 1em; font-size: 1.25em;"> <span style="margin-bottom: 1em; font-size: 1.25em;">
<%= dgettext("emails", "Welcome to Lokal") %> <%= dgettext("emails", "Welcome to Cannery") %>
</span> </span>
<br /> <br />
@ -19,5 +19,5 @@
<br /> <br />
<%= dgettext("emails", "If you didn't create an account at Lokal, please ignore this.") %> <%= dgettext("emails", "If you didn't create an account at Cannery, please ignore this.") %>
</div> </div>

View File

@ -1,7 +1,7 @@
<%= dgettext("emails", "Hi %{email},", email: @user.email) %> <%= dgettext("emails", "Hi %{email},", email: @user.email) %>
<%= dgettext("emails", "Welcome to Lokal") %> <%= dgettext("emails", "Welcome to Cannery") %>
<%= dgettext("emails", "You can confirm your account by visiting the URL below:") %> <%= dgettext("emails", "You can confirm your account by visiting the URL below:") %>

View File

@ -13,5 +13,5 @@
<br /> <br />
<%= dgettext("emails", "If you didn't request this change from Lokal, please ignore this.") %> <%= dgettext("emails", "If you didn't request this change from Cannery, please ignore this.") %>
</div> </div>

View File

@ -15,6 +15,6 @@
<%= dgettext( <%= dgettext(
"emails", "emails",
"If you didn't request this change from Lokal, please ignore this." "If you didn't request this change from Cannery, please ignore this."
) %> ) %>
</div> </div>

View File

@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title> <title>
<%= dgettext("errors", "Error") %> | <%= gettext("Lokal") %> <%= dgettext("errors", "Error") %> | <%= gettext("Cannery") %>
</title> </title>
<link rel="stylesheet" href="/css/app.css" /> <link rel="stylesheet" href="/css/app.css" />
<script defer type="text/javascript" src="/js/app.js"> <script defer type="text/javascript" src="/js/app.js">
@ -13,7 +13,8 @@
</head> </head>
<body class="pb-8 m-0 p-0 w-full h-full"> <body class="pb-8 m-0 p-0 w-full h-full">
<header> <header>
<.topbar current_user={assigns[:current_user]}></.topbar> <CanneryWeb.Components.Topbar.topbar current_user={assigns[:current_user]}>
</CanneryWeb.Components.Topbar.topbar>
</header> </header>
<div class="pb-8 w-full flex flex-col justify-center items-center text-center"> <div class="pb-8 w-full flex flex-col justify-center items-center text-center">

View File

@ -1,6 +1,7 @@
<main role="main" class="min-h-full min-w-full"> <main role="main" class="min-h-full min-w-full">
<header> <header>
<.topbar current_user={assigns[:current_user]}></.topbar> <CanneryWeb.Components.Topbar.topbar current_user={assigns[:current_user]}>
</CanneryWeb.Components.Topbar.topbar>
<div class="mx-8 my-2 flex flex-col space-y-4 text-center"> <div class="mx-8 my-2 flex flex-col space-y-4 text-center">
<p :if={get_flash(@conn, :info)} class="alert alert-info" role="alert"> <p :if={get_flash(@conn, :info)} class="alert alert-info" role="alert">

View File

@ -12,7 +12,7 @@
<a style="color: rgb(31, 31, 31);" href={Routes.live_url(Endpoint, HomeLive)}> <a style="color: rgb(31, 31, 31);" href={Routes.live_url(Endpoint, HomeLive)}>
<%= dgettext( <%= dgettext(
"emails", "emails",
"This email was sent from Lokal, the self-hosted firearm tracker website." "This email was sent from Cannery, the self-hosted firearm tracker website."
) %> ) %>
</a> </a>
</body> </body>

View File

@ -7,5 +7,5 @@
===================== =====================
<%= dgettext("emails", <%= dgettext("emails",
"This email was sent from Lokal at %{url}, the self-hosted firearm tracker website.", "This email was sent from Cannery at %{url}, the self-hosted firearm tracker website.",
url: Routes.live_url(Endpoint, HomeLive)) %> url: Routes.live_url(Endpoint, HomeLive)) %>

View File

@ -1,6 +1,7 @@
<main class="pb-8 min-w-full"> <main class="pb-8 min-w-full">
<header> <header>
<.topbar current_user={assigns[:current_user]}></.topbar> <CanneryWeb.Components.Topbar.topbar current_user={assigns[:current_user]}>
</CanneryWeb.Components.Topbar.topbar>
<div class="mx-8 my-2 flex flex-col space-y-4 text-center"> <div class="mx-8 my-2 flex flex-col space-y-4 text-center">
<p <p

View File

@ -5,8 +5,8 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<%= csrf_meta_tag() %> <%= csrf_meta_tag() %>
<.live_title suffix={" | #{gettext("Lokal")}"}> <.live_title suffix={" | #{gettext("Cannery")}"}>
<%= assigns[:page_title] || gettext("Lokal") %> <%= assigns[:page_title] || gettext("Cannery") %>
</.live_title> </.live_title>
<link phx-track-static rel="stylesheet" href={Routes.static_path(@conn, "/css/app.css")} /> <link phx-track-static rel="stylesheet" href={Routes.static_path(@conn, "/css/app.css")} />
<script <script

View File

@ -0,0 +1,7 @@
defmodule CanneryWeb.EmailView do
@moduledoc """
A view for email-related helper functions
"""
use CanneryWeb, :view
alias CanneryWeb.{Endpoint, HomeLive}
end

View File

@ -1,4 +1,4 @@
defmodule LokalWeb.ErrorHelpers do defmodule CanneryWeb.ErrorHelpers do
@moduledoc """ @moduledoc """
Conveniences for translating and building error messages. Conveniences for translating and building error messages.
""" """
@ -50,9 +50,9 @@ defmodule LokalWeb.ErrorHelpers do
# should be written to the errors.po file. The :count option is # should be written to the errors.po file. The :count option is
# set by Ecto and indicates we should also apply plural rules. # set by Ecto and indicates we should also apply plural rules.
if count = opts[:count] do if count = opts[:count] do
Gettext.dngettext(LokalWeb.Gettext, "errors", msg, msg, count, opts) Gettext.dngettext(CanneryWeb.Gettext, "errors", msg, msg, count, opts)
else else
Gettext.dgettext(LokalWeb.Gettext, "errors", msg, opts) Gettext.dgettext(CanneryWeb.Gettext, "errors", msg, opts)
end end
end end

View File

@ -1,7 +1,6 @@
defmodule LokalWeb.ErrorView do defmodule CanneryWeb.ErrorView do
use LokalWeb, :view use CanneryWeb, :view
import LokalWeb.Components.Topbar alias CanneryWeb.{Endpoint, HomeLive}
alias LokalWeb.{Endpoint, HomeLive}
def template_not_found(error_path, _assigns) do def template_not_found(error_path, _assigns) do
error_string = error_string =

View File

@ -0,0 +1,3 @@
defmodule CanneryWeb.PageView do
use CanneryWeb, :view
end

View File

@ -1,17 +1,16 @@
defmodule LokalWeb.LayoutView do defmodule CanneryWeb.LayoutView do
use LokalWeb, :view use CanneryWeb, :view
import LokalWeb.Components.Topbar alias CanneryWeb.{Endpoint, HomeLive}
alias LokalWeb.{Endpoint, HomeLive}
# Phoenix LiveDashboard is available only in development by default, # Phoenix LiveDashboard is available only in development by default,
# so we instruct Elixir to not warn if the dashboard route is missing. # so we instruct Elixir to not warn if the dashboard route is missing.
@compile {:no_warn_undefined, {Routes, :live_dashboard_path, 2}} @compile {:no_warn_undefined, {Routes, :live_dashboard_path, 2}}
def get_title(%{assigns: %{title: title}}) when title not in [nil, ""] do def get_title(%{assigns: %{title: title}}) when title not in [nil, ""] do
gettext("Lokal | %{title}", title: title) gettext("Cannery | %{title}", title: title)
end end
def get_title(_conn) do def get_title(_conn) do
gettext("Lokal") gettext("Cannery")
end end
end end

View File

@ -0,0 +1,4 @@
defmodule CanneryWeb.UserConfirmationView do
use CanneryWeb, :view
alias Cannery.Accounts
end

View File

@ -0,0 +1,3 @@
defmodule CanneryWeb.UserRegistrationView do
use CanneryWeb, :view
end

View File

@ -0,0 +1,4 @@
defmodule CanneryWeb.UserResetPasswordView do
use CanneryWeb, :view
alias Cannery.Accounts
end

View File

@ -0,0 +1,4 @@
defmodule CanneryWeb.UserSessionView do
use CanneryWeb, :view
alias Cannery.Accounts
end

View File

@ -0,0 +1,3 @@
defmodule CanneryWeb.UserSettingsView do
use CanneryWeb, :view
end

View File

@ -1,7 +1,7 @@
defmodule LokalWeb.ViewHelpers do defmodule CanneryWeb.ViewHelpers do
@moduledoc """ @moduledoc """
Contains common helpers that can be used in liveviews and regular views. These Contains common helpers that can be used in liveviews and regular views. These
are automatically imported into any Phoenix View using `use LokalWeb, are automatically imported into any Phoenix View using `use CanneryWeb,
:view` :view`
""" """

View File

@ -1,7 +0,0 @@
defmodule LokalWeb.EmailView do
@moduledoc """
A view for email-related helper functions
"""
use LokalWeb, :view
alias LokalWeb.{Endpoint, HomeLive}
end

View File

@ -1,3 +0,0 @@
defmodule LokalWeb.PageView do
use LokalWeb, :view
end

View File

@ -1,4 +0,0 @@
defmodule LokalWeb.UserConfirmationView do
use LokalWeb, :view
alias Lokal.Accounts
end

View File

@ -1,3 +0,0 @@
defmodule LokalWeb.UserRegistrationView do
use LokalWeb, :view
end

View File

@ -1,4 +0,0 @@
defmodule LokalWeb.UserResetPasswordView do
use LokalWeb, :view
alias Lokal.Accounts
end

View File

@ -1,4 +0,0 @@
defmodule LokalWeb.UserSessionView do
use LokalWeb, :view
alias Lokal.Accounts
end

View File

@ -1,3 +0,0 @@
defmodule LokalWeb.UserSettingsView do
use LokalWeb, :view
end

12
mix.exs
View File

@ -1,9 +1,9 @@
defmodule Lokal.MixProject do defmodule Cannery.MixProject do
use Mix.Project use Mix.Project
def project do def project do
[ [
app: :lokal, app: :cannery,
version: "0.1.0", version: "0.1.0",
elixir: "~> 1.14", elixir: "~> 1.14",
elixirc_paths: elixirc_paths(Mix.env()), elixirc_paths: elixirc_paths(Mix.env()),
@ -15,9 +15,9 @@ defmodule Lokal.MixProject do
consolidate_protocols: Mix.env() not in [:dev, :test], consolidate_protocols: Mix.env() not in [:dev, :test],
preferred_cli_env: ["test.all": :test], preferred_cli_env: ["test.all": :test],
# ExDoc # ExDoc
name: "Lokal", name: "Cannery",
source_url: "https://gitea.bubbletea.dev/shibao/lokal", source_url: "https://gitea.bubbletea.dev/shibao/cannery",
homepage_url: "https://gitea.bubbletea.dev/shibao/lokal", homepage_url: "https://gitea.bubbletea.dev/shibao/cannery",
docs: [ docs: [
# The main page in the docs # The main page in the docs
main: "README.md", main: "README.md",
@ -33,7 +33,7 @@ defmodule Lokal.MixProject do
# Type `mix help compile.app` for more information. # Type `mix help compile.app` for more information.
def application do def application do
[ [
mod: {Lokal.Application, []}, mod: {Cannery.Application, []},
extra_applications: [:logger, :runtime_tools, :os_mon, :crypto] extra_applications: [:logger, :runtime_tools, :os_mon, :crypto]
] ]
end end

View File

@ -10,95 +10,95 @@
msgid "" msgid ""
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_settings/edit.html.heex:15 #: lib/cannery_web/components/topbar.ex:91
#: lib/lokal_web/templates/user_settings/edit.html.heex:43 #: lib/cannery_web/templates/user_confirmation/new.html.heex:31
#, elixir-autogen, elixir-format #: lib/cannery_web/templates/user_registration/new.html.heex:44
msgid "Change email" #: lib/cannery_web/templates/user_reset_password/edit.html.heex:45
msgstr "" #: lib/cannery_web/templates/user_reset_password/new.html.heex:31
#: lib/cannery_web/templates/user_session/new.html.heex:3
#: lib/lokal_web/templates/user_settings/edit.html.heex:57 #: lib/cannery_web/templates/user_session/new.html.heex:28
#: lib/lokal_web/templates/user_settings/edit.html.heex:97
#, elixir-autogen, elixir-format
msgid "Change password"
msgstr ""
#: lib/lokal_web/templates/user_settings/edit.html.heex:142
#, elixir-autogen, elixir-format
msgid "Delete User"
msgstr ""
#: lib/lokal_web/templates/user_registration/new.html.heex:47
#: lib/lokal_web/templates/user_reset_password/new.html.heex:3
#: lib/lokal_web/templates/user_session/new.html.heex:42
#, elixir-autogen, elixir-format
msgid "Forgot your password?"
msgstr ""
#: lib/lokal_web/components/topbar.ex:91
#: lib/lokal_web/templates/user_confirmation/new.html.heex:31
#: lib/lokal_web/templates/user_registration/new.html.heex:44
#: lib/lokal_web/templates/user_reset_password/edit.html.heex:45
#: lib/lokal_web/templates/user_reset_password/new.html.heex:31
#: lib/lokal_web/templates/user_session/new.html.heex:3
#: lib/lokal_web/templates/user_session/new.html.heex:28
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Log in" msgid "Log in"
msgstr "" msgstr ""
#: lib/lokal_web/components/topbar.ex:83 #: lib/cannery_web/components/topbar.ex:83
#: lib/lokal_web/templates/user_confirmation/new.html.heex:28 #: lib/cannery_web/templates/user_confirmation/new.html.heex:28
#: lib/lokal_web/templates/user_registration/new.html.heex:3 #: lib/cannery_web/templates/user_registration/new.html.heex:3
#: lib/lokal_web/templates/user_registration/new.html.heex:37 #: lib/cannery_web/templates/user_registration/new.html.heex:37
#: lib/lokal_web/templates/user_reset_password/edit.html.heex:42 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:42
#: lib/lokal_web/templates/user_reset_password/new.html.heex:28 #: lib/cannery_web/templates/user_reset_password/new.html.heex:28
#: lib/lokal_web/templates/user_session/new.html.heex:39 #: lib/cannery_web/templates/user_session/new.html.heex:39
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Register" msgid "Register"
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_confirmation/new.html.heex:3 #: lib/cannery_web/live/invite_live/index.html.heex:29
#: lib/lokal_web/templates/user_confirmation/new.html.heex:15
#, elixir-autogen, elixir-format
msgid "Resend confirmation instructions"
msgstr ""
#: lib/lokal_web/templates/user_reset_password/edit.html.heex:3
#: lib/lokal_web/templates/user_reset_password/edit.html.heex:29
#, elixir-autogen, elixir-format
msgid "Reset password"
msgstr ""
#: lib/lokal_web/templates/user_reset_password/new.html.heex:15
#, elixir-autogen, elixir-format
msgid "Send instructions to reset password"
msgstr ""
#: lib/lokal_web/live/invite_live/index.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Copy to clipboard" msgid "Copy to clipboard"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.html.heex:16 #: lib/cannery_web/live/invite_live/index.html.heex:16
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Create Invite" msgid "Create Invite"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.html.heex:12 #: lib/cannery_web/live/invite_live/index.html.heex:12
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invite someone new!" msgid "Invite someone new!"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/form_component.html.heex:29 #: lib/cannery_web/live/invite_live/form_component.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Save" msgid "Save"
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_settings/edit.html.heex:111 #: lib/cannery_web/templates/user_settings/edit.html.heex:111
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change Language" msgid "Change Language"
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_settings/edit.html.heex:128 #: lib/cannery_web/templates/user_settings/edit.html.heex:15
#: lib/cannery_web/templates/user_settings/edit.html.heex:43
#, elixir-autogen, elixir-format
msgid "Change email"
msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:128
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change language" msgid "Change language"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:57
#: lib/cannery_web/templates/user_settings/edit.html.heex:97
#, elixir-autogen, elixir-format
msgid "Change password"
msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:142
#, elixir-autogen, elixir-format
msgid "Delete User"
msgstr ""
#: lib/cannery_web/templates/user_registration/new.html.heex:47
#: lib/cannery_web/templates/user_reset_password/new.html.heex:3
#: lib/cannery_web/templates/user_session/new.html.heex:42
#, elixir-autogen, elixir-format
msgid "Forgot your password?"
msgstr ""
#: lib/cannery_web/templates/user_confirmation/new.html.heex:3
#: lib/cannery_web/templates/user_confirmation/new.html.heex:15
#, elixir-autogen, elixir-format
msgid "Resend confirmation instructions"
msgstr ""
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:3
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:29
#, elixir-autogen, elixir-format
msgid "Reset password"
msgstr ""
#: lib/cannery_web/templates/user_reset_password/new.html.heex:15
#, elixir-autogen, elixir-format
msgid "Send instructions to reset password"
msgstr ""

View File

@ -10,293 +10,293 @@
msgid "" msgid ""
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_reset_password/edit.html.heex:20 #: lib/cannery_web/controllers/user_confirmation_controller.ex:8
#: lib/lokal_web/templates/user_settings/edit.html.heex:76
#, elixir-autogen, elixir-format
msgid "Confirm new password"
msgstr ""
#: lib/lokal_web/controllers/user_confirmation_controller.ex:8
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Confirm your account" msgid "Confirm your account"
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_settings/edit.html.heex:31 #: lib/cannery_web/controllers/user_reset_password_controller.ex:9
#: lib/lokal_web/templates/user_settings/edit.html.heex:85
#, elixir-autogen, elixir-format
msgid "Current password"
msgstr ""
#: lib/lokal_web/controllers/user_reset_password_controller.ex:9
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Forgot your password?" msgid "Forgot your password?"
msgstr "" msgstr ""
#: lib/lokal_web/components/invite_card.ex:42 #: lib/cannery_web/components/invite_card.ex:42
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invite Disabled" msgid "Invite Disabled"
msgstr "" msgstr ""
#: lib/lokal_web/components/topbar.ex:44 #: lib/cannery_web/components/topbar.ex:44
#: lib/lokal_web/live/invite_live/index.ex:42 #: lib/cannery_web/live/invite_live/index.ex:42
#: lib/lokal_web/live/invite_live/index.html.heex:3 #: lib/cannery_web/live/invite_live/index.html.heex:3
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invites" msgid "Invites"
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_session/new.html.heex:23 #: lib/cannery_web/controllers/user_session_controller.ex:8
#, elixir-autogen, elixir-format
msgid "Keep me logged in for 60 days"
msgstr ""
#: lib/lokal_web/controllers/user_session_controller.ex:8
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Log in" msgid "Log in"
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_reset_password/edit.html.heex:16 #: lib/cannery_web/controllers/user_registration_controller.ex:32
#: lib/lokal_web/templates/user_settings/edit.html.heex:69
#, elixir-autogen, elixir-format
msgid "New password"
msgstr ""
#: lib/lokal_web/templates/layout/live.html.heex:43
#, elixir-autogen, elixir-format
msgid "Reconnecting..."
msgstr ""
#: lib/lokal_web/controllers/user_registration_controller.ex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Register" msgid "Register"
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_reset_password_controller.ex:36 #: lib/cannery_web/controllers/user_reset_password_controller.ex:36
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Reset your password" msgid "Reset your password"
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_settings_controller.ex:10 #: lib/cannery_web/controllers/user_settings_controller.ex:10
#: lib/lokal_web/templates/user_settings/edit.html.heex:3 #: lib/cannery_web/templates/user_settings/edit.html.heex:3
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Settings" msgid "Settings"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.ex:15 #: lib/cannery_web/live/home_live.ex:15
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Home" msgid "Home"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.html.heex:86 #: lib/cannery_web/live/invite_live/index.html.heex:86
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Admins" msgid "Admins"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.html.heex:62 #: lib/cannery_web/live/invite_live/index.html.heex:62
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Disable" msgid "Disable"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.ex:34 #: lib/cannery_web/live/invite_live/index.ex:34
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit Invite" msgid "Edit Invite"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.html.heex:62 #: lib/cannery_web/live/invite_live/index.html.heex:62
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Enable" msgid "Enable"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/form_component.html.heex:21 #: lib/cannery_web/live/invite_live/form_component.html.heex:21
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.ex:38 #: lib/cannery_web/live/invite_live/index.ex:38
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New Invite" msgid "New Invite"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.html.heex:8 #: lib/cannery_web/live/invite_live/index.html.heex:8
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No invites 😔" msgid "No invites 😔"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.html.heex:77 #: lib/cannery_web/live/invite_live/index.html.heex:77
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Set Unlimited" msgid "Set Unlimited"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.html.heex:114 #: lib/cannery_web/live/invite_live/index.html.heex:114
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Users" msgid "Users"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/form_component.html.heex:25 #: lib/cannery_web/live/invite_live/form_component.html.heex:25
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Uses left" msgid "Uses left"
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_registration/new.html.heex:32 #: lib/cannery_web/components/user_card.ex:29
#: lib/lokal_web/templates/user_settings/edit.html.heex:123
#, elixir-autogen, elixir-format
msgid "English"
msgstr ""
#: lib/lokal_web/templates/user_registration/new.html.heex:28
#, elixir-autogen, elixir-format
msgid "Language"
msgstr ""
#: lib/lokal_web/components/user_card.ex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Email unconfirmed" msgid "Email unconfirmed"
msgstr "" msgstr ""
#: lib/lokal_web/components/topbar.ex:23 #: lib/cannery_web/components/topbar.ex:23
#: lib/lokal_web/templates/error/error.html.heex:8 #: lib/cannery_web/templates/error/error.html.heex:8
#: lib/lokal_web/templates/layout/root.html.heex:8 #: lib/cannery_web/templates/layout/root.html.heex:8
#: lib/lokal_web/templates/layout/root.html.heex:9 #: lib/cannery_web/templates/layout/root.html.heex:9
#: lib/lokal_web/views/layout_view.ex:15 #: lib/cannery_web/views/layout_view.ex:14
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Lokal" msgid "Cannery"
msgstr "" msgstr ""
#: lib/lokal_web/components/user_card.ex:34 #: lib/cannery_web/components/user_card.ex:34
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "User registered on%{registered_datetime}" msgid "User registered on%{registered_datetime}"
msgstr "" msgstr ""
#: lib/lokal_web/components/user_card.ex:23 #: lib/cannery_web/components/user_card.ex:23
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "User was confirmed at%{confirmed_datetime}" msgid "User was confirmed at%{confirmed_datetime}"
msgstr "" msgstr ""
#: lib/lokal_web/components/invite_card.ex:37 #: lib/cannery_web/components/invite_card.ex:37
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Uses Left: Unlimited" msgid "Uses Left: Unlimited"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:37 #: lib/cannery_web/live/home_live.html.heex:37
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Access from any internet-capable device" msgid "Access from any internet-capable device"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:51 #: lib/cannery_web/live/home_live.html.heex:51
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Admins:" msgid "Admins:"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:16 #: lib/cannery_web/live/home_live.html.heex:16
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Easy to Use:" msgid "Easy to Use:"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:98 #: lib/cannery_web/live/home_live.html.heex:98
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Get involved!" msgid "Get involved!"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:119 #: lib/cannery_web/live/home_live.html.heex:119
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Help translate" msgid "Help translate"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:46 #: lib/cannery_web/live/home_live.html.heex:46
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Instance Information" msgid "Instance Information"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:73 #: lib/cannery_web/live/home_live.html.heex:73
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invite Only" msgid "Invite Only"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:72 #: lib/cannery_web/live/home_live.html.heex:72
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Public Signups" msgid "Public Signups"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:69 #: lib/cannery_web/live/home_live.html.heex:69
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Registration:" msgid "Registration:"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:130 #: lib/cannery_web/live/home_live.html.heex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Report bugs or request features" msgid "Report bugs or request features"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:24 #: lib/cannery_web/live/home_live.html.heex:24
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Secure:" msgid "Secure:"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:27 #: lib/cannery_web/live/home_live.html.heex:27
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Self-host your own instance, or use an instance from someone you trust." msgid "Self-host your own instance, or use an instance from someone you trust."
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:34 #: lib/cannery_web/live/home_live.html.heex:34
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Simple:" msgid "Simple:"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:79 #: lib/cannery_web/live/home_live.html.heex:79
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Version:" msgid "Version:"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:108 #: lib/cannery_web/live/home_live.html.heex:108
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View the source code" msgid "View the source code"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:28 #: lib/cannery_web/live/home_live.html.heex:28
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Your data stays with you, period" msgid "Your data stays with you, period"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:19 #: lib/cannery_web/live/home_live.html.heex:19
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Lokal lets you easily shop from your local community" msgid "Cannery lets you easily shop from your local community"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:7 #: lib/cannery_web/live/home_live.html.heex:7
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Shop from your local community" msgid "Shop from your local community"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:3 #: lib/cannery_web/live/home_live.html.heex:3
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Welcome to Lokal" msgid "Welcome to Cannery"
msgstr "" msgstr ""
#: lib/lokal_web/views/layout_view.ex:11 #: lib/cannery_web/views/layout_view.ex:10
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Lokal | %{title}" msgid "Cannery | %{title}"
msgstr "" msgstr ""
#: lib/lokal_web/components/invite_card.ex:32 #: lib/cannery_web/components/invite_card.ex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Uses Left: %{uses_left_count}" msgid "Uses Left: %{uses_left_count}"
msgstr "" msgstr ""
#: lib/lokal_web/components/invite_card.ex:52 #: lib/cannery_web/components/invite_card.ex:52
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Uses: %{uses_count}" msgid "Uses: %{uses_count}"
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_confirmation/new.html.heex:12 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:20
#: lib/lokal_web/templates/user_registration/new.html.heex:20 #: lib/cannery_web/templates/user_settings/edit.html.heex:76
#: lib/lokal_web/templates/user_reset_password/new.html.heex:12 #, elixir-autogen, elixir-format
#: lib/lokal_web/templates/user_session/new.html.heex:17 msgid "Confirm new password"
#: lib/lokal_web/templates/user_settings/edit.html.heex:27 msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:31
#: lib/cannery_web/templates/user_settings/edit.html.heex:85
#, elixir-autogen, elixir-format
msgid "Current password"
msgstr ""
#: lib/cannery_web/templates/user_confirmation/new.html.heex:12
#: lib/cannery_web/templates/user_registration/new.html.heex:20
#: lib/cannery_web/templates/user_reset_password/new.html.heex:12
#: lib/cannery_web/templates/user_session/new.html.heex:17
#: lib/cannery_web/templates/user_settings/edit.html.heex:27
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Email" msgid "Email"
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_registration/new.html.heex:24 #: lib/cannery_web/templates/user_registration/new.html.heex:32
#: lib/lokal_web/templates/user_session/new.html.heex:20 #: lib/cannery_web/templates/user_settings/edit.html.heex:123
#, elixir-autogen, elixir-format
msgid "English"
msgstr ""
#: lib/cannery_web/templates/user_session/new.html.heex:23
#, elixir-autogen, elixir-format
msgid "Keep me logged in for 60 days"
msgstr ""
#: lib/cannery_web/templates/user_registration/new.html.heex:28
#, elixir-autogen, elixir-format
msgid "Language"
msgstr ""
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:16
#: lib/cannery_web/templates/user_settings/edit.html.heex:69
#, elixir-autogen, elixir-format
msgid "New password"
msgstr ""
#: lib/cannery_web/templates/user_registration/new.html.heex:24
#: lib/cannery_web/templates/user_session/new.html.heex:20
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: lib/cannery_web/templates/layout/live.html.heex:44
#, elixir-autogen, elixir-format
msgid "Reconnecting..."
msgstr ""

View File

@ -10,83 +10,83 @@
msgid "" msgid ""
msgstr "" msgstr ""
#: lib/lokal_web/templates/email/confirm_email.html.heex:3 #: lib/cannery/accounts/email.ex:30
#: lib/lokal_web/templates/email/confirm_email.txt.eex:2 #, elixir-autogen, elixir-format
#: lib/lokal_web/templates/email/reset_password.html.heex:3 msgid "Confirm your Cannery account"
#: lib/lokal_web/templates/email/reset_password.txt.eex:2 msgstr ""
#: lib/lokal_web/templates/email/update_email.html.heex:3
#: lib/lokal_web/templates/email/update_email.txt.eex:2 #: lib/cannery/accounts/email.ex:37
#, elixir-autogen, elixir-format
msgid "Reset your Cannery password"
msgstr ""
#: lib/cannery/accounts/email.ex:44
#, elixir-autogen, elixir-format
msgid "Update your Cannery email"
msgstr ""
#: lib/cannery_web/templates/email/confirm_email.html.heex:3
#: lib/cannery_web/templates/email/confirm_email.txt.eex:2
#: lib/cannery_web/templates/email/reset_password.html.heex:3
#: lib/cannery_web/templates/email/reset_password.txt.eex:2
#: lib/cannery_web/templates/email/update_email.html.heex:3
#: lib/cannery_web/templates/email/update_email.txt.eex:2
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Hi %{email}," msgid "Hi %{email},"
msgstr "" msgstr ""
#: lib/lokal_web/templates/email/confirm_email.txt.eex:10 #: lib/cannery_web/templates/email/confirm_email.txt.eex:10
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "If you didn't create an account at %{url}, please ignore this." msgid "If you didn't create an account at %{url}, please ignore this."
msgstr "" msgstr ""
#: lib/lokal_web/templates/email/reset_password.txt.eex:8 #: lib/cannery_web/templates/email/confirm_email.html.heex:22
#: lib/lokal_web/templates/email/update_email.txt.eex:8 #, elixir-autogen, elixir-format
msgid "If you didn't create an account at Cannery, please ignore this."
msgstr ""
#: lib/cannery_web/templates/email/reset_password.txt.eex:8
#: lib/cannery_web/templates/email/update_email.txt.eex:8
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "If you didn't request this change from %{url}, please ignore this." msgid "If you didn't request this change from %{url}, please ignore this."
msgstr "" msgstr ""
#: lib/lokal_web/templates/email/update_email.html.heex:8 #: lib/cannery_web/templates/email/reset_password.html.heex:16
#: lib/lokal_web/templates/email/update_email.txt.eex:4 #: lib/cannery_web/templates/email/update_email.html.heex:16
#, elixir-autogen, elixir-format
msgid "If you didn't request this change from Cannery, please ignore this."
msgstr ""
#: lib/cannery_web/templates/layout/email.txt.eex:9
#, elixir-autogen, elixir-format
msgid "This email was sent from Cannery at %{url}, the self-hosted firearm tracker website."
msgstr ""
#: lib/cannery_web/templates/layout/email.html.heex:13
#, elixir-autogen, elixir-format
msgid "This email was sent from Cannery, the self-hosted firearm tracker website."
msgstr ""
#: lib/cannery_web/templates/email/confirm_email.html.heex:9
#: lib/cannery_web/templates/email/confirm_email.txt.eex:4
#, elixir-autogen, elixir-format
msgid "Welcome to Cannery"
msgstr ""
#: lib/cannery_web/templates/email/update_email.html.heex:8
#: lib/cannery_web/templates/email/update_email.txt.eex:4
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can change your email by visiting the URL below:" msgid "You can change your email by visiting the URL below:"
msgstr "" msgstr ""
#: lib/lokal_web/templates/email/confirm_email.html.heex:14 #: lib/cannery_web/templates/email/confirm_email.html.heex:14
#: lib/lokal_web/templates/email/confirm_email.txt.eex:6 #: lib/cannery_web/templates/email/confirm_email.txt.eex:6
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can confirm your account by visiting the URL below:" msgid "You can confirm your account by visiting the URL below:"
msgstr "" msgstr ""
#: lib/lokal_web/templates/email/reset_password.html.heex:8 #: lib/cannery_web/templates/email/reset_password.html.heex:8
#: lib/lokal_web/templates/email/reset_password.txt.eex:4 #: lib/cannery_web/templates/email/reset_password.txt.eex:4
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can reset your password by visiting the URL below:" msgid "You can reset your password by visiting the URL below:"
msgstr "" msgstr ""
#: lib/lokal/accounts/email.ex:30
#, elixir-autogen, elixir-format
msgid "Confirm your Lokal account"
msgstr ""
#: lib/lokal_web/templates/email/confirm_email.html.heex:22
#, elixir-autogen, elixir-format
msgid "If you didn't create an account at Lokal, please ignore this."
msgstr ""
#: lib/lokal_web/templates/email/reset_password.html.heex:16
#: lib/lokal_web/templates/email/update_email.html.heex:16
#, elixir-autogen, elixir-format
msgid "If you didn't request this change from Lokal, please ignore this."
msgstr ""
#: lib/lokal/accounts/email.ex:37
#, elixir-autogen, elixir-format
msgid "Reset your Lokal password"
msgstr ""
#: lib/lokal_web/templates/layout/email.txt.eex:9
#, elixir-autogen, elixir-format
msgid "This email was sent from Lokal at %{url}, the self-hosted firearm tracker website."
msgstr ""
#: lib/lokal_web/templates/layout/email.html.heex:13
#, elixir-autogen, elixir-format
msgid "This email was sent from Lokal, the self-hosted firearm tracker website."
msgstr ""
#: lib/lokal/accounts/email.ex:44
#, elixir-autogen, elixir-format
msgid "Update your Lokal email"
msgstr ""
#: lib/lokal_web/templates/email/confirm_email.html.heex:9
#: lib/lokal_web/templates/email/confirm_email.txt.eex:4
#, elixir-autogen, elixir-format
msgid "Welcome to Lokal"
msgstr ""

View File

@ -10,95 +10,95 @@ msgid ""
msgstr "" msgstr ""
"Language: en\n" "Language: en\n"
#: lib/lokal_web/templates/user_settings/edit.html.heex:15 #: lib/cannery_web/components/topbar.ex:91
#: lib/lokal_web/templates/user_settings/edit.html.heex:43 #: lib/cannery_web/templates/user_confirmation/new.html.heex:31
#, elixir-autogen, elixir-format #: lib/cannery_web/templates/user_registration/new.html.heex:44
msgid "Change email" #: lib/cannery_web/templates/user_reset_password/edit.html.heex:45
msgstr "" #: lib/cannery_web/templates/user_reset_password/new.html.heex:31
#: lib/cannery_web/templates/user_session/new.html.heex:3
#: lib/lokal_web/templates/user_settings/edit.html.heex:57 #: lib/cannery_web/templates/user_session/new.html.heex:28
#: lib/lokal_web/templates/user_settings/edit.html.heex:97
#, elixir-autogen, elixir-format
msgid "Change password"
msgstr ""
#: lib/lokal_web/templates/user_settings/edit.html.heex:142
#, elixir-autogen, elixir-format
msgid "Delete User"
msgstr ""
#: lib/lokal_web/templates/user_registration/new.html.heex:47
#: lib/lokal_web/templates/user_reset_password/new.html.heex:3
#: lib/lokal_web/templates/user_session/new.html.heex:42
#, elixir-autogen, elixir-format
msgid "Forgot your password?"
msgstr ""
#: lib/lokal_web/components/topbar.ex:91
#: lib/lokal_web/templates/user_confirmation/new.html.heex:31
#: lib/lokal_web/templates/user_registration/new.html.heex:44
#: lib/lokal_web/templates/user_reset_password/edit.html.heex:45
#: lib/lokal_web/templates/user_reset_password/new.html.heex:31
#: lib/lokal_web/templates/user_session/new.html.heex:3
#: lib/lokal_web/templates/user_session/new.html.heex:28
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Log in" msgid "Log in"
msgstr "" msgstr ""
#: lib/lokal_web/components/topbar.ex:83 #: lib/cannery_web/components/topbar.ex:83
#: lib/lokal_web/templates/user_confirmation/new.html.heex:28 #: lib/cannery_web/templates/user_confirmation/new.html.heex:28
#: lib/lokal_web/templates/user_registration/new.html.heex:3 #: lib/cannery_web/templates/user_registration/new.html.heex:3
#: lib/lokal_web/templates/user_registration/new.html.heex:37 #: lib/cannery_web/templates/user_registration/new.html.heex:37
#: lib/lokal_web/templates/user_reset_password/edit.html.heex:42 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:42
#: lib/lokal_web/templates/user_reset_password/new.html.heex:28 #: lib/cannery_web/templates/user_reset_password/new.html.heex:28
#: lib/lokal_web/templates/user_session/new.html.heex:39 #: lib/cannery_web/templates/user_session/new.html.heex:39
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Register" msgid "Register"
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_confirmation/new.html.heex:3 #: lib/cannery_web/live/invite_live/index.html.heex:29
#: lib/lokal_web/templates/user_confirmation/new.html.heex:15
#, elixir-autogen, elixir-format
msgid "Resend confirmation instructions"
msgstr ""
#: lib/lokal_web/templates/user_reset_password/edit.html.heex:3
#: lib/lokal_web/templates/user_reset_password/edit.html.heex:29
#, elixir-autogen, elixir-format
msgid "Reset password"
msgstr ""
#: lib/lokal_web/templates/user_reset_password/new.html.heex:15
#, elixir-autogen, elixir-format
msgid "Send instructions to reset password"
msgstr ""
#: lib/lokal_web/live/invite_live/index.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Copy to clipboard" msgid "Copy to clipboard"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.html.heex:16 #: lib/cannery_web/live/invite_live/index.html.heex:16
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Create Invite" msgid "Create Invite"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.html.heex:12 #: lib/cannery_web/live/invite_live/index.html.heex:12
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invite someone new!" msgid "Invite someone new!"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/form_component.html.heex:29 #: lib/cannery_web/live/invite_live/form_component.html.heex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Save" msgid "Save"
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_settings/edit.html.heex:111 #: lib/cannery_web/templates/user_settings/edit.html.heex:111
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change Language" msgid "Change Language"
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_settings/edit.html.heex:128 #: lib/cannery_web/templates/user_settings/edit.html.heex:15
#: lib/cannery_web/templates/user_settings/edit.html.heex:43
#, elixir-autogen, elixir-format
msgid "Change email"
msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:128
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Change language" msgid "Change language"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:57
#: lib/cannery_web/templates/user_settings/edit.html.heex:97
#, elixir-autogen, elixir-format
msgid "Change password"
msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:142
#, elixir-autogen, elixir-format
msgid "Delete User"
msgstr ""
#: lib/cannery_web/templates/user_registration/new.html.heex:47
#: lib/cannery_web/templates/user_reset_password/new.html.heex:3
#: lib/cannery_web/templates/user_session/new.html.heex:42
#, elixir-autogen, elixir-format
msgid "Forgot your password?"
msgstr ""
#: lib/cannery_web/templates/user_confirmation/new.html.heex:3
#: lib/cannery_web/templates/user_confirmation/new.html.heex:15
#, elixir-autogen, elixir-format
msgid "Resend confirmation instructions"
msgstr ""
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:3
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:29
#, elixir-autogen, elixir-format
msgid "Reset password"
msgstr ""
#: lib/cannery_web/templates/user_reset_password/new.html.heex:15
#, elixir-autogen, elixir-format
msgid "Send instructions to reset password"
msgstr ""

View File

@ -10,293 +10,293 @@ msgid ""
msgstr "" msgstr ""
"Language: en\n" "Language: en\n"
#: lib/lokal_web/templates/user_reset_password/edit.html.heex:20 #: lib/cannery_web/controllers/user_confirmation_controller.ex:8
#: lib/lokal_web/templates/user_settings/edit.html.heex:76
#, elixir-autogen, elixir-format
msgid "Confirm new password"
msgstr ""
#: lib/lokal_web/controllers/user_confirmation_controller.ex:8
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Confirm your account" msgid "Confirm your account"
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_settings/edit.html.heex:31 #: lib/cannery_web/controllers/user_reset_password_controller.ex:9
#: lib/lokal_web/templates/user_settings/edit.html.heex:85
#, elixir-autogen, elixir-format
msgid "Current password"
msgstr ""
#: lib/lokal_web/controllers/user_reset_password_controller.ex:9
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Forgot your password?" msgid "Forgot your password?"
msgstr "" msgstr ""
#: lib/lokal_web/components/invite_card.ex:42 #: lib/cannery_web/components/invite_card.ex:42
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invite Disabled" msgid "Invite Disabled"
msgstr "" msgstr ""
#: lib/lokal_web/components/topbar.ex:44 #: lib/cannery_web/components/topbar.ex:44
#: lib/lokal_web/live/invite_live/index.ex:42 #: lib/cannery_web/live/invite_live/index.ex:42
#: lib/lokal_web/live/invite_live/index.html.heex:3 #: lib/cannery_web/live/invite_live/index.html.heex:3
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invites" msgid "Invites"
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_session/new.html.heex:23 #: lib/cannery_web/controllers/user_session_controller.ex:8
#, elixir-autogen, elixir-format
msgid "Keep me logged in for 60 days"
msgstr ""
#: lib/lokal_web/controllers/user_session_controller.ex:8
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Log in" msgid "Log in"
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_reset_password/edit.html.heex:16 #: lib/cannery_web/controllers/user_registration_controller.ex:32
#: lib/lokal_web/templates/user_settings/edit.html.heex:69
#, elixir-autogen, elixir-format
msgid "New password"
msgstr ""
#: lib/lokal_web/templates/layout/live.html.heex:43
#, elixir-autogen, elixir-format
msgid "Reconnecting..."
msgstr ""
#: lib/lokal_web/controllers/user_registration_controller.ex:32
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Register" msgid "Register"
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_reset_password_controller.ex:36 #: lib/cannery_web/controllers/user_reset_password_controller.ex:36
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Reset your password" msgid "Reset your password"
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_settings_controller.ex:10 #: lib/cannery_web/controllers/user_settings_controller.ex:10
#: lib/lokal_web/templates/user_settings/edit.html.heex:3 #: lib/cannery_web/templates/user_settings/edit.html.heex:3
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Settings" msgid "Settings"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.ex:15 #: lib/cannery_web/live/home_live.ex:15
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Home" msgid "Home"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.html.heex:86 #: lib/cannery_web/live/invite_live/index.html.heex:86
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Admins" msgid "Admins"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.html.heex:62 #: lib/cannery_web/live/invite_live/index.html.heex:62
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Disable" msgid "Disable"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.ex:34 #: lib/cannery_web/live/invite_live/index.ex:34
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Edit Invite" msgid "Edit Invite"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.html.heex:62 #: lib/cannery_web/live/invite_live/index.html.heex:62
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Enable" msgid "Enable"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/form_component.html.heex:21 #: lib/cannery_web/live/invite_live/form_component.html.heex:21
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.ex:38 #: lib/cannery_web/live/invite_live/index.ex:38
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "New Invite" msgid "New Invite"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.html.heex:8 #: lib/cannery_web/live/invite_live/index.html.heex:8
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "No invites 😔" msgid "No invites 😔"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.html.heex:77 #: lib/cannery_web/live/invite_live/index.html.heex:77
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Set Unlimited" msgid "Set Unlimited"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.html.heex:114 #: lib/cannery_web/live/invite_live/index.html.heex:114
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Users" msgid "Users"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/form_component.html.heex:25 #: lib/cannery_web/live/invite_live/form_component.html.heex:25
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Uses left" msgid "Uses left"
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_registration/new.html.heex:32 #: lib/cannery_web/components/user_card.ex:29
#: lib/lokal_web/templates/user_settings/edit.html.heex:123
#, elixir-autogen, elixir-format
msgid "English"
msgstr ""
#: lib/lokal_web/templates/user_registration/new.html.heex:28
#, elixir-autogen, elixir-format
msgid "Language"
msgstr ""
#: lib/lokal_web/components/user_card.ex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Email unconfirmed" msgid "Email unconfirmed"
msgstr "" msgstr ""
#: lib/lokal_web/components/topbar.ex:23 #: lib/cannery_web/components/topbar.ex:23
#: lib/lokal_web/templates/error/error.html.heex:8 #: lib/cannery_web/templates/error/error.html.heex:8
#: lib/lokal_web/templates/layout/root.html.heex:8 #: lib/cannery_web/templates/layout/root.html.heex:8
#: lib/lokal_web/templates/layout/root.html.heex:9 #: lib/cannery_web/templates/layout/root.html.heex:9
#: lib/lokal_web/views/layout_view.ex:15 #: lib/cannery_web/views/layout_view.ex:14
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Lokal" msgid "Cannery"
msgstr "" msgstr ""
#: lib/lokal_web/components/user_card.ex:34 #: lib/cannery_web/components/user_card.ex:34
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "User registered on%{registered_datetime}" msgid "User registered on%{registered_datetime}"
msgstr "" msgstr ""
#: lib/lokal_web/components/user_card.ex:23 #: lib/cannery_web/components/user_card.ex:23
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "User was confirmed at%{confirmed_datetime}" msgid "User was confirmed at%{confirmed_datetime}"
msgstr "" msgstr ""
#: lib/lokal_web/components/invite_card.ex:37 #: lib/cannery_web/components/invite_card.ex:37
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Uses Left: Unlimited" msgid "Uses Left: Unlimited"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:37 #: lib/cannery_web/live/home_live.html.heex:37
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Access from any internet-capable device" msgid "Access from any internet-capable device"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:51 #: lib/cannery_web/live/home_live.html.heex:51
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Admins:" msgid "Admins:"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:16 #: lib/cannery_web/live/home_live.html.heex:16
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Easy to Use:" msgid "Easy to Use:"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:98 #: lib/cannery_web/live/home_live.html.heex:98
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Get involved!" msgid "Get involved!"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:119 #: lib/cannery_web/live/home_live.html.heex:119
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Help translate" msgid "Help translate"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:46 #: lib/cannery_web/live/home_live.html.heex:46
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Instance Information" msgid "Instance Information"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:73 #: lib/cannery_web/live/home_live.html.heex:73
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Invite Only" msgid "Invite Only"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:72 #: lib/cannery_web/live/home_live.html.heex:72
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Public Signups" msgid "Public Signups"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:69 #: lib/cannery_web/live/home_live.html.heex:69
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Registration:" msgid "Registration:"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:130 #: lib/cannery_web/live/home_live.html.heex:130
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Report bugs or request features" msgid "Report bugs or request features"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:24 #: lib/cannery_web/live/home_live.html.heex:24
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Secure:" msgid "Secure:"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:27 #: lib/cannery_web/live/home_live.html.heex:27
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Self-host your own instance, or use an instance from someone you trust." msgid "Self-host your own instance, or use an instance from someone you trust."
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:34 #: lib/cannery_web/live/home_live.html.heex:34
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Simple:" msgid "Simple:"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:79 #: lib/cannery_web/live/home_live.html.heex:79
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Version:" msgid "Version:"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:108 #: lib/cannery_web/live/home_live.html.heex:108
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "View the source code" msgid "View the source code"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:28 #: lib/cannery_web/live/home_live.html.heex:28
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Your data stays with you, period" msgid "Your data stays with you, period"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:19 #: lib/cannery_web/live/home_live.html.heex:19
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Lokal lets you easily shop from your local community" msgid "Cannery lets you easily shop from your local community"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:7 #: lib/cannery_web/live/home_live.html.heex:7
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Shop from your local community" msgid "Shop from your local community"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:3 #: lib/cannery_web/live/home_live.html.heex:3
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Welcome to Lokal" msgid "Welcome to Cannery"
msgstr "" msgstr ""
#: lib/lokal_web/views/layout_view.ex:11 #: lib/cannery_web/views/layout_view.ex:10
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Lokal | %{title}" msgid "Cannery | %{title}"
msgstr "" msgstr ""
#: lib/lokal_web/components/invite_card.ex:32 #: lib/cannery_web/components/invite_card.ex:32
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Uses Left: %{uses_left_count}" msgid "Uses Left: %{uses_left_count}"
msgstr "" msgstr ""
#: lib/lokal_web/components/invite_card.ex:52 #: lib/cannery_web/components/invite_card.ex:52
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Uses: %{uses_count}" msgid "Uses: %{uses_count}"
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_confirmation/new.html.heex:12 #: lib/cannery_web/templates/user_reset_password/edit.html.heex:20
#: lib/lokal_web/templates/user_registration/new.html.heex:20 #: lib/cannery_web/templates/user_settings/edit.html.heex:76
#: lib/lokal_web/templates/user_reset_password/new.html.heex:12 #, elixir-autogen, elixir-format
#: lib/lokal_web/templates/user_session/new.html.heex:17 msgid "Confirm new password"
#: lib/lokal_web/templates/user_settings/edit.html.heex:27 msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:31
#: lib/cannery_web/templates/user_settings/edit.html.heex:85
#, elixir-autogen, elixir-format
msgid "Current password"
msgstr ""
#: lib/cannery_web/templates/user_confirmation/new.html.heex:12
#: lib/cannery_web/templates/user_registration/new.html.heex:20
#: lib/cannery_web/templates/user_reset_password/new.html.heex:12
#: lib/cannery_web/templates/user_session/new.html.heex:17
#: lib/cannery_web/templates/user_settings/edit.html.heex:27
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Email" msgid "Email"
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_registration/new.html.heex:24 #: lib/cannery_web/templates/user_registration/new.html.heex:32
#: lib/lokal_web/templates/user_session/new.html.heex:20 #: lib/cannery_web/templates/user_settings/edit.html.heex:123
#, elixir-autogen, elixir-format
msgid "English"
msgstr ""
#: lib/cannery_web/templates/user_session/new.html.heex:23
#, elixir-autogen, elixir-format
msgid "Keep me logged in for 60 days"
msgstr ""
#: lib/cannery_web/templates/user_registration/new.html.heex:28
#, elixir-autogen, elixir-format
msgid "Language"
msgstr ""
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:16
#: lib/cannery_web/templates/user_settings/edit.html.heex:69
#, elixir-autogen, elixir-format
msgid "New password"
msgstr ""
#: lib/cannery_web/templates/user_registration/new.html.heex:24
#: lib/cannery_web/templates/user_session/new.html.heex:20
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: lib/cannery_web/templates/layout/live.html.heex:44
#, elixir-autogen, elixir-format
msgid "Reconnecting..."
msgstr ""

View File

@ -10,83 +10,83 @@ msgid ""
msgstr "" msgstr ""
"Language: en\n" "Language: en\n"
#: lib/lokal_web/templates/email/confirm_email.html.heex:3 #: lib/cannery/accounts/email.ex:30
#: lib/lokal_web/templates/email/confirm_email.txt.eex:2 #, elixir-autogen, elixir-format
#: lib/lokal_web/templates/email/reset_password.html.heex:3 msgid "Confirm your Cannery account"
#: lib/lokal_web/templates/email/reset_password.txt.eex:2 msgstr ""
#: lib/lokal_web/templates/email/update_email.html.heex:3
#: lib/lokal_web/templates/email/update_email.txt.eex:2 #: lib/cannery/accounts/email.ex:37
#, elixir-autogen, elixir-format
msgid "Reset your Cannery password"
msgstr ""
#: lib/cannery/accounts/email.ex:44
#, elixir-autogen, elixir-format
msgid "Update your Cannery email"
msgstr ""
#: lib/cannery_web/templates/email/confirm_email.html.heex:3
#: lib/cannery_web/templates/email/confirm_email.txt.eex:2
#: lib/cannery_web/templates/email/reset_password.html.heex:3
#: lib/cannery_web/templates/email/reset_password.txt.eex:2
#: lib/cannery_web/templates/email/update_email.html.heex:3
#: lib/cannery_web/templates/email/update_email.txt.eex:2
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Hi %{email}," msgid "Hi %{email},"
msgstr "" msgstr ""
#: lib/lokal_web/templates/email/confirm_email.txt.eex:10 #: lib/cannery_web/templates/email/confirm_email.txt.eex:10
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "If you didn't create an account at %{url}, please ignore this." msgid "If you didn't create an account at %{url}, please ignore this."
msgstr "" msgstr ""
#: lib/lokal_web/templates/email/reset_password.txt.eex:8 #: lib/cannery_web/templates/email/confirm_email.html.heex:22
#: lib/lokal_web/templates/email/update_email.txt.eex:8 #, elixir-autogen, elixir-format
msgid "If you didn't create an account at Cannery, please ignore this."
msgstr ""
#: lib/cannery_web/templates/email/reset_password.txt.eex:8
#: lib/cannery_web/templates/email/update_email.txt.eex:8
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "If you didn't request this change from %{url}, please ignore this." msgid "If you didn't request this change from %{url}, please ignore this."
msgstr "" msgstr ""
#: lib/lokal_web/templates/email/update_email.html.heex:8 #: lib/cannery_web/templates/email/reset_password.html.heex:16
#: lib/lokal_web/templates/email/update_email.txt.eex:4 #: lib/cannery_web/templates/email/update_email.html.heex:16
#, elixir-autogen, elixir-format
msgid "If you didn't request this change from Cannery, please ignore this."
msgstr ""
#: lib/cannery_web/templates/layout/email.txt.eex:9
#, elixir-autogen, elixir-format
msgid "This email was sent from Cannery at %{url}, the self-hosted firearm tracker website."
msgstr ""
#: lib/cannery_web/templates/layout/email.html.heex:13
#, elixir-autogen, elixir-format
msgid "This email was sent from Cannery, the self-hosted firearm tracker website."
msgstr ""
#: lib/cannery_web/templates/email/confirm_email.html.heex:9
#: lib/cannery_web/templates/email/confirm_email.txt.eex:4
#, elixir-autogen, elixir-format
msgid "Welcome to Cannery"
msgstr ""
#: lib/cannery_web/templates/email/update_email.html.heex:8
#: lib/cannery_web/templates/email/update_email.txt.eex:4
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can change your email by visiting the URL below:" msgid "You can change your email by visiting the URL below:"
msgstr "" msgstr ""
#: lib/lokal_web/templates/email/confirm_email.html.heex:14 #: lib/cannery_web/templates/email/confirm_email.html.heex:14
#: lib/lokal_web/templates/email/confirm_email.txt.eex:6 #: lib/cannery_web/templates/email/confirm_email.txt.eex:6
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can confirm your account by visiting the URL below:" msgid "You can confirm your account by visiting the URL below:"
msgstr "" msgstr ""
#: lib/lokal_web/templates/email/reset_password.html.heex:8 #: lib/cannery_web/templates/email/reset_password.html.heex:8
#: lib/lokal_web/templates/email/reset_password.txt.eex:4 #: lib/cannery_web/templates/email/reset_password.txt.eex:4
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You can reset your password by visiting the URL below:" msgid "You can reset your password by visiting the URL below:"
msgstr "" msgstr ""
#: lib/lokal/accounts/email.ex:30
#, elixir-autogen, elixir-format
msgid "Confirm your Lokal account"
msgstr ""
#: lib/lokal_web/templates/email/confirm_email.html.heex:22
#, elixir-autogen, elixir-format
msgid "If you didn't create an account at Lokal, please ignore this."
msgstr ""
#: lib/lokal_web/templates/email/reset_password.html.heex:16
#: lib/lokal_web/templates/email/update_email.html.heex:16
#, elixir-autogen, elixir-format
msgid "If you didn't request this change from Lokal, please ignore this."
msgstr ""
#: lib/lokal/accounts/email.ex:37
#, elixir-autogen, elixir-format
msgid "Reset your Lokal password"
msgstr ""
#: lib/lokal_web/templates/layout/email.txt.eex:9
#, elixir-autogen, elixir-format
msgid "This email was sent from Lokal at %{url}, the self-hosted firearm tracker website."
msgstr ""
#: lib/lokal_web/templates/layout/email.html.heex:13
#, elixir-autogen, elixir-format
msgid "This email was sent from Lokal, the self-hosted firearm tracker website."
msgstr ""
#: lib/lokal/accounts/email.ex:44
#, elixir-autogen, elixir-format
msgid "Update your Lokal email"
msgstr ""
#: lib/lokal_web/templates/email/confirm_email.html.heex:9
#: lib/lokal_web/templates/email/confirm_email.txt.eex:4
#, elixir-autogen, elixir-format
msgid "Welcome to Lokal"
msgstr ""

View File

@ -96,110 +96,110 @@ msgstr ""
msgid "must be equal to %{number}" msgid "must be equal to %{number}"
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_settings_controller.ex:84 #: lib/cannery_web/controllers/user_settings_controller.ex:84
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Email change link is invalid or it has expired." msgid "Email change link is invalid or it has expired."
msgstr "" msgstr ""
#: lib/lokal_web/templates/error/error.html.heex:8 #: lib/cannery_web/views/error_view.ex:10
#, elixir-autogen, elixir-format
msgid "Error"
msgstr ""
#: lib/lokal_web/templates/error/error.html.heex:28
#, elixir-autogen, elixir-format
msgid "Go back home"
msgstr ""
#: lib/lokal_web/views/error_view.ex:11
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Internal Server Error" msgid "Internal Server Error"
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_session_controller.ex:17 #: lib/cannery_web/controllers/user_session_controller.ex:17
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invalid email or password" msgid "Invalid email or password"
msgstr "" msgstr ""
#: lib/lokal_web/views/error_view.ex:9 #: lib/cannery_web/views/error_view.ex:8
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Not found" msgid "Not found"
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_registration/new.html.heex:13 #: lib/cannery_web/controllers/user_reset_password_controller.ex:63
#: lib/lokal_web/templates/user_reset_password/edit.html.heex:13
#: lib/lokal_web/templates/user_settings/edit.html.heex:22
#: lib/lokal_web/templates/user_settings/edit.html.heex:64
#: lib/lokal_web/templates/user_settings/edit.html.heex:118
#, elixir-autogen, elixir-format
msgid "Oops, something went wrong! Please check the errors below."
msgstr ""
#: lib/lokal_web/controllers/user_reset_password_controller.ex:63
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Reset password link is invalid or it has expired." msgid "Reset password link is invalid or it has expired."
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_registration_controller.ex:22 #: lib/cannery_web/controllers/user_registration_controller.ex:22
#: lib/lokal_web/controllers/user_registration_controller.ex:51 #: lib/cannery_web/controllers/user_registration_controller.ex:51
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Sorry, public registration is disabled" msgid "Sorry, public registration is disabled"
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_registration_controller.ex:12 #: lib/cannery_web/controllers/user_registration_controller.ex:12
#: lib/lokal_web/controllers/user_registration_controller.ex:41 #: lib/cannery_web/controllers/user_registration_controller.ex:41
#: lib/lokal_web/controllers/user_registration_controller.ex:70 #: lib/cannery_web/controllers/user_registration_controller.ex:70
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Sorry, this invite was not found or expired" msgid "Sorry, this invite was not found or expired"
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_settings_controller.ex:99 #: lib/cannery_web/controllers/user_settings_controller.ex:99
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unable to delete user" msgid "Unable to delete user"
msgstr "" msgstr ""
#: lib/lokal_web/views/error_view.ex:10 #: lib/cannery_web/views/error_view.ex:9
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unauthorized" msgid "Unauthorized"
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_confirmation_controller.ex:54 #: lib/cannery_web/controllers/user_confirmation_controller.ex:54
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "User confirmation link is invalid or it has expired." msgid "User confirmation link is invalid or it has expired."
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_auth.ex:177 #: lib/cannery_web/controllers/user_auth.ex:177
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You are not authorized to view this page." msgid "You are not authorized to view this page."
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_auth.ex:39 #: lib/cannery_web/controllers/user_auth.ex:39
#: lib/lokal_web/controllers/user_auth.ex:161 #: lib/cannery_web/controllers/user_auth.ex:161
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You must confirm your account and log in to access this page." msgid "You must confirm your account and log in to access this page."
msgstr "" msgstr ""
#: lib/lokal/accounts/user.ex:144 #: lib/cannery/accounts/user.ex:144
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "did not change" msgid "did not change"
msgstr "" msgstr ""
#: lib/lokal/accounts/user.ex:165 #: lib/cannery/accounts/user.ex:165
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "does not match password" msgid "does not match password"
msgstr "" msgstr ""
#: lib/lokal/accounts/user.ex:202 #: lib/cannery/accounts/user.ex:202
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "is not valid" msgid "is not valid"
msgstr "" msgstr ""
#: lib/lokal/accounts/user.ex:99 #: lib/cannery/accounts/user.ex:99
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "must have the @ sign and no spaces" msgid "must have the @ sign and no spaces"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.ex:19 #: lib/cannery_web/live/invite_live/index.ex:19
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You are not authorized to view this page" msgid "You are not authorized to view this page"
msgstr "" msgstr ""
#: lib/cannery_web/templates/error/error.html.heex:8
#, elixir-autogen, elixir-format
msgid "Error"
msgstr ""
#: lib/cannery_web/templates/error/error.html.heex:29
#, elixir-autogen, elixir-format
msgid "Go back home"
msgstr ""
#: lib/cannery_web/templates/user_registration/new.html.heex:13
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:13
#: lib/cannery_web/templates/user_settings/edit.html.heex:22
#: lib/cannery_web/templates/user_settings/edit.html.heex:64
#: lib/cannery_web/templates/user_settings/edit.html.heex:118
#, elixir-autogen, elixir-format
msgid "Oops, something went wrong! Please check the errors below."
msgstr ""

View File

@ -10,138 +10,138 @@ msgid ""
msgstr "" msgstr ""
"Language: en\n" "Language: en\n"
#: lib/lokal_web/controllers/user_confirmation_controller.ex:38 #: lib/cannery_web/controllers/user_confirmation_controller.ex:38
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{email} confirmed successfully." msgid "%{email} confirmed successfully."
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_settings_controller.ex:29 #: lib/cannery_web/controllers/user_settings_controller.ex:29
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "A link to confirm your email change has been sent to the new address." msgid "A link to confirm your email change has been sent to the new address."
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_settings/edit.html.heex:140 #: lib/cannery_web/components/topbar.ex:59
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete your account?"
msgstr ""
#: lib/lokal_web/components/topbar.ex:59
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to log out?" msgid "Are you sure you want to log out?"
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_settings_controller.ex:77 #: lib/cannery_web/controllers/user_settings_controller.ex:77
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Email changed successfully." msgid "Email changed successfully."
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_confirmation_controller.ex:23 #: lib/cannery_web/controllers/user_confirmation_controller.ex:23
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "If your email is in our system and it has not been confirmed yet, you will receive an email with instructions shortly." msgid "If your email is in our system and it has not been confirmed yet, you will receive an email with instructions shortly."
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_reset_password_controller.ex:24 #: lib/cannery_web/controllers/user_reset_password_controller.ex:24
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "If your email is in our system, you will receive instructions to reset your password shortly." msgid "If your email is in our system, you will receive instructions to reset your password shortly."
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_session_controller.ex:23 #: lib/cannery_web/controllers/user_session_controller.ex:23
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Logged out successfully." msgid "Logged out successfully."
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_reset_password_controller.ex:46 #: lib/cannery_web/controllers/user_reset_password_controller.ex:46
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Password reset successfully." msgid "Password reset successfully."
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_settings_controller.ex:49 #: lib/cannery_web/controllers/user_settings_controller.ex:49
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Password updated successfully." msgid "Password updated successfully."
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_registration_controller.ex:65 #: lib/cannery_web/controllers/user_registration_controller.ex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Please check your email to verify your account" msgid "Please check your email to verify your account"
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_settings_controller.ex:95 #: lib/cannery_web/controllers/user_settings_controller.ex:95
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Your account has been deleted" msgid "Your account has been deleted"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.html.heex:97 #: lib/cannery_web/live/invite_live/index.html.heex:97
#: lib/lokal_web/live/invite_live/index.html.heex:125 #: lib/cannery_web/live/invite_live/index.html.heex:125
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{email}? This action is permanent!" msgid "Are you sure you want to delete %{email}? This action is permanent!"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.ex:128 #: lib/cannery_web/live/invite_live/index.ex:128
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Copied to clipboard" msgid "Copied to clipboard"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/form_component.html.heex:31 #: lib/cannery_web/live/invite_live/form_component.html.heex:31
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Saving..." msgid "Saving..."
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_settings/edit.html.heex:130 #: lib/cannery_web/controllers/user_settings_controller.ex:65
#, elixir-autogen, elixir-format
msgid "Are you sure you want to change your language?"
msgstr ""
#: lib/lokal_web/controllers/user_settings_controller.ex:65
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Language updated successfully." msgid "Language updated successfully."
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.ex:54 #: lib/cannery_web/live/invite_live/index.ex:54
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{invite_name} deleted succesfully" msgid "%{invite_name} deleted succesfully"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.ex:115 #: lib/cannery_web/live/invite_live/index.ex:115
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{invite_name} disabled succesfully" msgid "%{invite_name} disabled succesfully"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.ex:91 #: lib/cannery_web/live/invite_live/index.ex:91
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{invite_name} enabled succesfully" msgid "%{invite_name} enabled succesfully"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.ex:69 #: lib/cannery_web/live/invite_live/index.ex:69
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{invite_name} updated succesfully" msgid "%{invite_name} updated succesfully"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.ex:140 #: lib/cannery_web/live/invite_live/index.ex:140
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "%{user_email} deleted succesfully" msgid "%{user_email} deleted succesfully"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.html.heex:47 #: lib/cannery_web/live/invite_live/index.html.heex:47
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to delete the invite for %{invite_name}?" msgid "Are you sure you want to delete the invite for %{invite_name}?"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.html.heex:72 #: lib/cannery_web/live/invite_live/index.html.heex:72
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Are you sure you want to make %{invite_name} unlimited?" msgid "Are you sure you want to make %{invite_name} unlimited?"
msgstr "" msgstr ""
#: lib/lokal_web/live/home_live.html.heex:56 #: lib/cannery_web/live/home_live.html.heex:56
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Register to setup Lokal" msgid "Register to setup Cannery"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/form_component.ex:80 #: lib/cannery_web/live/invite_live/form_component.ex:80
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "%{name} created successfully" msgid "%{name} created successfully"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/form_component.ex:62 #: lib/cannery_web/live/invite_live/form_component.ex:62
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "%{name} updated successfully" msgid "%{name} updated successfully"
msgstr "" msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:130
#, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to change your language?"
msgstr ""
#: lib/cannery_web/templates/user_settings/edit.html.heex:140
#, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to delete your account?"
msgstr ""

View File

@ -93,110 +93,110 @@ msgstr ""
msgid "must be equal to %{number}" msgid "must be equal to %{number}"
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_settings_controller.ex:84 #: lib/cannery_web/controllers/user_settings_controller.ex:84
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Email change link is invalid or it has expired." msgid "Email change link is invalid or it has expired."
msgstr "" msgstr ""
#: lib/lokal_web/templates/error/error.html.heex:8 #: lib/cannery_web/views/error_view.ex:10
#, elixir-autogen, elixir-format
msgid "Error"
msgstr ""
#: lib/lokal_web/templates/error/error.html.heex:28
#, elixir-autogen, elixir-format
msgid "Go back home"
msgstr ""
#: lib/lokal_web/views/error_view.ex:11
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Internal Server Error" msgid "Internal Server Error"
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_session_controller.ex:17 #: lib/cannery_web/controllers/user_session_controller.ex:17
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Invalid email or password" msgid "Invalid email or password"
msgstr "" msgstr ""
#: lib/lokal_web/views/error_view.ex:9 #: lib/cannery_web/views/error_view.ex:8
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Not found" msgid "Not found"
msgstr "" msgstr ""
#: lib/lokal_web/templates/user_registration/new.html.heex:13 #: lib/cannery_web/controllers/user_reset_password_controller.ex:63
#: lib/lokal_web/templates/user_reset_password/edit.html.heex:13
#: lib/lokal_web/templates/user_settings/edit.html.heex:22
#: lib/lokal_web/templates/user_settings/edit.html.heex:64
#: lib/lokal_web/templates/user_settings/edit.html.heex:118
#, elixir-autogen, elixir-format
msgid "Oops, something went wrong! Please check the errors below."
msgstr ""
#: lib/lokal_web/controllers/user_reset_password_controller.ex:63
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Reset password link is invalid or it has expired." msgid "Reset password link is invalid or it has expired."
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_registration_controller.ex:22 #: lib/cannery_web/controllers/user_registration_controller.ex:22
#: lib/lokal_web/controllers/user_registration_controller.ex:51 #: lib/cannery_web/controllers/user_registration_controller.ex:51
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Sorry, public registration is disabled" msgid "Sorry, public registration is disabled"
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_registration_controller.ex:12 #: lib/cannery_web/controllers/user_registration_controller.ex:12
#: lib/lokal_web/controllers/user_registration_controller.ex:41 #: lib/cannery_web/controllers/user_registration_controller.ex:41
#: lib/lokal_web/controllers/user_registration_controller.ex:70 #: lib/cannery_web/controllers/user_registration_controller.ex:70
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Sorry, this invite was not found or expired" msgid "Sorry, this invite was not found or expired"
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_settings_controller.ex:99 #: lib/cannery_web/controllers/user_settings_controller.ex:99
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unable to delete user" msgid "Unable to delete user"
msgstr "" msgstr ""
#: lib/lokal_web/views/error_view.ex:10 #: lib/cannery_web/views/error_view.ex:9
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Unauthorized" msgid "Unauthorized"
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_confirmation_controller.ex:54 #: lib/cannery_web/controllers/user_confirmation_controller.ex:54
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "User confirmation link is invalid or it has expired." msgid "User confirmation link is invalid or it has expired."
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_auth.ex:177 #: lib/cannery_web/controllers/user_auth.ex:177
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You are not authorized to view this page." msgid "You are not authorized to view this page."
msgstr "" msgstr ""
#: lib/lokal_web/controllers/user_auth.ex:39 #: lib/cannery_web/controllers/user_auth.ex:39
#: lib/lokal_web/controllers/user_auth.ex:161 #: lib/cannery_web/controllers/user_auth.ex:161
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You must confirm your account and log in to access this page." msgid "You must confirm your account and log in to access this page."
msgstr "" msgstr ""
#: lib/lokal/accounts/user.ex:144 #: lib/cannery/accounts/user.ex:144
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "did not change" msgid "did not change"
msgstr "" msgstr ""
#: lib/lokal/accounts/user.ex:165 #: lib/cannery/accounts/user.ex:165
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "does not match password" msgid "does not match password"
msgstr "" msgstr ""
#: lib/lokal/accounts/user.ex:202 #: lib/cannery/accounts/user.ex:202
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "is not valid" msgid "is not valid"
msgstr "" msgstr ""
#: lib/lokal/accounts/user.ex:99 #: lib/cannery/accounts/user.ex:99
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "must have the @ sign and no spaces" msgid "must have the @ sign and no spaces"
msgstr "" msgstr ""
#: lib/lokal_web/live/invite_live/index.ex:19 #: lib/cannery_web/live/invite_live/index.ex:19
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "You are not authorized to view this page" msgid "You are not authorized to view this page"
msgstr "" msgstr ""
#: lib/cannery_web/templates/error/error.html.heex:8
#, elixir-autogen, elixir-format
msgid "Error"
msgstr ""
#: lib/cannery_web/templates/error/error.html.heex:29
#, elixir-autogen, elixir-format
msgid "Go back home"
msgstr ""
#: lib/cannery_web/templates/user_registration/new.html.heex:13
#: lib/cannery_web/templates/user_reset_password/edit.html.heex:13
#: lib/cannery_web/templates/user_settings/edit.html.heex:22
#: lib/cannery_web/templates/user_settings/edit.html.heex:64
#: lib/cannery_web/templates/user_settings/edit.html.heex:118
#, elixir-autogen, elixir-format
msgid "Oops, something went wrong! Please check the errors below."
msgstr ""

Some files were not shown because too many files have changed in this diff Show More