From f2baf273cab00471874b209afbbc210de01afcda Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Tue, 8 Jul 2014 23:24:50 +0200 Subject: [PATCH] Webapp development, trying to send the image Image sending is ok, but for some unknown reason, we can't have status message displayed once upload is complete. --- lib/Lutim.pm | 4 ++ lib/Lutim/Controller.pm | 13 ++++++ lib/Lutim/I18N/en.pm | 1 + lib/Lutim/I18N/fr.pm | 1 + public/css/lutim.css | 19 +++++++-- public/img/lutim128.png | Bin 22205 -> 16011 bytes public/img/rocket.png | Bin 0 -> 509 bytes templates/index.html.ep | 63 +++++++++++++++++++++++++++++- templates/layouts/default.html.ep | 41 ++++++++----------- 9 files changed, 113 insertions(+), 29 deletions(-) create mode 100644 public/img/rocket.png diff --git a/lib/Lutim.pm b/lib/Lutim.pm index 4d155c5..1b88463 100644 --- a/lib/Lutim.pm +++ b/lib/Lutim.pm @@ -321,6 +321,10 @@ sub startup { to('Controller#stats')-> name('stats'); + $r->get('/manifest.webapp')-> + to('Controller#webapp')-> + name('manifest.webapp'); + $r->post('/')-> to('Controller#add')-> name('add'); diff --git a/lib/Lutim/Controller.pm b/lib/Lutim/Controller.pm index d2b9b6d..494cc05 100644 --- a/lib/Lutim/Controller.pm +++ b/lib/Lutim/Controller.pm @@ -46,6 +46,19 @@ sub stats { ); } +sub webapp { + my $c = shift; + + my $headers = Mojo::Headers->new(); + $headers->add('Content-Type' => 'application/x-web-app-manifest+json'); + $c->res->content->headers($headers); + + $c->render( + template => 'manifest', + format => 'webapp' + ); +} + sub delete { my $c = shift; my $short = $c->param('short'); diff --git a/lib/Lutim/I18N/en.pm b/lib/Lutim/I18N/en.pm index 99f0e3e..89a7b96 100644 --- a/lib/Lutim/I18N/en.pm +++ b/lib/Lutim/I18N/en.pm @@ -82,6 +82,7 @@ our %Lexicon = ( '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.', + 'install_as_webapp' => 'Install webapp', ); 1; diff --git a/lib/Lutim/I18N/fr.pm b/lib/Lutim/I18N/fr.pm index 9b57cb9..37d7065 100644 --- a/lib/Lutim/I18N/fr.pm +++ b/lib/Lutim/I18N/fr.pm @@ -82,6 +82,7 @@ our %Lexicon = ( '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.', + 'install_as_webapp' => 'Installer la webapp', ); 1; diff --git a/public/css/lutim.css b/public/css/lutim.css index 9929ca7..dd0bd25 100644 --- a/public/css/lutim.css +++ b/public/css/lutim.css @@ -1,6 +1,15 @@ -body { - padding-top: 40px; - padding-bottom: 40px; +@media (max-width: 767px) { + body { + padding-top: 5px; + padding-bottom: 5px; + } +} + +@media (min-width: 768px) { + body { + padding-top: 40px; + padding-bottom: 40px; + } } .container { @@ -32,3 +41,7 @@ label.always-encrypt { color: #000000; text-decoration: none; } + +#install-app img { + height: 22px; +} diff --git a/public/img/lutim128.png b/public/img/lutim128.png index c7f1d56abf596cbca2731eca2ea999bb5cd5c582..392d4466c002cb8f72b925c953b1b1801528ccb3 100644 GIT binary patch literal 16011 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 QP5=M^07*qoM6N<$g6lGhwg3PC diff --git a/public/img/rocket.png b/public/img/rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..f855a029a16f28c588d6893fef6ffea0a86a6d5d GIT binary patch literal 509 zcmeAS@N?(olHy`uVBq!ia0vp^#z5@L!3-pA!q=<>2?Y3rxB_V_D;tu~*&U6~f!YL0 zg8YIR8urf@a7Z}+-az60`u>1|S$um^85kHdJzX3_D&pQ=zdNZ}frmB0!R5*MJ^wGS zyBu|HmA2=)?a$Bo?Qe9OD|f~@YS|{KP_(uD6H{jppD}tE}v*+*XoL9+G5H6vD68r7zrVSknLf z{WT^Q=B7v4zvu5~Y}zT5Ts^VKz+v~!4xzoP6>px`F zx*2q_c#3+PmdVr!p&3FQ!E%g-nO9$~k*JjVwcCbK-Iuj%ieroCXXPJ^F1(F}_u3-d Qff2&s>FVdQ&MBb@0ElnYz5oCK literal 0 HcmV?d00001 diff --git a/templates/index.html.ep b/templates/index.html.ep index eb93da4..7783053 100644 --- a/templates/index.html.ep +++ b/templates/index.html.ep @@ -122,7 +122,7 @@
@@ -191,7 +191,6 @@ $('#'+id).prop('aria-valuenow', percent); $('#'+id).prop('style', 'width: '+percent+'%;'); $('#'+id+'-text').html(percentStr); - }, onUploadSuccess: function(id, data){ $('#'+id+'-div').remove(); @@ -241,6 +240,66 @@ } } + function fileUpload(file) { + var fd = new FormData(); + fd.append('file', file); + + fd.append('format', 'json'); + fd.append('first-view', ($("#first-view").prop('checked')) ? 1 : 0); + fd.append('crypt', ($("#crypt").prop('checked')) ? 1 : 0); + fd.append('delete-day', ($("#delete-day").val())); + + $(".messages").append('
'+file.name+'
0%
'); + // Ajax Submit + $.ajax({ + url: '<%== url_for('add') %>', + type: 'POST', + dataType: 'json', + data: fd, + cache: false, + contentType: false, + processData: false, + forceSync: false, + xhr: function(){ + var xhrobj = $.ajaxSettings.xhr(); + if(xhrobj.upload){ + xhrobj.upload.addEventListener('progress', function(event) { + var percent = 0; + var position = event.loaded || event.position; + var total = event.total || e.totalSize; + if(event.lengthComputable){ + percent = Math.ceil(position / total * 100); + } + + var percentStr = ' '+percent+'%'; + $('#1').prop('aria-valuenow', percent); + $('#1').prop('style', 'width: '+percent+'%;'); + $('#1-text').html(percentStr); + }, false); + } + + return xhrobj; + }, + success: function (data, message, xhr){ + $('#1-div').remove(); + $(".messages").append(message(data.success, data.msg)); + }, + error: function (xhr, status, errMsg){ + $(".messages").append(message(false, '')); + }, + }); + } + window.onload = function() { + navigator.mozSetMessageHandler('activity', function handler(activityRequest) { + var activityName = activityRequest.source.name; + if (activityName == 'share') { + activity = activityRequest; + blob = activity.source.data.blobs[0]; + fileUpload(blob); + //blob = document.getElementById("lutim-file").value; + } + }); + }; $('document').ready(function() { var firstview = ($("#first-view").prop('checked')) ? 1 : 0; var deleteday = ($("#delete-day").prop('checked')) ? 1 : 0; diff --git a/templates/layouts/default.html.ep b/templates/layouts/default.html.ep index cc451c9..4a44aed 100644 --- a/templates/layouts/default.html.ep +++ b/templates/layouts/default.html.ep @@ -18,29 +18,6 @@ %= asset 'about.css' % } else { %= asset 'index.css' - - % } @@ -63,7 +40,8 @@ <%= link_to 'https://github.com/ldidry/lutim' => (title => l 'fork-me') => begin %><% end %>  <%= link_to $twitter_url => (title => l 'share-twitter') => begin %><% end %>  <%= link_to 'https://flattr.com/submit/auto?user_id=_SKy_&url='.$url.'&title=Lutim&category=software' => (title => 'Flattr this') => begin %><% end %>  - <%= link_to 'bitcoin:1K3n4MXNRSMHk28oTfXEvDunWFthePvd8v?label=lutim' => (title => 'Give Bitcoins') => begin %><% end %> + <%= link_to 'bitcoin:1K3n4MXNRSMHk28oTfXEvDunWFthePvd8v?label=lutim' => (title => 'Give Bitcoins') => begin %><% end %>  + mozilla rocket logo <%=l 'install_as_webapp' %>

@@ -82,6 +60,21 @@ % } elsif (!(current_route 'about')) { %= asset 'index.js' % } + %= javascript begin + $('#install-app').click(function() { + var manifestUrl = '<%== url_for('manifest.webapp')->to_abs() %>'; + var request = window.navigator.mozApps.install(manifestUrl); + request.onsuccess = function () { + // Save the App object that is returned + var appRecord = this.result; + //alert('Installation successful!'); + }; + request.onerror = function () { + // Display the error information from the DOMError object + alert('Install failed, error: ' + this.error.name); + }; + }); + % end <%= content %> % if (defined(config('piwik_img'))) {