Compare commits
8 Commits
master
...
swift-stor
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1633a0b0ed | ||
|
|
95745c83d1 | ||
|
|
32dff45a52 | ||
|
|
1a83ebc0d0 | ||
|
|
721ad30058 | ||
|
|
8ec459bdde | ||
|
|
688293481a | ||
|
|
ad2f4bb724 |
2
.gitignore
vendored
@@ -15,8 +15,6 @@ themes/default/templates/data.html.ep
|
||||
themes/default/templates/raw.html.ep
|
||||
themes/default/templates/stats.json.ep
|
||||
themes/default/templates/partial/raw.js.ep
|
||||
!themes/korrigan
|
||||
!themes/korrigan/*
|
||||
tmp/*
|
||||
.zanata-cache/*
|
||||
cover_db/*
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
image: hatsoftwares/lutim-test-ci:latest
|
||||
stages:
|
||||
- create_release
|
||||
- publish_changelog
|
||||
- pouet_it
|
||||
- podcheck
|
||||
- carton
|
||||
@@ -63,8 +63,8 @@ variables:
|
||||
##
|
||||
#
|
||||
include:
|
||||
- 'https://framagit.org/fiat-tux/gitlabci-snippets/-/raw/2aac6c1f3dd725d9aed57549da67a92759f9f9ec/create-release-from-ci.gitlab-ci.yml'
|
||||
- 'https://framagit.org/fiat-tux/gitlabci-snippets/-/raw/41345a919d3c927991782f5fd17e0c7b338a3f3a/pouet-it-from-ci.gitlab-ci.yml'
|
||||
- 'https://framagit.org/fiat-tux/gitlabci-snippets/raw/4e4e03322e95e9b0124c714456ebf1bdc02ad43f/publish_changelog.gitlab-ci.yml'
|
||||
- 'https://framagit.org/fiat-tux/gitlabci-snippets/raw/4e4e03322e95e9b0124c714456ebf1bdc02ad43f/pouet-it-from-ci.gitlab-ci.yml'
|
||||
|
||||
### Podcheck
|
||||
##
|
||||
@@ -86,7 +86,6 @@ carton:
|
||||
- local/
|
||||
dependencies: []
|
||||
script:
|
||||
- cpanm -l local Devel::Cover~1.29
|
||||
- carton install --deployment --without=sqlite --without=postgresql --without=minion --without=cache --without=memcached
|
||||
when: always
|
||||
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
## ansible-role-lutim
|
||||
|
||||
An ansible role deploy the application on host machine(Ubuntu 20.04)
|
||||
|
||||
## terraform-aws-lutim
|
||||
|
||||
A terraform plan creates necessary AWS infrastructure and deploy the lutim. This terraform plan uses the `lutim_startup.sh` script to deploy lufi on AWS and also uses above ansible role `ansible-role-lutim` to configure the application on AWS.
|
||||
@@ -1,50 +0,0 @@
|
||||
Ansible-Role-lutim
|
||||
=========
|
||||
This role installs the and configures lutim on Debian/Ubuntu servers with nginx web server configuration.
|
||||
|
||||
Role Variables
|
||||
--------------
|
||||
| Variable name | Value | Description |
|
||||
| ------------- | ----- | ----------- |
|
||||
| `app_dir` | /var/www/lutim | Set the application directory for the best practice |
|
||||
| `lutim_owner` | www-data | Set the application user for the best practice |
|
||||
| `lutim_group` | www-data | Set the application group for the best practice |
|
||||
| `_contact` | contact.example.com | Contact option (mandatory), where you have to put some way for the users to contact you. |
|
||||
| `_secrets` | ffyg7kbkjba | Secrets option (mandotory), which is array of random string. Used by Mojolicious for encrypting session cookies |
|
||||
| `_project_version` | master | We can chose the project version either Master branch, Dev branch or tag based |
|
||||
| `_server_name` | IP address (or) CNAME/FQDN | Mention the Server Name for the Nginx configurations |
|
||||
|
||||
Sample example of use in a playbook
|
||||
--------------
|
||||
|
||||
The following code has been tested with Ubuntu 20.04
|
||||
|
||||
```yaml
|
||||
|
||||
- name: "install lutim"
|
||||
hosts: enter your hosts file
|
||||
become: yes
|
||||
role:
|
||||
- ansible-role-lutim
|
||||
vars:
|
||||
lutim_owner: "www-data"
|
||||
lutim_group: "www-data"
|
||||
contact: "contact.example.com"
|
||||
secrets: "yigavlvlivwe"
|
||||
app_dir: "/var/www/lutim"
|
||||
project_version: "master"
|
||||
servername: "IP address (or) CNAME/FQDN"
|
||||
```
|
||||
|
||||
Contributing
|
||||
------------
|
||||
Don’t hesitate to create a pull request
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
#Path of the script
|
||||
PATH=/var/www/lutim
|
||||
|
||||
carton exec script/lutim cron cleanbdd --mode production
|
||||
carton exec script/lutim cron cleanfiles --mode production
|
||||
carton exec script/lutim cron watch --mode production
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
# handlers file for ansible-role-lutim
|
||||
|
||||
- name: restart nginx
|
||||
service: name=nginx state=restarted
|
||||
@@ -1,23 +0,0 @@
|
||||
#apprun.yml
|
||||
---
|
||||
- name: This command will install the postgress module
|
||||
ansible.builtin.shell:
|
||||
cmd: carton install --deployment --without=test --without=sqlite
|
||||
chdir: "{{ app_dir }}"
|
||||
|
||||
- name: Upload application config file
|
||||
ansible.builtin.template:
|
||||
src: ../templates/lutim.conf.j2
|
||||
dest: "{{ app_dir }}/lutim.conf"
|
||||
|
||||
- name: App executes
|
||||
ansible.builtin.shell:
|
||||
cmd: carton exec hypnotoad script/lutim
|
||||
chdir: "{{ app_dir }}"
|
||||
|
||||
- name: Nginx configuration file add
|
||||
ansible.builtin.template:
|
||||
src: ../templates/app.conf
|
||||
dest: /etc/nginx/conf.d/
|
||||
mode: '0644'
|
||||
notify: restart nginx
|
||||
@@ -1,21 +0,0 @@
|
||||
---
|
||||
- name: Copy the cronjob file
|
||||
ansible.builtin.copy:
|
||||
src: ../files/cronjob
|
||||
dest: /etc/cron.d/lutim
|
||||
owner: www-data
|
||||
group: www-data
|
||||
|
||||
- name: "example cronjob"
|
||||
ansible.builtin.cron:
|
||||
name: "cronjob"
|
||||
state: present
|
||||
user: www-data
|
||||
minute: "0"
|
||||
hour: "0"
|
||||
day: "*"
|
||||
month: "*"
|
||||
weekday: "*"
|
||||
job: |
|
||||
carton exec script/lutim cron cleanbdd --mode production; carton exec script/lutim cron cleanfiles --mode production; carton exec script/lutim cron watch --mode production
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
# dependencies.yaml
|
||||
---
|
||||
- name: Lutim | Update apt cache
|
||||
ansible.builtin.apt: update_cache=yes
|
||||
changed_when: no
|
||||
- name: Install Dependencies
|
||||
ansible.builtin.apt:
|
||||
name:
|
||||
- nginx
|
||||
- carton
|
||||
- build-essential
|
||||
- libssl-dev
|
||||
- libpq-dev
|
||||
- libio-socket-ssl-perl
|
||||
- zlib1g-dev
|
||||
- libmojo-sqlite-perl
|
||||
- shared-mime-info
|
||||
- perlmagick
|
||||
state: present
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
#gitclone
|
||||
---
|
||||
|
||||
- name: clone the repository
|
||||
ansible.builtin.git:
|
||||
repo: 'https://framagit.org/fiat-tux/hat-softwares/lutim.git'
|
||||
dest: "{{ app_dir }}"
|
||||
clone: yes
|
||||
update: yes
|
||||
version: "{{ project_version }}"
|
||||
|
||||
- name: Change the owner
|
||||
ansible.builtin.file:
|
||||
path: "{{ app_dir }}"
|
||||
owner: "{{ lutim_owner }}"
|
||||
group: "{{ lutim_group }}"
|
||||
state: directory
|
||||
recurse: yes
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
# tasks file for ansible-role-lutim
|
||||
|
||||
- include: dependencies.yaml
|
||||
- include: gitclone.yaml
|
||||
- include: apprun.yaml
|
||||
- include: cronjob.yaml
|
||||
@@ -1,43 +0,0 @@
|
||||
server {
|
||||
listen 80;
|
||||
# No need to have a `root` parameter.
|
||||
server_name {{ _server_name }};
|
||||
# This is important for user's privacy !
|
||||
access_log off;
|
||||
error_log /var/log/nginx/lutim.error.log;
|
||||
# This is important ! Make it OK with your Lutim configuration
|
||||
client_max_body_size 40M;
|
||||
|
||||
location ~* ^/(img|css|font|js)/ {
|
||||
try_files $uri @lutim;
|
||||
add_header Expires "Thu, 31 Dec 2037 23:55:55 GMT";
|
||||
add_header Cache-Control "public, max-age=315360000";
|
||||
|
||||
# HTTPS only header, improves security
|
||||
#add_header Strict-Transport-Security "max-age=15768000";
|
||||
}
|
||||
|
||||
location / {
|
||||
try_files $uri @lutim;
|
||||
|
||||
# HTTPS only header, improves security
|
||||
#add_header Strict-Transport-Security "max-age=15768000";
|
||||
}
|
||||
|
||||
location @lutim {
|
||||
# Adapt this to your configuration
|
||||
proxy_pass http://127.0.0.1:8080;
|
||||
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
|
||||
# If you want to log the remote port of the image senders, you'll need that
|
||||
proxy_set_header X-Remote-Port $remote_port;
|
||||
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
# We expect the downsteam servers to redirect to the right hostname, so don't do any rewrites here.
|
||||
proxy_redirect off;
|
||||
}
|
||||
}
|
||||
@@ -1,317 +0,0 @@
|
||||
# vim:set sw=4 ts=4 sts=4 ft=perl expandtab:
|
||||
{
|
||||
####################
|
||||
# Hypnotoad settings
|
||||
####################
|
||||
# see http://mojolicio.us/perldoc/Mojo/Server/Hypnotoad for a full list of settings
|
||||
hypnotoad => {
|
||||
# array of IP addresses and ports you want to listen to
|
||||
listen => ['http://127.0.0.1:8080'],
|
||||
# if you use Lutim behind a reverse proxy like Nginx, you want to set proxy to 1
|
||||
# if you use Lutim directly, let it commented
|
||||
#proxy => 1,
|
||||
},
|
||||
|
||||
################
|
||||
# Lutim settings
|
||||
################
|
||||
|
||||
# put a way to contact you here and uncomment it
|
||||
# mandatory
|
||||
contact => '{{ _contact }}',
|
||||
|
||||
# random string used to encrypt cookies
|
||||
# mandatory
|
||||
secrets => ['{{ _secrets }}'],
|
||||
|
||||
# choose a theme. See the available themes in `themes` directory
|
||||
# optional, default is 'default'
|
||||
#theme => 'default',
|
||||
|
||||
# length of the images random URL
|
||||
# optional, default is 8
|
||||
#length => 8,
|
||||
|
||||
# length of the encryption key
|
||||
# optional, default is 8
|
||||
#crypto_key_length => 8,
|
||||
|
||||
# how many URLs will be provisioned in a batch ?
|
||||
# optional, default is 5
|
||||
#provis_step => 5,
|
||||
|
||||
# max number of URLs to be provisioned
|
||||
# optional, default is 100
|
||||
#provisioning => 100,
|
||||
|
||||
# anti-flood protection delay, in seconds
|
||||
# users won't be able to ask Lutim to download images more than one per anti_flood_delay seconds
|
||||
# optional, default is 5
|
||||
#anti_flood_delay => 5,
|
||||
|
||||
# twitter account which will appear on twitter cards
|
||||
# see https://dev.twitter.com/docs/cards/validation/validator to register your Lutim instance on twitter
|
||||
# optional, no default
|
||||
#tweet_card_via => '@foo',
|
||||
|
||||
# max image size, in octets
|
||||
# you can write it 10*1024*1024
|
||||
# optional, default is 10485760
|
||||
#max_file_size => 10485760,
|
||||
|
||||
# if you want to have piwik statistics, provide a piwik image tracker
|
||||
# only the image tracker is allowed, no javascript
|
||||
# optional, no default
|
||||
#piwik_img => 'https://piwik.example.org/piwik.php?idsite=1&rec=1',
|
||||
|
||||
# if you want to include something in the right of the screen, put it here
|
||||
# here's an example to put the logo of your hoster
|
||||
# optional, no default
|
||||
#hosted_by => 'My super hoster <img src="http://hoster.example.com" alt="Hoster logo">',
|
||||
|
||||
# DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED DEPRECATED
|
||||
# Lutim now checks if the X-Forwarded-Proto header is present and equal to https.
|
||||
# set to 1 if you use Lutim behind a secure web server
|
||||
# optional, default is 0
|
||||
#https => 0,
|
||||
|
||||
# broadcast_message which will displayed on all pages of Lutim (but no in json response)
|
||||
# optional, no default
|
||||
#broadcast_message => 'Maintenance',
|
||||
|
||||
# array of authorized domains for API calls.
|
||||
# if you want to authorize everyone to use the API: ['*']
|
||||
# optional, no domains allowed by default
|
||||
#allowed_domains => ['http://1.example.com', 'http://2.example.com'],
|
||||
|
||||
# default time limit for files
|
||||
# valid values are 0, 1, 7, 30 and 365
|
||||
# optional, default is 0 (no limit)
|
||||
#default_delay => 0,
|
||||
|
||||
# comma-separated values proposed for delays
|
||||
# optional, default is '0,1,7,30,365'
|
||||
#proposed_delays => '0,1,7,30,365',
|
||||
|
||||
# number of days after which the images will be deleted, even if they were uploaded with "no delay" (or value superior to max_delay)
|
||||
# a warning message will be displayed on homepage
|
||||
# optional, default is 0 (no limit)
|
||||
#max_delay => 0,
|
||||
|
||||
# if set to 1, all the images will be encrypted and the encryption option will no be displayed
|
||||
# optional, default is 0
|
||||
#always_encrypt => 0,
|
||||
|
||||
# you can allow to use a watermark on the uploaded images (or enforce its use)
|
||||
# define a path to the watermark image (provide an image with alpha channel)
|
||||
# you can define the path relative to lutim directory or set an absolute path
|
||||
# to disable the usage of a watermark, leave it blank or commented
|
||||
# optional, no default
|
||||
#watermark_path => '',
|
||||
|
||||
# the watermark can be a tiling one or a single one
|
||||
# when using a small one, you can choose where to place it
|
||||
# valid values are 'Center', 'North', 'NorthEast', 'East', 'SouthEast', 'South', 'SouthWest', 'West' and 'NorthWest' (case insensitive)
|
||||
# optional, default is 'SouthEast'
|
||||
#watermark_placement => 'SouthEast',
|
||||
|
||||
# choose which watermark (tiling, single or none) should be used by default
|
||||
# valid values are 'tiling', 'single' or 'none' (case insensitive)
|
||||
# optional, default is 'none'
|
||||
#watermark_default => 'none',
|
||||
|
||||
# choose which watermark (tiling, single or none) should be enforced (users will always have a watermark and won’t be able to disable it)
|
||||
# valid values are 'tiling', 'single' or 'none' (case insensitive)
|
||||
# optional, default is 'none'
|
||||
#watermark_enforce => 'none',
|
||||
|
||||
# length of the image's delete token
|
||||
# optional, default is 24
|
||||
#token_length => 24,
|
||||
|
||||
# URL sub-directory in which you want Lutim to be accessible
|
||||
# example: you want to have Lutim under https://example.org/lutim/
|
||||
# => set prefix to '/lutim' or to '/lutim/', it doesn't matter
|
||||
# optional, defaut is /
|
||||
#prefix => '/',
|
||||
|
||||
# choose what database you want to use
|
||||
# valid choices are sqlite and postgresql (all lowercase)
|
||||
# optional, default is sqlite
|
||||
#dbtype => 'sqlite',
|
||||
|
||||
# SQLite ONLY - only used if dbtype is set to sqlite
|
||||
# define a path to the SQLite database
|
||||
# you can define it relative to lutim directory or set an absolute path
|
||||
# remember that it has to be in a directory writable by Lutim user
|
||||
# optional, default is lutim.db
|
||||
#db_path => 'lutim.db',
|
||||
|
||||
# PostgreSQL ONLY - only used if dbtype is set to postgresql
|
||||
# these are the credentials to access the PostgreSQL database
|
||||
# mandatory if you choosed postgresql as dbtype
|
||||
pgdb => {
|
||||
database => 'lutim',
|
||||
host => 'localhost',
|
||||
user => 'DBUSER',
|
||||
pwd => 'DBPASSWORD'
|
||||
},
|
||||
|
||||
# use Minion instead of directly increase counters
|
||||
# need to launch a minion worker service if enabled
|
||||
# optional, Minion is disabled by default
|
||||
minion => {
|
||||
enabled => 0,
|
||||
# # Which Minion backend to use?
|
||||
# # valid values are sqlite and postgresql (all lowercase)
|
||||
# # mandatory if Minion is enabled, default is sqlite
|
||||
# dbtype => 'sqlite',
|
||||
# # SQLite ONLY - only used if if you choose sqlite as Minion backend, define the path to the minion database
|
||||
# # you can define it relative to lutim directory or set an absolute path
|
||||
# # remember that it has to be in a directory writable by Lutim user
|
||||
# # optional, default is minion.db
|
||||
db_path => 'minion.db',
|
||||
# # PostgreSQL ONLY - only used if you choose postgresql as Minion backend
|
||||
# # these are the credentials to access the Minion's PostgreSQL database
|
||||
# # mandatory if you choosed postgresql as Minion backend, no default
|
||||
pgdb => {
|
||||
database => 'lutim_minion',
|
||||
host => 'localhost',
|
||||
user => 'DBUSER',
|
||||
pwd => 'DBPASSWORD'
|
||||
}
|
||||
},
|
||||
|
||||
# set `ldap` if you want that only authenticated users can shorten URLs
|
||||
# please note that everybody can still use shortend URLs
|
||||
# optional, no default
|
||||
#ldap => {
|
||||
# uri => 'ldaps://ldap.example.org', # server URI
|
||||
# user_tree => 'ou=users,dc=example,dc=org', # search base DN
|
||||
# bind_dn => 'uid=ldap_user,ou=users,dc=example,dc=org', # search bind DN
|
||||
# bind_pwd => 'secr3t', # search bind password
|
||||
# user_attr => 'uid', # user attribute (uid, mail, sAMAccountName, etc.)
|
||||
# user_filter => '(!(uid=ldap_user))', # user filter (to exclude some users, etc.)
|
||||
#},
|
||||
|
||||
# set `htpasswd` if you want to use an htpasswd file instead of ldap
|
||||
# create the file with `htpasswd -c lutim.passwd user`, update it with `htpasswd lutim.passwd user2`
|
||||
# make sure that lutim can read the file!
|
||||
# optional, no default
|
||||
#htpasswd => 'lutim.passwd',
|
||||
|
||||
# if you've set ldap or htpasswd above, the session will last `session_duration` seconds before
|
||||
# the user needs to reauthenticate
|
||||
# optional, default is 3600
|
||||
#session_duration => 3600,
|
||||
|
||||
# disable counters of images
|
||||
# set to 1 to disable counters
|
||||
# optional, counters are enabled by default
|
||||
#disable_img_stats => 0,
|
||||
|
||||
# define the height of the thumbnails generated at users' will
|
||||
# this is not the height of the thumbnails send after upload,
|
||||
# we're talking about thumbnails generated when someone asked for
|
||||
# https://example.org/lutim/tesrinp?thumb
|
||||
# this works only if you have ImageMagick
|
||||
# optional, default is 100 (pixels)
|
||||
#thumbnail_size => 100,
|
||||
|
||||
# maximum number of files that can be downloaded as a single zip archive
|
||||
# if too many files are asked, it results a timeout, so Lutim split the zip URL
|
||||
# in multiple URLs, each with max_file_size images.
|
||||
# timeout behavior depends heavily on your server ressources (CPU) and if images
|
||||
# are encrypted
|
||||
# optional, default is 15
|
||||
#max_files_in_zip => 15,
|
||||
|
||||
# maximum size (in MB) of memory allowed for the image cache
|
||||
# Lutim has a built-in memory-based image cache to accelerate responses to often-viewed images.
|
||||
# This setting makes the cache remove oldest viewed image if the cache size is over it.
|
||||
# WARNING: a cache is created for each hypnotoad worker, which by default is twice the number of
|
||||
# CPUs you have. See http://mojolicious.org/perldoc/Mojo/Server/Hypnotoad#workers for details
|
||||
# So, if you have 4 workers and set cache_max_size to 100, the real maximum size of RAM used for
|
||||
# cache is 400MB.
|
||||
# If set to 0, the cache is disabled
|
||||
# optional, default is 0
|
||||
#cache_max_size => 0,
|
||||
|
||||
# array of memcached servers to cache URL in order to accelerate responses to often-viewed URL.
|
||||
# If set to [], the use of memcached is disabled.
|
||||
# If you use memcached, the internal cache (see cache_max_size option above) will not be used.
|
||||
# Please see https://framagit.org/fiat-tux/hat-softwares/lutim/-/wikis/memcached to know how to configure your memcached
|
||||
# servers.
|
||||
# exemple of valid value: ['127.0.0.1:11211']
|
||||
# optional, default is []
|
||||
#memcached_servers => [],
|
||||
|
||||
# enable or disable Lutim built-in logs
|
||||
# set to 1 to disable logs
|
||||
# optional, default is 0
|
||||
#quiet_logs => 0,
|
||||
|
||||
# Content-Security-Policy header that will be sent by Lstu
|
||||
# Set to '' to disable CSP header
|
||||
# https://content-security-policy.com/ provides a good documentation about CSP.
|
||||
# https://report-uri.com/home/generate provides a tool to generate a CSP header.
|
||||
# optional, default is "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'"
|
||||
# NB: unsafe-inline for script-src and style-src are here only because morris,
|
||||
# the graph library used in the stats page requires it
|
||||
# the default value is good for `default` theme
|
||||
#csp => "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'",
|
||||
|
||||
# X-Frame-Options header that will be sent by Lstu
|
||||
# Valid values are: 'DENY', 'SAMEORIGIN', 'ALLOW-FROM https://example.com/'
|
||||
# Set to '' to disable X-Frame-Options header
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
|
||||
# Please note that this will add a "frame-ancestors" directive to the CSP header (see above) accordingly
|
||||
# to the chosen setting (See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors)
|
||||
# optional, default is 'DENY'
|
||||
#x_frame_options => 'DENY',
|
||||
|
||||
# X-Content-Type-Options that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
|
||||
# Set to '' to disable X-Content-Type-Options header
|
||||
# optional, default is 'nosniff'
|
||||
#x_content_type_options => 'nosniff',
|
||||
|
||||
# X-XSS-Protection that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
|
||||
# Set to '' to disable X-XSS-Protection header
|
||||
# optional, default is '1; mode=block'
|
||||
#x_xss_protection => '1; mode=block',
|
||||
|
||||
# if set, the uploaded images will use this domain
|
||||
# optional
|
||||
#fixed_domain => 'example.org',
|
||||
|
||||
##########################
|
||||
# Lutim cron jobs settings
|
||||
##########################
|
||||
|
||||
# number of days shown in /stats page (used with script/lutim cron stats)
|
||||
# optional, default is 365
|
||||
stats_day_num => 365,
|
||||
|
||||
# number of days senders' IP addresses are kept in database
|
||||
# after that delay, they will be deleted from database (used with script/lutim cron cleanbdd)
|
||||
# optional, default is 365
|
||||
keep_ip_during => 365,
|
||||
|
||||
# max size of the files directory, in octets
|
||||
# used by script/lutim cron watch to trigger an action
|
||||
# optional, no default
|
||||
max_total_size => 10*1024*1024*1024,
|
||||
|
||||
# default action when files directory is over max_total_size (used with script/lutim cron watch)
|
||||
# valid values are 'warn', 'stop-upload' and 'delete'
|
||||
# please, see readme
|
||||
# optional, default is 'warn'
|
||||
#policy_when_full => 'warn',
|
||||
|
||||
# images which are not viewed since delete_no_longer_viewed_files days will be deleted by the cron cleanfiles task
|
||||
# if delete_no_longer_viewed_files is not set, the no longer viewed files will NOT be deleted
|
||||
# optional, no default
|
||||
delete_no_longer_viewed_files => 90
|
||||
};
|
||||
@@ -1,16 +0,0 @@
|
||||
---
|
||||
# vars file for ansible-role-lutim
|
||||
|
||||
lutim_owner: "www-data"
|
||||
|
||||
lutim_group: "www-data"
|
||||
|
||||
app_dir: "/var/www/lutim"
|
||||
|
||||
_contact: ""
|
||||
|
||||
_secrets: ""
|
||||
|
||||
_project_version: ""
|
||||
|
||||
_servername: ""
|
||||
@@ -1,92 +0,0 @@
|
||||
# Terraform-AWS-Deploy
|
||||
|
||||
This terraform plan create the resourcess of EC2 instance
|
||||
|
||||
## Terraform Variables
|
||||
Edit the `vars.tf` file to add the variables as per your need.
|
||||
|
||||
| Variable name | Value | Description |
|
||||
| ------------- | ----- | ----------- |
|
||||
| `aws_region` | us-east-1 | Set the region |
|
||||
| `vpc_cidr` | 10.0.0.0/16 | Set the cidr value for the vpc |
|
||||
| `public_subnet_cidr` | 10.0.2.0/24 | Set the cidr value for the public subnet |
|
||||
| `user` | ubuntu | Set the EC2 instance user name |
|
||||
| `public_key` | /home/user_name/.ssh/id_rsa_pub | Set the publickey value for the ec2 instance from the host machine |
|
||||
| `private_key` | /home/user_name/.ssh/id_rsa | Set the private key value for the ec2 instance from the hostmachine |
|
||||
| `aws_access_key` | AWSACCESSKEY | Enter your aws access key |
|
||||
| `aws_secrete_key` | AWSSECRETEKEY | Enter your aws secrete key |
|
||||
| `instance_name` | lutim_app_instance | Set the name for instance |
|
||||
| `app_dir` | /var/www/lutim | Set the application directory for the best practice |
|
||||
| `lutim_owner` | www-data | Set the application user for the best practice |
|
||||
| `lutim_group` | www-data | Set the application group for the best practice |
|
||||
| `contact` | contact.example.com | Contact option (mandatory), where you have to put some way for the users to contact you. |
|
||||
| `contact_user` | name | Name of the user |
|
||||
| `secrets` | ffyg7kbkjba | Secrets option (mandotory), which is array of random string. Used by Mojolicious for encrypting session cookies |
|
||||
| `app_dir` | /var/www/lutim | Set the application directory for the best practice |
|
||||
| `lutim_owner` | www-data | Set the application user for the best practice |
|
||||
| `lutim_group` | www-data | Set the application group for the best practice |
|
||||
| `contact` | contact.example.com | Contact option (mandatory), where you have to put some way for the users to contact you. |
|
||||
| `contact_user` | name | Name of the user |
|
||||
| `secrets` | ffyg7kbkjba | Secrets option (mandotory), which is array of random string. Used by Mojolicious for encrypting session cookies |
|
||||
|
||||
## Usage of terraform plan with lufi deploy script
|
||||
|
||||
```sh
|
||||
git clone https://framagit.org/fiat-tux/hat-softwares/lutim.git
|
||||
|
||||
cd lutim/.provision/terraform-aws-lutim
|
||||
|
||||
terraform init
|
||||
terraform plan
|
||||
terraform apply
|
||||
```
|
||||
## Usage of terraform plan with ansible role
|
||||
|
||||
- Comment out the below `locals` and `user_data` source in __main.tf__ file
|
||||
|
||||
```hcl
|
||||
locals {
|
||||
user_data_vars = {
|
||||
user = var.lutim_owner
|
||||
group = var.lutim_group
|
||||
directory = var.app_dir
|
||||
contact_user = var.contact_user
|
||||
contact_lutim = var.contact
|
||||
secret_lutim = var.secret
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```hcl
|
||||
user_data = templatefile("${path.module}/lutim_startup.sh", local.user_data_vars)
|
||||
```
|
||||
|
||||
- Add the below provisioner data in __main.tf__ file at the `aws_instance` resource
|
||||
|
||||
```sh
|
||||
connection {
|
||||
agent = false
|
||||
type = "ssh"
|
||||
host = aws_instance.ec2_instance.public_dns
|
||||
private_key = "${file(var.private_key)}"
|
||||
user = "${var.user}"
|
||||
}
|
||||
|
||||
provisioner "remote-exec" {
|
||||
inline = [
|
||||
"sudo apt update -y",
|
||||
"sudo apt install python3.9 -y",
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "local-exec" {
|
||||
command = <<EOT
|
||||
sleep 120 && \
|
||||
> hosts && \
|
||||
echo "[Lutim]" | tee -a hosts && \
|
||||
echo "${aws_instance.ec2_instance.public_ip} ansible_user=${var.user} ansible_ssh_private_key_file=${var.private_key}" | tee -a hosts && \
|
||||
export ANSIBLE_HOST_KEY_CHECKING=False && \
|
||||
ansible-playbook -u ${var.user} --private-key ${var.private_key} -i hosts site.yml
|
||||
EOT
|
||||
}
|
||||
```
|
||||
@@ -1,66 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo "**********************************************************************"
|
||||
echo " *"
|
||||
echo "Install dependencies *"
|
||||
echo " *"
|
||||
echo "**********************************************************************"
|
||||
|
||||
SUDO=sudo
|
||||
$SUDO apt update
|
||||
$SUDO apt install jq -y
|
||||
$SUDO apt install wget -y
|
||||
$SUDO apt install unzip
|
||||
$SUDO apt install carton -y
|
||||
$SUDO apt install build-essential -y
|
||||
$SUDO apt install nginx -y
|
||||
$SUDO apt install libssl-dev -y
|
||||
$SUDO apt install libio-socket-ssl-perl -y
|
||||
$SUDO apt install liblwp-protocol-https-perl -y
|
||||
$SUDO apt install zlib1g-dev -y
|
||||
$SUDO apt install libmojo-sqlite-perl -y
|
||||
$SUDO apt install libpq-dev -y
|
||||
|
||||
echo "**********************************************************************"
|
||||
echo " *"
|
||||
echo "Configuring the Application *"
|
||||
echo " *"
|
||||
echo "**********************************************************************"
|
||||
|
||||
sleep 10;
|
||||
version=$(curl -s https://framagit.org/api/v4/projects/1/releases | jq '.[]' | jq -r '.name' | head -1)
|
||||
echo $version
|
||||
pushd ${directory}
|
||||
$SUDO wget https://framagit.org/fiat-tux/hat-softwares/lutim/-/archive/$version/lutim-$version.zip
|
||||
$SUDO unzip lutim-$version.zip
|
||||
$SUDO chown ${user} lutim-$version
|
||||
$SUDO chgrp ${group} lutim-$version
|
||||
pushd lutim-$version
|
||||
|
||||
echo "**********************************************************************"
|
||||
echo " *"
|
||||
echo "Install Carton Packages *"
|
||||
echo " *"
|
||||
echo "**********************************************************************"
|
||||
|
||||
$SUDO carton install --deployment --without=test --without=sqlite --without=mysql
|
||||
|
||||
sleep 10;
|
||||
|
||||
$SUDO cp lutim.conf.template lutim.conf
|
||||
|
||||
sed -i 's/127.0.0.1/0.0.0.0/' lutim.conf
|
||||
sed -i 's/#contact/contact/g' lutim.conf
|
||||
sed -i "s/John Doe/${contact_user}/g" lutim.conf
|
||||
sed -i "s/admin[at]example.com/${contact_lutim}/g" lutim.conf
|
||||
sed -i "s/fdjsofjoihrei/${secret_lutim}/g" lutim.conf
|
||||
sed -i '153 , 158 s/#/ /g' lutim.conf
|
||||
|
||||
echo "**********************************************************************"
|
||||
echo " *"
|
||||
echo "Run the Application *"
|
||||
echo " *"
|
||||
echo "**********************************************************************"
|
||||
|
||||
$SUDO carton exec hypnotoad script/lutim
|
||||
|
||||
@@ -1,123 +0,0 @@
|
||||
locals {
|
||||
user_data_vars = {
|
||||
user = var.lutim_owner
|
||||
group = var.lutim_group
|
||||
directory = var.app_dir
|
||||
contact_user = var.contact_user
|
||||
contact_lutim = var.contact
|
||||
secret_lutim = var.secret
|
||||
}
|
||||
}
|
||||
|
||||
#Create the VPC
|
||||
resource "aws_vpc" "vpc" {
|
||||
cidr_block = "${var.vpc_cidr}"
|
||||
enable_dns_hostnames = true
|
||||
enable_dns_support = true
|
||||
instance_tenancy = "default"
|
||||
tags = {
|
||||
Name = "lutim-master-vpc"
|
||||
}
|
||||
}
|
||||
|
||||
# Create InternetGateWay and attach to VPC
|
||||
|
||||
resource "aws_internet_gateway" "IGW" {
|
||||
vpc_id = "${aws_vpc.vpc.id}"
|
||||
tags = {
|
||||
"Name" = "lutim-master-igw"
|
||||
}
|
||||
}
|
||||
|
||||
# Create a public subnet
|
||||
|
||||
resource "aws_subnet" "publicsubnet" {
|
||||
vpc_id = "${aws_vpc.vpc.id}"
|
||||
cidr_block = "${var.public_subnet_cidr}"
|
||||
map_public_ip_on_launch = true
|
||||
tags = {
|
||||
Name = "lutim-master-us-east-1-public"
|
||||
}
|
||||
}
|
||||
|
||||
# Create routeTable
|
||||
resource "aws_route_table" "publicroute" {
|
||||
vpc_id = "${aws_vpc.vpc.id}"
|
||||
route {
|
||||
cidr_block = "0.0.0.0/0"
|
||||
gateway_id = "${aws_internet_gateway.IGW.id}"
|
||||
}
|
||||
|
||||
tags = {
|
||||
Name = "lutim-master-us-east-1-public-rt"
|
||||
}
|
||||
}
|
||||
|
||||
resource "aws_main_route_table_association" "mainRTB" {
|
||||
vpc_id = "${aws_vpc.vpc.id}"
|
||||
route_table_id = "${aws_route_table.publicroute.id}"
|
||||
}
|
||||
## Create security group
|
||||
resource "aws_security_group" "security" {
|
||||
name = "lutim-master-sg"
|
||||
description = "allow all traffic"
|
||||
vpc_id = "${aws_vpc.vpc.id}"
|
||||
|
||||
ingress {
|
||||
description = "allow all traffic"
|
||||
from_port = "0"
|
||||
to_port = "65535"
|
||||
protocol = "tcp"
|
||||
cidr_blocks = ["0.0.0.0/0"]
|
||||
}
|
||||
ingress {
|
||||
description = "allow port SSH"
|
||||
from_port = "22"
|
||||
to_port = "22"
|
||||
protocol = "tcp"
|
||||
cidr_blocks = ["0.0.0.0/0"]
|
||||
}
|
||||
egress {
|
||||
from_port = 0
|
||||
to_port = 0
|
||||
protocol = "-1"
|
||||
cidr_blocks = ["0.0.0.0/0"]
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
# Add ubuntu AMI
|
||||
data "aws_ami" "ubuntu" {
|
||||
most_recent = true
|
||||
owners = ["099720109477"]
|
||||
|
||||
filter {
|
||||
name = "name"
|
||||
values = ["ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-*"]
|
||||
}
|
||||
}
|
||||
|
||||
#Create key_pair for the instance
|
||||
|
||||
resource "aws_key_pair" "genkey" {
|
||||
key_name = "lutim.webapp"
|
||||
public_key = "${file(var.public_key)}"
|
||||
}
|
||||
|
||||
# Craete ec2 instance
|
||||
resource "aws_instance" "ec2_instance" {
|
||||
ami = "${data.aws_ami.ubuntu.id}"
|
||||
instance_type = "t2.medium"
|
||||
associate_public_ip_address = "true"
|
||||
subnet_id = "${aws_subnet.publicsubnet.id}"
|
||||
vpc_security_group_ids = ["${aws_security_group.security.id}"]
|
||||
user_data = templatefile("${path.module}/lutim_startup.sh", local.user_data_vars)
|
||||
key_name = "lutim.webapp"
|
||||
|
||||
tags = {
|
||||
Name = "${var.instance_name}"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
output "public_ip" {
|
||||
value = "${aws_instance.ec2_instance.public_ip}"
|
||||
}
|
||||
|
||||
output "App_running_at" {
|
||||
value = "http://${aws_instance.ec2_instance.public_ip}:8080"
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
terraform {
|
||||
required_providers {
|
||||
aws = {
|
||||
source = "hashicorp/aws"
|
||||
version = "~> 3.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "aws" {
|
||||
access_key = "${var.aws_access_key}"
|
||||
secret_key = "${var.aws_secret_key}"
|
||||
region = "${var.aws_region}"
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
variable "aws_region" {
|
||||
default = "aws_region"
|
||||
}
|
||||
variable "vpc_cidr" {
|
||||
default = "cidr_value"
|
||||
}
|
||||
variable "public_subnet_cidr" {
|
||||
default = "cidr_value"
|
||||
}
|
||||
variable "public_subnet1_cidr" {
|
||||
default = "cidr_value"
|
||||
}
|
||||
|
||||
variable "user" {
|
||||
default = "user_of_instance"
|
||||
}
|
||||
|
||||
variable "public_key" {
|
||||
default = "$PWD_publickey"
|
||||
}
|
||||
variable "private_key" {
|
||||
default = "$PWD_privatekey"
|
||||
}
|
||||
variable "aws_access_key" {
|
||||
default = "aws_access_key"
|
||||
}
|
||||
|
||||
variable "aws_secret_key" {
|
||||
default = "aws_secrete_key"
|
||||
}
|
||||
|
||||
variable "instance_name" {
|
||||
default = "instance_name"
|
||||
}
|
||||
|
||||
variable "lutim_owner" {
|
||||
default = ""
|
||||
}
|
||||
|
||||
variable "lutim_group" {
|
||||
default = ""
|
||||
}
|
||||
|
||||
variable "app_dir" {
|
||||
default = ""
|
||||
}
|
||||
|
||||
variable "contact_user" {
|
||||
default = ""
|
||||
}
|
||||
|
||||
variable "contact" {
|
||||
default = ""
|
||||
}
|
||||
|
||||
variable "secret" {
|
||||
default = ""
|
||||
}
|
||||
|
||||
|
||||
39
CHANGELOG
@@ -1,43 +1,6 @@
|
||||
Revision history for Lutim
|
||||
|
||||
0.19.0 ????-??-??
|
||||
|
||||
0.18.0 2025-10-13
|
||||
- 🌐 — Update translations
|
||||
- 📦 — Update alpine version by @ploc
|
||||
- 🔧 — Ability to configure MOJO_TMPDIR via environment by @s7b4
|
||||
|
||||
0.17.0 2023-12-30
|
||||
- 🐛 — AVIF format support (#139)
|
||||
- ✨ — Allow to configure the directory where to store the images (#125)
|
||||
- ✨ — Ask for confirmation before deleting image on index page (#92)
|
||||
- ✨ — Mass delete button in "My images" page (#47)
|
||||
- ♿ — Improve accessibility on index page
|
||||
|
||||
0.16.0 2023-12-29
|
||||
- ⬆️ Update jQuery
|
||||
- 💥 BREAKING CHANGE: no more twitter cards
|
||||
- 🎨 — Use template literals in js
|
||||
- 🐛 — Gallery, zip and random URLs are now updated when closing image dialog box
|
||||
— ➖ — Replace moment.js with Date().toLocaleDateString(…)
|
||||
- 🩹 — Replace old URL of the project
|
||||
|
||||
0.15.0 2023-12-19
|
||||
- ✨ — Add --nuke option to image command
|
||||
|
||||
0.14.0 2023-12-18
|
||||
- ⬆️ Update dependencies
|
||||
- 💥 BREAKING CHANGE: Use `?_format=json` instead of `?format=json`
|
||||
- 💥 BREAKING CHANGE: Use `?_format=json` instead of terminating the URL with `.json`
|
||||
|
||||
0.13.0 2023-04-26
|
||||
- 💄 — Add Korrigan theme (Nicolas Frandeboeuf)
|
||||
- 🔥 — Remove zanata stuff
|
||||
- ✨ — Add a config flag to disable API (@b_b)
|
||||
- 🌐 — Update translations
|
||||
|
||||
0.12.1 2020-10-08
|
||||
- ⬆️ Update jQuery
|
||||
0.13.0 ????-??-??
|
||||
|
||||
0.12.0 2020-04-17
|
||||
- Add watermarking feature (#112)
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
# Contributing
|
||||
|
||||
See how to contribute on the [wiki](https://framagit.org/fiat-tux/hat-softwares/lutim/-/wikis/contribute).
|
||||
See how to contribute on the [wiki](https://framagit.org/luc/lutim/wikis/contribute).
|
||||
|
||||
41
Dockerfile
@@ -1,48 +1,23 @@
|
||||
FROM alpine:3.22
|
||||
FROM alpine:3.9
|
||||
|
||||
ARG BUILD_DATE
|
||||
ARG VCS_REF
|
||||
ARG VERSION
|
||||
LABEL org.label-schema.build-date=$BUILD_DATE \
|
||||
org.label-schema.name="Lets Upload That Image" \
|
||||
org.label-schema.url="https://lutim.fiat-tux.fr/" \
|
||||
org.label-schema.name="Let's Upload That Image" \
|
||||
org.label-schema.url="https://lut.im/" \
|
||||
org.label-schema.vcs-ref=$VCS_REF \
|
||||
org.label-schema.vcs-url="https://framagit.org/fiat-tux/hat-softwares/lutim" \
|
||||
org.label-schema.vcs-url="https://git.framasoft.org/luc/lutim" \
|
||||
org.label-schema.vendor="Luc Didry" \
|
||||
org.label-schema.version=$VERSION \
|
||||
org.label-schema.schema-version="1.0"
|
||||
|
||||
RUN adduser -D lutim \
|
||||
&& addgroup lutim root
|
||||
|
||||
COPY . /home/lutim
|
||||
RUN chmod -R g+rwX /home/lutim
|
||||
RUN adduser -D lutim
|
||||
COPY --chown=lutim:lutim . /home/lutim
|
||||
|
||||
WORKDIR /home/lutim
|
||||
RUN apk --no-cache add perl~=5 \
|
||||
libpq~=17 \
|
||||
perl-crypt-rijndael~=1 \
|
||||
perl-io-socket-ssl~=2 \
|
||||
perl-net-ssleay~=1 \
|
||||
su-exec~=0.2 \
|
||||
shared-mime-info~=2 \
|
||||
libretls~=3 \
|
||||
imagemagick~=7 \
|
||||
imagemagick-perlmagick~=7 \
|
||||
bash~=~5 \
|
||||
&& apk --no-cache add --virtual .build-deps build-base~=0.5 \
|
||||
perl-utils~=5 \
|
||||
perl-dev~=5 \
|
||||
postgresql17-dev~=17 \
|
||||
vim~=9 \
|
||||
wget~=1 \
|
||||
zlib-dev~=1 \
|
||||
&& cpan notest Carton Config::FromHash \
|
||||
&& carton install --without test \
|
||||
&& apk del .build-deps \
|
||||
&& rm -rf /var/cache/apk/* /root/.cpan*
|
||||
RUN /bin/sh /home/lutim/docker/build.sh
|
||||
|
||||
USER lutim
|
||||
EXPOSE 8080
|
||||
|
||||
ENTRYPOINT ["/bin/sh", "/home/lutim/docker/entrypoint.sh"]
|
||||
ENTRYPOINT ["/bin/sh", "/home/lutim/docker/entrypoint.sh"]
|
||||
4
Makefile
@@ -13,11 +13,15 @@ minify:
|
||||
@cd ./themes/default/public/css/ && cat bootstrap.min.css fontello.css hennypenny.css lutim.css toastify.css | csso > common.min.css
|
||||
@cd ./themes/default/public/css/ && cat animation.css uploader.css markdown.css | csso > not_stats.min.css
|
||||
@cd ./themes/default/public/css/ && cat photoswipe.css default-skin/default-skin.css | csso > gallery.min.css
|
||||
@cd ./themes/default/public/css/ && cat twitter.css | csso > twitter.min.css
|
||||
|
||||
locales:
|
||||
$(XGETTEXT) $(EXTRACTDIR) -o $(POT) 2>/dev/null
|
||||
$(XGETTEXT) $(EXTRACTDIR) -o $(ENPO) 2>/dev/null
|
||||
|
||||
stats-locales:
|
||||
wlc stats
|
||||
|
||||
podcheck:
|
||||
podchecker lib/Lutim/DB/Image.pm
|
||||
|
||||
|
||||
19
README.md
@@ -4,24 +4,27 @@
|
||||
It means Let's Upload That Image.
|
||||
|
||||
## What does it do?
|
||||
It stores images and allows you to see them, download them or share them on social networks.
|
||||
It stores images and allows you to see them, download them or share them on social networks. From version 0.5, the gif images can be displayed as animated gifs in Twitter, but you need an HTTPS server (Twitter requires that. Lutim detects if you have a HTTPS server and displays a static image twitter card if you don't);
|
||||
|
||||
Images are indefinitely stored unless you request that they will be deleted at first view or after 24 hours / one week / one month / one year.
|
||||
|
||||
## License
|
||||
Lutim is licensed under the terms of the AGPL. See the LICENSE file.
|
||||
|
||||
## Official instance
|
||||
You can see it working at https://lut.im.
|
||||
|
||||
## Logo
|
||||
Lutim's logo is an adaptation of [Lutin](http://commons.wikimedia.org/wiki/File:Lutin_by_godo.jpg) by [Godo](http://godoillustrateur.wordpress.com/), licensed under the terms of the CC-BY-SA 3.0 license.
|
||||
|
||||

|
||||

|
||||
|
||||
## Wiki
|
||||
|
||||
The official wiki contains all you need to know about Lutim (installation, API, etc.). Go to <https://framagit.org/fiat-tux/hat-softwares/lutim/-/wikis/home> or clone it:
|
||||
The official wiki contains all you need to know about Lutim (installation, API, etc.). Go to <https://framagit.org/luc/lutim/wikis/home> or clone it:
|
||||
|
||||
```
|
||||
git clone https://framagit.org/fiat-tux/hat-softwares/lutim.wiki.git
|
||||
git clone https://framagit.org/luc/lutim.wiki.git
|
||||
```
|
||||
|
||||
## Encryption
|
||||
@@ -40,9 +43,9 @@ See [AUTHORS.md](AUTHORS.md) file.
|
||||
|
||||
## Contribute!
|
||||
|
||||
Please consider contributing, either by [reporting issues](https://framagit.org/fiat-tux/hat-softwares/lutim/issues) or by helping the [internationalization](https://weblate.framasoft.org/projects/lutim/). And of course, code contribution are welcome!
|
||||
Please consider contributing, either by [reporting issues](https://framagit.org/luc/lutim/issues) or by helping the [internationalization](https://weblate.framasoft.org/projects/lutim/). And of course, code contribution are welcome!
|
||||
|
||||
The details on how to contribute are on the [wiki](https://framagit.org/fiat-tux/hat-softwares/lutim/wikis/contribute).
|
||||
The details on how to contribute are on the [wiki](https://framagit.org/luc/lutim/wikis/contribute).
|
||||
|
||||
## Make a donation
|
||||
|
||||
@@ -65,7 +68,3 @@ It uses:
|
||||
* [JSZip](https://stuk.github.io/jszip/) for generating a zip containing all the images in the gallery
|
||||
* [FileSaver.js](https://github.com/eligrey/FileSaver.js/) for saving the zip
|
||||
* [Toastify JS](https://apvarun.github.io/toastify-js/) for notifications
|
||||
|
||||
## Deploy lutim
|
||||
|
||||
An ansible role and a terraform plan reside under the `.provision` directory. An user could utilize the terraform plan if they chose to deploy lutim on AWS, if that's not the goal, they could simply execute the ansible role in part. Usage docs for both are present in their respective directories.
|
||||
|
||||
5
cpanfile
@@ -15,7 +15,6 @@ requires 'Filesys::DiskUsage';
|
||||
requires 'Switch';
|
||||
requires 'Crypt::CBC';
|
||||
requires 'Crypt::Blowfish';
|
||||
requires 'Digest::MD5';
|
||||
requires 'Locale::Maketext';
|
||||
requires 'Locale::Maketext::Extract';
|
||||
requires 'File::MimeInfo';
|
||||
@@ -33,7 +32,6 @@ feature 'postgresql', 'PostgreSQL support' => sub {
|
||||
feature 'sqlite', 'SQLite support' => sub {
|
||||
requires 'Mojo::SQLite', '>= 3.000';
|
||||
requires 'Minion::Backend::SQLite', '>= 4.001';
|
||||
requires 'DBD::SQLite', '>= 1.66';
|
||||
};
|
||||
feature 'minion', 'Minion support' => sub {
|
||||
requires 'Minion';
|
||||
@@ -55,6 +53,9 @@ feature 'htpasswd', 'Htpasswd authentication support' => sub {
|
||||
requires 'Apache::Htpasswd';
|
||||
requires 'Mojolicious::Plugin::Authentication';
|
||||
};
|
||||
feature 'swift-storage', 'Openstack Swift object storage support' => sub {
|
||||
requires 'Net::OpenStack::Swift';
|
||||
};
|
||||
feature 'test' => sub {
|
||||
requires 'Devel::Cover';
|
||||
};
|
||||
|
||||
4121
cpanfile.snapshot
16
docker/build.sh
Normal file
@@ -0,0 +1,16 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
set -eu
|
||||
|
||||
apk update
|
||||
apk add perl libpq perl-crypt-rijndael perl-io-socket-ssl perl-net-ssleay su-exec shared-mime-info libressl
|
||||
sh $(dirname $0)/install-dev-env.sh
|
||||
|
||||
sh $(dirname $0)/install-imagemagick.sh
|
||||
|
||||
cpan notest Carton Config::FromHash
|
||||
carton install --without test
|
||||
|
||||
# Remove dev env
|
||||
apk del .build-deps
|
||||
rm -rf /var/cache/apk/* /root/.cpan*
|
||||
6
docker/entrypoint.sh
Executable file → Normal file
@@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/bin/sh
|
||||
|
||||
set -eu
|
||||
|
||||
@@ -14,7 +14,7 @@ then
|
||||
echo ""
|
||||
echo "You can then install the build dependencies with this command"
|
||||
echo " sh ~lutim/docker/install-dev-env.sh"
|
||||
|
||||
|
||||
tail -f /dev/null
|
||||
exit 0
|
||||
fi
|
||||
@@ -28,7 +28,7 @@ then
|
||||
DB_HOST=$(perl utilities/read_conf.pl pgdb/host db)
|
||||
DB_PORT=$(perl utilities/read_conf.pl pgdb/port 5432)
|
||||
fi
|
||||
if [ -n "$DB_HOST" ] && [ -n "$DB_PORT" ]
|
||||
if [ -n "$DB_HOST" -a -n "$DB_PORT" ]
|
||||
then
|
||||
while ! nc -vz "${DB_HOST}" "${DB_PORT}"; do
|
||||
echo "Waiting for database..."
|
||||
|
||||
3
docker/install-dev-env.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
apk --update add --virtual .build-deps build-base perl-utils perl-dev postgresql-dev vim wget zlib-dev
|
||||
40
docker/install-imagemagick.sh
Normal file
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
# Instructions from https://imagemagick.org/script/perl-magick.php
|
||||
|
||||
set -eu
|
||||
|
||||
IM_VERSION=7.0.8-41
|
||||
SHA256_DIGEST=93f73a245c25194f757c075df9f2ec40010376200cc664c21646565b8690112c
|
||||
|
||||
IM_DIR="ImageMagick-$IM_VERSION"
|
||||
TARBALL="$IM_DIR.tar.gz"
|
||||
|
||||
ORIG_DIR="$(pwd)"
|
||||
|
||||
apk add libgomp libgcc libmagic \
|
||||
libjpeg libjpeg-turbo-dev \
|
||||
libpng libpng-dev \
|
||||
tiff tiff-dev \
|
||||
libwebp libwebp-dev
|
||||
|
||||
mkdir -p /tmp/im-build
|
||||
cd /tmp/im-build
|
||||
|
||||
echo "$SHA256_DIGEST *$TARBALL" > SHA256SUM
|
||||
|
||||
wget https://imagemagick.org/download/$TARBALL -O $TARBALL
|
||||
sha256sum -c SHA256SUM
|
||||
|
||||
tar xvf $TARBALL
|
||||
cd $IM_DIR
|
||||
./configure --with-perl --with-jpeg --with-png --with-tiff --with-webp
|
||||
make -j$(nproc)
|
||||
make install
|
||||
|
||||
ldconfig /usr/local/lib
|
||||
perl -MImage::Magick -le 'print Image::Magick->QuantumDepth'
|
||||
|
||||
cd "$ORIG_DIR"
|
||||
apk del libjpeg-turbo-dev libpng-dev tiff-dev libwebp-dev
|
||||
rm -rf /tmp/im-build
|
||||
23
lib/Lutim.pm
@@ -16,7 +16,7 @@ BEGIN {
|
||||
}
|
||||
}
|
||||
|
||||
$ENV{MOJO_TMPDIR} = 'tmp' unless (defined $ENV{MOJO_TMPDIR});
|
||||
$ENV{MOJO_TMPDIR} = 'tmp';
|
||||
mkdir($ENV{MOJO_TMPDIR}, 0700) unless (-d $ENV{MOJO_TMPDIR});
|
||||
# This method will run once at server start
|
||||
sub startup {
|
||||
@@ -109,9 +109,10 @@ sub startup {
|
||||
$self->plugin('Lutim::Plugin::Helpers');
|
||||
$self->plugin('Lutim::Plugin::Lang');
|
||||
|
||||
# Create directory if needed
|
||||
mkdir($self->config('upload_dir'), 0700) unless (-d $self->config('upload_dir'));
|
||||
die ('The upload directory ('.$self->config('upload_dir').') is not writable') unless (-w $self->config('upload_dir'));
|
||||
# Now helpers has been loaded, time to check Swift container
|
||||
if ($config->{swift}) {
|
||||
$self->check_swift_container();
|
||||
}
|
||||
|
||||
# Minion
|
||||
if ($config->{minion}->{enabled}) {
|
||||
@@ -295,7 +296,7 @@ sub startup {
|
||||
});
|
||||
|
||||
$r->get('/')->
|
||||
requires('authorized')->
|
||||
over('authorized')->
|
||||
to('Image#home')->
|
||||
name('index');
|
||||
$r->get('/')->
|
||||
@@ -334,7 +335,7 @@ sub startup {
|
||||
to('Image#change_lang')->
|
||||
name('lang');
|
||||
|
||||
$r->get('/partial/<:file>.<:f>' => sub {
|
||||
$r->get('/partial/:file' => sub {
|
||||
my $c = shift;
|
||||
$c->render(
|
||||
template => 'partial/'.$c->param('file'),
|
||||
@@ -355,7 +356,7 @@ sub startup {
|
||||
})->name('gallery');
|
||||
|
||||
$r->get('/myfiles')->
|
||||
requires('authorized')->
|
||||
over('authorized')->
|
||||
name('myfiles');
|
||||
$r->get('/myfiles')->
|
||||
to('Authent#index');
|
||||
@@ -373,28 +374,28 @@ sub startup {
|
||||
->name('random');
|
||||
|
||||
$r->post('/')->
|
||||
requires('authorized')->
|
||||
over('authorized')->
|
||||
to('Image#add')->
|
||||
name('add');
|
||||
$r->post('/')->
|
||||
to('Authent#index');
|
||||
|
||||
$r->get('/d/:short/:token')->
|
||||
requires('authorized')->
|
||||
over('authorized')->
|
||||
to('Image#delete')->
|
||||
name('delete');
|
||||
$r->get('/d/:short/:token')->
|
||||
to('Authent#index');
|
||||
|
||||
$r->post('/m/:short/:token')->
|
||||
requires('authorized')->
|
||||
over('authorized')->
|
||||
to('Image#modify')->
|
||||
name('modify');
|
||||
$r->post('/m/:short/:token')->
|
||||
to('Authent#index');
|
||||
|
||||
$r->post('/c')->
|
||||
requires('authorized')->
|
||||
over('authorized')->
|
||||
to('Image#get_counter')->
|
||||
name('counter');
|
||||
$r->post('/c')->
|
||||
|
||||
@@ -33,7 +33,7 @@ sub run {
|
||||
$dbi->get_images_to_clean()->each(
|
||||
sub {
|
||||
my ($img, $num) = @_;
|
||||
$l->app->delete_image($img);
|
||||
$img->delete();
|
||||
}
|
||||
);
|
||||
|
||||
@@ -42,7 +42,7 @@ sub run {
|
||||
$dbi->get_no_longer_viewed_files($time)->each(
|
||||
sub {
|
||||
my ($img, $num) = @_;
|
||||
$l->app->delete_image($img);
|
||||
$img->delete();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@@ -198,11 +198,11 @@ var disabled_donut = {
|
||||
};
|
||||
EOF
|
||||
|
||||
Mojo::File->new('themes/'.$config->{theme}.'/templates/stats.json.ep')->spew(encode_json($stats));
|
||||
Mojo::File->new('themes/'.$config->{theme}.'/templates/data.html.ep')->spew($dom);
|
||||
Mojo::File->new('themes/'.$config->{theme}.'/templates/raw.html.ep')->spew(encode('UTF-8', $dom2));
|
||||
Mojo::File->new('themes/'.$config->{theme}.'/templates/stats.json.ep')->spurt(encode_json($stats));
|
||||
Mojo::File->new('themes/'.$config->{theme}.'/templates/data.html.ep')->spurt($dom);
|
||||
Mojo::File->new('themes/'.$config->{theme}.'/templates/raw.html.ep')->spurt(encode('UTF-8', $dom2));
|
||||
mkdir 'themes/'.$config->{theme}.'/templates/partial/' unless -d 'themes/'.$config->{theme}.'/templates/partial/';
|
||||
Mojo::File->new('themes/'.$config->{theme}.'/templates/partial/raw.js.ep')->spew(encode('UTF-8', $js));
|
||||
Mojo::File->new('themes/'.$config->{theme}.'/templates/partial/raw.js.ep')->spurt(encode('UTF-8', $js));
|
||||
}
|
||||
|
||||
=encoding utf8
|
||||
|
||||
@@ -50,7 +50,7 @@ sub run {
|
||||
$dbi->get_50_oldest()->each(
|
||||
sub {
|
||||
my ($img, $num) = @_;
|
||||
$l->app->delete_image($img);
|
||||
$img->delete();
|
||||
}
|
||||
);
|
||||
} while (du(qw/files/) > $config->{max_total_size});
|
||||
|
||||
@@ -46,8 +46,7 @@ sub run {
|
||||
'r|remove=s{1,}' => \my @remove,
|
||||
'y|yes' => \my $yes,
|
||||
'q|quiet' => \my $quiet,
|
||||
's|search=s' => \my $ip,
|
||||
'n|nuke=s' => \my $nuke,
|
||||
's|search=s' => \my $ip
|
||||
;
|
||||
|
||||
if (scalar @info) {
|
||||
@@ -86,43 +85,9 @@ sub run {
|
||||
push @shorts, $e->short;
|
||||
print_infos($e, $csv);
|
||||
});
|
||||
say sprintf('%d matching images', $u->size);
|
||||
say sprintf('%d matching URLs', $u->size);
|
||||
say sprintf("If you want to delete those images, please do:\n carton exec script/lutim image --remove %s", join(' ', @shorts)) if @shorts;
|
||||
}
|
||||
if ($nuke) {
|
||||
my $i = get_short($c, $nuke);
|
||||
if ($i && $i->created_by) {
|
||||
my $u = Lutim::DB::Image->new(app => $c->app)->search_exact_created_by($i->created_by);
|
||||
my @shorts;
|
||||
say sprintf('%d images created by the same IP address (%s) than image %s', $u->size, $i->created_by, $nuke);
|
||||
my $confirm = ($yes) ? 'yes' : undef;
|
||||
unless (defined $confirm) {
|
||||
printf('Are you sure you want to remove those %d images? [N/y] ', $u->size);
|
||||
$confirm = <STDIN>;
|
||||
chomp $confirm;
|
||||
}
|
||||
if ($confirm =~ m/^y(es)?$/i) {
|
||||
$u->each(sub {
|
||||
my ($e, $num) = @_;
|
||||
my $i = get_short($c, $e->short);
|
||||
if ($i) {
|
||||
print_infos($i, $csv);
|
||||
if ($i->enabled) {
|
||||
delete_short($c, $i, 1);
|
||||
} else {
|
||||
say sprintf('The image %s is already disabled', $e->short);
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
say 'Answer was not "y" or "yes". Aborting deletion.';
|
||||
}
|
||||
} elsif (! $i->created_by) {
|
||||
say sprintf('Image %s does not contain its creator’s IP address.', $nuke);
|
||||
} else {
|
||||
say sprintf('Sorry, can’t find image %s', $nuke);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub get_short {
|
||||
@@ -203,12 +168,12 @@ sub delete_short {
|
||||
|
||||
my $confirm = ($y) ? 'yes' : undef;
|
||||
unless (defined $confirm) {
|
||||
printf('Are you sure you want to remove this image (%s)? [N/y] ', $i->short);
|
||||
printf('Are you sure you want to remove this image (%s) ? [N/y] ', $i->short);
|
||||
$confirm = <STDIN>;
|
||||
chomp $confirm;
|
||||
}
|
||||
if ($confirm =~ m/^y(es)?$/i) {
|
||||
$c->app->delete_image($i);
|
||||
$i->delete();
|
||||
} else {
|
||||
say 'Answer was not "y" or "yes". Aborting deletion.';
|
||||
}
|
||||
@@ -226,7 +191,6 @@ Lutim::Command::image - Manage URL in Lutim's database
|
||||
carton exec script/lutim image --info <short> <short> [--csv] Print infos about the space-separated images (--csv creates a CSV output)
|
||||
carton exec script/lutim image --remove <short> <short> [--yes] [--quiet] Delete the space-separated images (--yes disables confirmation, --quiet disables informations printing)
|
||||
carton exec script/lutim image --search <ip> Print infos about the images uploaded by this IP (database LIKE, may include images uploaded by other IPs)
|
||||
carton exec script/lutim image --nuke <short> Delete the image and all images sent by the same IP address and print infos about the deleted images
|
||||
|
||||
=cut
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
# vim:set sw=4 ts=4 sts=4 expandtab:
|
||||
package Lutim::Controller::Image;
|
||||
use Mojo::Asset::Memory;
|
||||
use Mojo::Base 'Mojolicious::Controller';
|
||||
use Mojo::File qw(path);
|
||||
use Mojo::Util qw(url_escape url_unescape b64_encode encode);
|
||||
use Mojo::Asset::Memory;
|
||||
use Mojo::JSON qw(true false);
|
||||
use Lutim::DB::Image;
|
||||
use DateTime;
|
||||
@@ -232,7 +231,7 @@ sub delete {
|
||||
} else {
|
||||
$c->app->log->info('[DELETION] someone made '.$image->filename.' removed with token method (path: '.$image->path.')') unless $c->config('quiet_logs');
|
||||
|
||||
$c->delete_image($image);
|
||||
$image->delete();
|
||||
return $c->respond_to(
|
||||
json => {
|
||||
json => {
|
||||
@@ -288,22 +287,6 @@ sub add {
|
||||
my $keep_exif = $c->param('keep-exif');
|
||||
my $wm = $c->param('watermark');
|
||||
|
||||
if ($c->config('disable_api')) {
|
||||
my $unauthorized_api = (!defined($c->req->headers->referrer) || Mojo::URL->new($c->req->headers->referrer)->host ne Mojo::URL->new('https://'.$c->req->headers->host)->host);
|
||||
if ($unauthorized_api) {
|
||||
my $msg = $c->l('Sorry, the API is disabled');
|
||||
$c->app->log->info('Blocked API call for '.$c->ip(1));
|
||||
return $c->respond_to(
|
||||
json => { json => { success => Mojo::JSON->false, msg => $msg } },
|
||||
any => sub {
|
||||
shift->render(
|
||||
template => 'index',
|
||||
msg => $msg,
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
if(!defined($c->stash('stop_upload'))) {
|
||||
if (defined($file_url) && $file_url) {
|
||||
if (is_http_uri($file_url) || is_https_uri($file_url)) {
|
||||
@@ -313,8 +296,8 @@ sub add {
|
||||
sleep($c->config->{anti_flood_delay});
|
||||
}
|
||||
my $ua = Mojo::UserAgent->new;
|
||||
my $res = $ua->get($file_url => {DNT => 1})->result;
|
||||
if ($res->is_success) {
|
||||
my $tx = $ua->get($file_url => {DNT => 1});
|
||||
if (my $res = $tx->success) {
|
||||
$file_url = url_unescape $file_url;
|
||||
$file_url =~ m#^.*/([^/?]*)\??.*$#;
|
||||
my $filename = $1;
|
||||
@@ -325,8 +308,8 @@ sub add {
|
||||
filename => $filename
|
||||
);
|
||||
$c->app->{wait_for_it}->{$ip} = time;
|
||||
} elsif ($res->is_limit_exceeded) {
|
||||
my $msg = $c->l('The file exceed the size limit (%1)', $res->max_message_size);
|
||||
} elsif ($tx->res->is_limit_exceeded) {
|
||||
my $msg = $c->l('The file exceed the size limit (%1)', $tx->res->max_message_size);
|
||||
if (defined($c->param('format')) && $c->param('format') eq 'json') {
|
||||
return $c->render(
|
||||
json => {
|
||||
@@ -344,7 +327,7 @@ sub add {
|
||||
}
|
||||
} else {
|
||||
my $msg = $c->l('An error occured while downloading the image.');
|
||||
$c->app->log->warn('[DOWNLOAD ERROR]'.$c->dumper($res->message));
|
||||
$c->app->log->warn('[DOWNLOAD ERROR]'.$c->dumper($tx->error));
|
||||
if (defined($c->param('format')) && $c->param('format') eq 'json') {
|
||||
return $c->render(
|
||||
json => {
|
||||
@@ -391,6 +374,9 @@ sub add {
|
||||
my ($msg, $short, $real_short, $token, $thumb, $limit, $created);
|
||||
# Check file type
|
||||
if (index($mediatype, 'image/') >= 0) {
|
||||
# Create directory if needed
|
||||
mkdir('files', 0700) unless (-d 'files');
|
||||
|
||||
if ($c->req->is_limit_exceeded) {
|
||||
$msg = $c->l('The file exceed the size limit (%1)', $c->req->max_message_size);
|
||||
if (defined($c->param('format')) && $c->param('format') eq 'json') {
|
||||
@@ -411,12 +397,11 @@ sub add {
|
||||
# Save file and create record
|
||||
my $filename = unidecode($upload->filename);
|
||||
my $ext = ($filename =~ m/([^.]+)$/)[0];
|
||||
my $path = path($c->config('upload_dir'), $record->short.'.'.$ext)->to_string;
|
||||
my $path = $record->short.'.'.$ext;
|
||||
$path = Mojo::File->new('files', $path)->to_string unless ($c->app->config('swift'));
|
||||
|
||||
my ($width, $height);
|
||||
if ($im_loaded && $mediatype ne 'image/svg+xml' # ImageMagick doesn't work with SVG, xcf or avif files
|
||||
&& $mediatype !~ m#image/(x-)?xcf#
|
||||
&& $mediatype ne 'image/avif') {
|
||||
if ($im_loaded && $mediatype ne 'image/svg+xml' && $mediatype !~ m#image/(x-)?xcf# && $mediatype ne 'image/webp') { # ImageMagick don't work in Debian with svg (for now?)
|
||||
my $im = Image::Magick->new;
|
||||
$im->BlobToImage($upload->slurp);
|
||||
|
||||
@@ -484,15 +469,15 @@ sub add {
|
||||
}
|
||||
|
||||
unless (defined($keep_exif) && $keep_exif) {
|
||||
# Exiftool can’t process SVG or xcf files
|
||||
if ($mediatype ne 'image/svg+xml'
|
||||
&& $mediatype !~ m#image/(x-)?xcf#) {
|
||||
if ($mediatype ne 'image/svg+xml' && $mediatype !~ m#image/(x-)?xcf# && $mediatype ne 'image/webp') {
|
||||
# Remove the EXIF tags
|
||||
my $data = new IO::Scalar \$upload->slurp();
|
||||
my $et = Image::ExifTool->new;
|
||||
my $et = new Image::ExifTool;
|
||||
|
||||
# Use $data in Image::ExifTool object
|
||||
$et->ExtractInfo($data);
|
||||
# Remove all metadata
|
||||
$et->SetNewValue('*');
|
||||
$et->SetNewValue('*', undef);
|
||||
|
||||
# Create a temporary IO::Scalar to write into
|
||||
my $temp;
|
||||
@@ -509,12 +494,11 @@ sub add {
|
||||
if ($c->param('crypt') || $c->config('always_encrypt')) {
|
||||
($upload, $key, $iv) = $c->crypt($upload, $filename);
|
||||
}
|
||||
$upload->move_to($path);
|
||||
|
||||
$record->path($path)
|
||||
->filename($filename)
|
||||
->mediatype($mediatype)
|
||||
->footprint(digest_file_hex($path, 'SHA-512'))
|
||||
->footprint(digest_file_hex($upload->asset->to_file->path, 'SHA-512'))
|
||||
->enabled(1)
|
||||
->delete_at_day(($c->param('delete-day') && ($c->param('delete-day') <= $c->max_delay || $c->max_delay == 0)) ? $c->param('delete-day') : $c->max_delay)
|
||||
->delete_at_first_view(($c->param('first-view'))? 1 : 0)
|
||||
@@ -523,7 +507,8 @@ sub add {
|
||||
->width($width)
|
||||
->height($height)
|
||||
->iv($iv)
|
||||
->write;
|
||||
->write
|
||||
->store($upload);
|
||||
|
||||
# Log image creation
|
||||
$c->app->log->info('[CREATION] '.$ip.' pushed '.$filename.' (path: '.$path.')') unless $c->config('quiet_logs');
|
||||
@@ -621,12 +606,13 @@ sub short {
|
||||
|
||||
my $image = Lutim::DB::Image->new(app => $c->app, short => $short);
|
||||
if ($image->enabled && $image->path) {
|
||||
# Image deleted
|
||||
if($image->delete_at_day && $image->created_at + $image->delete_at_day * 86400 <= time()) {
|
||||
# Log deletion
|
||||
$c->app->log->info('[DELETION] someone tried to view '.$image->filename.' but it has been removed by expiration (path: '.$image->path.')') unless $c->config('quiet_logs');
|
||||
|
||||
# Delete image
|
||||
$c->delete_image($image);
|
||||
$image->delete();
|
||||
|
||||
# Warn user
|
||||
$c->flash(
|
||||
@@ -636,6 +622,7 @@ sub short {
|
||||
}
|
||||
|
||||
my $test;
|
||||
# Twitter page
|
||||
if (defined($touit) && $image->mediatype !~ m/svg/) {
|
||||
$test = 1;
|
||||
my $short = $image->short;
|
||||
@@ -644,12 +631,12 @@ sub short {
|
||||
if ($image->mediatype eq 'image/gif') {
|
||||
if (defined($image->width) && defined($image->height)) {
|
||||
($width, $height) = ($image->width, $image->height);
|
||||
} elsif ($im_loaded && $image->mediatype !~ m/xcf|avif/) {
|
||||
my $upload = $c->decrypt($key, $image->path, $image->iv);
|
||||
my $im = Image::Magick->new;
|
||||
$im->BlobToImage($upload->slurp);
|
||||
$width = $im->Get('width');
|
||||
$height = $im->Get('height');
|
||||
} elsif ($im_loaded) {
|
||||
my $tmp = $image->decrypt($key);
|
||||
my $im = Image::Magick->new;
|
||||
$im->BlobToImage($tmp->slurp);
|
||||
$width = $im->Get('width');
|
||||
$height = $im->Get('height');
|
||||
|
||||
$image->width($width)
|
||||
->height($height)
|
||||
@@ -657,11 +644,11 @@ sub short {
|
||||
}
|
||||
}
|
||||
return $c->render(
|
||||
template => 'share',
|
||||
template => 'twitter',
|
||||
layout => undef,
|
||||
short => $short,
|
||||
filename => $image->filename,
|
||||
mimetype => $image->mediatype,
|
||||
mimetype => ($c->req->url->to_abs()->scheme eq 'https') ? $image->mediatype : '',
|
||||
width => $width,
|
||||
height => $height
|
||||
);
|
||||
@@ -672,7 +659,7 @@ sub short {
|
||||
$c->app->log->info('[DELETION] someone made '.$image->filename.' removed (path: '.$image->path.')') unless $c->config('quiet_logs');
|
||||
|
||||
# Delete image
|
||||
$c->delete_image($image);
|
||||
$image->delete();
|
||||
|
||||
$c->flash(
|
||||
msg => $c->l('Unable to find the image: it has been deleted.')
|
||||
@@ -704,7 +691,7 @@ sub short {
|
||||
$c->app->log->info('[DELETION] someone made '.$image->filename.' removed (path: '.$image->path.')') unless $c->config('quiet_logs');
|
||||
|
||||
# Delete image
|
||||
$c->delete_image($image);
|
||||
$image->delete();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
@@ -756,7 +743,7 @@ sub zip {
|
||||
$c->app->log->info('[DELETION] someone tried to view '.$image->filename.' but it has been removed by expiration (path: '.$image->path.')') unless $c->config('quiet_logs');
|
||||
|
||||
# Delete image
|
||||
$c->delete_image($image);
|
||||
$image->delete();
|
||||
|
||||
# Warn user
|
||||
$zip->addString(encode('UTF-8', $c->l('Unable to find the image: it has been deleted.')), 'images/'.$filename.'.txt');
|
||||
@@ -769,7 +756,7 @@ sub zip {
|
||||
$c->app->log->info('[DELETION] someone made '.$image->filename.' removed (path: '.$image->path.')') unless $c->config('quiet_logs');
|
||||
|
||||
# Delete image
|
||||
$c->delete_image($image);
|
||||
$image->delete();
|
||||
|
||||
$zip->addString(encode('UTF-8', $c->l('Unable to find the image: it has been deleted.')), 'images/'.$filename.'.txt');
|
||||
next;
|
||||
@@ -780,16 +767,18 @@ sub zip {
|
||||
$expires = $dt->strftime("%a, %d %b %Y %H:%M:%S GMT");
|
||||
|
||||
my $path = $image->path;
|
||||
unless ( -f $path && -r $path ) {
|
||||
$c->app->log->error("Cannot read file [$path]. error [$!]");
|
||||
$zip->addString(encode('UTF-8', $c->l('Unable to find the image: it has been deleted.')), 'images/'.$filename.'.txt');
|
||||
next;
|
||||
unless ($c->app->config('swift')) {
|
||||
unless ( -f $path && -r $path ) {
|
||||
$c->app->log->error("Cannot read file [$path]. error [$!]");
|
||||
$zip->addString(encode('UTF-8', $c->l('Unable to find the image: it has been deleted.')), 'images/'.$filename.'.txt');
|
||||
next;
|
||||
}
|
||||
}
|
||||
|
||||
if ($key) {
|
||||
$zip->addString($c->decrypt($key, $path, $image->iv), "images/$filename");
|
||||
$zip->addString($image->decrypt($key), "images/$filename");
|
||||
} else {
|
||||
$zip->addFile($path, "images/$filename");
|
||||
$zip->addString($image->retrieve, "images/$filename");
|
||||
}
|
||||
|
||||
# Log access
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
# vim:set sw=4 ts=4 sts=4 ft=perl expandtab:
|
||||
package Lutim::DB::Image;
|
||||
use bytes;
|
||||
use Mojo::Base -base;
|
||||
use Mojo::File;
|
||||
use Crypt::CBC;
|
||||
use File::Temp qw(tempfile);
|
||||
|
||||
has 'short';
|
||||
has 'path';
|
||||
@@ -20,6 +24,8 @@ has 'height';
|
||||
has 'iv';
|
||||
has 'app';
|
||||
|
||||
=encoding utf8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Lutim::DB::Image - DB abstraction layer for Lutim images
|
||||
@@ -151,13 +157,11 @@ sub to_hash {
|
||||
|
||||
=over 1
|
||||
|
||||
=item B<Usage> : C<$c-E<gt>count_delete_at_day_endis($delete_at_day, $enabled[, $time])>
|
||||
=item B<Usage> : C<$c-E<gt>count_delete_at_day_endis($delete_at_day, $enabled, [$time])>
|
||||
|
||||
=item B<Arguments> : two mandatory parameters: one integer, the delete_at_day attribute, a boolean (0 or 1), the enabled attribute
|
||||
an optional parameter: an unix timestamp
|
||||
=item B<Arguments> : two mandatory parameters: one integer, the delete_at_day attribute, a boolean (0 or 1), the enabled attribute and an optional parameter: an unix timestamp.
|
||||
|
||||
=item B<Purpose> : count how many images there are with the given delete_at_day attribute, and enabled or disabled, depending on the given enabled attribute
|
||||
if the optional parameter is given, count only images according to the given mandatory parameters that were created before the timestamp
|
||||
=item B<Purpose> : count how many images there are with the given delete_at_day attribute, and enabled or disabled, depending on the given enabled attribute. If the optional parameter is given, count only images according to the given mandatory parameters that were created before the timestamp
|
||||
|
||||
=item B<Returns> : integer
|
||||
|
||||
@@ -345,20 +349,158 @@ sub to_hash {
|
||||
|
||||
=back
|
||||
|
||||
=head2 search_exact_created_by
|
||||
=head2 store
|
||||
|
||||
=over 1
|
||||
|
||||
=item B<Usage> : C<$c-E<gt>search_exact_created_by($ip)>
|
||||
=item B<Usage> : C<$c-E<gt>store($upload)>
|
||||
|
||||
=item B<Arguments> : an IP address
|
||||
=item B<Arguments> : a Mojo::Upload object
|
||||
|
||||
=item B<Purpose> : get enabled images that have been uploaded by this IP address
|
||||
=item B<Purpose> : will store the content to the object’s path, either on filesystem or on Swift object storage
|
||||
|
||||
=item B<Returns> : a Mojo::Collection object containing the matching images as Lutim::DB::Image objects
|
||||
=item B<Returns> : the db accessor object
|
||||
|
||||
=back
|
||||
|
||||
=cut
|
||||
|
||||
sub store {
|
||||
my $c = shift;
|
||||
my $upload = shift;
|
||||
|
||||
if ($c->app->config('swift')) {
|
||||
$c->app->swift->put_object(
|
||||
container_name => $c->app->config('swift')->{container},
|
||||
object_name => $c->path,
|
||||
content_length => $upload->size,
|
||||
content => $upload->slurp
|
||||
);
|
||||
} else {
|
||||
$upload->move_to($c->path);
|
||||
}
|
||||
|
||||
return $c;
|
||||
}
|
||||
|
||||
=head2 retrieve
|
||||
|
||||
=over 1
|
||||
|
||||
=item B<Usage> : C<$c-E<gt>retrieve>
|
||||
|
||||
=item B<Arguments> : none
|
||||
|
||||
=item B<Purpose> : get file from storage, either filesystem or Swift object storage
|
||||
|
||||
=item B<Returns> : the data from the file
|
||||
|
||||
=back
|
||||
|
||||
=cut
|
||||
|
||||
sub retrieve {
|
||||
my $c = shift;
|
||||
my $upload = shift;
|
||||
|
||||
if ($c->app->config('swift')) {
|
||||
my $file;
|
||||
$c->app->swift->get_object(
|
||||
container_name => $c->app->config('swift')->{container},
|
||||
object_name => $c->path,
|
||||
write_code => sub {
|
||||
my ($status, $message, $headers, $chunk) = @_;
|
||||
$file .= $chunk;
|
||||
}
|
||||
);
|
||||
return $file;
|
||||
} else {
|
||||
return Mojo::File->new($c->path)->slurp;
|
||||
}
|
||||
}
|
||||
|
||||
=head2 decrypt
|
||||
|
||||
=over 1
|
||||
|
||||
=item B<Usage> : C<$c-E<gt>decrypt($key)>
|
||||
|
||||
=item B<Arguments> : the decryption key
|
||||
|
||||
=item B<Purpose> : decrypt the image
|
||||
|
||||
=item B<Returns> : a Mojo::Asset::File object
|
||||
|
||||
=back
|
||||
|
||||
=cut
|
||||
|
||||
sub decrypt {
|
||||
my $c = shift;
|
||||
my $key = shift;
|
||||
$c->iv = 'dupajasi' unless $c->iv;
|
||||
|
||||
my $cipher = Crypt::CBC->new(
|
||||
-key => $key,
|
||||
-cipher => 'Blowfish',
|
||||
-header => 'none',
|
||||
-iv => $c->iv
|
||||
);
|
||||
|
||||
$cipher->start('decrypting');
|
||||
|
||||
my $decrypt_asset = Mojo::Asset::File->new;
|
||||
|
||||
if ($c->app->config('swift')) {
|
||||
$c->app->swift->get_object(
|
||||
container_name => $c->app->config('swift')->{container},
|
||||
object_name => $c->path,
|
||||
write_code => sub {
|
||||
my ($status, $message, $headers, $chunk) = @_;
|
||||
$decrypt_asset->add_chunk($cipher->crypt($chunk));
|
||||
}
|
||||
);
|
||||
} else {
|
||||
open(my $f, "<", $c->path) or die "Unable to read encrypted file: $!";
|
||||
binmode $f;
|
||||
while (read($f, my $buffer, 1024)) {
|
||||
$decrypt_asset->add_chunk($cipher->crypt($buffer));
|
||||
}
|
||||
$decrypt_asset->add_chunk($cipher->finish);
|
||||
|
||||
}
|
||||
return $decrypt_asset->slurp;
|
||||
}
|
||||
|
||||
=head2 delete
|
||||
|
||||
=over 1
|
||||
|
||||
=item B<Usage> : C<$c-E<gt>delete>
|
||||
|
||||
=item B<Arguments> : none
|
||||
|
||||
=item B<Purpose> : delete the file on filesystem or Swift object storage and disable the image in database
|
||||
|
||||
=item B<Returns> : the db accessor object
|
||||
|
||||
=back
|
||||
|
||||
=cut
|
||||
|
||||
sub delete {
|
||||
my $c = shift;
|
||||
if ($c->app->config('cache_max_size') != 0 || scalar(@{$c->app->config('memcached_servers')})) {
|
||||
$c->app->chi('lutim_images_cache')->remove($c->short);
|
||||
}
|
||||
if ($c->app->config('swift')) {
|
||||
$c->app->swift->delete_object({
|
||||
container_name => $c->app->config('swift')->{container},
|
||||
object_name => $c->path
|
||||
});
|
||||
} else {
|
||||
unlink $c->path or warn "Could not unlink ".$c->path.": $!";
|
||||
}
|
||||
return $c->disable();
|
||||
}
|
||||
1;
|
||||
|
||||
@@ -78,15 +78,12 @@ sub select_empty {
|
||||
}
|
||||
|
||||
sub write {
|
||||
my $c = shift;
|
||||
my $provisioning = shift;
|
||||
my $c = shift;
|
||||
|
||||
if ($c->record) {
|
||||
$c->app->pg->db->query('UPDATE lutim SET counter = ?, created_at = ?, created_by = ?, delete_at_day = ?, delete_at_first_view = ?, enabled = ?, filename = ?, footprint = ?, height = ?, last_access_at = ?, mediatype = ?, mod_token = ?, path = ?, short = ?, width = ?, iv = ? WHERE short = ?', $c->counter, $c->created_at, $c->created_by, $c->delete_at_day, $c->delete_at_first_view, $c->enabled, $c->filename, $c->footprint, $c->height, $c->last_access_at, $c->mediatype, $c->mod_token, $c->path, $c->short, $c->width, $c->iv, $c->short);
|
||||
} else {
|
||||
my $query = 'INSERT INTO lutim (counter, created_at, created_by, delete_at_day, delete_at_first_view, enabled, filename, footprint, height, last_access_at, mediatype, mod_token, path, short, width, iv) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
|
||||
$query .= ' ON CONFLICT DO NOTHING' if $provisioning;
|
||||
$c->app->pg->db->query($query, $c->counter, $c->created_at, $c->created_by, $c->delete_at_day, $c->delete_at_first_view, $c->enabled, $c->filename, $c->footprint, $c->height, $c->last_access_at, $c->mediatype, $c->mod_token, $c->path, $c->short, $c->width, $c->iv);
|
||||
$c->app->pg->db->query('INSERT INTO lutim (counter, created_at, created_by, delete_at_day, delete_at_first_view, enabled, filename, footprint, height, last_access_at, mediatype, mod_token, path, short, width, iv) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', $c->counter, $c->created_at, $c->created_by, $c->delete_at_day, $c->delete_at_first_view, $c->enabled, $c->filename, $c->footprint, $c->height, $c->last_access_at, $c->mediatype, $c->mod_token, $c->path, $c->short, $c->width, $c->iv);
|
||||
$c->record(1);
|
||||
}
|
||||
|
||||
@@ -213,27 +210,6 @@ sub search_created_by {
|
||||
return c(@images);
|
||||
}
|
||||
|
||||
sub search_exact_created_by {
|
||||
my $c = shift;
|
||||
my $ip = shift;
|
||||
|
||||
my @images;
|
||||
|
||||
my $records = $c->app->pg->db->select('lutim', undef, { enabled => 1, created_by => $ip })->hashes;
|
||||
|
||||
$records->each(
|
||||
sub {
|
||||
my ($e, $num) = @_;
|
||||
my $i = Lutim::DB::Image->new(app => $c->app);
|
||||
$i->_slurp($e);
|
||||
|
||||
push @images, $i;
|
||||
}
|
||||
);
|
||||
|
||||
return c(@images);
|
||||
}
|
||||
|
||||
sub _slurp {
|
||||
my $c = shift;
|
||||
my $r = shift;
|
||||
|
||||
@@ -79,15 +79,12 @@ sub select_empty {
|
||||
}
|
||||
|
||||
sub write {
|
||||
my $c = shift;
|
||||
my $provisioning = shift;
|
||||
my $c = shift;
|
||||
|
||||
if ($c->record) {
|
||||
$c->app->sqlite->db->query('UPDATE lutim SET counter = ?, created_at = ?, created_by = ?, delete_at_day = ?, delete_at_first_view = ?, enabled = ?, filename = ?, footprint = ?, height = ?, last_access_at = ?, mediatype = ?, mod_token = ?, path = ?, short = ?, width = ?, iv = ? WHERE short = ?', $c->counter, $c->created_at, $c->created_by, $c->delete_at_day, $c->delete_at_first_view, $c->enabled, $c->filename, $c->footprint, $c->height, $c->last_access_at, $c->mediatype, $c->mod_token, $c->path, $c->short, $c->width, $c->iv, $c->short);
|
||||
} else {
|
||||
my $query = 'INSERT INTO lutim (counter, created_at, created_by, delete_at_day, delete_at_first_view, enabled, filename, footprint, height, last_access_at, mediatype, mod_token, path, short, width, iv) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';
|
||||
$query .= ' ON CONFLICT DO NOTHING' if $provisioning;
|
||||
$c->app->sqlite->db->query($query, $c->counter, $c->created_at, $c->created_by, $c->delete_at_day, $c->delete_at_first_view, $c->enabled, $c->filename, $c->footprint, $c->height, $c->last_access_at, $c->mediatype, $c->mod_token, $c->path, $c->short, $c->width, $c->iv);
|
||||
$c->app->sqlite->db->query('INSERT INTO lutim (counter, created_at, created_by, delete_at_day, delete_at_first_view, enabled, filename, footprint, height, last_access_at, mediatype, mod_token, path, short, width, iv) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', $c->counter, $c->created_at, $c->created_by, $c->delete_at_day, $c->delete_at_first_view, $c->enabled, $c->filename, $c->footprint, $c->height, $c->last_access_at, $c->mediatype, $c->mod_token, $c->path, $c->short, $c->width, $c->iv);
|
||||
$c->record(1);
|
||||
}
|
||||
|
||||
@@ -214,27 +211,6 @@ sub search_created_by {
|
||||
return c(@images);
|
||||
}
|
||||
|
||||
sub search_exact_created_by {
|
||||
my $c = shift;
|
||||
my $ip = shift;
|
||||
|
||||
my @images;
|
||||
|
||||
my $records = $c->app->sqlite->db->select('lutim', undef, { enabled => 1, created_by => $ip })->hashes;
|
||||
|
||||
$records->each(
|
||||
sub {
|
||||
my ($e, $num) = @_;
|
||||
my $i = Lutim::DB::Image->new(app => $c->app);
|
||||
$i->_slurp($e);
|
||||
|
||||
push @images, $i;
|
||||
}
|
||||
);
|
||||
|
||||
return c(@images);
|
||||
}
|
||||
|
||||
sub _slurp {
|
||||
my $c = shift;
|
||||
my $r = shift;
|
||||
|
||||
@@ -22,8 +22,6 @@ our $default_config = {
|
||||
watermark_default => 'none',
|
||||
watermark_enforce => 'none',
|
||||
theme => 'default',
|
||||
disable_api => 0,
|
||||
upload_dir => 'files',
|
||||
dbtype => 'sqlite',
|
||||
db_path => 'lutim.db',
|
||||
max_files_in_zip => 15,
|
||||
|
||||
@@ -8,7 +8,6 @@ use Data::Entropy qw(entropy_source);
|
||||
use DateTime;
|
||||
use Mojo::Util qw(decode);
|
||||
use ISO::639_1;
|
||||
use Digest::MD5 'md5';
|
||||
|
||||
sub register {
|
||||
my ($self, $app) = @_;
|
||||
@@ -50,26 +49,61 @@ sub register {
|
||||
$app->helper(is_selected => \&_is_selected);
|
||||
$app->helper(is_wm_selected => \&_is_wm_selected);
|
||||
$app->helper(crypt => \&_crypt);
|
||||
$app->helper(decrypt => \&_decrypt);
|
||||
$app->helper(delete_image => \&_delete_image);
|
||||
$app->helper(iso639_native_name => \&_iso639_native_name);
|
||||
$app->helper(prefix => \&_prefix);
|
||||
if ($app->config('swift')) {
|
||||
use Net::OpenStack::Swift;
|
||||
$app->helper(swift => \&_swift);
|
||||
$app->helper(check_swift_container => \&_check_swift_container);
|
||||
$app->helper(find_swift_container => \&_find_swift_container);
|
||||
}
|
||||
}
|
||||
|
||||
sub _pg {
|
||||
my $c = shift;
|
||||
my $c = shift;
|
||||
|
||||
state $pg = Mojo::Pg->new($c->app->pg_url($c->app->config('pgdb')));
|
||||
return $pg;
|
||||
}
|
||||
|
||||
sub _sqlite {
|
||||
my $c = shift;
|
||||
my $c = shift;
|
||||
|
||||
state $sqlite = Mojo::SQLite->new('sqlite:'.$c->app->config('db_path'));
|
||||
return $sqlite;
|
||||
}
|
||||
|
||||
sub _swift {
|
||||
my $c = shift;
|
||||
|
||||
state $swift = Net::OpenStack::Swift->new($c->app->config('swift'));
|
||||
return $swift;
|
||||
}
|
||||
|
||||
sub _check_swift_container {
|
||||
my $c = shift;
|
||||
|
||||
my ($storage_url, $token) = $c->swift->get_auth();
|
||||
my ($headers, $containers) = $c->swift->get_account(url => $storage_url, token => $token);
|
||||
unless ($c->find_swift_container($containers)) {
|
||||
$c->swift->put_container(container_name => $c->app->config('swift')->{container});
|
||||
my ($headers, $containers) = $c->swift->get_account(url => $storage_url, token => $token);
|
||||
die sprintf("Swift container %s not found, and unable to create it.", $c->app->config('swift')->{container}) unless $c->find_swift_container($containers);
|
||||
}
|
||||
}
|
||||
|
||||
sub _find_swift_container {
|
||||
my $c = shift;
|
||||
my $containers = shift;
|
||||
|
||||
my $found_container = 0;
|
||||
foreach my $container (@{$containers}) {
|
||||
$found_container = 1 if $container->{name} eq $c->app->config('swift')->{container};
|
||||
}
|
||||
|
||||
return $found_container;
|
||||
}
|
||||
|
||||
sub _render_file {
|
||||
my $c = shift;
|
||||
my ($im_loaded, $img, $dl, $key, $thumb) = @_;
|
||||
@@ -84,12 +118,15 @@ sub _render_file {
|
||||
$dl = 'attachment' if ($mediatype =~ m/svg/);
|
||||
$filename = quote($filename);
|
||||
|
||||
unless (-f $path && -r $path) {
|
||||
$c->app->log->error("Cannot read file [$path]. error [$!]");
|
||||
$c->flash(
|
||||
msg => $c->l('Unable to find the image: it has been deleted.')
|
||||
);
|
||||
return 500;
|
||||
unless ($c->app->config('swift')) {
|
||||
# Do we have the file on disk?
|
||||
unless (-f $path && -r $path) {
|
||||
$c->app->log->error("Cannot read file [$path]. error [$!]");
|
||||
$c->flash(
|
||||
msg => $c->l('Unable to find the image: it has been deleted.')
|
||||
);
|
||||
return 500;
|
||||
}
|
||||
}
|
||||
|
||||
$mediatype =~ s/x-//;
|
||||
@@ -105,21 +142,22 @@ sub _render_file {
|
||||
$c->res->content->headers($headers);
|
||||
|
||||
my $cache;
|
||||
# Do we have the file in cache?
|
||||
if ($c->config('cache_max_size') != 0 || scalar(@{$c->config('memcached_servers')})) {
|
||||
$cache = $c->chi('lutim_images_cache')->compute($img->short, undef, sub {
|
||||
if ($key) {
|
||||
return {
|
||||
asset => $c->decrypt($key, $path, $iv),
|
||||
asset => $img->decrypt($key),
|
||||
key => $key
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
asset => Mojo::File->new($path)->slurp,
|
||||
asset => $img->retrieve
|
||||
};
|
||||
}
|
||||
});
|
||||
if ($key && $key ne $cache->{key}) {
|
||||
my $tmp = $c->decrypt($key, $path, $iv);
|
||||
my $tmp = $img->decrypt($key);
|
||||
$cache->{asset} = $tmp;
|
||||
$c->chi('lutim_images_cache')->replace(
|
||||
$img->short,
|
||||
@@ -132,19 +170,19 @@ sub _render_file {
|
||||
} else {
|
||||
if ($key) {
|
||||
$cache = {
|
||||
asset => $c->decrypt($key, $path, $iv),
|
||||
asset => $img->decrypt($key),
|
||||
};
|
||||
} else {
|
||||
$cache = {
|
||||
asset => Mojo::File->new($path)->slurp,
|
||||
asset => $img->retrieve,
|
||||
};
|
||||
}
|
||||
}
|
||||
# Extend expiration time
|
||||
my $asset = Mojo::Asset::Memory->new;
|
||||
$asset->add_chunk($cache->{asset});
|
||||
|
||||
if (defined $thumb && $im_loaded && $mediatype ne 'image/svg+xml' && $mediatype !~ m#image/(x-)?xcf# && $mediatype ne 'image/avif') { # ImageMagick don't work in Debian with svg (for now?)
|
||||
# Do we need to create a thumbnail?
|
||||
if (defined $thumb && $im_loaded && $mediatype ne 'image/svg+xml' && $mediatype !~ m#image/(x-)?xcf# && $mediatype ne 'image/webp') { # ImageMagick don't work in Debian with svg (for now?)
|
||||
my $im = Image::Magick->new;
|
||||
$im->BlobToImage($asset->slurp);
|
||||
|
||||
@@ -196,7 +234,7 @@ sub _provisioning {
|
||||
->delete_at_first_view(0)
|
||||
->delete_at_day(0)
|
||||
->mod_token($c->shortener($c->app->config('token_length')))
|
||||
->write('provisioning');
|
||||
->write;
|
||||
|
||||
$img = Lutim::DB::Image->new(app => $c->app);
|
||||
}
|
||||
@@ -259,18 +297,6 @@ sub _is_wm_selected {
|
||||
return ($wm eq $c->config('watermark_default')) ? 'selected="selected"' : '';
|
||||
}
|
||||
|
||||
sub _key_from_key {
|
||||
my $key = shift;
|
||||
|
||||
# Key size for Blowfish is 56
|
||||
my $ks = 56;
|
||||
my $material = md5($key);
|
||||
while (length($material) < $ks) {
|
||||
$material .= md5($material);
|
||||
}
|
||||
return substr($material,0,$ks);
|
||||
}
|
||||
|
||||
sub _crypt {
|
||||
my $c = shift;
|
||||
my $upload = shift;
|
||||
@@ -280,12 +306,10 @@ sub _crypt {
|
||||
my $iv = $c->shortener(8);
|
||||
|
||||
my $cipher = Crypt::CBC->new(
|
||||
-key => _key_from_key($key),
|
||||
-cipher => 'Blowfish',
|
||||
-header => 'none',
|
||||
-literal_key => 1,
|
||||
-pbkdf => 'pbkdf2',
|
||||
-iv => $iv
|
||||
-key => $key,
|
||||
-cipher => 'Blowfish',
|
||||
-header => 'none',
|
||||
-iv => $iv
|
||||
);
|
||||
|
||||
$cipher->start('encrypting');
|
||||
@@ -302,46 +326,6 @@ sub _crypt {
|
||||
return ($crypt_upload, $key, $iv);
|
||||
}
|
||||
|
||||
sub _decrypt {
|
||||
my $c = shift;
|
||||
my $key = _key_from_key(shift);
|
||||
my $file = shift;
|
||||
my $iv = shift;
|
||||
$iv = 'dupajasi' unless $iv;
|
||||
|
||||
my $cipher = Crypt::CBC->new(
|
||||
-key => $key,
|
||||
-cipher => 'Blowfish',
|
||||
-header => 'none',
|
||||
-literal_key => 1,
|
||||
-pbkdf => 'pbkdf2',
|
||||
-iv => $iv
|
||||
);
|
||||
|
||||
$cipher->start('decrypting');
|
||||
|
||||
my $decrypt_asset = Mojo::Asset::File->new;
|
||||
|
||||
open(my $f, "<",$file) or die "Unable to read encrypted file: $!";
|
||||
binmode $f;
|
||||
while (read($f, my $buffer, 1024)) {
|
||||
$decrypt_asset->add_chunk($cipher->crypt($buffer));
|
||||
}
|
||||
$decrypt_asset->add_chunk($cipher->finish) ;
|
||||
|
||||
return $decrypt_asset->slurp;
|
||||
}
|
||||
|
||||
sub _delete_image {
|
||||
my $c = shift;
|
||||
my $img = shift;
|
||||
if ($c->config('cache_max_size') != 0 || scalar(@{$c->config('memcached_servers')})) {
|
||||
$c->chi('lutim_images_cache')->remove($img->short);
|
||||
}
|
||||
unlink $img->path or warn "Could not unlink ".$img->path.": $!";
|
||||
$img->disable();
|
||||
}
|
||||
|
||||
sub _iso639_native_name {
|
||||
my $c = shift;
|
||||
return ucfirst(decode 'UTF-8', get_iso639_1(shift)->{nativeName});
|
||||
|
||||
@@ -49,6 +49,11 @@
|
||||
# optional, default is 5
|
||||
#anti_flood_delay => 5,
|
||||
|
||||
# twitter account which will appear on twitter cards
|
||||
# see https://dev.twitter.com/docs/cards/validation/validator to register your Lutim instance on twitter
|
||||
# optional, no default
|
||||
#tweet_card_via => '@foo',
|
||||
|
||||
# max image size, in octets
|
||||
# you can write it 10*1024*1024
|
||||
# optional, default is 10485760
|
||||
@@ -130,19 +135,6 @@
|
||||
# optional, defaut is /
|
||||
#prefix => '/',
|
||||
|
||||
# if set to 1, Lutim will try to prevent its use without using the web interface
|
||||
# optional, default is 0
|
||||
#disable_api => 0,
|
||||
|
||||
# Define a path to the upload directory, where the uploaded images will be stored.
|
||||
# You can define it relative to lutim directory or set an absolute path.
|
||||
# The path is stored in database for each uploaded file, so you’ll need to do some
|
||||
# SQL commands if you move the images in an other directory (if you keep the old directory
|
||||
# where it was, you have nothing to do).
|
||||
# Remember that it has to be in a directory writable by Lutim user
|
||||
# optional, default is 'files'
|
||||
#upload_dir => 'files',
|
||||
|
||||
# choose what database you want to use
|
||||
# valid choices are sqlite and postgresql (all lowercase)
|
||||
# optional, default is sqlite
|
||||
@@ -213,6 +205,18 @@
|
||||
# optional, default is 3600
|
||||
#session_duration => 3600,
|
||||
|
||||
# you can store images on Swift object storage (https://en.wikipedia.org/wiki/OpenStack#Swift) instead of filesystem
|
||||
# please read https://metacpan.org/pod/Net::OpenStack::Swift#SYNOPSIS to know how to configure this setting
|
||||
# IMPORTANT: add a `container` key in it, to let Lutim know which container to use. This is not a regular Net::OpenStack::Swift setting, but Lutim need it.
|
||||
# optional, no default
|
||||
#swift => {
|
||||
# auth_url => 'https://auth-endpoint-url/v2.0',
|
||||
# user => 'userid',
|
||||
# password => 'password',
|
||||
# tenant_name => 'project_id',
|
||||
# container => 'lutim'
|
||||
#},
|
||||
|
||||
# disable counters of images
|
||||
# set to 1 to disable counters
|
||||
# optional, counters are enabled by default
|
||||
@@ -248,7 +252,7 @@
|
||||
# array of memcached servers to cache URL in order to accelerate responses to often-viewed URL.
|
||||
# If set to [], the use of memcached is disabled.
|
||||
# If you use memcached, the internal cache (see cache_max_size option above) will not be used.
|
||||
# Please see https://framagit.org/fiat-tux/hat-softwares/lutim/-/wikis/memcached to know how to configure your memcached
|
||||
# Please see https://framagit.org/luc/lutim/wikis/memcached to know how to configure your memcached
|
||||
# servers.
|
||||
# exemple of valid value: ['127.0.0.1:11211']
|
||||
# optional, default is []
|
||||
@@ -259,7 +263,7 @@
|
||||
# optional, default is 0
|
||||
#quiet_logs => 0,
|
||||
|
||||
# Content-Security-Policy header that will be sent by Lutim
|
||||
# Content-Security-Policy header that will be sent by Lstu
|
||||
# Set to '' to disable CSP header
|
||||
# https://content-security-policy.com/ provides a good documentation about CSP.
|
||||
# https://report-uri.com/home/generate provides a tool to generate a CSP header.
|
||||
@@ -269,7 +273,7 @@
|
||||
# the default value is good for `default` theme
|
||||
#csp => "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'",
|
||||
|
||||
# X-Frame-Options header that will be sent by Lutim
|
||||
# X-Frame-Options header that will be sent by Lstu
|
||||
# Valid values are: 'DENY', 'SAMEORIGIN', 'ALLOW-FROM https://example.com/'
|
||||
# Set to '' to disable X-Frame-Options header
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
|
||||
@@ -278,13 +282,13 @@
|
||||
# optional, default is 'DENY'
|
||||
#x_frame_options => 'DENY',
|
||||
|
||||
# X-Content-Type-Options that will be sent by Lutim
|
||||
# X-Content-Type-Options that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
|
||||
# Set to '' to disable X-Content-Type-Options header
|
||||
# optional, default is 'nosniff'
|
||||
#x_content_type_options => 'nosniff',
|
||||
|
||||
# X-XSS-Protection that will be sent by Lutim
|
||||
# X-XSS-Protection that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
|
||||
# Set to '' to disable X-XSS-Protection header
|
||||
# optional, default is '1; mode=block'
|
||||
|
||||
11
push-trad-to-zanata.sh
Executable file
@@ -0,0 +1,11 @@
|
||||
#!/bin/bash
|
||||
FILE=$1
|
||||
if [[ ! -e themes/default/lib/Lutim/I18N/$FILE.po ]]
|
||||
then
|
||||
echo "themes/default/lib/Lutim/I18N/$FILE.po does not exist. Exiting."
|
||||
exit 1
|
||||
else
|
||||
LOCALE=$(echo $FILE | sed -e "s@_@-@g")
|
||||
zanata-cli -q -B push --push-type trans -l $LOCALE
|
||||
fi
|
||||
|
||||
@@ -49,6 +49,11 @@
|
||||
# optional, default is 5
|
||||
#anti_flood_delay => 5,
|
||||
|
||||
# twitter account which will appear on twitter cards
|
||||
# see https://dev.twitter.com/docs/cards/validation/validator to register your Lutim instance on twitter
|
||||
# optional, default is @framasky
|
||||
#tweet_card_via => '@framasky',
|
||||
|
||||
# max image size, in octets
|
||||
# you can write it 10*1024*1024
|
||||
# optional, default is 10485760
|
||||
@@ -97,29 +102,6 @@
|
||||
# optional, default is 0
|
||||
#always_encrypt => 0,
|
||||
|
||||
# you can allow to use a watermark on the uploaded images (or enforce its use)
|
||||
# define a path to the watermark image (provide an image with alpha channel)
|
||||
# you can define the path relative to lutim directory or set an absolute path
|
||||
# to disable the usage of a watermark, leave it blank or commented
|
||||
# optional, no default
|
||||
#watermark_path => '',
|
||||
|
||||
# the watermark can be a tiling one or a single one
|
||||
# when using a small one, you can choose where to place it
|
||||
# valid values are 'Center', 'North', 'NorthEast', 'East', 'SouthEast', 'South', 'SouthWest', 'West' and 'NorthWest' (case insensitive)
|
||||
# optional, default is 'SouthEast'
|
||||
#watermark_placement => 'SouthEast',
|
||||
|
||||
# choose which watermark (tiling, single or none) should be used by default
|
||||
# valid values are 'tiling', 'single' or 'none' (case insensitive)
|
||||
# optional, default is 'none'
|
||||
#watermark_default => 'none',
|
||||
|
||||
# choose which watermark (tiling, single or none) should be enforced (users will always have a watermark and won’t be able to disable it)
|
||||
# valid values are 'tiling', 'single' or 'none' (case insensitive)
|
||||
# optional, default is 'none'
|
||||
#watermark_enforce => 'none',
|
||||
|
||||
# length of the image's delete token
|
||||
# optional, default is 24
|
||||
#token_length => 24,
|
||||
@@ -130,18 +112,6 @@
|
||||
# optional, defaut is /
|
||||
#prefix => '/',
|
||||
|
||||
# if set to 1, Lutim will try to prevent its use without using the web interface
|
||||
# optional, default is 0
|
||||
#disable_api => 0,
|
||||
|
||||
# Define a path to the upload directory, where the uploaded images will be stored
|
||||
# You can define it relative to lutim directory or set an absolute path
|
||||
# The path is stored in database for each uploaded file, so you’ll need to do some
|
||||
# SQL commands if you change the upload_dir after getting images uploaded.
|
||||
# Remember that it has to be in a directory writable by Lutim user
|
||||
# optional, default is 'files'
|
||||
#upload_dir => 'files',
|
||||
|
||||
# choose what database you want to use
|
||||
# valid choices are sqlite and postgresql (all lowercase)
|
||||
# optional, default is sqlite
|
||||
@@ -189,29 +159,6 @@
|
||||
# }
|
||||
#},
|
||||
|
||||
# set `ldap` if you want that only authenticated users can shorten URLs
|
||||
# please note that everybody can still use shortend URLs
|
||||
# optional, no default
|
||||
#ldap => {
|
||||
# uri => 'ldaps://ldap.example.org', # server URI
|
||||
# user_tree => 'ou=users,dc=example,dc=org', # search base DN
|
||||
# bind_dn => 'uid=ldap_user,ou=users,dc=example,dc=org', # search bind DN
|
||||
# bind_pwd => 'secr3t', # search bind password
|
||||
# user_attr => 'uid', # user attribute (uid, mail, sAMAccountName, etc.)
|
||||
# user_filter => '(!(uid=ldap_user))', # user filter (to exclude some users, etc.)
|
||||
#},
|
||||
|
||||
# set `htpasswd` if you want to use an htpasswd file instead of ldap
|
||||
# create the file with `htpasswd -c lutim.passwd user`, update it with `htpasswd lutim.passwd user2`
|
||||
# make sure that lutim can read the file!
|
||||
# optional, no default
|
||||
#htpasswd => 'lutim.passwd',
|
||||
|
||||
# if you've set ldap or htpasswd above, the session will last `session_duration` seconds before
|
||||
# the user needs to reauthenticate
|
||||
# optional, default is 3600
|
||||
#session_duration => 3600,
|
||||
|
||||
# disable counters of images
|
||||
# set to 1 to disable counters
|
||||
# optional, counters are enabled by default
|
||||
@@ -247,7 +194,7 @@
|
||||
# array of memcached servers to cache URL in order to accelerate responses to often-viewed URL.
|
||||
# If set to [], the use of memcached is disabled.
|
||||
# If you use memcached, the internal cache (see cache_max_size option above) will not be used.
|
||||
# Please see https://framagit.org/fiat-tux/hat-softwares/lutim/-/wikis/memcached to know how to configure your memcached
|
||||
# Please see https://framagit.org/luc/lutim/wikis/memcached to know how to configure your memcached
|
||||
# servers.
|
||||
# exemple of valid value: ['127.0.0.1:11211']
|
||||
# optional, default is []
|
||||
@@ -258,7 +205,7 @@
|
||||
# optional, default is 0
|
||||
#quiet_logs => 0,
|
||||
|
||||
# Content-Security-Policy header that will be sent by Lutim
|
||||
# Content-Security-Policy header that will be sent by Lstu
|
||||
# Set to '' to disable CSP header
|
||||
# https://content-security-policy.com/ provides a good documentation about CSP.
|
||||
# https://report-uri.com/home/generate provides a tool to generate a CSP header.
|
||||
@@ -268,7 +215,7 @@
|
||||
# the default value is good for `default` theme
|
||||
#csp => "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'",
|
||||
|
||||
# X-Frame-Options header that will be sent by Lutim
|
||||
# X-Frame-Options header that will be sent by Lstu
|
||||
# Valid values are: 'DENY', 'SAMEORIGIN', 'ALLOW-FROM https://example.com/'
|
||||
# Set to '' to disable X-Frame-Options header
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
|
||||
@@ -277,22 +224,18 @@
|
||||
# optional, default is 'DENY'
|
||||
#x_frame_options => 'DENY',
|
||||
|
||||
# X-Content-Type-Options that will be sent by Lutim
|
||||
# X-Content-Type-Options that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
|
||||
# Set to '' to disable X-Content-Type-Options header
|
||||
# optional, default is 'nosniff'
|
||||
#x_content_type_options => 'nosniff',
|
||||
|
||||
# X-XSS-Protection that will be sent by Lutim
|
||||
# X-XSS-Protection that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
|
||||
# Set to '' to disable X-XSS-Protection header
|
||||
# optional, default is '1; mode=block'
|
||||
#x_xss_protection => '1; mode=block',
|
||||
|
||||
# if set, the uploaded images will use this domain
|
||||
# optional
|
||||
#fixed_domain => 'example.org',
|
||||
|
||||
##########################
|
||||
# Lutim cron jobs settings
|
||||
##########################
|
||||
|
||||
@@ -49,6 +49,11 @@
|
||||
# optional, default is 5
|
||||
#anti_flood_delay => 5,
|
||||
|
||||
# twitter account which will appear on twitter cards
|
||||
# see https://dev.twitter.com/docs/cards/validation/validator to register your Lutim instance on twitter
|
||||
# optional, default is @framasky
|
||||
#tweet_card_via => '@framasky',
|
||||
|
||||
# max image size, in octets
|
||||
# you can write it 10*1024*1024
|
||||
# optional, default is 10485760
|
||||
@@ -97,29 +102,6 @@
|
||||
# optional, default is 0
|
||||
#always_encrypt => 0,
|
||||
|
||||
# you can allow to use a watermark on the uploaded images (or enforce its use)
|
||||
# define a path to the watermark image (provide an image with alpha channel)
|
||||
# you can define the path relative to lutim directory or set an absolute path
|
||||
# to disable the usage of a watermark, leave it blank or commented
|
||||
# optional, no default
|
||||
#watermark_path => '',
|
||||
|
||||
# the watermark can be a tiling one or a single one
|
||||
# when using a small one, you can choose where to place it
|
||||
# valid values are 'Center', 'North', 'NorthEast', 'East', 'SouthEast', 'South', 'SouthWest', 'West' and 'NorthWest' (case insensitive)
|
||||
# optional, default is 'SouthEast'
|
||||
#watermark_placement => 'SouthEast',
|
||||
|
||||
# choose which watermark (tiling, single or none) should be used by default
|
||||
# valid values are 'tiling', 'single' or 'none' (case insensitive)
|
||||
# optional, default is 'none'
|
||||
#watermark_default => 'none',
|
||||
|
||||
# choose which watermark (tiling, single or none) should be enforced (users will always have a watermark and won’t be able to disable it)
|
||||
# valid values are 'tiling', 'single' or 'none' (case insensitive)
|
||||
# optional, default is 'none'
|
||||
#watermark_enforce => 'none',
|
||||
|
||||
# length of the image's delete token
|
||||
# optional, default is 24
|
||||
#token_length => 24,
|
||||
@@ -130,18 +112,6 @@
|
||||
# optional, defaut is /
|
||||
#prefix => '/',
|
||||
|
||||
# if set to 1, Lutim will try to prevent its use without using the web interface
|
||||
# optional, default is 0
|
||||
#disable_api => 0,
|
||||
|
||||
# Define a path to the upload directory, where the uploaded images will be stored
|
||||
# You can define it relative to lutim directory or set an absolute path
|
||||
# The path is stored in database for each uploaded file, so you’ll need to do some
|
||||
# SQL commands if you change the upload_dir after getting images uploaded.
|
||||
# Remember that it has to be in a directory writable by Lutim user
|
||||
# optional, default is 'files'
|
||||
#upload_dir => 'files',
|
||||
|
||||
# choose what database you want to use
|
||||
# valid choices are sqlite and postgresql (all lowercase)
|
||||
# optional, default is sqlite
|
||||
@@ -189,29 +159,6 @@
|
||||
# }
|
||||
},
|
||||
|
||||
# set `ldap` if you want that only authenticated users can shorten URLs
|
||||
# please note that everybody can still use shortend URLs
|
||||
# optional, no default
|
||||
#ldap => {
|
||||
# uri => 'ldaps://ldap.example.org', # server URI
|
||||
# user_tree => 'ou=users,dc=example,dc=org', # search base DN
|
||||
# bind_dn => 'uid=ldap_user,ou=users,dc=example,dc=org', # search bind DN
|
||||
# bind_pwd => 'secr3t', # search bind password
|
||||
# user_attr => 'uid', # user attribute (uid, mail, sAMAccountName, etc.)
|
||||
# user_filter => '(!(uid=ldap_user))', # user filter (to exclude some users, etc.)
|
||||
#},
|
||||
|
||||
# set `htpasswd` if you want to use an htpasswd file instead of ldap
|
||||
# create the file with `htpasswd -c lutim.passwd user`, update it with `htpasswd lutim.passwd user2`
|
||||
# make sure that lutim can read the file!
|
||||
# optional, no default
|
||||
#htpasswd => 'lutim.passwd',
|
||||
|
||||
# if you've set ldap or htpasswd above, the session will last `session_duration` seconds before
|
||||
# the user needs to reauthenticate
|
||||
# optional, default is 3600
|
||||
#session_duration => 3600,
|
||||
|
||||
# disable counters of images
|
||||
# set to 1 to disable counters
|
||||
# optional, counters are enabled by default
|
||||
@@ -247,7 +194,7 @@
|
||||
# array of memcached servers to cache URL in order to accelerate responses to often-viewed URL.
|
||||
# If set to [], the use of memcached is disabled.
|
||||
# If you use memcached, the internal cache (see cache_max_size option above) will not be used.
|
||||
# Please see https://framagit.org/fiat-tux/hat-softwares/lutim/-/wikis/memcached to know how to configure your memcached
|
||||
# Please see https://framagit.org/luc/lutim/wikis/memcached to know how to configure your memcached
|
||||
# servers.
|
||||
# exemple of valid value: ['127.0.0.1:11211']
|
||||
# optional, default is []
|
||||
@@ -258,7 +205,7 @@
|
||||
# optional, default is 0
|
||||
#quiet_logs => 0,
|
||||
|
||||
# Content-Security-Policy header that will be sent by Lutim
|
||||
# Content-Security-Policy header that will be sent by Lstu
|
||||
# Set to '' to disable CSP header
|
||||
# https://content-security-policy.com/ provides a good documentation about CSP.
|
||||
# https://report-uri.com/home/generate provides a tool to generate a CSP header.
|
||||
@@ -268,7 +215,7 @@
|
||||
# the default value is good for `default` theme
|
||||
#csp => "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'",
|
||||
|
||||
# X-Frame-Options header that will be sent by Lutim
|
||||
# X-Frame-Options header that will be sent by Lstu
|
||||
# Valid values are: 'DENY', 'SAMEORIGIN', 'ALLOW-FROM https://example.com/'
|
||||
# Set to '' to disable X-Frame-Options header
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
|
||||
@@ -277,22 +224,18 @@
|
||||
# optional, default is 'DENY'
|
||||
#x_frame_options => 'DENY',
|
||||
|
||||
# X-Content-Type-Options that will be sent by Lutim
|
||||
# X-Content-Type-Options that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
|
||||
# Set to '' to disable X-Content-Type-Options header
|
||||
# optional, default is 'nosniff'
|
||||
#x_content_type_options => 'nosniff',
|
||||
|
||||
# X-XSS-Protection that will be sent by Lutim
|
||||
# X-XSS-Protection that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
|
||||
# Set to '' to disable X-XSS-Protection header
|
||||
# optional, default is '1; mode=block'
|
||||
#x_xss_protection => '1; mode=block',
|
||||
|
||||
# if set, the uploaded images will use this domain
|
||||
# optional
|
||||
#fixed_domain => 'example.org',
|
||||
|
||||
##########################
|
||||
# Lutim cron jobs settings
|
||||
##########################
|
||||
|
||||
@@ -49,6 +49,11 @@
|
||||
# optional, default is 5
|
||||
#anti_flood_delay => 5,
|
||||
|
||||
# twitter account which will appear on twitter cards
|
||||
# see https://dev.twitter.com/docs/cards/validation/validator to register your Lutim instance on twitter
|
||||
# optional, default is @framasky
|
||||
#tweet_card_via => '@framasky',
|
||||
|
||||
# max image size, in octets
|
||||
# you can write it 10*1024*1024
|
||||
# optional, default is 10485760
|
||||
@@ -97,29 +102,6 @@
|
||||
# optional, default is 0
|
||||
#always_encrypt => 0,
|
||||
|
||||
# you can allow to use a watermark on the uploaded images (or enforce its use)
|
||||
# define a path to the watermark image (provide an image with alpha channel)
|
||||
# you can define the path relative to lutim directory or set an absolute path
|
||||
# to disable the usage of a watermark, leave it blank or commented
|
||||
# optional, no default
|
||||
#watermark_path => '',
|
||||
|
||||
# the watermark can be a tiling one or a single one
|
||||
# when using a small one, you can choose where to place it
|
||||
# valid values are 'Center', 'North', 'NorthEast', 'East', 'SouthEast', 'South', 'SouthWest', 'West' and 'NorthWest' (case insensitive)
|
||||
# optional, default is 'SouthEast'
|
||||
#watermark_placement => 'SouthEast',
|
||||
|
||||
# choose which watermark (tiling, single or none) should be used by default
|
||||
# valid values are 'tiling', 'single' or 'none' (case insensitive)
|
||||
# optional, default is 'none'
|
||||
#watermark_default => 'none',
|
||||
|
||||
# choose which watermark (tiling, single or none) should be enforced (users will always have a watermark and won’t be able to disable it)
|
||||
# valid values are 'tiling', 'single' or 'none' (case insensitive)
|
||||
# optional, default is 'none'
|
||||
#watermark_enforce => 'none',
|
||||
|
||||
# length of the image's delete token
|
||||
# optional, default is 24
|
||||
#token_length => 24,
|
||||
@@ -130,18 +112,6 @@
|
||||
# optional, defaut is /
|
||||
#prefix => '/',
|
||||
|
||||
# if set to 1, Lutim will try to prevent its use without using the web interface
|
||||
# optional, default is 0
|
||||
#disable_api => 0,
|
||||
|
||||
# Define a path to the upload directory, where the uploaded images will be stored
|
||||
# You can define it relative to lutim directory or set an absolute path
|
||||
# The path is stored in database for each uploaded file, so you’ll need to do some
|
||||
# SQL commands if you change the upload_dir after getting images uploaded.
|
||||
# Remember that it has to be in a directory writable by Lutim user
|
||||
# optional, default is 'files'
|
||||
#upload_dir => 'files',
|
||||
|
||||
# choose what database you want to use
|
||||
# valid choices are sqlite and postgresql (all lowercase)
|
||||
# optional, default is sqlite
|
||||
@@ -224,7 +194,7 @@
|
||||
# array of memcached servers to cache URL in order to accelerate responses to often-viewed URL.
|
||||
# If set to [], the use of memcached is disabled.
|
||||
# If you use memcached, the internal cache (see cache_max_size option above) will not be used.
|
||||
# Please see https://framagit.org/fiat-tux/hat-softwares/lutim/-/wikis/memcached to know how to configure your memcached
|
||||
# Please see https://framagit.org/luc/lutim/wikis/memcached to know how to configure your memcached
|
||||
# servers.
|
||||
# exemple of valid value: ['127.0.0.1:11211']
|
||||
# optional, default is []
|
||||
@@ -235,7 +205,7 @@
|
||||
# optional, default is 0
|
||||
#quiet_logs => 0,
|
||||
|
||||
# Content-Security-Policy header that will be sent by Lutim
|
||||
# Content-Security-Policy header that will be sent by Lstu
|
||||
# Set to '' to disable CSP header
|
||||
# https://content-security-policy.com/ provides a good documentation about CSP.
|
||||
# https://report-uri.com/home/generate provides a tool to generate a CSP header.
|
||||
@@ -245,7 +215,7 @@
|
||||
# the default value is good for `default` theme
|
||||
#csp => "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'",
|
||||
|
||||
# X-Frame-Options header that will be sent by Lutim
|
||||
# X-Frame-Options header that will be sent by Lstu
|
||||
# Valid values are: 'DENY', 'SAMEORIGIN', 'ALLOW-FROM https://example.com/'
|
||||
# Set to '' to disable X-Frame-Options header
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
|
||||
@@ -254,22 +224,18 @@
|
||||
# optional, default is 'DENY'
|
||||
#x_frame_options => 'DENY',
|
||||
|
||||
# X-Content-Type-Options that will be sent by Lutim
|
||||
# X-Content-Type-Options that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
|
||||
# Set to '' to disable X-Content-Type-Options header
|
||||
# optional, default is 'nosniff'
|
||||
#x_content_type_options => 'nosniff',
|
||||
|
||||
# X-XSS-Protection that will be sent by Lutim
|
||||
# X-XSS-Protection that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
|
||||
# Set to '' to disable X-XSS-Protection header
|
||||
# optional, default is '1; mode=block'
|
||||
#x_xss_protection => '1; mode=block',
|
||||
|
||||
# if set, the uploaded images will use this domain
|
||||
# optional
|
||||
#fixed_domain => 'example.org',
|
||||
|
||||
##########################
|
||||
# Lutim cron jobs settings
|
||||
##########################
|
||||
|
||||
@@ -49,6 +49,11 @@
|
||||
# optional, default is 5
|
||||
#anti_flood_delay => 5,
|
||||
|
||||
# twitter account which will appear on twitter cards
|
||||
# see https://dev.twitter.com/docs/cards/validation/validator to register your Lutim instance on twitter
|
||||
# optional, default is @framasky
|
||||
#tweet_card_via => '@framasky',
|
||||
|
||||
# max image size, in octets
|
||||
# you can write it 10*1024*1024
|
||||
# optional, default is 10485760
|
||||
@@ -97,29 +102,6 @@
|
||||
# optional, default is 0
|
||||
#always_encrypt => 0,
|
||||
|
||||
# you can allow to use a watermark on the uploaded images (or enforce its use)
|
||||
# define a path to the watermark image (provide an image with alpha channel)
|
||||
# you can define the path relative to lutim directory or set an absolute path
|
||||
# to disable the usage of a watermark, leave it blank or commented
|
||||
# optional, no default
|
||||
#watermark_path => '',
|
||||
|
||||
# the watermark can be a tiling one or a single one
|
||||
# when using a small one, you can choose where to place it
|
||||
# valid values are 'Center', 'North', 'NorthEast', 'East', 'SouthEast', 'South', 'SouthWest', 'West' and 'NorthWest' (case insensitive)
|
||||
# optional, default is 'SouthEast'
|
||||
#watermark_placement => 'SouthEast',
|
||||
|
||||
# choose which watermark (tiling, single or none) should be used by default
|
||||
# valid values are 'tiling', 'single' or 'none' (case insensitive)
|
||||
# optional, default is 'none'
|
||||
#watermark_default => 'none',
|
||||
|
||||
# choose which watermark (tiling, single or none) should be enforced (users will always have a watermark and won’t be able to disable it)
|
||||
# valid values are 'tiling', 'single' or 'none' (case insensitive)
|
||||
# optional, default is 'none'
|
||||
#watermark_enforce => 'none',
|
||||
|
||||
# length of the image's delete token
|
||||
# optional, default is 24
|
||||
#token_length => 24,
|
||||
@@ -130,18 +112,6 @@
|
||||
# optional, defaut is /
|
||||
#prefix => '/',
|
||||
|
||||
# if set to 1, Lutim will try to prevent its use without using the web interface
|
||||
# optional, default is 0
|
||||
#disable_api => 0,
|
||||
|
||||
# Define a path to the upload directory, where the uploaded images will be stored
|
||||
# You can define it relative to lutim directory or set an absolute path
|
||||
# The path is stored in database for each uploaded file, so you’ll need to do some
|
||||
# SQL commands if you change the upload_dir after getting images uploaded.
|
||||
# Remember that it has to be in a directory writable by Lutim user
|
||||
# optional, default is 'files'
|
||||
#upload_dir => 'files',
|
||||
|
||||
# choose what database you want to use
|
||||
# valid choices are sqlite and postgresql (all lowercase)
|
||||
# optional, default is sqlite
|
||||
@@ -189,29 +159,6 @@
|
||||
# }
|
||||
#},
|
||||
|
||||
# set `ldap` if you want that only authenticated users can shorten URLs
|
||||
# please note that everybody can still use shortend URLs
|
||||
# optional, no default
|
||||
#ldap => {
|
||||
# uri => 'ldaps://ldap.example.org', # server URI
|
||||
# user_tree => 'ou=users,dc=example,dc=org', # search base DN
|
||||
# bind_dn => 'uid=ldap_user,ou=users,dc=example,dc=org', # search bind DN
|
||||
# bind_pwd => 'secr3t', # search bind password
|
||||
# user_attr => 'uid', # user attribute (uid, mail, sAMAccountName, etc.)
|
||||
# user_filter => '(!(uid=ldap_user))', # user filter (to exclude some users, etc.)
|
||||
#},
|
||||
|
||||
# set `htpasswd` if you want to use an htpasswd file instead of ldap
|
||||
# create the file with `htpasswd -c lutim.passwd user`, update it with `htpasswd lutim.passwd user2`
|
||||
# make sure that lutim can read the file!
|
||||
# optional, no default
|
||||
#htpasswd => 'lutim.passwd',
|
||||
|
||||
# if you've set ldap or htpasswd above, the session will last `session_duration` seconds before
|
||||
# the user needs to reauthenticate
|
||||
# optional, default is 3600
|
||||
#session_duration => 3600,
|
||||
|
||||
# disable counters of images
|
||||
# set to 1 to disable counters
|
||||
# optional, counters are enabled by default
|
||||
@@ -247,7 +194,7 @@
|
||||
# array of memcached servers to cache URL in order to accelerate responses to often-viewed URL.
|
||||
# If set to [], the use of memcached is disabled.
|
||||
# If you use memcached, the internal cache (see cache_max_size option above) will not be used.
|
||||
# Please see https://framagit.org/fiat-tux/hat-softwares/lutim/-/wikis/memcached to know how to configure your memcached
|
||||
# Please see https://framagit.org/luc/lutim/wikis/memcached to know how to configure your memcached
|
||||
# servers.
|
||||
# exemple of valid value: ['127.0.0.1:11211']
|
||||
# optional, default is []
|
||||
@@ -258,7 +205,7 @@
|
||||
# optional, default is 0
|
||||
#quiet_logs => 0,
|
||||
|
||||
# Content-Security-Policy header that will be sent by Lutim
|
||||
# Content-Security-Policy header that will be sent by Lstu
|
||||
# Set to '' to disable CSP header
|
||||
# https://content-security-policy.com/ provides a good documentation about CSP.
|
||||
# https://report-uri.com/home/generate provides a tool to generate a CSP header.
|
||||
@@ -268,7 +215,7 @@
|
||||
# the default value is good for `default` theme
|
||||
#csp => "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'",
|
||||
|
||||
# X-Frame-Options header that will be sent by Lutim
|
||||
# X-Frame-Options header that will be sent by Lstu
|
||||
# Valid values are: 'DENY', 'SAMEORIGIN', 'ALLOW-FROM https://example.com/'
|
||||
# Set to '' to disable X-Frame-Options header
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
|
||||
@@ -277,22 +224,18 @@
|
||||
# optional, default is 'DENY'
|
||||
#x_frame_options => 'DENY',
|
||||
|
||||
# X-Content-Type-Options that will be sent by Lutim
|
||||
# X-Content-Type-Options that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
|
||||
# Set to '' to disable X-Content-Type-Options header
|
||||
# optional, default is 'nosniff'
|
||||
#x_content_type_options => 'nosniff',
|
||||
|
||||
# X-XSS-Protection that will be sent by Lutim
|
||||
# X-XSS-Protection that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
|
||||
# Set to '' to disable X-XSS-Protection header
|
||||
# optional, default is '1; mode=block'
|
||||
#x_xss_protection => '1; mode=block',
|
||||
|
||||
# if set, the uploaded images will use this domain
|
||||
# optional
|
||||
#fixed_domain => 'example.org',
|
||||
|
||||
##########################
|
||||
# Lutim cron jobs settings
|
||||
##########################
|
||||
|
||||
@@ -49,6 +49,11 @@
|
||||
# optional, default is 5
|
||||
#anti_flood_delay => 5,
|
||||
|
||||
# twitter account which will appear on twitter cards
|
||||
# see https://dev.twitter.com/docs/cards/validation/validator to register your Lutim instance on twitter
|
||||
# optional, default is @framasky
|
||||
#tweet_card_via => '@framasky',
|
||||
|
||||
# max image size, in octets
|
||||
# you can write it 10*1024*1024
|
||||
# optional, default is 10485760
|
||||
@@ -97,29 +102,6 @@
|
||||
# optional, default is 0
|
||||
#always_encrypt => 0,
|
||||
|
||||
# you can allow to use a watermark on the uploaded images (or enforce its use)
|
||||
# define a path to the watermark image (provide an image with alpha channel)
|
||||
# you can define the path relative to lutim directory or set an absolute path
|
||||
# to disable the usage of a watermark, leave it blank or commented
|
||||
# optional, no default
|
||||
#watermark_path => '',
|
||||
|
||||
# the watermark can be a tiling one or a single one
|
||||
# when using a small one, you can choose where to place it
|
||||
# valid values are 'Center', 'North', 'NorthEast', 'East', 'SouthEast', 'South', 'SouthWest', 'West' and 'NorthWest' (case insensitive)
|
||||
# optional, default is 'SouthEast'
|
||||
#watermark_placement => 'SouthEast',
|
||||
|
||||
# choose which watermark (tiling, single or none) should be used by default
|
||||
# valid values are 'tiling', 'single' or 'none' (case insensitive)
|
||||
# optional, default is 'none'
|
||||
#watermark_default => 'none',
|
||||
|
||||
# choose which watermark (tiling, single or none) should be enforced (users will always have a watermark and won’t be able to disable it)
|
||||
# valid values are 'tiling', 'single' or 'none' (case insensitive)
|
||||
# optional, default is 'none'
|
||||
#watermark_enforce => 'none',
|
||||
|
||||
# length of the image's delete token
|
||||
# optional, default is 24
|
||||
#token_length => 24,
|
||||
@@ -130,18 +112,6 @@
|
||||
# optional, defaut is /
|
||||
#prefix => '/',
|
||||
|
||||
# if set to 1, Lutim will try to prevent its use without using the web interface
|
||||
# optional, default is 0
|
||||
#disable_api => 0,
|
||||
|
||||
# Define a path to the upload directory, where the uploaded images will be stored
|
||||
# You can define it relative to lutim directory or set an absolute path
|
||||
# The path is stored in database for each uploaded file, so you’ll need to do some
|
||||
# SQL commands if you change the upload_dir after getting images uploaded.
|
||||
# Remember that it has to be in a directory writable by Lutim user
|
||||
# optional, default is 'files'
|
||||
#upload_dir => 'files',
|
||||
|
||||
# choose what database you want to use
|
||||
# valid choices are sqlite and postgresql (all lowercase)
|
||||
# optional, default is sqlite
|
||||
@@ -189,29 +159,6 @@
|
||||
# }
|
||||
},
|
||||
|
||||
# set `ldap` if you want that only authenticated users can shorten URLs
|
||||
# please note that everybody can still use shortend URLs
|
||||
# optional, no default
|
||||
#ldap => {
|
||||
# uri => 'ldaps://ldap.example.org', # server URI
|
||||
# user_tree => 'ou=users,dc=example,dc=org', # search base DN
|
||||
# bind_dn => 'uid=ldap_user,ou=users,dc=example,dc=org', # search bind DN
|
||||
# bind_pwd => 'secr3t', # search bind password
|
||||
# user_attr => 'uid', # user attribute (uid, mail, sAMAccountName, etc.)
|
||||
# user_filter => '(!(uid=ldap_user))', # user filter (to exclude some users, etc.)
|
||||
#},
|
||||
|
||||
# set `htpasswd` if you want to use an htpasswd file instead of ldap
|
||||
# create the file with `htpasswd -c lutim.passwd user`, update it with `htpasswd lutim.passwd user2`
|
||||
# make sure that lutim can read the file!
|
||||
# optional, no default
|
||||
#htpasswd => 'lutim.passwd',
|
||||
|
||||
# if you've set ldap or htpasswd above, the session will last `session_duration` seconds before
|
||||
# the user needs to reauthenticate
|
||||
# optional, default is 3600
|
||||
#session_duration => 3600,
|
||||
|
||||
# disable counters of images
|
||||
# set to 1 to disable counters
|
||||
# optional, counters are enabled by default
|
||||
@@ -247,7 +194,7 @@
|
||||
# array of memcached servers to cache URL in order to accelerate responses to often-viewed URL.
|
||||
# If set to [], the use of memcached is disabled.
|
||||
# If you use memcached, the internal cache (see cache_max_size option above) will not be used.
|
||||
# Please see https://framagit.org/fiat-tux/hat-softwares/lutim/-/wikis/memcached to know how to configure your memcached
|
||||
# Please see https://framagit.org/luc/lutim/wikis/memcached to know how to configure your memcached
|
||||
# servers.
|
||||
# exemple of valid value: ['127.0.0.1:11211']
|
||||
# optional, default is []
|
||||
@@ -258,7 +205,7 @@
|
||||
# optional, default is 0
|
||||
#quiet_logs => 0,
|
||||
|
||||
# Content-Security-Policy header that will be sent by Lutim
|
||||
# Content-Security-Policy header that will be sent by Lstu
|
||||
# Set to '' to disable CSP header
|
||||
# https://content-security-policy.com/ provides a good documentation about CSP.
|
||||
# https://report-uri.com/home/generate provides a tool to generate a CSP header.
|
||||
@@ -268,7 +215,7 @@
|
||||
# the default value is good for `default` theme
|
||||
#csp => "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'",
|
||||
|
||||
# X-Frame-Options header that will be sent by Lutim
|
||||
# X-Frame-Options header that will be sent by Lstu
|
||||
# Valid values are: 'DENY', 'SAMEORIGIN', 'ALLOW-FROM https://example.com/'
|
||||
# Set to '' to disable X-Frame-Options header
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
|
||||
@@ -277,22 +224,18 @@
|
||||
# optional, default is 'DENY'
|
||||
#x_frame_options => 'DENY',
|
||||
|
||||
# X-Content-Type-Options that will be sent by Lutim
|
||||
# X-Content-Type-Options that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
|
||||
# Set to '' to disable X-Content-Type-Options header
|
||||
# optional, default is 'nosniff'
|
||||
#x_content_type_options => 'nosniff',
|
||||
|
||||
# X-XSS-Protection that will be sent by Lutim
|
||||
# X-XSS-Protection that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
|
||||
# Set to '' to disable X-XSS-Protection header
|
||||
# optional, default is '1; mode=block'
|
||||
#x_xss_protection => '1; mode=block',
|
||||
|
||||
# if set, the uploaded images will use this domain
|
||||
# optional
|
||||
#fixed_domain => 'example.org',
|
||||
|
||||
##########################
|
||||
# Lutim cron jobs settings
|
||||
##########################
|
||||
|
||||
@@ -49,6 +49,11 @@
|
||||
# optional, default is 5
|
||||
#anti_flood_delay => 5,
|
||||
|
||||
# twitter account which will appear on twitter cards
|
||||
# see https://dev.twitter.com/docs/cards/validation/validator to register your Lutim instance on twitter
|
||||
# optional, default is @framasky
|
||||
#tweet_card_via => '@framasky',
|
||||
|
||||
# max image size, in octets
|
||||
# you can write it 10*1024*1024
|
||||
# optional, default is 10485760
|
||||
@@ -97,29 +102,6 @@
|
||||
# optional, default is 0
|
||||
#always_encrypt => 0,
|
||||
|
||||
# you can allow to use a watermark on the uploaded images (or enforce its use)
|
||||
# define a path to the watermark image (provide an image with alpha channel)
|
||||
# you can define the path relative to lutim directory or set an absolute path
|
||||
# to disable the usage of a watermark, leave it blank or commented
|
||||
# optional, no default
|
||||
#watermark_path => '',
|
||||
|
||||
# the watermark can be a tiling one or a single one
|
||||
# when using a small one, you can choose where to place it
|
||||
# valid values are 'Center', 'North', 'NorthEast', 'East', 'SouthEast', 'South', 'SouthWest', 'West' and 'NorthWest' (case insensitive)
|
||||
# optional, default is 'SouthEast'
|
||||
#watermark_placement => 'SouthEast',
|
||||
|
||||
# choose which watermark (tiling, single or none) should be used by default
|
||||
# valid values are 'tiling', 'single' or 'none' (case insensitive)
|
||||
# optional, default is 'none'
|
||||
#watermark_default => 'none',
|
||||
|
||||
# choose which watermark (tiling, single or none) should be enforced (users will always have a watermark and won’t be able to disable it)
|
||||
# valid values are 'tiling', 'single' or 'none' (case insensitive)
|
||||
# optional, default is 'none'
|
||||
#watermark_enforce => 'none',
|
||||
|
||||
# length of the image's delete token
|
||||
# optional, default is 24
|
||||
#token_length => 24,
|
||||
@@ -130,18 +112,6 @@
|
||||
# optional, defaut is /
|
||||
#prefix => '/',
|
||||
|
||||
# if set to 1, Lutim will try to prevent its use without using the web interface
|
||||
# optional, default is 0
|
||||
#disable_api => 0,
|
||||
|
||||
# Define a path to the upload directory, where the uploaded images will be stored
|
||||
# You can define it relative to lutim directory or set an absolute path
|
||||
# The path is stored in database for each uploaded file, so you’ll need to do some
|
||||
# SQL commands if you change the upload_dir after getting images uploaded.
|
||||
# Remember that it has to be in a directory writable by Lutim user
|
||||
# optional, default is 'files'
|
||||
#upload_dir => 'files',
|
||||
|
||||
# choose what database you want to use
|
||||
# valid choices are sqlite and postgresql (all lowercase)
|
||||
# optional, default is sqlite
|
||||
@@ -224,7 +194,7 @@
|
||||
# array of memcached servers to cache URL in order to accelerate responses to often-viewed URL.
|
||||
# If set to [], the use of memcached is disabled.
|
||||
# If you use memcached, the internal cache (see cache_max_size option above) will not be used.
|
||||
# Please see https://framagit.org/fiat-tux/hat-softwares/lutim/-/wikis/memcached to know how to configure your memcached
|
||||
# Please see https://framagit.org/luc/lutim/wikis/memcached to know how to configure your memcached
|
||||
# servers.
|
||||
# exemple of valid value: ['127.0.0.1:11211']
|
||||
# optional, default is []
|
||||
@@ -235,7 +205,7 @@
|
||||
# optional, default is 0
|
||||
#quiet_logs => 0,
|
||||
|
||||
# Content-Security-Policy header that will be sent by Lutim
|
||||
# Content-Security-Policy header that will be sent by Lstu
|
||||
# Set to '' to disable CSP header
|
||||
# https://content-security-policy.com/ provides a good documentation about CSP.
|
||||
# https://report-uri.com/home/generate provides a tool to generate a CSP header.
|
||||
@@ -245,7 +215,7 @@
|
||||
# the default value is good for `default` theme
|
||||
#csp => "base-uri 'self'; connect-src 'self'; default-src 'none'; font-src 'self'; form-action 'self'; img-src 'self' data:; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'",
|
||||
|
||||
# X-Frame-Options header that will be sent by Lutim
|
||||
# X-Frame-Options header that will be sent by Lstu
|
||||
# Valid values are: 'DENY', 'SAMEORIGIN', 'ALLOW-FROM https://example.com/'
|
||||
# Set to '' to disable X-Frame-Options header
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
|
||||
@@ -254,22 +224,18 @@
|
||||
# optional, default is 'DENY'
|
||||
#x_frame_options => 'DENY',
|
||||
|
||||
# X-Content-Type-Options that will be sent by Lutim
|
||||
# X-Content-Type-Options that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
|
||||
# Set to '' to disable X-Content-Type-Options header
|
||||
# optional, default is 'nosniff'
|
||||
#x_content_type_options => 'nosniff',
|
||||
|
||||
# X-XSS-Protection that will be sent by Lutim
|
||||
# X-XSS-Protection that will be sent by Lstu
|
||||
# See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
|
||||
# Set to '' to disable X-XSS-Protection header
|
||||
# optional, default is '1; mode=block'
|
||||
#x_xss_protection => '1; mode=block',
|
||||
|
||||
# if set, the uploaded images will use this domain
|
||||
# optional
|
||||
#fixed_domain => 'example.org',
|
||||
|
||||
##########################
|
||||
# Lutim cron jobs settings
|
||||
##########################
|
||||
|
||||
6
t/test.t
@@ -81,7 +81,7 @@ $t->get_ok('/css/lutim.css')
|
||||
# Instance settings informations
|
||||
$t->get_ok('/infos')
|
||||
->status_is(200)
|
||||
->json_has('/image_magick')
|
||||
->json_has('image_magick')
|
||||
->json_is(
|
||||
'/always_encrypt' => false,
|
||||
'/broadcast_message' => 'test broadcast message',
|
||||
@@ -96,7 +96,7 @@ $t->get_ok('/infos')
|
||||
my $image = Mojo::File->new($Bin, '..', 'themes', 'default', 'public', 'img', 'Lutim.png')->to_string;
|
||||
$t->post_ok('/' => form => { file => { file => $image }, format => 'json' })
|
||||
->status_is(200)
|
||||
->json_has('/msg', '/success')
|
||||
->json_has('msg', 'success')
|
||||
->json_is('/success' => true, '/msg/filename' => 'Lutim.png')
|
||||
->json_like('/msg/short' => qr#[-_a-zA-Z0-9]{8}#, '/msg/real_short' => qr#[-_a-zA-Z0-9]{8}#, '/msg/token' => qr#[-_a-zA-Z0-9]{24}#);
|
||||
|
||||
@@ -138,7 +138,7 @@ my $token = $raw->json('/msg/token');
|
||||
$t->get_ok('/'.$rshort)
|
||||
->status_is(200);
|
||||
|
||||
$t->get_ok('/d/'.$rshort.'/'.$token, form => { _format => 'json' })
|
||||
$t->get_ok('/d/'.$rshort.'/'.$token, form => { format => 'json' })
|
||||
->status_is('200')
|
||||
->json_is(
|
||||
{
|
||||
|
||||
@@ -265,8 +265,12 @@ msgid "Is it really free (as in free beer)?"
|
||||
msgstr "هل هو مجاني (كما في عبارة مشروب مجاني) ؟"
|
||||
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid "The way you pronounce the French word <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr "يُنطق مِثل الكلمة الفرنسية <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgid ""
|
||||
"Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/"
|
||||
"wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
"يُنطق مِثل الكلمة الفرنسية <a href=\"https://fr.wikipedia.org/wiki/"
|
||||
"Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:202
|
||||
msgid "Keep EXIF tags"
|
||||
|
||||
@@ -12,8 +12,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: 2022-12-24 17:38+0000\n"
|
||||
"Last-Translator: Vri <vrifox@vrifox.cc>\n"
|
||||
"PO-Revision-Date: 2020-03-09 16:23+0000\n"
|
||||
"Last-Translator: Luc Didry <luc@framasoft.org>\n"
|
||||
"Language-Team: German <https://weblate.framasoft.org/projects/lutim/"
|
||||
"default-theme/de/>\n"
|
||||
"Language: de\n"
|
||||
@@ -21,7 +21,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.14.1\n"
|
||||
"X-Generator: Weblate 3.11.2\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
@@ -65,8 +65,9 @@ msgid "An error occured while downloading the image."
|
||||
msgstr "Beim Herunterladen des Bildes ist ein Fehler aufgetreten."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:2
|
||||
#, fuzzy
|
||||
msgid "Archives download"
|
||||
msgstr "Herunterladen von Archiv"
|
||||
msgstr "Archiv-Download"
|
||||
|
||||
#: themes/default/templates/about.html.ep:44 themes/default/templates/myfiles.html.ep:135 themes/default/templates/stats.html.ep:25
|
||||
msgid "Back to homepage"
|
||||
@@ -106,11 +107,11 @@ msgstr "Zähler"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:18
|
||||
msgid "Delay repartition chart for disabled images"
|
||||
msgstr "Diagramm zur Neuaufteilung der Verzögerung für deaktivierte Bilder"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/stats.html.ep:15
|
||||
msgid "Delay repartition chart for enabled images"
|
||||
msgstr "Diagramm zur Neuaufteilung der Verzögerung für deaktivierte Bilder"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:133 themes/default/templates/index.html.ep:165 themes/default/templates/index.html.ep:196 themes/default/templates/myfiles.html.ep:124 themes/default/templates/myfiles.html.ep:45 themes/default/templates/partial/lutim.js.ep:161
|
||||
msgid "Delete at first view?"
|
||||
@@ -161,7 +162,7 @@ msgstr "Verschlüssle das Bild (Lutim behält den Key nicht)."
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:45 themes/default/templates/partial/myfiles.js.ep:113
|
||||
msgid "Error while trying to modify the image."
|
||||
msgstr "Beim Bearbeiten des Bildes ist ein Fehler aufgetreten."
|
||||
msgstr "Beim bearbeiten des Bildes ist ein Fehler aufgetreten."
|
||||
|
||||
#: themes/default/templates/stats.html.ep:10
|
||||
msgid "Evolution of total files"
|
||||
@@ -173,7 +174,7 @@ msgstr "Läuft ab am"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:112
|
||||
msgid "Export localStorage data"
|
||||
msgstr "localStorage-Daten exportieren"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:121
|
||||
msgid "File name"
|
||||
@@ -189,7 +190,7 @@ msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:80
|
||||
msgid "Fork me!"
|
||||
msgstr "Fork mich!"
|
||||
msgstr "Fork me!"
|
||||
|
||||
#: themes/default/templates/index.html.ep:10 themes/default/templates/index.html.ep:13 themes/default/templates/myfiles.html.ep:60 themes/default/templates/myfiles.html.ep:63
|
||||
msgid "Gallery link"
|
||||
@@ -229,7 +230,7 @@ msgstr "Bild-URL"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:153 themes/default/templates/raw.html.ep:2
|
||||
msgid "Image delay"
|
||||
msgstr "Bild-Verzögerung"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:157
|
||||
msgid "Image deleted"
|
||||
@@ -241,7 +242,7 @@ msgstr "Bild nicht gefunden."
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:113
|
||||
msgid "Import localStorage data"
|
||||
msgstr "localStorage-Daten importieren"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:69
|
||||
msgid "Informations"
|
||||
@@ -264,8 +265,12 @@ msgid "Is it really free (as in free beer)?"
|
||||
msgstr "Is es wirklich kostenlos?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid "The way you pronounce the French word <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr "Genauso wie das französische Wort <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgid ""
|
||||
"Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/"
|
||||
"wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
"Genauso wie das französische Wort <a href=\"https://fr.wikipedia.org/wiki/"
|
||||
"Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:202
|
||||
msgid "Keep EXIF tags"
|
||||
@@ -289,11 +294,11 @@ msgstr "Links zum teilen auf sozialen Netzwerken"
|
||||
|
||||
#: themes/default/templates/login.html.ep:8
|
||||
msgid "Login"
|
||||
msgstr "Anmelden"
|
||||
msgstr "Login"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:33
|
||||
msgid "Logout"
|
||||
msgstr "Abmelden"
|
||||
msgstr "Ausloggen"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:7
|
||||
msgid ""
|
||||
@@ -330,7 +335,7 @@ msgstr "Meine Bilder"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:45
|
||||
msgid "Next (arrow right)"
|
||||
msgstr "Nächstes (rechte Pfeiltaste)"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:105 themes/default/templates/partial/myfiles.js.ep:132
|
||||
msgid "No limit"
|
||||
@@ -381,7 +386,7 @@ msgstr ""
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:43
|
||||
msgid "Previous (arrow left)"
|
||||
msgstr "Vorheriges (linke Pfeiltaste)"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:46 themes/default/templates/index.html.ep:49 themes/default/templates/myfiles.html.ep:96 themes/default/templates/myfiles.html.ep:99
|
||||
msgid "Random image link"
|
||||
@@ -389,7 +394,7 @@ msgstr "Zufälliger Bildlink"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:22
|
||||
msgid "Raw stats"
|
||||
msgstr "Rohe Statistiken"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:52
|
||||
msgid "Save changes"
|
||||
@@ -401,7 +406,7 @@ msgstr "Sende ein Bild"
|
||||
|
||||
#: themes/default/templates/login.html.ep:16 themes/default/templates/logout.html.ep:5 themes/default/templates/partial/navbar.html.ep:37
|
||||
msgid "Signin"
|
||||
msgstr "Anmelden"
|
||||
msgstr "Einloggen"
|
||||
|
||||
#: themes/default/templates/index.html.ep:151 themes/default/templates/partial/gallery.js.ep:211 themes/default/templates/partial/lutim.js.ep:176
|
||||
msgid "Something bad happened"
|
||||
@@ -459,12 +464,10 @@ msgid ""
|
||||
"The automatic download process will open a tab in your browser for each link."
|
||||
" You need to allow popups for Lutim."
|
||||
msgstr ""
|
||||
"Das automatische Herunterladen wird für jeden Link einen neuen Tab in deinem "
|
||||
"Browser öffnen. Du musst Pop-Ups für Lutim erlauben."
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:32
|
||||
msgid "The data has been successfully imported."
|
||||
msgstr "Die Daten wurden erfolgreich importiert."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:160 lib/Lutim/Controller/Image.pm:228
|
||||
msgid "The delete token is invalid."
|
||||
@@ -515,7 +518,7 @@ msgstr "Die Zeit bis zum Löschen des Bildes wurde erfolgreich geändert"
|
||||
|
||||
#: themes/default/templates/partial/gallery.js.ep:277
|
||||
msgid "There is XXXX image(s) in the gallery"
|
||||
msgstr "Es gibt XXXX Bild(er) in der Galerie"
|
||||
msgstr ""
|
||||
|
||||
#. ($c->config->{contact})
|
||||
#: lib/Lutim/Controller/Image.pm:485
|
||||
@@ -526,11 +529,11 @@ msgstr ""
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:30
|
||||
msgid "Toggle fullscreen"
|
||||
msgstr "Vollbild umschalten"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:8
|
||||
msgid "Toggle navigation"
|
||||
msgstr "Navigation umschalten"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:162 themes/default/templates/raw.html.ep:11
|
||||
msgid "Total"
|
||||
@@ -618,9 +621,9 @@ msgid ""
|
||||
"do it via <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> or via <a "
|
||||
"href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
msgstr ""
|
||||
"Ja, ist es! Jedoch kannst du den Entwickler via <a href=\"https://www.tipeee."
|
||||
"com/fiat-tux\">Tipeee</a> oder <a href=\"https://liberapay.com/sky/\""
|
||||
">Liberapay</a> unterstützen."
|
||||
"Ja, ist es! Auf der anderen Seite kannst du den Entwickler via <a href="
|
||||
"\"https://www.tipeee.com/fiat-tux\">Tipeee</a> oder <a href=\"https://"
|
||||
"liberapay.com/sky/\">Liberapay</a> unterstützen."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:6
|
||||
msgid "You asked to download a zip archive for too much files."
|
||||
@@ -674,7 +677,7 @@ msgstr "auf"
|
||||
|
||||
#: themes/default/templates/about.html.ep:39
|
||||
msgid "paste image to upload ability"
|
||||
msgstr "Bild zum Hochladen einfügen-Funktion"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:41
|
||||
msgid "russian translation"
|
||||
@@ -687,21 +690,3 @@ msgstr "spanische Übersetzung"
|
||||
#: themes/default/templates/about.html.ep:28
|
||||
msgid "webapp developer"
|
||||
msgstr "Webapp-Entwickler"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"Für weitere Details besuche die <a href=\"https://framagit.org/fiat-tux/"
|
||||
"hat-softwares/lutim\">Website des Projekts</a>."
|
||||
|
||||
#: themes/default/templates/index.html.ep:174 themes/default/templates/index.html.ep:218
|
||||
msgid "Single watermark"
|
||||
msgstr "Einzelnes Wasserzeichen"
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:215
|
||||
msgid "Tiling watermark"
|
||||
msgstr "Gekacheltes Wasserzeichen"
|
||||
|
||||
#: themes/default/templates/index.html.ep:177 themes/default/templates/index.html.ep:221
|
||||
msgid "No watermark"
|
||||
msgstr "Kein Wasserzeichen"
|
||||
|
||||
@@ -18,7 +18,7 @@ msgstr ""
|
||||
#. (30)
|
||||
#. ($delay)
|
||||
#. (config('max_delay')
|
||||
#: lib/Lutim/Command/cron/stats.pm:156 lib/Lutim/Command/cron/stats.pm:157 lib/Lutim/Command/cron/stats.pm:170 lib/Lutim/Command/cron/stats.pm:171 lib/Lutim/Command/cron/stats.pm:187 lib/Lutim/Command/cron/stats.pm:188 themes/default/templates/myfiles.html.ep:24 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:34 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:14 themes/default/templates/partial/for_my_delay.html.ep:4 themes/default/templates/partial/lutim.js.ep:129 themes/default/templates/partial/lutim.js.ep:138 themes/default/templates/partial/lutim.js.ep:139
|
||||
#: lib/Lutim/Command/cron/stats.pm:156 lib/Lutim/Command/cron/stats.pm:157 lib/Lutim/Command/cron/stats.pm:170 lib/Lutim/Command/cron/stats.pm:171 lib/Lutim/Command/cron/stats.pm:187 lib/Lutim/Command/cron/stats.pm:188 themes/default/templates/myfiles.html.ep:24 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:34 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:14 themes/default/templates/partial/for_my_delay.html.ep:4 themes/default/templates/partial/lutim.js.ep:140 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/lutim.js.ep:150 themes/default/templates/partial/raw.js.ep:23 themes/default/templates/partial/raw.js.ep:24 themes/default/templates/partial/raw.js.ep:6 themes/default/templates/partial/raw.js.ep:7 themes/default/templates/raw.html.ep:8 themes/default/templates/raw.html.ep:9
|
||||
msgid "%1 days"
|
||||
msgstr "%1 days"
|
||||
|
||||
@@ -27,31 +27,31 @@ msgstr "%1 days"
|
||||
msgid "%1 sent images on this instance from beginning."
|
||||
msgstr "%1 sent images on this instance from beginning."
|
||||
|
||||
#: themes/default/templates/index.html.ep:227
|
||||
#: themes/default/templates/index.html.ep:228
|
||||
msgid "-or-"
|
||||
msgstr "-or-"
|
||||
|
||||
#: lib/Lutim.pm:346 lib/Lutim/Command/cron/stats.pm:158 lib/Lutim/Command/cron/stats.pm:172 lib/Lutim/Command/cron/stats.pm:189 themes/default/templates/index.html.ep:5 themes/default/templates/myfiles.html.ep:5
|
||||
#: lib/Lutim.pm:347 lib/Lutim/Command/cron/stats.pm:158 lib/Lutim/Command/cron/stats.pm:172 lib/Lutim/Command/cron/stats.pm:189 themes/default/templates/index.html.ep:5 themes/default/templates/myfiles.html.ep:5 themes/default/templates/partial/raw.js.ep:25 themes/default/templates/partial/raw.js.ep:8 themes/default/templates/raw.html.ep:10
|
||||
msgid "1 year"
|
||||
msgstr "1 year"
|
||||
|
||||
#: lib/Lutim.pm:345 lib/Lutim/Command/cron/stats.pm:155 lib/Lutim/Command/cron/stats.pm:169 lib/Lutim/Command/cron/stats.pm:186 themes/default/templates/index.html.ep:4 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/lutim.js.ep:138
|
||||
#: lib/Lutim.pm:346 lib/Lutim/Command/cron/stats.pm:155 lib/Lutim/Command/cron/stats.pm:169 lib/Lutim/Command/cron/stats.pm:186 themes/default/templates/index.html.ep:4 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/raw.js.ep:22 themes/default/templates/partial/raw.js.ep:5 themes/default/templates/raw.html.ep:7
|
||||
msgid "24 hours"
|
||||
msgstr "24 hours"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:245
|
||||
#: themes/default/templates/partial/myfiles.js.ep:210
|
||||
msgid ": Error while trying to get the counter."
|
||||
msgstr ": Error while trying to get the counter."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:65
|
||||
#: themes/default/templates/partial/navbar.html.ep:63
|
||||
msgid "About"
|
||||
msgstr "About"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:151
|
||||
#: lib/Lutim/Command/cron/stats.pm:151 themes/default/templates/raw.html.ep:3
|
||||
msgid "Active images"
|
||||
msgstr "Active images"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:346
|
||||
#: lib/Lutim/Controller/Image.pm:329
|
||||
msgid "An error occured while downloading the image."
|
||||
msgstr "An error occured while downloading the image."
|
||||
|
||||
@@ -59,15 +59,11 @@ msgstr "An error occured while downloading the image."
|
||||
msgid "Archives download"
|
||||
msgstr "Archives download"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:145
|
||||
msgid "Are you sure you want to delete the image ${short}?"
|
||||
msgstr "Are you sure you want to delete the image ${short}?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:44 themes/default/templates/myfiles.html.ep:130 themes/default/templates/stats.html.ep:25
|
||||
#: themes/default/templates/about.html.ep:44 themes/default/templates/myfiles.html.ep:129 themes/default/templates/stats.html.ep:25
|
||||
msgid "Back to homepage"
|
||||
msgstr "Back to homepage"
|
||||
|
||||
#: themes/default/templates/index.html.ep:230 themes/default/templates/index.html.ep:231
|
||||
#: themes/default/templates/index.html.ep:231 themes/default/templates/index.html.ep:232
|
||||
msgid "Click to open the file browser"
|
||||
msgstr "Click to open the file browser"
|
||||
|
||||
@@ -87,15 +83,15 @@ msgstr "Contributors"
|
||||
msgid "Copied to clipboard"
|
||||
msgstr "Copied to clipboard"
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:206 themes/default/templates/partial/lutim.js.ep:267 themes/default/templates/partial/lutim.js.ep:354
|
||||
#: themes/default/templates/partial/lutim.js.ep:215 themes/default/templates/partial/lutim.js.ep:278 themes/default/templates/partial/lutim.js.ep:364
|
||||
msgid "Copy all view links to clipboard"
|
||||
msgstr "Copy all view links to clipboard"
|
||||
|
||||
#: themes/default/templates/index.html.ep:104 themes/default/templates/index.html.ep:16 themes/default/templates/index.html.ep:32 themes/default/templates/index.html.ep:48 themes/default/templates/index.html.ep:80 themes/default/templates/index.html.ep:88 themes/default/templates/index.html.ep:96 themes/default/templates/myfiles.html.ep:66 themes/default/templates/myfiles.html.ep:82 themes/default/templates/myfiles.html.ep:98 themes/default/templates/partial/common.js.ep:209 themes/default/templates/partial/lutim.js.ep:110 themes/default/templates/partial/lutim.js.ep:70 themes/default/templates/partial/lutim.js.ep:82 themes/default/templates/partial/lutim.js.ep:96 themes/default/templates/partial/myfiles.js.ep:183
|
||||
#: themes/default/templates/index.html.ep:105 themes/default/templates/index.html.ep:16 themes/default/templates/index.html.ep:32 themes/default/templates/index.html.ep:48 themes/default/templates/index.html.ep:81 themes/default/templates/index.html.ep:89 themes/default/templates/index.html.ep:97 themes/default/templates/myfiles.html.ep:66 themes/default/templates/myfiles.html.ep:82 themes/default/templates/myfiles.html.ep:98 themes/default/templates/partial/common.js.ep:186 themes/default/templates/partial/lutim.js.ep:106 themes/default/templates/partial/lutim.js.ep:121 themes/default/templates/partial/lutim.js.ep:80 themes/default/templates/partial/lutim.js.ep:92 themes/default/templates/partial/myfiles.js.ep:172
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "Copy to clipboard"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:118
|
||||
#: themes/default/templates/myfiles.html.ep:117
|
||||
msgid "Counter"
|
||||
msgstr "Counter"
|
||||
|
||||
@@ -107,23 +103,19 @@ msgstr "Delay repartition chart for disabled images"
|
||||
msgid "Delay repartition chart for enabled images"
|
||||
msgstr "Delay repartition chart for enabled images"
|
||||
|
||||
#: themes/default/templates/index.html.ep:126 themes/default/templates/index.html.ep:158 themes/default/templates/index.html.ep:202 themes/default/templates/myfiles.html.ep:119 themes/default/templates/myfiles.html.ep:45 themes/default/templates/partial/lutim.js.ep:150
|
||||
#: themes/default/templates/index.html.ep:127 themes/default/templates/index.html.ep:159 themes/default/templates/index.html.ep:203 themes/default/templates/myfiles.html.ep:118 themes/default/templates/myfiles.html.ep:45 themes/default/templates/partial/lutim.js.ep:161
|
||||
msgid "Delete at first view?"
|
||||
msgstr "Delete at first view?"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:109
|
||||
msgid "Delete selected images"
|
||||
msgstr "Delete selected images"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:152
|
||||
#: lib/Lutim/Command/cron/stats.pm:152 themes/default/templates/raw.html.ep:4
|
||||
msgid "Deleted images"
|
||||
msgstr "Deleted images"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:153
|
||||
#: lib/Lutim/Command/cron/stats.pm:153 themes/default/templates/raw.html.ep:5
|
||||
msgid "Deleted images in 30 days"
|
||||
msgstr "Deleted images in 30 days"
|
||||
|
||||
#: themes/default/templates/index.html.ep:109 themes/default/templates/myfiles.html.ep:122 themes/default/templates/partial/common.js.ep:195 themes/default/templates/partial/common.js.ep:200
|
||||
#: themes/default/templates/index.html.ep:110 themes/default/templates/myfiles.html.ep:121 themes/default/templates/partial/common.js.ep:178 themes/default/templates/partial/common.js.ep:181
|
||||
msgid "Deletion link"
|
||||
msgstr "Deletion link"
|
||||
|
||||
@@ -131,7 +123,7 @@ msgstr "Deletion link"
|
||||
msgid "Download all images"
|
||||
msgstr "Download all images"
|
||||
|
||||
#: themes/default/templates/index.html.ep:92 themes/default/templates/index.html.ep:94 themes/default/templates/partial/lutim.js.ep:88 themes/default/templates/partial/lutim.js.ep:92
|
||||
#: themes/default/templates/index.html.ep:93 themes/default/templates/index.html.ep:95 themes/default/templates/partial/lutim.js.ep:102 themes/default/templates/partial/lutim.js.ep:98
|
||||
msgid "Download link"
|
||||
msgstr "Download link"
|
||||
|
||||
@@ -139,7 +131,7 @@ msgstr "Download link"
|
||||
msgid "Download zip link"
|
||||
msgstr "Download zip link"
|
||||
|
||||
#: themes/default/templates/index.html.ep:226
|
||||
#: themes/default/templates/index.html.ep:227
|
||||
msgid "Drag & drop images here"
|
||||
msgstr "Drag & drop images here"
|
||||
|
||||
@@ -147,11 +139,11 @@ msgstr "Drag & drop images here"
|
||||
msgid "Drag and drop an image in the appropriate area or use the traditional way to send files and Lutim will provide you four URLs. One to view the image, an other to directly download it, one you can use on social networks and a last to delete the image when you want."
|
||||
msgstr "Drag and drop an image in the appropriate area or use the traditional way to send files and Lutim will provide you four URLs. One to view the image, an other to directly download it, one you can use on social networks and a last to delete the image when you want."
|
||||
|
||||
#: themes/default/templates/index.html.ep:161 themes/default/templates/index.html.ep:205
|
||||
#: themes/default/templates/index.html.ep:162 themes/default/templates/index.html.ep:206
|
||||
msgid "Encrypt the image (Lutim does not keep the key)."
|
||||
msgstr "Encrypt the image (Lutim does not keep the key)."
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:38 themes/default/templates/partial/myfiles.js.ep:129
|
||||
#: themes/default/templates/partial/lutim.js.ep:45 themes/default/templates/partial/myfiles.js.ep:128
|
||||
msgid "Error while trying to modify the image."
|
||||
msgstr "Error while trying to modify the image."
|
||||
|
||||
@@ -159,7 +151,7 @@ msgstr "Error while trying to modify the image."
|
||||
msgid "Evolution of total files"
|
||||
msgstr "Evolution of total files"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:121
|
||||
#: themes/default/templates/myfiles.html.ep:120
|
||||
msgid "Expires at"
|
||||
msgstr "Expires at"
|
||||
|
||||
@@ -167,7 +159,7 @@ msgstr "Expires at"
|
||||
msgid "Export localStorage data"
|
||||
msgstr "Export localStorage data"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:116
|
||||
#: themes/default/templates/myfiles.html.ep:115
|
||||
msgid "File name"
|
||||
msgstr "File name"
|
||||
|
||||
@@ -175,7 +167,7 @@ msgstr "File name"
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lutim\">homepage of the project</a>."
|
||||
msgstr "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lutim\">homepage of the project</a>."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:68
|
||||
#: themes/default/templates/partial/navbar.html.ep:66
|
||||
msgid "Fork me!"
|
||||
msgstr "Fork me!"
|
||||
|
||||
@@ -187,7 +179,7 @@ msgstr "Gallery link"
|
||||
msgid "Hit Ctrl+C, then Enter to copy the short link"
|
||||
msgstr "Hit Ctrl+C, then Enter to copy the short link"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:46
|
||||
#: themes/default/templates/layouts/default.html.ep:47
|
||||
msgid "Homepage"
|
||||
msgstr "Homepage"
|
||||
|
||||
@@ -207,19 +199,19 @@ msgstr "How to report an image?"
|
||||
msgid "If the files are deleted if you ask it while posting it, their SHA512 footprint are retained."
|
||||
msgstr "If the files are deleted if you ask it while posting it, their SHA512 footprint are retained."
|
||||
|
||||
#: themes/default/templates/index.html.ep:187 themes/default/templates/index.html.ep:240
|
||||
#: themes/default/templates/index.html.ep:188 themes/default/templates/index.html.ep:241
|
||||
msgid "Image URL"
|
||||
msgstr "Image URL"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:150
|
||||
#: lib/Lutim/Command/cron/stats.pm:150 themes/default/templates/raw.html.ep:2
|
||||
msgid "Image delay"
|
||||
msgstr "Image delay"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:172
|
||||
#: themes/default/templates/partial/common.js.ep:157
|
||||
msgid "Image deleted"
|
||||
msgstr "Image deleted"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:815
|
||||
#: lib/Lutim/Controller/Image.pm:804
|
||||
msgid "Image not found."
|
||||
msgstr "Image not found."
|
||||
|
||||
@@ -227,7 +219,7 @@ msgstr "Image not found."
|
||||
msgid "Import localStorage data"
|
||||
msgstr "Import localStorage data"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:57
|
||||
#: themes/default/templates/partial/navbar.html.ep:55
|
||||
msgid "Informations"
|
||||
msgstr "Informations"
|
||||
|
||||
@@ -247,23 +239,27 @@ msgstr "Is it really anonymous?"
|
||||
msgid "Is it really free (as in free beer)?"
|
||||
msgstr "Is it really free (as in free beer)?"
|
||||
|
||||
#: themes/default/templates/index.html.ep:164 themes/default/templates/index.html.ep:208
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid "Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr "Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:165 themes/default/templates/index.html.ep:209
|
||||
msgid "Keep EXIF tags"
|
||||
msgstr "Keep EXIF tags"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:43 themes/default/templates/partial/navbar.html.ep:44
|
||||
#: themes/default/templates/partial/navbar.html.ep:43
|
||||
msgid "Language"
|
||||
msgstr "Language"
|
||||
|
||||
#: themes/default/templates/index.html.ep:129 themes/default/templates/index.html.ep:190 themes/default/templates/index.html.ep:243 themes/default/templates/partial/lutim.js.ep:157
|
||||
#: themes/default/templates/index.html.ep:130 themes/default/templates/index.html.ep:191 themes/default/templates/index.html.ep:244 themes/default/templates/partial/lutim.js.ep:165
|
||||
msgid "Let's go!"
|
||||
msgstr "Let's go!"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:62
|
||||
#: themes/default/templates/partial/navbar.html.ep:60
|
||||
msgid "License:"
|
||||
msgstr "License:"
|
||||
|
||||
#: themes/default/templates/index.html.ep:100 themes/default/templates/index.html.ep:102 themes/default/templates/partial/lutim.js.ep:102 themes/default/templates/partial/lutim.js.ep:106
|
||||
#: themes/default/templates/index.html.ep:101 themes/default/templates/index.html.ep:103 themes/default/templates/partial/lutim.js.ep:112 themes/default/templates/partial/lutim.js.ep:116
|
||||
msgid "Link for share on social networks"
|
||||
msgstr "Link for share on social networks"
|
||||
|
||||
@@ -287,11 +283,11 @@ msgstr "Lutim is a free (as in free beer) and anonymous image hosting service. I
|
||||
msgid "Main developers"
|
||||
msgstr "Main developers"
|
||||
|
||||
#: themes/default/templates/index.html.ep:84 themes/default/templates/index.html.ep:86 themes/default/templates/partial/lutim.js.ep:76 themes/default/templates/partial/lutim.js.ep:79
|
||||
#: themes/default/templates/index.html.ep:85 themes/default/templates/index.html.ep:87 themes/default/templates/partial/lutim.js.ep:86 themes/default/templates/partial/lutim.js.ep:89
|
||||
msgid "Markdown syntax"
|
||||
msgstr "Markdown syntax"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:200
|
||||
#: themes/default/templates/partial/myfiles.js.ep:179
|
||||
msgid "Modify expiration delay"
|
||||
msgstr "Modify expiration delay"
|
||||
|
||||
@@ -303,15 +299,15 @@ msgstr "My images"
|
||||
msgid "Next (arrow right)"
|
||||
msgstr "Next (arrow right)"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:121 themes/default/templates/partial/myfiles.js.ep:163
|
||||
#: themes/default/templates/partial/myfiles.js.ep:120 themes/default/templates/partial/myfiles.js.ep:162
|
||||
msgid "No limit"
|
||||
msgstr "No limit"
|
||||
|
||||
#: themes/default/templates/index.html.ep:176 themes/default/templates/index.html.ep:220
|
||||
#: themes/default/templates/index.html.ep:177 themes/default/templates/index.html.ep:221
|
||||
msgid "No watermark"
|
||||
msgstr "No watermark"
|
||||
|
||||
#: themes/default/templates/index.html.ep:189 themes/default/templates/index.html.ep:235
|
||||
#: themes/default/templates/index.html.ep:190 themes/default/templates/index.html.ep:236
|
||||
msgid "Only images are allowed"
|
||||
msgstr "Only images are allowed"
|
||||
|
||||
@@ -356,7 +352,7 @@ msgstr "Raw stats"
|
||||
msgid "Save changes"
|
||||
msgstr "Save changes"
|
||||
|
||||
#: themes/default/templates/index.html.ep:182
|
||||
#: themes/default/templates/index.html.ep:183
|
||||
msgid "Send an image"
|
||||
msgstr "Send an image"
|
||||
|
||||
@@ -364,23 +360,19 @@ msgstr "Send an image"
|
||||
msgid "Signin"
|
||||
msgstr "Signin"
|
||||
|
||||
#: themes/default/templates/index.html.ep:173 themes/default/templates/index.html.ep:217
|
||||
#: themes/default/templates/index.html.ep:174 themes/default/templates/index.html.ep:218
|
||||
msgid "Single watermark"
|
||||
msgstr "Single watermark"
|
||||
|
||||
#: themes/default/templates/index.html.ep:144 themes/default/templates/partial/gallery.js.ep:210 themes/default/templates/partial/lutim.js.ep:166
|
||||
#: themes/default/templates/index.html.ep:145 themes/default/templates/partial/gallery.js.ep:211 themes/default/templates/partial/lutim.js.ep:176
|
||||
msgid "Something bad happened"
|
||||
msgstr "Something bad happened"
|
||||
|
||||
#. ($c->config('contact')
|
||||
#: lib/Lutim/Controller/Image.pm:822
|
||||
#: lib/Lutim/Controller/Image.pm:811
|
||||
msgid "Something went wrong when creating the zip file. Try again later or contact the administrator (%1)."
|
||||
msgstr "Something went wrong when creating the zip file. Try again later or contact the administrator (%1)."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:294
|
||||
msgid "Sorry, the API is disabled"
|
||||
msgstr "Sorry, the API is disabled"
|
||||
|
||||
#: themes/default/templates/about.html.ep:13
|
||||
msgid "The IP address of the image's sender is retained for a delay which depends of the administrator's choice (for the official instance, which is located in France, it's one year)."
|
||||
msgstr "The IP address of the image's sender is retained for a delay which depends of the administrator's choice (for the official instance, which is located in France, it's one year)."
|
||||
@@ -389,7 +381,7 @@ msgstr "The IP address of the image's sender is retained for a delay which depen
|
||||
msgid "The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/Free_software\">free software</a>, which allows you to download and install it on you own server. Have a look at the <a href=\"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
|
||||
msgstr "The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/Free_software\">free software</a>, which allows you to download and install it on you own server. Have a look at the <a href=\"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:365
|
||||
#: lib/Lutim/Controller/Image.pm:348
|
||||
msgid "The URL is not valid."
|
||||
msgstr "The URL is not valid."
|
||||
|
||||
@@ -401,19 +393,19 @@ msgstr "The automatic download process will open a tab in your browser for each
|
||||
msgid "The data has been successfully imported."
|
||||
msgstr "The data has been successfully imported."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:161 lib/Lutim/Controller/Image.pm:229
|
||||
#: lib/Lutim/Controller/Image.pm:160 lib/Lutim/Controller/Image.pm:228
|
||||
msgid "The delete token is invalid."
|
||||
msgstr "The delete token is invalid."
|
||||
|
||||
#. ($upload->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:547
|
||||
#: lib/Lutim/Controller/Image.pm:532
|
||||
msgid "The file %1 is not an image."
|
||||
msgstr "The file %1 is not an image."
|
||||
|
||||
#. ($res->max_message_size)
|
||||
#. ($tx->res->max_message_size)
|
||||
#. ($c->req->max_message_size)
|
||||
#. (config('max_file_size')
|
||||
#: lib/Lutim/Controller/Image.pm:329 lib/Lutim/Controller/Image.pm:395 themes/default/templates/partial/lutim.js.ep:239
|
||||
#: lib/Lutim/Controller/Image.pm:312 lib/Lutim/Controller/Image.pm:381 themes/default/templates/partial/lutim.js.ep:249
|
||||
msgid "The file exceed the size limit (%1)"
|
||||
msgstr "The file exceed the size limit (%1)"
|
||||
|
||||
@@ -422,12 +414,12 @@ msgid "The graph's datas are not updated in real-time."
|
||||
msgstr "The graph's datas are not updated in real-time."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:231
|
||||
#: lib/Lutim/Controller/Image.pm:230
|
||||
msgid "The image %1 has already been deleted."
|
||||
msgstr "The image %1 has already been deleted."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:240 lib/Lutim/Controller/Image.pm:245
|
||||
#: lib/Lutim/Controller/Image.pm:239 lib/Lutim/Controller/Image.pm:244
|
||||
msgid "The image %1 has been successfully deleted"
|
||||
msgstr "The image %1 has been successfully deleted"
|
||||
|
||||
@@ -439,25 +431,20 @@ msgstr "The images are encrypted on the server (Lutim does not keep the key)."
|
||||
msgid "The images you post on Lutim can be stored indefinitely or be deleted at first view or after a delay selected from those proposed."
|
||||
msgstr "The images you post on Lutim can be stored indefinitely or be deleted at first view or after a delay selected from those proposed."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:169
|
||||
#: lib/Lutim/Controller/Image.pm:168
|
||||
msgid "The image’s delay has been successfully modified"
|
||||
msgstr "The image’s delay has been successfully modified"
|
||||
|
||||
#. ('https://fr.wikipedia.org/wiki/Lutin')
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid "The way you pronounce the French word <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr "The way you pronounce the French word <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
|
||||
#: themes/default/templates/partial/gallery.js.ep:271
|
||||
#: themes/default/templates/partial/gallery.js.ep:277
|
||||
msgid "There is XXXX image(s) in the gallery"
|
||||
msgstr "There is XXXX image(s) in the gallery"
|
||||
|
||||
#. ($c->config->{contact})
|
||||
#: lib/Lutim/Controller/Image.pm:544
|
||||
#: lib/Lutim/Controller/Image.pm:529
|
||||
msgid "There is no more available URL. Retry or contact the administrator. %1"
|
||||
msgstr "There is no more available URL. Retry or contact the administrator. %1"
|
||||
|
||||
#: themes/default/templates/index.html.ep:170 themes/default/templates/index.html.ep:214
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:215
|
||||
msgid "Tiling watermark"
|
||||
msgstr "Tiling watermark"
|
||||
|
||||
@@ -469,11 +456,11 @@ msgstr "Toggle fullscreen"
|
||||
msgid "Toggle navigation"
|
||||
msgstr "Toggle navigation"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:159
|
||||
#: lib/Lutim/Command/cron/stats.pm:159 themes/default/templates/raw.html.ep:11
|
||||
msgid "Total"
|
||||
msgstr "Total"
|
||||
|
||||
#:
|
||||
#: themes/default/templates/index.html.ep:72 themes/default/templates/partial/lutim.js.ep:17
|
||||
msgid "Tweet it!"
|
||||
msgstr "Tweet it!"
|
||||
|
||||
@@ -482,15 +469,15 @@ msgid "Unable to copy to clipboard"
|
||||
msgstr "Unable to copy to clipboard"
|
||||
|
||||
#. ($short)
|
||||
#: lib/Lutim/Controller/Image.pm:109 lib/Lutim/Controller/Image.pm:203 lib/Lutim/Controller/Image.pm:274
|
||||
#: lib/Lutim/Controller/Image.pm:108 lib/Lutim/Controller/Image.pm:202 lib/Lutim/Controller/Image.pm:273
|
||||
msgid "Unable to find the image %1."
|
||||
msgstr "Unable to find the image %1."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:633 lib/Lutim/Controller/Image.pm:678 lib/Lutim/Controller/Image.pm:719 lib/Lutim/Controller/Image.pm:762 lib/Lutim/Controller/Image.pm:774 lib/Lutim/Controller/Image.pm:785 lib/Lutim/Controller/Image.pm:812 lib/Lutim/Plugin/Helpers.pm:90
|
||||
#: lib/Lutim/Controller/Image.pm:619 lib/Lutim/Controller/Image.pm:665 lib/Lutim/Controller/Image.pm:706 lib/Lutim/Controller/Image.pm:749 lib/Lutim/Controller/Image.pm:761 lib/Lutim/Controller/Image.pm:773 lib/Lutim/Controller/Image.pm:801 lib/Lutim/Plugin/Helpers.pm:126
|
||||
msgid "Unable to find the image: it has been deleted."
|
||||
msgstr "Unable to find the image: it has been deleted."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:146
|
||||
#: lib/Lutim/Controller/Image.pm:145
|
||||
msgid "Unable to get counter"
|
||||
msgstr "Unable to get counter"
|
||||
|
||||
@@ -498,11 +485,11 @@ msgstr "Unable to get counter"
|
||||
msgid "Unlike many image sharing services, you don't give us rights on uploaded images."
|
||||
msgstr "Unlike many image sharing services, you don't give us rights on uploaded images."
|
||||
|
||||
#: themes/default/templates/index.html.ep:186 themes/default/templates/index.html.ep:238
|
||||
#: themes/default/templates/index.html.ep:187 themes/default/templates/index.html.ep:239
|
||||
msgid "Upload an image with its URL"
|
||||
msgstr "Upload an image with its URL"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:120
|
||||
#: themes/default/templates/myfiles.html.ep:119
|
||||
msgid "Uploaded at"
|
||||
msgstr "Uploaded at"
|
||||
|
||||
@@ -511,11 +498,11 @@ msgid "Uploaded files by days"
|
||||
msgstr "Uploaded files by days"
|
||||
|
||||
#. ($c->app->config('contact')
|
||||
#: lib/Lutim/Plugin/Helpers.pm:223
|
||||
#: lib/Lutim/Plugin/Helpers.pm:261
|
||||
msgid "Uploading is currently disabled, please try later or contact the administrator (%1)."
|
||||
msgstr "Uploading is currently disabled, please try later or contact the administrator (%1)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:76 themes/default/templates/index.html.ep:78 themes/default/templates/myfiles.html.ep:117 themes/default/templates/partial/lutim.js.ep:62 themes/default/templates/partial/lutim.js.ep:66
|
||||
#: themes/default/templates/index.html.ep:77 themes/default/templates/index.html.ep:79 themes/default/templates/myfiles.html.ep:116 themes/default/templates/partial/lutim.js.ep:72 themes/default/templates/partial/lutim.js.ep:76
|
||||
msgid "View link"
|
||||
msgstr "View link"
|
||||
|
||||
@@ -571,7 +558,7 @@ msgstr "arabic translation"
|
||||
msgid "core developer"
|
||||
msgstr "core developer"
|
||||
|
||||
#: lib/Lutim.pm:344 lib/Lutim/Command/cron/stats.pm:154 lib/Lutim/Command/cron/stats.pm:168 lib/Lutim/Command/cron/stats.pm:185 themes/default/templates/index.html.ep:3 themes/default/templates/myfiles.html.ep:3
|
||||
#: lib/Lutim.pm:345 lib/Lutim/Command/cron/stats.pm:154 lib/Lutim/Command/cron/stats.pm:168 lib/Lutim/Command/cron/stats.pm:185 themes/default/templates/index.html.ep:3 themes/default/templates/myfiles.html.ep:3 themes/default/templates/partial/raw.js.ep:21 themes/default/templates/partial/raw.js.ep:4 themes/default/templates/raw.html.ep:6
|
||||
msgid "no time limit"
|
||||
msgstr "no time limit"
|
||||
|
||||
|
||||
@@ -11,8 +11,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: 2021-04-24 11:14+0000\n"
|
||||
"Last-Translator: Berto Te <ateira@3fpj.com>\n"
|
||||
"PO-Revision-Date: 2020-03-09 16:23+0000\n"
|
||||
"Last-Translator: Luc Didry <luc@framasoft.org>\n"
|
||||
"Language-Team: Spanish <https://weblate.framasoft.org/projects/lutim/"
|
||||
"default-theme/es/>\n"
|
||||
"Language: es\n"
|
||||
@@ -20,7 +20,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.5.1\n"
|
||||
"X-Generator: Weblate 3.11.2\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
@@ -179,6 +179,14 @@ msgstr "Exportar datos de almacenamiento local"
|
||||
msgid "File name"
|
||||
msgstr "Nombre de archivo"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid ""
|
||||
"For more details, see the <a href=\"https://framagit.org/luc/"
|
||||
"lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"Para más detalles, vea la <a href=\"https://framagit.org/luc/lutim\">página "
|
||||
"del proyecto</a>."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:80
|
||||
msgid "Fork me!"
|
||||
msgstr "¡Clóname!"
|
||||
@@ -256,8 +264,12 @@ msgid "Is it really free (as in free beer)?"
|
||||
msgstr "¿Es realmente gratis?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid "The way you pronounce the French word <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr "Tal y como se pronuncia la palabra francesa <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgid ""
|
||||
"Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/"
|
||||
"wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
"Tal y como se pronuncia la palabra francesa <a href=\"https://fr.wikipedia."
|
||||
"org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:202
|
||||
msgid "Keep EXIF tags"
|
||||
@@ -634,7 +646,7 @@ msgstr "Ha sido desconectado con éxito."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:31
|
||||
msgid "Zoom in/out"
|
||||
msgstr "Zoom aumentar / reducir"
|
||||
msgstr "Zoom in/out"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "and on"
|
||||
@@ -681,15 +693,3 @@ msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-sof
|
||||
msgstr ""
|
||||
"Para más detalles, vea la <a href=\"https://framagit.org/fiat-tux/"
|
||||
"hat-softwares/lutim\">página del proyecto</a>."
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:215
|
||||
msgid "Tiling watermark"
|
||||
msgstr "Marca de agua en mosaico"
|
||||
|
||||
#: themes/default/templates/index.html.ep:174 themes/default/templates/index.html.ep:218
|
||||
msgid "Single watermark"
|
||||
msgstr "Marca de agua única"
|
||||
|
||||
#: themes/default/templates/index.html.ep:177 themes/default/templates/index.html.ep:221
|
||||
msgid "No watermark"
|
||||
msgstr "Sin marca de agua"
|
||||
|
||||
@@ -1,600 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: 2024-06-04 21:20+0000\n"
|
||||
"Last-Translator: Goudarz Jafari <goudarz.jafari@gmail.com>\n"
|
||||
"Language-Team: Persian <https://weblate.framasoft.org/projects/lutim/"
|
||||
"default-theme/fa/>\n"
|
||||
"Language: fa\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 5.5.5\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
#. ($delay)
|
||||
#. (config('max_delay')
|
||||
#: lib/Lutim/Command/cron/stats.pm:156 lib/Lutim/Command/cron/stats.pm:157 lib/Lutim/Command/cron/stats.pm:170 lib/Lutim/Command/cron/stats.pm:171 lib/Lutim/Command/cron/stats.pm:187 lib/Lutim/Command/cron/stats.pm:188 themes/default/templates/myfiles.html.ep:24 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:34 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:14 themes/default/templates/partial/for_my_delay.html.ep:4 themes/default/templates/partial/lutim.js.ep:129 themes/default/templates/partial/lutim.js.ep:138 themes/default/templates/partial/lutim.js.ep:139 themes/default/templates/partial/raw.js.ep:23 themes/default/templates/partial/raw.js.ep:24 themes/default/templates/partial/raw.js.ep:6 themes/default/templates/partial/raw.js.ep:7 themes/default/templates/raw.html.ep:8 themes/default/templates/raw.html.ep:9
|
||||
msgid "%1 days"
|
||||
msgstr "%1 روز"
|
||||
|
||||
#. ($total)
|
||||
#: themes/default/templates/stats.html.ep:2
|
||||
msgid "%1 sent images on this instance from beginning."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:227
|
||||
msgid "-or-"
|
||||
msgstr "-یا-"
|
||||
|
||||
#: lib/Lutim.pm:346 lib/Lutim/Command/cron/stats.pm:158 lib/Lutim/Command/cron/stats.pm:172 lib/Lutim/Command/cron/stats.pm:189 themes/default/templates/index.html.ep:5 themes/default/templates/myfiles.html.ep:5 themes/default/templates/partial/raw.js.ep:25 themes/default/templates/partial/raw.js.ep:8 themes/default/templates/raw.html.ep:10
|
||||
msgid "1 year"
|
||||
msgstr "۱ سال"
|
||||
|
||||
#: lib/Lutim.pm:345 lib/Lutim/Command/cron/stats.pm:155 lib/Lutim/Command/cron/stats.pm:169 lib/Lutim/Command/cron/stats.pm:186 themes/default/templates/index.html.ep:4 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/lutim.js.ep:138 themes/default/templates/partial/raw.js.ep:22 themes/default/templates/partial/raw.js.ep:5 themes/default/templates/raw.html.ep:7
|
||||
msgid "24 hours"
|
||||
msgstr "۲۴ ساعت"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:245
|
||||
msgid ": Error while trying to get the counter."
|
||||
msgstr ": در تلاش برای بدست آوردن شمارنده خطای رخ داد."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:63
|
||||
msgid "About"
|
||||
msgstr "درباره ما"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:151 themes/default/templates/raw.html.ep:3
|
||||
msgid "Active images"
|
||||
msgstr "تصاویر فعال"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:346
|
||||
msgid "An error occured while downloading the image."
|
||||
msgstr "هنگام بارگیری تصویر خطایی رخ داد."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:2
|
||||
msgid "Archives download"
|
||||
msgstr "بارگیری بایگانی"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:145
|
||||
msgid "Are you sure you want to delete the image ${short}?"
|
||||
msgstr "آیا مطمئن هستید که تصویر ${short} را میخواهید، حذف کنید؟"
|
||||
|
||||
#: themes/default/templates/about.html.ep:44 themes/default/templates/myfiles.html.ep:130 themes/default/templates/stats.html.ep:25
|
||||
msgid "Back to homepage"
|
||||
msgstr "بازگشت به صفحه اصلی"
|
||||
|
||||
#: themes/default/templates/index.html.ep:230 themes/default/templates/index.html.ep:231
|
||||
msgid "Click to open the file browser"
|
||||
msgstr "برای باز شدن مرور پرونده، کلیک کنید"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:51
|
||||
msgid "Close"
|
||||
msgstr "بستن"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:29
|
||||
msgid "Close (Esc)"
|
||||
msgstr "بستن (Esc)"
|
||||
|
||||
#: themes/default/templates/about.html.ep:30
|
||||
msgid "Contributors"
|
||||
msgstr "مشارکت کنندگان"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:113 themes/default/templates/partial/common.js.ep:93
|
||||
msgid "Copied to clipboard"
|
||||
msgstr "در کلیپبورد رونوشت شد"
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:206 themes/default/templates/partial/lutim.js.ep:267 themes/default/templates/partial/lutim.js.ep:354
|
||||
msgid "Copy all view links to clipboard"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:104 themes/default/templates/index.html.ep:16 themes/default/templates/index.html.ep:32 themes/default/templates/index.html.ep:48 themes/default/templates/index.html.ep:80 themes/default/templates/index.html.ep:88 themes/default/templates/index.html.ep:96 themes/default/templates/myfiles.html.ep:66 themes/default/templates/myfiles.html.ep:82 themes/default/templates/myfiles.html.ep:98 themes/default/templates/partial/common.js.ep:209 themes/default/templates/partial/lutim.js.ep:110 themes/default/templates/partial/lutim.js.ep:70 themes/default/templates/partial/lutim.js.ep:82 themes/default/templates/partial/lutim.js.ep:96 themes/default/templates/partial/myfiles.js.ep:183
|
||||
msgid "Copy to clipboard"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:118
|
||||
msgid "Counter"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/stats.html.ep:18
|
||||
msgid "Delay repartition chart for disabled images"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/stats.html.ep:15
|
||||
msgid "Delay repartition chart for enabled images"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:126 themes/default/templates/index.html.ep:158 themes/default/templates/index.html.ep:202 themes/default/templates/myfiles.html.ep:119 themes/default/templates/myfiles.html.ep:45 themes/default/templates/partial/lutim.js.ep:150
|
||||
msgid "Delete at first view?"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:109
|
||||
msgid "Delete selected images"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:152 themes/default/templates/raw.html.ep:4
|
||||
msgid "Deleted images"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:153 themes/default/templates/raw.html.ep:5
|
||||
msgid "Deleted images in 30 days"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:109 themes/default/templates/myfiles.html.ep:122 themes/default/templates/partial/common.js.ep:195 themes/default/templates/partial/common.js.ep:200
|
||||
msgid "Deletion link"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:10
|
||||
msgid "Download all images"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:92 themes/default/templates/index.html.ep:94 themes/default/templates/partial/lutim.js.ep:88 themes/default/templates/partial/lutim.js.ep:92
|
||||
msgid "Download link"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:26 themes/default/templates/index.html.ep:28 themes/default/templates/myfiles.html.ep:76 themes/default/templates/myfiles.html.ep:78
|
||||
msgid "Download zip link"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:226
|
||||
msgid "Drag & drop images here"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:7
|
||||
msgid "Drag and drop an image in the appropriate area or use the traditional way to send files and Lutim will provide you four URLs. One to view the image, an other to directly download it, one you can use on social networks and a last to delete the image when you want."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:161 themes/default/templates/index.html.ep:205
|
||||
msgid "Encrypt the image (Lutim does not keep the key)."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:38 themes/default/templates/partial/myfiles.js.ep:129
|
||||
msgid "Error while trying to modify the image."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/stats.html.ep:10
|
||||
msgid "Evolution of total files"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:121
|
||||
msgid "Expires at"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:106
|
||||
msgid "Export localStorage data"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:116
|
||||
msgid "File name"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:66
|
||||
msgid "Fork me!"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:10 themes/default/templates/index.html.ep:12 themes/default/templates/myfiles.html.ep:60 themes/default/templates/myfiles.html.ep:62
|
||||
msgid "Gallery link"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:116 themes/default/templates/partial/common.js.ep:134
|
||||
msgid "Hit Ctrl+C, then Enter to copy the short link"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:44
|
||||
msgid "Homepage"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:20
|
||||
msgid "How do you pronounce Lutim?"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:6
|
||||
msgid "How does it work?"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:18
|
||||
msgid "How to report an image?"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:14
|
||||
msgid "If the files are deleted if you ask it while posting it, their SHA512 footprint are retained."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:187 themes/default/templates/index.html.ep:240
|
||||
msgid "Image URL"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:150 themes/default/templates/raw.html.ep:2
|
||||
msgid "Image delay"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:172
|
||||
msgid "Image deleted"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:815
|
||||
msgid "Image not found."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:107
|
||||
msgid "Import localStorage data"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:55
|
||||
msgid "Informations"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:25
|
||||
msgid "Install webapp"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:21
|
||||
msgid "Instance's statistics"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:11
|
||||
msgid "Is it really anonymous?"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:9
|
||||
msgid "Is it really free (as in free beer)?"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:164 themes/default/templates/index.html.ep:208
|
||||
msgid "Keep EXIF tags"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:43
|
||||
msgid "Language"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:129 themes/default/templates/index.html.ep:190 themes/default/templates/index.html.ep:243 themes/default/templates/partial/lutim.js.ep:157
|
||||
msgid "Let's go!"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:60
|
||||
msgid "License:"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:100 themes/default/templates/index.html.ep:102 themes/default/templates/partial/lutim.js.ep:102 themes/default/templates/partial/lutim.js.ep:106
|
||||
msgid "Link for share on social networks"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/login.html.ep:8
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:33
|
||||
msgid "Logout"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/zip.html.ep:7
|
||||
msgid "Lutim can't zip so many images at once, so it splitted your demand in multiple URLs."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:4
|
||||
msgid "Lutim is a free (as in free beer) and anonymous image hosting service. It's also the name of the free (as in free speech) software which provides this service."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:25
|
||||
msgid "Main developers"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:84 themes/default/templates/index.html.ep:86 themes/default/templates/partial/lutim.js.ep:76 themes/default/templates/partial/lutim.js.ep:79
|
||||
msgid "Markdown syntax"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:200
|
||||
msgid "Modify expiration delay"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:7 themes/default/templates/partial/navbar.html.ep:18
|
||||
msgid "My images"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:45
|
||||
msgid "Next (arrow right)"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:121 themes/default/templates/partial/myfiles.js.ep:163
|
||||
msgid "No limit"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:176 themes/default/templates/index.html.ep:220
|
||||
msgid "No watermark"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:189 themes/default/templates/index.html.ep:235
|
||||
msgid "Only images are allowed"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:11
|
||||
msgid "Only the images sent with this browser will be listed here. The details are stored in localStorage: if you delete your localStorage data, you'll loose these details."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:16
|
||||
msgid "Only the uploader! (well, only if he's the only owner of the images' rights before the upload)"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/login.html.ep:12
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/zip.html.ep:12
|
||||
msgid "Please click on each URL to download the different zip files."
|
||||
msgstr ""
|
||||
|
||||
#. (config('contact')
|
||||
#: themes/default/templates/about.html.ep:19
|
||||
msgid "Please contact the administrator: %1"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:36
|
||||
msgid "Please, check your credentials: unable to authenticate."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:43
|
||||
msgid "Previous (arrow left)"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:42 themes/default/templates/index.html.ep:44 themes/default/templates/myfiles.html.ep:92 themes/default/templates/myfiles.html.ep:94
|
||||
msgid "Random image link"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/stats.html.ep:22
|
||||
msgid "Raw stats"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:52
|
||||
msgid "Save changes"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:182
|
||||
msgid "Send an image"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/login.html.ep:16 themes/default/templates/logout.html.ep:5 themes/default/templates/partial/navbar.html.ep:37
|
||||
msgid "Signin"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:173 themes/default/templates/index.html.ep:217
|
||||
msgid "Single watermark"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:144 themes/default/templates/partial/gallery.js.ep:210 themes/default/templates/partial/lutim.js.ep:166
|
||||
msgid "Something bad happened"
|
||||
msgstr ""
|
||||
|
||||
#. ($c->config('contact')
|
||||
#: lib/Lutim/Controller/Image.pm:822
|
||||
msgid "Something went wrong when creating the zip file. Try again later or contact the administrator (%1)."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:294
|
||||
msgid "Sorry, the API is disabled"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:13
|
||||
msgid "The IP address of the image's sender is retained for a delay which depends of the administrator's choice (for the official instance, which is located in France, it's one year)."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:23
|
||||
msgid "The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/Free_software\">free software</a>, which allows you to download and install it on you own server. Have a look at the <a href=\"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:365
|
||||
msgid "The URL is not valid."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/zip.html.ep:16
|
||||
msgid "The automatic download process will open a tab in your browser for each link. You need to allow popups for Lutim."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:32
|
||||
msgid "The data has been successfully imported."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:161 lib/Lutim/Controller/Image.pm:229
|
||||
msgid "The delete token is invalid."
|
||||
msgstr ""
|
||||
|
||||
#. ($upload->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:547
|
||||
msgid "The file %1 is not an image."
|
||||
msgstr ""
|
||||
|
||||
#. ($tx->res->max_message_size)
|
||||
#. ($c->req->max_message_size)
|
||||
#. (config('max_file_size')
|
||||
#: lib/Lutim/Controller/Image.pm:329 lib/Lutim/Controller/Image.pm:395 themes/default/templates/partial/lutim.js.ep:239
|
||||
msgid "The file exceed the size limit (%1)"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/stats.html.ep:12
|
||||
msgid "The graph's datas are not updated in real-time."
|
||||
msgstr ""
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:231
|
||||
msgid "The image %1 has already been deleted."
|
||||
msgstr ""
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:240 lib/Lutim/Controller/Image.pm:245
|
||||
msgid "The image %1 has been successfully deleted"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:57
|
||||
msgid "The images are encrypted on the server (Lutim does not keep the key)."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:5
|
||||
msgid "The images you post on Lutim can be stored indefinitely or be deleted at first view or after a delay selected from those proposed."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:169
|
||||
msgid "The image’s delay has been successfully modified"
|
||||
msgstr ""
|
||||
|
||||
#. ('https://fr.wikipedia.org/wiki/Lutin')
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid "The way you pronounce the French word <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/gallery.js.ep:271
|
||||
msgid "There is XXXX image(s) in the gallery"
|
||||
msgstr ""
|
||||
|
||||
#. ($c->config->{contact})
|
||||
#: lib/Lutim/Controller/Image.pm:544
|
||||
msgid "There is no more available URL. Retry or contact the administrator. %1"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:170 themes/default/templates/index.html.ep:214
|
||||
msgid "Tiling watermark"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:30
|
||||
msgid "Toggle fullscreen"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:8
|
||||
msgid "Toggle navigation"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:159 themes/default/templates/raw.html.ep:11
|
||||
msgid "Total"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:110 themes/default/templates/partial/common.js.ep:90
|
||||
msgid "Unable to copy to clipboard"
|
||||
msgstr ""
|
||||
|
||||
#. ($short)
|
||||
#: lib/Lutim/Controller/Image.pm:109 lib/Lutim/Controller/Image.pm:203 lib/Lutim/Controller/Image.pm:274
|
||||
msgid "Unable to find the image %1."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:633 lib/Lutim/Controller/Image.pm:678 lib/Lutim/Controller/Image.pm:719 lib/Lutim/Controller/Image.pm:762 lib/Lutim/Controller/Image.pm:774 lib/Lutim/Controller/Image.pm:785 lib/Lutim/Controller/Image.pm:812 lib/Lutim/Plugin/Helpers.pm:90
|
||||
msgid "Unable to find the image: it has been deleted."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:146
|
||||
msgid "Unable to get counter"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:17
|
||||
msgid "Unlike many image sharing services, you don't give us rights on uploaded images."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:186 themes/default/templates/index.html.ep:238
|
||||
msgid "Upload an image with its URL"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:120
|
||||
msgid "Uploaded at"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/stats.html.ep:6
|
||||
msgid "Uploaded files by days"
|
||||
msgstr ""
|
||||
|
||||
#. ($c->app->config('contact')
|
||||
#: lib/Lutim/Plugin/Helpers.pm:223
|
||||
msgid "Uploading is currently disabled, please try later or contact the administrator (%1)."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:76 themes/default/templates/index.html.ep:78 themes/default/templates/myfiles.html.ep:117 themes/default/templates/partial/lutim.js.ep:62 themes/default/templates/partial/lutim.js.ep:66
|
||||
msgid "View link"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:22
|
||||
msgid "What about the software which provides the service?"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:3
|
||||
msgid "What is Lutim?"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:15
|
||||
msgid "Who owns rights on images uploaded on Lutim?"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:12
|
||||
msgid "Yes, it is! On the other side, for legal reasons, your IP address will be stored when you send an image. Don't panic, it is normally the case of all sites on which you send files!"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:10
|
||||
msgid "Yes, it is! On the other side, if you want to support the developer, you can do it via <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> or via <a href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/zip.html.ep:6
|
||||
msgid "You asked to download a zip archive for too much files."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:8
|
||||
msgid "You can, optionally, request that the image(s) posted on Lutim to be deleted at first view (or download) or after the delay selected from those proposed."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:27
|
||||
msgid "You have been successfully logged in."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:66 themes/default/templates/logout.html.ep:3
|
||||
msgid "You have been successfully logged out."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:31
|
||||
msgid "Zoom in/out"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "and on"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:40
|
||||
msgid "arabic translation"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "core developer"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim.pm:344 lib/Lutim/Command/cron/stats.pm:154 lib/Lutim/Command/cron/stats.pm:168 lib/Lutim/Command/cron/stats.pm:185 themes/default/templates/index.html.ep:3 themes/default/templates/myfiles.html.ep:3 themes/default/templates/partial/raw.js.ep:21 themes/default/templates/partial/raw.js.ep:4 themes/default/templates/raw.html.ep:6
|
||||
msgid "no time limit"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:38
|
||||
msgid "occitan translation"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "on"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:39
|
||||
msgid "paste image to upload ability"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:41
|
||||
msgid "russian translation"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:36
|
||||
msgid "spanish translation"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:28
|
||||
msgid "webapp developer"
|
||||
msgstr ""
|
||||
@@ -11,8 +11,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: 2025-10-13 07:13+0000\n"
|
||||
"Last-Translator: Luc Didry <luc@framasoft.org>\n"
|
||||
"PO-Revision-Date: 2020-04-04 10:08+0000\n"
|
||||
"Last-Translator: spf <spf@framasoft.org>\n"
|
||||
"Language-Team: French <https://weblate.framasoft.org/projects/lutim/"
|
||||
"default-theme/fr/>\n"
|
||||
"Language: fr\n"
|
||||
@@ -20,7 +20,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 5.13.3\n"
|
||||
"X-Generator: Weblate 3.11.2\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
@@ -265,8 +265,12 @@ msgid "Is it really free (as in free beer)?"
|
||||
msgstr "C’est vraiment gratuit ?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid "The way you pronounce the French word <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr "Comme on prononce <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgid ""
|
||||
"Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/"
|
||||
"wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
"Comme on prononce <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> "
|
||||
"(/ly.tɛ̃/)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:202
|
||||
msgid "Keep EXIF tags"
|
||||
@@ -709,15 +713,3 @@ msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-sof
|
||||
msgstr ""
|
||||
"Pour plus de détails, consultez la <a href=\"https://framagit.org/fiat-tux/"
|
||||
"hat-softwares/lutim\">page du projet</a>."
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:145
|
||||
msgid "Are you sure you want to delete the image ${short}?"
|
||||
msgstr "Êtes-vous sûr·e de vouloir supprimer l’image ${short} ?"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:294
|
||||
msgid "Sorry, the API is disabled"
|
||||
msgstr "Navré, l'API est désactivée"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:109
|
||||
msgid "Delete selected images"
|
||||
msgstr "Supprimer les images sélectionnées"
|
||||
|
||||
@@ -11,7 +11,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: 2025-10-13 07:13+0000\n"
|
||||
"PO-Revision-Date: 2020-03-09 16:23+0000\n"
|
||||
"Last-Translator: Luc Didry <luc@framasoft.org>\n"
|
||||
"Language-Team: French (France) <https://weblate.framasoft.org/projects/lutim/"
|
||||
"default-theme/fr_FR/>\n"
|
||||
@@ -20,7 +20,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 5.13.3\n"
|
||||
"X-Generator: Weblate 3.11.2\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
@@ -265,8 +265,12 @@ msgid "Is it really free (as in free beer)?"
|
||||
msgstr "C’est vraiment gratuit ?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid "The way you pronounce the French word <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr "Comme on prononce <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgid ""
|
||||
"Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/"
|
||||
"wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
"Comme on prononce <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> "
|
||||
"(/ly.tɛ̃/)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:202
|
||||
msgid "Keep EXIF tags"
|
||||
@@ -348,7 +352,7 @@ msgid ""
|
||||
"these details."
|
||||
msgstr ""
|
||||
"Seules les images envoyées avec ce navigateur seront listées ici. Les "
|
||||
"détails sont stockés en localStorage : si vous supprimez vos données "
|
||||
"détails sont stockées en localStorage : si vous supprimez vos données "
|
||||
"localStorage, vous perdrez ces détails."
|
||||
|
||||
#: themes/default/templates/about.html.ep:16
|
||||
@@ -709,15 +713,3 @@ msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-sof
|
||||
msgstr ""
|
||||
"Pour plus de détails, consultez la <a href=\"https://framagit.org/fiat-tux/"
|
||||
"hat-softwares/lutim\">page du projet</a>."
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:145
|
||||
msgid "Are you sure you want to delete the image ${short}?"
|
||||
msgstr "Êtes-vous sûr·e de vouloir supprimer l’image ${short} ?"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:294
|
||||
msgid "Sorry, the API is disabled"
|
||||
msgstr "Navré, l'API est désactivée"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:109
|
||||
msgid "Delete selected images"
|
||||
msgstr "Supprimer les images sélectionnées"
|
||||
|
||||
@@ -1,643 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: 2024-06-06 16:59+0000\n"
|
||||
"Last-Translator: Milo Ivir <mail@milotype.de>\n"
|
||||
"Language-Team: Croatian <https://weblate.framasoft.org/projects/lutim/"
|
||||
"default-theme/hr/>\n"
|
||||
"Language: hr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 5.5.5\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
#. ($delay)
|
||||
#. (config('max_delay')
|
||||
#: lib/Lutim/Command/cron/stats.pm:156 lib/Lutim/Command/cron/stats.pm:157 lib/Lutim/Command/cron/stats.pm:170 lib/Lutim/Command/cron/stats.pm:171 lib/Lutim/Command/cron/stats.pm:187 lib/Lutim/Command/cron/stats.pm:188 themes/default/templates/myfiles.html.ep:24 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:34 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:14 themes/default/templates/partial/for_my_delay.html.ep:4 themes/default/templates/partial/lutim.js.ep:140 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/lutim.js.ep:150 themes/default/templates/partial/raw.js.ep:23 themes/default/templates/partial/raw.js.ep:24 themes/default/templates/partial/raw.js.ep:6 themes/default/templates/partial/raw.js.ep:7 themes/default/templates/raw.html.ep:8 themes/default/templates/raw.html.ep:9
|
||||
msgid "%1 days"
|
||||
msgstr "%1 dana"
|
||||
|
||||
#. ($total)
|
||||
#: themes/default/templates/stats.html.ep:2
|
||||
msgid "%1 sent images on this instance from beginning."
|
||||
msgstr "Broj poslanih slika u ovoj instanci od početka: %1."
|
||||
|
||||
#: themes/default/templates/index.html.ep:228
|
||||
msgid "-or-"
|
||||
msgstr "-ili-"
|
||||
|
||||
#: lib/Lutim.pm:342 lib/Lutim/Command/cron/stats.pm:158 lib/Lutim/Command/cron/stats.pm:172 lib/Lutim/Command/cron/stats.pm:189 themes/default/templates/index.html.ep:5 themes/default/templates/myfiles.html.ep:5 themes/default/templates/partial/raw.js.ep:25 themes/default/templates/partial/raw.js.ep:8 themes/default/templates/raw.html.ep:10
|
||||
msgid "1 year"
|
||||
msgstr "1 godina"
|
||||
|
||||
#: lib/Lutim.pm:341 lib/Lutim/Command/cron/stats.pm:155 lib/Lutim/Command/cron/stats.pm:169 lib/Lutim/Command/cron/stats.pm:186 themes/default/templates/index.html.ep:4 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/raw.js.ep:22 themes/default/templates/partial/raw.js.ep:5 themes/default/templates/raw.html.ep:7
|
||||
msgid "24 hours"
|
||||
msgstr "24 sata"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:210
|
||||
msgid ": Error while trying to get the counter."
|
||||
msgstr ": Greška u dohvaćanju brojača."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:63
|
||||
msgid "About"
|
||||
msgstr "O programu"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:151 themes/default/templates/raw.html.ep:3
|
||||
msgid "Active images"
|
||||
msgstr "Aktivne slike"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:329
|
||||
msgid "An error occured while downloading the image."
|
||||
msgstr "Dogodila se greška prilikom preuzimanja slike."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:2
|
||||
msgid "Archives download"
|
||||
msgstr "Preuzimanje arhiva"
|
||||
|
||||
#: themes/default/templates/about.html.ep:44 themes/default/templates/myfiles.html.ep:129 themes/default/templates/stats.html.ep:25
|
||||
msgid "Back to homepage"
|
||||
msgstr "Natrag na web-stranicu"
|
||||
|
||||
#: themes/default/templates/index.html.ep:231 themes/default/templates/index.html.ep:232
|
||||
msgid "Click to open the file browser"
|
||||
msgstr "Pritisni za otvaranje preglednika datoteka"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:51
|
||||
msgid "Close"
|
||||
msgstr "Zatvori"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:29
|
||||
msgid "Close (Esc)"
|
||||
msgstr "Zatvori (Esc)"
|
||||
|
||||
#: themes/default/templates/about.html.ep:30
|
||||
msgid "Contributors"
|
||||
msgstr "Doprinositelji"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:113 themes/default/templates/partial/common.js.ep:93
|
||||
msgid "Copied to clipboard"
|
||||
msgstr "Kopirano u međuspremnik"
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:215 themes/default/templates/partial/lutim.js.ep:278 themes/default/templates/partial/lutim.js.ep:364
|
||||
msgid "Copy all view links to clipboard"
|
||||
msgstr "Kopiraj sve poveznice prikaza u međuspremnik"
|
||||
|
||||
#: themes/default/templates/index.html.ep:105 themes/default/templates/index.html.ep:16 themes/default/templates/index.html.ep:32 themes/default/templates/index.html.ep:48 themes/default/templates/index.html.ep:81 themes/default/templates/index.html.ep:89 themes/default/templates/index.html.ep:97 themes/default/templates/myfiles.html.ep:66 themes/default/templates/myfiles.html.ep:82 themes/default/templates/myfiles.html.ep:98 themes/default/templates/partial/common.js.ep:186 themes/default/templates/partial/lutim.js.ep:106 themes/default/templates/partial/lutim.js.ep:121 themes/default/templates/partial/lutim.js.ep:80 themes/default/templates/partial/lutim.js.ep:92 themes/default/templates/partial/myfiles.js.ep:172
|
||||
msgid "Copy to clipboard"
|
||||
msgstr "Kopiraj u međuspremnik"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:117
|
||||
msgid "Counter"
|
||||
msgstr "Brojač"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:18
|
||||
msgid "Delay repartition chart for disabled images"
|
||||
msgstr "Dijagram odgode raspodjele za isključene slike"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:15
|
||||
msgid "Delay repartition chart for enabled images"
|
||||
msgstr "Dijagram odgode raspodjele za uključene slike"
|
||||
|
||||
#: themes/default/templates/index.html.ep:127 themes/default/templates/index.html.ep:159 themes/default/templates/index.html.ep:203 themes/default/templates/myfiles.html.ep:118 themes/default/templates/myfiles.html.ep:45 themes/default/templates/partial/lutim.js.ep:161
|
||||
msgid "Delete at first view?"
|
||||
msgstr "Izbrisati pri prvom prikazu?"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:152 themes/default/templates/raw.html.ep:4
|
||||
msgid "Deleted images"
|
||||
msgstr "Izbrisane slike"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:153 themes/default/templates/raw.html.ep:5
|
||||
msgid "Deleted images in 30 days"
|
||||
msgstr "Izbrisane slike u 30 dana"
|
||||
|
||||
#: themes/default/templates/index.html.ep:110 themes/default/templates/myfiles.html.ep:121 themes/default/templates/partial/common.js.ep:178 themes/default/templates/partial/common.js.ep:181
|
||||
msgid "Deletion link"
|
||||
msgstr "Poveznica za brisanje"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:10
|
||||
msgid "Download all images"
|
||||
msgstr "Preuzmi sve slike"
|
||||
|
||||
#: themes/default/templates/index.html.ep:93 themes/default/templates/index.html.ep:95 themes/default/templates/partial/lutim.js.ep:102 themes/default/templates/partial/lutim.js.ep:98
|
||||
msgid "Download link"
|
||||
msgstr "Poveznica za preuzimanje"
|
||||
|
||||
#: themes/default/templates/index.html.ep:26 themes/default/templates/index.html.ep:28 themes/default/templates/myfiles.html.ep:76 themes/default/templates/myfiles.html.ep:78
|
||||
msgid "Download zip link"
|
||||
msgstr "Poveznica za preuzimanje zip-a"
|
||||
|
||||
#: themes/default/templates/index.html.ep:227
|
||||
msgid "Drag & drop images here"
|
||||
msgstr "Povuci i ispusti slike ovamo"
|
||||
|
||||
#: themes/default/templates/about.html.ep:7
|
||||
msgid "Drag and drop an image in the appropriate area or use the traditional way to send files and Lutim will provide you four URLs. One to view the image, an other to directly download it, one you can use on social networks and a last to delete the image when you want."
|
||||
msgstr ""
|
||||
"Povuci i ispusti sliku u odgovarajuće područje ili koristi tradicionalni "
|
||||
"način slanja datoteka i Lutim će ti dati četiri URL-a. Jedan za pregled "
|
||||
"slike, drugi za izravno preuzimanje, jedan koji možeš koristiti na "
|
||||
"društvenim mrežama i zadnji za brisanje slike kada želiš."
|
||||
|
||||
#: themes/default/templates/index.html.ep:162 themes/default/templates/index.html.ep:206
|
||||
msgid "Encrypt the image (Lutim does not keep the key)."
|
||||
msgstr "Šifriraj sliku (Lutim ne čuva ključ)."
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:45 themes/default/templates/partial/myfiles.js.ep:128
|
||||
msgid "Error while trying to modify the image."
|
||||
msgstr "Greška prilikom pokušaja stvaranja promjena u slici."
|
||||
|
||||
#: themes/default/templates/stats.html.ep:10
|
||||
msgid "Evolution of total files"
|
||||
msgstr "Razvoj ukupnog broja datoteka"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:120
|
||||
msgid "Expires at"
|
||||
msgstr "Isteče"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:106
|
||||
msgid "Export localStorage data"
|
||||
msgstr "Izvezi podatke lokalnog spremišta"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:115
|
||||
msgid "File name"
|
||||
msgstr "Ime datoteke"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"Pogledaj detalje na <a href=\"https://framagit.org/fiat-tux/hat-softwares/"
|
||||
"lutim\">web-stranici projekta</a>."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:66
|
||||
msgid "Fork me!"
|
||||
msgstr "Kopiraj granu!"
|
||||
|
||||
#: themes/default/templates/index.html.ep:10 themes/default/templates/index.html.ep:12 themes/default/templates/myfiles.html.ep:60 themes/default/templates/myfiles.html.ep:62
|
||||
msgid "Gallery link"
|
||||
msgstr "Poveznica galerije"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:116 themes/default/templates/partial/common.js.ep:134
|
||||
msgid "Hit Ctrl+C, then Enter to copy the short link"
|
||||
msgstr "Pritisni Ctrl+C, zatim Enter za kopiranje kratke poveznice"
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:47
|
||||
msgid "Homepage"
|
||||
msgstr "Web-stranica"
|
||||
|
||||
#: themes/default/templates/about.html.ep:20
|
||||
msgid "How do you pronounce Lutim?"
|
||||
msgstr "Kako se izgovara Lutim?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:6
|
||||
msgid "How does it work?"
|
||||
msgstr "Kako radi?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:18
|
||||
msgid "How to report an image?"
|
||||
msgstr "Kako prijaviti sliku?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:14
|
||||
msgid "If the files are deleted if you ask it while posting it, their SHA512 footprint are retained."
|
||||
msgstr ""
|
||||
"Ako se datoteke izbrišu ako to zatražiš dok ih objavljuješ, njihov SHA512 "
|
||||
"otisak se zadržava."
|
||||
|
||||
#: themes/default/templates/index.html.ep:188 themes/default/templates/index.html.ep:241
|
||||
msgid "Image URL"
|
||||
msgstr "URL adresa slike"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:150 themes/default/templates/raw.html.ep:2
|
||||
msgid "Image delay"
|
||||
msgstr "Kašnjenje slike"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:157
|
||||
msgid "Image deleted"
|
||||
msgstr "Slika izbrisana"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:799
|
||||
msgid "Image not found."
|
||||
msgstr "Slika nije pronađena."
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:107
|
||||
msgid "Import localStorage data"
|
||||
msgstr "Uvezi podatke lokalnog spremišta"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:55
|
||||
msgid "Informations"
|
||||
msgstr "Informacije"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:25
|
||||
msgid "Install webapp"
|
||||
msgstr "Instaliraj web-aplikaciju"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:21
|
||||
msgid "Instance's statistics"
|
||||
msgstr "Statistika instance"
|
||||
|
||||
#: themes/default/templates/about.html.ep:11
|
||||
msgid "Is it really anonymous?"
|
||||
msgstr "Je li stvarno anonimno?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:9
|
||||
msgid "Is it really free (as in free beer)?"
|
||||
msgstr "Je li se stvarno može besplatno koristiti?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid "The way you pronounce the French word <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr "Isto kao izgovaranje francuske riječi <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:165 themes/default/templates/index.html.ep:209
|
||||
msgid "Keep EXIF tags"
|
||||
msgstr "Zadrži EXIF oznake"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:43
|
||||
msgid "Language"
|
||||
msgstr "Jezik"
|
||||
|
||||
#: themes/default/templates/index.html.ep:130 themes/default/templates/index.html.ep:191 themes/default/templates/index.html.ep:244 themes/default/templates/partial/lutim.js.ep:165
|
||||
msgid "Let's go!"
|
||||
msgstr "Kreni!"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:60
|
||||
msgid "License:"
|
||||
msgstr "Licenca:"
|
||||
|
||||
#: themes/default/templates/index.html.ep:101 themes/default/templates/index.html.ep:103 themes/default/templates/partial/lutim.js.ep:112 themes/default/templates/partial/lutim.js.ep:116
|
||||
msgid "Link for share on social networks"
|
||||
msgstr "Poveznica za dijeljenje na društvenim mrežama"
|
||||
|
||||
#: themes/default/templates/login.html.ep:8
|
||||
msgid "Login"
|
||||
msgstr "Prijava"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:33
|
||||
msgid "Logout"
|
||||
msgstr "Odjava"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:7
|
||||
msgid "Lutim can't zip so many images at once, so it splitted your demand in multiple URLs."
|
||||
msgstr ""
|
||||
"Lutim ne može komprimirati toliko slika odjednom. Tvoj zahtjev je stoga "
|
||||
"podijeljen na više URL-ova."
|
||||
|
||||
#: themes/default/templates/about.html.ep:4
|
||||
msgid "Lutim is a free (as in free beer) and anonymous image hosting service. It's also the name of the free (as in free speech) software which provides this service."
|
||||
msgstr ""
|
||||
"Lutim je besplatna i anonimna hosting usluga za slike. To je također ime "
|
||||
"slobodnog softvera koji pruža ovu uslugu."
|
||||
|
||||
#: themes/default/templates/about.html.ep:25
|
||||
msgid "Main developers"
|
||||
msgstr "Glavni programeri"
|
||||
|
||||
#: themes/default/templates/index.html.ep:85 themes/default/templates/index.html.ep:87 themes/default/templates/partial/lutim.js.ep:86 themes/default/templates/partial/lutim.js.ep:89
|
||||
msgid "Markdown syntax"
|
||||
msgstr "Markdown sintaksa"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:179
|
||||
msgid "Modify expiration delay"
|
||||
msgstr "Promijeni odgodu isteka"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:7 themes/default/templates/partial/navbar.html.ep:18
|
||||
msgid "My images"
|
||||
msgstr "Moje slike"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:45
|
||||
msgid "Next (arrow right)"
|
||||
msgstr "Sljedeće (desna strelica)"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:120 themes/default/templates/partial/myfiles.js.ep:162
|
||||
msgid "No limit"
|
||||
msgstr "Bez ograničenja"
|
||||
|
||||
#: themes/default/templates/index.html.ep:177 themes/default/templates/index.html.ep:221
|
||||
msgid "No watermark"
|
||||
msgstr "Bez vodenog žiga"
|
||||
|
||||
#: themes/default/templates/index.html.ep:190 themes/default/templates/index.html.ep:236
|
||||
msgid "Only images are allowed"
|
||||
msgstr "Dozvoljene su samo slike"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:11
|
||||
msgid "Only the images sent with this browser will be listed here. The details are stored in localStorage: if you delete your localStorage data, you'll loose these details."
|
||||
msgstr ""
|
||||
"Ovdje će biti navedene samo slike poslane ovim preglednikom. Detalji se "
|
||||
"spremaju u lokalno spremište: ako izbrišeš svoje podatke lokalnog spremišta, "
|
||||
"izgubit ćeš te detalje."
|
||||
|
||||
#: themes/default/templates/about.html.ep:16
|
||||
msgid "Only the uploader! (well, only if he's the only owner of the images' rights before the upload)"
|
||||
msgstr ""
|
||||
"Samo prenositelj! (zapravo, samo ako je on jedini vlasnik prava na slike "
|
||||
"prije prijenosa)"
|
||||
|
||||
#: themes/default/templates/login.html.ep:12
|
||||
msgid "Password"
|
||||
msgstr "Lozinka"
|
||||
|
||||
#: themes/default/templates/zip.html.ep:12
|
||||
msgid "Please click on each URL to download the different zip files."
|
||||
msgstr "Pritisni svaki URL za preuzimanje zip datoteka."
|
||||
|
||||
#. (config('contact')
|
||||
#: themes/default/templates/about.html.ep:19
|
||||
msgid "Please contact the administrator: %1"
|
||||
msgstr "Kontaktiraj administratora: %1"
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:36
|
||||
msgid "Please, check your credentials: unable to authenticate."
|
||||
msgstr "Provjeri svoje podatke autentifikacije: autentifikacija je neuspjela."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:43
|
||||
msgid "Previous (arrow left)"
|
||||
msgstr "Prethodno (lijeva strelica)"
|
||||
|
||||
#: themes/default/templates/index.html.ep:42 themes/default/templates/index.html.ep:44 themes/default/templates/myfiles.html.ep:92 themes/default/templates/myfiles.html.ep:94
|
||||
msgid "Random image link"
|
||||
msgstr "Poveznica slučajne slike"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:22
|
||||
msgid "Raw stats"
|
||||
msgstr "Neobrađena statistika"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:52
|
||||
msgid "Save changes"
|
||||
msgstr "Spremi promjene"
|
||||
|
||||
#: themes/default/templates/index.html.ep:183
|
||||
msgid "Send an image"
|
||||
msgstr "Pošalji sliku"
|
||||
|
||||
#: themes/default/templates/login.html.ep:16 themes/default/templates/logout.html.ep:5 themes/default/templates/partial/navbar.html.ep:37
|
||||
msgid "Signin"
|
||||
msgstr "Prijava"
|
||||
|
||||
#: themes/default/templates/index.html.ep:174 themes/default/templates/index.html.ep:218
|
||||
msgid "Single watermark"
|
||||
msgstr "Jedan vodeni žig"
|
||||
|
||||
#: themes/default/templates/index.html.ep:145 themes/default/templates/partial/gallery.js.ep:211 themes/default/templates/partial/lutim.js.ep:176
|
||||
msgid "Something bad happened"
|
||||
msgstr "Dogodila se greška"
|
||||
|
||||
#. ($c->config('contact')
|
||||
#: lib/Lutim/Controller/Image.pm:806
|
||||
msgid "Something went wrong when creating the zip file. Try again later or contact the administrator (%1)."
|
||||
msgstr ""
|
||||
"Dogodila se greška prilikom izrade zip datoteke. Pokušaj ponovo kasnije ili "
|
||||
"kontaktiraj administratora (%1)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:13
|
||||
msgid "The IP address of the image's sender is retained for a delay which depends of the administrator's choice (for the official instance, which is located in France, it's one year)."
|
||||
msgstr ""
|
||||
"IP adresa pošiljatelja slike zadržava se odgodom koja ovisi o izboru "
|
||||
"administratora (za službenu instancu, koja se nalazi u Francuskoj, to je "
|
||||
"godinu dana)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:23
|
||||
msgid "The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/Free_software\">free software</a>, which allows you to download and install it on you own server. Have a look at the <a href=\"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
|
||||
msgstr ""
|
||||
"Softver Lutim je <a href=\"http://en.wikipedia.org/wiki/Free_software\""
|
||||
">slobodan softver</a> koji omogućuje preuzmanje i instaliranje softvera na "
|
||||
"vlastiti server. Pogledaj <a href=\"https://www.gnu.org/licenses/agpl-3.0."
|
||||
"html\">AGPL</a> za prikaz mogućnosti."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:348
|
||||
msgid "The URL is not valid."
|
||||
msgstr "URL nije ispravan."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:16
|
||||
msgid "The automatic download process will open a tab in your browser for each link. You need to allow popups for Lutim."
|
||||
msgstr ""
|
||||
"Automatski postupak preuzimanja otvorit će karticu u tvom pregledniku za "
|
||||
"svaku poveznicu. Moraš dozvoliti skočne prozore za Lutim."
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:32
|
||||
msgid "The data has been successfully imported."
|
||||
msgstr "Podaci su uspješno uvezeni."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:160 lib/Lutim/Controller/Image.pm:228
|
||||
msgid "The delete token is invalid."
|
||||
msgstr "Token brisanja je neispravan."
|
||||
|
||||
#. ($upload->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:531
|
||||
msgid "The file %1 is not an image."
|
||||
msgstr "Datoteka %1 nije slika."
|
||||
|
||||
#. ($tx->res->max_message_size)
|
||||
#. ($c->req->max_message_size)
|
||||
#. (config('max_file_size')
|
||||
#: lib/Lutim/Controller/Image.pm:312 lib/Lutim/Controller/Image.pm:381 themes/default/templates/partial/lutim.js.ep:249
|
||||
msgid "The file exceed the size limit (%1)"
|
||||
msgstr "Datoteka je prekoračila granicu (%1)"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:12
|
||||
msgid "The graph's datas are not updated in real-time."
|
||||
msgstr "Podaci dijagrama se ne aktualiziraju se u stvarnom vremenu."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:230
|
||||
msgid "The image %1 has already been deleted."
|
||||
msgstr "Slika %1 je već izbrisana."
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:239 lib/Lutim/Controller/Image.pm:244
|
||||
msgid "The image %1 has been successfully deleted"
|
||||
msgstr "Slika %1 je uspješno izbrisana"
|
||||
|
||||
#: themes/default/templates/index.html.ep:57
|
||||
msgid "The images are encrypted on the server (Lutim does not keep the key)."
|
||||
msgstr "Slike su šifrirane na serveru (Lutim ne čuva ključ)."
|
||||
|
||||
#: themes/default/templates/about.html.ep:5
|
||||
msgid "The images you post on Lutim can be stored indefinitely or be deleted at first view or after a delay selected from those proposed."
|
||||
msgstr ""
|
||||
"Slike koje objeviš na Lutimu mogu se spremiti na neodređeno vrijeme ili se "
|
||||
"mogu izbrisati pri prvom pregledu ili nakon odabrane odgode od predloženih."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:168
|
||||
msgid "The image’s delay has been successfully modified"
|
||||
msgstr "Kašnjenje slike je uspješno promijenjeno"
|
||||
|
||||
#: themes/default/templates/partial/gallery.js.ep:277
|
||||
msgid "There is XXXX image(s) in the gallery"
|
||||
msgstr "Galerija sadrži XXXX slika"
|
||||
|
||||
#. ($c->config->{contact})
|
||||
#: lib/Lutim/Controller/Image.pm:528
|
||||
msgid "There is no more available URL. Retry or contact the administrator. %1"
|
||||
msgstr ""
|
||||
"Nema više dostupnog URL-a. Pokušaj ponovo ili kontaktiraj administratora. %1"
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:215
|
||||
msgid "Tiling watermark"
|
||||
msgstr "Pločasti vodeni žig"
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:30
|
||||
msgid "Toggle fullscreen"
|
||||
msgstr "Uključi/isključi cjeloekranski prikaz"
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:8
|
||||
msgid "Toggle navigation"
|
||||
msgstr "Uključi/isključi navigaciju"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:159 themes/default/templates/raw.html.ep:11
|
||||
msgid "Total"
|
||||
msgstr "Ukupno"
|
||||
|
||||
#: themes/default/templates/index.html.ep:72 themes/default/templates/partial/lutim.js.ep:17
|
||||
msgid "Tweet it!"
|
||||
msgstr "Pošalji tweet!"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:110 themes/default/templates/partial/common.js.ep:90
|
||||
msgid "Unable to copy to clipboard"
|
||||
msgstr "Neuspjelo kopiranje u međuspremink"
|
||||
|
||||
#. ($short)
|
||||
#: lib/Lutim/Controller/Image.pm:108 lib/Lutim/Controller/Image.pm:202 lib/Lutim/Controller/Image.pm:273
|
||||
msgid "Unable to find the image %1."
|
||||
msgstr "Neuspjelo pronalaženje slike %1."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:617 lib/Lutim/Controller/Image.pm:662 lib/Lutim/Controller/Image.pm:703 lib/Lutim/Controller/Image.pm:746 lib/Lutim/Controller/Image.pm:758 lib/Lutim/Controller/Image.pm:769 lib/Lutim/Controller/Image.pm:796 lib/Lutim/Plugin/Helpers.pm:89
|
||||
msgid "Unable to find the image: it has been deleted."
|
||||
msgstr "Neuspjelo pronalaženje slike: slika je izbrisana."
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:145
|
||||
msgid "Unable to get counter"
|
||||
msgstr "Neuspjelo dohvaćanje brojača"
|
||||
|
||||
#: themes/default/templates/about.html.ep:17
|
||||
msgid "Unlike many image sharing services, you don't give us rights on uploaded images."
|
||||
msgstr ""
|
||||
"Za razliku od mnogih usluga za dijeljenje slika, ne daješ nam prava za "
|
||||
"prenesene slike."
|
||||
|
||||
#: themes/default/templates/index.html.ep:187 themes/default/templates/index.html.ep:239
|
||||
msgid "Upload an image with its URL"
|
||||
msgstr "Prenesi sliku s ovim URL-om"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:119
|
||||
msgid "Uploaded at"
|
||||
msgstr "Preneseno"
|
||||
|
||||
#: themes/default/templates/stats.html.ep:6
|
||||
msgid "Uploaded files by days"
|
||||
msgstr "Prenesene datoteke po danima"
|
||||
|
||||
#. ($c->app->config('contact')
|
||||
#: lib/Lutim/Plugin/Helpers.pm:222
|
||||
msgid "Uploading is currently disabled, please try later or contact the administrator (%1)."
|
||||
msgstr ""
|
||||
"Prijenos je trenutačno onemogućen, pokušaj kasnije ili kontaktiraj "
|
||||
"administratora (%1)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:77 themes/default/templates/index.html.ep:79 themes/default/templates/myfiles.html.ep:116 themes/default/templates/partial/lutim.js.ep:72 themes/default/templates/partial/lutim.js.ep:76
|
||||
msgid "View link"
|
||||
msgstr "Pogledaj poveznicu"
|
||||
|
||||
#: themes/default/templates/about.html.ep:22
|
||||
msgid "What about the software which provides the service?"
|
||||
msgstr "Što je sa softverom koji pruža uslugu?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:3
|
||||
msgid "What is Lutim?"
|
||||
msgstr "Što je Lutim?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:15
|
||||
msgid "Who owns rights on images uploaded on Lutim?"
|
||||
msgstr "Tko posjeduje prava nad slikama postavljene na Lutimu?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:12
|
||||
msgid "Yes, it is! On the other side, for legal reasons, your IP address will be stored when you send an image. Don't panic, it is normally the case of all sites on which you send files!"
|
||||
msgstr ""
|
||||
"Da, je! Međutim, iz pravnih razloga, tvoja IP adresa će se spremiti kada "
|
||||
"pošalješ sliku. Bez panike, to je normalno za sve stranice na koje šalješ "
|
||||
"datoteke!"
|
||||
|
||||
#: themes/default/templates/about.html.ep:10
|
||||
msgid "Yes, it is! On the other side, if you want to support the developer, you can do it via <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> or via <a href=\"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
msgstr ""
|
||||
"Da, je! Međutim, ako želiš podržati programera, to možete učiniti putem "
|
||||
"usluge <a href=\"https://www.tipeee.com/fiat-tux\">Tipeee</a> ili <a href=\" "
|
||||
"https://liberapay.com/sky/\">Liberapay</a>."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:6
|
||||
msgid "You asked to download a zip archive for too much files."
|
||||
msgstr "Zatražio/la si preuzimanje zip arhive za previše datoteka."
|
||||
|
||||
#: themes/default/templates/about.html.ep:8
|
||||
msgid "You can, optionally, request that the image(s) posted on Lutim to be deleted at first view (or download) or after the delay selected from those proposed."
|
||||
msgstr ""
|
||||
"Opcionalno možeš zatražiti da se objavljene slike na Lutimu izbrišu pri "
|
||||
"prvom pregledu (ili preuzimanju) ili nakon odabrane odgode od predloženih."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:27
|
||||
msgid "You have been successfully logged in."
|
||||
msgstr "Uspješno si prijavljan/a."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:66 themes/default/templates/logout.html.ep:3
|
||||
msgid "You have been successfully logged out."
|
||||
msgstr "Uspješno si odjevljen/a."
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:31
|
||||
msgid "Zoom in/out"
|
||||
msgstr "Uvećaj/Umanji prikaz"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "and on"
|
||||
msgstr "i na"
|
||||
|
||||
#: themes/default/templates/about.html.ep:40
|
||||
msgid "arabic translation"
|
||||
msgstr "prijevod na arapski"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "core developer"
|
||||
msgstr "izvorni programer"
|
||||
|
||||
#: lib/Lutim.pm:340 lib/Lutim/Command/cron/stats.pm:154 lib/Lutim/Command/cron/stats.pm:168 lib/Lutim/Command/cron/stats.pm:185 themes/default/templates/index.html.ep:3 themes/default/templates/myfiles.html.ep:3 themes/default/templates/partial/raw.js.ep:21 themes/default/templates/partial/raw.js.ep:4 themes/default/templates/raw.html.ep:6
|
||||
msgid "no time limit"
|
||||
msgstr "bez vremenskog ograničenja"
|
||||
|
||||
#: themes/default/templates/about.html.ep:38
|
||||
msgid "occitan translation"
|
||||
msgstr "prijevod na okcitanski"
|
||||
|
||||
#: themes/default/templates/about.html.ep:27
|
||||
msgid "on"
|
||||
msgstr "na"
|
||||
|
||||
#: themes/default/templates/about.html.ep:39
|
||||
msgid "paste image to upload ability"
|
||||
msgstr "umetni sliku za mogućnost prijenosa"
|
||||
|
||||
#: themes/default/templates/about.html.ep:41
|
||||
msgid "russian translation"
|
||||
msgstr "prijevod na ruski"
|
||||
|
||||
#: themes/default/templates/about.html.ep:36
|
||||
msgid "spanish translation"
|
||||
msgstr "prijevod na španjolski"
|
||||
|
||||
#: themes/default/templates/about.html.ep:28
|
||||
msgid "webapp developer"
|
||||
msgstr "programer web-aplikacije"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:294
|
||||
msgid "Sorry, the API is disabled"
|
||||
msgstr "Nažalost je API deaktiviran"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:145
|
||||
msgid "Are you sure you want to delete the image ${short}?"
|
||||
msgstr "Stvarno želiš izbrisati sliku ${short}?"
|
||||
@@ -3,8 +3,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: 2025-10-13 07:13+0000\n"
|
||||
"Last-Translator: Ghost of Sparta <makesocialfoss32@keemail.me>\n"
|
||||
"PO-Revision-Date: 2020-04-10 17:08+0000\n"
|
||||
"Last-Translator: Balázs Meskó <mesko.balazs@fsf.hu>\n"
|
||||
"Language-Team: Hungarian <https://weblate.framasoft.org/projects/lutim/"
|
||||
"default-theme/hu/>\n"
|
||||
"Language: hu\n"
|
||||
@@ -12,7 +12,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.13.3\n"
|
||||
"X-Generator: Weblate 3.11.2\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
@@ -256,8 +256,12 @@ msgid "Is it really free (as in free beer)?"
|
||||
msgstr "Tényleg ingyenes?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid "The way you pronounce the French word <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr "Pont úgy, ahogy a francia <a href=\"%1\">lutin</a> szót (/ly.tɛ̃/)."
|
||||
msgid ""
|
||||
"Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/"
|
||||
"wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
"Pont úgy, ahogy a francia <a href=\"https://fr.wikipedia.org/wiki/"
|
||||
"Lutin\">lutin</a> szót (/ly.tɛ̃/)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:202
|
||||
msgid "Keep EXIF tags"
|
||||
@@ -694,16 +698,3 @@ msgstr "Egy vízjel"
|
||||
#: themes/default/templates/index.html.ep:177 themes/default/templates/index.html.ep:221
|
||||
msgid "No watermark"
|
||||
msgstr "Nincs vízjel"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:294
|
||||
msgid "Sorry, the API is disabled"
|
||||
msgstr "Sajnáljuk, az API le van tiltva"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:145
|
||||
msgid "Are you sure you want to delete the image ${short}?"
|
||||
msgstr "Biztosan törölni szeretné a(z) ${short} képet?"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:109
|
||||
#, fuzzy
|
||||
msgid "Delete selected images"
|
||||
msgstr "."
|
||||
|
||||
@@ -4,8 +4,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: 2024-12-11 17:28+0000\n"
|
||||
"Last-Translator: Giuseppe De Ninno <peppedeninno@gmail.com>\n"
|
||||
"PO-Revision-Date: 2020-06-09 19:24+0000\n"
|
||||
"Last-Translator: roberto marcolin <nilogadda@gmail.com>\n"
|
||||
"Language-Team: Italian <https://weblate.framasoft.org/projects/lutim/"
|
||||
"default-theme/it/>\n"
|
||||
"Language: it\n"
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.8.4\n"
|
||||
"X-Generator: Weblate 3.11.2\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
@@ -258,8 +258,12 @@ msgid "Is it really free (as in free beer)?"
|
||||
msgstr "È veramente gratuita (come in birra gratis)?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid "The way you pronounce the French word <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr "Come si pronuncia la parola francese <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgid ""
|
||||
"Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/"
|
||||
"wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
"Come si pronuncia la parola francese <a href=\"https://fr.wikipedia.org/wiki/"
|
||||
"Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:202
|
||||
msgid "Keep EXIF tags"
|
||||
@@ -699,7 +703,3 @@ msgstr "Filigrana semplice"
|
||||
#: themes/default/templates/index.html.ep:177 themes/default/templates/index.html.ep:221
|
||||
msgid "No watermark"
|
||||
msgstr "Nessuna filigrana"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:145
|
||||
msgid "Are you sure you want to delete the image ${short}?"
|
||||
msgstr "Sei sicuro di voler cancellare l'immagine ${short}?"
|
||||
|
||||
@@ -19,7 +19,7 @@ msgstr ""
|
||||
#. (30)
|
||||
#. ($delay)
|
||||
#. (config('max_delay')
|
||||
#: lib/Lutim/Command/cron/stats.pm:156 lib/Lutim/Command/cron/stats.pm:157 lib/Lutim/Command/cron/stats.pm:170 lib/Lutim/Command/cron/stats.pm:171 lib/Lutim/Command/cron/stats.pm:187 lib/Lutim/Command/cron/stats.pm:188 themes/default/templates/myfiles.html.ep:24 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:34 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:14 themes/default/templates/partial/for_my_delay.html.ep:4 themes/default/templates/partial/lutim.js.ep:129 themes/default/templates/partial/lutim.js.ep:138 themes/default/templates/partial/lutim.js.ep:139
|
||||
#: lib/Lutim/Command/cron/stats.pm:156 lib/Lutim/Command/cron/stats.pm:157 lib/Lutim/Command/cron/stats.pm:170 lib/Lutim/Command/cron/stats.pm:171 lib/Lutim/Command/cron/stats.pm:187 lib/Lutim/Command/cron/stats.pm:188 themes/default/templates/myfiles.html.ep:24 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:34 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/for_my_delay.html.ep:14 themes/default/templates/partial/for_my_delay.html.ep:4 themes/default/templates/partial/lutim.js.ep:140 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/lutim.js.ep:150 themes/default/templates/partial/raw.js.ep:23 themes/default/templates/partial/raw.js.ep:24 themes/default/templates/partial/raw.js.ep:6 themes/default/templates/partial/raw.js.ep:7 themes/default/templates/raw.html.ep:8 themes/default/templates/raw.html.ep:9
|
||||
msgid "%1 days"
|
||||
msgstr ""
|
||||
|
||||
@@ -28,31 +28,31 @@ msgstr ""
|
||||
msgid "%1 sent images on this instance from beginning."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:227
|
||||
#: themes/default/templates/index.html.ep:228
|
||||
msgid "-or-"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim.pm:346 lib/Lutim/Command/cron/stats.pm:158 lib/Lutim/Command/cron/stats.pm:172 lib/Lutim/Command/cron/stats.pm:189 themes/default/templates/index.html.ep:5 themes/default/templates/myfiles.html.ep:5
|
||||
#: lib/Lutim.pm:347 lib/Lutim/Command/cron/stats.pm:158 lib/Lutim/Command/cron/stats.pm:172 lib/Lutim/Command/cron/stats.pm:189 themes/default/templates/index.html.ep:5 themes/default/templates/myfiles.html.ep:5 themes/default/templates/partial/raw.js.ep:25 themes/default/templates/partial/raw.js.ep:8 themes/default/templates/raw.html.ep:10
|
||||
msgid "1 year"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim.pm:345 lib/Lutim/Command/cron/stats.pm:155 lib/Lutim/Command/cron/stats.pm:169 lib/Lutim/Command/cron/stats.pm:186 themes/default/templates/index.html.ep:4 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/lutim.js.ep:138
|
||||
#: lib/Lutim.pm:346 lib/Lutim/Command/cron/stats.pm:155 lib/Lutim/Command/cron/stats.pm:169 lib/Lutim/Command/cron/stats.pm:186 themes/default/templates/index.html.ep:4 themes/default/templates/myfiles.html.ep:33 themes/default/templates/myfiles.html.ep:4 themes/default/templates/partial/for_my_delay.html.ep:13 themes/default/templates/partial/lutim.js.ep:149 themes/default/templates/partial/raw.js.ep:22 themes/default/templates/partial/raw.js.ep:5 themes/default/templates/raw.html.ep:7
|
||||
msgid "24 hours"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:245
|
||||
#: themes/default/templates/partial/myfiles.js.ep:210
|
||||
msgid ": Error while trying to get the counter."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:65
|
||||
#: themes/default/templates/partial/navbar.html.ep:63
|
||||
msgid "About"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:151
|
||||
#: lib/Lutim/Command/cron/stats.pm:151 themes/default/templates/raw.html.ep:3
|
||||
msgid "Active images"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:346
|
||||
#: lib/Lutim/Controller/Image.pm:329
|
||||
msgid "An error occured while downloading the image."
|
||||
msgstr ""
|
||||
|
||||
@@ -60,15 +60,11 @@ msgstr ""
|
||||
msgid "Archives download"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:145
|
||||
msgid "Are you sure you want to delete the image ${short}?"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:44 themes/default/templates/myfiles.html.ep:130 themes/default/templates/stats.html.ep:25
|
||||
#: themes/default/templates/about.html.ep:44 themes/default/templates/myfiles.html.ep:129 themes/default/templates/stats.html.ep:25
|
||||
msgid "Back to homepage"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:230 themes/default/templates/index.html.ep:231
|
||||
#: themes/default/templates/index.html.ep:231 themes/default/templates/index.html.ep:232
|
||||
msgid "Click to open the file browser"
|
||||
msgstr ""
|
||||
|
||||
@@ -88,15 +84,15 @@ msgstr ""
|
||||
msgid "Copied to clipboard"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:206 themes/default/templates/partial/lutim.js.ep:267 themes/default/templates/partial/lutim.js.ep:354
|
||||
#: themes/default/templates/partial/lutim.js.ep:215 themes/default/templates/partial/lutim.js.ep:278 themes/default/templates/partial/lutim.js.ep:364
|
||||
msgid "Copy all view links to clipboard"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:104 themes/default/templates/index.html.ep:16 themes/default/templates/index.html.ep:32 themes/default/templates/index.html.ep:48 themes/default/templates/index.html.ep:80 themes/default/templates/index.html.ep:88 themes/default/templates/index.html.ep:96 themes/default/templates/myfiles.html.ep:66 themes/default/templates/myfiles.html.ep:82 themes/default/templates/myfiles.html.ep:98 themes/default/templates/partial/common.js.ep:209 themes/default/templates/partial/lutim.js.ep:110 themes/default/templates/partial/lutim.js.ep:70 themes/default/templates/partial/lutim.js.ep:82 themes/default/templates/partial/lutim.js.ep:96 themes/default/templates/partial/myfiles.js.ep:183
|
||||
#: themes/default/templates/index.html.ep:105 themes/default/templates/index.html.ep:16 themes/default/templates/index.html.ep:32 themes/default/templates/index.html.ep:48 themes/default/templates/index.html.ep:81 themes/default/templates/index.html.ep:89 themes/default/templates/index.html.ep:97 themes/default/templates/myfiles.html.ep:66 themes/default/templates/myfiles.html.ep:82 themes/default/templates/myfiles.html.ep:98 themes/default/templates/partial/common.js.ep:186 themes/default/templates/partial/lutim.js.ep:106 themes/default/templates/partial/lutim.js.ep:121 themes/default/templates/partial/lutim.js.ep:80 themes/default/templates/partial/lutim.js.ep:92 themes/default/templates/partial/myfiles.js.ep:172
|
||||
msgid "Copy to clipboard"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:118
|
||||
#: themes/default/templates/myfiles.html.ep:117
|
||||
msgid "Counter"
|
||||
msgstr ""
|
||||
|
||||
@@ -108,23 +104,19 @@ msgstr ""
|
||||
msgid "Delay repartition chart for enabled images"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:126 themes/default/templates/index.html.ep:158 themes/default/templates/index.html.ep:202 themes/default/templates/myfiles.html.ep:119 themes/default/templates/myfiles.html.ep:45 themes/default/templates/partial/lutim.js.ep:150
|
||||
#: themes/default/templates/index.html.ep:127 themes/default/templates/index.html.ep:159 themes/default/templates/index.html.ep:203 themes/default/templates/myfiles.html.ep:118 themes/default/templates/myfiles.html.ep:45 themes/default/templates/partial/lutim.js.ep:161
|
||||
msgid "Delete at first view?"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:109
|
||||
msgid "Delete selected images"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:152
|
||||
#: lib/Lutim/Command/cron/stats.pm:152 themes/default/templates/raw.html.ep:4
|
||||
msgid "Deleted images"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:153
|
||||
#: lib/Lutim/Command/cron/stats.pm:153 themes/default/templates/raw.html.ep:5
|
||||
msgid "Deleted images in 30 days"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:109 themes/default/templates/myfiles.html.ep:122 themes/default/templates/partial/common.js.ep:195 themes/default/templates/partial/common.js.ep:200
|
||||
#: themes/default/templates/index.html.ep:110 themes/default/templates/myfiles.html.ep:121 themes/default/templates/partial/common.js.ep:178 themes/default/templates/partial/common.js.ep:181
|
||||
msgid "Deletion link"
|
||||
msgstr ""
|
||||
|
||||
@@ -132,7 +124,7 @@ msgstr ""
|
||||
msgid "Download all images"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:92 themes/default/templates/index.html.ep:94 themes/default/templates/partial/lutim.js.ep:88 themes/default/templates/partial/lutim.js.ep:92
|
||||
#: themes/default/templates/index.html.ep:93 themes/default/templates/index.html.ep:95 themes/default/templates/partial/lutim.js.ep:102 themes/default/templates/partial/lutim.js.ep:98
|
||||
msgid "Download link"
|
||||
msgstr ""
|
||||
|
||||
@@ -140,7 +132,7 @@ msgstr ""
|
||||
msgid "Download zip link"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:226
|
||||
#: themes/default/templates/index.html.ep:227
|
||||
msgid "Drag & drop images here"
|
||||
msgstr ""
|
||||
|
||||
@@ -148,11 +140,11 @@ msgstr ""
|
||||
msgid "Drag and drop an image in the appropriate area or use the traditional way to send files and Lutim will provide you four URLs. One to view the image, an other to directly download it, one you can use on social networks and a last to delete the image when you want."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:161 themes/default/templates/index.html.ep:205
|
||||
#: themes/default/templates/index.html.ep:162 themes/default/templates/index.html.ep:206
|
||||
msgid "Encrypt the image (Lutim does not keep the key)."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/lutim.js.ep:38 themes/default/templates/partial/myfiles.js.ep:129
|
||||
#: themes/default/templates/partial/lutim.js.ep:45 themes/default/templates/partial/myfiles.js.ep:128
|
||||
msgid "Error while trying to modify the image."
|
||||
msgstr ""
|
||||
|
||||
@@ -160,7 +152,7 @@ msgstr ""
|
||||
msgid "Evolution of total files"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:121
|
||||
#: themes/default/templates/myfiles.html.ep:120
|
||||
msgid "Expires at"
|
||||
msgstr ""
|
||||
|
||||
@@ -168,7 +160,7 @@ msgstr ""
|
||||
msgid "Export localStorage data"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:116
|
||||
#: themes/default/templates/myfiles.html.ep:115
|
||||
msgid "File name"
|
||||
msgstr ""
|
||||
|
||||
@@ -176,7 +168,7 @@ msgstr ""
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-softwares/lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:68
|
||||
#: themes/default/templates/partial/navbar.html.ep:66
|
||||
msgid "Fork me!"
|
||||
msgstr ""
|
||||
|
||||
@@ -188,7 +180,7 @@ msgstr ""
|
||||
msgid "Hit Ctrl+C, then Enter to copy the short link"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/layouts/default.html.ep:46
|
||||
#: themes/default/templates/layouts/default.html.ep:47
|
||||
msgid "Homepage"
|
||||
msgstr ""
|
||||
|
||||
@@ -208,19 +200,19 @@ msgstr ""
|
||||
msgid "If the files are deleted if you ask it while posting it, their SHA512 footprint are retained."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:187 themes/default/templates/index.html.ep:240
|
||||
#: themes/default/templates/index.html.ep:188 themes/default/templates/index.html.ep:241
|
||||
msgid "Image URL"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:150
|
||||
#: lib/Lutim/Command/cron/stats.pm:150 themes/default/templates/raw.html.ep:2
|
||||
msgid "Image delay"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:172
|
||||
#: themes/default/templates/partial/common.js.ep:157
|
||||
msgid "Image deleted"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:815
|
||||
#: lib/Lutim/Controller/Image.pm:804
|
||||
msgid "Image not found."
|
||||
msgstr ""
|
||||
|
||||
@@ -228,7 +220,7 @@ msgstr ""
|
||||
msgid "Import localStorage data"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:57
|
||||
#: themes/default/templates/partial/navbar.html.ep:55
|
||||
msgid "Informations"
|
||||
msgstr ""
|
||||
|
||||
@@ -248,23 +240,27 @@ msgstr ""
|
||||
msgid "Is it really free (as in free beer)?"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:164 themes/default/templates/index.html.ep:208
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid "Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:165 themes/default/templates/index.html.ep:209
|
||||
msgid "Keep EXIF tags"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:43 themes/default/templates/partial/navbar.html.ep:44
|
||||
#: themes/default/templates/partial/navbar.html.ep:43
|
||||
msgid "Language"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:129 themes/default/templates/index.html.ep:190 themes/default/templates/index.html.ep:243 themes/default/templates/partial/lutim.js.ep:157
|
||||
#: themes/default/templates/index.html.ep:130 themes/default/templates/index.html.ep:191 themes/default/templates/index.html.ep:244 themes/default/templates/partial/lutim.js.ep:165
|
||||
msgid "Let's go!"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:62
|
||||
#: themes/default/templates/partial/navbar.html.ep:60
|
||||
msgid "License:"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:100 themes/default/templates/index.html.ep:102 themes/default/templates/partial/lutim.js.ep:102 themes/default/templates/partial/lutim.js.ep:106
|
||||
#: themes/default/templates/index.html.ep:101 themes/default/templates/index.html.ep:103 themes/default/templates/partial/lutim.js.ep:112 themes/default/templates/partial/lutim.js.ep:116
|
||||
msgid "Link for share on social networks"
|
||||
msgstr ""
|
||||
|
||||
@@ -288,11 +284,11 @@ msgstr ""
|
||||
msgid "Main developers"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:84 themes/default/templates/index.html.ep:86 themes/default/templates/partial/lutim.js.ep:76 themes/default/templates/partial/lutim.js.ep:79
|
||||
#: themes/default/templates/index.html.ep:85 themes/default/templates/index.html.ep:87 themes/default/templates/partial/lutim.js.ep:86 themes/default/templates/partial/lutim.js.ep:89
|
||||
msgid "Markdown syntax"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:200
|
||||
#: themes/default/templates/partial/myfiles.js.ep:179
|
||||
msgid "Modify expiration delay"
|
||||
msgstr ""
|
||||
|
||||
@@ -304,15 +300,15 @@ msgstr ""
|
||||
msgid "Next (arrow right)"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:121 themes/default/templates/partial/myfiles.js.ep:163
|
||||
#: themes/default/templates/partial/myfiles.js.ep:120 themes/default/templates/partial/myfiles.js.ep:162
|
||||
msgid "No limit"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:176 themes/default/templates/index.html.ep:220
|
||||
#: themes/default/templates/index.html.ep:177 themes/default/templates/index.html.ep:221
|
||||
msgid "No watermark"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:189 themes/default/templates/index.html.ep:235
|
||||
#: themes/default/templates/index.html.ep:190 themes/default/templates/index.html.ep:236
|
||||
msgid "Only images are allowed"
|
||||
msgstr ""
|
||||
|
||||
@@ -357,7 +353,7 @@ msgstr ""
|
||||
msgid "Save changes"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:182
|
||||
#: themes/default/templates/index.html.ep:183
|
||||
msgid "Send an image"
|
||||
msgstr ""
|
||||
|
||||
@@ -365,23 +361,19 @@ msgstr ""
|
||||
msgid "Signin"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:173 themes/default/templates/index.html.ep:217
|
||||
#: themes/default/templates/index.html.ep:174 themes/default/templates/index.html.ep:218
|
||||
msgid "Single watermark"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:144 themes/default/templates/partial/gallery.js.ep:210 themes/default/templates/partial/lutim.js.ep:166
|
||||
#: themes/default/templates/index.html.ep:145 themes/default/templates/partial/gallery.js.ep:211 themes/default/templates/partial/lutim.js.ep:176
|
||||
msgid "Something bad happened"
|
||||
msgstr ""
|
||||
|
||||
#. ($c->config('contact')
|
||||
#: lib/Lutim/Controller/Image.pm:822
|
||||
#: lib/Lutim/Controller/Image.pm:811
|
||||
msgid "Something went wrong when creating the zip file. Try again later or contact the administrator (%1)."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:294
|
||||
msgid "Sorry, the API is disabled"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:13
|
||||
msgid "The IP address of the image's sender is retained for a delay which depends of the administrator's choice (for the official instance, which is located in France, it's one year)."
|
||||
msgstr ""
|
||||
@@ -390,7 +382,7 @@ msgstr ""
|
||||
msgid "The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/Free_software\">free software</a>, which allows you to download and install it on you own server. Have a look at the <a href=\"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:365
|
||||
#: lib/Lutim/Controller/Image.pm:348
|
||||
msgid "The URL is not valid."
|
||||
msgstr ""
|
||||
|
||||
@@ -402,19 +394,19 @@ msgstr ""
|
||||
msgid "The data has been successfully imported."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:161 lib/Lutim/Controller/Image.pm:229
|
||||
#: lib/Lutim/Controller/Image.pm:160 lib/Lutim/Controller/Image.pm:228
|
||||
msgid "The delete token is invalid."
|
||||
msgstr ""
|
||||
|
||||
#. ($upload->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:547
|
||||
#: lib/Lutim/Controller/Image.pm:532
|
||||
msgid "The file %1 is not an image."
|
||||
msgstr ""
|
||||
|
||||
#. ($res->max_message_size)
|
||||
#. ($tx->res->max_message_size)
|
||||
#. ($c->req->max_message_size)
|
||||
#. (config('max_file_size')
|
||||
#: lib/Lutim/Controller/Image.pm:329 lib/Lutim/Controller/Image.pm:395 themes/default/templates/partial/lutim.js.ep:239
|
||||
#: lib/Lutim/Controller/Image.pm:312 lib/Lutim/Controller/Image.pm:381 themes/default/templates/partial/lutim.js.ep:249
|
||||
msgid "The file exceed the size limit (%1)"
|
||||
msgstr ""
|
||||
|
||||
@@ -423,12 +415,12 @@ msgid "The graph's datas are not updated in real-time."
|
||||
msgstr ""
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:231
|
||||
#: lib/Lutim/Controller/Image.pm:230
|
||||
msgid "The image %1 has already been deleted."
|
||||
msgstr ""
|
||||
|
||||
#. ($image->filename)
|
||||
#: lib/Lutim/Controller/Image.pm:240 lib/Lutim/Controller/Image.pm:245
|
||||
#: lib/Lutim/Controller/Image.pm:239 lib/Lutim/Controller/Image.pm:244
|
||||
msgid "The image %1 has been successfully deleted"
|
||||
msgstr ""
|
||||
|
||||
@@ -440,25 +432,20 @@ msgstr ""
|
||||
msgid "The images you post on Lutim can be stored indefinitely or be deleted at first view or after a delay selected from those proposed."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:169
|
||||
#: lib/Lutim/Controller/Image.pm:168
|
||||
msgid "The image’s delay has been successfully modified"
|
||||
msgstr ""
|
||||
|
||||
#. ('https://fr.wikipedia.org/wiki/Lutin')
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid "The way you pronounce the French word <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/gallery.js.ep:271
|
||||
#: themes/default/templates/partial/gallery.js.ep:277
|
||||
msgid "There is XXXX image(s) in the gallery"
|
||||
msgstr ""
|
||||
|
||||
#. ($c->config->{contact})
|
||||
#: lib/Lutim/Controller/Image.pm:544
|
||||
#: lib/Lutim/Controller/Image.pm:529
|
||||
msgid "There is no more available URL. Retry or contact the administrator. %1"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:170 themes/default/templates/index.html.ep:214
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:215
|
||||
msgid "Tiling watermark"
|
||||
msgstr ""
|
||||
|
||||
@@ -470,24 +457,28 @@ msgstr ""
|
||||
msgid "Toggle navigation"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:159
|
||||
#: lib/Lutim/Command/cron/stats.pm:159 themes/default/templates/raw.html.ep:11
|
||||
msgid "Total"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:72 themes/default/templates/partial/lutim.js.ep:17
|
||||
msgid "Tweet it!"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:110 themes/default/templates/partial/common.js.ep:90
|
||||
msgid "Unable to copy to clipboard"
|
||||
msgstr ""
|
||||
|
||||
#. ($short)
|
||||
#: lib/Lutim/Controller/Image.pm:109 lib/Lutim/Controller/Image.pm:203 lib/Lutim/Controller/Image.pm:274
|
||||
#: lib/Lutim/Controller/Image.pm:108 lib/Lutim/Controller/Image.pm:202 lib/Lutim/Controller/Image.pm:273
|
||||
msgid "Unable to find the image %1."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:633 lib/Lutim/Controller/Image.pm:678 lib/Lutim/Controller/Image.pm:719 lib/Lutim/Controller/Image.pm:762 lib/Lutim/Controller/Image.pm:774 lib/Lutim/Controller/Image.pm:785 lib/Lutim/Controller/Image.pm:812 lib/Lutim/Plugin/Helpers.pm:90
|
||||
#: lib/Lutim/Controller/Image.pm:619 lib/Lutim/Controller/Image.pm:665 lib/Lutim/Controller/Image.pm:706 lib/Lutim/Controller/Image.pm:749 lib/Lutim/Controller/Image.pm:761 lib/Lutim/Controller/Image.pm:773 lib/Lutim/Controller/Image.pm:801 lib/Lutim/Plugin/Helpers.pm:126
|
||||
msgid "Unable to find the image: it has been deleted."
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:146
|
||||
#: lib/Lutim/Controller/Image.pm:145
|
||||
msgid "Unable to get counter"
|
||||
msgstr ""
|
||||
|
||||
@@ -495,11 +486,11 @@ msgstr ""
|
||||
msgid "Unlike many image sharing services, you don't give us rights on uploaded images."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:186 themes/default/templates/index.html.ep:238
|
||||
#: themes/default/templates/index.html.ep:187 themes/default/templates/index.html.ep:239
|
||||
msgid "Upload an image with its URL"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:120
|
||||
#: themes/default/templates/myfiles.html.ep:119
|
||||
msgid "Uploaded at"
|
||||
msgstr ""
|
||||
|
||||
@@ -508,11 +499,11 @@ msgid "Uploaded files by days"
|
||||
msgstr ""
|
||||
|
||||
#. ($c->app->config('contact')
|
||||
#: lib/Lutim/Plugin/Helpers.pm:223
|
||||
#: lib/Lutim/Plugin/Helpers.pm:261
|
||||
msgid "Uploading is currently disabled, please try later or contact the administrator (%1)."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:76 themes/default/templates/index.html.ep:78 themes/default/templates/myfiles.html.ep:117 themes/default/templates/partial/lutim.js.ep:62 themes/default/templates/partial/lutim.js.ep:66
|
||||
#: themes/default/templates/index.html.ep:77 themes/default/templates/index.html.ep:79 themes/default/templates/myfiles.html.ep:116 themes/default/templates/partial/lutim.js.ep:72 themes/default/templates/partial/lutim.js.ep:76
|
||||
msgid "View link"
|
||||
msgstr ""
|
||||
|
||||
@@ -568,7 +559,7 @@ msgstr ""
|
||||
msgid "core developer"
|
||||
msgstr ""
|
||||
|
||||
#: lib/Lutim.pm:344 lib/Lutim/Command/cron/stats.pm:154 lib/Lutim/Command/cron/stats.pm:168 lib/Lutim/Command/cron/stats.pm:185 themes/default/templates/index.html.ep:3 themes/default/templates/myfiles.html.ep:3
|
||||
#: lib/Lutim.pm:345 lib/Lutim/Command/cron/stats.pm:154 lib/Lutim/Command/cron/stats.pm:168 lib/Lutim/Command/cron/stats.pm:185 themes/default/templates/index.html.ep:3 themes/default/templates/myfiles.html.ep:3 themes/default/templates/partial/raw.js.ep:21 themes/default/templates/partial/raw.js.ep:4 themes/default/templates/raw.html.ep:6
|
||||
msgid "no time limit"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: 2024-12-21 21:15+0000\n"
|
||||
"PO-Revision-Date: 2020-03-09 16:30+0000\n"
|
||||
"Last-Translator: Quentin PAGÈS <quentinantonin@free.fr>\n"
|
||||
"Language-Team: Occitan <https://weblate.framasoft.org/projects/lutim/"
|
||||
"default-theme/oc/>\n"
|
||||
@@ -18,7 +18,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 5.9.1\n"
|
||||
"X-Generator: Weblate 3.11.2\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
@@ -263,8 +263,13 @@ msgid "Is it really free (as in free beer)?"
|
||||
msgstr "Es vertadièrament gratuit ?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid "The way you pronounce the French word <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr "Òm pronóncia coma en occitan lengadocian, LU-TI-N, amb una M finala que sona N, o coma la paraula francesa <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgid ""
|
||||
"Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/"
|
||||
"wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
"Òm pronóncia coma en occitan lengadocian, LU-TI-N, amb una M finala que sona "
|
||||
"N, o coma la paraula francesa <a href=\"https://fr.wikipedia.org/wiki/"
|
||||
"Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:202
|
||||
msgid "Keep EXIF tags"
|
||||
@@ -701,15 +706,3 @@ msgstr "Filigrana simpla"
|
||||
#: themes/default/templates/index.html.ep:177 themes/default/templates/index.html.ep:221
|
||||
msgid "No watermark"
|
||||
msgstr "Cap de filigrana"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:294
|
||||
msgid "Sorry, the API is disabled"
|
||||
msgstr "O planhèm, l'API es desactivada"
|
||||
|
||||
#: themes/default/templates/partial/common.js.ep:145
|
||||
msgid "Are you sure you want to delete the image ${short}?"
|
||||
msgstr "Volètz vertadièrament suprimir aqueste imatge${short} ?"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:109
|
||||
msgid "Delete selected images"
|
||||
msgstr " "
|
||||
|
||||
@@ -4,17 +4,17 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: 2022-12-15 21:38+0000\n"
|
||||
"Last-Translator: Дмитрий Кузнецов <dk65536@gmail.com>\n"
|
||||
"PO-Revision-Date: 2020-06-16 20:24+0000\n"
|
||||
"Last-Translator: Konstantin Timashov <ktimashov@hse.ru>\n"
|
||||
"Language-Team: Russian <https://weblate.framasoft.org/projects/lutim/"
|
||||
"default-theme/ru/>\n"
|
||||
"Language: ru\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 4.14.1\n"
|
||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<="
|
||||
"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 3.11.2\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
@@ -43,11 +43,11 @@ msgstr "24 часа"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:180
|
||||
msgid ": Error while trying to get the counter."
|
||||
msgstr ": Ошибка при подсчете количества ."
|
||||
msgstr ": Error while trying to get the counter."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:77
|
||||
msgid "About"
|
||||
msgstr "Подробнее"
|
||||
msgstr "О Lutim"
|
||||
|
||||
#: lib/Lutim/Command/cron/stats.pm:154 themes/default/templates/raw.html.ep:3
|
||||
msgid "Active images"
|
||||
@@ -55,11 +55,11 @@ msgstr "Активные изображения"
|
||||
|
||||
#: lib/Lutim/Controller/Image.pm:328
|
||||
msgid "An error occured while downloading the image."
|
||||
msgstr "Ошибка при загрузке изображения."
|
||||
msgstr "Произошла ошибка при скачивании изображения."
|
||||
|
||||
#: themes/default/templates/zip.html.ep:2
|
||||
msgid "Archives download"
|
||||
msgstr "Загрузить архив"
|
||||
msgstr "Archives download"
|
||||
|
||||
#: themes/default/templates/about.html.ep:44 themes/default/templates/myfiles.html.ep:135 themes/default/templates/stats.html.ep:25
|
||||
msgid "Back to homepage"
|
||||
@@ -163,11 +163,11 @@ msgstr "Общее количество файлов"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:126
|
||||
msgid "Expires at"
|
||||
msgstr "Исчезнет через"
|
||||
msgstr "Истекает в"
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:112
|
||||
msgid "Export localStorage data"
|
||||
msgstr "Сохранить данные в хранилище"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:121
|
||||
msgid "File name"
|
||||
@@ -235,7 +235,7 @@ msgstr "Изображение не найдено."
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:113
|
||||
msgid "Import localStorage data"
|
||||
msgstr "Загрузить данные с хранилища"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:69
|
||||
msgid "Informations"
|
||||
@@ -258,8 +258,12 @@ msgid "Is it really free (as in free beer)?"
|
||||
msgstr "Это действительно бесплатно (as in free beer)?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid "The way you pronounce the French word <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr "Как французское слово <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgid ""
|
||||
"Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/"
|
||||
"wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
"Как французское слово <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</"
|
||||
"a> (/ly.tɛ̃/)."
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:202
|
||||
msgid "Keep EXIF tags"
|
||||
@@ -317,7 +321,7 @@ msgstr "Синтаксис Маркдауна"
|
||||
|
||||
#: themes/default/templates/partial/myfiles.js.ep:149
|
||||
msgid "Modify expiration delay"
|
||||
msgstr "Изменить время на удление"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/myfiles.html.ep:7 themes/default/templates/partial/navbar.html.ep:18
|
||||
msgid "My images"
|
||||
@@ -369,7 +373,7 @@ msgstr "Пожалуйста, свяжитесь с администраторо
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:36
|
||||
msgid "Please, check your credentials: unable to authenticate."
|
||||
msgstr "Пожалуйста проверьте свои данные: не удалось идентифицировать."
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/gallery.html.ep:43
|
||||
msgid "Previous (arrow left)"
|
||||
@@ -377,7 +381,7 @@ msgstr "Предыдущий (стрелка влево)"
|
||||
|
||||
#: themes/default/templates/index.html.ep:46 themes/default/templates/index.html.ep:49 themes/default/templates/myfiles.html.ep:96 themes/default/templates/myfiles.html.ep:99
|
||||
msgid "Random image link"
|
||||
msgstr "Случайная ссылка на изображение"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/stats.html.ep:22
|
||||
msgid "Raw stats"
|
||||
@@ -393,7 +397,7 @@ msgstr "Послать изображение"
|
||||
|
||||
#: themes/default/templates/login.html.ep:16 themes/default/templates/logout.html.ep:5 themes/default/templates/partial/navbar.html.ep:37
|
||||
msgid "Signin"
|
||||
msgstr "Регистрация"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/index.html.ep:151 themes/default/templates/partial/gallery.js.ep:211 themes/default/templates/partial/lutim.js.ep:176
|
||||
msgid "Something bad happened"
|
||||
@@ -688,11 +692,3 @@ msgstr ""
|
||||
#: themes/default/templates/index.html.ep:177 themes/default/templates/index.html.ep:221
|
||||
msgid "No watermark"
|
||||
msgstr "Без водного знака"
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:215
|
||||
msgid "Tiling watermark"
|
||||
msgstr "Размещение водяного знака"
|
||||
|
||||
#: themes/default/templates/index.html.ep:174 themes/default/templates/index.html.ep:218
|
||||
msgid "Single watermark"
|
||||
msgstr "Единственный водяной знак"
|
||||
|
||||
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"PO-Revision-Date: 2020-09-20 09:51+0000\n"
|
||||
"Last-Translator: Filip Bengtsson <filip@libreradio.org>\n"
|
||||
"PO-Revision-Date: 2020-03-09 16:23+0000\n"
|
||||
"Last-Translator: Luc Didry <luc@framasoft.org>\n"
|
||||
"Language-Team: Swedish <https://weblate.framasoft.org/projects/lutim/"
|
||||
"default-theme/sv/>\n"
|
||||
"Language: sv\n"
|
||||
@@ -16,7 +16,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.1\n"
|
||||
"X-Generator: Weblate 3.11.2\n"
|
||||
|
||||
#. (7)
|
||||
#. (30)
|
||||
@@ -171,6 +171,12 @@ msgstr "Exportera localStorage-data"
|
||||
msgid "File name"
|
||||
msgstr "Filnamn"
|
||||
|
||||
#: themes/default/templates/about.html.ep:24
|
||||
msgid "For more details, see the <a href=\"https://framagit.org/luc/lutim\">homepage of the project</a>."
|
||||
msgstr ""
|
||||
"Se <a href=\"https://framagit.org/luc/lutim\">projektets hemsida</a> för mer "
|
||||
"information."
|
||||
|
||||
#: themes/default/templates/partial/navbar.html.ep:66
|
||||
msgid "Fork me!"
|
||||
msgstr "Grena mig!"
|
||||
@@ -244,8 +250,10 @@ msgid "Is it really free (as in free beer)?"
|
||||
msgstr "Är det verkligen gratis?"
|
||||
|
||||
#: themes/default/templates/about.html.ep:21
|
||||
msgid "The way you pronounce the French word <a href=\"%1\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr "Precis som du uttalar ordet <a href=\"%1\">lutin</a> på franska ([ly.tɛ̃])."
|
||||
msgid "Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
|
||||
msgstr ""
|
||||
"Precis som du uttalar ordet <a href=\"https://fr.wikipedia.org/wiki/Lutin\""
|
||||
">lutin</a> på franska ([ly.tɛ̃])."
|
||||
|
||||
#: themes/default/templates/index.html.ep:165 themes/default/templates/index.html.ep:196
|
||||
msgid "Keep EXIF tags"
|
||||
@@ -559,8 +567,6 @@ msgstr "Du försökte ladda ner en zip-fil som innehöll för många filer."
|
||||
#: themes/default/templates/about.html.ep:8
|
||||
msgid "You can, optionally, request that the image(s) posted on Lutim to be deleted at first view (or download) or after the delay selected from those proposed."
|
||||
msgstr ""
|
||||
"Om du vill, kan bilden raderas en viss tid efter att den har publicerats på "
|
||||
"Lutim, eller omedelbart efter den första visningen eller nerladdningen."
|
||||
|
||||
#: lib/Lutim/Controller/Authent.pm:27
|
||||
msgid "You have been successfully logged in."
|
||||
@@ -600,7 +606,7 @@ msgstr "på"
|
||||
|
||||
#: themes/default/templates/about.html.ep:39
|
||||
msgid "paste image to upload ability"
|
||||
msgstr "infoga en bild för att skicka den"
|
||||
msgstr ""
|
||||
|
||||
#: themes/default/templates/about.html.ep:41
|
||||
msgid "russian translation"
|
||||
@@ -619,15 +625,3 @@ msgid "For more details, see the <a href=\"https://framagit.org/fiat-tux/hat-sof
|
||||
msgstr ""
|
||||
"Se <a href=\"https://framagit.org/fiat-tux/hat-softwares/lutim\">projektets "
|
||||
"hemsida</a> för mer information."
|
||||
|
||||
#: themes/default/templates/index.html.ep:177 themes/default/templates/index.html.ep:221
|
||||
msgid "No watermark"
|
||||
msgstr "Ingen vattenstämpling"
|
||||
|
||||
#: themes/default/templates/index.html.ep:171 themes/default/templates/index.html.ep:215
|
||||
msgid "Tiling watermark"
|
||||
msgstr "Flera vatenstämplingar"
|
||||
|
||||
#: themes/default/templates/index.html.ep:174 themes/default/templates/index.html.ep:218
|
||||
msgid "Single watermark"
|
||||
msgstr "En vattenstämpel"
|
||||
|
||||
2
themes/default/public/css/common.min.css
vendored
2
themes/default/public/css/gallery.min.css
vendored
@@ -134,21 +134,3 @@ h1.ellips {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
/*
|
||||
* a11y
|
||||
*/
|
||||
.navbar-default .navbar-brand,
|
||||
.navbar-default .navbar-nav > li > a,
|
||||
.navbar-default .navbar-text {
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-nav > li > a:focus
|
||||
.navbar-default .navbar-nav > li > a:hover {
|
||||
color: #111;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background-color: #3c74c8;
|
||||
}
|
||||
|
||||
2
themes/default/public/css/not_stats.min.css
vendored
@@ -1 +1 @@
|
||||
@-moz-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-o-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-ms-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.animate-spin{-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;display:inline-block}.uploader{border:2px dotted #a5a5c7;width:100%;color:#777;text-align:center;vertical-align:middle;padding:30px 0;margin-bottom:10px;font-size:200%;cursor:default;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.uploader div.or{font-size:50%;font-weight:700;color:#677;padding:10px}@media (max-width:768px){.uploader div.browser label{max-width:95%}}@media (min-width:768px){.uploader div.browser label{width:300px}}.uploader div.browser label{background-color:#416bc4;color:#fff;padding:6px 0;font-size:40%;font-weight:700;cursor:pointer;border-radius:2px;position:relative;overflow:hidden;display:block;margin:20px auto 0;box-shadow:2px 2px 2px #888}.uploader div.browser span{cursor:pointer}.uploader div.browser input{position:absolute;top:0;right:0;margin:0;border:solid transparent;border-width:0 0 100px 200px;opacity:0;filter:alpha(opacity= 0);-o-transform:translate(250px,-50px) scale(1);-moz-transform:translate(-300px,0) scale(4);direction:ltr;cursor:pointer}.uploader div.browser label:hover{background-color:#427fed}@font-face{font-family:"markdown";src:url(../../font/markdown.eot?-6fnbp5);src:url(../../font/markdown.eot?#iefix-6fnbp5)format("embedded-opentype"),url(../../font/markdown.woff?-6fnbp5)format("woff"),url(../../font/markdown.ttf?-6fnbp5)format("truetype"),url(../../font/markdown.svg?-6fnbp5#markdown)format("svg");font-weight:400;font-style:normal}[class*=" markdown-"],[class^=markdown-]{font-family:"markdown";speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.markdown-mark:before{content:""}.markdown-mark-solid:before{content:""}
|
||||
@-moz-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-o-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-ms-keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-moz-transform:rotate(0deg);-o-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-moz-transform:rotate(359deg);-o-transform:rotate(359deg);-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.animate-spin{-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;display:inline-block}.uploader{border:2px dotted #a5a5c7;width:100%;color:#92aab0;text-align:center;vertical-align:middle;padding:30px 0;margin-bottom:10px;font-size:200%;cursor:default;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.uploader div.or{font-size:50%;font-weight:700;color:silver;padding:10px}@media (max-width:768px){.uploader div.browser label{max-width:95%}}@media (min-width:768px){.uploader div.browser label{width:300px}}.uploader div.browser label{background-color:#5a7bc2;color:#fff;padding:6px 0;font-size:40%;font-weight:700;cursor:pointer;border-radius:2px;position:relative;overflow:hidden;display:block;margin:20px auto 0;box-shadow:2px 2px 2px #888}.uploader div.browser span{cursor:pointer}.uploader div.browser input{position:absolute;top:0;right:0;margin:0;border:solid transparent;border-width:0 0 100px 200px;opacity:0;filter:alpha(opacity= 0);-o-transform:translate(250px,-50px) scale(1);-moz-transform:translate(-300px,0) scale(4);direction:ltr;cursor:pointer}.uploader div.browser label:hover{background-color:#427fed}@font-face{font-family:'markdown';src:url(../../font/markdown.eot?-6fnbp5);src:url(../../font/markdown.eot?#iefix-6fnbp5) format('embedded-opentype'),url(../../font/markdown.woff?-6fnbp5) format('woff'),url(../../font/markdown.ttf?-6fnbp5) format('truetype'),url(../../font/markdown.svg?-6fnbp5#markdown) format('svg');font-weight:400;font-style:normal}[class*=" markdown-"],[class^=markdown-]{font-family:'markdown';speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.markdown-mark:before{content:"\e600"}.markdown-mark-solid:before{content:"\e601"}
|
||||
|
||||
11
themes/default/public/css/twitter.css
Normal file
@@ -0,0 +1,11 @@
|
||||
/* vim:set sw=4 ts=4 sts=4 ft=css expandtab: */
|
||||
html {
|
||||
max-height:100%;
|
||||
}
|
||||
.height-97 {
|
||||
height: 97%;
|
||||
}
|
||||
.freezeframe {
|
||||
max-width: 100%;
|
||||
max-height:100%;
|
||||
}
|
||||
1
themes/default/public/css/twitter.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
html{max-height:100%}.height-97{height:97%}.freezeframe{max-width:100%;max-height:100%}
|
||||
@@ -2,7 +2,7 @@
|
||||
{
|
||||
border: 2px dotted #A5A5C7;
|
||||
width: 100%;
|
||||
color: #777;
|
||||
color: #92AAB0;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
padding: 30px 0px;
|
||||
@@ -22,7 +22,7 @@
|
||||
.uploader div.or {
|
||||
font-size: 50%;
|
||||
font-weight: bold;
|
||||
color: #677;
|
||||
color: #C0C0C0;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
}
|
||||
|
||||
.uploader div.browser label {
|
||||
background-color: #416bc4;
|
||||
background-color: #5a7bc2;
|
||||
padding: 5px 15px;
|
||||
color: white;
|
||||
padding: 6px 0px;
|
||||
|
||||
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 618 B After Width: | Height: | Size: 909 B |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 916 B After Width: | Height: | Size: 946 B |
|
Before Width: | Height: | Size: 798 B After Width: | Height: | Size: 858 B |
|
Before Width: | Height: | Size: 693 B After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 178 B After Width: | Height: | Size: 540 B |
|
Before Width: | Height: | Size: 190 B After Width: | Height: | Size: 195 B |
|
Before Width: | Height: | Size: 190 B After Width: | Height: | Size: 199 B |
|
Before Width: | Height: | Size: 771 B After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 829 B After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 916 B After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 856 B After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 246 B After Width: | Height: | Size: 470 B |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 243 B After Width: | Height: | Size: 493 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 300 B After Width: | Height: | Size: 464 B |
|
Before Width: | Height: | Size: 300 B After Width: | Height: | Size: 369 B |