Browse Source

Ajout thème Viregul

master
admin 1 month ago
parent
commit
d25933cb2d
17 changed files with 387 additions and 0 deletions
  1. +31
    -0
      README.md
  2. +15
    -0
      viregul/Makefile
  3. +22
    -0
      viregul/lib/Lstu/I18N.pm
  4. +18
    -0
      viregul/lib/Lstu/I18N/en.po
  5. +17
    -0
      viregul/lib/Lstu/I18N/fr.po
  6. +17
    -0
      viregul/lib/Lstu/I18N/milligram.pot
  7. +17
    -0
      viregul/lib/Lstu/I18N/oc.po
  8. +53
    -0
      viregul/public/css/lstu.css
  9. +1
    -0
      viregul/public/css/lstu.min.css
  10. +13
    -0
      viregul/public/css/milli-lstu.min.css
  11. +11
    -0
      viregul/public/css/milligram.min.css
  12. +1
    -0
      viregul/public/css/milligram.min.css.map
  13. BIN
      viregul/public/img/favicon.png
  14. BIN
      viregul/public/img/lstuviregul.png
  15. +26
    -0
      viregul/templates/index.html.ep
  16. +59
    -0
      viregul/templates/layouts/default.html.ep
  17. +86
    -0
      viregul/templates/stats.html.ep

+ 31
- 0
README.md View File

