diff options
author | ArthurHoaro <arthur@hoa.ro> | 2018-10-06 13:22:59 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-06 13:22:59 +0200 |
commit | 86e1bc713fd7fa74d6a17a7687428fa1c6d3c5f2 (patch) | |
tree | 4c9b6c8a550b928dc734de5c78d8403f5631e161 | |
parent | 10a7b5cee96a742fbe86edbea977f3c55c92e9aa (diff) | |
parent | d9bf5b31ff9e2d007ddfb7f7756184f0ca9676c8 (diff) | |
download | Shaarli-86e1bc713fd7fa74d6a17a7687428fa1c6d3c5f2.tar.gz Shaarli-86e1bc713fd7fa74d6a17a7687428fa1c6d3c5f2.tar.zst Shaarli-86e1bc713fd7fa74d6a17a7687428fa1c6d3c5f2.zip |
Merge pull request #1144 from ArthurHoaro/feature/sticky
Add a button to set links as sticky
-rw-r--r-- | application/LinkDB.php | 3 | ||||
-rw-r--r-- | application/Router.php | 6 | ||||
-rw-r--r-- | application/Updater.php | 20 | ||||
-rw-r--r-- | assets/default/scss/shaarli.scss | 12 | ||||
-rw-r--r-- | inc/languages/fr/LC_MESSAGES/shaarli.po | 448 | ||||
-rw-r--r-- | index.php | 19 | ||||
-rw-r--r-- | tests/FeedBuilderTest.php | 18 | ||||
-rw-r--r-- | tests/LinkDBTest.php | 10 | ||||
-rw-r--r-- | tests/NetscapeBookmarkUtils/BookmarkExportTest.php | 4 | ||||
-rw-r--r-- | tests/Updater/UpdaterTest.php | 61 | ||||
-rw-r--r-- | tests/api/controllers/links/GetLinksTest.php | 21 | ||||
-rw-r--r-- | tests/utils/ReferenceLinkDB.php | 45 | ||||
-rw-r--r-- | tpl/default/linklist.html | 18 |
13 files changed, 408 insertions, 277 deletions
diff --git a/application/LinkDB.php b/application/LinkDB.php index cd0f2967..cdd68cfb 100644 --- a/application/LinkDB.php +++ b/application/LinkDB.php | |||
@@ -537,6 +537,9 @@ You use the community supported version of the original Shaarli project, by Seba | |||
537 | $order = $order === 'ASC' ? -1 : 1; | 537 | $order = $order === 'ASC' ? -1 : 1; |
538 | // Reorder array by dates. | 538 | // Reorder array by dates. |
539 | usort($this->links, function($a, $b) use ($order) { | 539 | usort($this->links, function($a, $b) use ($order) { |
540 | if (isset($a['sticky']) && isset($b['sticky']) && $a['sticky'] !== $b['sticky']) { | ||
541 | return $a['sticky'] ? -1 : 1; | ||
542 | } | ||
540 | return $a['created'] < $b['created'] ? 1 * $order : -1 * $order; | 543 | return $a['created'] < $b['created'] ? 1 * $order : -1 * $order; |
541 | }); | 544 | }); |
542 | 545 | ||
diff --git a/application/Router.php b/application/Router.php index bf86b884..beb3165b 100644 --- a/application/Router.php +++ b/application/Router.php | |||
@@ -37,6 +37,8 @@ class Router | |||
37 | 37 | ||
38 | public static $PAGE_DELETELINK = 'delete_link'; | 38 | public static $PAGE_DELETELINK = 'delete_link'; |
39 | 39 | ||
40 | public static $PAGE_PINLINK = 'pin'; | ||
41 | |||
40 | public static $PAGE_EXPORT = 'export'; | 42 | public static $PAGE_EXPORT = 'export'; |
41 | 43 | ||
42 | public static $PAGE_IMPORT = 'import'; | 44 | public static $PAGE_IMPORT = 'import'; |
@@ -146,6 +148,10 @@ class Router | |||
146 | return self::$PAGE_DELETELINK; | 148 | return self::$PAGE_DELETELINK; |
147 | } | 149 | } |
148 | 150 | ||
151 | if (startsWith($query, 'do='. self::$PAGE_PINLINK)) { | ||
152 | return self::$PAGE_PINLINK; | ||
153 | } | ||
154 | |||
149 | if (startsWith($query, 'do='. self::$PAGE_EXPORT)) { | 155 | if (startsWith($query, 'do='. self::$PAGE_EXPORT)) { |
150 | return self::$PAGE_EXPORT; | 156 | return self::$PAGE_EXPORT; |
151 | } | 157 | } |
diff --git a/application/Updater.php b/application/Updater.php index 480bff82..5dde47cb 100644 --- a/application/Updater.php +++ b/application/Updater.php | |||
@@ -517,6 +517,26 @@ class Updater | |||
517 | 517 | ||
518 | return true; | 518 | return true; |
519 | } | 519 | } |
520 | |||
521 | /** | ||
522 | * Set sticky = false on all links | ||
523 | * | ||
524 | * @return bool true if the update is successful, false otherwise. | ||
525 | */ | ||
526 | public function updateMethodSetSticky() | ||
527 | { | ||
528 | foreach ($this->linkDB as $key => $link) { | ||
529 | if (isset($link['sticky'])) { | ||
530 | return true; | ||
531 | } | ||
532 | $link['sticky'] = false; | ||
533 | $this->linkDB[$key] = $link; | ||
534 | } | ||
535 | |||
536 | $this->linkDB->save($this->conf->get('resource.page_cache')); | ||
537 | |||
538 | return true; | ||
539 | } | ||
520 | } | 540 | } |
521 | 541 | ||
522 | /** | 542 | /** |
diff --git a/assets/default/scss/shaarli.scss b/assets/default/scss/shaarli.scss index b8578ea6..55f9f0a1 100644 --- a/assets/default/scss/shaarli.scss +++ b/assets/default/scss/shaarli.scss | |||
@@ -755,6 +755,14 @@ body, | |||
755 | font-size: 1.3em; | 755 | font-size: 1.3em; |
756 | } | 756 | } |
757 | 757 | ||
758 | .pin-link { | ||
759 | font-size: 1.3em; | ||
760 | } | ||
761 | |||
762 | .pinned-link { | ||
763 | color: $blue !important; | ||
764 | } | ||
765 | |||
758 | .linklist-item-description { | 766 | .linklist-item-description { |
759 | position: relative; | 767 | position: relative; |
760 | padding: 0 10px; | 768 | padding: 0 10px; |
@@ -848,6 +856,10 @@ body, | |||
848 | margin: 0 7px; | 856 | margin: 0 7px; |
849 | } | 857 | } |
850 | 858 | ||
859 | .ctrl-delete { | ||
860 | margin: 0 7px 0 0; | ||
861 | } | ||
862 | |||
851 | // 64em -> lg | 863 | // 64em -> lg |
852 | @media screen and (max-width: 64em) { | 864 | @media screen and (max-width: 64em) { |
853 | .linklist-item-infos-url { | 865 | .linklist-item-infos-url { |
diff --git a/inc/languages/fr/LC_MESSAGES/shaarli.po b/inc/languages/fr/LC_MESSAGES/shaarli.po index 5fd0f775..102c80da 100644 --- a/inc/languages/fr/LC_MESSAGES/shaarli.po +++ b/inc/languages/fr/LC_MESSAGES/shaarli.po | |||
@@ -1,15 +1,15 @@ | |||
1 | msgid "" | 1 | msgid "" |
2 | msgstr "" | 2 | msgstr "" |
3 | "Project-Id-Version: Shaarli\n" | 3 | "Project-Id-Version: Shaarli\n" |
4 | "POT-Creation-Date: 2018-07-17 13:04+0200\n" | 4 | "POT-Creation-Date: 2018-10-06 13:08+0200\n" |
5 | "PO-Revision-Date: 2018-07-17 13:07+0200\n" | 5 | "PO-Revision-Date: 2018-10-06 13:08+0200\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" |
9 | "MIME-Version: 1.0\n" | 9 | "MIME-Version: 1.0\n" |
10 | "Content-Type: text/plain; charset=UTF-8\n" | 10 | "Content-Type: text/plain; charset=UTF-8\n" |
11 | "Content-Transfer-Encoding: 8bit\n" | 11 | "Content-Transfer-Encoding: 8bit\n" |
12 | "X-Generator: Poedit 2.0.9\n" | 12 | "X-Generator: Poedit 2.1.1\n" |
13 | "X-Poedit-Basepath: ../../../..\n" | 13 | "X-Poedit-Basepath: ../../../..\n" |
14 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" | 14 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" |
15 | "X-Poedit-SourceCharset: UTF-8\n" | 15 | "X-Poedit-SourceCharset: UTF-8\n" |
@@ -101,8 +101,6 @@ msgid "Array offset and link ID must be equal." | |||
101 | msgstr "La clé du tableau et l'ID du lien doivent être identiques." | 101 | msgstr "La clé du tableau et l'ID du lien doivent être identiques." |
102 | 102 | ||
103 | #: application/LinkDB.php:251 | 103 | #: application/LinkDB.php:251 |
104 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:14 | ||
105 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:48 | ||
106 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:14 | 104 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:14 |
107 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:48 | 105 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:48 |
108 | msgid "" | 106 | msgid "" |
@@ -125,8 +123,8 @@ msgstr "" | |||
125 | "Bienvenue sur Shaarli ! Ceci est votre premier marque-page public. Pour me " | 123 | "Bienvenue sur Shaarli ! Ceci est votre premier marque-page public. Pour me " |
126 | "modifier ou me supprimer, vous devez d'abord vous connecter.\n" | 124 | "modifier ou me supprimer, vous devez d'abord vous connecter.\n" |
127 | "\n" | 125 | "\n" |
128 | "Pour apprendre à utiliser Shaarli, consultez le lien « Documentation » " | 126 | "Pour apprendre à utiliser Shaarli, consultez le lien « Documentation » en " |
129 | "en bas de page.\n" | 127 | "bas de page.\n" |
130 | "\n" | 128 | "\n" |
131 | "Vous utilisez la version supportée par la communauté du projet original " | 129 | "Vous utilisez la version supportée par la communauté du projet original " |
132 | "Shaarli de Sébastien Sauvage." | 130 | "Shaarli de Sébastien Sauvage." |
@@ -185,14 +183,14 @@ msgid "" | |||
185 | "php-gd extension must be loaded to use thumbnails. Thumbnails are now " | 183 | "php-gd extension must be loaded to use thumbnails. Thumbnails are now " |
186 | "disabled. Please reload the page." | 184 | "disabled. Please reload the page." |
187 | msgstr "" | 185 | msgstr "" |
188 | "l'extension php-gd doit être chargée pour utiliser les miniatures. Les miniatures sont désormais " | 186 | "l'extension php-gd doit être chargée pour utiliser les miniatures. Les " |
189 | "désactivées. Rechargez la page." | 187 | "miniatures sont désormais désactivées. Rechargez la page." |
190 | 188 | ||
191 | #: application/Updater.php:86 | 189 | #: application/Updater.php:86 |
192 | msgid "Couldn't retrieve Updater class methods." | 190 | msgid "Couldn't retrieve Updater class methods." |
193 | msgstr "Impossible de récupérer les méthodes de la classe Updater." | 191 | msgstr "Impossible de récupérer les méthodes de la classe Updater." |
194 | 192 | ||
195 | #: application/Updater.php:514 index.php:1023 | 193 | #: application/Updater.php:514 index.php:1022 |
196 | msgid "" | 194 | msgid "" |
197 | "You have enabled or changed thumbnails mode. <a href=\"?do=thumbs_update" | 195 | "You have enabled or changed thumbnails mode. <a href=\"?do=thumbs_update" |
198 | "\">Please synchronize them</a>." | 196 | "\">Please synchronize them</a>." |
@@ -200,17 +198,17 @@ msgstr "" | |||
200 | "Vous avez activé ou changé le mode de miniatures. <a href=\"?do=thumbs_update" | 198 | "Vous avez activé ou changé le mode de miniatures. <a href=\"?do=thumbs_update" |
201 | "\">Merci de les synchroniser</a>." | 199 | "\">Merci de les synchroniser</a>." |
202 | 200 | ||
203 | #: application/Updater.php:566 | 201 | #: application/Updater.php:586 |
204 | msgid "An error occurred while running the update " | 202 | msgid "An error occurred while running the update " |
205 | msgstr "Une erreur s'est produite lors de l'exécution de la mise à jour " | 203 | msgstr "Une erreur s'est produite lors de l'exécution de la mise à jour " |
206 | 204 | ||
207 | #: application/Updater.php:606 | 205 | #: application/Updater.php:626 |
208 | msgid "Updates file path is not set, can't write updates." | 206 | msgid "Updates file path is not set, can't write updates." |
209 | msgstr "" | 207 | msgstr "" |
210 | "Le chemin vers le fichier de mise à jour n'est pas défini, impossible " | 208 | "Le chemin vers le fichier de mise à jour n'est pas défini, impossible " |
211 | "d'écrire les mises à jour." | 209 | "d'écrire les mises à jour." |
212 | 210 | ||
213 | #: application/Updater.php:611 | 211 | #: application/Updater.php:631 |
214 | msgid "Unable to write updates in " | 212 | msgid "Unable to write updates in " |
215 | msgstr "Impossible d'écrire les mises à jour dans " | 213 | msgstr "Impossible d'écrire les mises à jour dans " |
216 | 214 | ||
@@ -288,72 +286,64 @@ msgstr "NON. Vous êtes banni pour le moment. Revenez plus tard." | |||
288 | msgid "Wrong login/password." | 286 | msgid "Wrong login/password." |
289 | msgstr "Nom d'utilisateur ou mot de passe incorrect(s)." | 287 | msgstr "Nom d'utilisateur ou mot de passe incorrect(s)." |
290 | 288 | ||
291 | #: index.php:483 tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:46 | 289 | #: index.php:482 tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:46 |
292 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:46 | ||
293 | msgid "Daily" | 290 | msgid "Daily" |
294 | msgstr "Quotidien" | 291 | msgstr "Quotidien" |
295 | 292 | ||
296 | #: index.php:589 tmp/loginform.b91ef64efc3688266305ea9b42e5017e.rtpl.php:28 | 293 | #: index.php:588 tmp/loginform.b91ef64efc3688266305ea9b42e5017e.rtpl.php:28 |
297 | #: tmp/loginform.b91ef64efc3688266305ea9b42e5017e.rtpl.php:44 | 294 | #: tmp/loginform.b91ef64efc3688266305ea9b42e5017e.rtpl.php:44 |
298 | #: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:75 | ||
299 | #: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:99 | ||
300 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:75 | 295 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:75 |
301 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:99 | 296 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:99 |
302 | msgid "Login" | 297 | msgid "Login" |
303 | msgstr "Connexion" | 298 | msgstr "Connexion" |
304 | 299 | ||
305 | #: index.php:606 tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:41 | 300 | #: index.php:605 tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:41 |
306 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:41 | ||
307 | msgid "Picture wall" | 301 | msgid "Picture wall" |
308 | msgstr "Mur d'images" | 302 | msgstr "Mur d'images" |
309 | 303 | ||
310 | #: index.php:683 tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:36 | 304 | #: index.php:682 tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:36 |
311 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:36 | ||
312 | #: tmp/tag.cloud.b91ef64efc3688266305ea9b42e5017e.rtpl.php:19 | 305 | #: tmp/tag.cloud.b91ef64efc3688266305ea9b42e5017e.rtpl.php:19 |
313 | msgid "Tag cloud" | 306 | msgid "Tag cloud" |
314 | msgstr "Nuage de tags" | 307 | msgstr "Nuage de tags" |
315 | 308 | ||
316 | #: index.php:716 tmp/tag.list.b91ef64efc3688266305ea9b42e5017e.rtpl.php:19 | 309 | #: index.php:715 tmp/tag.list.b91ef64efc3688266305ea9b42e5017e.rtpl.php:19 |
317 | msgid "Tag list" | 310 | msgid "Tag list" |
318 | msgstr "Liste des tags" | 311 | msgstr "Liste des tags" |
319 | 312 | ||
320 | #: index.php:941 tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:31 | 313 | #: index.php:940 tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:31 |
321 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:31 | ||
322 | msgid "Tools" | 314 | msgid "Tools" |
323 | msgstr "Outils" | 315 | msgstr "Outils" |
324 | 316 | ||
325 | #: index.php:950 | 317 | #: index.php:949 |
326 | msgid "You are not supposed to change a password on an Open Shaarli." | 318 | msgid "You are not supposed to change a password on an Open Shaarli." |
327 | msgstr "" | 319 | msgstr "" |
328 | "Vous n'êtes pas censé modifier le mot de passe d'un Shaarli en mode ouvert." | 320 | "Vous n'êtes pas censé modifier le mot de passe d'un Shaarli en mode ouvert." |
329 | 321 | ||
330 | #: index.php:955 index.php:997 index.php:1085 index.php:1116 index.php:1221 | 322 | #: index.php:954 index.php:996 index.php:1084 index.php:1116 index.php:1221 |
331 | msgid "Wrong token." | 323 | msgid "Wrong token." |
332 | msgstr "Jeton invalide." | 324 | msgstr "Jeton invalide." |
333 | 325 | ||
334 | #: index.php:960 | 326 | #: index.php:959 |
335 | msgid "The old password is not correct." | 327 | msgid "The old password is not correct." |
336 | msgstr "L'ancien mot de passe est incorrect." | 328 | msgstr "L'ancien mot de passe est incorrect." |
337 | 329 | ||
338 | #: index.php:980 | 330 | #: index.php:979 |
339 | msgid "Your password has been changed" | 331 | msgid "Your password has been changed" |
340 | msgstr "Votre mot de passe a été modifié" | 332 | msgstr "Votre mot de passe a été modifié" |
341 | 333 | ||
342 | #: index.php:985 | 334 | #: index.php:984 tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:29 |
343 | #: tmp/changepassword.b91ef64efc3688266305ea9b42e5017e.rtpl.php:13 | ||
344 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:29 | ||
345 | msgid "Change password" | 335 | msgid "Change password" |
346 | msgstr "Modifier le mot de passe" | 336 | msgstr "Modifier le mot de passe" |
347 | 337 | ||
348 | #: index.php:1043 | 338 | #: index.php:1042 |
349 | msgid "Configuration was saved." | 339 | msgid "Configuration was saved." |
350 | msgstr "La configuration a été sauvegardée." | 340 | msgstr "La configuration a été sauvegardée." |
351 | 341 | ||
352 | #: index.php:1068 tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:24 | 342 | #: index.php:1067 tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:24 |
353 | msgid "Configure" | 343 | msgid "Configure" |
354 | msgstr "Configurer" | 344 | msgstr "Configurer" |
355 | 345 | ||
356 | #: index.php:1079 tmp/changetag.b91ef64efc3688266305ea9b42e5017e.rtpl.php:13 | 346 | #: index.php:1078 tmp/changetag.b91ef64efc3688266305ea9b42e5017e.rtpl.php:13 |
357 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:36 | 347 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:36 |
358 | msgid "Manage tags" | 348 | msgid "Manage tags" |
359 | msgstr "Gérer les tags" | 349 | msgstr "Gérer les tags" |
@@ -381,7 +371,6 @@ msgid "Edit" | |||
381 | msgstr "Modifier" | 371 | msgstr "Modifier" |
382 | 372 | ||
383 | #: index.php:1281 index.php:1351 | 373 | #: index.php:1281 index.php:1351 |
384 | #: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:26 | ||
385 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:26 | 374 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:26 |
386 | msgid "Shaare" | 375 | msgid "Shaare" |
387 | msgstr "Shaare" | 376 | msgstr "Shaare" |
@@ -390,15 +379,19 @@ msgstr "Shaare" | |||
390 | msgid "Note: " | 379 | msgid "Note: " |
391 | msgstr "Note : " | 380 | msgstr "Note : " |
392 | 381 | ||
393 | #: index.php:1360 tmp/export.b91ef64efc3688266305ea9b42e5017e.rtpl.php:65 | 382 | #: index.php:1359 |
383 | msgid "Invalid link ID provided" | ||
384 | msgstr "" | ||
385 | |||
386 | #: index.php:1379 | ||
394 | msgid "Export" | 387 | msgid "Export" |
395 | msgstr "Exporter" | 388 | msgstr "Exporter" |
396 | 389 | ||
397 | #: index.php:1422 tmp/import.b91ef64efc3688266305ea9b42e5017e.rtpl.php:83 | 390 | #: index.php:1441 |
398 | msgid "Import" | 391 | msgid "Import" |
399 | msgstr "Importer" | 392 | msgstr "Importer" |
400 | 393 | ||
401 | #: index.php:1432 | 394 | #: index.php:1451 |
402 | #, php-format | 395 | #, php-format |
403 | msgid "" | 396 | msgid "" |
404 | "The file you are trying to upload is probably bigger than what this " | 397 | "The file you are trying to upload is probably bigger than what this " |
@@ -408,20 +401,20 @@ msgstr "" | |||
408 | "le serveur web peut accepter (%s). Merci de l'envoyer en parties plus " | 401 | "le serveur web peut accepter (%s). Merci de l'envoyer en parties plus " |
409 | "légères." | 402 | "légères." |
410 | 403 | ||
411 | #: index.php:1471 tmp/pluginsadmin.b91ef64efc3688266305ea9b42e5017e.rtpl.php:26 | 404 | #: index.php:1490 tmp/pluginsadmin.b91ef64efc3688266305ea9b42e5017e.rtpl.php:26 |
412 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:22 | 405 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:22 |
413 | msgid "Plugin administration" | 406 | msgid "Plugin administration" |
414 | msgstr "Administration des plugins" | 407 | msgstr "Administration des plugins" |
415 | 408 | ||
416 | #: index.php:1523 tmp/thumbnails.b91ef64efc3688266305ea9b42e5017e.rtpl.php:14 | 409 | #: index.php:1542 tmp/thumbnails.b91ef64efc3688266305ea9b42e5017e.rtpl.php:14 |
417 | msgid "Thumbnails update" | 410 | msgid "Thumbnails update" |
418 | msgstr "Mise à jour des miniatures" | 411 | msgstr "Mise à jour des miniatures" |
419 | 412 | ||
420 | #: index.php:1695 | 413 | #: index.php:1714 |
421 | msgid "Search: " | 414 | msgid "Search: " |
422 | msgstr "Recherche : " | 415 | msgstr "Recherche : " |
423 | 416 | ||
424 | #: index.php:1735 | 417 | #: index.php:1754 |
425 | #, php-format | 418 | #, php-format |
426 | msgid "" | 419 | msgid "" |
427 | "<pre>Sessions do not seem to work correctly on your server.<br>Make sure the " | 420 | "<pre>Sessions do not seem to work correctly on your server.<br>Make sure the " |
@@ -431,16 +424,16 @@ msgid "" | |||
431 | "custom hostname without a dot causes cookie storage to fail. We recommend " | 424 | "custom hostname without a dot causes cookie storage to fail. We recommend " |
432 | "accessing your server via it's IP address or Fully Qualified Domain Name.<br>" | 425 | "accessing your server via it's IP address or Fully Qualified Domain Name.<br>" |
433 | msgstr "" | 426 | msgstr "" |
434 | "<pre>Les sesssions ne semblent pas fonctionner sur ce serveur.<br>Assurez vous " | 427 | "<pre>Les sesssions ne semblent pas fonctionner sur ce serveur.<br>Assurez " |
435 | "que la variable « session.save_path » est correctement définie dans votre " | 428 | "vous que la variable « session.save_path » est correctement définie dans " |
436 | "fichier de configuration PHP, et que vous avez les droits d'écriture dessus." | 429 | "votre fichier de configuration PHP, et que vous avez les droits d'écriture " |
437 | "<br>Ce paramètre pointe actuellement sur %s.<br>Sur certains navigateurs, " | 430 | "dessus.<br>Ce paramètre pointe actuellement sur %s.<br>Sur certains " |
438 | "accéder à votre serveur depuis un nom d'hôte comme « localhost » ou autre " | 431 | "navigateurs, accéder à votre serveur depuis un nom d'hôte comme « localhost " |
439 | "nom personnalisé sans point '.' entraine l'échec de la sauvegarde des " | 432 | "» ou autre nom personnalisé sans point '.' entraine l'échec de la sauvegarde " |
440 | "cookies. Nous vous recommandons d'accéder à votre serveur depuis son adresse " | 433 | "des cookies. Nous vous recommandons d'accéder à votre serveur depuis son " |
441 | "IP ou un <em>Fully Qualified Domain Name</em>.<br>" | 434 | "adresse IP ou un <em>Fully Qualified Domain Name</em>.<br>" |
442 | 435 | ||
443 | #: index.php:1745 | 436 | #: index.php:1764 |
444 | msgid "Click to try again." | 437 | msgid "Click to try again." |
445 | msgstr "Cliquer ici pour réessayer." | 438 | msgstr "Cliquer ici pour réessayer." |
446 | 439 | ||
@@ -481,12 +474,13 @@ msgstr "" | |||
481 | "Erreur de l'extension Isso : Merci de définir le paramètre « ISSO_SERVER » " | 474 | "Erreur de l'extension Isso : Merci de définir le paramètre « ISSO_SERVER » " |
482 | "dans la page d'administration des extensions." | 475 | "dans la page d'administration des extensions." |
483 | 476 | ||
484 | #: plugins/isso/isso.php:63 | 477 | #: plugins/isso/isso.php:90 |
485 | msgid "Let visitor comment your shaares on permalinks with Isso." | 478 | msgid "Let visitor comment your shaares on permalinks with Isso." |
486 | msgstr "" | 479 | msgstr "" |
487 | "Permettre aux visiteurs de commenter vos shaares sur les permaliens avec Isso." | 480 | "Permettre aux visiteurs de commenter vos shaares sur les permaliens avec " |
481 | "Isso." | ||
488 | 482 | ||
489 | #: plugins/isso/isso.php:64 | 483 | #: plugins/isso/isso.php:91 |
490 | msgid "Isso server URL (without 'http://')" | 484 | msgid "Isso server URL (without 'http://')" |
491 | msgstr "URL du serveur Isso (sans 'http://')" | 485 | msgstr "URL du serveur Isso (sans 'http://')" |
492 | 486 | ||
@@ -603,35 +597,17 @@ msgstr "Version de l'API Wallabag (1 ou 2)" | |||
603 | #: tests/LanguagesTest.php:214 tests/LanguagesTest.php:227 | 597 | #: tests/LanguagesTest.php:214 tests/LanguagesTest.php:227 |
604 | #: tests/languages/fr/LanguagesFrTest.php:160 | 598 | #: tests/languages/fr/LanguagesFrTest.php:160 |
605 | #: tests/languages/fr/LanguagesFrTest.php:173 | 599 | #: tests/languages/fr/LanguagesFrTest.php:173 |
606 | #: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:85 | ||
607 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:85 | 600 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:85 |
608 | msgid "Search" | 601 | msgid "Search" |
609 | msgid_plural "Search" | 602 | msgid_plural "Search" |
610 | msgstr[0] "Rechercher" | 603 | msgstr[0] "Rechercher" |
611 | msgstr[1] "Rechercher" | 604 | msgstr[1] "Rechercher" |
612 | 605 | ||
613 | #: tmp/404.b91ef64efc3688266305ea9b42e5017e.rtpl.php:12 | ||
614 | msgid "Sorry, nothing to see here." | ||
615 | msgstr "Désolé, il y a rien à voir ici." | ||
616 | |||
617 | #: tmp/addlink.b91ef64efc3688266305ea9b42e5017e.rtpl.php:16 | 606 | #: tmp/addlink.b91ef64efc3688266305ea9b42e5017e.rtpl.php:16 |
618 | msgid "URL or leave empty to post a note" | 607 | msgid "URL or leave empty to post a note" |
619 | msgstr "URL ou laisser vide pour créer une note" | 608 | msgstr "URL ou laisser vide pour créer une note" |
620 | 609 | ||
621 | #: tmp/changepassword.b91ef64efc3688266305ea9b42e5017e.rtpl.php:16 | ||
622 | msgid "Current password" | ||
623 | msgstr "Mot de passe actuel" | ||
624 | |||
625 | #: tmp/changepassword.b91ef64efc3688266305ea9b42e5017e.rtpl.php:19 | ||
626 | msgid "New password" | ||
627 | msgstr "Nouveau mot de passe" | ||
628 | |||
629 | #: tmp/changepassword.b91ef64efc3688266305ea9b42e5017e.rtpl.php:23 | ||
630 | msgid "Change" | ||
631 | msgstr "Changer" | ||
632 | |||
633 | #: tmp/changetag.b91ef64efc3688266305ea9b42e5017e.rtpl.php:16 | 610 | #: tmp/changetag.b91ef64efc3688266305ea9b42e5017e.rtpl.php:16 |
634 | #: tmp/import.b91ef64efc3688266305ea9b42e5017e.rtpl.php:77 | ||
635 | msgid "Tag" | 611 | msgid "Tag" |
636 | msgstr "Tag" | 612 | msgstr "Tag" |
637 | 613 | ||
@@ -661,6 +637,34 @@ msgstr "Vous pouvez aussi modifier les tags dans la" | |||
661 | msgid "tag list" | 637 | msgid "tag list" |
662 | msgstr "liste des tags" | 638 | msgstr "liste des tags" |
663 | 639 | ||
640 | #: tmp/configure.90100d2eaf5d3705e14b9b4f78ecddc9.rtpl.php:143 | ||
641 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:296 | ||
642 | msgid "All" | ||
643 | msgstr "Tous" | ||
644 | |||
645 | #: tmp/configure.90100d2eaf5d3705e14b9b4f78ecddc9.rtpl.php:147 | ||
646 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:300 | ||
647 | msgid "Only common media hosts" | ||
648 | msgstr "Seulement les hébergeurs de média connus" | ||
649 | |||
650 | #: tmp/configure.90100d2eaf5d3705e14b9b4f78ecddc9.rtpl.php:151 | ||
651 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:304 | ||
652 | msgid "None" | ||
653 | msgstr "Aucune" | ||
654 | |||
655 | #: tmp/configure.90100d2eaf5d3705e14b9b4f78ecddc9.rtpl.php:158 | ||
656 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:281 | ||
657 | msgid "You need to enable the extension <code>php-gd</code> to use thumbnails." | ||
658 | msgstr "" | ||
659 | "Vous devez activer l'extension <code>php-gd</code> pour utiliser les " | ||
660 | "miniatures." | ||
661 | |||
662 | #: tmp/configure.90100d2eaf5d3705e14b9b4f78ecddc9.rtpl.php:162 | ||
663 | #, fuzzy | ||
664 | #| msgid "Enable thumbnails" | ||
665 | msgid "Synchonize thumbnails" | ||
666 | msgstr "Activer les miniatures" | ||
667 | |||
664 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:29 | 668 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:29 |
665 | msgid "title" | 669 | msgid "title" |
666 | msgstr "titre" | 670 | msgstr "titre" |
@@ -678,22 +682,18 @@ msgid "Theme" | |||
678 | msgstr "Thème" | 682 | msgstr "Thème" |
679 | 683 | ||
680 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:87 | 684 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:87 |
681 | #: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:78 | ||
682 | msgid "Language" | 685 | msgid "Language" |
683 | msgstr "Langue" | 686 | msgstr "Langue" |
684 | 687 | ||
685 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:116 | 688 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:116 |
686 | #: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:102 | ||
687 | msgid "Timezone" | 689 | msgid "Timezone" |
688 | msgstr "Fuseau horaire" | 690 | msgstr "Fuseau horaire" |
689 | 691 | ||
690 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:117 | 692 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:117 |
691 | #: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:103 | ||
692 | msgid "Continent" | 693 | msgid "Continent" |
693 | msgstr "Continent" | 694 | msgstr "Continent" |
694 | 695 | ||
695 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:117 | 696 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:117 |
696 | #: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:103 | ||
697 | msgid "City" | 697 | msgid "City" |
698 | msgstr "Ville" | 698 | msgstr "Ville" |
699 | 699 | ||
@@ -734,22 +734,18 @@ msgid "Do not show any links if the user is not logged in" | |||
734 | msgstr "N'afficher aucun lien sans être connecté" | 734 | msgstr "N'afficher aucun lien sans être connecté" |
735 | 735 | ||
736 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:231 | 736 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:231 |
737 | #: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:150 | ||
738 | msgid "Check updates" | 737 | msgid "Check updates" |
739 | msgstr "Vérifier les mises à jour" | 738 | msgstr "Vérifier les mises à jour" |
740 | 739 | ||
741 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:232 | 740 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:232 |
742 | #: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:152 | ||
743 | msgid "Notify me when a new release is ready" | 741 | msgid "Notify me when a new release is ready" |
744 | msgstr "Me notifier lorsqu'une nouvelle version est disponible" | 742 | msgstr "Me notifier lorsqu'une nouvelle version est disponible" |
745 | 743 | ||
746 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:247 | 744 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:247 |
747 | #: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:169 | ||
748 | msgid "Enable REST API" | 745 | msgid "Enable REST API" |
749 | msgstr "Activer l'API REST" | 746 | msgstr "Activer l'API REST" |
750 | 747 | ||
751 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:248 | 748 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:248 |
752 | #: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:170 | ||
753 | msgid "Allow third party software to use Shaarli such as mobile application" | 749 | msgid "Allow third party software to use Shaarli such as mobile application" |
754 | msgstr "" | 750 | msgstr "" |
755 | "Permet aux applications tierces d'utiliser Shaarli, par exemple les " | 751 | "Permet aux applications tierces d'utiliser Shaarli, par exemple les " |
@@ -763,30 +759,11 @@ msgstr "Clé d'API secrète" | |||
763 | msgid "Enable thumbnails" | 759 | msgid "Enable thumbnails" |
764 | msgstr "Activer les miniatures" | 760 | msgstr "Activer les miniatures" |
765 | 761 | ||
766 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:281 | ||
767 | msgid "You need to enable the extension <code>php-gd</code> to use thumbnails." | ||
768 | msgstr "" | ||
769 | "Vous devez activer l'extension <code>php-gd</code> pour utiliser les " | ||
770 | "miniatures." | ||
771 | |||
772 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:285 | 762 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:285 |
773 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:56 | 763 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:56 |
774 | msgid "Synchronize thumbnails" | 764 | msgid "Synchronize thumbnails" |
775 | msgstr "Synchroniser les miniatures" | 765 | msgstr "Synchroniser les miniatures" |
776 | 766 | ||
777 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:296 | ||
778 | #: tmp/export.b91ef64efc3688266305ea9b42e5017e.rtpl.php:31 | ||
779 | msgid "All" | ||
780 | msgstr "Tous" | ||
781 | |||
782 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:300 | ||
783 | msgid "Only common media hosts" | ||
784 | msgstr "Seulement les hébergeurs de média connus" | ||
785 | |||
786 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:304 | ||
787 | msgid "None" | ||
788 | msgstr "Aucune" | ||
789 | |||
790 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:312 | 767 | #: tmp/configure.b91ef64efc3688266305ea9b42e5017e.rtpl.php:312 |
791 | #: tmp/editlink.b91ef64efc3688266305ea9b42e5017e.rtpl.php:72 | 768 | #: tmp/editlink.b91ef64efc3688266305ea9b42e5017e.rtpl.php:72 |
792 | #: tmp/pluginsadmin.b91ef64efc3688266305ea9b42e5017e.rtpl.php:139 | 769 | #: tmp/pluginsadmin.b91ef64efc3688266305ea9b42e5017e.rtpl.php:139 |
@@ -847,7 +824,6 @@ msgid "Tags" | |||
847 | msgstr "Tags" | 824 | msgstr "Tags" |
848 | 825 | ||
849 | #: tmp/editlink.b91ef64efc3688266305ea9b42e5017e.rtpl.php:57 | 826 | #: tmp/editlink.b91ef64efc3688266305ea9b42e5017e.rtpl.php:57 |
850 | #: tmp/export.b91ef64efc3688266305ea9b42e5017e.rtpl.php:36 | ||
851 | #: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:167 | 827 | #: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:167 |
852 | msgid "Private" | 828 | msgid "Private" |
853 | msgstr "Privé" | 829 | msgstr "Privé" |
@@ -856,99 +832,6 @@ msgstr "Privé" | |||
856 | msgid "Apply Changes" | 832 | msgid "Apply Changes" |
857 | msgstr "Appliquer les changements" | 833 | msgstr "Appliquer les changements" |
858 | 834 | ||
859 | #: tmp/export.b91ef64efc3688266305ea9b42e5017e.rtpl.php:16 | ||
860 | msgid "Export Database" | ||
861 | msgstr "Exporter les données" | ||
862 | |||
863 | #: tmp/export.b91ef64efc3688266305ea9b42e5017e.rtpl.php:24 | ||
864 | msgid "Selection" | ||
865 | msgstr "Choisir" | ||
866 | |||
867 | #: tmp/export.b91ef64efc3688266305ea9b42e5017e.rtpl.php:41 | ||
868 | msgid "Public" | ||
869 | msgstr "Publics" | ||
870 | |||
871 | #: tmp/export.b91ef64efc3688266305ea9b42e5017e.rtpl.php:52 | ||
872 | msgid "Prepend note permalinks with this Shaarli instance's URL" | ||
873 | msgstr "Préfixer les liens de note avec l'URL de l'instance de Shaarli" | ||
874 | |||
875 | #: tmp/export.b91ef64efc3688266305ea9b42e5017e.rtpl.php:53 | ||
876 | msgid "Useful to import bookmarks in a web browser" | ||
877 | msgstr "Utile pour importer les marques-pages dans un navigateur" | ||
878 | |||
879 | #: tmp/import.b91ef64efc3688266305ea9b42e5017e.rtpl.php:16 | ||
880 | msgid "Import Database" | ||
881 | msgstr "Importer des données" | ||
882 | |||
883 | #: tmp/import.b91ef64efc3688266305ea9b42e5017e.rtpl.php:23 | ||
884 | msgid "Maximum size allowed:" | ||
885 | msgstr "Taille maximum autorisée :" | ||
886 | |||
887 | #: tmp/import.b91ef64efc3688266305ea9b42e5017e.rtpl.php:29 | ||
888 | msgid "Visibility" | ||
889 | msgstr "Visibilité" | ||
890 | |||
891 | #: tmp/import.b91ef64efc3688266305ea9b42e5017e.rtpl.php:36 | ||
892 | msgid "Use values from the imported file, default to public" | ||
893 | msgstr "" | ||
894 | "Utiliser les valeurs présentes dans le fichier d'import, public par défaut" | ||
895 | |||
896 | #: tmp/import.b91ef64efc3688266305ea9b42e5017e.rtpl.php:41 | ||
897 | msgid "Import all bookmarks as private" | ||
898 | msgstr "Importer tous les liens comme privés" | ||
899 | |||
900 | #: tmp/import.b91ef64efc3688266305ea9b42e5017e.rtpl.php:46 | ||
901 | msgid "Import all bookmarks as public" | ||
902 | msgstr "Importer tous les liens comme publics" | ||
903 | |||
904 | #: tmp/import.b91ef64efc3688266305ea9b42e5017e.rtpl.php:57 | ||
905 | msgid "Overwrite existing bookmarks" | ||
906 | msgstr "Remplacer les liens existants" | ||
907 | |||
908 | #: tmp/import.b91ef64efc3688266305ea9b42e5017e.rtpl.php:58 | ||
909 | msgid "Duplicates based on URL" | ||
910 | msgstr "Les doublons s'appuient sur les URL" | ||
911 | |||
912 | #: tmp/import.b91ef64efc3688266305ea9b42e5017e.rtpl.php:72 | ||
913 | msgid "Add default tags" | ||
914 | msgstr "Ajouter des tags par défaut" | ||
915 | |||
916 | #: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:22 | ||
917 | msgid "Install Shaarli" | ||
918 | msgstr "Installation de Shaarli" | ||
919 | |||
920 | #: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:25 | ||
921 | msgid "It looks like it's the first time you run Shaarli. Please configure it." | ||
922 | msgstr "" | ||
923 | "Il semblerait que ça soit la première fois que vous lancez Shaarli. Merci de " | ||
924 | "le configurer." | ||
925 | |||
926 | #: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:33 | ||
927 | #: tmp/loginform.b91ef64efc3688266305ea9b42e5017e.rtpl.php:30 | ||
928 | #: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:151 | ||
929 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:151 | ||
930 | msgid "Username" | ||
931 | msgstr "Nom d'utilisateur" | ||
932 | |||
933 | #: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:48 | ||
934 | #: tmp/loginform.b91ef64efc3688266305ea9b42e5017e.rtpl.php:34 | ||
935 | #: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:152 | ||
936 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:152 | ||
937 | msgid "Password" | ||
938 | msgstr "Mot de passe" | ||
939 | |||
940 | #: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:63 | ||
941 | msgid "Shaarli title" | ||
942 | msgstr "Titre du Shaarli" | ||
943 | |||
944 | #: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:69 | ||
945 | msgid "My links" | ||
946 | msgstr "Mes liens" | ||
947 | |||
948 | #: tmp/install.b91ef64efc3688266305ea9b42e5017e.rtpl.php:182 | ||
949 | msgid "Install" | ||
950 | msgstr "Installer" | ||
951 | |||
952 | #: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:14 | 835 | #: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:14 |
953 | #: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:79 | 836 | #: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:79 |
954 | msgid "shaare" | 837 | msgid "shaare" |
@@ -964,13 +847,11 @@ msgstr[0] "lien privé" | |||
964 | msgstr[1] "liens privés" | 847 | msgstr[1] "liens privés" |
965 | 848 | ||
966 | #: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:30 | 849 | #: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:30 |
967 | #: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:121 | ||
968 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:121 | 850 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:121 |
969 | msgid "Search text" | 851 | msgid "Search text" |
970 | msgstr "Recherche texte" | 852 | msgstr "Recherche texte" |
971 | 853 | ||
972 | #: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:37 | 854 | #: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:37 |
973 | #: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:128 | ||
974 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:128 | 855 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:128 |
975 | #: tmp/tag.cloud.b91ef64efc3688266305ea9b42e5017e.rtpl.php:36 | 856 | #: tmp/tag.cloud.b91ef64efc3688266305ea9b42e5017e.rtpl.php:36 |
976 | #: tmp/tag.cloud.b91ef64efc3688266305ea9b42e5017e.rtpl.php:64 | 857 | #: tmp/tag.cloud.b91ef64efc3688266305ea9b42e5017e.rtpl.php:64 |
@@ -1011,7 +892,6 @@ msgid "without any tag" | |||
1011 | msgstr "sans tag" | 892 | msgstr "sans tag" |
1012 | 893 | ||
1013 | #: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:173 | 894 | #: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:173 |
1014 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:42 | ||
1015 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:42 | 895 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:42 |
1016 | msgid "Fold" | 896 | msgid "Fold" |
1017 | msgstr "Replier" | 897 | msgstr "Replier" |
@@ -1028,36 +908,36 @@ msgstr "permalien" | |||
1028 | msgid "Add tag" | 908 | msgid "Add tag" |
1029 | msgstr "Ajouter un tag" | 909 | msgstr "Ajouter un tag" |
1030 | 910 | ||
1031 | #: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:7 | 911 | #: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:183 |
912 | msgid "Toggle sticky" | ||
913 | msgstr "Changer statut épinglé" | ||
914 | |||
915 | #: tmp/linklist.b91ef64efc3688266305ea9b42e5017e.rtpl.php:185 | ||
916 | msgid "Sticky" | ||
917 | msgstr "Épinglé" | ||
918 | |||
1032 | #: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:7 | 919 | #: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:7 |
1033 | msgid "Filters" | 920 | msgid "Filters" |
1034 | msgstr "Filtres" | 921 | msgstr "Filtres" |
1035 | 922 | ||
1036 | #: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:12 | ||
1037 | #: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:12 | 923 | #: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:12 |
1038 | msgid "Only display private links" | 924 | msgid "Only display private links" |
1039 | msgstr "Afficher uniquement les liens privés" | 925 | msgstr "Afficher uniquement les liens privés" |
1040 | 926 | ||
1041 | #: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:15 | ||
1042 | #: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:15 | 927 | #: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:15 |
1043 | msgid "Only display public links" | 928 | msgid "Only display public links" |
1044 | msgstr "Afficher uniquement les liens publics" | 929 | msgstr "Afficher uniquement les liens publics" |
1045 | 930 | ||
1046 | #: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:20 | ||
1047 | #: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:20 | 931 | #: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:20 |
1048 | msgid "Filter untagged links" | 932 | msgid "Filter untagged links" |
1049 | msgstr "Filtrer par liens privés" | 933 | msgstr "Filtrer par liens privés" |
1050 | 934 | ||
1051 | #: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:24 | ||
1052 | #: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:76 | ||
1053 | #: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:24 | 935 | #: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:24 |
1054 | #: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:76 | 936 | #: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:76 |
1055 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:43 | ||
1056 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:43 | 937 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:43 |
1057 | msgid "Fold all" | 938 | msgid "Fold all" |
1058 | msgstr "Replier tout" | 939 | msgstr "Replier tout" |
1059 | 940 | ||
1060 | #: tmp/linklist.paging.b91ef64efc3688266305ea9b42e5017e.rtpl.php:69 | ||
1061 | #: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:69 | 941 | #: tmp/linklist.paging.cedf684561d925457130839629000a81.rtpl.php:69 |
1062 | msgid "Links per page" | 942 | msgid "Links per page" |
1063 | msgstr "Liens par page" | 943 | msgstr "Liens par page" |
@@ -1069,59 +949,56 @@ msgstr "" | |||
1069 | "Vous avez été banni après trop d'échecs d'authentification. Merci de " | 949 | "Vous avez été banni après trop d'échecs d'authentification. Merci de " |
1070 | "réessayer plus tard." | 950 | "réessayer plus tard." |
1071 | 951 | ||
952 | #: tmp/loginform.b91ef64efc3688266305ea9b42e5017e.rtpl.php:30 | ||
953 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:151 | ||
954 | msgid "Username" | ||
955 | msgstr "Nom d'utilisateur" | ||
956 | |||
957 | #: tmp/loginform.b91ef64efc3688266305ea9b42e5017e.rtpl.php:34 | ||
958 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:152 | ||
959 | msgid "Password" | ||
960 | msgstr "Mot de passe" | ||
961 | |||
1072 | #: tmp/loginform.b91ef64efc3688266305ea9b42e5017e.rtpl.php:41 | 962 | #: tmp/loginform.b91ef64efc3688266305ea9b42e5017e.rtpl.php:41 |
1073 | #: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:155 | ||
1074 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:155 | 963 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:155 |
1075 | msgid "Remember me" | 964 | msgid "Remember me" |
1076 | msgstr "Rester connecté" | 965 | msgstr "Rester connecté" |
1077 | 966 | ||
1078 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:14 | ||
1079 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:48 | ||
1080 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:14 | 967 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:14 |
1081 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:48 | 968 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:48 |
1082 | msgid "by the Shaarli community" | 969 | msgid "by the Shaarli community" |
1083 | msgstr "par la communauté Shaarli" | 970 | msgstr "par la communauté Shaarli" |
1084 | 971 | ||
1085 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:15 | ||
1086 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:15 | 972 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:15 |
1087 | msgid "Documentation" | 973 | msgid "Documentation" |
1088 | msgstr "Documentation" | 974 | msgstr "Documentation" |
1089 | 975 | ||
1090 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:44 | ||
1091 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:44 | 976 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:44 |
1092 | msgid "Expand" | 977 | msgid "Expand" |
1093 | msgstr "Déplier" | 978 | msgstr "Déplier" |
1094 | 979 | ||
1095 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:45 | ||
1096 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:45 | 980 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:45 |
1097 | msgid "Expand all" | 981 | msgid "Expand all" |
1098 | msgstr "Déplier tout" | 982 | msgstr "Déplier tout" |
1099 | 983 | ||
1100 | #: tmp/page.footer.b91ef64efc3688266305ea9b42e5017e.rtpl.php:46 | ||
1101 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:46 | 984 | #: tmp/page.footer.cedf684561d925457130839629000a81.rtpl.php:46 |
1102 | msgid "Are you sure you want to delete this link?" | 985 | msgid "Are you sure you want to delete this link?" |
1103 | msgstr "Êtes-vous sûr de vouloir supprimer ce lien ?" | 986 | msgstr "Êtes-vous sûr de vouloir supprimer ce lien ?" |
1104 | 987 | ||
1105 | #: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:65 | ||
1106 | #: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:90 | ||
1107 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:65 | 988 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:65 |
1108 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:90 | 989 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:90 |
1109 | msgid "RSS Feed" | 990 | msgid "RSS Feed" |
1110 | msgstr "Flux RSS" | 991 | msgstr "Flux RSS" |
1111 | 992 | ||
1112 | #: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:70 | ||
1113 | #: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:106 | ||
1114 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:70 | 993 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:70 |
1115 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:106 | 994 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:106 |
1116 | msgid "Logout" | 995 | msgid "Logout" |
1117 | msgstr "Déconnexion" | 996 | msgstr "Déconnexion" |
1118 | 997 | ||
1119 | #: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:173 | ||
1120 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:173 | 998 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:173 |
1121 | msgid "is available" | 999 | msgid "is available" |
1122 | msgstr "est disponible" | 1000 | msgstr "est disponible" |
1123 | 1001 | ||
1124 | #: tmp/page.header.b91ef64efc3688266305ea9b42e5017e.rtpl.php:180 | ||
1125 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:180 | 1002 | #: tmp/page.header.cedf684561d925457130839629000a81.rtpl.php:180 |
1126 | msgid "Error" | 1003 | msgid "Error" |
1127 | msgstr "Erreur" | 1004 | msgstr "Erreur" |
@@ -1221,22 +1098,18 @@ msgstr "tags" | |||
1221 | msgid "List all links with those tags" | 1098 | msgid "List all links with those tags" |
1222 | msgstr "Lister tous les liens avec ces tags" | 1099 | msgstr "Lister tous les liens avec ces tags" |
1223 | 1100 | ||
1224 | #: tmp/tag.sort.b91ef64efc3688266305ea9b42e5017e.rtpl.php:3 | ||
1225 | #: tmp/tag.sort.cedf684561d925457130839629000a81.rtpl.php:3 | 1101 | #: tmp/tag.sort.cedf684561d925457130839629000a81.rtpl.php:3 |
1226 | msgid "Sort by:" | 1102 | msgid "Sort by:" |
1227 | msgstr "Trier par :" | 1103 | msgstr "Trier par :" |
1228 | 1104 | ||
1229 | #: tmp/tag.sort.b91ef64efc3688266305ea9b42e5017e.rtpl.php:5 | ||
1230 | #: tmp/tag.sort.cedf684561d925457130839629000a81.rtpl.php:5 | 1105 | #: tmp/tag.sort.cedf684561d925457130839629000a81.rtpl.php:5 |
1231 | msgid "Cloud" | 1106 | msgid "Cloud" |
1232 | msgstr "Nuage" | 1107 | msgstr "Nuage" |
1233 | 1108 | ||
1234 | #: tmp/tag.sort.b91ef64efc3688266305ea9b42e5017e.rtpl.php:6 | ||
1235 | #: tmp/tag.sort.cedf684561d925457130839629000a81.rtpl.php:6 | 1109 | #: tmp/tag.sort.cedf684561d925457130839629000a81.rtpl.php:6 |
1236 | msgid "Most used" | 1110 | msgid "Most used" |
1237 | msgstr "Plus utilisés" | 1111 | msgstr "Plus utilisés" |
1238 | 1112 | ||
1239 | #: tmp/tag.sort.b91ef64efc3688266305ea9b42e5017e.rtpl.php:7 | ||
1240 | #: tmp/tag.sort.cedf684561d925457130839629000a81.rtpl.php:7 | 1113 | #: tmp/tag.sort.cedf684561d925457130839629000a81.rtpl.php:7 |
1241 | msgid "Alphabetical" | 1114 | msgid "Alphabetical" |
1242 | msgstr "Alphabétique" | 1115 | msgstr "Alphabétique" |
@@ -1266,9 +1139,13 @@ msgid "Rename or delete a tag in all links" | |||
1266 | msgstr "Renommer ou supprimer un tag dans tous les liens" | 1139 | msgstr "Renommer ou supprimer un tag dans tous les liens" |
1267 | 1140 | ||
1268 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:41 | 1141 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:41 |
1142 | #, fuzzy | ||
1143 | #| msgid "" | ||
1144 | #| "Import Netscape HTML bookmarks (as exported from Firefox, Chrome, Opera, " | ||
1145 | #| "delicious…)" | ||
1269 | msgid "" | 1146 | msgid "" |
1270 | "Import Netscape HTML bookmarks (as exported from Firefox, Chrome, Opera, " | 1147 | "Import Netscape HTML bookmarks (as exported from Firefox, Chrome, Opera, " |
1271 | "delicious…)" | 1148 | "delicious...)" |
1272 | msgstr "" | 1149 | msgstr "" |
1273 | "Importer des marques pages au format Netscape HTML (comme exportés depuis " | 1150 | "Importer des marques pages au format Netscape HTML (comme exportés depuis " |
1274 | "Firefox, Chrome, Opera, delicious…)" | 1151 | "Firefox, Chrome, Opera, delicious…)" |
@@ -1278,9 +1155,13 @@ msgid "Import links" | |||
1278 | msgstr "Importer des liens" | 1155 | msgstr "Importer des liens" |
1279 | 1156 | ||
1280 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:47 | 1157 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:47 |
1158 | #, fuzzy | ||
1159 | #| msgid "" | ||
1160 | #| "Export Netscape HTML bookmarks (which can be imported in Firefox, Chrome, " | ||
1161 | #| "Opera, delicious…)" | ||
1281 | msgid "" | 1162 | msgid "" |
1282 | "Export Netscape HTML bookmarks (which can be imported in Firefox, Chrome, " | 1163 | "Export Netscape HTML bookmarks (which can be imported in Firefox, Chrome, " |
1283 | "Opera, delicious…)" | 1164 | "Opera, delicious...)" |
1284 | msgstr "" | 1165 | msgstr "" |
1285 | "Exporter les marques pages au format Netscape HTML (comme exportés depuis " | 1166 | "Exporter les marques pages au format Netscape HTML (comme exportés depuis " |
1286 | "Firefox, Chrome, Opera, delicious…)" | 1167 | "Firefox, Chrome, Opera, delicious…)" |
@@ -1339,33 +1220,16 @@ msgstr "" | |||
1339 | msgid "Add Note" | 1220 | msgid "Add Note" |
1340 | msgstr "Ajouter une Note" | 1221 | msgstr "Ajouter une Note" |
1341 | 1222 | ||
1342 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:139 | 1223 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:136 |
1343 | msgid "" | ||
1344 | "You need to browse your Shaarli over <strong>HTTPS</strong> to use this " | ||
1345 | "functionality." | ||
1346 | msgstr "" | ||
1347 | "Vous devez utiliser Shaarli en <strong>HTTPS</strong> pour utiliser cette " | ||
1348 | "fonctionalité." | ||
1349 | |||
1350 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:144 | ||
1351 | msgid "Add to" | ||
1352 | msgstr "Ajouter à" | ||
1353 | |||
1354 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:155 | ||
1355 | msgid "3rd party" | 1224 | msgid "3rd party" |
1356 | msgstr "Applications tierces" | 1225 | msgstr "Applications tierces" |
1357 | 1226 | ||
1358 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:157 | 1227 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:139 |
1359 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:163 | 1228 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:144 |
1360 | msgid "Plugin" | ||
1361 | msgstr "Extension" | ||
1362 | |||
1363 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:158 | ||
1364 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:164 | ||
1365 | msgid "plugin" | 1229 | msgid "plugin" |
1366 | msgstr "extension" | 1230 | msgstr "extension" |
1367 | 1231 | ||
1368 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:191 | 1232 | #: tmp/tools.b91ef64efc3688266305ea9b42e5017e.rtpl.php:169 |
1369 | msgid "" | 1233 | msgid "" |
1370 | "Drag this link to your bookmarks toolbar, or right-click it and choose " | 1234 | "Drag this link to your bookmarks toolbar, or right-click it and choose " |
1371 | "Bookmark This Link" | 1235 | "Bookmark This Link" |
@@ -1373,10 +1237,91 @@ msgstr "" | |||
1373 | "Glisser ce lien dans votre barre de favoris ou cliquer droit dessus et « " | 1237 | "Glisser ce lien dans votre barre de favoris ou cliquer droit dessus et « " |
1374 | "Ajouter aux favoris »" | 1238 | "Ajouter aux favoris »" |
1375 | 1239 | ||
1376 | #, fuzzy | 1240 | #~ msgid "Sorry, nothing to see here." |
1377 | #~| msgid "Enable thumbnails" | 1241 | #~ msgstr "Désolé, il y a rien à voir ici." |
1378 | #~ msgid "Synchonize thumbnails" | 1242 | |
1379 | #~ msgstr "Activer les miniatures" | 1243 | #~ msgid "Current password" |
1244 | #~ msgstr "Mot de passe actuel" | ||
1245 | |||
1246 | #~ msgid "New password" | ||
1247 | #~ msgstr "Nouveau mot de passe" | ||
1248 | |||
1249 | #~ msgid "Change" | ||
1250 | #~ msgstr "Changer" | ||
1251 | |||
1252 | #~ msgid "Export Database" | ||
1253 | #~ msgstr "Exporter les données" | ||
1254 | |||
1255 | #~ msgid "Selection" | ||
1256 | #~ msgstr "Choisir" | ||
1257 | |||
1258 | #~ msgid "Public" | ||
1259 | #~ msgstr "Publics" | ||
1260 | |||
1261 | #~ msgid "Prepend note permalinks with this Shaarli instance's URL" | ||
1262 | #~ msgstr "Préfixer les liens de note avec l'URL de l'instance de Shaarli" | ||
1263 | |||
1264 | #~ msgid "Useful to import bookmarks in a web browser" | ||
1265 | #~ msgstr "Utile pour importer les marques-pages dans un navigateur" | ||
1266 | |||
1267 | #~ msgid "Import Database" | ||
1268 | #~ msgstr "Importer des données" | ||
1269 | |||
1270 | #~ msgid "Maximum size allowed:" | ||
1271 | #~ msgstr "Taille maximum autorisée :" | ||
1272 | |||
1273 | #~ msgid "Visibility" | ||
1274 | #~ msgstr "Visibilité" | ||
1275 | |||
1276 | #~ msgid "Use values from the imported file, default to public" | ||
1277 | #~ msgstr "" | ||
1278 | #~ "Utiliser les valeurs présentes dans le fichier d'import, public par défaut" | ||
1279 | |||
1280 | #~ msgid "Import all bookmarks as private" | ||
1281 | #~ msgstr "Importer tous les liens comme privés" | ||
1282 | |||
1283 | #~ msgid "Import all bookmarks as public" | ||
1284 | #~ msgstr "Importer tous les liens comme publics" | ||
1285 | |||
1286 | #~ msgid "Overwrite existing bookmarks" | ||
1287 | #~ msgstr "Remplacer les liens existants" | ||
1288 | |||
1289 | #~ msgid "Duplicates based on URL" | ||
1290 | #~ msgstr "Les doublons s'appuient sur les URL" | ||
1291 | |||
1292 | #~ msgid "Add default tags" | ||
1293 | #~ msgstr "Ajouter des tags par défaut" | ||
1294 | |||
1295 | #~ msgid "Install Shaarli" | ||
1296 | #~ msgstr "Installation de Shaarli" | ||
1297 | |||
1298 | #~ msgid "" | ||
1299 | #~ "It looks like it's the first time you run Shaarli. Please configure it." | ||
1300 | #~ msgstr "" | ||
1301 | #~ "Il semblerait que ça soit la première fois que vous lancez Shaarli. Merci " | ||
1302 | #~ "de le configurer." | ||
1303 | |||
1304 | #~ msgid "Shaarli title" | ||
1305 | #~ msgstr "Titre du Shaarli" | ||
1306 | |||
1307 | #~ msgid "My links" | ||
1308 | #~ msgstr "Mes liens" | ||
1309 | |||
1310 | #~ msgid "Install" | ||
1311 | #~ msgstr "Installer" | ||
1312 | |||
1313 | #~ msgid "" | ||
1314 | #~ "You need to browse your Shaarli over <strong>HTTPS</strong> to use this " | ||
1315 | #~ "functionality." | ||
1316 | #~ msgstr "" | ||
1317 | #~ "Vous devez utiliser Shaarli en <strong>HTTPS</strong> pour utiliser cette " | ||
1318 | #~ "fonctionalité." | ||
1319 | |||
1320 | #~ msgid "Add to" | ||
1321 | #~ msgstr "Ajouter à" | ||
1322 | |||
1323 | #~ msgid "Plugin" | ||
1324 | #~ msgstr "Extension" | ||
1380 | 1325 | ||
1381 | #~ msgid "Warning: " | 1326 | #~ msgid "Warning: " |
1382 | #~ msgstr "Attention : " | 1327 | #~ msgstr "Attention : " |
@@ -1450,7 +1395,8 @@ msgstr "" | |||
1450 | #~ "\n" | 1395 | #~ "\n" |
1451 | 1396 | ||
1452 | #~ msgid "Sessions do not seem to work correctly on your server." | 1397 | #~ msgid "Sessions do not seem to work correctly on your server." |
1453 | #~ msgstr "Les sessions ne semblent pas fonctionner correctement sur votre serveur." | 1398 | #~ msgstr "" |
1399 | #~ "Les sessions ne semblent pas fonctionner correctement sur votre serveur." | ||
1454 | 1400 | ||
1455 | #~ msgid "Tag was renamed in " | 1401 | #~ msgid "Tag was renamed in " |
1456 | #~ msgstr "Le tag a été renommé dans " | 1402 | #~ msgstr "Le tag a été renommé dans " |
@@ -1353,6 +1353,25 @@ function renderPage($conf, $pluginManager, $LINKSDB, $history, $sessionManager, | |||
1353 | exit; | 1353 | exit; |
1354 | } | 1354 | } |
1355 | 1355 | ||
1356 | if ($targetPage == Router::$PAGE_PINLINK) { | ||
1357 | if (! isset($_GET['id']) || empty($LINKSDB[$_GET['id']])) { | ||
1358 | // FIXME! Use a proper error system. | ||
1359 | $msg = t('Invalid link ID provided'); | ||
1360 | echo '<script>alert("'. $msg .'");document.location=\''. index_url($_SERVER) .'\';</script>'; | ||
1361 | exit; | ||
1362 | } | ||
1363 | if (! $sessionManager->checkToken($_GET['token'])) { | ||
1364 | die('Wrong token.'); | ||
1365 | } | ||
1366 | |||
1367 | $link = $LINKSDB[$_GET['id']]; | ||
1368 | $link['sticky'] = ! $link['sticky']; | ||
1369 | $LINKSDB[(int) $_GET['id']] = $link; | ||
1370 | $LINKSDB->save($conf->get('resource.page_cache')); | ||
1371 | header('Location: '.index_url($_SERVER)); | ||
1372 | exit; | ||
1373 | } | ||
1374 | |||
1356 | if ($targetPage == Router::$PAGE_EXPORT) { | 1375 | if ($targetPage == Router::$PAGE_EXPORT) { |
1357 | // Export links as a Netscape Bookmarks file | 1376 | // Export links as a Netscape Bookmarks file |
1358 | 1377 | ||
diff --git a/tests/FeedBuilderTest.php b/tests/FeedBuilderTest.php index a590306d..4ca58e5a 100644 --- a/tests/FeedBuilderTest.php +++ b/tests/FeedBuilderTest.php | |||
@@ -82,8 +82,8 @@ class FeedBuilderTest extends PHPUnit_Framework_TestCase | |||
82 | $this->assertFalse($data['usepermalinks']); | 82 | $this->assertFalse($data['usepermalinks']); |
83 | $this->assertEquals(ReferenceLinkDB::$NB_LINKS_TOTAL, count($data['links'])); | 83 | $this->assertEquals(ReferenceLinkDB::$NB_LINKS_TOTAL, count($data['links'])); |
84 | 84 | ||
85 | // Test first link (note link) | 85 | // Test first not pinned link (note link) |
86 | $link = reset($data['links']); | 86 | $link = $data['links'][array_keys($data['links'])[2]]; |
87 | $this->assertEquals(41, $link['id']); | 87 | $this->assertEquals(41, $link['id']); |
88 | $this->assertEquals(DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20150310_114651'), $link['created']); | 88 | $this->assertEquals(DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20150310_114651'), $link['created']); |
89 | $this->assertEquals('http://host.tld/?WDWyig', $link['guid']); | 89 | $this->assertEquals('http://host.tld/?WDWyig', $link['guid']); |
@@ -119,7 +119,7 @@ class FeedBuilderTest extends PHPUnit_Framework_TestCase | |||
119 | $data = $feedBuilder->buildData(); | 119 | $data = $feedBuilder->buildData(); |
120 | $this->assertEquals(ReferenceLinkDB::$NB_LINKS_TOTAL, count($data['links'])); | 120 | $this->assertEquals(ReferenceLinkDB::$NB_LINKS_TOTAL, count($data['links'])); |
121 | $this->assertRegExp('/2016-08-03T09:30:33\+\d{2}:\d{2}/', $data['last_update']); | 121 | $this->assertRegExp('/2016-08-03T09:30:33\+\d{2}:\d{2}/', $data['last_update']); |
122 | $link = reset($data['links']); | 122 | $link = $data['links'][array_keys($data['links'])[2]]; |
123 | $this->assertRegExp('/2015-03-10T11:46:51\+\d{2}:\d{2}/', $link['pub_iso_date']); | 123 | $this->assertRegExp('/2015-03-10T11:46:51\+\d{2}:\d{2}/', $link['pub_iso_date']); |
124 | $this->assertRegExp('/2016-08-03T09:30:33\+\d{2}:\d{2}/', $data['links'][8]['up_iso_date']); | 124 | $this->assertRegExp('/2016-08-03T09:30:33\+\d{2}:\d{2}/', $data['links'][8]['up_iso_date']); |
125 | } | 125 | } |
@@ -148,13 +148,13 @@ class FeedBuilderTest extends PHPUnit_Framework_TestCase | |||
148 | public function testBuildDataCount() | 148 | public function testBuildDataCount() |
149 | { | 149 | { |
150 | $criteria = array( | 150 | $criteria = array( |
151 | 'nb' => '1', | 151 | 'nb' => '3', |
152 | ); | 152 | ); |
153 | $feedBuilder = new FeedBuilder(self::$linkDB, FeedBuilder::$FEED_ATOM, self::$serverInfo, $criteria, false); | 153 | $feedBuilder = new FeedBuilder(self::$linkDB, FeedBuilder::$FEED_ATOM, self::$serverInfo, $criteria, false); |
154 | $feedBuilder->setLocale(self::$LOCALE); | 154 | $feedBuilder->setLocale(self::$LOCALE); |
155 | $data = $feedBuilder->buildData(); | 155 | $data = $feedBuilder->buildData(); |
156 | $this->assertEquals(1, count($data['links'])); | 156 | $this->assertEquals(3, count($data['links'])); |
157 | $link = array_shift($data['links']); | 157 | $link = $data['links'][array_keys($data['links'])[2]]; |
158 | $this->assertEquals(41, $link['id']); | 158 | $this->assertEquals(41, $link['id']); |
159 | $this->assertEquals(DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20150310_114651'), $link['created']); | 159 | $this->assertEquals(DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20150310_114651'), $link['created']); |
160 | } | 160 | } |
@@ -171,7 +171,7 @@ class FeedBuilderTest extends PHPUnit_Framework_TestCase | |||
171 | $this->assertEquals(ReferenceLinkDB::$NB_LINKS_TOTAL, count($data['links'])); | 171 | $this->assertEquals(ReferenceLinkDB::$NB_LINKS_TOTAL, count($data['links'])); |
172 | $this->assertTrue($data['usepermalinks']); | 172 | $this->assertTrue($data['usepermalinks']); |
173 | // First link is a permalink | 173 | // First link is a permalink |
174 | $link = array_shift($data['links']); | 174 | $link = $data['links'][array_keys($data['links'])[2]]; |
175 | $this->assertEquals(41, $link['id']); | 175 | $this->assertEquals(41, $link['id']); |
176 | $this->assertEquals(DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20150310_114651'), $link['created']); | 176 | $this->assertEquals(DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20150310_114651'), $link['created']); |
177 | $this->assertEquals('http://host.tld/?WDWyig', $link['guid']); | 177 | $this->assertEquals('http://host.tld/?WDWyig', $link['guid']); |
@@ -179,7 +179,7 @@ class FeedBuilderTest extends PHPUnit_Framework_TestCase | |||
179 | $this->assertContains('Direct link', $link['description']); | 179 | $this->assertContains('Direct link', $link['description']); |
180 | $this->assertContains('http://host.tld/?WDWyig', $link['description']); | 180 | $this->assertContains('http://host.tld/?WDWyig', $link['description']); |
181 | // Second link is a direct link | 181 | // Second link is a direct link |
182 | $link = array_shift($data['links']); | 182 | $link = $data['links'][array_keys($data['links'])[3]]; |
183 | $this->assertEquals(8, $link['id']); | 183 | $this->assertEquals(8, $link['id']); |
184 | $this->assertEquals(DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20150310_114633'), $link['created']); | 184 | $this->assertEquals(DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20150310_114633'), $link['created']); |
185 | $this->assertEquals('http://host.tld/?RttfEw', $link['guid']); | 185 | $this->assertEquals('http://host.tld/?RttfEw', $link['guid']); |
@@ -237,7 +237,7 @@ class FeedBuilderTest extends PHPUnit_Framework_TestCase | |||
237 | ); | 237 | ); |
238 | 238 | ||
239 | // Test first link (note link) | 239 | // Test first link (note link) |
240 | $link = array_shift($data['links']); | 240 | $link = $data['links'][array_keys($data['links'])[2]]; |
241 | $this->assertEquals('http://host.tld:8080/~user/shaarli/?WDWyig', $link['guid']); | 241 | $this->assertEquals('http://host.tld:8080/~user/shaarli/?WDWyig', $link['guid']); |
242 | $this->assertEquals('http://host.tld:8080/~user/shaarli/?WDWyig', $link['url']); | 242 | $this->assertEquals('http://host.tld:8080/~user/shaarli/?WDWyig', $link['url']); |
243 | $this->assertContains('http://host.tld:8080/~user/shaarli/?addtag=hashtag', $link['description']); | 243 | $this->assertContains('http://host.tld:8080/~user/shaarli/?addtag=hashtag', $link['description']); |
diff --git a/tests/LinkDBTest.php b/tests/LinkDBTest.php index 3b980878..fcab76f6 100644 --- a/tests/LinkDBTest.php +++ b/tests/LinkDBTest.php | |||
@@ -239,12 +239,12 @@ class LinkDBTest extends PHPUnit_Framework_TestCase | |||
239 | public function testDays() | 239 | public function testDays() |
240 | { | 240 | { |
241 | $this->assertEquals( | 241 | $this->assertEquals( |
242 | array('20100310', '20121206', '20130614', '20150310'), | 242 | array('20100309', '20100310', '20121206', '20121207', '20130614', '20150310'), |
243 | self::$publicLinkDB->days() | 243 | self::$publicLinkDB->days() |
244 | ); | 244 | ); |
245 | 245 | ||
246 | $this->assertEquals( | 246 | $this->assertEquals( |
247 | array('20100310', '20121206', '20130614', '20141125', '20150310'), | 247 | array('20100309', '20100310', '20121206', '20121207', '20130614', '20141125', '20150310'), |
248 | self::$privateLinkDB->days() | 248 | self::$privateLinkDB->days() |
249 | ); | 249 | ); |
250 | } | 250 | } |
@@ -475,13 +475,15 @@ class LinkDBTest extends PHPUnit_Framework_TestCase | |||
475 | public function testReorderLinksDesc() | 475 | public function testReorderLinksDesc() |
476 | { | 476 | { |
477 | self::$privateLinkDB->reorder('ASC'); | 477 | self::$privateLinkDB->reorder('ASC'); |
478 | $linkIds = array(42, 4, 9, 1, 0, 7, 6, 8, 41); | 478 | $stickyIds = [11, 10]; |
479 | $standardIds = [42, 4, 9, 1, 0, 7, 6, 8, 41]; | ||
480 | $linkIds = array_merge($stickyIds, $standardIds); | ||
479 | $cpt = 0; | 481 | $cpt = 0; |
480 | foreach (self::$privateLinkDB as $key => $value) { | 482 | foreach (self::$privateLinkDB as $key => $value) { |
481 | $this->assertEquals($linkIds[$cpt++], $key); | 483 | $this->assertEquals($linkIds[$cpt++], $key); |
482 | } | 484 | } |
483 | self::$privateLinkDB->reorder('DESC'); | 485 | self::$privateLinkDB->reorder('DESC'); |
484 | $linkIds = array_reverse($linkIds); | 486 | $linkIds = array_merge(array_reverse($stickyIds), array_reverse($standardIds)); |
485 | $cpt = 0; | 487 | $cpt = 0; |
486 | foreach (self::$privateLinkDB as $key => $value) { | 488 | foreach (self::$privateLinkDB as $key => $value) { |
487 | $this->assertEquals($linkIds[$cpt++], $key); | 489 | $this->assertEquals($linkIds[$cpt++], $key); |
diff --git a/tests/NetscapeBookmarkUtils/BookmarkExportTest.php b/tests/NetscapeBookmarkUtils/BookmarkExportTest.php index 6a47bbb9..77fbd5f3 100644 --- a/tests/NetscapeBookmarkUtils/BookmarkExportTest.php +++ b/tests/NetscapeBookmarkUtils/BookmarkExportTest.php | |||
@@ -110,7 +110,7 @@ class BookmarkExportTest extends PHPUnit_Framework_TestCase | |||
110 | $links = NetscapeBookmarkUtils::filterAndFormat(self::$linkDb, 'public', false, ''); | 110 | $links = NetscapeBookmarkUtils::filterAndFormat(self::$linkDb, 'public', false, ''); |
111 | $this->assertEquals( | 111 | $this->assertEquals( |
112 | '?WDWyig', | 112 | '?WDWyig', |
113 | $links[0]['url'] | 113 | $links[2]['url'] |
114 | ); | 114 | ); |
115 | } | 115 | } |
116 | 116 | ||
@@ -128,7 +128,7 @@ class BookmarkExportTest extends PHPUnit_Framework_TestCase | |||
128 | ); | 128 | ); |
129 | $this->assertEquals( | 129 | $this->assertEquals( |
130 | $indexUrl . '?WDWyig', | 130 | $indexUrl . '?WDWyig', |
131 | $links[0]['url'] | 131 | $links[2]['url'] |
132 | ); | 132 | ); |
133 | } | 133 | } |
134 | } | 134 | } |
diff --git a/tests/Updater/UpdaterTest.php b/tests/Updater/UpdaterTest.php index cacee2d2..870f169a 100644 --- a/tests/Updater/UpdaterTest.php +++ b/tests/Updater/UpdaterTest.php | |||
@@ -688,6 +688,7 @@ $GLOBALS[\'privateLinkByDefault\'] = true;'; | |||
688 | } | 688 | } |
689 | 689 | ||
690 | /** | 690 | /** |
691 | <<<<<<< HEAD | ||
691 | * Test updateMethodWebThumbnailer with thumbnails enabled. | 692 | * Test updateMethodWebThumbnailer with thumbnails enabled. |
692 | */ | 693 | */ |
693 | public function testUpdateMethodWebThumbnailerEnabled() | 694 | public function testUpdateMethodWebThumbnailerEnabled() |
@@ -732,4 +733,64 @@ $GLOBALS[\'privateLinkByDefault\'] = true;'; | |||
732 | $this->assertEquals(53, $this->conf->get('thumbnails.height')); | 733 | $this->assertEquals(53, $this->conf->get('thumbnails.height')); |
733 | $this->assertTrue(empty($_SESSION['warnings'])); | 734 | $this->assertTrue(empty($_SESSION['warnings'])); |
734 | } | 735 | } |
736 | |||
737 | /** | ||
738 | * Test updateMethodSetSticky(). | ||
739 | */ | ||
740 | public function testUpdateStickyValid() | ||
741 | { | ||
742 | $blank = [ | ||
743 | 'id' => 1, | ||
744 | 'url' => 'z', | ||
745 | 'title' => '', | ||
746 | 'description' => '', | ||
747 | 'tags' => '', | ||
748 | 'created' => new DateTime(), | ||
749 | ]; | ||
750 | $links = [ | ||
751 | 1 => ['id' => 1] + $blank, | ||
752 | 2 => ['id' => 2] + $blank, | ||
753 | ]; | ||
754 | $refDB = new ReferenceLinkDB(); | ||
755 | $refDB->setLinks($links); | ||
756 | $refDB->write(self::$testDatastore); | ||
757 | $linkDB = new LinkDB(self::$testDatastore, true, false); | ||
758 | |||
759 | $updater = new Updater(array(), $linkDB, $this->conf, true); | ||
760 | $this->assertTrue($updater->updateMethodSetSticky()); | ||
761 | |||
762 | $linkDB = new LinkDB(self::$testDatastore, true, false); | ||
763 | foreach ($linkDB as $link) { | ||
764 | $this->assertFalse($link['sticky']); | ||
765 | } | ||
766 | } | ||
767 | |||
768 | /** | ||
769 | * Test updateMethodSetSticky(). | ||
770 | */ | ||
771 | public function testUpdateStickyNothingToDo() | ||
772 | { | ||
773 | $blank = [ | ||
774 | 'id' => 1, | ||
775 | 'url' => 'z', | ||
776 | 'title' => '', | ||
777 | 'description' => '', | ||
778 | 'tags' => '', | ||
779 | 'created' => new DateTime(), | ||
780 | ]; | ||
781 | $links = [ | ||
782 | 1 => ['id' => 1, 'sticky' => true] + $blank, | ||
783 | 2 => ['id' => 2] + $blank, | ||
784 | ]; | ||
785 | $refDB = new ReferenceLinkDB(); | ||
786 | $refDB->setLinks($links); | ||
787 | $refDB->write(self::$testDatastore); | ||
788 | $linkDB = new LinkDB(self::$testDatastore, true, false); | ||
789 | |||
790 | $updater = new Updater(array(), $linkDB, $this->conf, true); | ||
791 | $this->assertTrue($updater->updateMethodSetSticky()); | ||
792 | |||
793 | $linkDB = new LinkDB(self::$testDatastore, true, false); | ||
794 | $this->assertTrue($linkDB[1]['sticky']); | ||
795 | } | ||
735 | } | 796 | } |
diff --git a/tests/api/controllers/links/GetLinksTest.php b/tests/api/controllers/links/GetLinksTest.php index d22ed3bf..64f02774 100644 --- a/tests/api/controllers/links/GetLinksTest.php +++ b/tests/api/controllers/links/GetLinksTest.php | |||
@@ -95,7 +95,7 @@ class GetLinksTest extends \PHPUnit_Framework_TestCase | |||
95 | $this->assertEquals($this->refDB->countLinks(), count($data)); | 95 | $this->assertEquals($this->refDB->countLinks(), count($data)); |
96 | 96 | ||
97 | // Check order | 97 | // Check order |
98 | $order = [41, 8, 6, 7, 0, 1, 9, 4, 42]; | 98 | $order = [10, 11, 41, 8, 6, 7, 0, 1, 9, 4, 42]; |
99 | $cpt = 0; | 99 | $cpt = 0; |
100 | foreach ($data as $link) { | 100 | foreach ($data as $link) { |
101 | $this->assertEquals(self::NB_FIELDS_LINK, count($link)); | 101 | $this->assertEquals(self::NB_FIELDS_LINK, count($link)); |
@@ -103,7 +103,7 @@ class GetLinksTest extends \PHPUnit_Framework_TestCase | |||
103 | } | 103 | } |
104 | 104 | ||
105 | // Check first element fields | 105 | // Check first element fields |
106 | $first = $data[0]; | 106 | $first = $data[2]; |
107 | $this->assertEquals('http://domain.tld/?WDWyig', $first['url']); | 107 | $this->assertEquals('http://domain.tld/?WDWyig', $first['url']); |
108 | $this->assertEquals('WDWyig', $first['shorturl']); | 108 | $this->assertEquals('WDWyig', $first['shorturl']); |
109 | $this->assertEquals('Link title: @website', $first['title']); | 109 | $this->assertEquals('Link title: @website', $first['title']); |
@@ -120,7 +120,7 @@ class GetLinksTest extends \PHPUnit_Framework_TestCase | |||
120 | $this->assertEmpty($first['updated']); | 120 | $this->assertEmpty($first['updated']); |
121 | 121 | ||
122 | // Multi tags | 122 | // Multi tags |
123 | $link = $data[1]; | 123 | $link = $data[3]; |
124 | $this->assertEquals(7, count($link['tags'])); | 124 | $this->assertEquals(7, count($link['tags'])); |
125 | 125 | ||
126 | // Update date | 126 | // Update date |
@@ -138,7 +138,7 @@ class GetLinksTest extends \PHPUnit_Framework_TestCase | |||
138 | { | 138 | { |
139 | $env = Environment::mock([ | 139 | $env = Environment::mock([ |
140 | 'REQUEST_METHOD' => 'GET', | 140 | 'REQUEST_METHOD' => 'GET', |
141 | 'QUERY_STRING' => 'offset=1&limit=1' | 141 | 'QUERY_STRING' => 'offset=3&limit=1' |
142 | ]); | 142 | ]); |
143 | $request = Request::createFromEnvironment($env); | 143 | $request = Request::createFromEnvironment($env); |
144 | $response = $this->controller->getLinks($request, new Response()); | 144 | $response = $this->controller->getLinks($request, new Response()); |
@@ -164,7 +164,7 @@ class GetLinksTest extends \PHPUnit_Framework_TestCase | |||
164 | $data = json_decode((string) $response->getBody(), true); | 164 | $data = json_decode((string) $response->getBody(), true); |
165 | $this->assertEquals($this->refDB->countLinks(), count($data)); | 165 | $this->assertEquals($this->refDB->countLinks(), count($data)); |
166 | // Check order | 166 | // Check order |
167 | $order = [41, 8, 6, 7, 0, 1, 9, 4, 42]; | 167 | $order = [10, 11, 41, 8, 6, 7, 0, 1, 9, 4, 42]; |
168 | $cpt = 0; | 168 | $cpt = 0; |
169 | foreach ($data as $link) { | 169 | foreach ($data as $link) { |
170 | $this->assertEquals(self::NB_FIELDS_LINK, count($link)); | 170 | $this->assertEquals(self::NB_FIELDS_LINK, count($link)); |
@@ -205,7 +205,8 @@ class GetLinksTest extends \PHPUnit_Framework_TestCase | |||
205 | $this->assertEquals(200, $response->getStatusCode()); | 205 | $this->assertEquals(200, $response->getStatusCode()); |
206 | $data = json_decode((string)$response->getBody(), true); | 206 | $data = json_decode((string)$response->getBody(), true); |
207 | $this->assertEquals($this->refDB->countLinks(), count($data)); | 207 | $this->assertEquals($this->refDB->countLinks(), count($data)); |
208 | $this->assertEquals(41, $data[0]['id']); | 208 | $this->assertEquals(10, $data[0]['id']); |
209 | $this->assertEquals(41, $data[2]['id']); | ||
209 | $this->assertEquals(self::NB_FIELDS_LINK, count($data[0])); | 210 | $this->assertEquals(self::NB_FIELDS_LINK, count($data[0])); |
210 | } | 211 | } |
211 | 212 | ||
@@ -243,7 +244,8 @@ class GetLinksTest extends \PHPUnit_Framework_TestCase | |||
243 | $this->assertEquals(200, $response->getStatusCode()); | 244 | $this->assertEquals(200, $response->getStatusCode()); |
244 | $data = json_decode((string)$response->getBody(), true); | 245 | $data = json_decode((string)$response->getBody(), true); |
245 | $this->assertEquals($this->refDB->countPublicLinks(), count($data)); | 246 | $this->assertEquals($this->refDB->countPublicLinks(), count($data)); |
246 | $this->assertEquals(41, $data[0]['id']); | 247 | $this->assertEquals(10, $data[0]['id']); |
248 | $this->assertEquals(41, $data[2]['id']); | ||
247 | $this->assertEquals(self::NB_FIELDS_LINK, count($data[0])); | 249 | $this->assertEquals(self::NB_FIELDS_LINK, count($data[0])); |
248 | } | 250 | } |
249 | 251 | ||
@@ -413,8 +415,9 @@ class GetLinksTest extends \PHPUnit_Framework_TestCase | |||
413 | $response = $this->controller->getLinks($request, new Response()); | 415 | $response = $this->controller->getLinks($request, new Response()); |
414 | $this->assertEquals(200, $response->getStatusCode()); | 416 | $this->assertEquals(200, $response->getStatusCode()); |
415 | $data = json_decode((string) $response->getBody(), true); | 417 | $data = json_decode((string) $response->getBody(), true); |
416 | $this->assertEquals(9, count($data)); | 418 | $this->assertEquals(\ReferenceLinkDB::$NB_LINKS_TOTAL, count($data)); |
417 | $this->assertEquals(41, $data[0]['id']); | 419 | $this->assertEquals(10, $data[0]['id']); |
420 | $this->assertEquals(41, $data[2]['id']); | ||
418 | 421 | ||
419 | // wildcard: optional ('*' does not need to expand) | 422 | // wildcard: optional ('*' does not need to expand) |
420 | $env = Environment::mock([ | 423 | $env = Environment::mock([ |
diff --git a/tests/utils/ReferenceLinkDB.php b/tests/utils/ReferenceLinkDB.php index e887aa78..7426ad07 100644 --- a/tests/utils/ReferenceLinkDB.php +++ b/tests/utils/ReferenceLinkDB.php | |||
@@ -4,7 +4,7 @@ | |||
4 | */ | 4 | */ |
5 | class ReferenceLinkDB | 5 | class ReferenceLinkDB |
6 | { | 6 | { |
7 | public static $NB_LINKS_TOTAL = 9; | 7 | public static $NB_LINKS_TOTAL = 11; |
8 | 8 | ||
9 | private $_links = array(); | 9 | private $_links = array(); |
10 | private $_publicCount = 0; | 10 | private $_publicCount = 0; |
@@ -16,6 +16,32 @@ class ReferenceLinkDB | |||
16 | public function __construct() | 16 | public function __construct() |
17 | { | 17 | { |
18 | $this->addLink( | 18 | $this->addLink( |
19 | 11, | ||
20 | 'Pined older', | ||
21 | '?PCRizQ', | ||
22 | 'This is an older pinned link', | ||
23 | 0, | ||
24 | DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20100309_101010'), | ||
25 | '', | ||
26 | null, | ||
27 | 'PCRizQ', | ||
28 | true | ||
29 | ); | ||
30 | |||
31 | $this->addLink( | ||
32 | 10, | ||
33 | 'Pined', | ||
34 | '?0gCTjQ', | ||
35 | 'This is a pinned link', | ||
36 | 0, | ||
37 | DateTime::createFromFormat(LinkDB::LINK_DATE_FORMAT, '20121207_152312'), | ||
38 | '', | ||
39 | null, | ||
40 | '0gCTjQ', | ||
41 | true | ||
42 | ); | ||
43 | |||
44 | $this->addLink( | ||
19 | 41, | 45 | 41, |
20 | 'Link title: @website', | 46 | 'Link title: @website', |
21 | '?WDWyig', | 47 | '?WDWyig', |
@@ -114,7 +140,17 @@ class ReferenceLinkDB | |||
114 | /** | 140 | /** |
115 | * Adds a new link | 141 | * Adds a new link |
116 | */ | 142 | */ |
117 | protected function addLink($id, $title, $url, $description, $private, $date, $tags, $updated = '', $shorturl = '') | 143 | protected function addLink( |
144 | $id, | ||
145 | $title, | ||
146 | $url, | ||
147 | $description, | ||
148 | $private, | ||
149 | $date, | ||
150 | $tags, | ||
151 | $updated = '', | ||
152 | $shorturl = '', | ||
153 | $pinned = false) | ||
118 | { | 154 | { |
119 | $link = array( | 155 | $link = array( |
120 | 'id' => $id, | 156 | 'id' => $id, |
@@ -126,6 +162,7 @@ class ReferenceLinkDB | |||
126 | 'created' => $date, | 162 | 'created' => $date, |
127 | 'updated' => $updated, | 163 | 'updated' => $updated, |
128 | 'shorturl' => $shorturl ? $shorturl : smallHash($date->format(LinkDB::LINK_DATE_FORMAT) . $id), | 164 | 'shorturl' => $shorturl ? $shorturl : smallHash($date->format(LinkDB::LINK_DATE_FORMAT) . $id), |
165 | 'sticky' => $pinned | ||
129 | ); | 166 | ); |
130 | $this->_links[$id] = $link; | 167 | $this->_links[$id] = $link; |
131 | 168 | ||
@@ -165,6 +202,10 @@ class ReferenceLinkDB | |||
165 | $order = $order === 'ASC' ? -1 : 1; | 202 | $order = $order === 'ASC' ? -1 : 1; |
166 | // Reorder array by dates. | 203 | // Reorder array by dates. |
167 | usort($this->_links, function($a, $b) use ($order) { | 204 | usort($this->_links, function($a, $b) use ($order) { |
205 | if (isset($a['sticky']) && isset($b['sticky']) && $a['sticky'] !== $b['sticky']) { | ||
206 | return $a['sticky'] ? -1 : 1; | ||
207 | } | ||
208 | |||
168 | return $a['created'] < $b['created'] ? 1 * $order : -1 * $order; | 209 | return $a['created'] < $b['created'] ? 1 * $order : -1 * $order; |
169 | }); | 210 | }); |
170 | } | 211 | } |
diff --git a/tpl/default/linklist.html b/tpl/default/linklist.html index 8ea2ce66..c04f4786 100644 --- a/tpl/default/linklist.html +++ b/tpl/default/linklist.html | |||
@@ -125,6 +125,8 @@ | |||
125 | {$strPermalink=t('Permalink')} | 125 | {$strPermalink=t('Permalink')} |
126 | {$strPermalinkLc=t('permalink')} | 126 | {$strPermalinkLc=t('permalink')} |
127 | {$strAddTag=t('Add tag')} | 127 | {$strAddTag=t('Add tag')} |
128 | {$strToggleSticky=t('Toggle sticky')} | ||
129 | {$strSticky=t('Sticky')} | ||
128 | {ignore}End of translations{/ignore} | 130 | {ignore}End of translations{/ignore} |
129 | {loop="links"} | 131 | {loop="links"} |
130 | <div class="anchor" id="{$value.shorturl}"></div> | 132 | <div class="anchor" id="{$value.shorturl}"></div> |
@@ -201,7 +203,23 @@ | |||
201 | <i class="fa fa-trash"></i> | 203 | <i class="fa fa-trash"></i> |
202 | </a> | 204 | </a> |
203 | </span> | 205 | </span> |
206 | <span class="linklist-item-infos-controls-item ctrl-pin"> | ||
207 | <a href="?do=pin&id={$value.id}&token={$token}" | ||
208 | title="{$strToggleSticky}" class="pin-link {if="$value.sticky"}pinned-link{/if} pure-u-0 pure-u-lg-visible"> | ||
209 | <i class="fa fa-thumb-tack"></i> | ||
210 | </a> | ||
211 | </span> | ||
204 | </div> | 212 | </div> |
213 | {else} | ||
214 | {if="$value.sticky"} | ||
215 | <div class="linklist-item-infos-controls-group pure-u-0 pure-u-lg-visible"> | ||
216 | <span class="linklist-item-infos-controls-item ctrl-pin"> | ||
217 | <span title="{$strSticky}" class="pin-link pinned-link pure-u-0 pure-u-lg-visible"> | ||
218 | <i class="fa fa-thumb-tack"></i> | ||
219 | </span> | ||
220 | </span> | ||
221 | </div> | ||
222 | {/if} | ||
205 | {/if} | 223 | {/if} |
206 | <a href="?{$value.shorturl}" title="{$strPermalink}"> | 224 | <a href="?{$value.shorturl}" title="{$strPermalink}"> |
207 | {if="!$hide_timestamps || $is_logged_in"} | 225 | {if="!$hide_timestamps || $is_logged_in"} |