diff --git a/README.md b/README.md index e69de29..b19a225 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,31 @@ +# Fichiers spécifiques au service LSTU - Couic + +Ces fichiers sont utiles lors d'une mise à jour du paquet Yunohost + +Modifications à apporter pour les mises à jour : + +Sauvegarder le fichier /var/www/lstu/lstu.conf : + +cp /var/www/lstu/lstu.conf /home/admin/services/lstu/lstu.conf.$(date +%Y%M%d-%H%M%S) + +Remplacer s'il a disparu le dossier 'viregul' dans `/var/www/lstu/themes` + + +Modifier le `/var/www/lstu/lstu.conf` + +``` +theme => 'viregul', # default or milligram +``` + +Réappliquer les droits correspondants + +``` +chown -R www-data /var/www/lstu/themes/viregul +``` +Et redémarrer le service : + +``` +systemctl reload lstu.service +``` + + diff --git a/viregul/Makefile b/viregul/Makefile new file mode 100644 index 0000000..8894375 --- /dev/null +++ b/viregul/Makefile @@ -0,0 +1,15 @@ +POT=lib/Lstu/I18N/milligram.pot +SEDOPTS=-e "s@SOME DESCRIPTIVE TITLE@Lstu language file@" \ + -e "s@YEAR THE PACKAGE'S COPYRIGHT HOLDER@2015 Luc Didry@" \ + -e "s@CHARSET@utf8@" \ + -e "s@the PACKAGE package@the Lstu package@" \ + -e '/^\#\. (/{N;/\n\#\. (/{N;/\n.*\.\.\/default\//{s/\#\..*\n.*\#\./\#. (/g}}}' \ + -e '/^\#\. (/{N;/\n.*\.\.\/default\//{s/\n/ /}}' +SEDOPTS2=-e '/^\#.*\.\.\/default\//,+3d' +XGETTEXT=carton exec ../../local/bin/xgettext.pl +CARTON=carton exec + +locales: + $(XGETTEXT) -D templates -D ../default/templates -o $(POT) 2>/dev/null + sed $(SEDOPTS) -i $(POT) + sed $(SEDOPTS2) -i $(POT) diff --git a/viregul/lib/Lstu/I18N.pm b/viregul/lib/Lstu/I18N.pm new file mode 100644 index 0000000..c261c9d --- /dev/null +++ b/viregul/lib/Lstu/I18N.pm @@ -0,0 +1,22 @@ +# vim:set sw=4 ts=4 sts=4 ft=perl expandtab: +package Lstu::I18N; + +use base 'Locale::Maketext'; +use File::Basename qw/dirname/; +use Locale::Maketext::Lexicon { + _auto => 1, + _decode => 1, + _style => 'gettext', + '*' => [ + Gettext => dirname(__FILE__) . '/I18N/*.po', + Gettext => $app_dir . 'themes/default/lib/Lstu/I18N/*.po', + ] +}; + +use vars qw($app_dir); +BEGIN { + use Cwd; + my $app_dir = getcwd; +} + +1; diff --git a/viregul/lib/Lstu/I18N/en.po b/viregul/lib/Lstu/I18N/en.po new file mode 100644 index 0000000..1ff14f3 --- /dev/null +++ b/viregul/lib/Lstu/I18N/en.po @@ -0,0 +1,18 @@ +# Lstu language file. +# Copyright (C) 2013 Luc Didry +# This file is distributed under the same license as the Lstu package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Lstu\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Luc Didry \n" +"Language-Team: English (http://www.transifex.com/projects/p/lstu/language/en/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en\n" + diff --git a/viregul/lib/Lstu/I18N/fr.po b/viregul/lib/Lstu/I18N/fr.po new file mode 100644 index 0000000..6746ee1 --- /dev/null +++ b/viregul/lib/Lstu/I18N/fr.po @@ -0,0 +1,17 @@ +# Lstu language file. +# Copyright (C) 2013 Luc Didry +# This file is distributed under the same license as the Lstu package. +# Luc Didry , 2015 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Lstu\n" +"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Luc \n" +"Language-Team: French (http://www.transifex.com/projects/p/lstu/language/fr/)" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf8\n" +"Content-Transfer-Encoding: 8bit\n" + diff --git a/viregul/lib/Lstu/I18N/milligram.pot b/viregul/lib/Lstu/I18N/milligram.pot new file mode 100644 index 0000000..0f390c4 --- /dev/null +++ b/viregul/lib/Lstu/I18N/milligram.pot @@ -0,0 +1,17 @@ +# Lstu language file. +# Copyright (C) 2015 Luc Didry +# This file is distributed under the same license as the Lstu package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\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 \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf8\n" +"Content-Transfer-Encoding: 8bit\n" + diff --git a/viregul/lib/Lstu/I18N/oc.po b/viregul/lib/Lstu/I18N/oc.po new file mode 100644 index 0000000..b1fa857 --- /dev/null +++ b/viregul/lib/Lstu/I18N/oc.po @@ -0,0 +1,17 @@ +# Lstu language file. +# Copyright (C) 2013 Luc Didry +# This file is distributed under the same license as the Lstu package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\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 \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf8\n" +"Content-Transfer-Encoding: 8bit\n" + diff --git a/viregul/public/css/lstu.css b/viregul/public/css/lstu.css new file mode 100644 index 0000000..b2d5ef8 --- /dev/null +++ b/viregul/public/css/lstu.css @@ -0,0 +1,53 @@ +@font-face { + font-family: 'Henny_Penny'; + font-style: normal; + font-weight: 400; + src: local('Henny Penny'), local('HennyPenny-Regular'), url('../font/hennypenny.woff2') format('woff2'); +} +body { + padding-top: 40px; + padding-bottom: 40px; +} +.container { + padding: 15px; + margin: 0 auto; +} +.hennypenny { + font-family: 'Henny_Penny', cursive; + font-size: 42px; +} +.link_nocol, .link_nocol:hover { + color: #000; + text-decoration: none; +} +.result { + border-color: #d6e9c6; + padding: 15px; + margin-bottom: 20px; + border: 1px solid; + border-radius: 4px; +} +.result a.button { + padding: 0; +} +ul.pager { + list-style: none outside; + text-align: center; +} +ul.pager li { + display: inline; +} +.disabled { + display: none !important; +} +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +.qrcode-result { + float: right; +} +dd > strong { + padding-left: 15px; +} diff --git a/viregul/public/css/lstu.min.css b/viregul/public/css/lstu.min.css new file mode 100644 index 0000000..d362d98 --- /dev/null +++ b/viregul/public/css/lstu.min.css @@ -0,0 +1 @@ +@font-face{font-family:Henny_Penny;font-style:normal;font-weight:400;src:local('Henny Penny'),local('HennyPenny-Regular'),url(../font/hennypenny.woff2) format('woff2')}body{padding-top:40px;padding-bottom:40px}.container{padding:15px;margin:0 auto}.hennypenny{font-family:Henny_Penny,cursive;font-size:42px}.link_nocol,.link_nocol:hover{color:#000;text-decoration:none}.result{border-color:#d6e9c6;padding:15px;margin-bottom:20px;border:1px solid;border-radius:4px}.result a.button{padding:0}ul.pager{list-style:none outside;text-align:center}ul.pager li{display:inline}.disabled{display:none!important}@media (max-width:767px){.hidden-xs{display:none!important}}.qrcode-result{float:right} diff --git a/viregul/public/css/milli-lstu.min.css b/viregul/public/css/milli-lstu.min.css new file mode 100644 index 0000000..c91d176 --- /dev/null +++ b/viregul/public/css/milli-lstu.min.css @@ -0,0 +1,13 @@ +/*! + * Milligram v1.2.0 + * http://milligram.github.io + * + * Copyright (c) 2016 CJ Patoilo + * Licensed under the MIT license +*/ +html{box-sizing:border-box;font-size:62.5%}body{color:#606c76;font-family:'Roboto','Helvetica Neue','Helvetica','Arial',sans-serif;font-size:1.6em;font-weight:300;letter-spacing:.01em;line-height:1.6;padding-top:40px;padding-bottom:40px}*,:after,:before{box-sizing:inherit}blockquote{border-left:.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote :last-child{margin-bottom:0}.button,button,input[type=button],input[type=reset],input[type=submit]{background-color:#9b4dca;border:.1rem solid #9b4dca;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type=button][disabled]:focus,input[type=button][disabled]:hover,input[type=reset][disabled]:focus,input[type=reset][disabled]:hover,input[type=submit][disabled]:focus,input[type=submit][disabled]:hover{background-color:#9b4dca;border-color:#9b4dca}.button.button-outline,button.button-outline,input[type=button].button-outline,input[type=reset].button-outline,input[type=submit].button-outline{background-color:transparent;color:#9b4dca}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type=button].button-outline:focus,input[type=button].button-outline:hover,input[type=reset].button-outline:focus,input[type=reset].button-outline:hover,input[type=submit].button-outline:focus,input[type=submit].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type=button].button-outline[disabled]:focus,input[type=button].button-outline[disabled]:hover,input[type=reset].button-outline[disabled]:focus,input[type=reset].button-outline[disabled]:hover,input[type=submit].button-outline[disabled]:focus,input[type=submit].button-outline[disabled]:hover{border-color:inherit;color:#9b4dca}.button.button-clear,button.button-clear,input[type=button].button-clear,input[type=reset].button-clear,input[type=submit].button-clear{background-color:transparent;border-color:transparent;color:#9b4dca}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type=button].button-clear:focus,input[type=button].button-clear:hover,input[type=reset].button-clear:focus,input[type=reset].button-clear:hover,input[type=submit].button-clear:focus,input[type=submit].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type=button].button-clear[disabled]:focus,input[type=button].button-clear[disabled]:hover,input[type=reset].button-clear[disabled]:focus,input[type=reset].button-clear[disabled]:hover,input[type=submit].button-clear[disabled]:focus,input[type=submit].button-clear[disabled]:hover{color:#9b4dca}code,pre{background:#f4f5f6}code{border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}pre{border-left:.3rem solid #9b4dca}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:.1rem solid #f4f5f6;margin:3rem 0}input[type=email],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1rem;width:100%}input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,select:focus,textarea:focus{border-color:#9b4dca;outline:0}select{background:url('data:image/svg+xml;utf8,') center right no-repeat;padding-right:3rem}select:focus{background-image:url('data:image/svg+xml;utf8,')}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type=checkbox],input[type=radio],ul.pager li{display:inline}.label-inline{display:inline-block;font-weight:400;margin-left:.5rem}.container{max-width:112rem;padding:0 2rem;position:relative;width:100%}.row{display:flex;flex-direction:column;width:100%}.result a.button,.row,.row.row-no-padding,.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{-ms-grid-row-align:center;align-self:center}@media (min-width:40rem){.row{flex-direction:row;margin-left:-1rem;width:calc(100% + 2rem)}.row .column{margin-bottom:inherit;padding:0 1rem}}a{color:#9b4dca;text-decoration:none}a:focus,a:hover{color:#606c76}dl{list-style:none}dl,ol,ul{margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{width:100%}td,th{border-bottom:.1rem solid #e1e1e1;padding:1.2rem 1.5rem;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}p{margin-top:0}h1,h2,h3,h6{letter-spacing:-.1rem}h1,h2,h3,h4,h5,h6{font-weight:300;margin-bottom:2rem;margin-top:0}h1{font-size:4rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:3rem;line-height:1.3}h4{font-size:2.4rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;letter-spacing:0;line-height:1.4}@media (min-width:40rem){h1{font-size:5rem}h2{font-size:4.2rem}h3{font-size:3.6rem}h4{font-size:3rem}h5{font-size:2.4rem}h6{font-size:1.5rem}}img{max-width:100%}.clearfix:after{clear:both;content:' ';display:table}.float-left{float:left}.float-right{float:right}@font-face{font-family:'Henny_Penny';font-style:normal;font-weight:400;src:local('Henny Penny'),local('HennyPenny-Regular'),url(../font/hennypenny.woff2) format('woff2')}.container{padding:15px;margin:0 auto}.hennypenny{font-family:'Henny_Penny',cursive;font-size:42px}.link_nocol,.link_nocol:hover{color:#000;text-decoration:none}.result{padding:15px;margin-bottom:20px;border:1px solid;border-radius:4px}ul.pager{list-style:none outside;text-align:center}.disabled{display:none!important}@media (max-width:767px){.hidden-xs{display:none!important}}.qrcode-result{float:right}dd>strong{padding-left:15px}@font-face{font-family:'fontelico';src:url(../font/fontelico.eot?21941692);src:url(../font/fontelico.eot?21941692#iefix) format('embedded-opentype'),url(../font/fontelico.woff2?21941692) format('woff2'),url(../font/fontelico.woff?21941692) format('woff'),url(../font/fontelico.ttf?21941692) format('truetype'),url(../font/fontelico.svg?21941692#fontelico) format('svg');font-weight:400;font-style:normal}[class*=" icon-"]:before,[class^=icon-]:before{font-family:"fontelico";font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;margin-left:.2em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-clipboard:before{content:'\e800'}.icon-trash:before{content:'\e804'} + +.float-left.hidden-xs.logo { + padding-right: 20px; +} + diff --git a/viregul/public/css/milligram.min.css b/viregul/public/css/milligram.min.css new file mode 100644 index 0000000..e0b223f --- /dev/null +++ b/viregul/public/css/milligram.min.css @@ -0,0 +1,11 @@ +/*! + * Milligram v1.2.0 + * http://milligram.github.io + * + * Copyright (c) 2016 CJ Patoilo + * Licensed under the MIT license +*/ + +html{box-sizing:border-box;font-size:62.5%}body{color:#606c76;font-family:'Roboto', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;font-size:1.6em;font-weight:300;letter-spacing:.01em;line-height:1.6}*,*:after,*:before{box-sizing:inherit}blockquote{border-left:0.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote *:last-child{margin-bottom:0}.button,button,input[type='button'],input[type='reset'],input[type='submit']{background-color:#9b4dca;border:0.1rem solid #9b4dca;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3.0rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type='button']:focus,input[type='button']:hover,input[type='reset']:focus,input[type='reset']:hover,input[type='submit']:focus,input[type='submit']:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type='button'][disabled],input[type='reset'][disabled],input[type='submit'][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type='button'][disabled]:focus,input[type='button'][disabled]:hover,input[type='reset'][disabled]:focus,input[type='reset'][disabled]:hover,input[type='submit'][disabled]:focus,input[type='submit'][disabled]:hover{background-color:#9b4dca;border-color:#9b4dca}.button.button-outline,button.button-outline,input[type='button'].button-outline,input[type='reset'].button-outline,input[type='submit'].button-outline{background-color:transparent;color:#9b4dca}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type='button'].button-outline:focus,input[type='button'].button-outline:hover,input[type='reset'].button-outline:focus,input[type='reset'].button-outline:hover,input[type='submit'].button-outline:focus,input[type='submit'].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type='button'].button-outline[disabled]:focus,input[type='button'].button-outline[disabled]:hover,input[type='reset'].button-outline[disabled]:focus,input[type='reset'].button-outline[disabled]:hover,input[type='submit'].button-outline[disabled]:focus,input[type='submit'].button-outline[disabled]:hover{border-color:inherit;color:#9b4dca}.button.button-clear,button.button-clear,input[type='button'].button-clear,input[type='reset'].button-clear,input[type='submit'].button-clear{background-color:transparent;border-color:transparent;color:#9b4dca}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type='button'].button-clear:focus,input[type='button'].button-clear:hover,input[type='reset'].button-clear:focus,input[type='reset'].button-clear:hover,input[type='submit'].button-clear:focus,input[type='submit'].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type='button'].button-clear[disabled]:focus,input[type='button'].button-clear[disabled]:hover,input[type='reset'].button-clear[disabled]:focus,input[type='reset'].button-clear[disabled]:hover,input[type='submit'].button-clear[disabled]:focus,input[type='submit'].button-clear[disabled]:hover{color:#9b4dca}code{background:#f4f5f6;border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}pre{background:#f4f5f6;border-left:0.3rem solid #9b4dca}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:0.1rem solid #f4f5f6;margin:3.0rem 0}input[type='email'],input[type='number'],input[type='password'],input[type='search'],input[type='tel'],input[type='text'],input[type='url'],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1.0rem;width:100%}input[type='email']:focus,input[type='number']:focus,input[type='password']:focus,input[type='search']:focus,input[type='tel']:focus,input[type='text']:focus,input[type='url']:focus,textarea:focus,select:focus{border-color:#9b4dca;outline:0}select{background:url('data:image/svg+xml;utf8,') center right no-repeat;padding-right:3.0rem}select:focus{background-image:url('data:image/svg+xml;utf8,')}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type='checkbox'],input[type='radio']{display:inline}.label-inline{display:inline-block;font-weight:normal;margin-left:.5rem}.container{margin:0 auto;max-width:112.0rem;padding:0 2.0rem;position:relative;width:100%}.row{display:flex;flex-direction:column;padding:0;width:100%}.row.row-no-padding{padding:0}.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{-ms-grid-row-align:center;align-self:center}@media (min-width: 40rem){.row{flex-direction:row;margin-left:-1.0rem;width:calc(100% + 2.0rem)}.row .column{margin-bottom:inherit;padding:0 1.0rem}}a{color:#9b4dca;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3.0rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1.0rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{width:100%}td,th{border-bottom:0.1rem solid #e1e1e1;padding:1.2rem 1.5rem;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2.0rem;margin-top:0}h1{font-size:4.0rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:3.0rem;line-height:1.3}h4{font-size:2.4rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;letter-spacing:0;line-height:1.4}@media (min-width: 40rem){h1{font-size:5.0rem}h2{font-size:4.2rem}h3{font-size:3.6rem}h4{font-size:3.0rem}h5{font-size:2.4rem}h6{font-size:1.5rem}}img{max-width:100%}.clearfix:after{clear:both;content:' ';display:table}.float-left{float:left}.float-right{float:right} + +/*# sourceMappingURL=milligram.min.css.map */ \ No newline at end of file diff --git a/viregul/public/css/milligram.min.css.map b/viregul/public/css/milligram.min.css.map new file mode 100644 index 0000000..cb36d6e --- /dev/null +++ b/viregul/public/css/milligram.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["milligram.min.css"],"names":[],"mappings":"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","file":"milligram.min.css","sourcesContent":["html{box-sizing:border-box;font-size:62.5%}body{color:#606c76;font-family:'Roboto', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;font-size:1.6em;font-weight:300;letter-spacing:.01em;line-height:1.6}*,*:after,*:before{box-sizing:inherit}blockquote{border-left:0.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote *:last-child{margin-bottom:0}.button,button,input[type='button'],input[type='reset'],input[type='submit']{background-color:#9b4dca;border:0.1rem solid #9b4dca;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3.0rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type='button']:focus,input[type='button']:hover,input[type='reset']:focus,input[type='reset']:hover,input[type='submit']:focus,input[type='submit']:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type='button'][disabled],input[type='reset'][disabled],input[type='submit'][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type='button'][disabled]:focus,input[type='button'][disabled]:hover,input[type='reset'][disabled]:focus,input[type='reset'][disabled]:hover,input[type='submit'][disabled]:focus,input[type='submit'][disabled]:hover{background-color:#9b4dca;border-color:#9b4dca}.button.button-outline,button.button-outline,input[type='button'].button-outline,input[type='reset'].button-outline,input[type='submit'].button-outline{background-color:transparent;color:#9b4dca}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type='button'].button-outline:focus,input[type='button'].button-outline:hover,input[type='reset'].button-outline:focus,input[type='reset'].button-outline:hover,input[type='submit'].button-outline:focus,input[type='submit'].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type='button'].button-outline[disabled]:focus,input[type='button'].button-outline[disabled]:hover,input[type='reset'].button-outline[disabled]:focus,input[type='reset'].button-outline[disabled]:hover,input[type='submit'].button-outline[disabled]:focus,input[type='submit'].button-outline[disabled]:hover{border-color:inherit;color:#9b4dca}.button.button-clear,button.button-clear,input[type='button'].button-clear,input[type='reset'].button-clear,input[type='submit'].button-clear{background-color:transparent;border-color:transparent;color:#9b4dca}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type='button'].button-clear:focus,input[type='button'].button-clear:hover,input[type='reset'].button-clear:focus,input[type='reset'].button-clear:hover,input[type='submit'].button-clear:focus,input[type='submit'].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type='button'].button-clear[disabled]:focus,input[type='button'].button-clear[disabled]:hover,input[type='reset'].button-clear[disabled]:focus,input[type='reset'].button-clear[disabled]:hover,input[type='submit'].button-clear[disabled]:focus,input[type='submit'].button-clear[disabled]:hover{color:#9b4dca}code{background:#f4f5f6;border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}pre{background:#f4f5f6;border-left:0.3rem solid #9b4dca}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:0.1rem solid #f4f5f6;margin:3.0rem 0}input[type='email'],input[type='number'],input[type='password'],input[type='search'],input[type='tel'],input[type='text'],input[type='url'],textarea,select{appearance:none;background-color:transparent;border:0.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1.0rem;width:100%}input[type='email']:focus,input[type='number']:focus,input[type='password']:focus,input[type='search']:focus,input[type='tel']:focus,input[type='text']:focus,input[type='url']:focus,textarea:focus,select:focus{border-color:#9b4dca;outline:0}select{background:url('data:image/svg+xml;utf8,') center right no-repeat;padding-right:3.0rem}select:focus{background-image:url('data:image/svg+xml;utf8,')}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type='checkbox'],input[type='radio']{display:inline}.label-inline{display:inline-block;font-weight:normal;margin-left:.5rem}.container{margin:0 auto;max-width:112.0rem;padding:0 2.0rem;position:relative;width:100%}.row{display:flex;flex-direction:column;padding:0;width:100%}.row.row-no-padding{padding:0}.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{align-self:center}@media (min-width: 40rem){.row{flex-direction:row;margin-left:-1.0rem;width:calc(100% + 2.0rem)}.row .column{margin-bottom:inherit;padding:0 1.0rem}}a{color:#9b4dca;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3.0rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1.0rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{width:100%}td,th{border-bottom:0.1rem solid #e1e1e1;padding:1.2rem 1.5rem;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2.0rem;margin-top:0}h1{font-size:4.0rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:3.0rem;line-height:1.3}h4{font-size:2.4rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;letter-spacing:0;line-height:1.4}@media (min-width: 40rem){h1{font-size:5.0rem}h2{font-size:4.2rem}h3{font-size:3.6rem}h4{font-size:3.0rem}h5{font-size:2.4rem}h6{font-size:1.5rem}}img{max-width:100%}.clearfix:after{clear:both;content:' ';display:table}.float-left{float:left}.float-right{float:right}\n"]} \ No newline at end of file diff --git a/viregul/public/img/favicon.png b/viregul/public/img/favicon.png new file mode 100644 index 0000000..2ce922b Binary files /dev/null and b/viregul/public/img/favicon.png differ diff --git a/viregul/public/img/lstuviregul.png b/viregul/public/img/lstuviregul.png new file mode 100644 index 0000000..600d461 Binary files /dev/null and b/viregul/public/img/lstuviregul.png differ diff --git a/viregul/templates/index.html.ep b/viregul/templates/index.html.ep new file mode 100644 index 0000000..d562e5b --- /dev/null +++ b/viregul/templates/index.html.ep @@ -0,0 +1,26 @@ +% # vim:set sw=4 ts=4 sts=4 ft=html.epl expandtab: +% title 'Lstu'; +
+
+ + + + + <%= submit_button l('Go!'), class => 'button' %> +
+
+ +% if (defined(stash('short')) && defined(stash('url'))) { +
+ QRCode + + ⟹ +
+% } +% if (defined(flash('msg'))) { +

<%= flash('msg') %>

+% } +% if (defined(stash('msg'))) { +

<%= stash('msg') %>

+% } diff --git a/viregul/templates/layouts/default.html.ep b/viregul/templates/layouts/default.html.ep new file mode 100644 index 0000000..8c773df --- /dev/null +++ b/viregul/templates/layouts/default.html.ep @@ -0,0 +1,59 @@ +% # vim:set sw=4 ts=4 sts=4 ft=html.epl expandtab: +% my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(); +% $year += 1900; + + + + <%= title %> + + + + + + + + + + + + + + + +
+ + <%= link_to url_for('/') => (class => 'link_nocol') => begin %>