@@ -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
```



+ 15
- 0
viregul/Makefile View File

@@ -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)

+ 22
- 0
viregul/lib/Lstu/I18N.pm View File

@@ -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;

+ 18
- 0
viregul/lib/Lstu/I18N/en.po View File

@@ -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 <EMAIL@ADDRESS>, 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 <luc@didry.org>\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"


+ 17
- 0
viregul/lib/Lstu/I18N/fr.po View File

@@ -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 <luc@didry.org>, 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 <luc@fiat-tux.fr>\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"


+ 17
- 0
viregul/lib/Lstu/I18N/milligram.pot View File

@@ -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 <EMAIL@ADDRESS>, 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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf8\n"
"Content-Transfer-Encoding: 8bit\n"


+ 17
- 0
viregul/lib/Lstu/I18N/oc.po View File

@@ -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 <EMAIL@ADDRESS>, 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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf8\n"
"Content-Transfer-Encoding: 8bit\n"


+ 53
- 0
viregul/public/css/lstu.css View File

@@ -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;
}

+ 1
- 0
viregul/public/css/lstu.min.css View File

@@ -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}

+ 13
- 0
viregul/public/css/milli-lstu.min.css
File diff suppressed because it is too large
View File


+ 11
- 0
viregul/public/css/milligram.min.css
File diff suppressed because it is too large
View File


+ 1
- 0
viregul/public/css/milligram.min.css.map
File diff suppressed because it is too large
View File


BIN
viregul/public/img/favicon.png View File

Before After
Width: 75  |  Height: 75  |  Size: 19 KiB

BIN
viregul/public/img/lstuviregul.png View File

Before After
Width: 400  |  Height: 400  |  Size: 41 KiB

+ 26
- 0
viregul/templates/index.html.ep View File

@@ -0,0 +1,26 @@
% # vim:set sw=4 ts=4 sts=4 ft=html.epl expandtab:
% title 'Lstu';
<form class="form" method="POST" action="<%== url_for 'add' %>">
<fieldset>
<label class="sr-only" for="lsturl"><%= l('URL to shorten') %></label>
<input type="url" name="lsturl" id="lsturl" class="form-control" placeholder="<%= l('URL to shorten') %>" required>
<label class="sr-only" for="lsturl-custom"><%= l('Custom shortened text') %></label>
<input type="text" name="lsturl-custom" id="lsturl-custom" class="form-control" placeholder="<%= l('Custom shortened text') %>">
<%= submit_button l('Go!'), class => 'button' %>
</fieldset>
</form>

% if (defined(stash('short')) && defined(stash('url'))) {
<fieldset class="result">
<img class="qrcode-result" alt="QRCode" src="data:image/png;base64,<%= stash('qrcode') %>">
<label><%= link_to stash('url') => begin %><h4><%= stash('url') %></h4><%= end %></label>
⟹ <input id="input-short" value="<%== stash('short') %>" class="form-control">
<span id="js" class="hidden"><a href="#" id="clipboard" class="button button-clear" title="<%= l('Copy to clipboard') %>" data-short="<%== stash('short') %>"><h5><span class="icon icon-clipboard"></span></h5></a><span>
</fieldset>
% }
% if (defined(flash('msg'))) {
<h3 class="alert alert-danger"><%= flash('msg') %></h3>
% }
% if (defined(stash('msg'))) {
<h3 class="alert alert-danger"><%= stash('msg') %></h3>
% }

+ 59
- 0
viregul/templates/layouts/default.html.ep View File

@@ -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;
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta charset="utf-8" />
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="icon" type="image/png" href="<%= url_for('/img/favicon.png') %>">
<link rel="icon" sizes="128x128" href="<%= url_for('/img/lstu128.png') %>">
<link rel="icon" sizes="196x196" href="<%= url_for('/img/lstu196.png') %>">
<link rel="apple-touch-icon" href="<%= url_for('/img/lstu60.png') %>">
<link rel="apple-touch-icon" sizes="76x76" href="<%= url_for('/img/lstu76.png') %>">
<link rel="apple-touch-icon" sizes="120x120" href="<%= url_for('/img/lstu120.png') %>">
<link rel="apple-touch-icon" sizes="152x152" href="<%= url_for('/img/lstu152.png') %>">
<link rel="apple-touch-icon" sizes="128x128" href="<%= url_for('/img/lstu128.png') %>">
</head>
<body>
<div class="container">
<div class="float-left hidden-xs logo">
<img src="<%= url_for('/img/lstuviregul.png') %>" alt="lstu logo" width="100" height="100">
</div>
<%= link_to url_for('/') => (class => 'link_nocol') => begin %><h1 class="hennypenny">Et couic, le lien !</h1><% end %>
<p>
<small>&copy; 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') %>
</small>
</p>
<%= content %>
</div>
% 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')
% }
</body>
</html>

+ 86
- 0
viregul/templates/stats.html.ep View File

@@ -0,0 +1,86 @@
% # vim:set sw=4 ts=4 sts=4 ft=html.epl expandtab:
% title 'Lstu stats';
% use Mojo::Date;
<h2><%= l('Statistics') %></h2>
% if (defined(config('adminpwd')) || defined(config('hashed_adminpwd'))) {
% if (!flash('banned')) {
<form class="form" method="POST" action="<%== url_for 'stats' %>">
<fieldset>
% if (defined(stash('admin'))) {
<input type="hidden" value="logout" name="action">
<%= submit_button l('Logout from admin stats'), class => 'button' %>
% } else {
<label class="sr-only" for="adminpwd"><%= l('Admin password') %></label>
<input type="password" name="adminpwd" id="adminpwd" class="form-control" placeholder="<%= l('Admin password') %>" required>
<input type="hidden" value="0" name="page">
<%= submit_button l('Go!'), class => 'button' %>
% }
</fieldset>
</form>
% }
% if (defined(flash('msg'))) {
<h3 class="alert alert-danger"><%= flash('msg') %></h3>
% }
% }

% if (defined(flash('success_msg'))) {
<h3 class="alert alert-success"><%= flash('success_msg') %></h3>
% }
<form class="form" method="POST" action="<%== url_for 'import_cookie' %>" enctype="multipart/form-data">
<fieldset>
<label for="file"><%= l('Import URLs') %></label>
<input type="file" name="file" id="file" required>
</fieldset>
<%= submit_button l('Import URLs'), class => 'button' %>
<a href="<%= url_for 'export_cookie' %>" class="button button-outline"><%= l('Export your URLs') %></a>
</form>

<table class="table table-striped">
<tr>
<th>#</th>
<th><%= l('URL') %></th>
<th><%= l('Shortened URL') %></th>
<th><%= l('Counter') %></th>
<th><%= l('Created') %></th>
% if (defined(config('adminpwd')) || defined(config('hashed_adminpwd'))) {
% unless (defined(stash('admin'))) {
<th><%= l('QRCode') %></th>
% } else {
<th><%= l('Delete') %></th>
% }
% }
</tr>
% my $i = 1;
% if (defined(stash('page')) && stash('page') >= 0) {
% $i = 1 + config('page_offset') * stash('page');
% }
% my $j = $i;
% for my $url (@{$urls}) {
<tr>
<td><%= $i++ %></td>
<td><%= link_to $url->{url} => $url->{url} %></td>
<td><%= link_to $prefix.$url->{short} => $prefix.$url->{short} %></td>
<td><%= $url->{counter} %></td>
<td><%= Mojo::Date->new($url->{timestamp})->to_string %></td>
% if (defined(config('adminpwd')) || defined(config('hashed_adminpwd'))) {
% unless (defined(stash('admin'))) {
<td><img class="qrcode-stat" alt="QRCode" src="data:image/png;base64,<%= $url->{qrcode} %>"></td>
% } else {
<td><a href="<%= url_for('delete', {short => $url->{short}}) %>"><h5><span class="icon icon-trash"></span></h5></a></td>
% }
% }
</tr>
% }
</table>
% if (defined(config('adminpwd')) || defined(config('hashed_adminpwd'))) {
% if (defined(stash('admin'))) {
<nav>
<ul class="pager">
<li class="previous<%= (stash('first')) ? ' disabled' : '' %>"><%= link_to url_for->query(page => (stash('first')) ? 0 : stash('page') - 1) => begin %><span aria-hidden="true">&larr;</span> <%= l('Previous') %><% end %></li>
<li class="center"><%= $j.'-'.--$i.'/'.stash('total') %></li>
<li class="next<%= (stash('last')) ? ' disabled' : '' %>"><%= link_to url_for->query(page => (stash('last')) ? stash('page') : stash('page') + 1) => begin %><%= l('Next') %> <span aria-hidden="true">&rarr;</span><% end %></li>
</ul>
</nav>
% }
% }
%= link_to l('Home') => '/' => (class => 'button')

Loading…
Cancel
Save