Add Copy to clipboard buttons (each link + all links)

This commit is contained in:
Luc Didry
2015-09-17 00:18:42 +02:00
parent 71576ce749
commit 8b76684fcd
21 changed files with 454 additions and 314 deletions
+1
View File
@@ -1,3 +1,4 @@
*.swp
lutim.conf
lutim.db
script/hypnotoad.pid
+3
View File
@@ -11,6 +11,9 @@ Revision history for Lutim
- Purge images from their EXIF tags (for more privacy)
- Provide markdown syntax at upload for using lutim's hosted images
- Now using a wiki: makes README lighter (https://git.framasoft.org/luc/lutim/wikis/home)
- Update twitter bootstrap
- Add "Copy to clipboard" buttons to each link
- Add "Copy all links" button
- bugfixes
0.6 2014-10-03
+2 -1
View File
@@ -5,8 +5,9 @@ CARTON=carton exec
LUTIM=script/lutim
locales:
$(XGETTEXT) -f $(EXTRACTFILES) -o $(EN)
$(XGETTEXT) -W -f $(EXTRACTFILES) -o $(EN)
tx push -s
dev:
rm public/packed/*
$(CARTON) morbo $(LUTIM) --listen http://0.0.0.0:3000
+6
View File
@@ -48,6 +48,12 @@
"code": 59392,
"src": "fontawesome"
},
{
"uid": "1a27e6346cdf0480c9c22351378bebbb",
"css": "clipboard",
"code": 59401,
"src": "typicons"
},
{
"uid": "fccd3ea0efb711b849045bee686b1ceb",
"css": "spinner",
+147 -126
View File
@@ -1,329 +1,350 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Project-Id-Version: Lutim\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"PO-Revision-Date: 2015-09-10 23:28+0000\n"
"Last-Translator: Luc Didry <luc@didry.org>\n"
"Language-Team: English (http://www.transifex.com/fiat-tux/lutim/language/en/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. ($delay)
#. (config('max_delay')
#: templates/index.html.ep:134 templates/index.html.ep:143 templates/index.html.ep:144 templates/index.html.ep:255 templates/index.html.ep:264 templates/index.html.ep:265 templates/index.html.ep:36 templates/index.html.ep:45 templates/index.html.ep:46 templates/index.html.ep:88 templates/index.html.ep:97 templates/index.html.ep:98
msgid "%1 days"
msgstr ""
"Language: en\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. ($total)
#: templates/stats.html.ep:2
msgid "%1 sent images on this instance from beginning."
msgstr ""
msgstr "%1 sent images on this instance from beginning."
#: templates/index.html.ep:164
#: templates/index.html.ep:154
msgid "-or-"
msgstr ""
msgstr "-or-"
#: templates/index.html.ep:5
msgid "1 year"
msgstr ""
msgstr "1 year"
#: templates/index.html.ep:143 templates/index.html.ep:264 templates/index.html.ep:4 templates/index.html.ep:45 templates/index.html.ep:97
#: templates/index.html.ep:4
msgid "24 hours"
msgstr ""
msgstr "24 hours"
#: lib/Lutim/Controller.pm:211
#: lib/Lutim/Controller.pm:215
msgid "An error occured while downloading the image."
msgstr ""
msgstr "An error occured while downloading the image."
#: templates/about.html.ep:39 templates/stats.html.ep:13
#: templates/about.html.ep:40
#: templates/stats.html.ep:13
msgid "Back to homepage"
msgstr ""
msgstr "Back to homepage"
#: templates/index.html.ep:167 templates/index.html.ep:168
#: templates/index.html.ep:157
#: templates/index.html.ep:158
msgid "Click to open the file browser"
msgstr ""
msgstr "Click to open the file browser"
#: templates/about.html.ep:30
msgid "Contributors"
msgstr ""
msgstr "Contributors"
#: templates/index.html.ep:109 templates/index.html.ep:155 templates/index.html.ep:273 templates/index.html.ep:57
#: templates/index.html.ep:33
#: templates/index.html.ep:41
#: templates/index.html.ep:49
#: templates/index.html.ep:57
msgid "Copy to clipboard"
msgstr "Copy to clipboard"
#: templates/index.html.ep:111
#: templates/index.html.ep:142
#: templates/index.html.ep:79
msgid "Delete at first view?"
msgstr ""
msgstr "Delete at first view?"
#: templates/index.html.ep:249 templates/index.html.ep:26
#: templates/index.html.ep:62
msgid "Deletion link"
msgstr ""
msgstr "Deletion link"
#: templates/index.html.ep:24 templates/index.html.ep:245
#: templates/index.html.ep:45
#: templates/index.html.ep:47
msgid "Download link"
msgstr ""
msgstr "Download link"
#: templates/index.html.ep:163
#: templates/index.html.ep:153
msgid "Drag & drop images here"
msgstr ""
msgstr "Drag & drop images here"
#: templates/about.html.ep:7
msgid "Drag and drop an image in the appropriate area or use the traditional way to send files and Lutim will provide you four URLs. One to view the image, an other to directly download it, one you can use on social networks and a last to delete the image when you want."
msgstr ""
msgstr "Drag and drop an image in the appropriate area or use the traditional way to send files and Lutim will provide you four URLs. One to view the image, an other to directly download it, one you can use on social networks and a last to delete the image when you want."
#: templates/index.html.ep:112 templates/index.html.ep:158 templates/index.html.ep:60
#: templates/index.html.ep:114
#: templates/index.html.ep:145
msgid "Encrypt the image (Lutim does not keep the key)."
msgstr ""
#: templates/index.html.ep:230
msgid "Error while trying to modify the image."
msgstr ""
msgstr "Encrypt the image (Lutim does not keep the key)."
#: templates/stats.html.ep:9
msgid "Evolution of total files"
msgstr ""
msgstr "Evolution of total files"
#: templates/about.html.ep:24
msgid "For more details, see the <a href=\"https://git.framasoft.org/luc/lutim\">homepage of the project</a>."
msgstr ""
msgstr "For more details, see the <a href=\"https://git.framasoft.org/luc/lutim\">homepage of the project</a>."
#: templates/layouts/default.html.ep:50
msgid "Fork me!"
msgstr ""
msgstr "Fork me!"
#: templates/layouts/default.html.ep:45
msgid "Homepage"
msgstr ""
msgstr "Homepage"
#: templates/about.html.ep:20
msgid "How do you pronounce Lutim?"
msgstr ""
msgstr "How do you pronounce Lutim?"
#: templates/about.html.ep:6
msgid "How does it work?"
msgstr ""
msgstr "How does it work?"
#: templates/about.html.ep:18
msgid "How to report an image?"
msgstr ""
msgstr "How to report an image?"
#: templates/about.html.ep:14
msgid "If the files are deleted if you ask it while posting it, their SHA512 footprint are retained."
msgstr ""
msgstr "If the files are deleted if you ask it while posting it, their SHA512 footprint are retained."
#: templates/index.html.ep:122 templates/index.html.ep:177
#: templates/index.html.ep:127
#: templates/index.html.ep:167
msgid "Image URL"
msgstr ""
msgstr "Image URL"
#: templates/layouts/default.html.ep:49
msgid "Informations"
msgstr ""
msgstr "Informations"
#: templates/layouts/default.html.ep:54
msgid "Install webapp"
msgstr ""
msgstr "Install webapp"
#: templates/about.html.ep:11
msgid "Is it really anonymous?"
msgstr ""
msgstr "Is it really anonymous?"
#: templates/about.html.ep:9
msgid "Is it really free (as in free beer)?"
msgstr ""
msgstr "Is it really free (as in free beer)?"
#: templates/about.html.ep:21
msgid "Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
msgstr ""
msgstr "Juste like you pronounce the French word <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
#: templates/index.html.ep:125 templates/index.html.ep:180 templates/index.html.ep:275 templates/index.html.ep:63
#: templates/index.html.ep:117
#: templates/index.html.ep:148
msgid "Keep EXIF tags"
msgstr "Keep EXIF tags"
#: templates/index.html.ep:130
#: templates/index.html.ep:170
#: templates/index.html.ep:82
msgid "Let's go!"
msgstr ""
msgstr "Let's go!"
#: templates/layouts/default.html.ep:48
msgid "License:"
msgstr ""
msgstr "License:"
#: templates/index.html.ep:247 templates/index.html.ep:25
#: templates/index.html.ep:53
#: templates/index.html.ep:55
msgid "Link for share on social networks"
msgstr ""
msgstr "Link for share on social networks"
#: templates/about.html.ep:4
msgid "Lutim is a free (as in free beer) and anonymous image hosting service. It's also the name of the free (as in free speech) software which provides this service."
msgstr ""
msgstr "Lutim is a free (as in free beer) and anonymous image hosting service. It's also the name of the free (as in free speech) software which provides this service."
#: templates/about.html.ep:25
msgid "Main developers"
msgstr ""
msgstr "Main developers"
#: templates/index.html.ep:124 templates/index.html.ep:172
#: templates/index.html.ep:37
#: templates/index.html.ep:39
msgid "Markdown syntax"
msgstr "Markdown syntax"
#: templates/index.html.ep:129
#: templates/index.html.ep:162
msgid "Only images are allowed"
msgstr ""
msgstr "Only images are allowed"
#: templates/about.html.ep:16
msgid "Only the uploader! (well, only if he's the only owner of the images' rights before the upload)"
msgstr ""
msgstr "Only the uploader! (well, only if he's the only owner of the images' rights before the upload)"
#: templates/about.html.ep:19
msgid "Please contact the administrator: %1"
msgstr ""
msgstr "Please contact the administrator: %1"
#: templates/index.html.ep:117
#: templates/index.html.ep:122
msgid "Send an image"
msgstr ""
#: templates/index.html.ep:212
msgid "Share it!"
msgstr ""
msgstr "Send an image"
#: templates/layouts/default.html.ep:51
msgid "Share on Twitter"
msgstr ""
msgstr "Share on Twitter"
#: templates/index.html.ep:278 templates/index.html.ep:77
#: templates/index.html.ep:97
msgid "Something bad happened"
msgstr ""
msgstr "Something bad happened"
#: templates/about.html.ep:13
msgid "The IP address of the image's sender is retained for a delay which depends of the administrator's choice (for the official instance, which is located in France, it's one year)."
msgstr ""
msgstr "The IP address of the image's sender is retained for a delay which depends of the administrator's choice (for the official instance, which is located in France, it's one year)."
#: templates/about.html.ep:23
msgid "The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/Free_software\">free software</a>, which allows you to download and install it on you own server. Have a look at the <a href=\"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
msgstr ""
msgstr "The Lutim software is a <a href=\"http://en.wikipedia.org/wiki/Free_software\">free software</a>, which allows you to download and install it on you own server. Have a look at the <a href=\"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> to see what you can do."
#: lib/Lutim/Controller.pm:230
#: lib/Lutim/Controller.pm:234
msgid "The URL is not valid."
msgstr ""
msgstr "The URL is not valid."
#: lib/Lutim/Controller.pm:142 lib/Lutim/Controller.pm:73
#: lib/Lutim/Controller.pm:145
#: lib/Lutim/Controller.pm:76
msgid "The delete token is invalid."
msgstr ""
msgstr "The delete token is invalid."
#. ($upload->filename)
#: lib/Lutim/Controller.pm:333
#: lib/Lutim/Controller.pm:368
msgid "The file %1 is not an image."
msgstr ""
msgstr "The file %1 is not an image."
#. ($max_file_size)
#. ($tx->res->max_message_size)
#. ($c->req->max_message_size)
#: lib/Lutim/Controller.pm:194 lib/Lutim/Controller.pm:261 templates/index.html.ep:308
#: lib/Lutim/Controller.pm:198
#: lib/Lutim/Controller.pm:265
msgid "The file exceed the size limit (%1)"
msgstr ""
msgstr "The file exceed the size limit (%1)"
#: templates/stats.html.ep:11
msgid "The graph's datas are not updated in real-time."
msgstr ""
msgstr "The graph's datas are not updated in real-time."
#. ($image->filename)
#: lib/Lutim/Controller.pm:144
#: lib/Lutim/Controller.pm:147
msgid "The image %1 has already been deleted."
msgstr ""
msgstr "The image %1 has already been deleted."
#. ($image->filename)
#: lib/Lutim/Controller.pm:150
#: lib/Lutim/Controller.pm:153
msgid "The image %1 has been successfully deleted"
msgstr ""
msgstr "The image %1 has been successfully deleted"
#: lib/Lutim/Controller.pm:81
#: lib/Lutim/Controller.pm:84
msgid "The image's delay has been successfully modified"
msgstr ""
msgstr "The image's delay has been successfully modified"
#: templates/index.html.ep:9
msgid "The images are encrypted on the server (Lutim does not keep the key)."
msgstr ""
msgstr "The images are encrypted on the server (Lutim does not keep the key)."
#: templates/about.html.ep:5
msgid "The images you post on Lutim can be stored indefinitely or be deleted at first view or after a delay selected from those proposed."
msgstr ""
msgstr "The images you post on Lutim can be stored indefinitely or be deleted at first view or after a delay selected from those proposed."
#. ($c->config->{contact})
#: lib/Lutim/Controller.pm:328
#: lib/Lutim/Controller.pm:363
msgid "There is no more available URL. Retry or contact the administrator. %1"
msgstr ""
msgstr "There is no more available URL. Retry or contact the administrator. %1"
#: templates/index.html.ep:20 templates/index.html.ep:210
#: templates/index.html.ep:24
msgid "Tweet it!"
msgstr ""
msgstr "Tweet it!"
#. ($short)
#: lib/Lutim/Controller.pm:115
#: lib/Lutim/Controller.pm:118
msgid "Unable to find the image %1."
msgstr ""
msgstr "Unable to find the image %1."
#: lib/Lutim.pm:56 lib/Lutim/Controller.pm:412 lib/Lutim/Controller.pm:458 lib/Lutim/Controller.pm:502
#: lib/Lutim.pm:52
#: lib/Lutim/Controller.pm:447
#: lib/Lutim/Controller.pm:493
#: lib/Lutim/Controller.pm:537
msgid "Unable to find the image: it has been deleted."
msgstr ""
msgstr "Unable to find the image: it has been deleted."
#: templates/about.html.ep:17
msgid "Unlike many image sharing services, you don't give us rights on uploaded images."
msgstr ""
msgstr "Unlike many image sharing services, you don't give us rights on uploaded images."
#: templates/index.html.ep:121 templates/index.html.ep:175
#: templates/index.html.ep:126
#: templates/index.html.ep:165
msgid "Upload an image with its URL"
msgstr ""
msgstr "Upload an image with its URL"
#: templates/stats.html.ep:6
msgid "Uploaded files by days"
msgstr ""
msgstr "Uploaded files by days"
#. ($config->{contact})
#: lib/Lutim.pm:149
#: lib/Lutim.pm:144
msgid "Uploading is currently disabled, please try later or contact the administrator (%1)."
msgstr ""
msgstr "Uploading is currently disabled, please try later or contact the administrator (%1)."
#: templates/index.html.ep:23 templates/index.html.ep:243
#: templates/index.html.ep:29
#: templates/index.html.ep:31
msgid "View link"
msgstr ""
msgstr "View link"
#: templates/about.html.ep:22
msgid "What about the software which provides the service?"
msgstr ""
msgstr "What about the software which provides the service?"
#: templates/about.html.ep:3
msgid "What is Lutim?"
msgstr ""
msgstr "What is Lutim?"
#: templates/about.html.ep:15
msgid "Who owns rights on images uploaded on Lutim?"
msgstr ""
msgstr "Who owns rights on images uploaded on Lutim?"
#: templates/about.html.ep:12
msgid "Yes, it is! On the other side, for legal reasons, your IP address will be stored when you send an image. Don't panic, it is normally the case of all sites on which you send files!"
msgstr ""
msgstr "Yes, it is! On the other side, for legal reasons, your IP address will be stored when you send an image. Don't panic, it is normally the case of all sites on which you send files!"
#. (url_for('index')
#. (url_for('/')
#: templates/about.html.ep:10
msgid "Yes, it is! On the other side, if you want to support the developer, you can do it via <a href=\"https://flattr.com/submit/auto?user_id=_SKy_&amp;url=%1&amp;title=Lutim&amp;category=software\">Flattr</a> or with <a href=\"bitcoin:1JCEtmx9pyzWfitMQj2pKAk8GNgyix7RmA?label=lutim\">BitCoin</a>."
msgstr ""
msgstr "Yes, it is! On the other side, if you want to support the developer, you can do it via <a href=\"https://flattr.com/submit/auto?user_id=_SKy_&amp;url=%1&amp;title=Lutim&amp;category=software\">Flattr</a> or with <a href=\"bitcoin:1JCEtmx9pyzWfitMQj2pKAk8GNgyix7RmA?label=lutim\">BitCoin</a>."
#: templates/about.html.ep:8
msgid "You can, optionally, request that the image(s) posted on Lutim to be deleted at first view (or download) or after the delay selected from those proposed."
msgstr ""
msgstr "You can, optionally, request that the image(s) posted on Lutim to be deleted at first view (or download) or after the delay selected from those proposed."
#: templates/about.html.ep:27
msgid "and on"
msgstr ""
msgstr "and on"
#: templates/about.html.ep:27
msgid "core developer"
msgstr ""
msgstr "core developer"
#: templates/index.html.ep:3
msgid "no time limit"
msgstr ""
msgstr "no time limit"
#: templates/about.html.ep:27
msgid "on"
msgstr ""
msgstr "on"
#: templates/about.html.ep:36
msgid "spanish translation"
msgstr ""
msgstr "spanish translation"
#: templates/about.html.ep:28
msgid "webapp developer"
msgstr ""
msgstr "webapp developer"
+50 -60
View File
@@ -3,37 +3,27 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Translators:
# Luc Didry <luc@didry.org>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Lutim\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
"PO-Revision-Date: 2015-08-02 11:07+0000\n"
"PO-Revision-Date: 2015-09-16 20:17+0000\n"
"Last-Translator: Luc Didry <luc@didry.org>\n"
"Language-Team: Spanish (http://www.transifex.com/projects/p/lutim/language/es/)\n"
"Language-Team: Spanish (http://www.transifex.com/fiat-tux/lutim/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. ($delay)
#. (config('max_delay')
#: templates/index.html.ep:134 templates/index.html.ep:143
#: templates/index.html.ep:144 templates/index.html.ep:255
#: templates/index.html.ep:264 templates/index.html.ep:265
#: templates/index.html.ep:36 templates/index.html.ep:45
#: templates/index.html.ep:46 templates/index.html.ep:88
#: templates/index.html.ep:97 templates/index.html.ep:98
msgid "%1 days"
msgstr "%1 días"
#. ($total)
#: templates/stats.html.ep:2
msgid "%1 sent images on this instance from beginning."
msgstr "%1 imágenes enviadas a esta instancia desde el inicio."
#: templates/index.html.ep:164
#: templates/index.html.ep:154
msgid "-or-"
msgstr "-o-"
@@ -41,21 +31,19 @@ msgstr "-o-"
msgid "1 year"
msgstr "1 año"
#: templates/index.html.ep:143 templates/index.html.ep:264
#: templates/index.html.ep:4 templates/index.html.ep:45
#: templates/index.html.ep:97
#: templates/index.html.ep:4
msgid "24 hours"
msgstr "24 horas"
#: lib/Lutim/Controller.pm:211
#: lib/Lutim/Controller.pm:215
msgid "An error occured while downloading the image."
msgstr "Error al intentar modificar la imagen."
#: templates/about.html.ep:39 templates/stats.html.ep:13
#: templates/about.html.ep:40 templates/stats.html.ep:13
msgid "Back to homepage"
msgstr "Volver a la página inicial"
#: templates/index.html.ep:167 templates/index.html.ep:168
#: templates/index.html.ep:157 templates/index.html.ep:158
msgid "Click to open the file browser"
msgstr "Clic para abrir el explorador de archivos"
@@ -63,20 +51,25 @@ msgstr "Clic para abrir el explorador de archivos"
msgid "Contributors"
msgstr "Contribuidores"
#: templates/index.html.ep:109 templates/index.html.ep:155
#: templates/index.html.ep:273 templates/index.html.ep:57
#: templates/index.html.ep:33 templates/index.html.ep:41
#: templates/index.html.ep:49 templates/index.html.ep:57
msgid "Copy to clipboard"
msgstr "Copiar al portapapeles"
#: templates/index.html.ep:111 templates/index.html.ep:142
#: templates/index.html.ep:79
msgid "Delete at first view?"
msgstr "¿Borrar en la primera vista?"
#: templates/index.html.ep:249 templates/index.html.ep:26
#: templates/index.html.ep:62
msgid "Deletion link"
msgstr "Enlace para borrar"
#: templates/index.html.ep:24 templates/index.html.ep:245
#: templates/index.html.ep:45 templates/index.html.ep:47
msgid "Download link"
msgstr "Enlace de descarga"
#: templates/index.html.ep:163
#: templates/index.html.ep:153
msgid "Drag & drop images here"
msgstr "Arrastre y suelte imágenes aquí"
@@ -88,15 +81,10 @@ msgid ""
" to delete the image when you want."
msgstr "Arrastre y suelte una imagen en el área apropiada, o use el método tradicional para enviar ficheros, y Lutim proporcionará cuatro URLs. Una para ver la imagen, otra para descargarla directamente, una que upede usar en redes sociales, y una última para borrar la imagen cuando lo desee."
#: templates/index.html.ep:112 templates/index.html.ep:158
#: templates/index.html.ep:60
#: templates/index.html.ep:114 templates/index.html.ep:145
msgid "Encrypt the image (Lutim does not keep the key)."
msgstr "Las imágenes se cifran en el servidor (Lutim no guarda la clave)."
#: templates/index.html.ep:230
msgid "Error while trying to modify the image."
msgstr "Error al intentar modificar la imagen."
#: templates/stats.html.ep:9
msgid "Evolution of total files"
msgstr "Evolución de archivos en total"
@@ -133,7 +121,7 @@ msgid ""
"footprint are retained."
msgstr "Si los ficheros se borran por haberlo solicitado al enviarlos, se retiene su huella digital SHA512."
#: templates/index.html.ep:122 templates/index.html.ep:177
#: templates/index.html.ep:127 templates/index.html.ep:167
msgid "Image URL"
msgstr "URL de la imagen"
@@ -159,8 +147,12 @@ msgid ""
"href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
msgstr "Tal y como se pronuncia la palabra francesa <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
#: templates/index.html.ep:125 templates/index.html.ep:180
#: templates/index.html.ep:275 templates/index.html.ep:63
#: templates/index.html.ep:117 templates/index.html.ep:148
msgid "Keep EXIF tags"
msgstr "Mantener las etiquetas EXIF"
#: templates/index.html.ep:130 templates/index.html.ep:170
#: templates/index.html.ep:82
msgid "Let's go!"
msgstr "¡Vamos allá!"
@@ -168,7 +160,7 @@ msgstr "¡Vamos allá!"
msgid "License:"
msgstr "Licencia:"
#: templates/index.html.ep:247 templates/index.html.ep:25
#: templates/index.html.ep:53 templates/index.html.ep:55
msgid "Link for share on social networks"
msgstr "Enlace para compartir en redes sociales"
@@ -183,7 +175,11 @@ msgstr "Lutim es un servicio de alojamiento de imágenes anónimo y gratuito. Ta
msgid "Main developers"
msgstr "Desarrolladores principales"
#: templates/index.html.ep:124 templates/index.html.ep:172
#: templates/index.html.ep:37 templates/index.html.ep:39
msgid "Markdown syntax"
msgstr "Sintaxis de Markdown"
#: templates/index.html.ep:129 templates/index.html.ep:162
msgid "Only images are allowed"
msgstr "Sólo se admiten imágenes"
@@ -197,19 +193,15 @@ msgstr "¡Sólo el usuario! (bueno, sólo si él/ela es el único titular de los
msgid "Please contact the administrator: %1"
msgstr "Por favor, contacte con el administrador: %1"
#: templates/index.html.ep:117
#: templates/index.html.ep:122
msgid "Send an image"
msgstr "Enviar una imagen"
#: templates/index.html.ep:212
msgid "Share it!"
msgstr "¡Compártelo!"
#: templates/layouts/default.html.ep:51
msgid "Share on Twitter"
msgstr "Compartir en Twitter"
#: templates/index.html.ep:278 templates/index.html.ep:77
#: templates/index.html.ep:97
msgid "Something bad happened"
msgstr "Algo malo ha pasado"
@@ -229,24 +221,22 @@ msgid ""
" you can do."
msgstr "El software Lutim es <a href=\"http://es.wikipedia.org/wiki/Software_libre\">software libre</a>, lo que le permite descargarlo e instalarlo en su propio servidor. Eche un vistazo a la licencia <a href=\"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> para ver qué puede hacer."
#: lib/Lutim/Controller.pm:230
#: lib/Lutim/Controller.pm:234
msgid "The URL is not valid."
msgstr "La URL no es válida."
#: lib/Lutim/Controller.pm:142 lib/Lutim/Controller.pm:73
#: lib/Lutim/Controller.pm:145 lib/Lutim/Controller.pm:76
msgid "The delete token is invalid."
msgstr "El código de borrado no es válido."
#. ($upload->filename)
#: lib/Lutim/Controller.pm:333
#: lib/Lutim/Controller.pm:368
msgid "The file %1 is not an image."
msgstr "El archivo %1 no es una imagen."
#. ($max_file_size)
#. ($tx->res->max_message_size)
#. ($c->req->max_message_size)
#: lib/Lutim/Controller.pm:194 lib/Lutim/Controller.pm:261
#: templates/index.html.ep:308
#: lib/Lutim/Controller.pm:198 lib/Lutim/Controller.pm:265
msgid "The file exceed the size limit (%1)"
msgstr "El archivo supera el límite de tamaño (%1)"
@@ -255,16 +245,16 @@ msgid "The graph's datas are not updated in real-time."
msgstr "Los datos del gráfico no se actualizan en tiempo real."
#. ($image->filename)
#: lib/Lutim/Controller.pm:144
#: lib/Lutim/Controller.pm:147
msgid "The image %1 has already been deleted."
msgstr "La imagen %1 ya se ha borrado."
#. ($image->filename)
#: lib/Lutim/Controller.pm:150
#: lib/Lutim/Controller.pm:153
msgid "The image %1 has been successfully deleted"
msgstr "La imagen %1 se ha borrado correctamente"
#: lib/Lutim/Controller.pm:81
#: lib/Lutim/Controller.pm:84
msgid "The image's delay has been successfully modified"
msgstr "Se ha modificado correctamente el tiempo de la imagen"
@@ -279,21 +269,21 @@ msgid ""
msgstr "Puede, opcionalmente, solicitar que la imagen publicada en Lutim se elimine con la primera vista (o descarga) o tras un tiempo seleccionado de entre varios propuestos."
#. ($c->config->{contact})
#: lib/Lutim/Controller.pm:328
#: lib/Lutim/Controller.pm:363
msgid "There is no more available URL. Retry or contact the administrator. %1"
msgstr "No más URL disponibles. Inténtelo de nuevo o contacte con el administrador. %1"
#: templates/index.html.ep:20 templates/index.html.ep:210
#: templates/index.html.ep:24
msgid "Tweet it!"
msgstr "¡Tuitéalo!"
#. ($short)
#: lib/Lutim/Controller.pm:115
#: lib/Lutim/Controller.pm:118
msgid "Unable to find the image %1."
msgstr "No se ha podido encontrar la imagen %1."
#: lib/Lutim.pm:56 lib/Lutim/Controller.pm:412 lib/Lutim/Controller.pm:458
#: lib/Lutim/Controller.pm:502
#: lib/Lutim.pm:52 lib/Lutim/Controller.pm:447 lib/Lutim/Controller.pm:493
#: lib/Lutim/Controller.pm:537
msgid "Unable to find the image: it has been deleted."
msgstr "No se ha podido encontrar la imagen: ha sido borrada."
@@ -303,7 +293,7 @@ msgid ""
"images."
msgstr "A diferencia de muchos servicios de compartición de imágenes, usted no cede los derechos de las imágenes que sube."
#: templates/index.html.ep:121 templates/index.html.ep:175
#: templates/index.html.ep:126 templates/index.html.ep:165
msgid "Upload an image with its URL"
msgstr "Subir una imagen con la URL"
@@ -312,13 +302,13 @@ msgid "Uploaded files by days"
msgstr "Archivos enviados por día"
#. ($config->{contact})
#: lib/Lutim.pm:149
#: lib/Lutim.pm:144
msgid ""
"Uploading is currently disabled, please try later or contact the "
"administrator (%1)."
msgstr "La carga está deshabilitada en estos momentos, por favor inténtelo más tarde o contacte con el administrador (%1)."
#: templates/index.html.ep:23 templates/index.html.ep:243
#: templates/index.html.ep:29 templates/index.html.ep:31
msgid "View link"
msgstr "Enlace de visualización"
@@ -341,7 +331,7 @@ msgid ""
"sites on which you send files!"
msgstr "¡Sí, lo es! Por otro lado, por razones legales, se almacena la dirección IP cuando se envía una imagen. Que no cunda el pánico, ¡es el caso habitual para todos los sitios a los cuales se envían ficheros!"
#. (url_for('index')
#. (url_for('/')
#: templates/about.html.ep:10
msgid ""
"Yes, it is! On the other side, if you want to support the developer, you can"
+50 -60
View File
@@ -3,37 +3,27 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Translators:
# Luc Didry <luc@didry.org>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Lutim\n"
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
"PO-Revision-Date: 2015-08-01 22:16+0000\n"
"PO-Revision-Date: 2015-09-16 20:14+0000\n"
"Last-Translator: Luc Didry <luc@didry.org>\n"
"Language-Team: French (http://www.transifex.com/projects/p/lutim/language/fr/)\n"
"Language-Team: French (http://www.transifex.com/fiat-tux/lutim/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. ($delay)
#. (config('max_delay')
#: templates/index.html.ep:134 templates/index.html.ep:143
#: templates/index.html.ep:144 templates/index.html.ep:255
#: templates/index.html.ep:264 templates/index.html.ep:265
#: templates/index.html.ep:36 templates/index.html.ep:45
#: templates/index.html.ep:46 templates/index.html.ep:88
#: templates/index.html.ep:97 templates/index.html.ep:98
msgid "%1 days"
msgstr "%1 jours"
#. ($total)
#: templates/stats.html.ep:2
msgid "%1 sent images on this instance from beginning."
msgstr "%1 images envoyées sur cette instance depuis le début."
#: templates/index.html.ep:164
#: templates/index.html.ep:154
msgid "-or-"
msgstr "-ou-"
@@ -41,21 +31,19 @@ msgstr "-ou-"
msgid "1 year"
msgstr "1 an"
#: templates/index.html.ep:143 templates/index.html.ep:264
#: templates/index.html.ep:4 templates/index.html.ep:45
#: templates/index.html.ep:97
#: templates/index.html.ep:4
msgid "24 hours"
msgstr "24 heures"
#: lib/Lutim/Controller.pm:211
#: lib/Lutim/Controller.pm:215
msgid "An error occured while downloading the image."
msgstr "Une erreur est survenue lors du téléchargement de l'image."
#: templates/about.html.ep:39 templates/stats.html.ep:13
#: templates/about.html.ep:40 templates/stats.html.ep:13
msgid "Back to homepage"
msgstr "Retour à la page d'accueil"
#: templates/index.html.ep:167 templates/index.html.ep:168
#: templates/index.html.ep:157 templates/index.html.ep:158
msgid "Click to open the file browser"
msgstr "Cliquez pour utiliser le navigateur de fichier"
@@ -63,20 +51,25 @@ msgstr "Cliquez pour utiliser le navigateur de fichier"
msgid "Contributors"
msgstr "Contributeurs"
#: templates/index.html.ep:109 templates/index.html.ep:155
#: templates/index.html.ep:273 templates/index.html.ep:57
#: templates/index.html.ep:33 templates/index.html.ep:41
#: templates/index.html.ep:49 templates/index.html.ep:57
msgid "Copy to clipboard"
msgstr "Copier dans le presse-papier"
#: templates/index.html.ep:111 templates/index.html.ep:142
#: templates/index.html.ep:79
msgid "Delete at first view?"
msgstr "Supprimer au premier accès ?"
#: templates/index.html.ep:249 templates/index.html.ep:26
#: templates/index.html.ep:62
msgid "Deletion link"
msgstr "Lien de suppression"
#: templates/index.html.ep:24 templates/index.html.ep:245
#: templates/index.html.ep:45 templates/index.html.ep:47
msgid "Download link"
msgstr "Lien de téléchargement"
#: templates/index.html.ep:163
#: templates/index.html.ep:153
msgid "Drag & drop images here"
msgstr "Déposez vos images ici"
@@ -88,15 +81,10 @@ msgid ""
" to delete the image when you want."
msgstr "Faites glisser des images dans la zone prévue à cet effet ou sélectionnez un fichier de façon classique et Lutim vous fournira quatre URLs en retour. Une pour afficher limage, une autre pour la télécharger directement, une pour l'utiliser sur les réseaux sociaux et une dernière pour supprimer votre image quand vous le souhaitez"
#: templates/index.html.ep:112 templates/index.html.ep:158
#: templates/index.html.ep:60
#: templates/index.html.ep:114 templates/index.html.ep:145
msgid "Encrypt the image (Lutim does not keep the key)."
msgstr "Chiffrer l'image (Lutim ne stocke pas la clé)."
#: templates/index.html.ep:230
msgid "Error while trying to modify the image."
msgstr "Une erreur est survenue lors de la tentative de modification de l'image."
#: templates/stats.html.ep:9
msgid "Evolution of total files"
msgstr "Évolution du nombre total de fichiers"
@@ -133,7 +121,7 @@ msgid ""
"footprint are retained."
msgstr "Si les fichiers sont bien supprimés si vous en avez exprimé le choix, leur empreinte SHA512 est toutefois conservée."
#: templates/index.html.ep:122 templates/index.html.ep:177
#: templates/index.html.ep:127 templates/index.html.ep:167
msgid "Image URL"
msgstr "URL de l'image"
@@ -159,8 +147,12 @@ msgid ""
"href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
msgstr "Comme on prononce <a href=\"https://fr.wikipedia.org/wiki/Lutin\">lutin</a> (/ly.tɛ̃/)."
#: templates/index.html.ep:125 templates/index.html.ep:180
#: templates/index.html.ep:275 templates/index.html.ep:63
#: templates/index.html.ep:117 templates/index.html.ep:148
msgid "Keep EXIF tags"
msgstr "Conserver les données EXIF"
#: templates/index.html.ep:130 templates/index.html.ep:170
#: templates/index.html.ep:82
msgid "Let's go!"
msgstr "Allons-y !"
@@ -168,7 +160,7 @@ msgstr "Allons-y !"
msgid "License:"
msgstr "Licence :"
#: templates/index.html.ep:247 templates/index.html.ep:25
#: templates/index.html.ep:53 templates/index.html.ep:55
msgid "Link for share on social networks"
msgstr "Lien pour partager sur les réseaux sociaux"
@@ -183,7 +175,11 @@ msgstr "Lutim est un service gratuit et anonyme dhébergement dimages. Il
msgid "Main developers"
msgstr "Développeurs de l'application"
#: templates/index.html.ep:124 templates/index.html.ep:172
#: templates/index.html.ep:37 templates/index.html.ep:39
msgid "Markdown syntax"
msgstr "Syntaxe Markdown"
#: templates/index.html.ep:129 templates/index.html.ep:162
msgid "Only images are allowed"
msgstr "Seules les images sont acceptées"
@@ -197,19 +193,15 @@ msgstr "Seulement l'envoyeur ! (enfin, seulement s'il possède des droits exclus
msgid "Please contact the administrator: %1"
msgstr "Veuillez contacter ladministrateur : %1"
#: templates/index.html.ep:117
#: templates/index.html.ep:122
msgid "Send an image"
msgstr "Envoyer une image"
#: templates/index.html.ep:212
msgid "Share it!"
msgstr "Partagez !"
#: templates/layouts/default.html.ep:51
msgid "Share on Twitter"
msgstr "Partager sur Twitter"
#: templates/index.html.ep:278 templates/index.html.ep:77
#: templates/index.html.ep:97
msgid "Something bad happened"
msgstr "Un problème est survenu"
@@ -229,24 +221,22 @@ msgid ""
" you can do."
msgstr "Le logiciel Lutim est un <a href=\"https://fr.wikipedia.org/wiki/Logiciel_libre\">logiciel libre</a>, ce qui vous permet de le télécharger et de linstaller sur votre propre serveur. Jetez un coup d’œil à l<a href=\"https://www.gnu.org/licenses/agpl-3.0.html\">AGPL</a> pour voir quels sont vos droits"
#: lib/Lutim/Controller.pm:230
#: lib/Lutim/Controller.pm:234
msgid "The URL is not valid."
msgstr "L'URL n'est pas valide."
#: lib/Lutim/Controller.pm:142 lib/Lutim/Controller.pm:73
#: lib/Lutim/Controller.pm:145 lib/Lutim/Controller.pm:76
msgid "The delete token is invalid."
msgstr "Le jeton de suppression est invalide."
#. ($upload->filename)
#: lib/Lutim/Controller.pm:333
#: lib/Lutim/Controller.pm:368
msgid "The file %1 is not an image."
msgstr "Le fichier %1 n'est pas une image."
#. ($max_file_size)
#. ($tx->res->max_message_size)
#. ($c->req->max_message_size)
#: lib/Lutim/Controller.pm:194 lib/Lutim/Controller.pm:261
#: templates/index.html.ep:308
#: lib/Lutim/Controller.pm:198 lib/Lutim/Controller.pm:265
msgid "The file exceed the size limit (%1)"
msgstr "Le fichier dépasse la limite de taille (%1)"
@@ -255,16 +245,16 @@ msgid "The graph's datas are not updated in real-time."
msgstr "Les données du graphique ne sont pas mises à jour en temps réél."
#. ($image->filename)
#: lib/Lutim/Controller.pm:144
#: lib/Lutim/Controller.pm:147
msgid "The image %1 has already been deleted."
msgstr "L'image %1 a déjà été supprimée."
#. ($image->filename)
#: lib/Lutim/Controller.pm:150
#: lib/Lutim/Controller.pm:153
msgid "The image %1 has been successfully deleted"
msgstr "L'image %1 a été supprimée avec succès."
#: lib/Lutim/Controller.pm:81
#: lib/Lutim/Controller.pm:84
msgid "The image's delay has been successfully modified"
msgstr "Le délai de l'image a été modifié avec succès."
@@ -279,21 +269,21 @@ msgid ""
msgstr "Les images déposées sur Lutim peuvent être stockées indéfiniment, ou seffacer dès le premier affichage ou au bout du délai choisi parmi ceux proposés."
#. ($c->config->{contact})
#: lib/Lutim/Controller.pm:328
#: lib/Lutim/Controller.pm:363
msgid "There is no more available URL. Retry or contact the administrator. %1"
msgstr "Il n'y a plus d'URL disponible. Veuillez réessayer ou contacter l'administrateur. %1."
#: templates/index.html.ep:20 templates/index.html.ep:210
#: templates/index.html.ep:24
msgid "Tweet it!"
msgstr "Tweetez !"
#. ($short)
#: lib/Lutim/Controller.pm:115
#: lib/Lutim/Controller.pm:118
msgid "Unable to find the image %1."
msgstr "Impossible de trouver l'image %1."
#: lib/Lutim.pm:56 lib/Lutim/Controller.pm:412 lib/Lutim/Controller.pm:458
#: lib/Lutim/Controller.pm:502
#: lib/Lutim.pm:52 lib/Lutim/Controller.pm:447 lib/Lutim/Controller.pm:493
#: lib/Lutim/Controller.pm:537
msgid "Unable to find the image: it has been deleted."
msgstr "Impossible de trouver l'image : elle a été supprimée."
@@ -303,7 +293,7 @@ msgid ""
"images."
msgstr "Au contraire de la majorité des services de partages d'image, vous ne nous cédez aucun droit sur les images envoyées."
#: templates/index.html.ep:121 templates/index.html.ep:175
#: templates/index.html.ep:126 templates/index.html.ep:165
msgid "Upload an image with its URL"
msgstr "Déposer une image par son URL"
@@ -312,13 +302,13 @@ msgid "Uploaded files by days"
msgstr "Fichiers envoyés, par jour"
#. ($config->{contact})
#: lib/Lutim.pm:149
#: lib/Lutim.pm:144
msgid ""
"Uploading is currently disabled, please try later or contact the "
"administrator (%1)."
msgstr "L'envoi d'images est actuellement désactivé, veuillez réessayer plus tard ou contacter l'administrateur (%1)."
#: templates/index.html.ep:23 templates/index.html.ep:243
#: templates/index.html.ep:29 templates/index.html.ep:31
msgid "View link"
msgstr "Lien d'affichage"
@@ -341,7 +331,7 @@ msgid ""
"sites on which you send files!"
msgstr "Oui, ça lest ! Par contre, pour des raisons légales, votre adresse IP sera enregistrée lorsque vous enverrez une image. Ne vous affolez pas, cest de toute façon normalement le cas de tous les sites sur lesquels vous envoyez des fichiers !"
#. (url_for('index')
#. (url_for('/')
#: templates/about.html.ep:10
msgid ""
"Yes, it is! On the other side, if you want to support the developer, you can"
+2 -1
View File
@@ -7,4 +7,5 @@
.icon-download:before { content: '\e805'; } /* '' */
.icon-spinner:before { content: '\e806'; } /* '' */
.icon-eye:before { content: '\e807'; } /* '' */
.icon-share:before { content: '\e808'; } /* '' */
.icon-share:before { content: '\e808'; } /* '' */
.icon-clipboard:before { content: '\e809'; } /* '' */
+8 -7
View File
File diff suppressed because one or more lines are too long
+2 -1
View File
@@ -7,4 +7,5 @@
.icon-download { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe805;&nbsp;'); }
.icon-spinner { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe806;&nbsp;'); }
.icon-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe807;&nbsp;'); }
.icon-share { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe808;&nbsp;'); }
.icon-share { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe808;&nbsp;'); }
.icon-clipboard { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe809;&nbsp;'); }
+2 -1
View File
@@ -18,4 +18,5 @@
.icon-download { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe805;&nbsp;'); }
.icon-spinner { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe806;&nbsp;'); }
.icon-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe807;&nbsp;'); }
.icon-share { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe808;&nbsp;'); }
.icon-share { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe808;&nbsp;'); }
.icon-clipboard { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe809;&nbsp;'); }
+8 -7
View File
@@ -1,10 +1,10 @@
@font-face {
font-family: 'fontello';
src: url('../font/fontello.eot?47015351');
src: url('../font/fontello.eot?47015351#iefix') format('embedded-opentype'),
url('../font/fontello.woff?47015351') format('woff'),
url('../font/fontello.ttf?47015351') format('truetype'),
url('../font/fontello.svg?47015351#fontello') format('svg');
src: url('../font/fontello.eot?5320554');
src: url('../font/fontello.eot?5320554#iefix') format('embedded-opentype'),
url('../font/fontello.woff?5320554') format('woff'),
url('../font/fontello.ttf?5320554') format('truetype'),
url('../font/fontello.svg?5320554#fontello') format('svg');
font-weight: normal;
font-style: normal;
}
@@ -14,7 +14,7 @@
@media screen and (-webkit-min-device-pixel-ratio:0) {
@font-face {
font-family: 'fontello';
src: url('../font/fontello.svg?47015351#fontello') format('svg');
src: url('../font/fontello.svg?5320554#fontello') format('svg');
}
}
*/
@@ -62,4 +62,5 @@
.icon-download:before { content: '\e805'; } /* '' */
.icon-spinner:before { content: '\e806'; } /* '' */
.icon-eye:before { content: '\e807'; } /* '' */
.icon-share:before { content: '\e808'; } /* '' */
.icon-share:before { content: '\e808'; } /* '' */
.icon-clipboard:before { content: '\e809'; } /* '' */
+3
View File
@@ -48,3 +48,6 @@ label.always-encrypt {
#install-app {
display: none;
}
.form-control[readonly] {
background-color: #FFFFFF;
}
+9
View File
@@ -28,3 +28,12 @@ Font license info
Homepage: http://www.mfglabs.com/
## Typicons
(c) Stephen Hutchings 2012
Author: Stephen Hutchings
License: SIL (http://scripts.sil.org/OFL)
Homepage: http://typicons.com/
Binary file not shown.
+1
View File
@@ -15,6 +15,7 @@
<glyph glyph-name="spinner" unicode="&#xe806;" d="m469 614v204q129 0 237-61t169-170 62-237h-204q0 72-36 133t-95 96-133 35z" horiz-adv-x="937.5" />
<glyph glyph-name="eye" unicode="&#xe807;" d="m929 314q-85 132-213 197 34-58 34-125 0-104-73-177t-177-73-177 73-73 177q0 67 34 125-128-65-213-197 75-114 187-182t242-68 242 68 187 182z m-402 215q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-12 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m473-215q0-19-11-38-78-129-210-206t-279-77-279 77-210 206q-11 19-11 38t11 39q78 128 210 205t279 78 279-78 210-205q11-20 11-39z" horiz-adv-x="1000" />
<glyph glyph-name="share" unicode="&#xe808;" d="m679 279q74 0 126-53t52-126-52-126-126-53-127 53-52 126q0 7 1 19l-201 100q-51-48-121-48-75 0-127 53t-52 126 52 126 127 53q70 0 121-48l201 100q-1 12-1 19 0 74 52 126t127 53 126-53 52-126-52-126-126-53q-71 0-122 48l-201-100q1-12 1-19t-1-19l201-100q51 48 122 48z" horiz-adv-x="857.1" />
<glyph glyph-name="clipboard" unicode="&#xe809;" d="m678 819q65 0 110-46t46-110l0-625q0-65-46-111t-110-46l-522 0q-65 0-110 46t-46 111l0 625q0 65 46 110t110 46l522 0z m-418-104l0-52q0-21 16-37t37-16l208 0q22 0 37 16t15 37l0 52-313 0z m469-677l0 625q0 21-15 37t-36 15l-53 0 0-52q0-43-30-73t-74-31l-208 0q-43 0-74 31t-30 73l0 52-53 0q-21 0-37-15t-15-37l0-625q0-21 15-37t37-16l522 0q21 0 36 16t15 37z m-104 52l-416 0q-26 0-26 25 0 12 7 19t19 8l416 0q11 0 19-8t7-19q0-25-26-25z m0 157l-416 0q-11 0-19 7t-7 19q0 25 26 25l416 0q26 0 26-25 0-11-7-19t-19-7z m0 156l-416 0q-26 0-26 25 0 11 7 19t19 7l416 0q11 0 19-7t7-19q0-25-26-25z" horiz-adv-x="834" />
</font>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.
Binary file not shown.
+1
View File
@@ -1,5 +1,6 @@
$('document').ready(function() {
$('.jsonly').show();
$('.input-group-addon.jsonly').css('display', 'table-cell');
// Are we in a mozilla navigator? (well, are we in a navigator which can handle webapps?)
if (navigator.mozApps !== undefined) {
var installCheck = navigator.mozApps.checkInstalled(manifestUrl);
+76 -36
View File
@@ -10,39 +10,79 @@
% }
% if (defined(stash('short'))) {
<div class="alert alert-success">
<div class="row">
% if (defined(stash('short'))) {
<img class="pull-left thumbnail" alt="<%= stash('filename') %> thumbnail" src="<%= stash('thumb') %>">
% }
<div>
% # Display image informations
% my $url = url_for('/'.stash('short'))->to_abs();
<strong><%= stash('filename') %></strong>
&nbsp;&nbsp;&nbsp;<a title="<%= l('Tweet it!') %>" target="_blank" href="https://twitter.com/share?url=<%= $url %>?t"><span class="icon icon-twitter"></span></a>
<ul class="list-unstyled">
% my $delete_url = url_for('delete', {short => stash('real_short'), token => stash('token')})->to_abs();
<li><i class="icon icon-eye" title =" <%= l('View link') %>"></i> <%= link_to $url => begin %> <%= $url %> <%= end %></li>
<li><i class="markdown-mark-solid" title =" <%= l('Markdown syntax') %>"></i> ![](<%= $url %>)</li>
<li><i class="icon icon-download" title =" <%= l('Download link') %>"></i> <%= link_to $url.'?dl' => begin %> <%= $url.'?dl' %> <%= end %></li>
<li><i class="icon icon-share" title =" <%= l('Link for share on social networks') %>"></i> <%= link_to $url.'?t' => begin %> <%= $url.'?t' %> <%= end %></li>
<li><i class="icon icon-trash" title =" <%= l('Deletion link') %>"></i> <%= link_to $delete_url => begin %> <%= $delete_url %> <%= end %></li>
</ul>
</div>
% # Delay modification form
% my $modify_url = url_for('modify', {short => stash('real_short'), token => stash('token')})->to_abs();
<form class="form" role="form" method="POST" action="<%== $modify_url %>">
<div class="form-group form-inline">
<input name="image_url" type="hidden" value="<%= $url %>">
<select name="delete-day" class="form-control">
%= include 'partial/for_my_delay', d => \%d
</select>
<div class="checkbox">
<label>
<input type="checkbox" name="first-view"> <%= l('Delete at first view?') %>
</label>
</div>
<%= submit_button l('Let\'s go!'), class => 'btn btn-sm btn-default btn-primary', id => 'submitbutton' %>
<div class="col-sm-1">
<img class="thumbnail img-responsive" alt="<%= stash('filename') %> thumbnail" src="<%= stash('thumb') %>">
</div>
</form>
% }
<div class="col-sm-11">
% # Display image informations
% my $url = url_for('/'.stash('short'))->to_abs();
<h4>
<%= stash('filename') %>
&nbsp;&nbsp;&nbsp;<a title="<%= l('Tweet it!') %>" target="_blank" href="https://twitter.com/share?url=<%= $url %>?t"><span class="icon icon-twitter"></span></a>
</h4>
% my $delete_url = url_for('delete', {short => stash('real_short'), token => stash('token')})->to_abs();
<form class="form">
<div class="form-group">
<label class="sr-only" for="view"><%= l('View link') %></label>
<div class="input-group col-sm-6">
<div class="input-group-addon"><span class="icon icon-eye" title =" <%= l('View link') %>"></span></div>
<input type="text" class="form-control" id="view" value="<%= $url %>" readonly>
<a href="#" onClick="copyToClipboard($(this));" class="input-group-addon jsonly" title="<%= l('Copy to clipboard') %>"><span class="icon icon-clipboard"></span></a>
</div>
</div>
<div class="form-group">
<label class="sr-only" for="markdown"><%= l('Markdown syntax') %></label>
<div class="input-group col-sm-6">
<div class="input-group-addon"><span class="markdown-mark-solid" title ="<%= l('Markdown syntax') %>"></span></div>
<input type="text" class="form-control" id="markdown" value="![](<%= $url %>)" readonly>
<a href="#" onClick="copyToClipboard($(this));" class="input-group-addon jsonly" title="<%= l('Copy to clipboard') %>"><span class="icon icon-clipboard"></span></a>
</div>
</div>
<div class="form-group">
<label class="sr-only" for="download"><%= l('Download link') %></label>
<div class="input-group col-sm-6">
<div class="input-group-addon"><span class="icon icon-download" title ="<%= l('Download link') %>"></span></div>
<input type="text" class="form-control" id="download" value="<%= $url %>?dl" readonly>
<a href="#" onClick="copyToClipboard($(this));" class="input-group-addon jsonly" title="<%= l('Copy to clipboard') %>"><span class="icon icon-clipboard"></span></a>
</div>
</div>
<div class="form-group">
<label class="sr-only" for="share"><%= l('Link for share on social networks') %></label>
<div class="input-group col-sm-6">
<div class="input-group-addon"><span class="icon icon-share" title ="<%= l('Link for share on social networks') %>"></span></div>
<input type="text" class="form-control" id="share" value="<%= $url %>?t" readonly>
<a href="#" onClick="copyToClipboard($(this));" class="input-group-addon jsonly" title="<%= l('Copy to clipboard') %>"><span class="icon icon-clipboard"></span></a>
</div>
</div>
<div class="form-group">
<div class="input-group col-sm-6 col-xs-12">
<span class="form-control-static"><%= link_to $delete_url => ( class => "btn btn-default col-xs-12 text-left", title => l('Deletion link') ) => begin %><span class="icon icon-trash"></span> <%= $delete_url %> <%= end %></span>
</div>
</div>
</form>
</div>
</div>
<div class="row">
% # Delay modification form
% my $modify_url = url_for('modify', {short => stash('real_short'), token => stash('token')})->to_abs();
<form class="form col-sm-11 col-sm-offset-1" method="POST" action="<%== $modify_url %>">
<div class="form-group form-inline">
<input name="image_url" type="hidden" value="<%= $url %>">
<select name="delete-day" class="form-control">
%= include 'partial/for_my_delay', d => \%d
</select>
<div class="checkbox">
<label>
<input type="checkbox" name="first-view"> <%= l('Delete at first view?') %>
</label>
</div>
<%= submit_button l('Let\'s go!'), class => 'btn btn-sm btn-default btn-primary', id => 'submitmodbutton' %>
</div>
</form>
</div>
</div>
% }
% if (defined(flash('success'))) {
@@ -61,7 +101,7 @@
</div>
<noscript>
<form class="form" role="form" method="POST" action="<%= url_for('/') %>" enctype="multipart/form-data">
<form class="form" method="POST" action="<%= url_for('/') %>" enctype="multipart/form-data">
<div class="form-group form-inline">
<select name="delete-day" class="form-control">
%= include 'partial/for_my_delay', d => \%d
@@ -75,7 +115,7 @@
</label>
<label>
<input type="checkbox" name="keep-exif"> <%= l('Keep EXIF tags') %>
<label>
</label>
</div>
</div>
<div class="form-group">
@@ -106,7 +146,7 @@
</label>
<label>
<input type="checkbox" id="keep-exif"> <%= l('Keep EXIF tags') %>
<label>
</label>
</div>
</div>
<div id="drag-and-drop-zone" class="uploader">
@@ -120,9 +160,9 @@
</div>
</div>
<p class="help-block"><%= l('Only images are allowed') %></p>
<form class="form-horizontal" role="form" method="POST" action="<%== url_for('add') %>">
<form class="form-horizontal" method="POST" action="<%== url_for('add') %>">
<div class="form-group">
<span class="col-sm-3 col-xs-12"><span class="hidden-spin" style="font-size:200%; display:none;" > <i class="icon-spinner animate-spin pull-right"></i></span><label for="lutim-file-url" class="control-label pull-right"><%= l('Upload an image with its URL') %></label></span>
<span class="col-sm-3 col-xs-12"><span class="hidden-spin" style="font-size:200%; display:none;" > <span class="icon-spinner animate-spin pull-right"></span></span><label for="lutim-file-url" class="control-label pull-right"><%= l('Upload an image with its URL') %></label></span>
<div class="col-sm-9 col-xs-12">
<input type="url" name="lutim-file-url" class="form-control" id="lutim-file-url" placeholder="<%= l('Image URL') %>">
</div>
+83 -14
View File
@@ -4,13 +4,13 @@
if (token !== undefined) {
if (modify !== undefined && modify === true) {
return '<%== url_for('/m/')->to_abs() %>'+url+'/'+token;
} else {
url = 'd/'+url+'/'+token;
}
url = 'd/'+url+'/'+token;
return '<a class="btn btn-default col-xs-12 text-left" href="<%== url_for('/')->to_abs() %>'+url+'" title="<%= l('Deletion link') %>"><span class="icon icon-trash"></span> <%== url_for('/')->to_abs() %>'+url+'</a>';
} else if (dl !== '') {
url = url+'?'+dl;
}
return '<a href="<%== url_for('/')->to_abs() %>'+url+'"><%== url_for('/')->to_abs() %>'+url+'</a>';
return '<%== url_for('/')->to_abs() %>'+url;
}
function share(url) {
console.log(url);
@@ -48,25 +48,91 @@
}
});
}
function copyToClipboard(el) {
el = el.siblings('input');
var textArea = document.createElement("textarea");
textArea.style.position = 'fixed';
textArea.style.top = 0;
textArea.style.left = 0;
textArea.style.width = '2em';
textArea.style.height = '2em';
textArea.style.padding = 0;
textArea.style.border = 'none';
textArea.style.outline = 'none';
textArea.style.boxShadow = 'none';
textArea.style.background = 'transparent';
textArea.value = el.val();
document.body.appendChild(textArea);
textArea.select();
try {
var successful = document.execCommand('copy');
var msg = successful ? 'successful' : 'unsuccessful';
console.log('Copying text command was ' + msg);
} catch (err) {
el.focus();
var len = el.val().length * 2;
el.setSelectionRange(len, len);
alert('<%= l('Hit Enter, then Ctrl+C to copy the short link') %>');
}
document.body.removeChild(textArea);
}
function copyAllToClipboard() {
var text = new Array();
$('.view-link-input').each(function(index) {
text.push($(this).val());
});
var textArea = document.createElement("textarea");
textArea.style.position = 'fixed';
textArea.style.top = 0;
textArea.style.left = 0;
textArea.style.width = '2em';
textArea.style.height = '2em';
textArea.style.padding = 0;
textArea.style.border = 'none';
textArea.style.outline = 'none';
textArea.style.boxShadow = 'none';
textArea.style.background = 'transparent';
textArea.value = text.join("\n");
document.body.appendChild(textArea);
textArea.select();
try {
var successful = document.execCommand('copy');
var msg = successful ? 'successful' : 'unsuccessful';
console.log('Copying text command was ' + msg);
} catch (err) {
textArea.style.width = '';
textArea.style.height = '';
textArea.style.background = '#FFFFFF';
alert('<%= l('Hit Enter, then Ctrl+C to copy the short link') %>');
}
document.body.removeChild(textArea);
}
function build_message(success, msg) {
if(success) {
var thumb = (msg.thumb !== null) ? '<img class="pull-left thumbnail" alt="'+msg.filename+' thumbnail" src="'+msg.thumb+'">' : ''
return '<div class="alert alert-success"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>'
var thumb = (msg.thumb !== null) ? '<div class="col-sm-1"><img class="thumbnail img-responsive" alt="'+msg.filename+' thumbnail" src="'+msg.thumb+'"></div>' : ''
return '<div class="alert alert-success"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button><div class="row">'
+thumb
+'<div><strong>'
+'<div class="col-sm-11"><h4>'
+msg.filename
+'</strong>'
+tw_url(msg.short)
+'<ul class="list-unstyled"><li><i class="icon icon-eye" title="<%= l('View link') %>"></i>&nbsp;'
+'</h4>'
+'<form class="form"><div class="form-group"><label class="sr-only" for="view'+msg.real_short+'"><%= l('View link') %></label><div class="input-group col-sm-6"><div class="input-group-addon"><span class="icon icon-eye" title =" <%= l('View link') %>"></span></div><input type="text" class="form-control view-link-input" id="view'+msg.real_short+'" value="'
+link(msg.short, '')
+'</li><li><i class="markdown-mark-solid" title="<%= l('Markdown syntax') %>"></i>&nbsp;![](<%== url_for('/')->to_abs() %>'+msg.short+')'
+'</li><li><i class="icon icon-download" title="<%= l('Download link') %>"></i>&nbsp;'
+'" readonly><a href="#" onClick="copyToClipboard($(this));" class="input-group-addon" title="<%= l('Copy to clipboard') %>"><span class="icon icon-clipboard"></span></a></div></div><div class="form-group"><label class="sr-only" for="markdown'+msg.real_short+'"><%= l('Markdown syntax') %></label><div class="input-group col-sm-6"><div class="input-group-addon"><span class="markdown-mark-solid" title ="<%= l('Markdown syntax') %>"></span></div><input type="text" class="form-control" id="markdown'+msg.real_short+'" value="![]('
+link(msg.short, '')
+')" readonly><a href="#" onClick="copyToClipboard($(this));" class="input-group-addon" title="<%= l('Copy to clipboard') %>"><span class="icon icon-clipboard"></span></a></div></div><div class="form-group"><label class="sr-only" for="download'+msg.real_short+'"><%= l('Download link') %></label><div class="input-group col-sm-6"><div class="input-group-addon"><span class="icon icon-download" title ="<%= l('Download link') %>"></span></div><input type="text" class="form-control" id="download'+msg.real_short+'" value="'
+link(msg.short, 'dl')
+'</li><li><i class="icon icon-share" title="<%= l('Link for share on social networks') %>"></i>&nbsp;'
+'" readonly><a href="#" onClick="copyToClipboard($(this));" class="input-group-addon" title="<%= l('Copy to clipboard') %>"><span class="icon icon-clipboard"></span></a></div></div><div class="form-group"><label class="sr-only" for="share'+msg.real_short+'"><%= l('Link for share on social networks') %></label><div class="input-group col-sm-6"><div class="input-group-addon"><span class="icon icon-share" title ="<%= l('Link for share on social networks') %>"></span></div><input type="text" class="form-control" id="share'+msg.real_short+'" value="'
+link(msg.short, 't')
+'</li><li><i class="icon icon-trash" title="<%= l('Deletion link') %>"></i>&nbsp;'
+'" readonly><a href="#" onClick="copyToClipboard($(this));" class="input-group-addon" title="<%= l('Copy to clipboard') %>"><span class="icon icon-clipboard"></span></a></div></div><div class="form-group"><div class="input-group col-sm-6 col-xs-12"><span class="form-control-static">'
+link(msg.real_short, '', msg.token)
+'</li></ul><form class="form" role="form" method="POST" action="'
+'</span></div></div></form></div></div><div class="row"><form class="form col-sm-11 col-sm-offset-1" role="form" method="POST" action="'
+link(msg.real_short, '', msg.token, true)
+'"><div class="form-group form-inline"><select id="day-'+msg.real_short+'" name="delete-day" class="form-control">'
% for my $delay (qw/0 1 7 30 365/) {
@@ -91,7 +157,7 @@
+'</select>&nbsp;<div class="checkbox"><label><input id="first-view-'+msg.real_short+'" type="checkbox" name="first-view"> <%= l('Delete at first view?') %></label>'
+'</div>&nbsp;'
+'<a href="#" onclick="modify(\''+link(msg.real_short, '', msg.token, true)+'\', \''+msg.real_short+'\');return false;" class="btn btn-sm btn-default btn-primary"><%= l('Let\'s go!') %></a></div></form>'
+'</div>';
+'</div></div>';
} else {
return '<div class="alert alert-danger"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button><strong><%= l('Something bad happened') %></strong><br>'
+msg.filename
@@ -117,6 +183,9 @@
},
onUploadSuccess: function(id, data){
$('#'+id+'-div').remove();
if ($("#copy-all").length === 0) {
$(".messages").append('<div class="col-xs-12 col-sm-11 col-sm-offset-1"><a id="copy-all" href="#" class="btn btn-info" onClick="copyAllToClipboard();"><%= l('Copy all view links to clipboard') %></a></div>');
}
$(".messages").append(build_message(data.success, data.msg));
},
onUploadError: function(id, message){