Et couic, le lien !

<% end %> +

+ © 2013 — <%= $year %> <%= link_to 'Luc Didry' => 'https://fiat-tux.fr' %> — + <%= l('License:') %> <%= link_to 'WTFPL' => 'http://www.wtfpl.net/' %> — + <%= link_to l('About') => 'https://framagit.org/luc/lstu/blob/master/README.md' %> — + <%= link_to 'API' => url_for('api') %> — + % if (defined(config('ldap')) || defined(config('htpasswd'))) { + % if (is_user_authenticated()) { + <%= link_to l('Statistics') => url_for('stats') %> — + <%= link_to l('Logout') => url_for('/logout')%> + % } else { + <%= link_to l('Signin') => url_for('/login') %> + % } + % } else { + <%= link_to l('Statistics') => url_for('stats') %> + % } + — <%= link_to l('Browser extensions') => url_for('extensions') %> + +

+ <%= content %> +
+ % if ($self->app->mode eq 'production') { + %= stylesheet '/css/milli-lstu.min.css' + % } else { + %= stylesheet '/css/milligram.min.css' + %= stylesheet '/css/lstu.css' + %= stylesheet '/css/fontelico.css' + % } +% if (defined(stash('short')) && defined(stash('url'))) { + %= javascript url_for('lstu.js') +% } + + diff --git a/viregul/templates/stats.html.ep b/viregul/templates/stats.html.ep new file mode 100644 index 0000000..a904454 --- /dev/null +++ b/viregul/templates/stats.html.ep @@ -0,0 +1,86 @@ +% # vim:set sw=4 ts=4 sts=4 ft=html.epl expandtab: +% title 'Lstu stats'; +% use Mojo::Date; +

