diff --git a/Changes b/Changes
index caa14a8..64b4860 100644
--- a/Changes
+++ b/Changes
@@ -1,6 +1,8 @@
Revision history for Lutim
0.3 2014-
+ - Add a delete link to images (#28)
+ - Concatenated css and js with Mojolicious::Plugin::AssetPack
- Antiflood protection for the "Download by URL" feature (#29)
- Stats page improved
- Self-documented configuration template
diff --git a/README.md b/README.md
index 6513e84..79eb9c9 100644
--- a/README.md
+++ b/README.md
@@ -59,19 +59,20 @@ vi lutim.conf
The `lutim.conf.template` is self-documented but here is the options that you can set:
* hypnotoad: address and port to listen to, user and group which runs hypnotoad (if you run Lutim with a different user from what is defined here, be sure that the user which launchs hypnotoad is able to setuid/setgid to the defined user/group, otherwise it will not work and you'll have 100% CPU consumption. Launch hypnotoad with the root user or with the user which is defined here);
-* contact: write something which make people able to contact you (contact form URL, email address, whatever) ;
+* contact: write something which make people able to contact you (contact form URL, email address, whatever);
* secrets: an array of random string. Used by Mojolicious for encrypting session cookies.
-* piwik_img: the Piwik image provides you records of visits without javascript (better privacy than js and cookies) ;
-* length: length of the random string part of image's URL (default is 8) ;
-* provis_step: Lutim provisions random strings for image's URL per pack of `provis_step` (default is 5) ;
-* provisioning: number of random strings to provision (default is 100) ;
-* hosted_by: if someone hosts your Lutim instance, you can add some HTML (a logo for example) to make it appear on index page ;
-* tweet_card_via: a Twitter account which will appear on Twitter cards ;
-* max_file_size: well, this is explicit (default is 10Mio = 10485760 octets) ;
-* https: 1 if you want to provide secure images URLs (default is 0) DEPRECATED, PASS A `X-Forwarded-Proto` HEADER TO LUTIM FROM YOUR REVERSE PROXY INSTEAD ;
-* stats_day_num: when you generate statistics with `script/lutim cron stats`, you will have stats for the last `stats_day_num` days (default is 365) ;
-* keep_ip_during: when you delete IP addresses of image's senders with `script/lutim cron cleanbdd`, the IP addresses of images older than `keep_ip_during` days will be deleted (default is 365) ;
-* broadcast_message: put some string (not HTML) here and this message will be displayed on all Lutim pages (not in JSON responses) ;
+* piwik_img: the Piwik image provides you records of visits without javascript (better privacy than js and cookies);
+* length: length of the random string part of image's URL (default is 8);
+* provis_step: Lutim provisions random strings for image's URL per pack of `provis_step` (default is 5);
+* provisioning: number of random strings to provision (default is 100);
+* hosted_by: if someone hosts your Lutim instance, you can add some HTML (a logo for example) to make it appear on index page;
+* tweet_card_via: a Twitter account which will appear on Twitter cards;
+* max_file_size: well, this is explicit (default is 10Mio = 10485760 octets);
+* https: 1 if you want to provide secure images URLs (default is 0) DEPRECATED, PASS A `X-Forwarded-Proto` HEADER TO LUTIM FROM YOUR REVERSE PROXY INSTEAD;
+* token_length: length of the secret token used to allow people to delete their images when they want;
+* stats_day_num: when you generate statistics with `script/lutim cron stats`, you will have stats for the last `stats_day_num` days (default is 365);
+* keep_ip_during: when you delete IP addresses of image's senders with `script/lutim cron cleanbdd`, the IP addresses of images older than `keep_ip_during` days will be deleted (default is 365);
+* broadcast_message: put some string (not HTML) here and this message will be displayed on all Lutim pages (not in JSON responses);
* allowed_domains: array of authorized domains for API calls. Example: `['http://1.example.com', 'http://2.example.com']`. If you want to authorize everyone to use the API: `['\*']`.
* default_delay: what is the default time limit for files? Valid values are 0, 1, 7, 30 and 365;
* max_delay: if defined, the images will be deleted after that delay (in days), even if they were uploaded with "no delay" (or value superior to max_delay) option and a warning message will be displayed on homepage;
diff --git a/fontello-config.json b/fontello-config.json
new file mode 100644
index 0000000..d2a7a2b
--- /dev/null
+++ b/fontello-config.json
@@ -0,0 +1,58 @@
+{
+ "name": "",
+ "css_prefix_text": "icon-",
+ "css_use_suffix": false,
+ "hinting": true,
+ "units_per_em": 1000,
+ "ascent": 850,
+ "glyphs": [
+ {
+ "uid": "c5fd349cbd3d23e4ade333789c29c729",
+ "css": "eye",
+ "code": 59399,
+ "src": "fontawesome"
+ },
+ {
+ "uid": "9a76bc135eac17d2c8b8ad4a5774fc87",
+ "css": "download",
+ "code": 59397,
+ "src": "fontawesome"
+ },
+ {
+ "uid": "f48ae54adfb27d8ada53d0fd9e34ee10",
+ "css": "trash",
+ "code": 59396,
+ "src": "fontawesome"
+ },
+ {
+ "uid": "2cb15eb2b295ee3c33fab1530e18a924",
+ "css": "bitcoin",
+ "code": 59395,
+ "src": "fontawesome"
+ },
+ {
+ "uid": "0f6a2573a7b6df911ed199bb63717e27",
+ "css": "github-circled",
+ "code": 59393,
+ "src": "fontawesome"
+ },
+ {
+ "uid": "627abcdb627cb1789e009c08e2678ef9",
+ "css": "twitter",
+ "code": 59392,
+ "src": "fontawesome"
+ },
+ {
+ "uid": "fccd3ea0efb711b849045bee686b1ceb",
+ "css": "spinner",
+ "code": 59398,
+ "src": "mfglabs"
+ },
+ {
+ "uid": "c71d7db10ede1349b3a8ae0293b1dbf8",
+ "css": "flattr",
+ "code": 59394,
+ "src": "zocial"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/lib/Lutim.pm b/lib/Lutim.pm
index 0c91ce4..305b830 100644
--- a/lib/Lutim.pm
+++ b/lib/Lutim.pm
@@ -27,6 +27,7 @@ sub startup {
https => 0,
default_delay => 0,
max_delay => 0,
+ token_length => 24,
}
});
@@ -117,7 +118,8 @@ sub startup {
counter => 0,
enabled => 1,
delete_at_first_view => 0,
- delete_at_day => 0
+ delete_at_day => 0,
+ mod_token => $c->shortener($c->config->{token_length})
);
LutimModel->commit;
}
@@ -243,6 +245,15 @@ sub startup {
}
);
+ $self->helper(
+ delete_image => sub {
+ my $c = shift;
+ my $image = shift;
+ unlink $image->path();
+ $image->update(enabled => 0);
+ }
+ );
+
$self->hook(
before_dispatch => sub {
my $c = shift;
@@ -280,9 +291,9 @@ sub startup {
}
);
- $self->asset('index.css' => 'css/bootstrap.min.css', 'css/fontello.css', 'css/animation.css', 'css/uploader.css', 'css/hennypenny.css', 'css/lutim.css');
- $self->asset('stats.css' => 'css/bootstrap.min.css', 'css/fontello.css', 'css/animation.css', 'css/morris-0.4.3.min.css', 'css/hennypenny.css', 'css/lutim.css');
- $self->asset('about.css' => 'css/bootstrap.min.css', 'css/fontello.css', 'css/animation.css', 'css/hennypenny.css', 'css/lutim.css');
+ $self->asset('index.css' => 'css/bootstrap.min.css', 'css/fontello-embedded.css', 'css/animation.css', 'css/uploader.css', 'css/hennypenny.css', 'css/lutim.css');
+ $self->asset('stats.css' => 'css/bootstrap.min.css', 'css/fontello-embedded.css', 'css/animation.css', 'css/morris-0.4.3.min.css', 'css/hennypenny.css', 'css/lutim.css');
+ $self->asset('about.css' => 'css/bootstrap.min.css', 'css/fontello-embedded.css', 'css/animation.css', 'css/hennypenny.css', 'css/lutim.css');
$self->asset('index.js' => 'js/jquery-2.1.0.min.js', 'js/bootstrap.min.js', 'js/lutim.js', 'js/dmuploader.min.js');
$self->asset('stats.js' => 'js/jquery-2.1.0.min.js', 'js/bootstrap.min.js', 'js/lutim.js', 'js/raphael-min.js', 'js/morris-0.4.3.min.js', 'js/stats.js');
@@ -316,6 +327,10 @@ sub startup {
to('Controller#add')->
name('add');
+ $r->get('/d/:short/:token')->
+ to('Controller#delete')->
+ name('delete');
+
$r->get('/:short')->
to('Controller#short')->
name('short');
diff --git a/lib/Lutim/Controller.pm b/lib/Lutim/Controller.pm
index d7ea94d..d49050e 100644
--- a/lib/Lutim/Controller.pm
+++ b/lib/Lutim/Controller.pm
@@ -46,6 +46,41 @@ sub stats {
);
}
+sub delete {
+ my $c = shift;
+ my $short = $c->param('short');
+ my $token = $c->param('token');
+
+ my @images = LutimModel::Lutim->select('WHERE short = ? AND path IS NOT NULL', $short);
+ if (scalar(@images)) {
+ my $image = $images[0];
+ my $msg;
+ if ($image->mod_token() ne $token) {
+ $msg = $c->l('invalid_token');
+ } elsif ($image->enabled() == 0) {
+ $msg = $c->l('already_deleted', $image->filename);
+ } else {
+ $c->app->log->info('[DELETION] someone made '.$image->filename.' removed with token method (path: '.$image->path.')');
+
+ $c->delete_image($image);
+ $c->flash(
+ success => $c->l('image_deleted', $image->filename)
+ );
+ return $c->redirect_to('/');
+ }
+
+ $c->flash(
+ msg => $msg
+ );
+ return $c->redirect_to('/');
+ } else {
+ $c->app->log->info('[UNSUCCESSFUL] someone tried to delete '.$short.' but it does\'nt exist.');
+
+ # Image never existed
+ $c->render_not_found;
+ }
+}
+
sub add {
my $c = shift;
my $upload = $c->param('file');
@@ -133,7 +168,7 @@ sub add {
my $ip = $c->ip;
- my ($msg, $short, $thumb);
+ my ($msg, $short, $real_short, $token, $thumb);
# Check file type
if (index($mediatype, 'image/') >= 0) {
# Create directory if needed
@@ -190,8 +225,10 @@ sub add {
$c->app->log->info('[CREATION] '.$ip.' pushed '.$filename.' (path: '.$path.')');
# Give url to user
- $short = $records[0]->short;
- $short .= '/'.$key if (defined($key));
+ $short = $records[0]->short;
+ $real_short = $short;
+ $token = $records[0]->mod_token;
+ $short .= '/'.$key if (defined($key));
} else {
# Houston, we have a problem
$msg = $c->l('no_more_short', $c->config->{contact});
@@ -205,9 +242,11 @@ sub add {
if (defined($c->param('format')) && $c->param('format') eq 'json') {
if (defined($short)) {
$msg = {
- filename => $upload->filename,
- short => $short,
- thumb => $thumb
+ filename => $upload->filename,
+ short => $short,
+ real_short => $real_short,
+ token => $token,
+ thumb => $thumb
};
} else {
$msg = {
@@ -227,9 +266,11 @@ sub add {
$c->flash(filename => $upload->filename);
return $c->redirect_to('/');
} else {
- $c->stash(short => $short) if (defined($short));
- $c->stash(thumb => $thumb);
- $c->stash(filename => $upload->filename);
+ $c->stash(short => $short) if (defined($short));
+ $c->stash(real_short => $real_short);
+ $c->stash(token => $token);
+ $c->stash(thumb => $thumb);
+ $c->stash(filename => $upload->filename);
return $c->render(
template => 'index',
max_file_size => $c->req->max_message_size
@@ -270,8 +311,7 @@ sub short {
$c->app->log->info('[DELETION] someone tried to view '.$images[0]->filename.' but it has been removed by expiration (path: '.$images[0]->path.')');
# Delete image
- unlink $images[0]->path();
- $images[0]->update(enabled => 0);
+ $c->delete_image($images[0]);
# Warn user
$c->flash(
@@ -318,8 +358,7 @@ sub short {
$c->app->log->info('[DELETION] someone made '.$images[0]->filename.' removed (path: '.$images[0]->path.')');
# Delete image
- unlink $images[0]->path();
- $images[0]->update(enabled => 0);
+ $c->delete_image($images[0]);
}
});
}
diff --git a/lib/Lutim/I18N/en.pm b/lib/Lutim/I18N/en.pm
index 8df56f4..571c101 100644
--- a/lib/Lutim/I18N/en.pm
+++ b/lib/Lutim/I18N/en.pm
@@ -43,6 +43,7 @@ our %Lexicon = (
'view-link' => 'View link',
'download-link' => 'Download link',
'twitter-link' => 'Link for put in a tweet',
+ 'delete-link' => 'Deletion link',
'some-bad' => 'Something bad happened',
'delete-first' => 'Delete at first view?',
'delete-day' => 'Delete after 24 hours?',
@@ -52,7 +53,7 @@ our %Lexicon = (
'drag-n-drop' => 'Drag & drop images here',
'or' => '-or-',
'file-browser' => 'Click to open the file browser',
- 'image_not_found' => 'Unable to find the image',
+ 'image_not_found' => 'Unable to find the image: it has been deleted.',
'no_more_short' => 'There is no more available URL. Retry or contact the administrator. [_1]',
'no_valid_file' => 'The file [_1] is not an image.',
'file_too_big' => 'The file exceed the size limit ([_1])',
@@ -77,6 +78,9 @@ our %Lexicon = (
'max_delay' => 'Warning! The maximum time limit for an image is [_1] day(s), even if you choose "no time limit".',
'crypt_image' => 'Encrypt the image (Lutim does not keep the key).',
'always_encrypt' => 'The images are encrypted on the server (Lutim does not keep the key).',
+ 'image_deleted' => 'The image [_1] has been successfully deleted',
+ 'invalid_token' => 'The delete token is invalid.',
+ 'already_deleted' => 'The image [_1] has already been deleted.',
);
1;
diff --git a/lib/Lutim/I18N/fr.pm b/lib/Lutim/I18N/fr.pm
index 38d2255..75edc05 100644
--- a/lib/Lutim/I18N/fr.pm
+++ b/lib/Lutim/I18N/fr.pm
@@ -43,6 +43,7 @@ our %Lexicon = (
'view-link' => 'Lien d\'affichage',
'download-link' => 'Lien de téléchargement',
'twitter-link' => 'Lien pour mettre dans un tweet',
+ 'delete-link' => 'Lien de suppression',
'some-bad' => 'Un problème est survenu',
'delete-first' => 'Supprimer au premier accès ?',
'delete-day' => 'Supprimer après 24 heures ?',
@@ -52,7 +53,7 @@ our %Lexicon = (
'drag-n-drop' => 'Déposez vos images ici',
'or' => '-ou-',
'file-browser' => 'Cliquez pour utiliser le navigateur de fichier',
- 'image_not_found' => 'Impossible de trouver l\'image',
+ 'image_not_found' => 'Impossible de trouver l\'image : elle a été supprimée.',
'no_more_short' => 'Il n\'y a plus d\'URL disponible. Veuillez réessayer ou contactez l\'administrateur. [_1].',
'no_valid_file' => 'Le fichier [_1] n\'est pas une image.',
'file_too_big' => 'Le fichier dépasse la limite de taille ([_1])',
@@ -77,6 +78,9 @@ our %Lexicon = (
'max_delay' => 'Attention ! Le délai maximal de rétention d\'une image est de [_1] jour(s), même si vous choisissez « pas de limitation de durée ».',
'crypt_image' => 'Chiffrer l\'image (Lutim ne stocke pas la clé).',
'always_encrypt' => 'Les images sont chiffrées sur le serveur (Lutim ne stocke pas la clé).',
+ 'image_deleted' => 'L\'image [_1] a été supprimée avec succès.',
+ 'invalid_token' => 'Le jeton de suppression est invalide.',
+ 'already_deleted' => 'L\'image [_1] a déjà été supprimée.',
);
1;
diff --git a/lib/LutimModel.pm b/lib/LutimModel.pm
index de13662..2af27e4 100644
--- a/lib/LutimModel.pm
+++ b/lib/LutimModel.pm
@@ -20,7 +20,7 @@ use ORLite {
created_at INTEGER,
created_by TEXT,
last_access_at INTEGER,
- last_access_by INTEGER)'
+ mod_token TEXT)'
);
return 1;
}
diff --git a/lib/Mojolicious/Command/cron/cleanfiles.pm b/lib/Mojolicious/Command/cron/cleanfiles.pm
index 1190cf1..defebf0 100644
--- a/lib/Mojolicious/Command/cron/cleanfiles.pm
+++ b/lib/Mojolicious/Command/cron/cleanfiles.pm
@@ -13,8 +13,7 @@ sub run {
my @images = LutimModel::Lutim->select('WHERE enabled = 1 AND (delete_at_day * 86400) < (? - created_at) AND delete_at_day != 0', $time);
for my $image (@images) {
- $image->update(enabled => 0);
- unlink $image->path();
+ $c->app->delete_image($image);
}
my $config = $c->app->plugin('Config');
@@ -24,8 +23,7 @@ sub run {
@images = LutimModel::Lutim->select('WHERE enabled = 1 AND last_access_at < ?', $time);
for my $image (@images) {
- $image->update(enabled => 0);
- unlink $image->path();
+ $c->app->delete_image($image);
}
}
}
diff --git a/lutim.conf.template b/lutim.conf.template
index cfc3dcf..0860055 100644
--- a/lutim.conf.template
+++ b/lutim.conf.template
@@ -96,6 +96,10 @@
# optional, default is 0
#always_encrypt => 0,
+ # length of the image's delete token
+ # optional, default is 24
+ #token_length => 24,
+
##########################
# Lutim cron jobs settings
##########################
diff --git a/public/css/fontello-codes.css b/public/css/fontello-codes.css
index 2ba8222..6af589a 100644
--- a/public/css/fontello-codes.css
+++ b/public/css/fontello-codes.css
@@ -1,8 +1,9 @@
-.icon-eye:before { content: '\e806'; } /* '' */
-.icon-download:before { content: '\e804'; } /* '' */
-.icon-bitcoin:before { content: '\e802'; } /* '' */
-.icon-spinner:before { content: '\e805'; } /* '' */
-.icon-github-circled:before { content: '\e800'; } /* '' */
-.icon-touiteur:before { content: '\e801'; } /* '' */
-.icon-flattr:before { content: '\e803'; } /* '' */
\ No newline at end of file
+.icon-twitter:before { content: '\e800'; } /* '' */
+.icon-github-circled:before { content: '\e801'; } /* '' */
+.icon-flattr:before { content: '\e802'; } /* '' */
+.icon-bitcoin:before { content: '\e803'; } /* '' */
+.icon-trash:before { content: '\e804'; } /* '' */
+.icon-download:before { content: '\e805'; } /* '' */
+.icon-spinner:before { content: '\e806'; } /* '' */
+.icon-eye:before { content: '\e807'; } /* '' */
\ No newline at end of file
diff --git a/public/css/fontello-embedded.css b/public/css/fontello-embedded.css
index 5793455..4242dff 100644
--- a/public/css/fontello-embedded.css
+++ b/public/css/fontello-embedded.css
@@ -1,15 +1,15 @@
@font-face {
font-family: 'fontello';
- src: url('../font/fontello.eot?56781');
- src: url('../font/fontello.eot?56781#iefix') format('embedded-opentype'),
- url('../font/fontello.svg?56781#fontello') format('svg');
+ src: url('../font/fontello.eot?1320532');
+ src: url('../font/fontello.eot?1320532#iefix') format('embedded-opentype'),
+ url('../font/fontello.svg?1320532#fontello') format('svg');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'fontello';
- src: url('data:application/octet-stream;base64,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') format('woff'),
- url('data:application/octet-stream;base64,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') format('truetype');
+ src: url('data:application/octet-stream;base64,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') format('woff'),
+ url('data:application/octet-stream;base64,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BEOwgGJgILAAKyCKimEgsAJDYGQjsANDYWRQWLACQ2EbsANDYFmwAyWwgGJhIyAgsAQmI0ZhOBsjsAhDRrACJbAIQ0cjRyNhYCCwBEOwgGJgIyCwACsjsARDYLAAK7AFJWGwBSWwgGKwBCZhILAEJWBkI7ADJWBkUFghGyMhWSMgILAEJiNGYThZLbAyLLAAFiAgILAFJiAuRyNHI2EjPDgtsDMssAAWILAII0IgICBGI0ewACsjYTgtsDQssAAWsAMlsAIlRyNHI2GwAFRYLiA8IyEbsAIlsAIlRyNHI2EgsAUlsAQlRyNHI2GwBiWwBSVJsAIlYbABRWMjIFhiGyFZY7ABRWJgIy4jICA8ijgjIVktsDUssAAWILAIQyAuRyNHI2EgYLAgYGawgGIjICA8ijgtsDYsIyAuRrACJUZSWCA8WS6xJgEUKy2wNywjIC5GsAIlRlBYIDxZLrEmARQrLbA4LCMgLkawAiVGUlggPFkjIC5GsAIlRlBYIDxZLrEmARQrLbA5LLAwKyMgLkawAiVGUlggPFkusSYBFCstsDossDEriiAgPLAEI0KKOCMgLkawAiVGUlggPFkusSYBFCuwBEMusCYrLbA7LLAAFrAEJbAEJiAuRyNHI2GwBkUrIyA8IC4jOLEmARQrLbA8LLEIBCVCsAAWsAQlsAQlIC5HI0cjYSCwBCNCsAZFKyCwYFBYILBAUVizAiADIBuzAiYDGllCQiMgR7AEQ7CAYmAgsAArIIqKYSCwAkNgZCOwA0NhZFBYsAJDYRuwA0NgWbADJbCAYmGwAiVGYTgjIDwjOBshICBGI0ewACsjYTghWbEmARQrLbA9LLAwKy6xJgEUKy2wPiywMSshIyAgPLAEI0IjOLEmARQrsARDLrAmKy2wPyywABUgR7AAI0KyAAEBFRQTLrAsKi2wQCywABUgR7AAI0KyAAEBFRQTLrAsKi2wQSyxAAEUE7AtKi2wQiywLyotsEMssAAWRSMgLiBGiiNhOLEmARQrLbBELLAII0KwQystsEUssgAAPCstsEYssgABPCstsEcssgEAPCstsEgssgEBPCstsEkssgAAPSstsEossgABPSstsEsssgEAPSstsEwssgEBPSstsE0ssgAAOSstsE4ssgABOSstsE8ssgEAOSstsFAssgEBOSstsFEssgAAOystsFIssgABOystsFMssgEAOystsFQssgEBOystsFUssgAAPistsFYssgABPistsFcssgEAPistsFgssgEBPistsFkssgAAOistsFossgABOistsFsssgEAOistsFwssgEBOistsF0ssDIrLrEmARQrLbBeLLAyK7A2Ky2wXyywMiuwNystsGAssAAWsDIrsDgrLbBhLLAzKy6xJgEUKy2wYiywMyuwNistsGMssDMrsDcrLbBkLLAzK7A4Ky2wZSywNCsusSYBFCstsGYssDQrsDYrLbBnLLA0K7A3Ky2waCywNCuwOCstsGkssDUrLrEmARQrLbBqLLA1K7A2Ky2wayywNSuwNystsGwssDUrsDgrLbBtLCuwCGWwAyRQeLABFTAtAAAAS7gAyFJYsQEBjlm5CAAIAGMgsAEjRLADI3CyBCgJRVJEsgoCByqxBgFEsSQBiFFYsECIWLEGA0SxJgGIUVi4BACIWLEGAURZWVlZuAH/hbAEjbEFAEQAAA==') format('truetype');
}
/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
@@ -17,7 +17,7 @@
@media screen and (-webkit-min-device-pixel-ratio:0) {
@font-face {
font-family: 'fontello';
- src: url('../font/fontello.svg?56781#fontello') format('svg');
+ src: url('../font/fontello.svg?1320532#fontello') format('svg');
}
}
*/
@@ -52,10 +52,11 @@
/* Uncomment for 3D effect */
/* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
}
-.icon-eye:before { content: '\e806'; } /* '' */
-.icon-download:before { content: '\e804'; } /* '' */
-.icon-bitcoin:before { content: '\e802'; } /* '' */
-.icon-spinner:before { content: '\e805'; } /* '' */
-.icon-github-circled:before { content: '\e800'; } /* '' */
-.icon-touiteur:before { content: '\e801'; } /* '' */
-.icon-flattr:before { content: '\e803'; } /* '' */
\ No newline at end of file
+.icon-twitter:before { content: '\e800'; } /* '' */
+.icon-github-circled:before { content: '\e801'; } /* '' */
+.icon-flattr:before { content: '\e802'; } /* '' */
+.icon-bitcoin:before { content: '\e803'; } /* '' */
+.icon-trash:before { content: '\e804'; } /* '' */
+.icon-download:before { content: '\e805'; } /* '' */
+.icon-spinner:before { content: '\e806'; } /* '' */
+.icon-eye:before { content: '\e807'; } /* '' */
\ No newline at end of file
diff --git a/public/css/fontello-ie7-codes.css b/public/css/fontello-ie7-codes.css
index fdd3ca0..d9822a1 100644
--- a/public/css/fontello-ie7-codes.css
+++ b/public/css/fontello-ie7-codes.css
@@ -1,8 +1,9 @@
-.icon-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
-.icon-download { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
-.icon-bitcoin { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
-.icon-spinner { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
-.icon-github-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
-.icon-touiteur { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
-.icon-flattr { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
\ No newline at end of file
+.icon-twitter { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
+.icon-github-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
+.icon-flattr { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
+.icon-bitcoin { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
+.icon-trash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
+.icon-download { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
+.icon-spinner { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
+.icon-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
\ No newline at end of file
diff --git a/public/css/fontello-ie7.css b/public/css/fontello-ie7.css
index 5da3237..dcb157e 100644
--- a/public/css/fontello-ie7.css
+++ b/public/css/fontello-ie7.css
@@ -10,10 +10,11 @@
/* font-size: 120%; */
}
-.icon-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
-.icon-download { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
-.icon-bitcoin { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
-.icon-spinner { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
-.icon-github-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
-.icon-touiteur { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
-.icon-flattr { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
\ No newline at end of file
+.icon-twitter { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
+.icon-github-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
+.icon-flattr { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
+.icon-bitcoin { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
+.icon-trash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
+.icon-download { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
+.icon-spinner { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
+.icon-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
\ No newline at end of file
diff --git a/public/css/fontello.css b/public/css/fontello.css
index fc7f93c..2842004 100644
--- a/public/css/fontello.css
+++ b/public/css/fontello.css
@@ -1,10 +1,10 @@
@font-face {
font-family: 'fontello';
- src: url('../font/fontello.eot?69050751');
- src: url('../font/fontello.eot?69050751#iefix') format('embedded-opentype'),
- url('../font/fontello.woff?69050751') format('woff'),
- url('../font/fontello.ttf?69050751') format('truetype'),
- url('../font/fontello.svg?69050751#fontello') format('svg');
+ src: url('../font/fontello.eot?47445522');
+ src: url('../font/fontello.eot?47445522#iefix') format('embedded-opentype'),
+ url('../font/fontello.woff?47445522') format('woff'),
+ url('../font/fontello.ttf?47445522') format('truetype'),
+ url('../font/fontello.svg?47445522#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?69050751#fontello') format('svg');
+ src: url('../font/fontello.svg?47445522#fontello') format('svg');
}
}
*/
@@ -50,10 +50,11 @@
/* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
}
-.icon-eye:before { content: '\e806'; } /* '' */
-.icon-download:before { content: '\e804'; } /* '' */
-.icon-bitcoin:before { content: '\e802'; } /* '' */
-.icon-spinner:before { content: '\e805'; } /* '' */
-.icon-github-circled:before { content: '\e800'; } /* '' */
-.icon-touiteur:before { content: '\e801'; } /* '' */
-.icon-flattr:before { content: '\e803'; } /* '' */
\ No newline at end of file
+.icon-twitter:before { content: '\e800'; } /* '' */
+.icon-github-circled:before { content: '\e801'; } /* '' */
+.icon-flattr:before { content: '\e802'; } /* '' */
+.icon-bitcoin:before { content: '\e803'; } /* '' */
+.icon-trash:before { content: '\e804'; } /* '' */
+.icon-download:before { content: '\e805'; } /* '' */
+.icon-spinner:before { content: '\e806'; } /* '' */
+.icon-eye:before { content: '\e807'; } /* '' */
\ No newline at end of file
diff --git a/public/font/fontello.eot b/public/font/fontello.eot
index c1b4faa..995b74d 100644
Binary files a/public/font/fontello.eot and b/public/font/fontello.eot differ
diff --git a/public/font/fontello.svg b/public/font/fontello.svg
index 7efa36b..3b57dbd 100644
--- a/public/font/fontello.svg
+++ b/public/font/fontello.svg
@@ -6,13 +6,14 @@