diff options
-rw-r--r-- | .docker/nginx.conf | 43 | ||||
-rw-r--r-- | .dockerignore | 11 | ||||
-rw-r--r-- | .htaccess | 2 | ||||
-rw-r--r-- | application/config/ConfigManager.php | 4 | ||||
-rw-r--r-- | application/front/controller/admin/ServerController.php | 15 | ||||
-rw-r--r-- | assets/vintage/css/shaarli.css | 61 | ||||
-rw-r--r-- | doc/md/Docker.md | 7 | ||||
-rw-r--r-- | doc/md/Server-configuration.md | 42 | ||||
-rw-r--r-- | docker-compose.yml | 9 | ||||
-rw-r--r-- | inc/languages/fr/LC_MESSAGES/shaarli.po | 113 | ||||
-rw-r--r-- | tpl/vintage/daily.html | 8 | ||||
-rw-r--r-- | tpl/vintage/editlink.html | 32 | ||||
-rw-r--r-- | tpl/vintage/page.header.html | 24 |
13 files changed, 251 insertions, 120 deletions
diff --git a/.docker/nginx.conf b/.docker/nginx.conf index 023f52c1..30810a87 100644 --- a/.docker/nginx.conf +++ b/.docker/nginx.conf | |||
@@ -17,27 +17,13 @@ http { | |||
17 | index index.html index.php; | 17 | index index.html index.php; |
18 | 18 | ||
19 | server { | 19 | server { |
20 | listen 80; | 20 | listen 80; |
21 | root /var/www/shaarli; | 21 | root /var/www/shaarli; |
22 | 22 | ||
23 | access_log /var/log/nginx/shaarli.access.log; | 23 | access_log /var/log/nginx/shaarli.access.log; |
24 | error_log /var/log/nginx/shaarli.error.log; | 24 | error_log /var/log/nginx/shaarli.error.log; |
25 | 25 | ||
26 | location ~ /\. { | 26 | location ~* \.(?:ico|css|js|gif|jpe?g|png|ttf|oet|woff2?)$ { |
27 | # deny access to dotfiles | ||
28 | access_log off; | ||
29 | log_not_found off; | ||
30 | deny all; | ||
31 | } | ||
32 | |||
33 | location ~ ~$ { | ||
34 | # deny access to temp editor files, e.g. "script.php~" | ||
35 | access_log off; | ||
36 | log_not_found off; | ||
37 | deny all; | ||
38 | } | ||
39 | |||
40 | location ~* \.(?:ico|css|js|gif|jpe?g|png)$ { | ||
41 | # cache static assets | 27 | # cache static assets |
42 | expires max; | 28 | expires max; |
43 | add_header Pragma public; | 29 | add_header Pragma public; |
@@ -49,30 +35,25 @@ http { | |||
49 | alias /var/www/shaarli/images/favicon.ico; | 35 | alias /var/www/shaarli/images/favicon.ico; |
50 | } | 36 | } |
51 | 37 | ||
38 | location /doc/html/ { | ||
39 | default_type "text/html"; | ||
40 | try_files $uri $uri/ $uri.html =404; | ||
41 | } | ||
42 | |||
52 | location / { | 43 | location / { |
53 | # Slim - rewrite URLs | 44 | # Slim - rewrite URLs & do NOT serve static files through this location |
54 | try_files $uri /index.php$is_args$args; | 45 | try_files _ /index.php$is_args$args; |
55 | } | 46 | } |
56 | 47 | ||
57 | location ~ (index)\.php$ { | 48 | location ~ index\.php$ { |
58 | # Slim - split URL path into (script_filename, path_info) | 49 | # Slim - split URL path into (script_filename, path_info) |
59 | try_files $uri =404; | 50 | try_files $uri =404; |
60 | fastcgi_split_path_info ^(.+\.php)(/.+)$; | 51 | fastcgi_split_path_info ^(index.php)(/.+)$; |
61 | 52 | ||
62 | # filter and proxy PHP requests to PHP-FPM | 53 | # filter and proxy PHP requests to PHP-FPM |
63 | fastcgi_pass unix:/var/run/php-fpm.sock; | 54 | fastcgi_pass unix:/var/run/php-fpm.sock; |
64 | fastcgi_index index.php; | 55 | fastcgi_index index.php; |
65 | include fastcgi.conf; | 56 | include fastcgi.conf; |
66 | } | 57 | } |
67 | |||
68 | location ~ /doc/ { | ||
69 | default_type "text/html"; | ||
70 | try_files $uri $uri/ $uri.html =404; | ||
71 | } | ||
72 | |||
73 | location ~ \.php$ { | ||
74 | # deny access to all other PHP scripts | ||
75 | deny all; | ||
76 | } | ||
77 | } | 58 | } |
78 | } | 59 | } |
diff --git a/.dockerignore b/.dockerignore index 96fd31c5..19fd87a5 100644 --- a/.dockerignore +++ b/.dockerignore | |||
@@ -2,8 +2,16 @@ | |||
2 | .dev | 2 | .dev |
3 | .git | 3 | .git |
4 | .github | 4 | .github |
5 | .gitattributes | ||
6 | .gitignore | ||
7 | .travis.yml | ||
5 | tests | 8 | tests |
6 | 9 | ||
10 | # Docker related resources are not needed inside the container | ||
11 | .dockerignore | ||
12 | Dockerfile | ||
13 | Dockerfile.armhf | ||
14 | |||
7 | # Docker Compose resources | 15 | # Docker Compose resources |
8 | docker-compose.yml | 16 | docker-compose.yml |
9 | 17 | ||
@@ -13,6 +21,9 @@ data/* | |||
13 | pagecache/* | 21 | pagecache/* |
14 | tmp/* | 22 | tmp/* |
15 | 23 | ||
24 | # Shaarli's docs are created during the build | ||
25 | doc/html/ | ||
26 | |||
16 | # Eclipse project files | 27 | # Eclipse project files |
17 | .settings | 28 | .settings |
18 | .buildpath | 29 | .buildpath |
@@ -13,7 +13,7 @@ RewriteRule .* - [e=HTTP_AUTHORIZATION:%1] | |||
13 | # Alternative (if the 2 lines above don't work) | 13 | # Alternative (if the 2 lines above don't work) |
14 | # SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0 | 14 | # SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0 |
15 | 15 | ||
16 | # REST API | 16 | # Slim URL Redirection |
17 | # Ionos Hosting needs RewriteBase / | 17 | # Ionos Hosting needs RewriteBase / |
18 | # RewriteBase / | 18 | # RewriteBase / |
19 | RewriteCond %{REQUEST_FILENAME} !-f | 19 | RewriteCond %{REQUEST_FILENAME} !-f |
diff --git a/application/config/ConfigManager.php b/application/config/ConfigManager.php index a0acc94d..717a038f 100644 --- a/application/config/ConfigManager.php +++ b/application/config/ConfigManager.php | |||
@@ -371,8 +371,8 @@ class ConfigManager | |||
371 | $this->setEmpty('general.enable_async_metadata', true); | 371 | $this->setEmpty('general.enable_async_metadata', true); |
372 | $this->setEmpty('general.tags_separator', ' '); | 372 | $this->setEmpty('general.tags_separator', ' '); |
373 | 373 | ||
374 | $this->setEmpty('updates.check_updates', false); | 374 | $this->setEmpty('updates.check_updates', true); |
375 | $this->setEmpty('updates.check_updates_branch', 'stable'); | 375 | $this->setEmpty('updates.check_updates_branch', 'latest'); |
376 | $this->setEmpty('updates.check_updates_interval', 86400); | 376 | $this->setEmpty('updates.check_updates_interval', 86400); |
377 | 377 | ||
378 | $this->setEmpty('feed.rss_permalinks', true); | 378 | $this->setEmpty('feed.rss_permalinks', true); |
diff --git a/application/front/controller/admin/ServerController.php b/application/front/controller/admin/ServerController.php index 575a2f9d..fabeaf2f 100644 --- a/application/front/controller/admin/ServerController.php +++ b/application/front/controller/admin/ServerController.php | |||
@@ -25,9 +25,16 @@ class ServerController extends ShaarliAdminController | |||
25 | */ | 25 | */ |
26 | public function index(Request $request, Response $response): Response | 26 | public function index(Request $request, Response $response): Response |
27 | { | 27 | { |
28 | $latestVersion = 'v' . ApplicationUtils::getVersion( | 28 | $releaseUrl = ApplicationUtils::$GITHUB_URL . '/releases/'; |
29 | ApplicationUtils::$GIT_RAW_URL . '/latest/' . ApplicationUtils::$VERSION_FILE | 29 | if ($this->container->conf->get('updates.check_updates', true)) { |
30 | ); | 30 | $latestVersion = 'v' . ApplicationUtils::getVersion( |
31 | ApplicationUtils::$GIT_RAW_URL . '/latest/' . ApplicationUtils::$VERSION_FILE | ||
32 | ); | ||
33 | $releaseUrl .= 'tag/' . $latestVersion; | ||
34 | } else { | ||
35 | $latestVersion = t('Check disabled'); | ||
36 | } | ||
37 | |||
31 | $currentVersion = ApplicationUtils::getVersion('./shaarli_version.php'); | 38 | $currentVersion = ApplicationUtils::getVersion('./shaarli_version.php'); |
32 | $currentVersion = $currentVersion === 'dev' ? $currentVersion : 'v' . $currentVersion; | 39 | $currentVersion = $currentVersion === 'dev' ? $currentVersion : 'v' . $currentVersion; |
33 | $phpEol = new \DateTimeImmutable(ApplicationUtils::getPhpEol(PHP_VERSION)); | 40 | $phpEol = new \DateTimeImmutable(ApplicationUtils::getPhpEol(PHP_VERSION)); |
@@ -37,7 +44,7 @@ class ServerController extends ShaarliAdminController | |||
37 | $this->assignView('php_has_reached_eol', $phpEol < new \DateTimeImmutable()); | 44 | $this->assignView('php_has_reached_eol', $phpEol < new \DateTimeImmutable()); |
38 | $this->assignView('php_extensions', ApplicationUtils::getPhpExtensionsRequirement()); | 45 | $this->assignView('php_extensions', ApplicationUtils::getPhpExtensionsRequirement()); |
39 | $this->assignView('permissions', ApplicationUtils::checkResourcePermissions($this->container->conf)); | 46 | $this->assignView('permissions', ApplicationUtils::checkResourcePermissions($this->container->conf)); |
40 | $this->assignView('release_url', ApplicationUtils::$GITHUB_URL . '/releases/tag/' . $latestVersion); | 47 | $this->assignView('release_url', $releaseUrl); |
41 | $this->assignView('latest_version', $latestVersion); | 48 | $this->assignView('latest_version', $latestVersion); |
42 | $this->assignView('current_version', $currentVersion); | 49 | $this->assignView('current_version', $currentVersion); |
43 | $this->assignView('thumbnails_mode', $this->container->conf->get('thumbnails.mode')); | 50 | $this->assignView('thumbnails_mode', $this->container->conf->get('thumbnails.mode')); |
diff --git a/assets/vintage/css/shaarli.css b/assets/vintage/css/shaarli.css index 1688dce0..33e178af 100644 --- a/assets/vintage/css/shaarli.css +++ b/assets/vintage/css/shaarli.css | |||
@@ -1122,6 +1122,16 @@ ul.errors { | |||
1122 | float: left; | 1122 | float: left; |
1123 | } | 1123 | } |
1124 | 1124 | ||
1125 | ul.warnings { | ||
1126 | color: orange; | ||
1127 | float: left; | ||
1128 | } | ||
1129 | |||
1130 | ul.successes { | ||
1131 | color: green; | ||
1132 | float: left; | ||
1133 | } | ||
1134 | |||
1125 | #pluginsadmin { | 1135 | #pluginsadmin { |
1126 | width: 80%; | 1136 | width: 80%; |
1127 | padding: 20px 0 0 20px; | 1137 | padding: 20px 0 0 20px; |
@@ -1248,3 +1258,54 @@ ul.errors { | |||
1248 | width: 0%; | 1258 | width: 0%; |
1249 | height: 10px; | 1259 | height: 10px; |
1250 | } | 1260 | } |
1261 | |||
1262 | .loading-input { | ||
1263 | position: relative; | ||
1264 | } | ||
1265 | |||
1266 | @keyframes around { | ||
1267 | 0% { | ||
1268 | transform: rotate(0deg); | ||
1269 | } | ||
1270 | |||
1271 | 100% { | ||
1272 | transform: rotate(360deg); | ||
1273 | } | ||
1274 | } | ||
1275 | |||
1276 | .loading-input .icon-container { | ||
1277 | position: absolute; | ||
1278 | right: 60px; | ||
1279 | top: calc(50% - 10px); | ||
1280 | } | ||
1281 | |||
1282 | .loading-input .loader { | ||
1283 | position: relative; | ||
1284 | height: 20px; | ||
1285 | width: 20px; | ||
1286 | display: inline-block; | ||
1287 | animation: around 5.4s infinite; | ||
1288 | } | ||
1289 | |||
1290 | .loading-input .loader::after, | ||
1291 | .loading-input .loader::before { | ||
1292 | content: ""; | ||
1293 | background: #eee; | ||
1294 | position: absolute; | ||
1295 | display: inline-block; | ||
1296 | width: 100%; | ||
1297 | height: 100%; | ||
1298 | border-width: 2px; | ||
1299 | border-color: #333 #333 transparent transparent; | ||
1300 | border-style: solid; | ||
1301 | border-radius: 20px; | ||
1302 | box-sizing: border-box; | ||
1303 | top: 0; | ||
1304 | left: 0; | ||
1305 | animation: around 0.7s ease-in-out infinite; | ||
1306 | } | ||
1307 | |||
1308 | .loading-input .loader::after { | ||
1309 | animation: around 0.7s ease-in-out 0.1s infinite; | ||
1310 | background: transparent; | ||
1311 | } | ||
diff --git a/doc/md/Docker.md b/doc/md/Docker.md index c152fe92..fc406c00 100644 --- a/doc/md/Docker.md +++ b/doc/md/Docker.md | |||
@@ -1,3 +1,4 @@ | |||
1 | |||
1 | # Docker | 2 | # Docker |
2 | 3 | ||
3 | [Docker](https://docs.docker.com/get-started/overview/) is an open platform for developing, shipping, and running applications | 4 | [Docker](https://docs.docker.com/get-started/overview/) is an open platform for developing, shipping, and running applications |
@@ -113,9 +114,11 @@ $ mkdir shaarli && cd shaarli | |||
113 | # Download the latest version of Shaarli's docker-compose.yml | 114 | # Download the latest version of Shaarli's docker-compose.yml |
114 | $ curl -L https://raw.githubusercontent.com/shaarli/Shaarli/latest/docker-compose.yml -o docker-compose.yml | 115 | $ curl -L https://raw.githubusercontent.com/shaarli/Shaarli/latest/docker-compose.yml -o docker-compose.yml |
115 | # Create the .env file and fill in your VPS and domain information | 116 | # Create the .env file and fill in your VPS and domain information |
116 | # (replace <MY_SHAARLI_DOMAIN> and <MY_CONTACT_EMAIL> with your actual information) | 117 | # (replace <shaarli.mydomain.org>, <admin@mydomain.org> and <latest> with your actual information) |
117 | $ echo 'SHAARLI_VIRTUAL_HOST=shaarli.mydomain.org' > .env | 118 | $ echo 'SHAARLI_VIRTUAL_HOST=shaarli.mydomain.org' > .env |
118 | $ echo 'SHAARLI_LETSENCRYPT_EMAIL=admin@mydomain.org' >> .env | 119 | $ echo 'SHAARLI_LETSENCRYPT_EMAIL=admin@mydomain.org' >> .env |
120 | # Available Docker tags can be found at https://hub.docker.com/r/shaarli/shaarli/tags | ||
121 | $ echo 'SHAARLI_DOCKER_TAG=latest' >> .env | ||
119 | # Pull the Docker images | 122 | # Pull the Docker images |
120 | $ docker-compose pull | 123 | $ docker-compose pull |
121 | # Run! | 124 | # Run! |
@@ -224,4 +227,4 @@ $ docker system prune | |||
224 | - [docker pull](https://docs.docker.com/engine/reference/commandline/pull/) | 227 | - [docker pull](https://docs.docker.com/engine/reference/commandline/pull/) |
225 | - [docker run](https://docs.docker.com/engine/reference/commandline/run/) | 228 | - [docker run](https://docs.docker.com/engine/reference/commandline/run/) |
226 | - [docker-compose logs](https://docs.docker.com/compose/reference/logs/) | 229 | - [docker-compose logs](https://docs.docker.com/compose/reference/logs/) |
227 | - Træfik: [Getting Started](https://docs.traefik.io/), [Docker backend](https://docs.traefik.io/configuration/backends/docker/), [Let's Encrypt](https://docs.traefik.io/user-guide/docker-and-lets-encrypt/), [Docker image](https://hub.docker.com/_/traefik/) \ No newline at end of file | 230 | - Træfik: [Getting Started](https://docs.traefik.io/), [Docker backend](https://docs.traefik.io/configuration/backends/docker/), [Let's Encrypt](https://docs.traefik.io/user-guide/docker-and-lets-encrypt/), [Docker image](https://hub.docker.com/_/traefik/) |
diff --git a/doc/md/Server-configuration.md b/doc/md/Server-configuration.md index 4e74d80b..a49b6033 100644 --- a/doc/md/Server-configuration.md +++ b/doc/md/Server-configuration.md | |||
@@ -193,19 +193,24 @@ sudo nano /etc/apache2/sites-available/shaarli.mydomain.org.conf | |||
193 | Require all granted | 193 | Require all granted |
194 | </Directory> | 194 | </Directory> |
195 | 195 | ||
196 | <LocationMatch "/\."> | 196 | # BE CAREFUL: directives order matter! |
197 | # Prevent accessing dotfiles | ||
198 | RedirectMatch 404 ".*" | ||
199 | </LocationMatch> | ||
200 | 197 | ||
201 | <LocationMatch "\.(?:ico|css|js|gif|jpe?g|png)$"> | 198 | <FilesMatch ".*\.(?!(ico|css|js|gif|jpe?g|png|ttf|oet|woff2?)$)[^\.]*$"> |
199 | Require all denied | ||
200 | </FilesMatch> | ||
201 | |||
202 | <Files "index.php"> | ||
203 | Require all granted | ||
204 | </Files> | ||
205 | |||
206 | <FilesMatch "\.(?:ico|css|js|gif|jpe?g|png|ttf|oet|woff2)$"> | ||
202 | # allow client-side caching of static files | 207 | # allow client-side caching of static files |
203 | Header set Cache-Control "max-age=2628000, public, must-revalidate, proxy-revalidate" | 208 | Header set Cache-Control "max-age=2628000, public, must-revalidate, proxy-revalidate" |
204 | </LocationMatch> | 209 | </FilesMatch> |
210 | |||
205 | 211 | ||
206 | # serve the Shaarli favicon from its custom location | 212 | # serve the Shaarli favicon from its custom location |
207 | Alias favicon.ico /var/www/shaarli.mydomain.org/images/favicon.ico | 213 | Alias favicon.ico /var/www/shaarli.mydomain.org/images/favicon.ico |
208 | |||
209 | </VirtualHost> | 214 | </VirtualHost> |
210 | ``` | 215 | ``` |
211 | 216 | ||
@@ -296,7 +301,7 @@ server { | |||
296 | location / { | 301 | location / { |
297 | # default index file when no file URI is requested | 302 | # default index file when no file URI is requested |
298 | index index.php; | 303 | index index.php; |
299 | try_files $uri /index.php$is_args$args; | 304 | try_files _ /index.php$is_args$args; |
300 | } | 305 | } |
301 | 306 | ||
302 | location ~ (index)\.php$ { | 307 | location ~ (index)\.php$ { |
@@ -309,23 +314,7 @@ server { | |||
309 | include fastcgi.conf; | 314 | include fastcgi.conf; |
310 | } | 315 | } |
311 | 316 | ||
312 | location ~ \.php$ { | 317 | location ~ /doc/html/ { |
313 | # deny access to all other PHP scripts | ||
314 | # disable this if you host other PHP applications on the same virtualhost | ||
315 | deny all; | ||
316 | } | ||
317 | |||
318 | location ~ /\. { | ||
319 | # deny access to dotfiles | ||
320 | deny all; | ||
321 | } | ||
322 | |||
323 | location ~ ~$ { | ||
324 | # deny access to temp editor files, e.g. "script.php~" | ||
325 | deny all; | ||
326 | } | ||
327 | |||
328 | location ~ /doc/ { | ||
329 | default_type "text/html"; | 318 | default_type "text/html"; |
330 | try_files $uri $uri/ $uri.html =404; | 319 | try_files $uri $uri/ $uri.html =404; |
331 | } | 320 | } |
@@ -336,13 +325,12 @@ server { | |||
336 | } | 325 | } |
337 | 326 | ||
338 | # allow client-side caching of static files | 327 | # allow client-side caching of static files |
339 | location ~* \.(?:ico|css|js|gif|jpe?g|png)$ { | 328 | location ~* \.(?:ico|css|js|gif|jpe?g|png|ttf|oet|woff2?)$ { |
340 | expires max; | 329 | expires max; |
341 | add_header Cache-Control "public, must-revalidate, proxy-revalidate"; | 330 | add_header Cache-Control "public, must-revalidate, proxy-revalidate"; |
342 | # HTTP 1.0 compatibility | 331 | # HTTP 1.0 compatibility |
343 | add_header Pragma public; | 332 | add_header Pragma public; |
344 | } | 333 | } |
345 | |||
346 | } | 334 | } |
347 | ``` | 335 | ``` |
348 | 336 | ||
diff --git a/docker-compose.yml b/docker-compose.yml index a3de4b1c..4ebae447 100644 --- a/docker-compose.yml +++ b/docker-compose.yml | |||
@@ -2,12 +2,13 @@ | |||
2 | # Shaarli - Docker Compose example configuration | 2 | # Shaarli - Docker Compose example configuration |
3 | # | 3 | # |
4 | # See: | 4 | # See: |
5 | # - https://shaarli.readthedocs.io/en/master/docker/shaarli-images/ | 5 | # - https://shaarli.readthedocs.io/en/master/Docker/#docker-compose |
6 | # - https://shaarli.readthedocs.io/en/master/guides/install-shaarli-with-debian9-and-docker/ | ||
7 | # | 6 | # |
8 | # Environment variables: | 7 | # Environment variables: |
9 | # - SHAARLI_VIRTUAL_HOST Fully Qualified Domain Name for the Shaarli instance | 8 | # - SHAARLI_VIRTUAL_HOST Fully Qualified Domain Name for the Shaarli instance |
10 | # - SHAARLI_LETSENCRYPT_EMAIL Contact email for certificate renewal | 9 | # - SHAARLI_LETSENCRYPT_EMAIL Contact email for certificate renewal |
10 | # - SHAARLI_DOCKER_TAG Shaarli docker tag to use | ||
11 | # See: https://hub.docker.com/r/shaarli/shaarli/tags | ||
11 | version: '3' | 12 | version: '3' |
12 | 13 | ||
13 | networks: | 14 | networks: |
@@ -20,7 +21,7 @@ volumes: | |||
20 | 21 | ||
21 | services: | 22 | services: |
22 | shaarli: | 23 | shaarli: |
23 | image: shaarli/shaarli:master | 24 | image: shaarli/shaarli:${SHAARLI_DOCKER_TAG} |
24 | build: ./ | 25 | build: ./ |
25 | networks: | 26 | networks: |
26 | - http-proxy | 27 | - http-proxy |
@@ -40,7 +41,7 @@ services: | |||
40 | - "--entrypoints=Name:https Address::443 TLS" | 41 | - "--entrypoints=Name:https Address::443 TLS" |
41 | - "--retry" | 42 | - "--retry" |
42 | - "--docker" | 43 | - "--docker" |
43 | - "--docker.domain=docker.localhost" | 44 | - "--docker.domain=${SHAARLI_VIRTUAL_HOST}" |
44 | - "--docker.exposedbydefault=true" | 45 | - "--docker.exposedbydefault=true" |
45 | - "--docker.watch=true" | 46 | - "--docker.watch=true" |
46 | - "--acme" | 47 | - "--acme" |
diff --git a/inc/languages/fr/LC_MESSAGES/shaarli.po b/inc/languages/fr/LC_MESSAGES/shaarli.po index 51bef6c7..26dede4e 100644 --- a/inc/languages/fr/LC_MESSAGES/shaarli.po +++ b/inc/languages/fr/LC_MESSAGES/shaarli.po | |||
@@ -1,8 +1,8 @@ | |||
1 | msgid "" | 1 | msgid "" |
2 | msgstr "" | 2 | msgstr "" |
3 | "Project-Id-Version: Shaarli\n" | 3 | "Project-Id-Version: Shaarli\n" |
4 | "POT-Creation-Date: 2020-11-05 19:43+0100\n" | 4 | "POT-Creation-Date: 2020-11-09 14:39+0100\n" |
5 | "PO-Revision-Date: 2020-11-05 19:44+0100\n" | 5 | "PO-Revision-Date: 2020-11-09 14:42+0100\n" |
6 | "Last-Translator: \n" | 6 | "Last-Translator: \n" |
7 | "Language-Team: Shaarli\n" | 7 | "Language-Team: Shaarli\n" |
8 | "Language: fr_FR\n" | 8 | "Language: fr_FR\n" |
@@ -189,9 +189,9 @@ msgstr "" | |||
189 | #: application/bookmark/BookmarkInitializer.php:91 | 189 | #: application/bookmark/BookmarkInitializer.php:91 |
190 | #: application/legacy/LegacyLinkDB.php:246 | 190 | #: application/legacy/LegacyLinkDB.php:246 |
191 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:15 | 191 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:15 |
192 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:50 | 192 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:48 |
193 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:15 | 193 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:15 |
194 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:50 | 194 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:48 |
195 | msgid "" | 195 | msgid "" |
196 | "The personal, minimalist, super-fast, database free, bookmarking service" | 196 | "The personal, minimalist, super-fast, database free, bookmarking service" |
197 | msgstr "" | 197 | msgstr "" |
@@ -304,7 +304,7 @@ msgid "You have enabled or changed thumbnails mode." | |||
304 | msgstr "Vous avez activé ou changé le mode de miniatures." | 304 | msgstr "Vous avez activé ou changé le mode de miniatures." |
305 | 305 | ||
306 | #: application/front/controller/admin/ConfigureController.php:103 | 306 | #: application/front/controller/admin/ConfigureController.php:103 |
307 | #: application/front/controller/admin/ServerController.php:68 | 307 | #: application/front/controller/admin/ServerController.php:75 |
308 | #: application/legacy/LegacyUpdater.php:538 | 308 | #: application/legacy/LegacyUpdater.php:538 |
309 | msgid "Please synchronize them." | 309 | msgid "Please synchronize them." |
310 | msgstr "Merci de les synchroniser." | 310 | msgstr "Merci de les synchroniser." |
@@ -347,30 +347,44 @@ msgstr "" | |||
347 | "le serveur web peut accepter (%s). Merci de l'envoyer en parties plus " | 347 | "le serveur web peut accepter (%s). Merci de l'envoyer en parties plus " |
348 | "légères." | 348 | "légères." |
349 | 349 | ||
350 | #: application/front/controller/admin/ManageTagController.php:29 | 350 | #: application/front/controller/admin/ManageTagController.php:30 |
351 | msgid "whitespace" | ||
352 | msgstr "espace" | ||
353 | |||
354 | #: application/front/controller/admin/ManageTagController.php:35 | ||
351 | #: tmp/changetag.b91ef64efc3688266305ea9b42e5017e.rtpl.php:13 | 355 | #: tmp/changetag.b91ef64efc3688266305ea9b42e5017e.rtpl.php:13 |
352 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:42 | 356 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:42 |
353 | msgid "Manage tags" | 357 | msgid "Manage tags" |
354 | msgstr "Gérer les tags" | 358 | msgstr "Gérer les tags" |
355 | 359 | ||
356 | #: application/front/controller/admin/ManageTagController.php:48 | 360 | #: application/front/controller/admin/ManageTagController.php:54 |
357 | msgid "Invalid tags provided." | 361 | msgid "Invalid tags provided." |
358 | msgstr "Les tags fournis ne sont pas valides." | 362 | msgstr "Les tags fournis ne sont pas valides." |
359 | 363 | ||
360 | #: application/front/controller/admin/ManageTagController.php:72 | 364 | #: application/front/controller/admin/ManageTagController.php:78 |
361 | #, php-format | 365 | #, php-format |
362 | msgid "The tag was removed from %d bookmark." | 366 | msgid "The tag was removed from %d bookmark." |
363 | msgid_plural "The tag was removed from %d bookmarks." | 367 | msgid_plural "The tag was removed from %d bookmarks." |
364 | msgstr[0] "Le tag a été supprimé du %d lien." | 368 | msgstr[0] "Le tag a été supprimé du %d lien." |
365 | msgstr[1] "Le tag a été supprimé de %d liens." | 369 | msgstr[1] "Le tag a été supprimé de %d liens." |
366 | 370 | ||
367 | #: application/front/controller/admin/ManageTagController.php:77 | 371 | #: application/front/controller/admin/ManageTagController.php:83 |
368 | #, php-format | 372 | #, php-format |
369 | msgid "The tag was renamed in %d bookmark." | 373 | msgid "The tag was renamed in %d bookmark." |
370 | msgid_plural "The tag was renamed in %d bookmarks." | 374 | msgid_plural "The tag was renamed in %d bookmarks." |
371 | msgstr[0] "Le tag a été renommé dans %d lien." | 375 | msgstr[0] "Le tag a été renommé dans %d lien." |
372 | msgstr[1] "Le tag a été renommé dans %d liens." | 376 | msgstr[1] "Le tag a été renommé dans %d liens." |
373 | 377 | ||
378 | #: application/front/controller/admin/ManageTagController.php:105 | ||
379 | msgid "Tags separator must be a single character." | ||
380 | msgstr "Un séparateur de tags doit contenir un seul caractère." | ||
381 | |||
382 | #: application/front/controller/admin/ManageTagController.php:111 | ||
383 | msgid "These characters are reserved and can't be used as tags separator: " | ||
384 | msgstr "" | ||
385 | "Ces caractères sont réservés et ne peuvent être utilisés comme des " | ||
386 | "séparateurs de tags : " | ||
387 | |||
374 | #: application/front/controller/admin/PasswordController.php:28 | 388 | #: application/front/controller/admin/PasswordController.php:28 |
375 | #: tmp/changepassword.b91ef64efc3688266305ea9b42e5017e.rtpl.php:13 | 389 | #: tmp/changepassword.b91ef64efc3688266305ea9b42e5017e.rtpl.php:13 |
376 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:35 | 390 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:35 |
@@ -405,17 +419,21 @@ msgstr "" | |||
405 | "Une erreur s'est produite lors de la sauvegarde de la configuration des " | 419 | "Une erreur s'est produite lors de la sauvegarde de la configuration des " |
406 | "plugins : " | 420 | "plugins : " |
407 | 421 | ||
408 | #: application/front/controller/admin/ServerController.php:50 | 422 | #: application/front/controller/admin/ServerController.php:35 |
423 | msgid "Check disabled" | ||
424 | msgstr "Vérification désactivée" | ||
425 | |||
426 | #: application/front/controller/admin/ServerController.php:57 | ||
409 | #: tmp/server.b91ef64efc3688266305ea9b42e5017e.rtpl.php:14 | 427 | #: tmp/server.b91ef64efc3688266305ea9b42e5017e.rtpl.php:14 |
410 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:28 | 428 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:28 |
411 | msgid "Server administration" | 429 | msgid "Server administration" |
412 | msgstr "Administration serveur" | 430 | msgstr "Administration serveur" |
413 | 431 | ||
414 | #: application/front/controller/admin/ServerController.php:67 | 432 | #: application/front/controller/admin/ServerController.php:74 |
415 | msgid "Thumbnails cache has been cleared." | 433 | msgid "Thumbnails cache has been cleared." |
416 | msgstr "Le cache des miniatures a été vidé." | 434 | msgstr "Le cache des miniatures a été vidé." |
417 | 435 | ||
418 | #: application/front/controller/admin/ServerController.php:76 | 436 | #: application/front/controller/admin/ServerController.php:83 |
419 | msgid "Shaarli's cache folder has been cleared!" | 437 | msgid "Shaarli's cache folder has been cleared!" |
420 | msgstr "Le dossier de cache de Shaarli a été vidé !" | 438 | msgstr "Le dossier de cache de Shaarli a été vidé !" |
421 | 439 | ||
@@ -441,18 +459,18 @@ msgstr "Le lien avec l'identifiant %s n'a pas pu être trouvé." | |||
441 | msgid "Invalid visibility provided." | 459 | msgid "Invalid visibility provided." |
442 | msgstr "Visibilité du lien non valide." | 460 | msgstr "Visibilité du lien non valide." |
443 | 461 | ||
444 | #: application/front/controller/admin/ShaarePublishController.php:168 | 462 | #: application/front/controller/admin/ShaarePublishController.php:171 |
445 | #: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:171 | 463 | #: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:171 |
446 | msgid "Edit" | 464 | msgid "Edit" |
447 | msgstr "Modifier" | 465 | msgstr "Modifier" |
448 | 466 | ||
449 | #: application/front/controller/admin/ShaarePublishController.php:171 | 467 | #: application/front/controller/admin/ShaarePublishController.php:174 |
450 | #: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:28 | 468 | #: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:28 |
451 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:28 | 469 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:28 |
452 | msgid "Shaare" | 470 | msgid "Shaare" |
453 | msgstr "Shaare" | 471 | msgstr "Shaare" |
454 | 472 | ||
455 | #: application/front/controller/admin/ShaarePublishController.php:202 | 473 | #: application/front/controller/admin/ShaarePublishController.php:205 |
456 | msgid "Note: " | 474 | msgid "Note: " |
457 | msgstr "Note : " | 475 | msgstr "Note : " |
458 | 476 | ||
@@ -467,7 +485,7 @@ msgstr "Mise à jour des miniatures" | |||
467 | msgid "Tools" | 485 | msgid "Tools" |
468 | msgstr "Outils" | 486 | msgstr "Outils" |
469 | 487 | ||
470 | #: application/front/controller/visitor/BookmarkListController.php:116 | 488 | #: application/front/controller/visitor/BookmarkListController.php:120 |
471 | msgid "Search: " | 489 | msgid "Search: " |
472 | msgstr "Recherche : " | 490 | msgstr "Recherche : " |
473 | 491 | ||
@@ -572,7 +590,7 @@ msgstr "Nom d'utilisateur ou mot de passe incorrect(s)." | |||
572 | msgid "Picture wall" | 590 | msgid "Picture wall" |
573 | msgstr "Mur d'images" | 591 | msgstr "Mur d'images" |
574 | 592 | ||
575 | #: application/front/controller/visitor/TagCloudController.php:88 | 593 | #: application/front/controller/visitor/TagCloudController.php:90 |
576 | msgid "Tag " | 594 | msgid "Tag " |
577 | msgstr "Tag " | 595 | msgstr "Tag " |
578 | 596 | ||
@@ -1033,6 +1051,32 @@ msgstr "Vous pouvez aussi modifier les tags dans la" | |||
1033 | msgid "tag list" | 1051 | msgid "tag list" |
1034 | msgstr "liste des tags" | 1052 | msgstr "liste des tags" |
1035 | 1053 | ||
1054 | #: tmp/changetag.b91ef64efc3688266305ea9b42e5017e.rtpl.php:47 | ||
1055 | msgid "Change tags separator" | ||
1056 | msgstr "Changer le séparateur de tags" | ||
1057 | |||
1058 | #: tmp/changetag.b91ef64efc3688266305ea9b42e5017e.rtpl.php:50 | ||
1059 | msgid "Your current tag separator is" | ||
1060 | msgstr "Votre séparateur actuel est" | ||
1061 | |||
1062 | #: tmp/changetag.b91ef64efc3688266305ea9b42e5017e.rtpl.php:53 | ||
1063 | msgid "New separator" | ||
1064 | msgstr "Nouveau séparateur" | ||
1065 | |||
1066 | #: tmp/changetag.b91ef64efc3688266305ea9b42e5017e.rtpl.php:58 | ||
1067 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:355 | ||
1068 | #: tmp/editlink.b91ef64efc3688266305ea9b42e5017e.rtpl.php:121 | ||
1069 | #: tmp/pluginsadmin.b91ef64efc3688266305ea9b42e5017e.rtpl.php:139 | ||
1070 | #: tmp/pluginsadmin.b91ef64efc3688266305ea9b42e5017e.rtpl.php:199 | ||
1071 | msgid "Save" | ||
1072 | msgstr "Enregistrer" | ||
1073 | |||
1074 | #: tmp/changetag.b91ef64efc3688266305ea9b42e5017e.rtpl.php:61 | ||
1075 | msgid "Note that hashtags won't fully work with a non-whitespace separator." | ||
1076 | msgstr "" | ||
1077 | "Notez que les hashtags ne sont pas complètement fonctionnels avec un " | ||
1078 | "séparateur qui n'est pas un espace." | ||
1079 | |||
1036 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:29 | 1080 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:29 |
1037 | msgid "title" | 1081 | msgid "title" |
1038 | msgstr "titre" | 1082 | msgstr "titre" |
@@ -1176,13 +1220,6 @@ msgstr "Seulement les hébergeurs de média connus" | |||
1176 | msgid "None" | 1220 | msgid "None" |
1177 | msgstr "Aucune" | 1221 | msgstr "Aucune" |
1178 | 1222 | ||
1179 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:355 | ||
1180 | #: tmp/editlink.b91ef64efc3688266305ea9b42e5017e.rtpl.php:121 | ||
1181 | #: tmp/pluginsadmin.b91ef64efc3688266305ea9b42e5017e.rtpl.php:139 | ||
1182 | #: tmp/pluginsadmin.b91ef64efc3688266305ea9b42e5017e.rtpl.php:199 | ||
1183 | msgid "Save" | ||
1184 | msgstr "Enregistrer" | ||
1185 | |||
1186 | #: tmp/daily.b91ef64efc3688266305ea9b42e5017e.rtpl.php:26 | 1223 | #: tmp/daily.b91ef64efc3688266305ea9b42e5017e.rtpl.php:26 |
1187 | msgid "1 RSS entry per :type" | 1224 | msgid "1 RSS entry per :type" |
1188 | msgid_plural "" | 1225 | msgid_plural "" |
@@ -1435,8 +1472,8 @@ msgid "without any tag" | |||
1435 | msgstr "sans tag" | 1472 | msgstr "sans tag" |
1436 | 1473 | ||
1437 | #: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:175 | 1474 | #: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:175 |
1438 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:43 | 1475 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:41 |
1439 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:43 | 1476 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:41 |
1440 | msgid "Fold" | 1477 | msgid "Fold" |
1441 | msgstr "Replier" | 1478 | msgstr "Replier" |
1442 | 1479 | ||
@@ -1493,8 +1530,8 @@ msgstr "Tout sélectionner" | |||
1493 | #: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:89 | 1530 | #: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:89 |
1494 | #: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:29 | 1531 | #: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:29 |
1495 | #: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:89 | 1532 | #: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:89 |
1496 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:44 | 1533 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:42 |
1497 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:44 | 1534 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:42 |
1498 | msgid "Fold all" | 1535 | msgid "Fold all" |
1499 | msgstr "Replier tout" | 1536 | msgstr "Replier tout" |
1500 | 1537 | ||
@@ -1510,9 +1547,9 @@ msgid "Remember me" | |||
1510 | msgstr "Rester connecté" | 1547 | msgstr "Rester connecté" |
1511 | 1548 | ||
1512 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:15 | 1549 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:15 |
1513 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:50 | 1550 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:48 |
1514 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:15 | 1551 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:15 |
1515 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:50 | 1552 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:48 |
1516 | msgid "by the Shaarli community" | 1553 | msgid "by the Shaarli community" |
1517 | msgstr "par la communauté Shaarli" | 1554 | msgstr "par la communauté Shaarli" |
1518 | 1555 | ||
@@ -1521,23 +1558,23 @@ msgstr "par la communauté Shaarli" | |||
1521 | msgid "Documentation" | 1558 | msgid "Documentation" |
1522 | msgstr "Documentation" | 1559 | msgstr "Documentation" |
1523 | 1560 | ||
1524 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:45 | 1561 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:43 |
1525 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:45 | 1562 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:43 |
1526 | msgid "Expand" | 1563 | msgid "Expand" |
1527 | msgstr "Déplier" | 1564 | msgstr "Déplier" |
1528 | 1565 | ||
1529 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:46 | 1566 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:44 |
1530 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:46 | 1567 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:44 |
1531 | msgid "Expand all" | 1568 | msgid "Expand all" |
1532 | msgstr "Déplier tout" | 1569 | msgstr "Déplier tout" |
1533 | 1570 | ||
1534 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:47 | 1571 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:45 |
1535 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:47 | 1572 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:45 |
1536 | msgid "Are you sure you want to delete this link?" | 1573 | msgid "Are you sure you want to delete this link?" |
1537 | msgstr "Êtes-vous sûr de vouloir supprimer ce lien ?" | 1574 | msgstr "Êtes-vous sûr de vouloir supprimer ce lien ?" |
1538 | 1575 | ||
1539 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:48 | 1576 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:46 |
1540 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:48 | 1577 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:46 |
1541 | msgid "Are you sure you want to delete this tag?" | 1578 | msgid "Are you sure you want to delete this tag?" |
1542 | msgstr "Êtes-vous sûr de vouloir supprimer ce tag ?" | 1579 | msgstr "Êtes-vous sûr de vouloir supprimer ce tag ?" |
1543 | 1580 | ||
diff --git a/tpl/vintage/daily.html b/tpl/vintage/daily.html index 74f6cdc7..28ba9f90 100644 --- a/tpl/vintage/daily.html +++ b/tpl/vintage/daily.html | |||
@@ -14,9 +14,9 @@ | |||
14 | 14 | ||
15 | <div class="dailyAbout"> | 15 | <div class="dailyAbout"> |
16 | All links of one day<br>in a single page.<br> | 16 | All links of one day<br>in a single page.<br> |
17 | {if="$previousday"} <a href="{$base_path}/daily&day={$previousday}"><b><</b>Previous day</a>{else}<b><</b>Previous day{/if} | 17 | {if="$previousday"} <a href="{$base_path}/daily?day={$previousday}"><b><</b>Previous day</a>{else}<b><</b>Previous day{/if} |
18 | - | 18 | - |
19 | {if="$nextday"}<a href="{$base_path}/daily&day={$nextday}">Next day<b>></b></a>{else}Next day<b>></b>{/if} | 19 | {if="$nextday"}<a href="{$base_path}/daily?day={$nextday}">Next day<b>></b></a>{else}Next day<b>></b>{/if} |
20 | <br> | 20 | <br> |
21 | 21 | ||
22 | {loop="$daily_about_plugin"} | 22 | {loop="$daily_about_plugin"} |
@@ -52,13 +52,13 @@ | |||
52 | {$link=$value} | 52 | {$link=$value} |
53 | <div class="dailyEntry"> | 53 | <div class="dailyEntry"> |
54 | <div class="dailyEntryPermalink"> | 54 | <div class="dailyEntryPermalink"> |
55 | <a href="{$base_path}/?{$value.shorturl}"> | 55 | <a href="{$base_path}/shaare/{$value.shorturl}"> |
56 | <img src="{$asset_path}/img/squiggle.png#" width="25" height="26" title="permalink" alt="permalink"> | 56 | <img src="{$asset_path}/img/squiggle.png#" width="25" height="26" title="permalink" alt="permalink"> |
57 | </a> | 57 | </a> |
58 | </div> | 58 | </div> |
59 | {if="!$hide_timestamps || $is_logged_in"} | 59 | {if="!$hide_timestamps || $is_logged_in"} |
60 | <div class="dailyEntryLinkdate"> | 60 | <div class="dailyEntryLinkdate"> |
61 | <a href="{$base_path}/?{$value.shorturl}">{function="strftime('%c', $link.timestamp)"}</a> | 61 | <a href="{$base_path}/shaare/{$value.shorturl}">{function="strftime('%c', $link.timestamp)"}</a> |
62 | </div> | 62 | </div> |
63 | {/if} | 63 | {/if} |
64 | {if="$link.tags"} | 64 | {if="$link.tags"} |
diff --git a/tpl/vintage/editlink.html b/tpl/vintage/editlink.html index eb8807b5..343418bc 100644 --- a/tpl/vintage/editlink.html +++ b/tpl/vintage/editlink.html | |||
@@ -6,6 +6,7 @@ | |||
6 | {if="$link.title==''"}onload="document.linkform.lf_title.focus();" | 6 | {if="$link.title==''"}onload="document.linkform.lf_title.focus();" |
7 | {elseif="$link.description==''"}onload="document.linkform.lf_description.focus();" | 7 | {elseif="$link.description==''"}onload="document.linkform.lf_description.focus();" |
8 | {else}onload="document.linkform.lf_tags.focus();"{/if} > | 8 | {else}onload="document.linkform.lf_tags.focus();"{/if} > |
9 | {$asyncLoadClass=$link_is_new && $async_metadata && empty($link.title) ? 'loading-input' : ''} | ||
9 | <div id="pageheader"> | 10 | <div id="pageheader"> |
10 | {include="page.header"} | 11 | {include="page.header"} |
11 | <div id="shaarli_title"><a href="{$titleLink}">{$shaarlititle}</a></div> | 12 | <div id="shaarli_title"><a href="{$titleLink}">{$shaarlititle}</a></div> |
@@ -14,12 +15,29 @@ | |||
14 | {if="isset($link.id)"} | 15 | {if="isset($link.id)"} |
15 | <input type="hidden" name="lf_id" value="{$link.id}"> | 16 | <input type="hidden" name="lf_id" value="{$link.id}"> |
16 | {/if} | 17 | {/if} |
17 | <label for="lf_url"><i>URL</i></label><br><input type="text" name="lf_url" id="lf_url" value="{$link.url}" class="lf_input"><br> | 18 | <label for="lf_url"><i>URL</i></label><br><input type="text" name="lf_url" id="lf_url" value="{$link.url}" class="lf_input"> |
18 | <label for="lf_title"><i>Title</i></label><br><input type="text" name="lf_title" id="lf_title" value="{$link.title}" class="lf_input"><br> | 19 | <label for="lf_title"><i>Title</i></label> |
19 | <label for="lf_description"><i>Description</i></label><br><textarea name="lf_description" id="lf_description" rows="4" cols="25">{$link.description}</textarea><br> | 20 | <div class="{$asyncLoadClass}"> |
20 | <label for="lf_tags"><i>Tags</i></label><br> | 21 | <input type="text" name="lf_title" id="lf_title" value="{$link.title}" class="lf_input"> |
21 | <input type="text" name="lf_tags" id="lf_tags" value="{$link.tags}" class="lf_input" | 22 | <div class="icon-container"> |
22 | data-list="{loop="$tags"}{$key}, {/loop}" data-multiple autocomplete="off" ><br> | 23 | <i class="loader"></i> |
24 | </div> | ||
25 | </div> | ||
26 | <label for="lf_description"><i>Description</i></label> | ||
27 | <div class="{if="$retrieve_description"}{$asyncLoadClass}{/if}"> | ||
28 | <textarea name="lf_description" id="lf_description" rows="4" cols="25">{$link.description}</textarea> | ||
29 | <div class="icon-container"> | ||
30 | <i class="loader"></i> | ||
31 | </div> | ||
32 | </div> | ||
33 | <label for="lf_tags"><i>Tags</i></label> | ||
34 | <div class="{if="$retrieve_description"}{$asyncLoadClass}{/if}"> | ||
35 | <input type="text" name="lf_tags" id="lf_tags" value="{$link.tags}" class="lf_input" | ||
36 | data-list="{loop="$tags"}{$key}, {/loop}" data-multiple autocomplete="off" > | ||
37 | <div class="icon-container"> | ||
38 | <i class="loader"></i> | ||
39 | </div> | ||
40 | </div> | ||
23 | 41 | ||
24 | {if="$formatter==='markdown'"} | 42 | {if="$formatter==='markdown'"} |
25 | <div class="md_help"> | 43 | <div class="md_help"> |
@@ -56,5 +74,5 @@ | |||
56 | </div> | 74 | </div> |
57 | </div> | 75 | </div> |
58 | {include="page.footer"} | 76 | {include="page.footer"} |
59 | </body> | 77 | {if="$link_is_new && $async_metadata"}<script src="{$asset_path}/js/metadata.min.js?v={$version_hash}#"></script>{/if}</body> |
60 | </html> | 78 | </html> |
diff --git a/tpl/vintage/page.header.html b/tpl/vintage/page.header.html index 0a33523b..64d7f656 100644 --- a/tpl/vintage/page.header.html +++ b/tpl/vintage/page.header.html | |||
@@ -54,6 +54,30 @@ | |||
54 | </ul> | 54 | </ul> |
55 | {/if} | 55 | {/if} |
56 | 56 | ||
57 | {if="!empty($global_errors)"} | ||
58 | <ul class="errors"> | ||
59 | {loop="$global_errors"} | ||
60 | <li>{$value}</li> | ||
61 | {/loop} | ||
62 | </ul> | ||
63 | {/if} | ||
64 | |||
65 | {if="!empty($global_warnings)"} | ||
66 | <ul class="warnings"> | ||
67 | {loop="$global_warnings"} | ||
68 | <li>{$value}</li> | ||
69 | {/loop} | ||
70 | </ul> | ||
71 | {/if} | ||
72 | |||
73 | {if="!empty($global_successes)"} | ||
74 | <ul class="successes"> | ||
75 | {loop="$global_successes"} | ||
76 | <li>{$value}</li> | ||
77 | {/loop} | ||
78 | </ul> | ||
79 | {/if} | ||
80 | |||
57 | <div class="clear"></div> | 81 | <div class="clear"></div> |
58 | 82 | ||
59 | 83 | ||