<%= l('Statistics') %>

+% if (defined(config('adminpwd')) || defined(config('hashed_adminpwd'))) { +% if (!flash('banned')) { +
+
+% if (defined(stash('admin'))) { + + <%= submit_button l('Logout from admin stats'), class => 'button' %> +% } else { + + + + <%= submit_button l('Go!'), class => 'button' %> +% } +
+
+% } +% if (defined(flash('msg'))) { +

<%= flash('msg') %>

+% } +% } + +% if (defined(flash('success_msg'))) { +

<%= flash('success_msg') %>

+% } +
+
+ + +
+ <%= submit_button l('Import URLs'), class => 'button' %> + <%= l('Export your URLs') %> +
+ + + + + + + + +% if (defined(config('adminpwd')) || defined(config('hashed_adminpwd'))) { +% unless (defined(stash('admin'))) { + +% } else { + +% } +% } + +% my $i = 1; +% if (defined(stash('page')) && stash('page') >= 0) { +% $i = 1 + config('page_offset') * stash('page'); +% } +% my $j = $i; +% for my $url (@{$urls}) { + + + + + + +% if (defined(config('adminpwd')) || defined(config('hashed_adminpwd'))) { +% unless (defined(stash('admin'))) { + +% } else { + +% } +% } + +% } +
#<%= l('URL') %><%= l('Shortened URL') %><%= l('Counter') %><%= l('Created') %><%= l('QRCode') %><%= l('Delete') %>
<%= $i++ %><%= link_to $url->{url} => $url->{url} %><%= link_to $prefix.$url->{short} => $prefix.$url->{short} %><%= $url->{counter} %><%= Mojo::Date->new($url->{timestamp})->to_string %>QRCode
+% if (defined(config('adminpwd')) || defined(config('hashed_adminpwd'))) { +% if (defined(stash('admin'))) { + +% } +% } +%= link_to l('Home') => '/' => (class => 'button')