suite
This commit is contained in:
parent
1ec3b38ae4
commit
767bed7998
@ -1,4 +1,6 @@
|
|||||||
@import "vendor/flipclock";
|
@import "vendor/flipclock";
|
||||||
@import "bootstrap";
|
@import "bootstrap";
|
||||||
|
|
||||||
@import "fontawesome/font-awesome";
|
@import "fontawesome/font-awesome";
|
||||||
|
|
||||||
|
|
||||||
|
@ -40,6 +40,32 @@ class Public::FileTunelDownloadsController < ApplicationController
|
|||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def download
|
||||||
|
@file_tunel_download = FileTunelDownload.where(:token => params[:id]).first
|
||||||
|
@file_tunel_send = @file_tunel_download.file_tunel_send
|
||||||
|
|
||||||
|
|
||||||
|
@data_to_send = File.open(@file_tunel_download.generate_pdf).read
|
||||||
|
|
||||||
|
|
||||||
|
params[:inline] = true
|
||||||
|
|
||||||
|
|
||||||
|
send_data @data_to_send, :filename =>"#{@file_tunel_download.token}.pdf" , :type => 'application/pdf',:disposition => (params[:inline] ? 'inline' : "attachment")
|
||||||
|
#render :inline => "y"
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def fili
|
||||||
|
@file_tunel_download = FileTunelDownload.where(:token => params[:id]).first
|
||||||
|
@file_tunel_send = @file_tunel_download.file_tunel_send
|
||||||
|
@file_tunel = @file_tunel_send.file_tunel
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -7,6 +7,12 @@ class FileTunelDownload < ApplicationRecord
|
|||||||
|
|
||||||
before_create { generate_token() }
|
before_create { generate_token() }
|
||||||
|
|
||||||
|
|
||||||
|
include ActionView::Helpers::NumberHelper
|
||||||
|
include ActionView::Helpers::TranslationHelper
|
||||||
|
include ActionView::Helpers::UrlHelper
|
||||||
|
|
||||||
|
|
||||||
def generate_token()
|
def generate_token()
|
||||||
begin
|
begin
|
||||||
self[:token] = SecureRandom.urlsafe_base64
|
self[:token] = SecureRandom.urlsafe_base64
|
||||||
@ -22,8 +28,67 @@ class FileTunelDownload < ApplicationRecord
|
|||||||
def send_mail_type(slug, element = nil)
|
def send_mail_type(slug, element = nil)
|
||||||
|
|
||||||
if self.file_tunel_send and self.file_tunel_send.file_tunel and mail_type = self.file_tunel_send.file_tunel.mail_types.where(:slug => slug).first
|
if self.file_tunel_send and self.file_tunel_send.file_tunel and mail_type = self.file_tunel_send.file_tunel.mail_types.where(:slug => slug).first
|
||||||
mail_hist = MailHist.generate_mail(:fr, mail_type, self.file_tunel_send.email, {:arguments => {:nom => self.name, :civilite => self.civilite, :nom => self.name, :prenom => self.firstname, :lien => self.lien }, :element => self})
|
mail_hist = MailHist.generate_mail(:fr, mail_type, self.file_tunel_send.email, {:arguments => {:nom => self.name, :civilite => self.civilite, :nom => self.name, :prenom => self.firstname, :lien => self.lien }, :element => self, :file_tunel => self.file_tunel_send.file_tunel})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def generate_pdf
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
doc_number = self.token
|
||||||
|
|
||||||
|
@temp_file = "#{Rails.root}/pdf/price_documents/#{doc_number}_temp.pdf"
|
||||||
|
@final_file = "#{Rails.root}/pdf/price_documents/#{doc_number}_temp2.pdf"
|
||||||
|
@final_file2 = "#{Rails.root}/pdf/price_documents/#{doc_number}.pdf"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
require 'posix/spawn'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#::POSIX::Spawn::Child.new 'pdftk', @temp_file, 'stamp', "#{Rails.root}/pdf_stamp/en-tete.pdf", 'output', @final_file
|
||||||
|
|
||||||
|
files = []
|
||||||
|
|
||||||
|
self.file_tunel_send.file_tunel.file_tunel_files.order("position ASC").each do |f|
|
||||||
|
files << f.file.path if f.file
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
puts requette = ['pdftk', files.join(" "), 'cat','output', @final_file].join(" ")
|
||||||
|
system requette
|
||||||
|
|
||||||
|
url = Rails.application.routes.url_helpers.fili_public_file_tunel_download_path(:id => self.token,:format => :html)
|
||||||
|
|
||||||
|
url = (Rails.env.development? ? "http://localhost:4000" : "https://offres.market-inn.fr").to_s+url
|
||||||
|
puts url
|
||||||
|
pdf = ("pdf")
|
||||||
|
|
||||||
|
node_file = @temp_file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
system("node #{pdf}.js #{Shellwords.escape(url)} #{Shellwords.escape(@temp_file)}")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
puts requette = ['pdftk', @final_file, 'stamp', @temp_file, 'output', @final_file2].join(" ")
|
||||||
|
system requette
|
||||||
|
|
||||||
|
return @final_file2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -52,7 +52,7 @@ class FileTunelSend < ApplicationRecord
|
|||||||
def send_mail_type(slug, element = nil)
|
def send_mail_type(slug, element = nil)
|
||||||
|
|
||||||
if self.file_tunel and mail_type = self.file_tunel.mail_types.where(:slug => slug).first
|
if self.file_tunel and mail_type = self.file_tunel.mail_types.where(:slug => slug).first
|
||||||
mail_hist = MailHist.generate_mail(:fr, mail_type, self.email, {:arguments => {:email => self.email, :lien => self.lien }, :element => self})
|
mail_hist = MailHist.generate_mail(:fr, mail_type, self.email, {:arguments => {:email => self.email, :lien => self.lien }, :element => self, :file_tunel => self.file_tunel})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -61,6 +61,8 @@ class MailHist < ApplicationRecord
|
|||||||
@m_odr = options[:m_odr]
|
@m_odr = options[:m_odr]
|
||||||
@m_odr_rep = options[:m_odr_rep]
|
@m_odr_rep = options[:m_odr_rep]
|
||||||
|
|
||||||
|
@file_tunel = options[:file_tunel]
|
||||||
|
|
||||||
@arguments = @options[:arguments]
|
@arguments = @options[:arguments]
|
||||||
|
|
||||||
|
|
||||||
@ -88,9 +90,12 @@ class MailHist < ApplicationRecord
|
|||||||
@from = @options[:from]
|
@from = @options[:from]
|
||||||
elsif @m_odr and @m_odr.email_from?
|
elsif @m_odr and @m_odr.email_from?
|
||||||
@from = @m_odr.email_from
|
@from = @m_odr.email_from
|
||||||
|
elsif @file_tunel and @file_tunel.from_email?
|
||||||
|
@file_tunel = @file_tunel.from_email
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@to_email = email
|
@to_email = email
|
||||||
|
|
||||||
mail_history = MailHist.create(:lang_site => @lang_site, :to_email => @to_email, :from_email => @from, :element => options[:element], :subject => @subject, :body => @body, :m_odr => @m_odr, :m_odr_rep => @m_odr_rep, :mail_content => @mail_content, :mail_type => @mail_type)
|
mail_history = MailHist.create(:lang_site => @lang_site, :to_email => @to_email, :from_email => @from, :element => options[:element], :subject => @subject, :body => @body, :m_odr => @m_odr, :m_odr_rep => @m_odr_rep, :mail_content => @mail_content, :mail_type => @mail_type)
|
||||||
|
@ -2,19 +2,21 @@
|
|||||||
|
|
||||||
.content
|
.content
|
||||||
=f.inputs do
|
=f.inputs do
|
||||||
= f.input :p_customer, :label => "Client :"
|
.qi_row
|
||||||
|
.qi_pannel.qi_plain.padding
|
||||||
|
= f.input :p_customer, :label => "Client :"
|
||||||
|
|
||||||
= f.input :name, :label => "Nom :"
|
= f.input :name, :label => "Nom :"
|
||||||
= f.input :description, :label => "Description :"
|
= f.input :description, :label => "Description :"
|
||||||
= f.input :slug, :label => "Permalien :"
|
= f.input :slug, :label => "Permalien :"
|
||||||
= f.input :start_at, :label => "Date de début :", :as => :date
|
= f.input :start_at, :label => "Date de début :", :as => :date
|
||||||
= f.input :end_at, :label => "Date de fin :" , :as => :date
|
= f.input :end_at, :label => "Date de fin :" , :as => :date
|
||||||
= f.input :fili_text, :label => "Texte filigrame :"
|
= f.input :fili_text, :label => "Texte filigrame :"
|
||||||
|
|
||||||
|
|
||||||
.qi_row
|
.qi_row
|
||||||
.qi_pannel.qi_plain.padding
|
.qi_pannel.qi_plain.padding
|
||||||
Fichiers :
|
Fichiers à télécharger :
|
||||||
%hr
|
%hr
|
||||||
|
|
||||||
.file_tunel_files_form
|
.file_tunel_files_form
|
||||||
@ -26,14 +28,14 @@
|
|||||||
|
|
||||||
.qi_row
|
.qi_row
|
||||||
.qi_pannel.qi_plain.padding
|
.qi_pannel.qi_plain.padding
|
||||||
Fichiers demandés :
|
Mails à contacter :
|
||||||
%hr
|
%hr
|
||||||
|
|
||||||
.file_tunel_sends_form
|
.file_tunel_sends_form
|
||||||
=f.semantic_fields_for :file_tunel_sends do |form|
|
=f.semantic_fields_for :file_tunel_sends do |form|
|
||||||
=render :partial => "admin/file_tunel_sends/form", :locals => {:form => form}
|
=render :partial => "admin/file_tunel_sends/form", :locals => {:form => form}
|
||||||
|
|
||||||
%p= link_to_add_fields ic(:plus)+" Ajouter un fichier demandé", f, :file_tunel_sends
|
%p= link_to_add_fields ic(:plus)+" Ajouter un mail", f, :file_tunel_sends
|
||||||
|
|
||||||
.qi_row
|
.qi_row
|
||||||
.qi_pannel.qi_plain.padding
|
.qi_pannel.qi_plain.padding
|
||||||
|
19
app/views/public/file_tunel_downloads/fili.html.haml
Normal file
19
app/views/public/file_tunel_downloads/fili.html.haml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
|
||||||
|
!!!
|
||||||
|
%html{:lang => "fr", :style => "background:transparent !important;" }
|
||||||
|
%head
|
||||||
|
%meta{ :"http-equiv" => "Content-Type", :content => "text/html; charset=utf-8" }
|
||||||
|
|
||||||
|
%body{:style => "background:transparent !important;"}
|
||||||
|
|
||||||
|
%div{:style => "font-size:3em;position:absolute;top:10cm;width:90%;left:5%;text-align:center;color:rgba(0,0,0,0.2);transform: rotate(-18deg);font-weight:bold; "}
|
||||||
|
|
||||||
|
-arguments = {:civilite => @file_tunel_download.civilite, :nom => @file_tunel_download.name, :prenom => @file_tunel_download.firstname}
|
||||||
|
|
||||||
|
|
||||||
|
-s = @file_tunel.fili_text
|
||||||
|
-arguments.each_pair do |key, value|
|
||||||
|
-s = s.gsub(/\[#{key.to_s}\]/, value.to_s)
|
||||||
|
|
||||||
|
=s.upcase
|
||||||
|
|
@ -1,7 +1,14 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#odr_form
|
#odr_form{:style => "margin:50px auto;max-width:600px;"}
|
||||||
.form_pannel
|
.form_pannel
|
||||||
%center
|
%center
|
||||||
=debug @file_tunel_download
|
Votre fichier est prêt à être télécharger :
|
||||||
|
%br
|
||||||
|
%br
|
||||||
|
|
||||||
|
|
||||||
|
=link_to "Télécharger maintenant", download_public_file_tunel_download_path(:id => @file_tunel_download.token), :class => "btn btn-primary"
|
||||||
|
|
||||||
|
=debug fili_public_file_tunel_download_path(:id => @file_tunel_download.token)
|
@ -1,7 +1,5 @@
|
|||||||
|
|
||||||
|
#odr_form{:style => "margin:50px auto;max-width:600px;"}
|
||||||
|
|
||||||
#odr_form
|
|
||||||
.form_pannel
|
.form_pannel
|
||||||
%center
|
%center
|
||||||
Merci pour ces informations, vous allez recevoir le lien vers votre fichier par mail.
|
Merci pour ces informations, vous allez recevoir le lien vers votre fichier par mail.
|
||||||
|
@ -48,30 +48,26 @@
|
|||||||
-if !@file_tunel_download
|
-if !@file_tunel_download
|
||||||
-@file_tunel_download = @file_tunel_send.file_tunel_downloads.build()
|
-@file_tunel_download = @file_tunel_send.file_tunel_downloads.build()
|
||||||
|
|
||||||
#odr_form
|
#odr_form{:style => "margin:50px auto;max-width:600px;"}
|
||||||
=semantic_form_for [:public, @file_tunel_download], html: { multipart: true } , :remote => false do |f|
|
=semantic_form_for [:public, @file_tunel_download], html: { multipart: true } , :remote => false do |f|
|
||||||
=f.hidden_field :file_tunel_send_id
|
=f.hidden_field :file_tunel_send_id
|
||||||
=hidden_field_tag :force, params[:force]
|
=hidden_field_tag :force, params[:force]
|
||||||
=#f.hidden_field :t
|
=#f.hidden_field :t
|
||||||
|
|
||||||
.form_pannel
|
.form_pannel
|
||||||
%h3 Vous
|
%h3=@file_tunel_download.file_tunel_send.file_tunel.name
|
||||||
|
=simple_format @file_tunel_download.file_tunel_send.file_tunel.description
|
||||||
|
|
||||||
=f.inputs do
|
=f.inputs do
|
||||||
|
|
||||||
|
|
||||||
%table
|
=f.input :civilite, :label => "Civilité", :as => :select, :collection => [[qit("don-particular-civilite-mme","Mme."), "Mme"], [qit("don-particular-civilite-m","M."), "M"]], :include_blank => true
|
||||||
%tr
|
|
||||||
%td{:style => "width:20%;padding-right:4px;"}
|
=f.input :name, :label => "Nom"
|
||||||
=f.input :civilite, :label => false, :placeholder => "Civilité", :as => :select, :collection => [[qit("don-particular-civilite-mme","Mme."), "Mme"], [qit("don-particular-civilite-m","M."), "M"]], :include_blank => true
|
=f.input :firstname, :label => "Prénom"
|
||||||
%td{:style => "width:40%;padding-right:4px;"}
|
|
||||||
=f.input :name, :label => false, :placeholder => "Nom"
|
|
||||||
|
|
||||||
%td{:style => "width:40%"}
|
|
||||||
=f.input :firstname, :label => false, :placeholder => "Prénom"
|
|
||||||
|
|
||||||
%br
|
%br
|
||||||
%center=f.submit "Envoyer", :class => "btn btn-primary btn-lg"
|
%center=f.submit "Recevoir mon lien de téléchargement", :class => "btn btn-primary"
|
||||||
%br
|
%br
|
||||||
|
|
||||||
:scss
|
:scss
|
||||||
|
@ -4,6 +4,8 @@ Rails.application.routes.draw do
|
|||||||
resources :file_tunel_downloads do
|
resources :file_tunel_downloads do
|
||||||
member do
|
member do
|
||||||
get :thank
|
get :thank
|
||||||
|
get :download
|
||||||
|
get :fili
|
||||||
end
|
end
|
||||||
collection do
|
collection do
|
||||||
|
|
||||||
|
6
package-lock.json
generated
6
package-lock.json
generated
@ -131,9 +131,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"https-proxy-agent": {
|
"https-proxy-agent": {
|
||||||
"version": "2.2.2",
|
"version": "2.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz",
|
||||||
"integrity": "sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg==",
|
"integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"agent-base": "^4.3.0",
|
"agent-base": "^4.3.0",
|
||||||
"debug": "^3.1.0"
|
"debug": "^3.1.0"
|
||||||
|
8
pdf.js
8
pdf.js
@ -10,11 +10,17 @@ const createPdf = async() => {
|
|||||||
//await page.setViewport({width: 794, height: 1122, deviceScaleFactor: 1});
|
//await page.setViewport({width: 794, height: 1122, deviceScaleFactor: 1});
|
||||||
await page.goto(process.argv[2], {timeout: 3000, waitUntil: 'networkidle2'});
|
await page.goto(process.argv[2], {timeout: 3000, waitUntil: 'networkidle2'});
|
||||||
await page.waitFor(250);
|
await page.waitFor(250);
|
||||||
|
await page.emulateMedia('screen');
|
||||||
|
await page._emulationManager._client.send(
|
||||||
|
'Emulation.setDefaultBackgroundColorOverride',
|
||||||
|
{ color: { r: 0, g: 0, b: 0, a: 0 } }
|
||||||
|
);
|
||||||
|
|
||||||
await page.pdf({
|
await page.pdf({
|
||||||
path: process.argv[3],
|
path: process.argv[3],
|
||||||
format: 'A4',
|
format: 'A4',
|
||||||
margin: { top: "2cm", right: "1cm", bottom: "2cm", left: "1cm" },
|
margin: { top: "2cm", right: "1cm", bottom: "2cm", left: "1cm" },
|
||||||
printBackground: false
|
printBackground: true
|
||||||
});
|
});
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err.message);
|
console.log(err.message);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user